From 7addfe0b00c0037d9aa5aedb9b66765f22526657 Mon Sep 17 00:00:00 2001 From: Blaymoira Date: Mon, 5 Jan 2009 21:12:35 +0100 Subject: [PATCH] *New commands: .gobject addtemp/.npc addtemp - by XTZGZoReX --HG-- branch : trunk --- sql/updates/785_world.sql | 4 +++ src/game/Chat.cpp | 2 ++ src/game/Chat.h | 3 +++ src/game/Level2.cpp | 57 ++++++++++++++++++++++++++++++++++++++- 4 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 sql/updates/785_world.sql diff --git a/sql/updates/785_world.sql b/sql/updates/785_world.sql new file mode 100644 index 0000000000..39b85c3871 --- /dev/null +++ b/sql/updates/785_world.sql @@ -0,0 +1,4 @@ +delete from command where name in ('gobject tempadd', 'npc tempadd'); +insert into command (name, security, help) values +('gobject tempadd','2','Adds a temporary gameobject that is not saved to DB.'), +('npc tempadd','2','Adds temporary NPC, not saved to database.'); \ No newline at end of file diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp index c16d4f6965..f02dad06e7 100644 --- a/src/game/Chat.cpp +++ b/src/game/Chat.cpp @@ -438,6 +438,7 @@ ChatCommand * ChatHandler::getCommandTable() { "unfollow", SEC_GAMEMASTER, false, &ChatHandler::HandleNpcUnFollowCommand, "", NULL }, { "whisper", SEC_MODERATOR, false, &ChatHandler::HandleNpcWhisperCommand, "", NULL }, { "yell", SEC_MODERATOR, false, &ChatHandler::HandleNpcYellCommand, "", NULL }, + { "addtemp", SEC_GAMEMASTER, false, &ChatHandler::HandleTempAddSpwCommand, "", NULL }, //{ TODO: fix or remove this commands { "name", SEC_GAMEMASTER, false, &ChatHandler::HandleNameCommand, "", NULL }, @@ -471,6 +472,7 @@ ChatCommand * ChatHandler::getCommandTable() { "move", SEC_GAMEMASTER, false, &ChatHandler::HandleMoveObjectCommand, "", NULL }, { "near", SEC_ADMINISTRATOR, false, &ChatHandler::HandleNearObjectCommand, "", NULL }, { "activate", SEC_GAMEMASTER, false, &ChatHandler::HandleActivateObjectCommand, "", NULL }, + { "addtemp", SEC_GAMEMASTER, false, &ChatHandler::HandleTempGameObjectCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; diff --git a/src/game/Chat.h b/src/game/Chat.h index 9b6e2d5460..6463b347f4 100644 --- a/src/game/Chat.h +++ b/src/game/Chat.h @@ -463,6 +463,9 @@ class ChatHandler bool HandlePlayAllCommand(const char* args); bool HandleRepairitemsCommand(const char* args); + bool HandleTempGameObjectCommand(const char* args); + bool HandleTempAddSpwCommand(const char* args); + //! Development Commands bool HandleSetValue(const char* args); bool HandleGetValue(const char* args); diff --git a/src/game/Level2.cpp b/src/game/Level2.cpp index 6601e52d27..0258954d98 100644 --- a/src/game/Level2.cpp +++ b/src/game/Level2.cpp @@ -3946,9 +3946,64 @@ bool ChatHandler::HandleActivateObjectCommand(const char *args) // Activate obj->SetLootState(GO_READY); - obj->UseDoorOrButton(10000); + obj->UseDoorOrButton(10000); PSendSysMessage("Object activated!"); return true; } + +// add creature, temp only +bool ChatHandler::HandleTempAddSpwCommand(const char* args) +{ + if(!*args) + return false; + char* charID = strtok((char*)args, " "); + if (!charID) + return false; + + Player *chr = m_session->GetPlayer(); + + float x = chr->GetPositionX(); + float y = chr->GetPositionY(); + float z = chr->GetPositionZ(); + float ang = chr->GetOrientation(); + + uint32 id = atoi(charID); + + chr->SummonCreature(id,x,y,z,ang,TEMPSUMMON_CORPSE_DESPAWN,120); + + return true; +} + +// add go, temp only +bool ChatHandler::HandleTempGameObjectCommand(const char* args) +{ + if(!*args) + return false; + char* charID = strtok((char*)args, " "); + if (!charID) + return false; + + Player *chr = m_session->GetPlayer(); + + char* spawntime = strtok(NULL, " "); + uint32 spawntm; + + if( spawntime ) + spawntm = atoi((char*)spawntime); + + float x = chr->GetPositionX(); + float y = chr->GetPositionY(); + float z = chr->GetPositionZ(); + float ang = chr->GetOrientation(); + + float rot2 = sin(ang/2); + float rot3 = cos(ang/2); + + uint32 id = atoi(charID); + + chr->SummonGameObject(id,x,y,z,ang,0,0,rot2,rot3,spawntm); + + return true; +}