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:  
Sign in to follow this  
48jir

[NÁVOD] Jak se stát Database Developerem

Recommended Posts

Zdravím vás,

tento topic jsem připravil pro nováčky, kteří by začali s vývojem pro Wow, ale nevědí jak.

Osvětlíme si nějaké to základní fungování a jak opravovat a upravovat questy, item, creatury ...

 

Jelikož jsem také nováček (vývoji se věnuji necelý rok) tak jsou mé znalosti omezené.

 

!!!!UPOZORNĚNÍ!!!!

Pouhé přečtení tohoto návodu vám nepostačí. Budete potřebovat spoustu času, abyste si tuto práci osvětlili.

Butede potřebovat alespoň nějakou znalost angličtiny.

 

1: Úvod

Databáze wow serveru v sobě uchovává veškeré informace o všech characterách, účtů, creaturách, itemech, questů a mnoha dalšího. Začněme tím, že si vytvoříme Wow Cataclysm server. Zkuste to podle mého návodu tady.

 

Až budete mít toto všechno budete se muset naučit jeden dotazovací programovací jazyk SQL.

Tento jazyk se používá pro komunikaci s databází. Využívá ho například PHP.

 

2: Základní informace

Až budete umět SQL vrhněte se na strukturu databáze.

Databázy SkyFire dělíme na 3: Auth, Characters a World

 

Databáze Auth:

Uchovává v sobě všechny informace o vašich účtech, informace o realmu, bannech a GM levelech.

 

Databáze Characters:

Uchovává v sobě všechny informace o postavách, guildách, kanálech, aukcí a dosažených achievementů.

 

Databáze World:

Má v sobě všechny questy, itemy, creatury, battlegroundy ...

 

Učit se budeme práci s itemy, questy a creaturami v databázy World.

 

Tady otestujete své schopnosti angličtiny na maximum.

Každá databáze má několik tabulek. každá tabulka různé informace, například creature_template má v sobě informace o statech creatůr (zvláštní slovo :D), ale né o jejich "aktuálních životech a umístění". Každá tubulka má několik tzv colums (sloupců) a rows (řádků). My jako developeři upravujeme jenom řádky. sloupečky jsou už před definovány.

Ukážu to na příkladu:

 

id jmeno email

1 Tomas [email protected]

2 Honza [email protected]

 

veškeré emaily jsou smyšlené

 

Tady je ukázka tabulky.

Řádky jsou vyplněny hodnotami zadány námy a sloupce už neměníme.

V databázy wow serveru je to stejné, jen to má o mnoho víc sloupců.

 

Ve creature_template to může tabulka vypadat například:

 

entry jmeno zivoty mana idvzhledu

1 Illidan 1000000 34567000 1

2 Lich King 3451200 44444556 2

 

Ve skutečnosti je to mnohem složitější.

 

Strukturu World databáze najdete zde

Občas tam něco chybí a to můžete najít na Trinity Core wiki, databáze jsou podobné a někdy stejné. Tak se dejte do toho ;)

 

3: Příklad opravy questu.

Velice často se stává, že nám nefunguje nějaký ten quest. Pokud se nejedná o nějaký složitý quest dá se spravit v databázy, ale občas to nejde a v tom okamžiku musíme použít C++.

Základní sloupce questů v tabulce quest_template jsou:

 

Seznam sloupců, pokusím se co nejrychleji dodat zbytek

ID: toto pole nám udavá Id questu. Každý quest musí mít unikátní Id

 

Method: Obsahuje druh provedení questu. Když dáte 0 quest nebude mít objectives, když 1 quest se zakáže a bude psát asi "you are not about this quest..." či něco takového a když dáte 2 quest bude fungovat normálně.

 

Title: Název questu.

 

MinLevel: Minimální level pro příjmutí questu.

 

MaxLevel: Maximální level pro příjmutí questu.

 

QuestLevel: Level questu. Toto pole je tu kvůli exp. ratingu za tento quest. Když je level postavy, která odevzdává quest větší o 5, tak žádné "expy" nedostane.

 

Type: Používá se při určení druhu questu. Například group. Hodnoty se dají najít v QuestInfo.dbc

 

RequiredRaces: Pole určuje pro jaké rasy tento quest bude. Dává se sem bitová hodnota kterou můžete najít v ChrRaces.dbc.

 

SuggestedPlayers: Doporučený počet hráčů na tento quest.

 

LimitTime: Čas v sekundách do kdy musí být quest splněn.

 

QuestFlags: Toto bývá většinou nejsložitější pole pro začátečníky. Určuje dopodrobna typ questu. Do tohot pole vpisujeme bitovou hodnotu flag. Existuje jich několik a ty se musíte naučit sami. Flagy se kombinují pomocí sčítání bitové hodnoty. Bitové hodnoty jsou mocniny čísla 2 například 1, 2, 4, 8, 16, 32, 64, 128... funguje to tak, že když chcete aby měl quest flagu 1 a 4 tak do pole napíšete 5, nebo flagu 16, 8, 2 a 1 tak napíšeme 27. Takto se pracuje se všemy flagami v databázi tak si to pečlivě zapamatujte. Pokud nechcete žádnou flagu napíšete 0.

 

