[Quest API] Add XYZ/XYZH Overloads to Cross Zone Move Methods (#3581)

# Perl
- Add `quest::crosszonemoveplayerbycharid(character_id, zone_short_name, x, y, z)`.
- Add `quest::crosszonemoveplayerbycharid(character_id, zone_short_name, x, y, z, heading)`.
- Add `quest::crosszonemoveplayerbygroupid(group_id, zone_short_name, x, y, z)`.
- Add `quest::crosszonemoveplayerbygroupid(group_id, zone_short_name, x, y, z, heading)`.
- Add `quest::crosszonemoveplayerbyraidid(raid_id, zone_short_name, x, y, z)`.
- Add `quest::crosszonemoveplayerbyraidid(raid_id, zone_short_name, x, y, z, heading)`.
- Add `quest::crosszonemoveplayerbyguildid(guild_id, zone_short_name, x, y, z)`.
- Add `quest::crosszonemoveplayerbyguildid(guild_id, zone_short_name, x, y, z, heading)`.
- Add `quest::crosszonemoveplayerbyexpeditionid(expedition_id, zone_short_name, x, y, z)`.
- Add `quest::crosszonemoveplayerbyexpeditionid(expedition_id, zone_short_name, x, y, z, heading)`.
- Add `quest::crosszonemoveplayerbyclientname(client_name, zone_short_name, x, y, z)`.
- Add `quest::crosszonemoveplayerbyclientname(client_name, zone_short_name, x, y, z, heading)`.
- Add `quest::crosszonemoveinstancebycharid(character_id, zone_short_name, x, y, z)`.
- Add `quest::crosszonemoveinstancebycharid(character_id, zone_short_name, x, y, z, heading)`.
- Add `quest::crosszonemoveinstancebygroupid(group_id, zone_short_name, x, y, z)`.
- Add `quest::crosszonemoveinstancebygroupid(group_id, zone_short_name, x, y, z, heading)`.
- Add `quest::crosszonemoveinstancebyraidid(raid_id, zone_short_name, x, y, z)`.
- Add `quest::crosszonemoveinstancebyraidid(raid_id, zone_short_name, x, y, z, heading)`.
- Add `quest::crosszonemoveinstancebyguildid(guild_id, zone_short_name, x, y, z)`.
- Add `quest::crosszonemoveinstancebyguildid(guild_id, zone_short_name, x, y, z, heading)`.
- Add `quest::crosszonemoveinstancebyexpeditionid(expedition_id, zone_short_name, x, y, z)`.
- Add `quest::crosszonemoveinstancebyexpeditionid(expedition_id, zone_short_name, x, y, z, heading)`.
- Add `quest::crosszonemoveinstancebyclientname(client_name, zone_short_name, x, y, z)`.
- Add `quest::crosszonemoveinstancebyclientname(client_name, zone_short_name, x, y, z, heading)`.

# Lua
- Add `eq.cross_zone_move_player_by_char_id(character_id, zone_short_name, x, y, z)`.
- Add `eq.cross_zone_move_player_by_char_id(character_id, zone_short_name, x, y, z, heading)`.
- Add `eq.cross_zone_move_player_by_group_id(group_id, zone_short_name, x, y, z)`.
- Add `eq.cross_zone_move_player_by_group_id(group_id, zone_short_name, x, y, z, heading)`.
- Add `eq.cross_zone_move_player_by_raid_id(raid_id, zone_short_name, x, y, z)`.
- Add `eq.cross_zone_move_player_by_raid_id(raid_id, zone_short_name, x, y, z, heading)`.
- Add `eq.cross_zone_move_player_by_guild_id(guild_id, zone_short_name, x, y, z)`.
- Add `eq.cross_zone_move_player_by_guild_id(guild_id, zone_short_name, x, y, z, heading)`.
- Add `eq.cross_zone_move_player_by_expedition_id(expedition_id, zone_short_name, x, y, z)`.
- Add `eq.cross_zone_move_player_by_expedition_id(expedition_id, zone_short_name, x, y, z, heading)`.
- Add `eq.cross_zone_move_player_by_client_name(client_name, zone_short_name, x, y, z)`.
- Add `eq.cross_zone_move_player_by_client_name(client_name, zone_short_name, x, y, z, heading)`.
- Add `eq.cross_zone_move_instance_by_char_id(character_id, zone_short_name, x, y, z)`.
- Add `eq.cross_zone_move_instance_by_char_id(character_id, zone_short_name, x, y, z, heading)`.
- Add `eq.cross_zone_move_instance_by_group_id(group_id, zone_short_name, x, y, z)`.
- Add `eq.cross_zone_move_instance_by_group_id(group_id, zone_short_name, x, y, z, heading)`.
- Add `eq.cross_zone_move_instance_by_raid_id(raid_id, zone_short_name, x, y, z)`.
- Add `eq.cross_zone_move_instance_by_raid_id(raid_id, zone_short_name, x, y, z, heading)`.
- Add `eq.cross_zone_move_instance_by_guild_id(guild_id, zone_short_name, x, y, z)`.
- Add `eq.cross_zone_move_instance_by_guild_id(guild_id, zone_short_name, x, y, z, heading)`.
- Add `eq.cross_zone_move_instance_by_expedition_id(expedition_id, zone_short_name, x, y, z)`.
- Add `eq.cross_zone_move_instance_by_expedition_id(expedition_id, zone_short_name, x, y, z, heading)`.
- Add `eq.cross_zone_move_instance_by_client_name(client_name, zone_short_name, x, y, z)`.
- Add `eq.cross_zone_move_instance_by_client_name(client_name, zone_short_name, x, y, z, heading)`.

# Notes
- Allows operators to send players to specific coordinates across zones instead of always sending to safe coordinates.
This commit is contained in:
Alex King 2023-09-17 14:16:25 -04:00 committed by GitHub
parent 06337fe762
commit f2f0228aa4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 1121 additions and 278 deletions

View File

@ -10,6 +10,7 @@
#include <cereal/types/chrono.hpp>
#include <cereal/types/string.hpp>
#include <cereal/types/vector.hpp>
#include <glm/vec4.hpp>
#define SERVER_TIMEOUT 45000 // how often keepalive gets sent
#define INTERSERVER_TIMER 10000
@ -1521,12 +1522,13 @@ struct CZMessage_Struct {
};
struct CZMove_Struct {
std::string client_name = std::string(); // Only used by Character Name Type, else empty
glm::vec4 coordinates = glm::vec4(0.f); // XYZ or XYZH, heading is optional, defaults to 0.
uint16 instance_id = 0; // Only used by Move Zone Instance, else 0
uint32 update_identifier = 0; // Character ID, Group ID, Raid ID, Guild ID, or Expedition ID based on update type, 0 for Character Name
uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name
uint8 update_subtype; // 0 - Move Zone, 1 - Move Zone Instance
int update_identifier; // Character ID, Group ID, Raid ID, Guild ID, or Expedition ID based on update type, 0 for Character Name
uint16 instance_id; // Only used by Move Zone Instance, else 0
char zone_short_name[32]; // Only by with Move Zone, else empty
char client_name[64]; // Only used by Character Name Type, else empty
std::string zone_short_name = std::string(); // Only used by Move Zone, else empty
};
struct CZSetEntityVariable_Struct {
@ -1603,6 +1605,7 @@ struct WWMove_Struct {
uint8 max_status;
};
struct WWSetEntityVariable_Struct {
uint8 update_type; // 0 - Character, 1 - NPC
char variable_name[256];

View File

@ -1226,15 +1226,20 @@ void ConsoleCrossZoneMove(
}
auto pack = new ServerPacket(ServerOP_CZMove, sizeof(CZMove_Struct));
auto* CZM = (CZMove_Struct*) pack->pBuffer;
auto m = (CZMove_Struct*) pack->pBuffer;
CZM->update_type = update_type;
CZM->update_subtype = !instance_id ? CZMoveUpdateSubtype_MoveZone : CZMoveUpdateSubtype_MoveZoneInstance;
CZM->update_identifier = update_identifier;
CZM->instance_id = instance_id;
if (!name.empty()) {
m->client_name = name;
}
strn0cpy(CZM->zone_short_name, zone_short_name.c_str(), sizeof(CZM->zone_short_name));
strn0cpy(CZM->client_name, name.c_str(), sizeof(CZM->client_name));
m->instance_id = instance_id;
m->update_identifier = update_identifier;
m->update_type = update_type;
m->update_subtype = !instance_id ? CZMoveUpdateSubtype_MoveZone : CZMoveUpdateSubtype_MoveZoneInstance;
if (!zone_short_name.empty()) {
m->zone_short_name = zone_short_name;
}
zoneserver_list.SendPacket(pack);
safe_delete(pack);

View File

@ -3481,78 +3481,488 @@ void Perl__crosszonemessageplayerbyname(const char* client_name, uint32 type, co
quest_manager.CrossZoneMessage(CZUpdateType_ClientName, update_identifier, type, message, client_name);
}
void Perl__crosszonemoveplayerbycharid(int character_id, const char* zone_short_name)
void Perl__crosszonemoveplayerbycharid(uint32 character_id, std::string zone_short_name)
{
uint16 instance_id = 0;
quest_manager.CrossZoneMove(CZUpdateType_Character, CZMoveUpdateSubtype_MoveZone, character_id, zone_short_name, instance_id);
quest_manager.CrossZoneMove(
CZMove_Struct{
.update_identifier = character_id,
.update_type = CZUpdateType_Character,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveplayerbygroupid(int group_id, const char* zone_short_name)
void Perl__crosszonemoveplayerbycharid(uint32 character_id, std::string zone_short_name, float x, float y, float z)
{
uint16 instance_id = 0;
quest_manager.CrossZoneMove(CZUpdateType_Group, CZMoveUpdateSubtype_MoveZone, group_id, zone_short_name, instance_id);
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.update_identifier = character_id,
.update_type = CZUpdateType_Character,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveplayerbyraidid(int raid_id, const char* zone_short_name)
void Perl__crosszonemoveplayerbycharid(
uint32 character_id,
std::string zone_short_name,
float x,
float y,
float z,
float heading
)
{
uint16 instance_id = 0;
quest_manager.CrossZoneMove(CZUpdateType_Raid, CZMoveUpdateSubtype_MoveZone, raid_id, zone_short_name, instance_id);
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.update_identifier = character_id,
.update_type = CZUpdateType_Character,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveplayerbyguildid(int guild_id, const char* zone_short_name)
void Perl__crosszonemoveplayerbygroupid(uint32 group_id, std::string zone_short_name)
{
uint16 instance_id = 0;
quest_manager.CrossZoneMove(CZUpdateType_Guild, CZMoveUpdateSubtype_MoveZone, guild_id, zone_short_name, instance_id);
quest_manager.CrossZoneMove(
CZMove_Struct{
.update_identifier = group_id,
.update_type = CZUpdateType_Group,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveplayerbyexpeditionid(uint32 expedition_id, const char* zone_short_name)
void Perl__crosszonemoveplayerbygroupid(uint32 group_id, std::string zone_short_name, float x, float y, float z)
{
uint16 instance_id = 0;
quest_manager.CrossZoneMove(CZUpdateType_Expedition, CZMoveUpdateSubtype_MoveZone, expedition_id, zone_short_name, instance_id);
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.update_identifier = group_id,
.update_type = CZUpdateType_Group,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveplayerbyname(const char* client_name, const char* zone_short_name)
void Perl__crosszonemoveplayerbygroupid(
uint32 group_id,
std::string zone_short_name,
float x,
float y,
float z,
float heading
)
{
int update_identifier = 0;
uint16 instance_id = 0;
quest_manager.CrossZoneMove(CZUpdateType_ClientName, CZMoveUpdateSubtype_MoveZone, update_identifier, zone_short_name, instance_id, client_name);
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.update_identifier = group_id,
.update_type = CZUpdateType_Group,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveinstancebycharid(int character_id, uint16 instance_id)
void Perl__crosszonemoveplayerbyraidid(uint32 raid_id, std::string zone_short_name)
{
const char* zone_short_name = "";
quest_manager.CrossZoneMove(CZUpdateType_Character, CZMoveUpdateSubtype_MoveZoneInstance, character_id, zone_short_name, instance_id);
quest_manager.CrossZoneMove(
CZMove_Struct{
.update_identifier = raid_id,
.update_type = CZUpdateType_Raid,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveinstancebygroupid(int group_id, uint16 instance_id)
void Perl__crosszonemoveplayerbyraidid(uint32 raid_id, std::string zone_short_name, float x, float y, float z)
{
const char* zone_short_name = "";
quest_manager.CrossZoneMove(CZUpdateType_Group, CZMoveUpdateSubtype_MoveZoneInstance, group_id, zone_short_name, instance_id);
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.update_identifier = raid_id,
.update_type = CZUpdateType_Raid,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveinstancebyraidid(int raid_id, uint16 instance_id)
void Perl__crosszonemoveplayerbyraidid(uint32 raid_id, std::string zone_short_name, float x, float y, float z, float heading)
{
const char* zone_short_name = "";
quest_manager.CrossZoneMove(CZUpdateType_Raid, CZMoveUpdateSubtype_MoveZoneInstance, raid_id, zone_short_name, instance_id);
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.update_identifier = raid_id,
.update_type = CZUpdateType_Raid,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveinstancebyguildid(int guild_id, uint16 instance_id)
void Perl__crosszonemoveplayerbyguildid(uint32 guild_id, std::string zone_short_name)
{
const char* zone_short_name = "";
quest_manager.CrossZoneMove(CZUpdateType_Guild, CZMoveUpdateSubtype_MoveZoneInstance, guild_id, zone_short_name, instance_id);
quest_manager.CrossZoneMove(
CZMove_Struct{
.update_identifier = guild_id,
.update_type = CZUpdateType_Guild,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveplayerbyguildid(uint32 guild_id, std::string zone_short_name, float x, float y, float z)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.update_identifier = guild_id,
.update_type = CZUpdateType_Guild,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveplayerbyguildid(
uint32 guild_id,
std::string zone_short_name,
float x,
float y,
float z,
float heading
)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.update_identifier = guild_id,
.update_type = CZUpdateType_Guild,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveplayerbyexpeditionid(uint32 expedition_id, std::string zone_short_name)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.update_identifier = expedition_id,
.update_type = CZUpdateType_Expedition,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveplayerbyexpeditionid(uint32 expedition_id, std::string zone_short_name, float x, float y, float z)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.update_identifier = expedition_id,
.update_type = CZUpdateType_Expedition,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveplayerbyexpeditionid(
uint32 expedition_id,
std::string zone_short_name,
float x,
float y,
float z,
float heading
)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.update_identifier = expedition_id,
.update_type = CZUpdateType_Expedition,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveplayerbyname(std::string client_name, std::string zone_short_name)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.client_name = client_name,
.update_type = CZUpdateType_ClientName,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveplayerbyname(std::string client_name, std::string zone_short_name, float x, float y, float z)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.client_name = client_name,
.coordinates = glm::vec4(x, y, z, 0.0f),
.update_type = CZUpdateType_ClientName,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveplayerbyname(std::string client_name, std::string zone_short_name, float x, float y, float z, float heading)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.client_name = client_name,
.coordinates = glm::vec4(x, y, z, heading),
.update_type = CZUpdateType_ClientName,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void Perl__crosszonemoveinstancebycharid(uint32 character_id, uint16 instance_id)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.instance_id = instance_id,
.update_identifier = character_id,
.update_type = CZUpdateType_Character,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebycharid(uint32 character_id, uint16 instance_id, float x, float y, float z)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.instance_id = instance_id,
.update_identifier = character_id,
.update_type = CZUpdateType_Character,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebycharid(uint32 character_id, uint16 instance_id, float x, float y, float z, float heading)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.instance_id = instance_id,
.update_identifier = character_id,
.update_type = CZUpdateType_Character,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebygroupid(uint32 group_id, uint16 instance_id)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.instance_id = instance_id,
.update_identifier = group_id,
.update_type = CZUpdateType_Group,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebygroupid(uint32 group_id, uint16 instance_id, float x, float y, float z)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.instance_id = instance_id,
.update_identifier = group_id,
.update_type = CZUpdateType_Group,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebygroupid(uint32 group_id, uint16 instance_id, float x, float y, float z, float heading)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.instance_id = instance_id,
.update_identifier = group_id,
.update_type = CZUpdateType_Group,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebyraidid(uint32 raid_id, uint16 instance_id)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.instance_id = instance_id,
.update_identifier = raid_id,
.update_type = CZUpdateType_Raid,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebyraidid(uint32 raid_id, uint16 instance_id, float x, float y, float z)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.instance_id = instance_id,
.update_identifier = raid_id,
.update_type = CZUpdateType_Raid,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebyraidid(uint32 raid_id, uint16 instance_id, float x, float y, float z, float heading)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.instance_id = instance_id,
.update_identifier = raid_id,
.update_type = CZUpdateType_Raid,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebyguildid(uint32 guild_id, uint16 instance_id)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.instance_id = instance_id,
.update_identifier = guild_id,
.update_type = CZUpdateType_Guild,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebyguildid(uint32 guild_id, uint16 instance_id, float x, float y, float z)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.instance_id = instance_id,
.update_identifier = guild_id,
.update_type = CZUpdateType_Guild,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebyguildid(uint32 guild_id, uint16 instance_id, float x, float y, float z, float heading)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.instance_id = instance_id,
.update_identifier = guild_id,
.update_type = CZUpdateType_Guild,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebyexpeditionid(uint32 expedition_id, uint16 instance_id)
{
const char* zone_short_name = "";
quest_manager.CrossZoneMove(CZUpdateType_Expedition, CZMoveUpdateSubtype_MoveZoneInstance, expedition_id, zone_short_name, instance_id);
quest_manager.CrossZoneMove(
CZMove_Struct{
.instance_id = instance_id,
.update_identifier = expedition_id,
.update_type = CZUpdateType_Expedition,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebyclientname(const char* client_name, uint16 instance_id)
void Perl__crosszonemoveinstancebyexpeditionid(uint32 expedition_id, uint16 instance_id, float x, float y, float z)
{
int update_identifier = 0;
const char* zone_short_name = "";
quest_manager.CrossZoneMove(CZUpdateType_ClientName, CZMoveUpdateSubtype_MoveZoneInstance, update_identifier, zone_short_name, instance_id, client_name);
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.instance_id = instance_id,
.update_identifier = expedition_id,
.update_type = CZUpdateType_Expedition,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebyexpeditionid(uint32 expedition_id, uint16 instance_id, float x, float y, float z, float heading)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.instance_id = instance_id,
.update_identifier = expedition_id,
.update_type = CZUpdateType_Expedition,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebyclientname(std::string client_name, uint16 instance_id)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.client_name = client_name,
.instance_id = instance_id,
.update_type = CZUpdateType_ClientName,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebyclientname(std::string client_name, uint16 instance_id, float x, float y, float z)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.client_name = client_name,
.coordinates = glm::vec4(x, y, z, 0.0f),
.instance_id = instance_id,
.update_type = CZUpdateType_ClientName,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszonemoveinstancebyclientname(std::string client_name, uint16 instance_id, float x, float y, float z, float heading)
{
quest_manager.CrossZoneMove(
CZMove_Struct{
.client_name = client_name,
.coordinates = glm::vec4(x, y, z, heading),
.instance_id = instance_id,
.update_type = CZUpdateType_ClientName,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void Perl__crosszoneremoveldonlossbycharid(int character_id, uint32 theme_id)
@ -5762,18 +6172,42 @@ void perl_register_quest()
package.add("crosszonemessageplayerbyguildid", &Perl__crosszonemessageplayerbyguildid);
package.add("crosszonemessageplayerbyexpeditionid", &Perl__crosszonemessageplayerbyexpeditionid);
package.add("crosszonemessageplayerbyname", &Perl__crosszonemessageplayerbyname);
package.add("crosszonemoveplayerbycharid", &Perl__crosszonemoveplayerbycharid);
package.add("crosszonemoveplayerbygroupid", &Perl__crosszonemoveplayerbygroupid);
package.add("crosszonemoveplayerbyraidid", &Perl__crosszonemoveplayerbyraidid);
package.add("crosszonemoveplayerbyguildid", &Perl__crosszonemoveplayerbyguildid);
package.add("crosszonemoveplayerbyexpeditionid", &Perl__crosszonemoveplayerbyexpeditionid);
package.add("crosszonemoveplayerbyname", &Perl__crosszonemoveplayerbyname);
package.add("crosszonemoveinstancebycharid", &Perl__crosszonemoveinstancebycharid);
package.add("crosszonemoveinstancebygroupid", &Perl__crosszonemoveinstancebygroupid);
package.add("crosszonemoveinstancebyraidid", &Perl__crosszonemoveinstancebyraidid);
package.add("crosszonemoveinstancebyguildid", &Perl__crosszonemoveinstancebyguildid);
package.add("crosszonemoveinstancebyexpeditionid", &Perl__crosszonemoveinstancebyexpeditionid);
package.add("crosszonemoveinstancebyclientname", &Perl__crosszonemoveinstancebyclientname);
package.add("crosszonemoveplayerbycharid", (void(*)(uint32, std::string))&Perl__crosszonemoveplayerbycharid);
package.add("crosszonemoveplayerbycharid", (void(*)(uint32, std::string, float, float, float))&Perl__crosszonemoveplayerbycharid);
package.add("crosszonemoveplayerbycharid", (void(*)(uint32, std::string, float, float, float, float))&Perl__crosszonemoveplayerbycharid);
package.add("crosszonemoveplayerbygroupid", (void(*)(uint32, std::string))&Perl__crosszonemoveplayerbygroupid);
package.add("crosszonemoveplayerbygroupid", (void(*)(uint32, std::string, float, float, float))&Perl__crosszonemoveplayerbygroupid);
package.add("crosszonemoveplayerbygroupid", (void(*)(uint32, std::string, float, float, float, float))&Perl__crosszonemoveplayerbygroupid);
package.add("crosszonemoveplayerbyraidid", (void(*)(uint32, std::string))&Perl__crosszonemoveplayerbyraidid);
package.add("crosszonemoveplayerbyraidid", (void(*)(uint32, std::string, float, float, float))&Perl__crosszonemoveplayerbyraidid);
package.add("crosszonemoveplayerbyraidid", (void(*)(uint32, std::string, float, float, float, float))&Perl__crosszonemoveplayerbyraidid);
package.add("crosszonemoveplayerbyguildid", (void(*)(uint32, std::string))&Perl__crosszonemoveplayerbyguildid);
package.add("crosszonemoveplayerbyguildid", (void(*)(uint32, std::string, float, float, float))&Perl__crosszonemoveplayerbyguildid);
package.add("crosszonemoveplayerbyguildid", (void(*)(uint32, std::string, float, float, float, float))&Perl__crosszonemoveplayerbyguildid);
package.add("crosszonemoveplayerbyexpeditionid", (void(*)(uint32, std::string))&Perl__crosszonemoveplayerbyexpeditionid);
package.add("crosszonemoveplayerbyexpeditionid", (void(*)(uint32, std::string, float, float, float))&Perl__crosszonemoveplayerbyexpeditionid);
package.add("crosszonemoveplayerbyexpeditionid", (void(*)(uint32, std::string, float, float, float, float))&Perl__crosszonemoveplayerbyexpeditionid);
package.add("crosszonemoveplayerbyname", (void(*)(std::string, std::string))&Perl__crosszonemoveplayerbyname);
package.add("crosszonemoveplayerbyname", (void(*)(std::string, std::string, float, float, float))&Perl__crosszonemoveplayerbyname);
package.add("crosszonemoveplayerbyname", (void(*)(std::string, std::string, float, float, float, float))&Perl__crosszonemoveplayerbyname);
package.add("crosszonemoveinstancebycharid", (void(*)(uint32, uint16))&Perl__crosszonemoveinstancebycharid);
package.add("crosszonemoveinstancebycharid", (void(*)(uint32, uint16, float, float, float))&Perl__crosszonemoveinstancebycharid);
package.add("crosszonemoveinstancebycharid", (void(*)(uint32, uint16, float, float, float, float))&Perl__crosszonemoveinstancebycharid);
package.add("crosszonemoveinstancebygroupid", (void(*)(uint32, uint16))&Perl__crosszonemoveinstancebygroupid);
package.add("crosszonemoveinstancebygroupid", (void(*)(uint32, uint16, float, float, float))&Perl__crosszonemoveinstancebygroupid);
package.add("crosszonemoveinstancebygroupid", (void(*)(uint32, uint16, float, float, float, float))&Perl__crosszonemoveinstancebygroupid);
package.add("crosszonemoveinstancebyraidid", (void(*)(uint32, uint16))&Perl__crosszonemoveinstancebyraidid);
package.add("crosszonemoveinstancebyraidid", (void(*)(uint32, uint16, float, float, float))&Perl__crosszonemoveinstancebyraidid);
package.add("crosszonemoveinstancebyraidid", (void(*)(uint32, uint16, float, float, float, float))&Perl__crosszonemoveinstancebyraidid);
package.add("crosszonemoveinstancebyguildid", (void(*)(uint32, uint16))&Perl__crosszonemoveinstancebyguildid);
package.add("crosszonemoveinstancebyguildid", (void(*)(uint32, uint16, float, float, float))&Perl__crosszonemoveinstancebyguildid);
package.add("crosszonemoveinstancebyguildid", (void(*)(uint32, uint16, float, float, float, float))&Perl__crosszonemoveinstancebyguildid);
package.add("crosszonemoveinstancebyexpeditionid", (void(*)(uint32, uint16))&Perl__crosszonemoveinstancebyexpeditionid);
package.add("crosszonemoveinstancebyexpeditionid", (void(*)(uint32, uint16, float, float, float))&Perl__crosszonemoveinstancebyexpeditionid);
package.add("crosszonemoveinstancebyexpeditionid", (void(*)(uint32, uint16, float, float, float, float))&Perl__crosszonemoveinstancebyexpeditionid);
package.add("crosszonemoveinstancebyclientname", (void(*)(std::string, uint16))&Perl__crosszonemoveinstancebyclientname);
package.add("crosszonemoveinstancebyclientname", (void(*)(std::string, uint16, float, float, float))&Perl__crosszonemoveinstancebyclientname);
package.add("crosszonemoveinstancebyclientname", (void(*)(std::string, uint16, float, float, float, float))&Perl__crosszonemoveinstancebyclientname);
package.add("crosszoneremoveldonlossbycharid", &Perl__crosszoneremoveldonlossbycharid);
package.add("crosszoneremoveldonlossbygroupid", &Perl__crosszoneremoveldonlossbygroupid);
package.add("crosszoneremoveldonlossbyraidid", &Perl__crosszoneremoveldonlossbyraidid);

View File

@ -2539,90 +2539,424 @@ void lua_cross_zone_message_player_by_name(uint32 type, const char* client_name,
quest_manager.CrossZoneMessage(update_type, update_identifier, type, message, client_name);
}
void lua_cross_zone_move_player_by_char_id(int character_id, const char* zone_short_name) {
uint8 update_type = CZUpdateType_Character;
uint8 update_subtype = CZMoveUpdateSubtype_MoveZone;
uint16 instance_id = 0;
quest_manager.CrossZoneMove(update_type, update_subtype, character_id, zone_short_name, instance_id);
void lua_cross_zone_move_player_by_char_id(uint32 character_id, std::string zone_short_name) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.update_identifier = character_id,
.update_type = CZUpdateType_Character,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_player_by_group_id(int group_id, const char* zone_short_name) {
uint8 update_type = CZUpdateType_Group;
uint8 update_subtype = CZMoveUpdateSubtype_MoveZone;
uint16 instance_id = 0;
quest_manager.CrossZoneMove(update_type, update_subtype, group_id, zone_short_name, instance_id);
void lua_cross_zone_move_player_by_char_id(uint32 character_id, std::string zone_short_name, float x, float y, float z) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.update_identifier = character_id,
.update_type = CZUpdateType_Character,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_player_by_raid_id(int raid_id, const char* zone_short_name) {
uint8 update_type = CZUpdateType_Raid;
uint8 update_subtype = CZMoveUpdateSubtype_MoveZone;
uint16 instance_id = 0;
quest_manager.CrossZoneMove(update_type, update_subtype, raid_id, zone_short_name, instance_id);
void lua_cross_zone_move_player_by_char_id(uint32 character_id, std::string zone_short_name, float x, float y, float z, float heading) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.update_identifier = character_id,
.update_type = CZUpdateType_Character,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_player_by_guild_id(int guild_id, const char* zone_short_name) {
uint8 update_type = CZUpdateType_Guild;
uint8 update_subtype = CZMoveUpdateSubtype_MoveZone;
uint16 instance_id = 0;
quest_manager.CrossZoneMove(update_type, update_subtype, guild_id, zone_short_name, instance_id);
void lua_cross_zone_move_player_by_group_id(uint32 group_id, std::string zone_short_name) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.update_identifier = group_id,
.update_type = CZUpdateType_Group,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_player_by_expedition_id(int expedition_id, const char* zone_short_name) {
uint8 update_type = CZUpdateType_Expedition;
uint8 update_subtype = CZMoveUpdateSubtype_MoveZone;
uint16 instance_id = 0;
quest_manager.CrossZoneMove(update_type, update_subtype, expedition_id, zone_short_name, instance_id);
void lua_cross_zone_move_player_by_group_id(uint32 group_id, std::string zone_short_name, float x, float y, float z) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.update_identifier = group_id,
.update_type = CZUpdateType_Group,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_player_by_client_name(const char* client_name, const char* zone_short_name) {
uint8 update_type = CZUpdateType_Character;
uint8 update_subtype = CZMoveUpdateSubtype_MoveZone;
int update_identifier = 0;
uint16 instance_id = 0;
quest_manager.CrossZoneMove(update_type, update_subtype, update_identifier, zone_short_name, instance_id, client_name);
void lua_cross_zone_move_player_by_group_id(uint32 group_id, std::string zone_short_name, float x, float y, float z, float heading) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.update_identifier = group_id,
.update_type = CZUpdateType_Group,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_instance_by_char_id(int character_id, uint16 instance_id) {
uint8 update_type = CZUpdateType_Character;
uint8 update_subtype = CZMoveUpdateSubtype_MoveZoneInstance;
const char* zone_short_name = "";
quest_manager.CrossZoneMove(update_type, update_subtype, character_id, zone_short_name, instance_id);
void lua_cross_zone_move_player_by_raid_id(uint32 raid_id, std::string zone_short_name) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.update_identifier = raid_id,
.update_type = CZUpdateType_Raid,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_instance_by_group_id(int group_id, uint16 instance_id) {
uint8 update_type = CZUpdateType_Group;
uint8 update_subtype = CZMoveUpdateSubtype_MoveZoneInstance;
const char* zone_short_name = "";
quest_manager.CrossZoneMove(update_type, update_subtype, group_id, zone_short_name, instance_id);
void lua_cross_zone_move_player_by_raid_id(uint32 raid_id, std::string zone_short_name, float x, float y, float z) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.update_identifier = raid_id,
.update_type = CZUpdateType_Raid,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_instance_by_raid_id(int raid_id, uint16 instance_id) {
uint8 update_type = CZUpdateType_Raid;
uint8 update_subtype = CZMoveUpdateSubtype_MoveZoneInstance;
const char* zone_short_name = "";
quest_manager.CrossZoneMove(update_type, update_subtype, raid_id, zone_short_name, instance_id);
void lua_cross_zone_move_player_by_raid_id(uint32 raid_id, std::string zone_short_name, float x, float y, float z, float heading) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.update_identifier = raid_id,
.update_type = CZUpdateType_Raid,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_instance_by_guild_id(int guild_id, uint16 instance_id) {
uint8 update_type = CZUpdateType_Guild;
uint8 update_subtype = CZMoveUpdateSubtype_MoveZoneInstance;
const char* zone_short_name = "";
quest_manager.CrossZoneMove(update_type, update_subtype, guild_id, zone_short_name, instance_id);
void lua_cross_zone_move_player_by_guild_id(uint32 guild_id, std::string zone_short_name) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.update_identifier = guild_id,
.update_type = CZUpdateType_Guild,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_player_by_guild_id(uint32 guild_id, std::string zone_short_name, float x, float y, float z) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.update_identifier = guild_id,
.update_type = CZUpdateType_Guild,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_player_by_guild_id(uint32 guild_id, std::string zone_short_name, float x, float y, float z, float heading) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.update_identifier = guild_id,
.update_type = CZUpdateType_Guild,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_player_by_expedition_id(uint32 expedition_id, std::string zone_short_name) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.update_identifier = expedition_id,
.update_type = CZUpdateType_Expedition,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_player_by_expedition_id(uint32 expedition_id, std::string zone_short_name, float x, float y, float z) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.update_identifier = expedition_id,
.update_type = CZUpdateType_Expedition,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_player_by_expedition_id(uint32 expedition_id, std::string zone_short_name, float x, float y, float z, float heading) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.update_identifier = expedition_id,
.update_type = CZUpdateType_Expedition,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_player_by_client_name(std::string client_name, std::string zone_short_name) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.client_name = client_name,
.update_type = CZUpdateType_ClientName,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_player_by_client_name(std::string client_name, std::string zone_short_name, float x, float y, float z) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.client_name = client_name,
.coordinates = glm::vec4(x, y, z, 0.0f),
.update_type = CZUpdateType_ClientName,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_player_by_client_name(std::string client_name, std::string zone_short_name, float x, float y, float z, float heading) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.client_name = client_name,
.coordinates = glm::vec4(x, y, z, heading),
.update_type = CZUpdateType_ClientName,
.update_subtype = CZMoveUpdateSubtype_MoveZone,
.zone_short_name = zone_short_name,
}
);
}
void lua_cross_zone_move_instance_by_char_id(uint32 character_id, uint16 instance_id) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.instance_id = instance_id,
.update_identifier = character_id,
.update_type = CZUpdateType_Character,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_char_id(uint32 character_id, uint16 instance_id, float x, float y, float z) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.instance_id = instance_id,
.update_identifier = character_id,
.update_type = CZUpdateType_Character,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_char_id(uint32 character_id, uint16 instance_id, float x, float y, float z, float heading) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.instance_id = instance_id,
.update_identifier = character_id,
.update_type = CZUpdateType_Character,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_group_id(uint32 group_id, uint16 instance_id) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.instance_id = instance_id,
.update_identifier = group_id,
.update_type = CZUpdateType_Group,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_group_id(uint32 group_id, uint16 instance_id, float x, float y, float z) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.instance_id = instance_id,
.update_identifier = group_id,
.update_type = CZUpdateType_Group,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_group_id(uint32 group_id, uint16 instance_id, float x, float y, float z, float heading) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.instance_id = instance_id,
.update_identifier = group_id,
.update_type = CZUpdateType_Group,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_raid_id(uint32 raid_id, uint16 instance_id) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.instance_id = instance_id,
.update_identifier = raid_id,
.update_type = CZUpdateType_Raid,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_raid_id(uint32 raid_id, uint16 instance_id, float x, float y, float z) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.instance_id = instance_id,
.update_identifier = raid_id,
.update_type = CZUpdateType_Raid,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_raid_id(uint32 raid_id, uint16 instance_id, float x, float y, float z, float heading) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.instance_id = instance_id,
.update_identifier = raid_id,
.update_type = CZUpdateType_Raid,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_guild_id(uint32 guild_id, uint16 instance_id) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.instance_id = instance_id,
.update_identifier = guild_id,
.update_type = CZUpdateType_Guild,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_guild_id(uint32 guild_id, uint16 instance_id, float x, float y, float z) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.instance_id = instance_id,
.update_identifier = guild_id,
.update_type = CZUpdateType_Guild,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_guild_id(uint32 guild_id, uint16 instance_id, float x, float y, float z, float heading) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.instance_id = instance_id,
.update_identifier = guild_id,
.update_type = CZUpdateType_Guild,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_expedition_id(uint32 expedition_id, uint16 instance_id) {
uint8 update_type = CZUpdateType_Expedition;
uint8 update_subtype = CZMoveUpdateSubtype_MoveZoneInstance;
const char* zone_short_name = "";
quest_manager.CrossZoneMove(update_type, update_subtype, expedition_id, zone_short_name, instance_id);
quest_manager.CrossZoneMove(
CZMove_Struct{
.instance_id = instance_id,
.update_identifier = expedition_id,
.update_type = CZUpdateType_Expedition,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_client_name(const char* client_name, uint16 instance_id) {
uint8 update_type = CZUpdateType_ClientName;
uint8 update_subtype = CZMoveUpdateSubtype_MoveZoneInstance;
int update_identifier = 0;
const char* zone_short_name = "";
quest_manager.CrossZoneMove(update_type, update_subtype, update_identifier, zone_short_name, instance_id, client_name);
void lua_cross_zone_move_instance_by_expedition_id(uint32 expedition_id, uint16 instance_id, float x, float y, float z) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, 0.0f),
.instance_id = instance_id,
.update_identifier = expedition_id,
.update_type = CZUpdateType_Expedition,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_expedition_id(uint32 expedition_id, uint16 instance_id, float x, float y, float z, float heading) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.coordinates = glm::vec4(x, y, z, heading),
.instance_id = instance_id,
.update_identifier = expedition_id,
.update_type = CZUpdateType_Expedition,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_client_name(std::string client_name, uint16 instance_id) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.client_name = client_name,
.instance_id = instance_id,
.update_type = CZUpdateType_ClientName,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_client_name(std::string client_name, uint16 instance_id, float x, float y, float z) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.client_name = client_name,
.coordinates = glm::vec4(x, y, z, 0.0f),
.instance_id = instance_id,
.update_type = CZUpdateType_ClientName,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_move_instance_by_client_name(std::string client_name, uint16 instance_id, float x, float y, float z, float heading) {
quest_manager.CrossZoneMove(
CZMove_Struct{
.client_name = client_name,
.coordinates = glm::vec4(x, y, z, heading),
.instance_id = instance_id,
.update_type = CZUpdateType_ClientName,
.update_subtype = CZMoveUpdateSubtype_MoveZoneInstance,
}
);
}
void lua_cross_zone_remove_ldon_loss_by_char_id(int character_id, uint32 theme_id) {
@ -5890,18 +6224,42 @@ luabind::scope lua_register_general() {
luabind::def("cross_zone_message_player_by_guild_id", &lua_cross_zone_message_player_by_guild_id),
luabind::def("cross_zone_message_player_by_expedition_id", &lua_cross_zone_message_player_by_expedition_id),
luabind::def("cross_zone_message_player_by_name", &lua_cross_zone_message_player_by_name),
luabind::def("cross_zone_move_player_by_char_id", &lua_cross_zone_move_player_by_char_id),
luabind::def("cross_zone_move_player_by_group_id", &lua_cross_zone_move_player_by_group_id),
luabind::def("cross_zone_move_player_by_raid_id", &lua_cross_zone_move_player_by_raid_id),
luabind::def("cross_zone_move_player_by_guild_id", &lua_cross_zone_move_player_by_guild_id),
luabind::def("cross_zone_move_player_by_expedition_id", &lua_cross_zone_move_player_by_expedition_id),
luabind::def("cross_zone_move_player_by_client_name", &lua_cross_zone_move_player_by_client_name),
luabind::def("cross_zone_move_instance_by_char_id", &lua_cross_zone_move_instance_by_char_id),
luabind::def("cross_zone_move_instance_by_group_id", &lua_cross_zone_move_instance_by_group_id),
luabind::def("cross_zone_move_instance_by_raid_id", &lua_cross_zone_move_instance_by_raid_id),
luabind::def("cross_zone_move_instance_by_guild_id", &lua_cross_zone_move_instance_by_guild_id),
luabind::def("cross_zone_move_instance_by_expedition_id", &lua_cross_zone_move_instance_by_expedition_id),
luabind::def("cross_zone_move_instance_by_client_name", &lua_cross_zone_move_instance_by_client_name),
luabind::def("cross_zone_move_player_by_char_id", (void(*)(uint32,std::string))&lua_cross_zone_move_player_by_char_id),
luabind::def("cross_zone_move_player_by_char_id", (void(*)(uint32,std::string,float,float,float))&lua_cross_zone_move_player_by_char_id),
luabind::def("cross_zone_move_player_by_char_id", (void(*)(uint32,std::string,float,float,float,float))&lua_cross_zone_move_player_by_char_id),
luabind::def("cross_zone_move_player_by_group_id", (void(*)(uint32,std::string))&lua_cross_zone_move_player_by_group_id),
luabind::def("cross_zone_move_player_by_group_id", (void(*)(uint32,std::string,float,float,float))&lua_cross_zone_move_player_by_group_id),
luabind::def("cross_zone_move_player_by_group_id", (void(*)(uint32,std::string,float,float,float,float))&lua_cross_zone_move_player_by_group_id),
luabind::def("cross_zone_move_player_by_raid_id", (void(*)(uint32,std::string))&lua_cross_zone_move_player_by_raid_id),
luabind::def("cross_zone_move_player_by_raid_id", (void(*)(uint32,std::string,float,float,float))&lua_cross_zone_move_player_by_raid_id),
luabind::def("cross_zone_move_player_by_raid_id", (void(*)(uint32,std::string,float,float,float,float))&lua_cross_zone_move_player_by_raid_id),
luabind::def("cross_zone_move_player_by_guild_id", (void(*)(uint32,std::string))&lua_cross_zone_move_player_by_guild_id),
luabind::def("cross_zone_move_player_by_guild_id", (void(*)(uint32,std::string,float,float,float))&lua_cross_zone_move_player_by_guild_id),
luabind::def("cross_zone_move_player_by_guild_id", (void(*)(uint32,std::string,float,float,float,float))&lua_cross_zone_move_player_by_guild_id),
luabind::def("cross_zone_move_player_by_expedition_id", (void(*)(uint32,std::string))&lua_cross_zone_move_player_by_expedition_id),
luabind::def("cross_zone_move_player_by_expedition_id", (void(*)(uint32,std::string,float,float,float))&lua_cross_zone_move_player_by_expedition_id),
luabind::def("cross_zone_move_player_by_expedition_id", (void(*)(uint32,std::string,float,float,float,float))&lua_cross_zone_move_player_by_expedition_id),
luabind::def("cross_zone_move_player_by_client_name", (void(*)(std::string,std::string))&lua_cross_zone_move_player_by_client_name),
luabind::def("cross_zone_move_player_by_client_name", (void(*)(std::string,std::string,float,float,float))&lua_cross_zone_move_player_by_client_name),
luabind::def("cross_zone_move_player_by_client_name", (void(*)(std::string,std::string,float,float,float,float))&lua_cross_zone_move_player_by_client_name),
luabind::def("cross_zone_move_instance_by_char_id", (void(*)(uint32,uint16))&lua_cross_zone_move_instance_by_char_id),
luabind::def("cross_zone_move_instance_by_char_id", (void(*)(uint32,uint16,float,float,float))&lua_cross_zone_move_instance_by_char_id),
luabind::def("cross_zone_move_instance_by_char_id", (void(*)(uint32,uint16,float,float,float,float))&lua_cross_zone_move_instance_by_char_id),
luabind::def("cross_zone_move_instance_by_group_id", (void(*)(uint32,uint16))&lua_cross_zone_move_instance_by_group_id),
luabind::def("cross_zone_move_instance_by_group_id", (void(*)(uint32,uint16,float,float,float))&lua_cross_zone_move_instance_by_group_id),
luabind::def("cross_zone_move_instance_by_group_id", (void(*)(uint32,uint16,float,float,float,float))&lua_cross_zone_move_instance_by_group_id),
luabind::def("cross_zone_move_instance_by_raid_id", (void(*)(uint32,uint16))&lua_cross_zone_move_instance_by_raid_id),
luabind::def("cross_zone_move_instance_by_raid_id", (void(*)(uint32,uint16,float,float,float))&lua_cross_zone_move_instance_by_raid_id),
luabind::def("cross_zone_move_instance_by_raid_id", (void(*)(uint32,uint16,float,float,float,float))&lua_cross_zone_move_instance_by_raid_id),
luabind::def("cross_zone_move_instance_by_guild_id", (void(*)(uint32,uint16))&lua_cross_zone_move_instance_by_guild_id),
luabind::def("cross_zone_move_instance_by_guild_id", (void(*)(uint32,uint16,float,float,float))&lua_cross_zone_move_instance_by_guild_id),
luabind::def("cross_zone_move_instance_by_guild_id", (void(*)(uint32,uint16,float,float,float,float))&lua_cross_zone_move_instance_by_guild_id),
luabind::def("cross_zone_move_instance_by_expedition_id", (void(*)(uint32,uint16))&lua_cross_zone_move_instance_by_expedition_id),
luabind::def("cross_zone_move_instance_by_expedition_id", (void(*)(uint32,uint16,float,float,float))&lua_cross_zone_move_instance_by_expedition_id),
luabind::def("cross_zone_move_instance_by_expedition_id", (void(*)(uint32,uint16,float,float,float,float))&lua_cross_zone_move_instance_by_expedition_id),
luabind::def("cross_zone_move_instance_by_client_name", (void(*)(std::string,uint16))&lua_cross_zone_move_instance_by_client_name),
luabind::def("cross_zone_move_instance_by_client_name", (void(*)(std::string,uint16,float,float,float))&lua_cross_zone_move_instance_by_client_name),
luabind::def("cross_zone_move_instance_by_client_name", (void(*)(std::string,uint16,float,float,float,float))&lua_cross_zone_move_instance_by_client_name),
luabind::def("cross_zone_remove_ldon_loss_by_char_id", &lua_cross_zone_remove_ldon_loss_by_char_id),
luabind::def("cross_zone_remove_ldon_loss_by_group_id", &lua_cross_zone_remove_ldon_loss_by_group_id),
luabind::def("cross_zone_remove_ldon_loss_by_raid_id", &lua_cross_zone_remove_ldon_loss_by_raid_id),

View File

@ -3980,15 +3980,25 @@ void QuestManager::CrossZoneMessage(uint8 update_type, int update_identifier, ui
safe_delete(pack);
}
void QuestManager::CrossZoneMove(uint8 update_type, uint8 update_subtype, int update_identifier, const char* zone_short_name, uint16 instance_id, const char* client_name) {
void QuestManager::CrossZoneMove(const CZMove_Struct& m)
{
auto pack = new ServerPacket(ServerOP_CZMove, sizeof(CZMove_Struct));
CZMove_Struct* CZM = (CZMove_Struct*)pack->pBuffer;
CZM->update_type = update_type;
CZM->update_subtype = update_subtype;
CZM->update_identifier = update_identifier;
strn0cpy(CZM->zone_short_name, zone_short_name, 32);
CZM->instance_id = instance_id;
strn0cpy(CZM->client_name, client_name, 64);
auto s = (CZMove_Struct*) pack->pBuffer;
if (!m.client_name.empty()) {
s->client_name = m.client_name;
}
s->coordinates = m.coordinates;
s->instance_id = m.instance_id;
s->update_type = m.update_type;
s->update_subtype = m.update_subtype;
s->update_identifier = m.update_identifier;
if (!m.zone_short_name.empty()) {
s->zone_short_name = m.zone_short_name;
}
worldserver.SendPacket(pack);
safe_delete(pack);
}

View File

@ -312,7 +312,7 @@ public:
void CrossZoneLDoNUpdate(uint8 update_type, uint8 update_subtype, int update_identifier, uint32 theme_id, int points = 1, const char* client_name = "");
void CrossZoneMarquee(uint8 update_type, int update_identifier, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char* message, const char* client_name = "");
void CrossZoneMessage(uint8 update_type, int update_identifier, uint32 type, const char* message, const char* client_name = "");
void CrossZoneMove(uint8 update_type, uint8 update_subtype, int update_identifier, const char* zone_short_name, uint16 instance_id, const char* client_name = "");
void CrossZoneMove(const CZMove_Struct& m);
void CrossZoneSetEntityVariable(uint8 update_type, int update_identifier, const char* variable_name, const char* variable_value, const char* client_name = "");
void CrossZoneSignal(uint8 update_type, int update_identifier, int signal_id, const char* client_name = "");
void CrossZoneSpell(uint8 update_type, uint8 update_subtype, int update_identifier, uint32 spell_id, const char* client_name = "");

View File

@ -2509,98 +2509,105 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
}
case ServerOP_CZMove:
{
CZMove_Struct* CZM = (CZMove_Struct*) pack->pBuffer;
uint8 update_type = CZM->update_type;
uint8 update_subtype = CZM->update_subtype;
int update_identifier = CZM->update_identifier;
const char* zone_short_name = CZM->zone_short_name;
uint16 instance_id = CZM->instance_id;
const char* client_name = CZM->client_name;
auto s = (CZMove_Struct*) pack->pBuffer;
const std::string& client_name = s->client_name;
const glm::vec4& coordinates = s->coordinates;
const uint16 instance_id = s->instance_id;
const uint32 update_identifier = s->update_identifier;
const uint8 update_type = s->update_type;
const uint8 update_subtype = s->update_subtype;
const std::string& zone_short_name = s->zone_short_name;
if (Strings::IsNumber(client_name) || Strings::IsNumber(zone_short_name)) {
break;
}
if (update_type == CZUpdateType_Character) {
auto client = entity_list.GetClientByCharID(update_identifier);
if (client) {
Client* c = entity_list.GetClientByCharID(update_identifier);
if (c) {
switch (update_subtype) {
case CZMoveUpdateSubtype_MoveZone:
client->MoveZone(zone_short_name);
c->MoveZone(zone_short_name.c_str(), coordinates);
break;
case CZMoveUpdateSubtype_MoveZoneInstance:
client->MoveZoneInstance(instance_id);
c->MoveZoneInstance(instance_id, coordinates);
break;
}
}
} else if (update_type == CZUpdateType_Group) {
auto client_group = entity_list.GetGroupByID(update_identifier);
if (client_group) {
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* g = entity_list.GetGroupByID(update_identifier);
if (g) {
for (const auto& gm : g->members) {
if (gm->IsClient()) {
Client* c = gm->CastToClient();
switch (update_subtype) {
case CZMoveUpdateSubtype_MoveZone:
group_member->MoveZone(zone_short_name);
c->MoveZone(zone_short_name.c_str(), coordinates);
break;
case CZMoveUpdateSubtype_MoveZoneInstance:
group_member->MoveZoneInstance(instance_id);
c->MoveZoneInstance(instance_id, coordinates);
break;
}
}
}
}
} else if (update_type == CZUpdateType_Raid) {
auto client_raid = entity_list.GetRaidByID(update_identifier);
if (client_raid) {
for (const auto& m : client_raid->members) {
if (m.is_bot) {
Raid* r = entity_list.GetRaidByID(update_identifier);
if (r) {
for (const auto& rm : r->members) {
if (rm.is_bot) {
continue;
}
if (m.member && m.member->IsClient()) {
auto raid_member = m.member->CastToClient();
if (rm.member && rm.member->IsClient()) {
Client* m = rm.member->CastToClient();
switch (update_subtype) {
case CZMoveUpdateSubtype_MoveZone:
raid_member->MoveZone(zone_short_name);
m->MoveZone(zone_short_name.c_str(), coordinates);
break;
case CZMoveUpdateSubtype_MoveZoneInstance:
raid_member->MoveZoneInstance(instance_id);
m->MoveZoneInstance(instance_id, coordinates);
break;
}
}
}
}
} else if (update_type == CZUpdateType_Guild) {
for (auto &client: entity_list.GetClientList()) {
if (client.second->GuildID() > 0 && client.second->GuildID() == update_identifier) {
for (auto& c : entity_list.GetClientList()) {
if (c.second && c.second->IsInAGuild() && c.second->IsInGuild(update_identifier)) {
switch (update_subtype) {
case CZMoveUpdateSubtype_MoveZone:
client.second->MoveZone(zone_short_name);
c.second->MoveZone(zone_short_name.c_str(), coordinates);
break;
case CZMoveUpdateSubtype_MoveZoneInstance:
client.second->MoveZoneInstance(instance_id);
c.second->MoveZoneInstance(instance_id, coordinates);
break;
}
}
}
} else if (update_type == CZUpdateType_Expedition) {
for (auto &client: entity_list.GetClientList()) {
if (client.second->GetExpedition() && client.second->GetExpedition()->GetID() == update_identifier) {
for (auto& c : entity_list.GetClientList()) {
if (c.second && c.second->GetExpeditionID() == update_identifier) {
switch (update_subtype) {
case CZMoveUpdateSubtype_MoveZone:
client.second->MoveZone(zone_short_name);
c.second->MoveZone(zone_short_name.c_str(), coordinates);
break;
case CZMoveUpdateSubtype_MoveZoneInstance:
client.second->MoveZoneInstance(instance_id);
c.second->MoveZoneInstance(instance_id, coordinates);
break;
}
}
}
} else if (update_type == CZUpdateType_ClientName) {
auto client = entity_list.GetClientByName(client_name);
if (client) {
Client* c = entity_list.GetClientByName(client_name.c_str());
if (c) {
switch (update_subtype) {
case CZMoveUpdateSubtype_MoveZone:
client->MoveZone(zone_short_name);
c->MoveZone(zone_short_name.c_str(), coordinates);
break;
case CZMoveUpdateSubtype_MoveZoneInstance:
client->MoveZoneInstance(instance_id);
c->MoveZoneInstance(instance_id, coordinates);
break;
}
}
@ -3106,21 +3113,29 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
}
case ServerOP_WWMove:
{
WWMove_Struct* WWM = (WWMove_Struct*) pack->pBuffer;
uint8 update_type = WWM->update_type;
uint16 instance_id = WWM->instance_id;
const char* zone_short_name = WWM->zone_short_name;
uint8 min_status = WWM->min_status;
uint8 max_status = WWM->max_status;
auto m = (WWMove_Struct*) pack->pBuffer;
uint16 instance_id = m->instance_id;
uint8 max_status = m->max_status;
uint8 min_status = m->min_status;
uint8 update_type = m->update_type;
std::string zone_short_name = m->zone_short_name;
for (auto &client : entity_list.GetClientList()) {
switch (update_type) {
case WWMoveUpdateType_MoveZone:
if (client.second->Admin() >= min_status && (client.second->Admin() <= max_status || max_status == AccountStatus::Player)) {
client.second->MoveZone(zone_short_name);
if (
client.second->Admin() >= min_status &&
(client.second->Admin() <= max_status || max_status == AccountStatus::Player)
) {
client.second->MoveZone(zone_short_name.c_str());
}
break;
case WWMoveUpdateType_MoveZoneInstance:
if (client.second->Admin() >= min_status && (client.second->Admin() <= max_status || max_status == AccountStatus::Player)) {
if (
client.second->Admin() >= min_status &&
(client.second->Admin() <= max_status || max_status == AccountStatus::Player)
) {
client.second->MoveZoneInstance(instance_id);
}
break;

View File

@ -575,32 +575,41 @@ void Client::MovePC(uint32 zoneID, uint32 instanceID, float x, float y, float z,
}
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);
const bool use_coordinates = (
location.x != 0.0f ||
location.y != 0.0f ||
location.z != 0.0f ||
location.w != 0.0f
);
const ZoneMode zone_type = use_coordinates ? ZoneSolicited : ZoneToSafeCoords;
ProcessMovePC(ZoneID(zone_short_name), 0, location.x, location.y, location.z, location.w, 3, zone_type);
}
void Client::MoveZoneGroup(const char *zone_short_name, const glm::vec4 &location) {
if (!GetGroup()) {
Group* g = GetGroup();
if (!g) {
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, location);
for (const auto& gm : g->members) {
if (gm && gm->IsClient()) {
Client* c = gm->CastToClient();
c->MoveZone(zone_short_name, location);
}
}
}
}
void Client::MoveZoneRaid(const char *zone_short_name, const glm::vec4 &location) {
if (!GetRaid()) {
Raid* r = GetRaid();
if (!r) {
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, location);
for (const auto& rm : r->members) {
if (rm.member && rm.member->IsClient()) {
Client* c = rm.member->CastToClient();
c->MoveZone(zone_short_name, location);
}
}
}
@ -611,32 +620,41 @@ void Client::MoveZoneInstance(uint16 instance_id, const glm::vec4 &location) {
database.AddClientToInstance(instance_id, CharacterID());
}
ProcessMovePC(database.GetInstanceZoneID(instance_id), instance_id, location.x, location.y, location.z, location.w, 3, ZoneToSafeCoords);
const bool use_coordinates = (
location.x != 0.0f ||
location.y != 0.0f ||
location.z != 0.0f ||
location.w != 0.0f
);
const ZoneMode zone_type = use_coordinates ? ZoneSolicited : ZoneToSafeCoords;
ProcessMovePC(database.GetInstanceZoneID(instance_id), instance_id, location.x, location.y, location.z, location.w, 3, zone_type);
}
void Client::MoveZoneInstanceGroup(uint16 instance_id, const glm::vec4 &location) {
if (!GetGroup()) {
Group* g = GetGroup();
if (!g) {
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, location);
for (const auto& gm : g->members) {
if (gm && gm->IsClient()) {
Client* c = gm->CastToClient();
c->MoveZoneInstance(instance_id, location);
}
}
}
}
void Client::MoveZoneInstanceRaid(uint16 instance_id, const glm::vec4 &location) {
if (!GetRaid()) {
Raid* r = GetRaid();
if (!r) {
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, location);
for (const auto& rm : r->members) {
if (rm.member && rm.member->IsClient()) {
Client* c = rm.member->CastToClient();
c->MoveZoneInstance(instance_id, location);
}
}
}