Position updates with do_pos_update test call

This commit is contained in:
Chris M
2014-07-22 23:14:44 -05:00
parent 69e90aac0a
commit da6d7538b0
10 changed files with 69 additions and 26 deletions
+9 -6
View File
@@ -32,6 +32,7 @@ extern EntityList entity_list;
extern Zone* zone;
extern WorldServer worldserver;
extern std::string WS_Client_Connected;
Mob::Mob(const char* in_name,
const char* in_lastname,
@@ -1218,14 +1219,16 @@ void Mob::MakeSpawnUpdateNoDelta(PlayerPositionUpdateServer_Struct *spu){
spu->padding0018 =0x5df27;
/* Testing */
if (IsNPC()){
std::string str = MakeJSON("ResponseType:PositionUpdate,entity:" + IntegerToString(GetID()) + ",x:" + FloatToString(x_pos) + ",y:" + FloatToString(y_pos) + ",z:" + FloatToString(z_pos) + ",h:" + FloatToString(heading));
if (IsNPC() && WS_Client_Connected.size() != 0){
std::string str = MakeJSON("ResponseType:PositionUpdate,entity:" + std::to_string(GetID()) + ",name:" + GetName() + ",x:" + std::to_string(x_pos) + ",y:" + std::to_string(y_pos) + ",z:" + std::to_string(z_pos) + ",h:" + std::to_string(heading));
char * writable = new char[str.size() + 1];
std::copy(str.begin(), str.end(), writable);
ServerPacket* wipack = new ServerPacket(ServerOP_WIWorldResponse, str.size() + 1);
wipack->WriteString(writable);
if (worldserver.Connected()) { worldserver.SendPacket(wipack); }
safe_delete(wipack);
ServerPacket* pack = new ServerPacket(ServerOP_WIWorldResponse, sizeof(WI_Client_Response_Struct)+str.length() + 1);
WI_Client_Response_Struct* WICR = (WI_Client_Response_Struct*)pack->pBuffer;
strn0cpy(WICR->Client_UUID, WS_Client_Connected.c_str(), 64);
strn0cpy(WICR->JSON_Data, str.c_str(), str.length() + 1);
if (worldserver.Connected()) { worldserver.SendPacket(pack); }
safe_delete(pack);
delete[] writable;
}
}
+1
View File
@@ -100,6 +100,7 @@ DBAsyncFinishedQueue MTdbafq;
DBAsync *dbasync = nullptr;
TaskManager *taskmanager = 0;
QuestParserCollection *parse = 0;
std::string WS_Client_Connected;
const SPDat_Spell_Struct* spells;
void LoadSpells(EQEmu::MemoryMappedFile **mmf);
+6 -3
View File
@@ -62,6 +62,7 @@ extern NetConnection net;
extern PetitionList petition_list;
extern uint32 numclients;
extern volatile bool RunLoops;
extern std::string WS_Client_Connected;
WorldServer::WorldServer()
: WorldConnection(EmuTCPConnection::packetModeZone)
@@ -1777,11 +1778,13 @@ void WorldServer::Process() {
break;
}
case ServerOP_WIServGeneric:
case ServerOP_WIClientRequest:
{
/* Do Nothing for now */
WI_Client_Request_Struct* WICR = (WI_Client_Request_Struct*)pack->pBuffer;
WS_Client_Connected = WICR->Client_UUID;
_log(WEB_INTERFACE__ERROR, "Recieved packet from World, setting Client Connected to %s", WICR->Client_UUID);
break;
}
}
case ServerOP_CZSignalClient:
{
CZClientSignal_Struct* CZCS = (CZClientSignal_Struct*) pack->pBuffer;