SpecialFlags: Zase práce s flagami. Určujeme třeba že quest je auto-accept nebo Dungeon FInder quest...

 

ReqItemId(1-6): Id item který se musí pozbírat.

 

ReqItemCount(1-6): Určuje počet itemu, které se musí pozbírat.

 

ReqCreatureorGO (1-4): Určuje akci s NPC nebo Game Objectem. Když je hodnota kladná tak to znamená, že Id které udáte je ID npc. Když hodnota záporná, tak je to Id game objectu. Pokud je pole ReqSpellCast prázdné, toto pole říka, jaké npc máte zabít, nebo jaký GO aktivovat.

 

ReqCreatureorGOcount(1-4): Říká kolik NPC se má zabít, nebo kolik GO aktivovat.

 

ReqSpellCast(1-4): Pokud toto pole není vyplněné tak pro pole ReqCreatureorGO platí dosavadní podmínky. A pokud je vyplněné, udáváte Id spellu, které má být použito na NPC nebo GO.

 

A teď ten slibovaný příklad:

 

Typicky nefungující Cataclysm questy jsou ty kde máte trénovat své nově naučené schopnosti na levelu 3. Většinou to bývá tím, že je v poli ReqSpellCast špatně nastavený spell ID, takže když tuto chybu odhalíme tak najdeme id správného spellu a přepíšeme staré. Ovšem chyba může být také ve špatně nastaveném entry (to samé co id akorát používané pro NPC). To vše musíte zjistit sami. Dejme tomu, že máme nefunkční spell a našli jsme jeho správné id.

 

UPDATE `quest_template` SET `ReqSpellCast1` = 12345 WHERE `id` = 54321;

 

prosím berte navědomí, že tento script je smyšlený a neinstajulte ho do své databáze

 

A teď když je špatně vybraná creature

 

UPDATE `quest_template` SET `ReqCreatureorGO1` = 12345 WHERE `id` = 987654;

 

opět smyšlené hodnoty scriptu

 

Pomocí příkazu Update něco měníme, příkaz set nastavuje hodnotu a where nám určuje kde všude se to dá provést.

 

V náhledu je vidět jak vypadají řádky v tabulce.

 

Existuje tu spousta polí a když říkám, že spousta tak spousta :D

Další příklady přidám později.

Případné dotazi rád zodpovím. Možná se to pokusím jěště předělat tak, aby to bylo přehlednější a do budoucna se pokusím udělat návod na C++.

 

Jinak společně se svým týmem připravujeme Cata server a pokud vám to pude rádi vás přijmeme mezi své řady.

post-23086-0-60907300-1340130194_thumb.png

Edited by 48jir
  • Upvote 2

Share this post


Link to post
Share on other sites

No nevím hele... Jako název by se asi víc hodilo "Jak vypadá wow databáze", sice jsi popsal k čemu slouží jednotlivé databáze, popsal pár sloupců z quest_template, ale neuvedl jsi žádný názorný příklad, jak taková oprava vypadá. Z toho to pochopí někdo, kdo už má s databázemi nějakou tu zkušenost, ne někdo kdo je vidí poprvé. Ten opravdu potřebuje ten příklad(třeba ukázat opravu questu, na který je potřeba zabít creaturu, sebrat item apod.) Nechci být zlej, to co píšeš je pravda, ale opravdu bych to z toho nepochopil(možná je to mnou, ale to už je na jiné povídání :) ).Dále, když napíšeš nadpis "Příklad opravy questu", a pod ním vypíšeš pár sloupců s popisem, k čemu slouží tak to není úplně ideální, že?

 

PS: píše se v databázi, ne v databázy, máš to tam víckrát, kdyby to bylo jednou, přejdu to, ale takhle to opravdu působí zvláštně :D

Edited by minig
  • Upvote 1

Share this post


Link to post
Share on other sites

No nevím hele... Jako název by se asi víc hodilo "Jak vypadá wow databáze", sice jsi popsal k čemu slouží jednotlivé databáze, popsal pár sloupců z quest_template, ale neuvedl jsi žádný názorný příklad, jak taková oprava vypadá. Z toho to pochopí někdo, kdo už má s databázemi nějakou tu zkušenost, ne někdo kdo je vidí poprvé. Ten opravdu potřebuje ten příklad(třeba ukázat opravu questu, na který je potřeba zabít creaturu, sebrat item apod.) Nechci být zlej, to co píšeš je pravda, ale opravdu bych to z toho nepochopil(možná je to mnou, ale to už je na jiné povídání :) ).Dále, když napíšeš nadpis "Příklad opravy questu", a pod ním vypíšeš pár sloupců s popisem, k čemu slouží tak to není úplně ideální, že?

 

