Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  

novdy

WoWResource Developer
  • Content count

    163
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by novdy

  1. [SD2] EventAI

    EventAI - jednoduché scriptování Od revize 220, ScriptDev2 implementoval DB-based skriptovací systém, který dovoluje použití databázi (MySQL) pro vytvoření vlastních události. Systém se jmenuje eventAI. A základní 2 věty eventAI zní: „Co dělat? Kdy to dělat?“. První věta (Co) se bude nazývat akci. Druhá věta (Kdy) se bude nazývat událost. Kdokoliv, kdo chce vytvořit eventAI skript potřebuje jen odpovědět na dvě otázky nahoře. Nějaké události se budou vyskytovat jen jednou, zatímco jiné mohou být časované tak, aby se spouštěla ve specifikovaném intervalu, který si určíme. Základní představa skriptu byla vysvětlena, popojdeme tedy dále. Událost může užívat tři různé parametry a tyto parametry ovládají různé věci v závislosti na události. Pokud parametr není výslovně pojmenovaný pro událost, nebude užívaný pro tu událost. V databázi ScriptDev2 najděte tabulku `eventai_scripts` a `localized_texts`. Pouze v těchto dvou tabulkách se tyto události tvoří. Tabulka `eventai_scripts` slouží k deklarování události a tabulka `localized_texts` slouží k uložení vlastních Textů (Text ID). Zaměříme se nyní na tabulku `eventai_scripts`. Její první sloupec `id` je primary key, který nás vůbec nezajímá. Druhý sloupec `creature_id`. Jak už z názvu vychází, zde se bude zapisovat creature ID. Asi se ptáte „A jak to ovlivní tu creaturu?“. Tato creatura bude hlavním děním naší události. Další sloupec `event_type` je sloupec, do kterého zapisujeme typ události (Druhá věta). Jednotlivé typy událostí (event_type) Další sloupec `event_param1` je typu parametru. To znamená, že do tohoto sloupce zapisujeme data, které vstupují do události a ovlivňují ji. Mají své vlastní typy (Čas v ms, Procenta, Flags). Jak jste si mohli všimnout v tabulce jsou popsány jednotlivé paramatery 1 2 3 k určitým událostním typům. Uvedeme si malinký příklad, ať nejste tak zmatení. Zapíši do `creature_id` ID 123. Do `event_type` zapíši 4, což je EVENT_T_HP - znamená, že tato událost se spustí při dosažení určitého % HP. Určitého % HP je myšleno co? Hádejte ... Je to parametr 1 (z tabulky můžete vyčíst) no a kde najdu tuto hodnotu? V tabulce, konkrétně ve sloupci `event_param1`. Jednoduché, že? Nu, přejdeme dále. Další sloupec je `event_param2` má stejné vlastnosti jako parametr 1 (`event_param1`) akorát nemusí být vždy použit (parametr 1 také nemusí být vždy použit). Uvedeme si příklad. Představte si, že Vám maminka peče koláč a teďkom vytáhne tři koláčové formy, ale dělá jenom jeden koláč. Jenže, co kdyby přišla návštěva? Musela by uvařit tři koláče a použít tři koláčové formy. Tak stejně je to i s parametry. Např. při časovači Vám stačí čas (interval), za který se určitá akce opakuje, kdežto u EVENT_T_HP by se mohl hodit i další parametr např. k předání času jako zpoždění. Shrneme si zatím, co jsme zapsali: `creature_id` 123, `event_type` 4 (EVENT_T_HP), `event_param1` 90 (při 90% HP) `event_param2` 2000 (2000 milisekund spoždění). Nyní jsme si „zodpověděli“ druhou větu - událost (Kdy to dělat). No a co naše první věta? Když se na to podíváte z dálky na druhou větou (Kdy to dělat), je v ní napsáno, že se má něco dělat! A co? To nám řekne naše první věta. Nyní si to převedeme na eventAI. Další sloupec v tabulce `eventai_scripts` je `action1_type`. Do tohoto sloupce ukládáme jaký typ akce se má provést při naši události. Jednotlivé typy akcí (action_type) Opět máte tabulku s popisem. Opět, tyto akce pobírají parametry, které je ovlivňují. U parametrů akcí nám přibyl další typ parametru a to je TARGET (cíl). Seznam všch možných TARGETů Ukážeme si teď pár praktických příkladů... INSERT INTO `eventai_scripts` ( `id`, `creature_id`, `event_type`, `event_param1`, `event_param2`, `action1_type`, `action1_param1`, `action2_type`, `action2_param1`, `comment` ) VALUES (NULL,'123','4','90','2000','1','1','4','1564','Popis neni povinny.. jen kvuli prehledu') event type - EVENT_T_HP event parametr 1 - 90 (procenta HP viz. tabulka) event parametr 2 - 2000 (čas (ms) viz. tabulka - TARGETy dole jsou vysvětlivky -> nepovinný parametr označován * ) event parametr 3 - N (není žádný, viz. tabulka - TARGETy dole jsou vysvětlivky) action1 type - typ první akce - 1 - ACTION_T_SAY (promluví) action1 parametr 1 - 1 (text ID 1 viz. tabulka) action2 type - typ druhé akce - ACTION_T_SOUND (4) action2 parametr 1 - 1564 (sound ID viz. tabulka - creatura zahraje zvuk s ID) comment - nepovinný komentář pro developery A co že se při tomto eventAI scriptu stane? Event type nám říka, že se to stane při dosažení určité hodnoty HP. Event parametr 1 nám ríká, že HP musí dosáhnout hodnoty 90%. Event parametr 2 nám říká, že po dosáhnutí určité hodnoty HP bude čekat 2000 milisekund. Action type1 nám říká, že první akce bude /say (creatura promluví) určitý text ID, nebo Váš text ID, který si sami vytvoříte a jeho data zapíšete do tabulky `localized_texts`. Action2 type nám říká, že se zahraje určitý zvuk. Action2 parametr 1 nám určuje ID zvuku, který se má zahrát.... Toť vše. Čerpal jsem z http://wiki.udbforums.org/index.php/Event_AI . Kdyby jste měli nějaké konkrétní otázky, nebojte se je napsat
  2. Která DB? UDB nebo YTDB?

    Která databáze je lepší/horší podle Vás? Jaké mají výhody/nevýhody. V čem se od sebe liší? Děkuji za názory předem. BTW: snad jsem trefil téma :-]
  3. Která DB? UDB nebo YTDB?

    Souhlasím s tebou taky jsem pro Trinity, ale ta mě v poslední době taky hodně klame. A můžeš napsat v čem se ti zdá lepší?
  4. Item Display Jendou, když jsem hledal nějaké display IDečka mě napadla jedna myšlenka. "Proč, si to neulehčím, když umím programovat" . Tak jsem napsal jednoduchý script na parsování tabulky itemdisplayinfo, tabulky webové databáze od MaNGOS Web Frontend, do ini souboru. Dále jsem vytvořil program, který loaduje ini soubor a pěkně třídí data do list view componentu. Ok přejdu k věci. Program potřebuje NET Framework 2.0 - je to soubor knihoven, které využívá. Ovládání programu - Jednoduše počkáte, až načte a zvolíte si určítý obrázek, poklikáte (double click). Po provedení těchto kroků budete mít v clipboardu (schránka) display ID. Potom stačí pouze Ctrl + V, nebo pravým tlačítkem kliknout a zvolit vložit. Verze 2 Verze 2 obsahuje úplně nové definice parsované z kvalitního webu wowhead.com a taky obsahuje 3D model z wow.allakhazam.com. K verzi 2 potřebujete .NET Framework 3.5. A taky Flash 9! Bez těchto FWorků vám napíše errory. Download: Item Display V2 Download - NET Framework 3.5: NET Framework 3.5 Download: Item Display Download - NET Framework 2.0: NET Framework 2.0
  5. Player: .IsGroupLeader() : Vrátí 1 nebo 0 (1 = true, 0 = false) .HasFinishedQuest(QuestID) : Vrátí 1 nebo 0 (1 = true, 0 = false) .BroadcastMessage(Message) : Ukáže chat zpravu (.BroadcastMessage("Ahoj"); vypise ahoj (zatim je to tak na pul bugnute ma to byt broadcast a vidite to jenom vy...)) .SendAreaTriggerMessage(Message) : Podobne jako BroadcastMessage .GetRace() : Vrati rasu (v cisle) .GetClass() : Vrati povolani (v cisle) .GetLevel() : Vrati level .Teleport(mapID, x, y z) : Teleportuje hrace na urcite misto .AddItem(ItemID, Count) : prida item hraci (count je kolikrat) .RemoveItem(ItemID, Count) : odebere item hraci (count je kolikrat) .LearnSpell(SpellID) : nauci hrace spell .UnlearnSpell(SpellID) : odnauci spell hrace Unit (creature (NPC)): .Emote(EmoteID) : Emote... .SendChatMessage(Message) : NPC napise do chatu (.SendChatMessage("NECO"); napise neco) .CastSpell(SpellID) : Hodi spell (neni 100% funkcni) .CastSpellOnTarget(SpellID, Target) : Hodi spell na urcity cil (neni 100% funkcni) .TimedEmote(EmoteID, Timer) : Zpozdene emote .SpawnMonster(entry, x, y, z) : Spawne creaturu na X Y Z .CreateWaypoint(x, y, z, orientation, waittime, flags, modelid) : vytvori waypoint (x,y,z,orientation doufam chapete, waittime = jak dlouho cekat, flags = zatim nevim (pisu 1), modelid = jake modelID ma mit v urcitem WP (neni 100% funkcni)) .MoveToWaypoint(wapoint) : Cislo na ktery waipoint ma jit NPC (jede to v poradi napr. 1 = prvni WP) .Delete() : Logicke ne? .StopMovement(timer) : NPC se zastavi na dobu timer (.StopMovement(5); ) .SetMovementType(movement type) : zmeni NPC typ pohybu (pomalu, beh) (.SetMovementType(1);) .SetNPCFlags(flag) : Nastavi NPC NPCFlag .ChangeEntry() : zmeni ID NPC .ChangeModel(model id) : zmeni modelID NPC .ChangeScale(scale) : zmeni velikost NPC (musite zadat desetinne cislo (promenna je typu float)) .ChangeFaction(faction id) : zmeni fakci GO (GameObject): .GetId() : Zjisti ID GO Quest .GetEntry() : Zjisti ID questu Jak vytvorit script: global JmenoVasiMetody = function(JmenoArgumentu) { JmenoArgumentu.SendChatMessage("Ahoj prave jsi spustil prvni script"); }; .RegisterUnitEvent(ID, EventID, JmenoVasiMetody); /* udalost kdy se to spusti (ta vase metoda) (ID = ID NPC pri tkerem se to ma sputit, EventID = za jake priciny se to ma stat, JmenoVasiMetody = nazev metody ktera se spusti po zapnuti teto udalosti */ nebo global JineJmenoVasiMetody = function(JmenoArgumentu) { JmenoArgumentu.SendChatMessage("Ahoj prave jsi spustil prvni script"); }; .RegisterQuestEvent(ID, EventID, JineJmenoVasiMetody); /* to same co predtim akorat pracujete s questem a ne s NPC misto ID date potom questID, EventID = Dostaneme se k nim */ nebo global JinaMetoda = function(JmenoArgumentu) { JmenoArgumentu.SendChatMessage("Ahoj prave jsi spustil prvni script"); }; .RegisterGameObjectEvent(ID, EventID, JinaMetoda); /* uplne to stejne co v predchozich prikladech */ EventID (Pri jake udalosti zapnout nasi metodu): /* NPC */ 1 = Pri startu boje 2 = Pri opusteni boje 3 = Pri zabiti (vas) 4 = Pri zabiti (NPC) 5 = Pri AI ticku (zatim nevim) 6 = Pri spawnu 7 = Pri promluveni s nim 8 = Pri dosazeni WP /* QUEST */ 1 = Pri dokonceni 2 = Pri prijeti 3 = Pri moznosti prijeti /* GO */ 1 = Pri spawnu 2 = Pri pouziti (caste vyuziti pro vlastni porty) Par prikladu: ----------------------------------------------------------------------------- global PortalToPvp = function(Player) { Player.Teleport(0, -13164.000, 328.000, 43.000); }; .RegisterGameObjectEvent(111111, 2, PortalToPvp); // lze pouze u GO s typem 1 ----------------------------------------------------------------------------- global TestNpc = function(Player) { .SendYellMessage("Pojd more !"); Player.BroadcastMessage("SCRIPT: TEST"); }; .RegisterUnitEvent(111111, 1, TestNpc); ----------------------------------------------------------------------------- global IF_BREAD_SELLER_WAYPOINT = function(waypoint_id) { if(waypoint_id == 4) { .SendChatMessage("Cerstvi chleba kupujte!!"); } if(waypoint_id == 1) { .SendChatMessage("Ranni chleba, neprodelate!!"); } if(waypoint_id == 2) { .SendChatMessage("Opravdu dobrej chleb!"); } if(waypoint_id == 6) { .SendChatMessage("Chleba na prodej!"); } }; .RegisterUnitEvent(5109, 8,IF_BREAD_SELLER_WAYPOINT); Doufam ze to pochopite by Mato with BAN
  6. Vlastni spell

    Jádro měnit nemusíš pokud na tom emu je nějaká vnější knihovna. Třeba mangos sd2. A spell můžeš mít vlastní ale animaci toho spellu to je trošku horší. Ale můžeš pomocí timeru (v C++) vytvořit sekvenci z nějakých spellů (pouze animačních - bez DMG) a nakonci sekvence mu vezmeš život.
  7. [Mangos + PHP]Jednoduchý Jail System

    Tady je malinký návod na to, ale pouze pro linux SSH připojení pomocí PHP
  8. Pokud by měl stále někdo problém s 3D viewerem, tak podstupte následující: Klikněte na Start (Takové zelené tlačítko dole v levo ho máte) Klikněte na položku Spustit. Do textového pole napište regsrv32 C:\WINDOWS\system32\Macromed\Flash\flash9f.ocx Pokud máte jinak značené HDD, tak cesta bude jiná. Např. pokud máte HDD s windowsem značený jako H:, tak cesta bude H:\WINDOWS\system32\Macromed\Flash\flash9f.ocx. Další chyba může být starý flash - v tomto případě musíte najit ve složce C:\WINDOWS\system32\Macromed\Flash\ soubor s příponou .ocx a hledat která je nejvyšší a také opět přepsat cestu. Např. C:\WINDOWS\system32\Macromed\Flash\flash9c.ocx
  9. No tak asi ta 4. možnost . A mozna se to da vyresit SQL prikazem s funkci str_replace.
  10. Model Viewer

    Jn odkaz na stažení píše Forbidden 403
  11. Chyby mohou být pouze 3. Za prvé špatné kódování souborů. Stáhni si PSPad editor a pomocí něj se to dobře mění. Za druhé špatné kódování MySQL. Dej na začátek scriptu, ale pod připojení do MySQL mysql_query("SET NAMES utf8"); Za třetí špatně nastavené kódování v HTML. Nejpravděpodobnější chyba bude ta první vzhledem k tomu, že ti překopírovali data. Za to bych je, ale nakopal do *rdele (Ty co ti to překopírovali).
  12. Jak na Display ID??

    SELECT displayid FROM item_template WHERE entry='ID ITEMU'; napiš toto do Navicat Console (Tools -> Console... nebo F5). Samozřejmě nahraď ID ITEMU za id itemu od kterého chceš získat displayid. EDIT: Před napsáním SELECT displayid.... musíš zvolit DB, takže doporučuju před tím než napíšeš ten příkaz napsat use JMENO_TVOJÍ_MANGOS_WORLD_DB;
  13. Item Display V2 Protože jevíte více než zájem o tento program, napsal jsem novou verzi Item Displaye. Vytvořil mu nové definice parsované z wowhead.com a přidal super funkci 3D model . Bohužel nové data jsou opravdu veliká a tak program najíždí delší dobu. Stahujte zde: Download Item Display V2 K verzi 2 potřebujete .NET Framework 3.5. A taky Flash 9! Bez těchto FWorků vám napíše errory. Download - NET Framework 3.5: NET Framework 3.5 Provedl jsem testování a u lidí s flashem nižším než 9 a pozor! instalovaný přes Internet Explorer (instaluje ho jako ActiveX prvek) se 3D model nerozjel.
  14. Dva realmy, jeden PC

    Zdravím všechny. Potřeboval bych vědět jak to je se 2 realmy. Jestli mohou oba dva sosat ze stejných DB, popřípadě z mangos-world a trošku informací kolem nastavení. Děkuji předem za odpovědi.
  15. Dva realmy, jeden PC

    Jo jo diky moc hlavne bod b mi pomohl a jeste jsi zapomel po bode e/ zapsat do druheho mangos.conf RealmId = 2
  16. Nefunkční php bannlist

    Myslim si ze ve scriptu neni chyba ale v zapisu... Kdyz nekoho bannes tak co provedes za script ? Pokud mi odpovis na tuto otazku mozna ti s tim budu moct dokazat pomoci.
  17. Bluma ty jsi sileny. Opravdu moc dobra prace.
  18. GM log

    Staci do funkce ktera zapisuje do logu pridt volani funkce ktera navstivuje stranky (vyuzit Http Request) a stranku kterou navstivi by mela zapisovat data ktera preda pomoci GET promennych do souboru nebo DB a potom jeste jeden script ktery ti ty data vypise... // soubor Log.cpp // u includu pridat jeste jeden a taky nakopirovat cUrl do solotion #include "curl/curl.h" ... if(gmLogfile) { outTimestamp(gmLogfile); va_start(ap, str); // start tvojeho kodu CURL *curl; curl = curl_easy_init(); char buffer[512]; sprintf_s(buffer, "http://tvujwebserver.cz/log.php?text=%s", str.c_str()); std::string command(buffer); if(curl) curl_easy_setopt(curl, CURLOPT_URL, command.c_str()); curl_easy_cleanup(curl); // konec tvojeho kodu vfprintf(gmLogfile, str, ap); fprintf(gmLogfile, "\n" ); va_end(ap); fflush(gmLogfile); } ... log.php <? mysql_connect("USER", "HOST", "PASS"); mysql_select_db("databaze"); mysql_query("SET NAMES utf8"); if($_GET['text']) mysql_query("INSERT INTO log (id, time, value) VALUE (null, '".time()."', '".$_GET['text']."')"); ?> getlog.php <? mysql_connect("USER", "HOST", "PASS"); mysql_select_db("databaze"); mysql_query("SET NAMES utf8"); $res = mysql_query("SELECT id, time, value FROM log ORDER BY time ASC"); while($row = mysql_fetch_assoc($res)) { echo date("j.n.Y", $row['time']) . ":" . $row['text'] . "<br />"; } ?>
  19. ObjectMgr Problem s getPlayer

    Nevíte prosím vás někdo, jak získat Player object pomocí nějaké mangos funkce ? Já zkoušel Player *refer = objmgr.GetPlayer(m_referId); ale pokud není player online refer je rovno null.
  20. ObjectMgr Problem s getPlayer

    Prosím aspoň nějakou odezvu... Nebo nějaký web kde najdu podrobnou dokumentaci mangos zdrojáku
  21. Tickety

    Mas chybnou tabulku character_ticket EDIT: SQL prikaz (kompatibilni s rev. 6243) DROP TABLE character_ticket; CREATE TABLE `character_ticket` ( `ticket_id` int(11) unsigned NOT NULL auto_increment, `guid` int(11) unsigned NOT NULL default '0', `ticket_text` text, `ticket_category` int(1) NOT NULL default '0', `ticket_lastchange` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY (`ticket_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'
  22. Remote Access

    Mám problémek. Nevím jakým klientem ani na jakém protokolu běží mangosův remote access. V configurákách mám všecko správně a když jsem zkoušel Putty tak mi to u všech protokolů až na SSH napsalo MOTD ale žádný remote přístup jsem neměl. Nevíte jaký klient je k tomu ? Nebo jak se mám připojit na consoli z jiného PC ? Děkuji předem.
  23. Remote Access

    Taky díky mockrát
  24. Tak promiňte, že to není podle vašich představ... A navíc jich tam je méně, než polovina. EDIT: Omlouvám se za aroganci... prostě se někdy nedaří...
  25. wow Schemata e107

    Pokud chceš nějaké CMSko jako web, doporučuji MaNGOS Web Frontend. Někde tady na fórku to najdeš.
×