From: DaveG <da...@us...> - 2006-01-08 18:29:00
|
Update of /cvsroot/planeshift/planeshift/src/server In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7167/src/server Modified Files: adminmanager.h usermanager.cpp Log Message: Added the ability for GMs to use "/pos [name]" to get the position of another entity. (may also use eid:# and pid:#) Also converted angle outout for GMs to degrees. Index: adminmanager.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/adminmanager.h,v retrieving revision 1.79 retrieving revision 1.80 diff -C2 -d -r1.79 -r1.80 *** adminmanager.h 7 Jan 2006 03:27:49 -0000 1.79 --- adminmanager.h 8 Jan 2006 18:28:51 -0000 1.80 *************** *** 95,98 **** --- 95,100 ---- void AdminCreateNewNPC(csStringBase& data); + gemObject* FindObjectByString(const csStringBase& str); + protected: *************** *** 105,110 **** void HandleGMGuiMessage(MsgEntry *pMsg, psGMGuiMessage& msg, Client *client); - gemObject* FindObjectByString(const csStringBase& str); - void GetSiblingChars(MsgEntry* me,psAdminCmdMessage& msg,Client *client); void GetInfo(MsgEntry* me,psAdminCmdMessage& msg,Client *client, gemObject* target); --- 107,110 ---- Index: usermanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/usermanager.cpp,v retrieving revision 1.248 retrieving revision 1.249 diff -C2 -d -r1.248 -r1.249 *** usermanager.cpp 6 Jan 2006 22:00:33 -0000 1.248 --- usermanager.cpp 8 Jan 2006 18:28:51 -0000 1.249 *************** *** 923,955 **** ! void UserManager::ReportPosition(psUserCmdMessage& ,Client *client,int clientnum) { ! gemActor *actor = client->GetActor(); ! if (actor) { csVector3 pos; ! iSector* sector = 0; float angle; ! actor->GetPosition(pos, angle, sector); ! const char *sector_name = (sector) ? sector->QueryObject()->GetName() : "(null)"; ! // Get the iRegion this sector belongs to csRef<iRegion> region = SCF_QUERY_INTERFACE(sector->QueryObject()->GetObjectParent(), iRegion); ! ! // report angle only if user with admin rights (players will use skills to determine correct direction) if (client->GetSecurityLevel() < 24) { ! psserver->SendSystemInfo(clientnum, ! "Your current position is %1.2f,%1.2f,%1.2f in sector: %s", ! pos.x,pos.y,pos.z,sector_name); } else { psserver->SendSystemInfo(clientnum, ! "Your current position is %1.2f,%1.2f,%1.2f angle: %1.2f in sector: %s, region: %s", ! pos.x,pos.y,pos.z,angle,sector_name, region->QueryObject()->GetName()); } } --- 923,972 ---- ! void UserManager::ReportPosition(psUserCmdMessage& msg,Client *client,int clientnum) { ! gemObject *object = NULL; ! bool self = true; ! // Allow GMs to get other players' and entities' locations ! if (client->GetSecurityLevel() > 20 && msg.player.Length()) ! { ! self = false; ! Client* c = psserver->GetAdminManager()->FindPlayerClient(msg.player,0); ! if (c) object = (gemObject*)c->GetActor(); ! if (!object) object = psserver->GetAdminManager()->FindObjectByString(msg.player); ! } ! else ! object = client->GetActor(); ! ! if (object) { csVector3 pos; ! iSector* sector = 0; float angle; ! object->GetPosition(pos, angle, sector); ! csString sector_name = (sector) ? sector->QueryObject()->GetName() : "(null)"; ! // Get the iRegion this sector belongs to csRef<iRegion> region = SCF_QUERY_INTERFACE(sector->QueryObject()->GetObjectParent(), iRegion); ! ! csString name; ! if (self) name = "Your"; ! else name.Format("%s's",object->GetName()); ! ! // Report extra info to GMs (players will use skills to determine correct direction) if (client->GetSecurityLevel() < 24) { ! psserver->SendSystemInfo(clientnum,"%s current position is %1.2f,%1.2f,%1.2f in sector: %s", ! name.GetData(), pos.x, pos.y, pos.z, sector_name.GetData() ); } else { + int degrees = (int)(angle*180.0/PI); psserver->SendSystemInfo(clientnum, ! "%s current position is %1.2f,%1.2f,%1.2f angle: %d in sector: %s, region: %s", ! name.GetData(), pos.x, pos.y, pos.z, degrees, ! sector_name.GetData(), region->QueryObject()->GetName() ); } } |