diff --git a/zone/client.cpp b/zone/client.cpp index 08eb7e60a..12988450b 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -160,7 +160,7 @@ Client::Client(EQStreamInterface* ieqs) npc_close_scan_timer(6000), hp_self_update_throttle_timer(300), hp_other_update_throttle_timer(500), - position_update_timer(0) + position_update_timer(10000) { for (int client_filter = 0; client_filter < _FilterCount; client_filter++) diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index bababb73e..6483d85e6 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -4615,22 +4615,24 @@ void Client::Handle_OP_ClientUpdate(const EQApplicationPacket *app) this->SendAppearanceEffect(41, 0, 0, 0, 0); } - /* Broadcast update to other clients */ - auto outapp = new EQApplicationPacket(OP_ClientUpdate, sizeof(PlayerPositionUpdateServer_Struct)); - PlayerPositionUpdateServer_Struct* position_update = (PlayerPositionUpdateServer_Struct*)outapp->pBuffer; + /* Only feed real time updates when client is moving */ + if (is_client_moving) { - MakeSpawnUpdate(position_update); + /* Broadcast update to other clients */ + auto outapp = new EQApplicationPacket(OP_ClientUpdate, sizeof(PlayerPositionUpdateServer_Struct)); + PlayerPositionUpdateServer_Struct* position_update = (PlayerPositionUpdateServer_Struct*)outapp->pBuffer; - position_update_timer.Start(10000, true); + MakeSpawnUpdate(position_update); - if (gm_hide_me) { - entity_list.QueueClientsStatus(this, outapp, true, Admin(), 250); + if (gm_hide_me) { + entity_list.QueueClientsStatus(this, outapp, true, Admin(), 250); + } + else { + entity_list.QueueCloseClients(this, outapp, true, 300, nullptr, true); + } + + safe_delete(outapp); } - else { - entity_list.QueueCloseClients(this, outapp, true, 300, nullptr, true); - } - - safe_delete(outapp); if (zone->watermap) { if (zone->watermap->InLiquid(glm::vec3(m_Position))) diff --git a/zone/client_process.cpp b/zone/client_process.cpp index 11954798d..672848acc 100644 --- a/zone/client_process.cpp +++ b/zone/client_process.cpp @@ -120,7 +120,7 @@ bool Client::Process() { SendHPUpdate(); /* I haven't naturally updated my position in 10 seconds, updating manually */ - if (position_update_timer.Check()) { + if (!is_client_moving && position_update_timer.Check()) { SendPositionUpdate(); }