diff --git a/zone/entity.cpp b/zone/entity.cpp index da89e9397..baae4913f 100644 --- a/zone/entity.cpp +++ b/zone/entity.cpp @@ -1561,16 +1561,14 @@ Client *EntityList::GetClientByWID(uint32 iWID) return nullptr; } -Client *EntityList::GetRandomClient(float x, float y, float z, float Distance, Client *ExcludeClient) +Client *EntityList::GetRandomClient(const xyz_location& location, float Distance, Client *ExcludeClient) { std::vector ClientsInRange; - auto it = client_list.begin(); - while (it != client_list.end()) { - if ((it->second != ExcludeClient) && (it->second->DistNoRoot(x, y, z) <= Distance)) + + for (auto it = client_list.begin();it != client_list.end(); ++it) + if ((it->second != ExcludeClient) && (it->second->DistNoRoot(location.m_X, location.m_Y, location.m_Z) <= Distance)) ClientsInRange.push_back(it->second); - ++it; - } if (ClientsInRange.empty()) return nullptr; diff --git a/zone/entity.h b/zone/entity.h index 176aa1678..9a23bafd0 100644 --- a/zone/entity.h +++ b/zone/entity.h @@ -150,7 +150,7 @@ public: Client *GetClientByCharID(uint32 iCharID); Client *GetClientByWID(uint32 iWID); Client *GetClient(uint32 ip, uint16 port); - Client *GetRandomClient(float x, float y, float z, float Distance, Client *ExcludeClient = nullptr); + Client *GetRandomClient(const xyz_location& location, float Distance, Client *ExcludeClient = nullptr); Group *GetGroupByMob(Mob* mob); Group *GetGroupByClient(Client* client); Group *GetGroupByID(uint32 id); diff --git a/zone/lua_entity_list.cpp b/zone/lua_entity_list.cpp index eace84a69..9632b6624 100644 --- a/zone/lua_entity_list.cpp +++ b/zone/lua_entity_list.cpp @@ -298,12 +298,12 @@ void Lua_EntityList::MessageGroup(Lua_Mob who, bool skip_close, uint32 type, con Lua_Client Lua_EntityList::GetRandomClient(float x, float y, float z, float dist) { Lua_Safe_Call_Class(Lua_Client); - return self->GetRandomClient(x, y, z, dist); + return self->GetRandomClient(xyz_location(x, y, z), dist); } Lua_Client Lua_EntityList::GetRandomClient(float x, float y, float z, float dist, Lua_Client exclude) { Lua_Safe_Call_Class(Lua_Client); - return self->GetRandomClient(x, y, z, dist, exclude); + return self->GetRandomClient(xyz_location(x, y, z), dist, exclude); } Lua_Mob_List Lua_EntityList::GetMobList() { diff --git a/zone/perl_entity.cpp b/zone/perl_entity.cpp index 3d685e011..a5ad00827 100644 --- a/zone/perl_entity.cpp +++ b/zone/perl_entity.cpp @@ -1875,7 +1875,7 @@ XS(XS_EntityList_GetRandomClient) c = INT2PTR(Client *,tmp); } } - RETVAL = entity_list.GetRandomClient(x, y, z, d * d, c); + RETVAL = entity_list.GetRandomClient(xyz_location(x, y, z), d * d, c); ST(0) = sv_newmortal(); sv_setref_pv(ST(0), "Client", (void*)RETVAL); }