From 5e6741cf17760542ae86f2f921c34b30678082ac Mon Sep 17 00:00:00 2001 From: Kinglykrab <89047260+Kinglykrab@users.noreply.github.com> Date: Tue, 22 Nov 2022 16:48:05 -0500 Subject: [PATCH] [Quest API] Add Overloads to MoveZone Methods in Perl/Lua. (#2551) # Perl - Add `$client->MoveZone(zone_name, x, y, z)`. - Add `$client->MoveZone(zone_name, x, y, z, h)`. - Add `$client->MoveZoneGroup(zone_name, x, y, z)`. - Add `$client->MoveZoneGroup(zone_name, x, y, z, h)`. - Add `$client->MoveZoneRaid(zone_name, x, y, z)`. - Add `$client->MoveZoneRaid(zone_name, x, y, z, h)`. - Add `$client->MoveZoneInstance(instance_id, x, y, z)`. - Add `$client->MoveZoneInstance(instance_id, x, y, z, h)`. - Add `$client->MoveZoneInstanceGroup(instance_id, x, y, z)`. - Add `$client->MoveZoneInstanceGroup(instance_id, x, y, z, h)`. - Add `$client->MoveZoneInstanceRaid(instance_id, x, y, z)`. - Add `$client->MoveZoneInstanceRaid(instance_id, x, y, z, h)`. # Lua - Add `client:MoveZone(zone_name, x, y, z)`. - Add `client:MoveZone(zone_name, x, y, z, h)`. - Add `client:MoveZoneGroup(zone_name, x, y, z)`. - Add `client:MoveZoneGroup(zone_name, x, y, z, h)`. - Add `client:MoveZoneRaid(zone_name, x, y, z)`. - Add `client:MoveZoneRaid(zone_name, x, y, z, h)`. - Add `client:MoveZoneInstance(instance_id, x, y, z)`. - Add `client:MoveZoneInstance(instance_id, x, y, z, h)`. - Add `client:MoveZoneInstanceGroup(instance_id, x, y, z)`. - Add `client:MoveZoneInstanceGroup(instance_id, x, y, z, h)`. - Add `client:MoveZoneInstanceRaid(instance_id, x, y, z)`. - Add `client:MoveZoneInstanceRaid(instance_id, x, y, z, h)`. # Notes - Adds XYZ/XYZH overloads to these methods so it no longer assumes safe coordinates unless position isn't specified. --- zone/client.h | 12 ++-- zone/lua_client.cpp | 132 ++++++++++++++++++++++++++++++--------- zone/lua_client.h | 12 ++++ zone/perl_client.cpp | 144 ++++++++++++++++++++++++++++++++----------- zone/zoning.cpp | 33 +++++----- 5 files changed, 245 insertions(+), 88 deletions(-) diff --git a/zone/client.h b/zone/client.h index a3758999c..2504544dd 100644 --- a/zone/client.h +++ b/zone/client.h @@ -661,12 +661,12 @@ public: void MovePC(uint32 zoneID, float x, float y, float z, float heading, uint8 ignorerestrictions = 0, ZoneMode zm = ZoneSolicited); void MovePC(float x, float y, float z, float heading, uint8 ignorerestrictions = 0, ZoneMode zm = ZoneSolicited); void MovePC(uint32 zoneID, uint32 instanceID, float x, float y, float z, float heading, uint8 ignorerestrictions = 0, ZoneMode zm = ZoneSolicited); - void MoveZone(const char *zone_short_name); - void MoveZoneGroup(const char *zone_short_name); - void MoveZoneRaid(const char *zone_short_name); - void MoveZoneInstance(uint16 instance_id); - void MoveZoneInstanceGroup(uint16 instance_id); - void MoveZoneInstanceRaid(uint16 instance_id); + void MoveZone(const char *zone_short_name, const glm::vec4& location = glm::vec4(0.f)); + void MoveZoneGroup(const char *zone_short_name, const glm::vec4& location = glm::vec4(0.f)); + void MoveZoneRaid(const char *zone_short_name, const glm::vec4& location = glm::vec4(0.f)); + void MoveZoneInstance(uint16 instance_id, const glm::vec4& location = glm::vec4(0.f)); + void MoveZoneInstanceGroup(uint16 instance_id, const glm::vec4& location = glm::vec4(0.f)); + void MoveZoneInstanceRaid(uint16 instance_id, const glm::vec4& location = glm::vec4(0.f)); void SendToGuildHall(); void SendToInstance(std::string instance_type, std::string zone_short_name, uint32 instance_version, float x, float y, float z, float heading, std::string instance_identifier, uint32 duration); void AssignToInstance(uint16 instance_id); diff --git a/zone/lua_client.cpp b/zone/lua_client.cpp index 9dbe972f7..1390d4328 100644 --- a/zone/lua_client.cpp +++ b/zone/lua_client.cpp @@ -386,36 +386,6 @@ void Lua_Client::MovePCInstance(int zone, int instance, float x, float y, float self->MovePC(zone, instance, x, y, z, heading); } -void Lua_Client::MoveZone(const char *zone_short_name) { - Lua_Safe_Call_Void(); - self->MoveZone(zone_short_name); -} - -void Lua_Client::MoveZoneGroup(const char *zone_short_name) { - Lua_Safe_Call_Void(); - self->MoveZoneGroup(zone_short_name); -} - -void Lua_Client::MoveZoneRaid(const char *zone_short_name) { - Lua_Safe_Call_Void(); - self->MoveZoneRaid(zone_short_name); -} - -void Lua_Client::MoveZoneInstance(uint16 instance_id) { - Lua_Safe_Call_Void(); - self->MoveZoneInstance(instance_id); -} - -void Lua_Client::MoveZoneInstanceGroup(uint16 instance_id) { - Lua_Safe_Call_Void(); - self->MoveZoneInstanceGroup(instance_id); -} - -void Lua_Client::MoveZoneInstanceRaid(uint16 instance_id) { - Lua_Safe_Call_Void(); - self->MoveZoneInstanceRaid(instance_id); -} - void Lua_Client::ChangeLastName(std::string last_name) { Lua_Safe_Call_Void(); self->ChangeLastName(last_name); @@ -2613,6 +2583,96 @@ void Lua_Client::SendMarqueeMessage(uint32 type, uint32 priority, uint32 fade_in self->SendMarqueeMessage(type, priority, fade_in, fade_out, duration, message); } +void Lua_Client::MoveZone(const char *zone_short_name) { + Lua_Safe_Call_Void(); + self->MoveZone(zone_short_name); +} + +void Lua_Client::MoveZone(const char *zone_short_name, float x, float y, float z) { + Lua_Safe_Call_Void(); + self->MoveZone(zone_short_name, glm::vec4(x, y, z, 0.0f)); +} + +void Lua_Client::MoveZone(const char *zone_short_name, float x, float y, float z, float heading) { + Lua_Safe_Call_Void(); + self->MoveZone(zone_short_name, glm::vec4(x, y, z, heading)); +} + +void Lua_Client::MoveZoneGroup(const char *zone_short_name) { + Lua_Safe_Call_Void(); + self->MoveZoneGroup(zone_short_name); +} + +void Lua_Client::MoveZoneGroup(const char *zone_short_name, float x, float y, float z) { + Lua_Safe_Call_Void(); + self->MoveZoneGroup(zone_short_name, glm::vec4(x, y, z, 0.0f)); +} + +void Lua_Client::MoveZoneGroup(const char *zone_short_name, float x, float y, float z, float heading) { + Lua_Safe_Call_Void(); + self->MoveZoneGroup(zone_short_name, glm::vec4(x, y, z, heading)); +} + +void Lua_Client::MoveZoneRaid(const char *zone_short_name) { + Lua_Safe_Call_Void(); + self->MoveZoneRaid(zone_short_name); +} + +void Lua_Client::MoveZoneRaid(const char *zone_short_name, float x, float y, float z) { + Lua_Safe_Call_Void(); + self->MoveZoneRaid(zone_short_name, glm::vec4(x, y, z, 0.0f)); +} + +void Lua_Client::MoveZoneRaid(const char *zone_short_name, float x, float y, float z, float heading) { + Lua_Safe_Call_Void(); + self->MoveZoneRaid(zone_short_name, glm::vec4(x, y, z, heading)); +} + +void Lua_Client::MoveZoneInstance(uint16 instance_id) { + Lua_Safe_Call_Void(); + self->MoveZoneInstance(instance_id); +} + +void Lua_Client::MoveZoneInstance(uint16 instance_id, float x, float y, float z) { + Lua_Safe_Call_Void(); + self->MoveZoneInstance(instance_id, glm::vec4(x, y, z, 0.0f)); +} + +void Lua_Client::MoveZoneInstance(uint16 instance_id, float x, float y, float z, float heading) { + Lua_Safe_Call_Void(); + self->MoveZoneInstance(instance_id, glm::vec4(x, y, z, heading)); +} + +void Lua_Client::MoveZoneInstanceGroup(uint16 instance_id) { + Lua_Safe_Call_Void(); + self->MoveZoneInstanceGroup(instance_id); +} + +void Lua_Client::MoveZoneInstanceGroup(uint16 instance_id, float x, float y, float z) { + Lua_Safe_Call_Void(); + self->MoveZoneInstanceGroup(instance_id, glm::vec4(x, y, z, 0.0f)); +} + +void Lua_Client::MoveZoneInstanceGroup(uint16 instance_id, float x, float y, float z, float heading) { + Lua_Safe_Call_Void(); + self->MoveZoneInstanceGroup(instance_id, glm::vec4(x, y, z, heading)); +} + +void Lua_Client::MoveZoneInstanceRaid(uint16 instance_id) { + Lua_Safe_Call_Void(); + self->MoveZoneInstanceRaid(instance_id); +} + +void Lua_Client::MoveZoneInstanceRaid(uint16 instance_id, float x, float y, float z) { + Lua_Safe_Call_Void(); + self->MoveZoneInstanceRaid(instance_id, glm::vec4(x, y, z, 0.0f)); +} + +void Lua_Client::MoveZoneInstanceRaid(uint16 instance_id, float x, float y, float z, float heading) { + Lua_Safe_Call_Void(); + self->MoveZoneInstanceRaid(instance_id, glm::vec4(x, y, z, heading)); +} + void Lua_Client::ApplySpell(int spell_id) { Lua_Safe_Call_Void(); self->ApplySpell(spell_id); @@ -3136,11 +3196,23 @@ luabind::scope lua_register_client() { .def("MovePCDynamicZone", (void(Lua_Client::*)(uint32, int, bool))&Lua_Client::MovePCDynamicZone) .def("MovePCInstance", (void(Lua_Client::*)(int,int,float,float,float,float))&Lua_Client::MovePCInstance) .def("MoveZone", (void(Lua_Client::*)(const char*))&Lua_Client::MoveZone) + .def("MoveZone", (void(Lua_Client::*)(const char*,float,float,float))&Lua_Client::MoveZone) + .def("MoveZone", (void(Lua_Client::*)(const char*,float,float,float,float))&Lua_Client::MoveZone) .def("MoveZoneGroup", (void(Lua_Client::*)(const char*))&Lua_Client::MoveZoneGroup) + .def("MoveZoneGroup", (void(Lua_Client::*)(const char*,float,float,float))&Lua_Client::MoveZoneGroup) + .def("MoveZoneGroup", (void(Lua_Client::*)(const char*,float,float,float,float))&Lua_Client::MoveZoneGroup) .def("MoveZoneInstance", (void(Lua_Client::*)(uint16))&Lua_Client::MoveZoneInstance) + .def("MoveZoneInstance", (void(Lua_Client::*)(uint16,float,float,float))&Lua_Client::MoveZoneInstance) + .def("MoveZoneInstance", (void(Lua_Client::*)(uint16,float,float,float,float))&Lua_Client::MoveZoneInstance) .def("MoveZoneInstanceGroup", (void(Lua_Client::*)(uint16))&Lua_Client::MoveZoneInstanceGroup) + .def("MoveZoneInstanceGroup", (void(Lua_Client::*)(uint16,float,float,float))&Lua_Client::MoveZoneInstanceGroup) + .def("MoveZoneInstanceGroup", (void(Lua_Client::*)(uint16,float,float,float,float))&Lua_Client::MoveZoneInstanceGroup) .def("MoveZoneInstanceRaid", (void(Lua_Client::*)(uint16))&Lua_Client::MoveZoneInstanceRaid) + .def("MoveZoneInstanceRaid", (void(Lua_Client::*)(uint16,float,float,float))&Lua_Client::MoveZoneInstanceRaid) + .def("MoveZoneInstanceRaid", (void(Lua_Client::*)(uint16,float,float,float,float))&Lua_Client::MoveZoneInstanceRaid) .def("MoveZoneRaid", (void(Lua_Client::*)(const char*))&Lua_Client::MoveZoneRaid) + .def("MoveZoneRaid", (void(Lua_Client::*)(const char*,float,float,float))&Lua_Client::MoveZoneRaid) + .def("MoveZoneRaid", (void(Lua_Client::*)(const char*,float,float,float,float))&Lua_Client::MoveZoneRaid) .def("NotifyNewTitlesAvailable", (void(Lua_Client::*)(void))&Lua_Client::NotifyNewTitlesAvailable) .def("NukeItem", (void(Lua_Client::*)(uint32))&Lua_Client::NukeItem) .def("NukeItem", (void(Lua_Client::*)(uint32,int))&Lua_Client::NukeItem) diff --git a/zone/lua_client.h b/zone/lua_client.h index e3e09c894..3ad9f1a7b 100644 --- a/zone/lua_client.h +++ b/zone/lua_client.h @@ -117,11 +117,23 @@ public: void MovePC(int zone, float x, float y, float z, float heading); void MovePCInstance(int zone, int instance, float x, float y, float z, float heading); void MoveZone(const char *zone_short_name); + void MoveZone(const char *zone_short_name, float x, float y, float z); + void MoveZone(const char *zone_short_name, float x, float y, float z, float heading); void MoveZoneGroup(const char *zone_short_name); + void MoveZoneGroup(const char *zone_short_name, float x, float y, float z); + void MoveZoneGroup(const char *zone_short_name, float x, float y, float z, float heading); void MoveZoneRaid(const char *zone_short_name); + void MoveZoneRaid(const char *zone_short_name, float x, float y, float z); + void MoveZoneRaid(const char *zone_short_name, float x, float y, float z, float heading); void MoveZoneInstance(uint16 instance_id); + void MoveZoneInstance(uint16 instance_id, float x, float y, float z); + void MoveZoneInstance(uint16 instance_id, float x, float y, float z, float heading); void MoveZoneInstanceGroup(uint16 instance_id); + void MoveZoneInstanceGroup(uint16 instance_id, float x, float y, float z); + void MoveZoneInstanceGroup(uint16 instance_id, float x, float y, float z, float heading); void MoveZoneInstanceRaid(uint16 instance_id); + void MoveZoneInstanceRaid(uint16 instance_id, float x, float y, float z); + void MoveZoneInstanceRaid(uint16 instance_id, float x, float y, float z, float heading); bool TeleportToPlayerByCharID(uint32 character_id); bool TeleportToPlayerByName(std::string player_name); bool TeleportGroupToPlayerByCharID(uint32 character_id); diff --git a/zone/perl_client.cpp b/zone/perl_client.cpp index 43115b966..d2be96a46 100644 --- a/zone/perl_client.cpp +++ b/zone/perl_client.cpp @@ -339,36 +339,6 @@ void Perl_Client_MovePCInstance(Client* self, uint32 zone_id, uint32 instance_id self->MovePC(zone_id, instance_id, x, y, z, heading); } -void Perl_Client_MoveZone(Client* self, const char* zone_short_name) // @categories Script Utility -{ - self->MoveZone(zone_short_name); -} - -void Perl_Client_MoveZoneGroup(Client* self, const char* zone_short_name) // @categories Script Utility, Group -{ - self->MoveZoneGroup(zone_short_name); -} - -void Perl_Client_MoveZoneRaid(Client* self, const char* zone_short_name) // @categories Script Utility, Raid -{ - self->MoveZoneRaid(zone_short_name); -} - -void Perl_Client_MoveZoneInstance(Client* self, uint16 instance_id) // @categories Adventures and Expeditions, Script Utility -{ - self->MoveZoneInstance(instance_id); -} - -void Perl_Client_MoveZoneInstanceGroup(Client* self, uint16 instance_id) // @categories Adventures and Expeditions, Script Utility, Group -{ - self->MoveZoneInstanceGroup(instance_id); -} - -void Perl_Client_MoveZoneInstanceRaid(Client* self, uint16 instance_id) // @categories Adventures and Expeditions, Script Utility, Raid -{ - self->MoveZoneInstanceRaid(instance_id); -} - void Perl_Client_ChangeLastName(Client* self, std::string last_name) // @categories Account and Character { self->ChangeLastName(last_name); @@ -2506,6 +2476,96 @@ void Perl_Client_SendMarqueeMessage(Client* self, uint32 type, uint32 priority, self->SendMarqueeMessage(type, priority, fade_in, fade_out, duration, message); } +void Perl_Client_MoveZone(Client* self, const char* zone_short_name) // @categories Script Utility +{ + self->MoveZone(zone_short_name); +} + +void Perl_Client_MoveZone(Client* self, const char* zone_short_name, float x, float y, float z) // @categories Script Utility +{ + self->MoveZone(zone_short_name, glm::vec4(x, y, z, 0.0f)); +} + +void Perl_Client_MoveZone(Client* self, const char* zone_short_name, float x, float y, float z, float heading) // @categories Script Utility +{ + self->MoveZone(zone_short_name, glm::vec4(x, y, z, heading)); +} + +void Perl_Client_MoveZoneGroup(Client* self, const char* zone_short_name) // @categories Script Utility, Group +{ + self->MoveZoneGroup(zone_short_name); +} + +void Perl_Client_MoveZoneGroup(Client* self, const char* zone_short_name, float x, float y, float z) // @categories Script Utility +{ + self->MoveZoneGroup(zone_short_name, glm::vec4(x, y, z, 0.0f)); +} + +void Perl_Client_MoveZoneGroup(Client* self, const char* zone_short_name, float x, float y, float z, float heading) // @categories Script Utility +{ + self->MoveZoneGroup(zone_short_name, glm::vec4(x, y, z, heading)); +} + +void Perl_Client_MoveZoneRaid(Client* self, const char* zone_short_name) // @categories Script Utility, Raid +{ + self->MoveZoneRaid(zone_short_name); +} + +void Perl_Client_MoveZoneRaid(Client* self, const char* zone_short_name, float x, float y, float z) // @categories Script Utility +{ + self->MoveZoneRaid(zone_short_name, glm::vec4(x, y, z, 0.0f)); +} + +void Perl_Client_MoveZoneRaid(Client* self, const char* zone_short_name, float x, float y, float z, float heading) // @categories Script Utility +{ + self->MoveZoneRaid(zone_short_name, glm::vec4(x, y, z, heading)); +} + +void Perl_Client_MoveZoneInstance(Client* self, uint16 instance_id) // @categories Adventures and Expeditions, Script Utility +{ + self->MoveZoneInstance(instance_id); +} + +void Perl_Client_MoveZoneInstance(Client* self, uint16 instance_id, float x, float y, float z) // @categories Adventures and Expeditions, Script Utility +{ + self->MoveZoneInstance(instance_id, glm::vec4(x, y, z, 0.0f)); +} + +void Perl_Client_MoveZoneInstance(Client* self, uint16 instance_id, float x, float y, float z, float heading) // @categories Adventures and Expeditions, Script Utility +{ + self->MoveZoneInstance(instance_id, glm::vec4(x, y, z, heading)); +} + +void Perl_Client_MoveZoneInstanceGroup(Client* self, uint16 instance_id) // @categories Adventures and Expeditions, Script Utility, Group +{ + self->MoveZoneInstanceGroup(instance_id); +} + +void Perl_Client_MoveZoneInstanceGroup(Client* self, uint16 instance_id, float x, float y, float z) // @categories Adventures and Expeditions, Script Utility +{ + self->MoveZoneInstanceGroup(instance_id, glm::vec4(x, y, z, 0.0f)); +} + +void Perl_Client_MoveZoneInstanceGroup(Client* self, uint16 instance_id, float x, float y, float z, float heading) // @categories Adventures and Expeditions, Script Utility +{ + self->MoveZoneInstanceGroup(instance_id, glm::vec4(x, y, z, heading)); +} + +void Perl_Client_MoveZoneInstanceRaid(Client* self, uint16 instance_id) // @categories Adventures and Expeditions, Script Utility, Raid +{ + self->MoveZoneInstanceRaid(instance_id); +} + +void Perl_Client_MoveZoneInstanceRaid(Client* self, uint16 instance_id, float x, float y, float z) // @categories Adventures and Expeditions, Script Utility +{ + self->MoveZoneInstanceRaid(instance_id, glm::vec4(x, y, z, 0.0f)); +} + +void Perl_Client_MoveZoneInstanceRaid(Client* self, uint16 instance_id, float x, float y, float z, float heading) // @categories Adventures and Expeditions, Script Utility +{ + self->MoveZoneInstanceRaid(instance_id, glm::vec4(x, y, z, heading)); +} + void Perl_Client_ApplySpell(Client* self, int spell_id) { self->ApplySpell(spell_id); @@ -3009,12 +3069,24 @@ void perl_register_client() package.add("MovePCDynamicZone", (void(*)(Client*, perl::scalar, int))&Perl_Client_MovePCDynamicZone); package.add("MovePCDynamicZone", (void(*)(Client*, perl::scalar, int, bool))&Perl_Client_MovePCDynamicZone); package.add("MovePCInstance", &Perl_Client_MovePCInstance); - package.add("MoveZone", &Perl_Client_MoveZone); - package.add("MoveZoneGroup", &Perl_Client_MoveZoneGroup); - package.add("MoveZoneInstance", &Perl_Client_MoveZoneInstance); - package.add("MoveZoneInstanceGroup", &Perl_Client_MoveZoneInstanceGroup); - package.add("MoveZoneInstanceRaid", &Perl_Client_MoveZoneInstanceRaid); - package.add("MoveZoneRaid", &Perl_Client_MoveZoneRaid); + package.add("MoveZone", (void(*)(Client*, const char*))&Perl_Client_MoveZone); + package.add("MoveZone", (void(*)(Client*, const char*, float, float, float))&Perl_Client_MoveZone); + package.add("MoveZone", (void(*)(Client*, const char*, float, float, float, float))&Perl_Client_MoveZone); + package.add("MoveZoneGroup", (void(*)(Client*, const char*))&Perl_Client_MoveZoneGroup); + package.add("MoveZoneGroup", (void(*)(Client*, const char*, float, float, float))&Perl_Client_MoveZoneGroup); + package.add("MoveZoneGroup", (void(*)(Client*, const char*, float, float, float, float))&Perl_Client_MoveZoneGroup); + package.add("MoveZoneInstance", (void(*)(Client*, uint16))&Perl_Client_MoveZoneInstance); + package.add("MoveZoneInstance", (void(*)(Client*, uint16, float, float, float))&Perl_Client_MoveZoneInstance); + package.add("MoveZoneInstance", (void(*)(Client*, uint16, float, float, float, float))&Perl_Client_MoveZoneInstance); + package.add("MoveZoneInstanceGroup", (void(*)(Client*, uint16))&Perl_Client_MoveZoneInstanceGroup); + package.add("MoveZoneInstanceGroup", (void(*)(Client*, uint16, float, float, float))&Perl_Client_MoveZoneInstanceGroup); + package.add("MoveZoneInstanceGroup", (void(*)(Client*, uint16, float, float, float, float))&Perl_Client_MoveZoneInstanceGroup); + package.add("MoveZoneInstanceRaid", (void(*)(Client*, uint16))&Perl_Client_MoveZoneInstanceRaid); + package.add("MoveZoneInstanceRaid", (void(*)(Client*, uint16, float, float, float))&Perl_Client_MoveZoneInstanceRaid); + package.add("MoveZoneInstanceRaid", (void(*)(Client*, uint16, float, float, float, float))&Perl_Client_MoveZoneInstanceRaid); + package.add("MoveZoneRaid", (void(*)(Client*, const char*))&Perl_Client_MoveZoneRaid); + package.add("MoveZoneRaid", (void(*)(Client*, const char*, float, float, float))&Perl_Client_MoveZoneRaid); + package.add("MoveZoneRaid", (void(*)(Client*, const char*, float, float, float, float))&Perl_Client_MoveZoneRaid); package.add("NPCSpawn", (void(*)(Client*, NPC*, const char*))&Perl_Client_NPCSpawn); package.add("NPCSpawn", (void(*)(Client*, NPC*, const char*, uint32))&Perl_Client_NPCSpawn); package.add("NotifyNewTitlesAvailable", &Perl_Client_NotifyNewTitlesAvailable); diff --git a/zone/zoning.cpp b/zone/zoning.cpp index e0b25d899..bce47af36 100644 --- a/zone/zoning.cpp +++ b/zone/zoning.cpp @@ -512,68 +512,69 @@ void Client::MovePC(uint32 zoneID, uint32 instanceID, float x, float y, float z, ProcessMovePC(zoneID, instanceID, x, y, z, heading, ignorerestrictions, zm); } -void Client::MoveZone(const char *zone_short_name) { - ProcessMovePC(ZoneID(zone_short_name), 0, 0.0f, 0.0f, 0.0f, 0.0f, 3, ZoneToSafeCoords); +void Client::MoveZone(const char *zone_short_name, const glm::vec4 &location) { + ProcessMovePC(ZoneID(zone_short_name), 0, location.x, location.y, location.z, location.w, 3, ZoneToSafeCoords); } -void Client::MoveZoneGroup(const char *zone_short_name) { +void Client::MoveZoneGroup(const char *zone_short_name, const glm::vec4 &location) { if (!GetGroup()) { - MoveZone(zone_short_name); + MoveZone(zone_short_name, location); } else { auto client_group = GetGroup(); for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { auto group_member = client_group->members[member_index]->CastToClient(); - group_member->MoveZone(zone_short_name); + group_member->MoveZone(zone_short_name, location); } } } } -void Client::MoveZoneRaid(const char *zone_short_name) { +void Client::MoveZoneRaid(const char *zone_short_name, const glm::vec4 &location) { if (!GetRaid()) { - MoveZone(zone_short_name); + MoveZone(zone_short_name, location); } else { auto client_raid = GetRaid(); for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { auto raid_member = client_raid->members[member_index].member->CastToClient(); - raid_member->MoveZone(zone_short_name); + raid_member->MoveZone(zone_short_name, location); } } } } -void Client::MoveZoneInstance(uint16 instance_id) { +void Client::MoveZoneInstance(uint16 instance_id, const glm::vec4 &location) { if (!database.CharacterInInstanceGroup(instance_id, CharacterID())) { database.AddClientToInstance(instance_id, CharacterID()); } - ProcessMovePC(database.ZoneIDFromInstanceID(instance_id), instance_id, 0.0f, 0.0f, 0.0f, 0.0f, 3, ZoneToSafeCoords); + + ProcessMovePC(database.ZoneIDFromInstanceID(instance_id), instance_id, location.x, location.y, location.z, location.w, 3, ZoneToSafeCoords); } -void Client::MoveZoneInstanceGroup(uint16 instance_id) { +void Client::MoveZoneInstanceGroup(uint16 instance_id, const glm::vec4 &location) { if (!GetGroup()) { - MoveZoneInstance(instance_id); + MoveZoneInstance(instance_id, location); } else { auto client_group = GetGroup(); for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { auto group_member = client_group->members[member_index]->CastToClient(); - group_member->MoveZoneInstance(instance_id); + group_member->MoveZoneInstance(instance_id, location); } } } } -void Client::MoveZoneInstanceRaid(uint16 instance_id) { +void Client::MoveZoneInstanceRaid(uint16 instance_id, const glm::vec4 &location) { if (!GetRaid()) { - MoveZoneInstance(instance_id); + MoveZoneInstance(instance_id, location); } else { auto client_raid = GetRaid(); for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { auto raid_member = client_raid->members[member_index].member->CastToClient(); - raid_member->MoveZoneInstance(instance_id); + raid_member->MoveZoneInstance(instance_id, location); } } }