Artificial Intelligence;

AI Templage -

Code:
class TemplateAI : CreatureAIScript
{
public:
	ADD_CREATURE_FACTORY_FUNCTION(TemplateAI);
    TemplateAI(Creature* pCreature) : CreatureAIScript(pCreature)
     {
     }

protected:

};
AI Functions -

Code:
  void OnCombatStart(Unit* mTarget)
    {
        
    }
	
	
    void OnCombatStop(Unit *mTarget)
    {

    }
	
    void OnDied(Unit * mKiller)
    {
    }
	
    void AIUpdate()
    {
    }
	
    void SpellCast(uint32 val)
    {
 
    }
AI Example Combat_OnStart_ExampleSay



Code:
 void OnCombatStart(Unit* mTarget)
    {
       int chatMessage; 
       randAnnounce=rand()%4;
			switch (randAnnounce)
			{
			case 0:///Edit this message
				_unit->SendChatMessage(CHAT_MSG_MONSTER_YELL, LANG_UNIVERSAL, "Intruder!!!!!!!!!!!!!");
			break;

			case 1://Edit this message
				_unit->SendChatMessage(CHAT_MSG_MONSTER_YELL, LANG_UNIVERSAL, "They're After the Jewels Stop them");
			break;

    }
GameObjectAI;

Code:
class TutorialPortal : public GameObjectAIScript
{
public:
       TutorialPortal(GameObject* goinstance) : GameObjectAIScript(goinstance) {}
       void OnActivate(Player * Plr)
       {
             Plr->SafeTeleport(1, 0, 4627.442383, -3831.523438, 943.386353, 1.220509);
       }
       static GameObjectAIScript *Create(GameObject * GO) { return new TutorialPortal(GO); }
};
GameObjectAIScript * create_go[GOID](GameObject * GO) { return new TutorialPortal(GO); }
void SetupPortalHandler(ScriptMgr * mgr)
{
   mgr->register_gameobject_script([GOID], &TutorialPortal::Create);
}
Server Hooks;

Code:
*SERVER_HOOK_EVENT_ON_NEW_CHARACTER
*SERVER_HOOK_EVENT_ON_KILL_PLAYER
*SERVER_HOOK_EVENT_ON_FIRST_ENTER_WORLD
*SERVER_HOOK_EVENT_ON_ENTER_WORLD
*SERVER_HOOK_EVENT_ON_GUILD_JOIN
*SERVER_HOOK_EVENT_ON_DEATH
*SERVER_HOOK_EVENT_ON_REPOP
*SERVER_HOOK_EVENT_ON_EMOTE
*SERVER_HOOK_EVENT_ON_ENTER_COMBAT
*SERVER_HOOK_EVENT_ON_CAST_SPELL
*SERVER_HOOK_EVENT_ON_TICK
*SERVER_HOOK_EVENT_ON_LOGOUT_REQUEST
*SERVER_HOOK_EVENT_ON_LOGOUT
*SERVER_HOOK_EVENT_ON_QUEST_ACCEPT
*SERVER_HOOK_EVENT_ON_ZONE
*SERVER_HOOK_EVENT_ON_CHAT
*SERVER_HOOK_EVENT_ON_LOOT
*SERVER_HOOK_EVENT_ON_GUILD_CREATE
*SERVER_HOOK_EVENT_ON_ENTER_WORLD_2
*SERVER_HOOK_EVENT_ON_CHARACTER_CREATE
*SERVER_HOOK_EVENT_ON_QUEST_CANCELLED
*SERVER_HOOK_EVENT_ON_QUEST_FINISHED
*SERVER_HOOK_EVENT_ON_HONORABLE_KILL
*SERVER_HOOK_EVENT_ON_ARENA_FINISH
*SERVER_HOOK_EVENT_ON_OBJECTLOOT
*SERVER_HOOK_EVENT_ON_AREATRIGGER
*SERVER_HOOK_EVENT_ON_POST_LEVELUP
*SERVER_HOOK_EVENT_ON_PRE_DIE - general unit die, not only based on players
*SERVER_HOOK_EVENT_ON_ADVANCE_SKILLLINE
Server Hooks Example -

Code:
void OnLoginForFirstTime(Player* plr)
{
plr->BroadcastMessage(" Welcome to [Server name] %s", plr->GetName()
}



› See More: ArcEmu C++ Functions and Guide