PS: píše se v databázi, ne v databázy, máš to tam víckrát, kdyby to bylo jednou, přejdu to, ale takhle to opravdu působí zvláštně :D

Jasně. Několik příkladá mám to v plánu. Nemám moc času dnes, ale zítra to určitě bude ;)

Share this post


Link to post
Share on other sites

Jasně. Několik příkladá mám to v plánu. Nemám moc času dnes, ale zítra to určitě bude ;)

 

Spousta blbostí vzniká právě kvůli tomu, že někdo nemá dostatek času. Tohle je jedna z nich.

  • Upvote 1
  • Downvote 1

Share this post


Link to post
Share on other sites

Spousta blbostí vzniká právě kvůli tomu, že někdo nemá dostatek času. Tohle je jedna z nich.

Njn máš pravdu. Zkusim se na to podévat ještě dneska.

 

EDIT: hotovo budu se snažit udělat více názorných příkladů

Edited by 48jir

Share this post


Link to post
Share on other sites

Je to takové, no nevím.

 

Kdybych nevěděl nic o SQL ani o struktuře databáze tak pochybuji, že bych se něco z tohoto dozvěděl.

Pokud má jít o jakýsi úvod do práce SQL deva, začal bych nějakým drobným SQL tutoriálem.

A pak plynule přešel k popisu DB a postupu při opravování questů.

 

Ty tu na začátku píšes

Až budete umět SQL vrhněte se na strukturu databáze.

a následně vysvětluješ co je to tabulka a řádek.

 

Go on ;-)

Share this post


Link to post
Share on other sites

Je to takové, no nevím.

 

Kdybych nevěděl nic o SQL ani o struktuře databáze tak pochybuji, že bych se něco z tohoto dozvěděl.

Pokud má jít o jakýsi úvod do práce SQL deva, začal bych nějakým drobným SQL tutoriálem.

A pak plynule přešel k popisu DB a postupu při opravování questů.

 

Ty tu na začátku píšes

 

a následně vysvětluješ co je to tabulka a řádek.

 

Go on ;-)

To "až budete umět SQL ..." jsme chtěl aby se naučily příkazy... hlavně většina lidí než se to naučí čte celý topic tak proto :D

 

EDIT: navíc to chci pomalu víc rozvádět ;)

Edited by 48jir

Share this post


Link to post
Share on other sites

Myslím že do jednoho topicu se to všechno nevleze.. radši napiš knihu..

 

hele až to bude pohromadě a bude o to zájem třeba to někdo hodí na wiki ;)

Share this post


Link to post
Share on other sites

Napiš tam aspoň pár řádek o tom, jak relační databáze vůbec funguje. Systém databází, tabulek, řádců, sloupců a pak něco o relacích. To je takový docela nezbytný základ, pokud někdo nemá jen tupě vyplňovat políčka v Quicu.

Share this post


Link to post
Share on other sites

Napiš tam aspoň pár řádek o tom, jak relační databáze vůbec funguje. Systém databází, tabulek, řádců, sloupců a pak něco o relacích. To je takový docela nezbytný základ, pokud někdo nemá jen tupě vyplňovat políčka v Quicu.

Pokusim se s tim něco provést.

Share this post


Link to post
Share on other sites

Super návod moc mi to pomohlo vážně moc prosím udělej toho ještě pár ohledně SQL, a nejlepší by bylo kdyby si udělal návod aji na to C++ :-)

Share this post


Link to post
Share on other sites

quest_template se idealne ani upravovat nemaji, pokud se nepletu, tak jsou brany primo z offiku.Pokud nesedi napriklad ID v ReqCreatureorGO1 , pak odkazuje na ID "kreditu" ktery se ma zabit pri pouziti spellu nebo po zabiti normalniho questovyho NPC, tim se treba daji vytvaret skupiny NPC, ktery se maji zabijet, ale v questu jsou pod jednou podminkou. (zabij 10x bandity a zabijeji se NPC "severni bandita" a "jizni bandita" pricemz se oba pocitaji do banditu. K zapocitani "zabiti kreditu" do questu se alespon na 335TC pouziva smartAI, eventAI jde pouzit taky. Ale samozrejme pokud ti tvuj "fix" funguje na 100%, tak se tim teoreticky zabyvat nemusis :).

Share this post


Link to post
Share on other sites

kdybyste min kritizovaly a místo toho napsaly jak a co tak uděláte líp hlavně že máte lvl na fóru. Já tu můžu shánět pomoc i za peníze nebo za materiální hodnotu a nikdo nic tak nechápu každý umí kritizovat ale činit moc lidí neumí ;)

  • Upvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×