Zdravím,
před pár dny jsem řešil problém s tím, jak udělat vlastní spell následně nascriptovaný v Core. Bohužel mi zde nebyl schopen nikdo pomoci, tak jsem byl odkázán sám na sebe, jako vždy. Řešení jsem nenalezl ani na google na zahraničních fórech/portálech a tak jsem procházel core a snažil jsem se něco najít. Našel jsem nějaké věci rozprášené po celém core a zjišťoval jsem co a jak.
Tento způsob vyžaduje editaci klienta.
Pojďme tedy k věci.
Co je potřeba?
Nějaký DBC editor (například MyDBCEditor)
MPQ editor (například Ladik's MPQ Editor)
PNG <-> BLP converter (pokud tedy chcete vlastní ikonu u spellu - ingame)
Nějaký edtor audia (pokud chcete ke spellu vlastní zvuk)
Samozřejmě funkční server (včetně source) s databází, apod.
Nějaké všeobecné znalosti DBC, databáze, serveru -> C++
Znalosti editace DBC a klienta tj. práce s DBC editorem a MPQ editorem
Hlava a trpělivost
Postup
1)
Vy
tvoření patche
Nebudu zde popisovat, jak se patch vytváří a jak se s MPQ editorem zachází.
Vytvořte
nový .MPQ
soubor a pojmenujte jej "
patch-X
".
V patchy vytvořte složku
DBFilesClient
, do které na konci nahrajete všechny vámi upravené DBC soubory.
2)
Editace
Spell.dbc
Zde je nutné vytvořit
nový záznam
(řádek), s ID větší než poslední ID v řadě. Já jsem začínal od 100 000.
Vytvořil jsem PDF s menším přehledem polí, které budeme potřebovat.
http://fbe.am/dKn
Vytvořte si tedy nový záznam a vyplňte sloupce podle představy vašeho spellu.
Spell Icon
Pokud tedy chcete vlastní ikonku u spellu, musíte vytvořit obrázek 24x24px v PNG, překonvertovat na BLP a tento obrázek nahrát do patche, kam si jej umístíte je jen na vás.
Poté otevřeme SpellIcon.dbc a vložíme nový záznam. První sloupec je ID Icony (zvolte vlastní) a druhý je cesta k našemu obrázku (od kořenového adresáře patche).
!! POZOR !! na konci cesty nebude přípona, bude to tedy cca "
custom\images\mojeico
".
3)
Inicializace spellu
V core upravíme soubor
SpellMgr.cpp.
Půjdeme na
řádek cca 2900
, kde by měly být
case od switche
Můžete zkusit hledat
case 72446: // Mark of the Fallen Champion (Deathbringer Saurfang)
Přidejte zde další case s vašim spellID ->
case: #spellid
Stačí jen tohle na jeden řádek, nemusí zde být break;
4)
Vytvoření scriptu
pro spell
Tuhle část nemám plně zmapovanou, bude to tedy na vás si to doplnit.
Možná se vám nebude pozdávat můj syntax, jsem webdeveloper a C++ jsem se nikdy neučil, jsem zvyklý na PHP syntax, tak to píši tak.
V jádře je příkladový script, a ten vypadá následovně
:
Trochu zjednodušeně:
5)
Vložit záznam
do databáze
Aby se náš script mohl nějak zavolat, musíme někde určit, jaký script k našemu spellu patří.
To uděláme ve world DB v tabulce
spell_script_names
, kde
první sloupec je ID
našeho spellu a
druhý je naše ScriptName
Po dokončení všech kroků jen zavřete otevřené MPQ a vložíte jej do WoWDir\Data, zkompilujete core a zapnete server (v serverových DBC musí být také námi editované .dbc soubory).
Ingame jen dáte .learn NAŠE_SPELL_ID a můžete si (snad) užívat kýženého výsledku.
EDIT: Reaguji na příspěvek od uživatele frytiks, takže odpověď pro všechny
Tam kde zmiňuji Spell ID (tedy ID našeho spellu), myslím tím ID, které jste zadali v DBC, což je ID spellu.
Původní topic: