All pastes #960046 Raw Edit

GM Command Patch

public diff v1 · immutable
#960046 ·published 2008-03-27 21:01 UTC
rendered paste body
Index: src/game/Creature.h===================================================================--- src/game/Creature.h	(revision 5493)+++ src/game/Creature.h	(working copy)@@ -494,6 +494,12 @@         void Respawn();         void SaveRespawnTime(); +        uint32 GetRespawnDelay() const { return m_respawnDelay; }+        void SetRespawnDelay(uint32 delay) { m_respawnDelay = delay; }++        float GetRespawnRadius() const { return m_respawnradius; }+        void SetRespawnRadius(float dist) { m_respawnradius = dist; }+         uint32 m_groupLootTimer;                            // (msecs)timer used for group loot         uint64 lootingGroupLeaderGUID;                      // used to find group which is looting corpse Index: src/game/Level2.cpp===================================================================--- src/game/Level2.cpp	(revision 5493)+++ src/game/Level2.cpp	(working copy)@@ -603,7 +603,7 @@     float z = chr->GetPositionZ();     float o = chr->GetOrientation(); -    Creature* pCreature = new Creature(chr);+    Creature* pCreature = new Creature(NULL);     if (!pCreature->Create(objmgr.GenerateLowGuid(HIGHGUID_UNIT), chr->GetMapId(), x, y, z, o, id, (uint32)teamval))     {         delete pCreature;@@ -612,11 +612,18 @@      pCreature->SaveToDB(); +    int32 guid = pCreature->GetDBTableGUIDLow();+     // To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells();-    pCreature->LoadFromDB(pCreature->GetDBTableGUIDLow(), chr->GetInstanceId());+    pCreature->LoadFromDB(guid, chr->GetInstanceId());      MapManager::Instance().GetMap(pCreature->GetMapId(), pCreature)->Add(pCreature); +    CreatureData const* data = objmgr.GetCreatureData(guid);++    if (data)+        objmgr.AddCreatureToGrid(guid, data);+     return true; } @@ -1743,9 +1750,9 @@         return false;     } -    int mtype=0;                                            // MovementType-    if (option > 0)-        mtype=1;+    MovementGeneratorType mtype = IDLE_MOTION_TYPE;     // MovementType+    if (option > 0) +        mtype = RANDOM_MOTION_TYPE;      Creature *pCreature = getSelectedCreature();     uint64 u_guid = 0;@@ -1755,6 +1762,16 @@     else         return false; +    pCreature->SetRespawnRadius((float)option);+    pCreature->SetDefaultMovementType(mtype);+    pCreature->GetMotionMaster()->Initialize();+    if(pCreature->isAlive())                            // dead creature will reset movement generator at respawn+    {+        pCreature->setDeathState(JUST_DIED);+        pCreature->RemoveCorpse();+        pCreature->Respawn();+    }+     WorldDatabase.PExecuteLog("UPDATE creature SET spawndist=%i, MovementType=%i WHERE guid=%u",option,mtype,u_guid);     PSendSysMessage(LANG_COMMAND_SPAWNDIST,option);     return true;@@ -1787,6 +1804,7 @@         return false;      WorldDatabase.PExecuteLog("UPDATE creature SET spawntimesecs=%i WHERE guid=%u",i_stime,u_guid);+    pCreature->SetRespawnDelay((uint32)i_stime);     PSendSysMessage(LANG_COMMAND_SPAWNTIME,i_stime);      return true;@@ -3082,7 +3100,7 @@     float rot2 = sin(o/2);     float rot3 = cos(o/2); -    GameObject* pGameObj = new GameObject(chr);+    GameObject* pGameObj = new GameObject(NULL);     uint32 lowGUID = objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT);      if(!pGameObj->Create(lowGUID, goI->id, chr->GetMapId(), x, y, z, o, 0, 0, rot2, rot3, 0, 1))@@ -3105,6 +3123,13 @@     pGameObj->SaveToDB();     MapManager::Instance().GetMap(pGameObj->GetMapId(), pGameObj)->Add(pGameObj); +    GameObjectData const* data = objmgr.GetGOData(lowGUID);++    if (data)+    {+        objmgr.AddGameobjectToGrid(lowGUID, data);+    }+     PSendSysMessage(LANG_GAMEOBJECT_ADD,id,goI->name,lowGUID,x,y,z);      return true;