From: stfrn <st...@us...> - 2005-09-28 21:27:58
|
Update of /cvsroot/planeshift/planeshift/src/server In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30785/src/server Modified Files: adminmanager.cpp adminmanager.h Log Message: Added that ablity to /killnpc [id:1] [reload] 'id: ' works the same with teleport, or you can just target. 'reload' deletes the current instance of the NPC and fetches it from the DB. Gets new KA, but not responces. Index: adminmanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/adminmanager.cpp,v retrieving revision 1.193 retrieving revision 1.194 diff -C2 -d -r1.193 -r1.194 *** adminmanager.cpp 18 Sep 2005 22:50:36 -0000 1.193 --- adminmanager.cpp 28 Sep 2005 21:27:49 -0000 1.194 *************** *** 325,329 **** else if (msg.command == "/killnpc") { ! KillNPC(me,client); } else if (msg.command == "/item") --- 325,329 ---- else if (msg.command == "/killnpc") { ! KillNPC(me,msg,client); } else if (msg.command == "/item") *************** *** 1290,1294 **** } ! void AdminManager::KillNPC (MsgEntry *me,Client *client ) { // Check to see if this client has admin level --- 1290,1294 ---- } ! void AdminManager::KillNPC (MsgEntry *me, psAdminCmdMessage& msg, Client *client ) { // Check to see if this client has admin level *************** *** 1299,1311 **** } ! // Now get the targeted entity ! gemObject *obj = client->GetTargetObject(); if ( !obj ) { ! psserver->SendSystemError(me->clientnum, "No NPC was targeted."); ! return; } ! gemActor *actor = obj->GetActorPtr(); ! actor->Kill(client->GetActor()); } --- 1299,1331 ---- } ! gemObject* obj = NULL; ! ! if(msg.target.Length() != 0) ! if (msg.target.FindFirst(':')!=(size_t)-1) ! obj = psserver->GetEntityManager()->GetGEM()->FindPlayerEntity(atoi(msg.target.Slice(3).GetData())); ! if ( !obj ) + obj = client->GetTargetObject(); + + if ( obj ) { ! gemActor *target = obj->GetActorPtr(); ! if (target->GetClientID() == 0) ! { ! if (msg.action != "reload") ! target->Kill(client->GetActor()); ! else ! { ! unsigned int npcid = target->GetCharacterData()->GetCharacterID(); ! psserver->SendSystemInfo(me->clientnum, "Npc %d recreated", npcid); ! ! psCharacter * npcdata = psServer::CharacterLoader.LoadCharacterData(npcid); ! psserver->GetEntityManager()->CreateNPC(npcdata); ! psserver->GetEntityManager()->RemoveActor(obj); ! } ! return; ! } } ! psserver->SendSystemError(me->clientnum, "No NPC was targeted."); } Index: adminmanager.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/adminmanager.h,v retrieving revision 1.60 retrieving revision 1.61 diff -C2 -d -r1.60 -r1.61 *** adminmanager.h 2 Aug 2005 19:29:54 -0000 1.60 --- adminmanager.h 28 Sep 2005 21:27:50 -0000 1.61 *************** *** 67,71 **** void CreateNPC(MsgEntry *me,psAdminCmdMessage& msg, Client *client); int CopyNPCFromDatabase(int master_id, float x, float y, float z, float angle, const csString & sector); ! void KillNPC(MsgEntry *me,Client *client); void CreateItem(MsgEntry* me, psAdminCmdMessage& msg, Client *client); bool CreateItem(const char * name, double xPos, double yPos, double zPos, float angle, const char * sector, int stackCount); --- 67,71 ---- void CreateNPC(MsgEntry *me,psAdminCmdMessage& msg, Client *client); int CopyNPCFromDatabase(int master_id, float x, float y, float z, float angle, const csString & sector); ! void KillNPC(MsgEntry *me, psAdminCmdMessage& msg, Client *client); void CreateItem(MsgEntry* me, psAdminCmdMessage& msg, Client *client); bool CreateItem(const char * name, double xPos, double yPos, double zPos, float angle, const char * sector, int stackCount); |