Nic proti ale tvuj script nebude fungovat ani kdyby ses na hlavu postavil
Spravne to ma vypadat takto a rovnou tady i vyjmenuju par veci co mas spatne:
1. pouzivas class, musi koncit strednikem (za } )
2. to co je v zavorkach za CreatureAI(Creature *pCrature): ArcScriptCreatureAI(pCreature) je pouze konstruktor, kdyz tam pridas if(ChainLighting) tak to zaprve nic neudela a za druhe zrejme nechapes jak se pouzivaji podminky, protoze tohle ti vrati vzdy true tim padem by se vzdy provedla prvni zavorka po if (znovu opakuju ze to je ale konstruktor, tudiz se nic neprovede, protoze tam to vazne nepatri)
3. AIUpdate musi byt soucast class ze ktere se vola, a aby se AIUpdate vubec volal musis zaregistrovat event pro updatovani pomoci RegisterAIUpdateEvent(cas_pro_update); nebo pomoci ParentClass::OnCombatStart(x) ktery si to rovnou zaregistruej samo.
4. Kdyz na 20% das znovu AddSpell a nijak ho neomezis (mno v zakladnich verzich scriptovaciho engine to v podstate ani niajk omezit nejde) ta kse bude od te doby castit porad dokola.
5. nevim co znamena ta tvoje definice "Event_OnTarget" v AddEmote. Pokud chces aby se ty texty rikali pri vykouzleni urcitych spellu, pridej to primo do AddSpell ( cela struktura: AddSpell(uint32 pSpellId, TargetType pTargetType, float pChance, float pCastTime, int32 pCooldown, float pMinRange, float pMaxRange, bool pStrictRange, const char* pText, TextType pTextType, uint32 pSoundId, const char* pAnnouncement) )
/* Creatura
*/
#include "StdAfx.h"
#include "Setup.h"
#define Creature 100000 // id NPC
#define GreaterHeal 48063 // Heal spell
#define ChainLighting 41183 // Spell Chain lighting
class CreatureAI : public ArcScriptCreatureAI
{
ARCSCRIPT_FATCORY_FUNCTION(CreatureAI, ArcScriptCreatureAI);
CreatureAI(Creature *pCrature): ArcScriptCreatureAI(pCreature)
{
AddEmote(Event_OnCombatStart,"Jsi pouhá špína, zemřeš!!!", Text_Yell, 0); //na vstoupení do combatu řekne
//"Jsi pouhá špína zemřeš!!!"
AddEmote(Event_OnTargetDied,"Já to říkal!", Text_Yell);//Kdyz nekoho zabije tak řekne "Já to říkal"
AddEmote(Event_OnDied,"Néé, zklamal jsem svého pána.", Text_Yell);//když zemře řekne "Néé, zklamal jsem svého pána"
AddSpell(ChainLighting, Target_Current, 50, 0, 15, 0, 0, false, "Doufám že to bolelo!", Text_Yell);//Spell chain lighting, sance 50%, cil: main tank, cast time: 0 sec, 15 sec cooldown, zakrici "Doufam ze to bolelo"
}
void OnCombatStart(Unit * mTarget)
{
ParentClass::OnCombatStart(mTarget);
}
void OnCombatStop(Unit * mTarget)
{
ParentClass::OnCombatStop(mTarget);
}
void OnDied(Unit * mKiller)
{
ParentClass::OnDied(mKiller);
}
void AIUpdate()
{
if(Get_HealthPrecent() <= 20)//jestliže bude jeho životy menší nebo rovno 20%, tak vykástí GreaterHeal
{
SpellEntry * sp = dbcSpell.LookupForced( GreaterHeal );
CastSpellOnTarget(GetUnit(), Target_Self, sp, false);
}
ParentClass::AIUpdate();
}
};
void SetupCreatureAI(ScriptMgr * mgr)
{
mgr->register_creature_script(Creature, &CreatureAI::Create);
}