class DotaSpawnerAllianceAI : public CreatureAIScript { public: ADD_CREATURE_FACTORY_FUNCTION(DotaSpawnerAllianceAI); DotaSpawnerAllianceAI(Creature *pCreature) : CreatureAIScript(pCreature) {} void AIUpdate(const char *args, Creature* pThis) { uint32 entry = 100; CreatureProto * proto = CreatureProtoStorage.LookupEntry(entry); CreatureInfo * info = CreatureNameStorage.LookupEntry(entry); CreatureSpawn * sp = new CreatureSpawn; //sp->displayid = info->DisplayID; info->GenerateModelId(&sp->displayid); sp->entry = entry; sp->form = 0; sp->id = objmgr.GenerateCreatureSpawnID(); sp->movetype = 0; sp->x = pThis->GetPositionX(); sp->y = pThis->GetPositionY(); sp->z = pThis->GetPositionZ(); sp->o = pThis->GetOrientation(); sp->emote_state =0; sp->flags = 0; sp->factionid = proto->Faction; sp->bytes=0; sp->bytes2=0; sp->respawnNpcLink = 0; Creature * p = pThis->GetMapMgr()->CreateCreature(); ASSERT(p); p->Load(sp, (uint32)NULL, NULL); p->PushToWorld(pThis->GetMapMgr()); uint32 x = pThis->GetMapMgr()->GetPosX(pThis->GetPositionX()); uint32 y = pThis->GetMapMgr()->GetPosY(pThis->GetPositionY()); // Add spawn to map pThis->GetMapMgr()->GetBaseMap()->GetSpawnsListAndCreate( x, y)->CreatureSpawns.insert(sp); sEventMgr.AddEvent(_unit, &Creature::CallScriptUpdate, EVENT_SCRIPT_UPDATE_EVENT, 5000, 0,0); } };