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:  
Lukasas

Jak Nascriptovat NPC v TC

Recommended Posts

dobrý +1 REP a mohl by si udělat jak tě nic nenapadá nějakej text :) určitě by to někoho zajímalo :rolleyes:

  • Upvote 1

Share this post


Link to post
Share on other sites

Když píšeš návod tak si to ozkoušej, jestli to vůbec bude fungovat. Máš tam minimálně jeden syntaktický problém, potom v UpdateAI metodě netestuješ, jestli má smysl (má protivníka?) snažit se kouzlit a odpočítávat. Přepisuješ tam metody, které normálně používá BossAI a nevoláš odpovídající metody a proč vlastně používáš BossAI a ne ScriptedAI ?

Share this post


Link to post
Share on other sites

Abych se přiznal vůbec to nechápu :(

Prosímtě mohl bis my vysvětlit jak .. nebo kde to stáhnout ? ..

1. NPC

I. Mám

2.Zdrojový kód emulátoru TrinityCore

II. Nevím co to je prosím pošli mi link kde to stáhnu . (a nebo není to TrinityCore.exe ??)

3.Visual Studio 2008 / Visual C++ 2008

III. To vůbec nemám :( prosímtě kde to stahnu Dá se to stáhnout ??

4.Klávesnicu

IV. Mám

5.Monitor

V.Mám

6.Bednu

VI.Mám

Tak mooc děkuji ...

  • Upvote 1
  • Downvote 1

Share this post


Link to post
Share on other sites

trinity zdrojáky seženeš zde:

http://code.google.com/p/trinitycore/

 

 

VC 2008 c++ express edition je zdarma akorát se musíš registrovat na windowslive(kvůli delší době než je 30dní)

 

 

Share this post


Link to post
Share on other sites

Potřebuji pomoc. Když to kompiluji naskočí tato chyba

/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:8: error: 'truct' does not name a type
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp: In function 'CreatureAI* GetAI_boss_marrowgar(Creature*)':
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:73: error: expected type-specifier before 'boss_Marrowgar'
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:73: error: cannot convert 'int*' to 'CreatureAI*' in return
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:73: error: expected ';' before 'boss_Marrowgar'
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:73: error: 'boss_Marrowgar' was not declared in this scope
make[2]: *** [src/server/scripts/CMakeFiles/scripts.dir/Custom/icecrown/boss_marrowgar.cpp.o] Error 1
make[1]: *** [src/server/scripts/CMakeFiles/scripts.dir/all] Error 2
make: *** [all] Error 2

.

 

Díky za radu

 

Tady dám ještě kód :

#define BoneSlice 69055
#define Coldflame 69146

#define Lord_Marrowgar 36612

truct boss_marrowgar : public BossAI
{
   boss_marrowgar(Creature* c) : BossAI(c, Lord_Marrowgar)
   {}

   //nyní si nadefinujeme timery, vpodstatě jsou to neoznačené čisla (uint32) max 32-bitové
   uint32 t_coldflame;
   uint32 t_boneslice;

   //teď reset, což znamená, že když se dostane do kombatu, tak aby se nejdřív resetovaly všechny věci (aby hned nekastil všechny spely... a rovnou si nadefinujeme, co kdy má kastit ( v milisekundách 1 sekunda = 1000 milisekund)
   void Reset()
   {
   t_coldflame = 10000;
   t_boneslice = 3000;
   }
   // teď můžeme udělat, co udělá naše NPC když se dostane do kombatu ?  nic mě nenapadá 
   void EnterCombat(Unit * target)
   {
   me->MonsterYell("Za mého pána Lich Kinga!",LANG_UNIVERSAL,NULL);
   }

   // nebo, když někoho zabije co udělá, nic mě nenapadá 
   void KilledUnit(Unit * victim)
   {
   me->MonsterYell("Další na řadě je kdo?!",LANG_UNIVERSAL,NULL);
   }

   // nebo, když zmře, nic mě nenapadá 
   void JustDied(Unit * killer)
   {
   me->MonsterYell("Smrt nic neřeší!",LANG_UNIVERSAL,NULL);
   }

   // a nakonec zprovoznit ty timery, to uiDiff je takovej timer, kterej je napsanej v configách jako MapUpdateInterval
   void UpdateAI(const uint32 uiDiff)
   {
       if (!UpdateVictim())
           return; 
// musíme vytvořit podmínku, že pokud je náš timer menší nebo se rovná uiDiff tak se daná věc provede
       if(t_holylight <= uiDiff)
       {
           DoCast(me->getVictim(), Coldflame, false)
           //to znamená že, DoCast - Casti, "me" je cíl, což znamená nasebe, HolyLight je ID toho spelu a false to je jestli je to triggered
           // a znovu nastavíme odpočítávání timeru
           t_coldflame = 10000;
           // a nebo pokud není náš timer mentší nebo se rovná uiDiff tak budeme odpočítávat
       }else
            t_coldflame -= uiDiff;

       // a to samé s druhým spelem ( me->getVictim() znamená že to použije na cíl (na co právě utočí))
       if(t_boneslice <= uiDiff)
       {
           DoCast(me->getVictim(), BoneSlice, false);
           t_boneslice = 3000;
       }else
           t_boneslice -= uiDiff;

       // a nakonec aby potom normálně útočil
       DoMeleeAttackIfReady();
   } // tady tou závorkou zavíráme UpdateAI
}; // a tadytou celou strukturu

//nyní zaregistrovat NPC 
CreatureAI* GetAI_boss_marrowgar(Creature* c)
{
   return new boss_Marrowgar (c);
}
// a registrace scriptu
void AddSC_boss_Marrowgar()
{
   Script *newscript;
   newscript = new Script;
   newscript->Name = "boss_marrowgar"; // to boss_GeMaJo budeme potřebovat do databáze
   newscript->GetAI = &GetAI_boss_marrowgar;
   newscript->RegisterSelf();
}

Share this post


Link to post
Share on other sites

#include "ScriptPCH.h"

#define BoneSlice 69055
#define Coldflame 69146

#define Lord_Marrowgar 36612

struct boss_marrowgar : public BossAI
{
   boss_marrowgar(Creature* c) : BossAI(c, Lord_Marrowgar)
   {}

   //nyní si nadefinujeme timery, vpodstatě jsou to neoznačené čisla (uint32) max 32-bitové
   uint32 t_coldflame;
   uint32 t_boneslice;
...

 

 

máš tam místo struct truct a ještě ti nahoře chybí

#include "ScriptPCH.h"

Edited by Lukasas

Share this post


Link to post
Share on other sites

Tak jsem to udělal, ale nepochopil jsem ty timery.

Edited by pextr

Share this post


Link to post
Share on other sites

/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp: In member function 'virtual void boss_marrowgar::UpdateAI(uint32)':
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:47: error: 't_holylight' was not declared in this scope
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:52: error: expected `;' before 't_coldflame'
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp: In function 'CreatureAI* GetAI_boss_marrowgar(Creature*)':
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:73: error: expected type-specifier before 'boss_Marrowgar'
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:73: error: cannot convert 'int*' to 'CreatureAI*' in return
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:73: error: expected ';' before 'boss_Marrowgar'
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:73: error: 'boss_Marrowgar' was not declared in this scope

 

Teď tohle zase. :-(

Share this post


Link to post
Share on other sites

Tak jsem to udělal, ale nepochopil jsem ty timery.

 

co jsi na nich nepochopil, vždyť je to lehký jak facka :D

 

ono je to na principu odečítání, nastavíš si do proměnné číslo který se odčítá a až je menší než uiDiff (v konfigu nastavený nejčastějí 100) tak se vykoná daná věc

 

/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp: In member function 'virtual void boss_marrowgar::UpdateAI(uint32)':
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:47: error: 't_holylight' was not declared in this scope
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:52: error: expected `;' before 't_coldflame'
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp: In function 'CreatureAI* GetAI_boss_marrowgar(Creature*)':
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:73: error: expected type-specifier before 'boss_Marrowgar'
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:73: error: cannot convert 'int*' to 'CreatureAI*' in return
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:73: error: expected ';' before 'boss_Marrowgar'
/opt/trinitycore/src/server/scripts/Custom/icecrown/boss_marrowgar.cpp:73: error: 'boss_Marrowgar' was not declared in this scope

 

Teď tohle zase. :-(

 

v tom kódu máš docela dost chyb ;)

 

tady máš opravu:

 

#include "ScriptPCH.h"

#define BoneSlice 69055
#define Coldflame 69146

#define Lord_Marrowgar 36612

struct boss_marrowgar : public BossAI
{
   boss_marrowgar(Creature* c) : BossAI(c, Lord_Marrowgar)
   {}

   //nyní si nadefinujeme timery, vpodstatě jsou to neoznačené čisla (uint32) max 32-bitové
   uint32 t_coldflame;
   uint32 t_boneslice;

   //teď reset, což znamená, že když se dostane do kombatu, tak aby se nejdřív resetovaly všechny věci (aby hned nekastil všechny spely... a rovnou si nadefinujeme, co kdy má kastit ( v milisekundách 1 sekunda = 1000 milisekund)
   void Reset()
   {
   t_coldflame = 10000;
   t_boneslice = 3000;
   }
   // teď můžeme udělat, co udělá naše NPC když se dostane do kombatu ?  nic mě nenapadá 
   void EnterCombat(Unit * target)
   {
   me->MonsterYell("Za mého pána Lich Kinga!",LANG_UNIVERSAL,NULL);
   }

   // nebo, když někoho zabije co udělá, nic mě nenapadá 
   void KilledUnit(Unit * victim)
   {
   me->MonsterYell("Další na řadě je kdo?!",LANG_UNIVERSAL,NULL);
   }

   // nebo, když zmře, nic mě nenapadá 
   void JustDied(Unit * killer)
   {
   me->MonsterYell("Smrt nic neřeší!",LANG_UNIVERSAL,NULL);
   }

   // a nakonec zprovoznit ty timery, to uiDiff je takovej timer, kterej je napsanej v configách jako MapUpdateInterval
   void UpdateAI(const uint32 uiDiff)
   {
       if (!UpdateVictim())
           return; 
// musíme vytvořit podmínku, že pokud je náš timer menší nebo se rovná uiDiff tak se daná věc provede
       if(t_coldflame <= uiDiff)
       {
           DoCast(me->getVictim(), Coldflame, false);
           //to znamená že, DoCast - Casti, "me" je cíl, což znamená nasebe, HolyLight je ID toho spelu a false to je jestli je to triggered
           // a znovu nastavíme odpočítávání timeru
           t_coldflame = 10000;
           // a nebo pokud není náš timer mentší nebo se rovná uiDiff tak budeme odpočítávat
       }else
            t_coldflame -= uiDiff;

       // a to samé s druhým spelem ( me->getVictim() znamená že to použije na cíl (na co právě utočí))
       if(t_boneslice <= uiDiff)
       {
           DoCast(me->getVictim(), BoneSlice, false);
           t_boneslice = 3000;
       }else
           t_boneslice -= uiDiff;

       // a nakonec aby potom normálně útočil
       DoMeleeAttackIfReady();
   } // tady tou závorkou zavíráme UpdateAI
}; // a tadytou celou strukturu

//nyní zaregistrovat NPC 
CreatureAI* GetAI_boss_marrowgar(Creature* c)
{
   return new boss_marrowgar (c);
}
// a registrace scriptu
void AddSC_boss_marrowgar()
{
   Script *newscript;
   newscript = new Script;
   newscript->Name = "boss_marrowgar"; // to boss_GeMaJo budeme potřebovat do databáze
   newscript->GetAI = &GetAI_boss_marrowgar;
   newscript->RegisterSelf();
}

Edited by bLuma

Share this post


Link to post
Share on other sites

Ještě vědět co je proměnné číslo a uiDiff :D

 

EDIT: ..\..\src\game\Lord_Marrowgar.cpp(1) : fatal error C1083: Cannot open include file: 'ScriptPCH.h': No such file or directory - co to znamená omluvte mě, ale s C++ začínám.

Edited by pextr

Share this post


Link to post
Share on other sites

Ještě vědět co je proměnné číslo a uiDiff :D

 

EDIT: ..\..\src\game\Lord_Marrowgar.cpp(1) : fatal error C1083: Cannot open include file: 'ScriptPCH.h': No such file or directory - co to znamená omluvte mě, ale s C++ začínám.

 

uiDiff je z konfigu MapUpdateInterval a je v milisekundách

 

a ten error, ve starších corech ten soubor byl myslím ScriptedPch.h

Share this post


Link to post
Share on other sites

uiDiff je z konfigu MapUpdateInterval a je v milisekundách

 

a ten error, ve starších corech ten soubor byl myslím ScriptedPch.h

 

Takže přejmenovat na ScriptedPCH.h?

Share this post


Link to post
Share on other sites

ScriptedPch.h dávej si pozor na velikost písmen !

 

Errors:

 

1>------ Build started: Project: ACE_Wrappers, Configuration: Release Win32 ------

1>Compiling...

1>Lord_Marrowgar.cpp

1>c:\documents and settings\admin\plocha\rev 8311\core\src\game\ScriptMgr.h(11) : fatal error C1083: Cannot open include file: 'Common.h': No such file or directory

1>Build log was saved at "file://c:\Documents and Settings\Admin\Plocha\REV 8311\CORE\win\VC90\ace__Win32_Release\BuildLog.htm"

1>ACE_Wrappers - 1 error(s), 0 warning(s)

2>------ Build started: Project: shared, Configuration: Release Win32 ------

2>Getting Version...

2>Build log was saved at "file://c:\Documents and Settings\Admin\Plocha\REV 8311\CORE\win\VC90\shared__Win32_Release\BuildLog.htm"

2>shared - 0 error(s), 0 warning(s)

3>------ Build started: Project: game, Configuration: Release Win32 ------

4>------ Build started: Project: TrinityRealm, Configuration: Release Win32 ------

4>Linking...

4>LINK : fatal error LNK1181: cannot open input file '..\..\dep\lib\win32_release\ace.lib'

4>Build log was saved at "file://c:\Documents and Settings\Admin\Plocha\REV 8311\CORE\win\VC90\trinityrealm__Win32_Release\BuildLog.htm"

4>TrinityRealm - 1 error(s), 0 warning(s)

3>Compiling...

3>ScriptLoader.cpp

3>..\..\src\game\ScriptLoader.cpp(25) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

3>Build log was saved at "file://c:\Documents and Settings\Admin\Plocha\REV 8311\CORE\win\VC90\game__Win32_Release\BuildLog.htm"

3>game - 1 error(s), 0 warning(s)

5>------ Build started: Project: TrinityCore, Configuration: Release Win32 ------

5>Linking...

5>LINK : fatal error LNK1181: cannot open input file '.\game__win32_release\game.lib'

5>Build log was saved at "file://c:\Documents and Settings\Admin\Plocha\REV 8311\CORE\win\VC90\trinitycore__Win32_Release\BuildLog.htm"

5>TrinityCore - 1 error(s), 0 warning(s)

========== Build: 1 succeeded, 4 failed, 5 up-to-date, 0 skipped ==========

Share this post


Link to post
Share on other sites

Opravdu nevíte co dělám špatně?

 

kdybys umel aspon trochu anglicky tak ti to pise ze to nemuze otevrit nejake veci, jestli mas novejsi revizi tak si stahni na to knihovnu :) treba to pomuze

  • Upvote 1

Share this post


Link to post
Share on other sites

kdybys umel aspon trochu anglicky tak ti to pise ze to nemuze otevrit nejake veci, jestli mas novejsi revizi tak si stahni na to knihovnu :) treba to pomuze

 

Já vím, že je to nemůže otevřít xD.

  • Upvote 1
  • Downvote 1

Share this post


Link to post
Share on other sites

Mluví někomu to NPC?

 

mě to npc normálně mluví, ale jako mluví... ne jako že "řekne" Za Aliance !! ale napíše do chatu že:

 

General Marcus Jonathan yells: Za Alianci !!

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


×