[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/chrono.hpp>
#include <cereal/types/string.hpp> #include <cereal/types/string.hpp>
#include <cereal/types/vector.hpp> #include <cereal/types/vector.hpp>
#include <glm/vec4.hpp>
#define SERVER_TIMEOUT 45000 // how often keepalive gets sent #define SERVER_TIMEOUT 45000 // how often keepalive gets sent
#define INTERSERVER_TIMER 10000 #define INTERSERVER_TIMER 10000
@ -1486,95 +1487,96 @@ struct CZClientMessageString_Struct {
struct CZDialogueWindow_Struct { struct CZDialogueWindow_Struct {
uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name
int update_identifier; // Character ID, Group ID, Raid ID, Guild ID, or Expedition ID based on update type, 0 for Character Name int update_identifier; // Character ID, Group ID, Raid ID, Guild ID, or Expedition ID based on update type, 0 for Character Name
char message[4096]; char message[4096];
char client_name[64]; // Only used by Character Name Type, else empty char client_name[64]; // Only used by Character Name Type, else empty
}; };
struct CZLDoNUpdate_Struct { struct CZLDoNUpdate_Struct {
uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name
uint8 update_subtype; // 0 - Loss, 1 - Points, 2 - Win uint8 update_subtype; // 0 - Loss, 1 - Points, 2 - Win
int update_identifier; // Character ID, Group ID, Raid ID, Guild ID, or Expedition ID based on update type, 0 for Character Name int update_identifier; // Character ID, Group ID, Raid ID, Guild ID, or Expedition ID based on update type, 0 for Character Name
uint32 theme_id; uint32 theme_id;
int points; // Only used in Points Subtype, else 1 int points; // Only used in Points Subtype, else 1
char client_name[64]; // Only used by Character Name Type, else empty char client_name[64]; // Only used by Character Name Type, else empty
}; };
struct CZMarquee_Struct { struct CZMarquee_Struct {
uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name
int update_identifier; // Character ID, Group ID, Raid ID, Guild ID, or Expedition ID based on update type, 0 for Character Name int update_identifier; // Character ID, Group ID, Raid ID, Guild ID, or Expedition ID based on update type, 0 for Character Name
uint32 type; uint32 type;
uint32 priority; uint32 priority;
uint32 fade_in; uint32 fade_in;
uint32 fade_out; uint32 fade_out;
uint32 duration; uint32 duration;
char message[512]; char message[512];
char client_name[64]; // Only used by Character Name Type, else empty char client_name[64]; // Only used by Character Name Type, else empty
}; };
struct CZMessage_Struct { struct CZMessage_Struct {
uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name
int update_identifier; // Group ID, Raid ID, Guild ID, or Expedition ID based on update type, 0 for Character Name int update_identifier; // Group ID, Raid ID, Guild ID, or Expedition ID based on update type, 0 for Character Name
uint32 type; uint32 type;
char message[512]; char message[512];
char client_name[64]; // Only used by Character Name Type, else empty char client_name[64]; // Only used by Character Name Type, else empty
}; };
struct CZMove_Struct { struct CZMove_Struct {
uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name std::string client_name = std::string(); // Only used by Character Name Type, else empty
uint8 update_subtype; // 0 - Move Zone, 1 - Move Zone Instance glm::vec4 coordinates = glm::vec4(0.f); // XYZ or XYZH, heading is optional, defaults to 0.
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 = 0; // Only used by Move Zone Instance, else 0
uint16 instance_id; // 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
char zone_short_name[32]; // Only by with Move Zone, else empty uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name
char client_name[64]; // Only used by Character Name Type, else empty uint8 update_subtype; // 0 - Move Zone, 1 - Move Zone Instance
std::string zone_short_name = std::string(); // Only used by Move Zone, else empty
}; };
struct CZSetEntityVariable_Struct { struct CZSetEntityVariable_Struct {
uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name, 6 - NPC uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name, 6 - NPC
int update_identifier; // Group ID, Raid ID, Guild ID, Expedition ID, or NPC ID based on update type, 0 for Character Name int update_identifier; // Group ID, Raid ID, Guild ID, Expedition ID, or NPC ID based on update type, 0 for Character Name
char variable_name[256]; char variable_name[256];
char variable_value[256]; char variable_value[256];
char client_name[64]; // Only used by Character Type, else empty char client_name[64]; // Only used by Character Type, else empty
}; };
struct CZSignal_Struct { struct CZSignal_Struct {
uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name, 6 - NPC uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name, 6 - NPC
int update_identifier; // Character ID, Group ID, Raid ID, Guild ID, Expedition ID, or NPC ID based on update type, 0 for Character Name int update_identifier; // Character ID, Group ID, Raid ID, Guild ID, Expedition ID, or NPC ID based on update type, 0 for Character Name
int signal_id; int signal_id;
char client_name[64]; // Only used by Character Name Type, else empty char client_name[64]; // Only used by Character Name Type, else empty
}; };
struct CZSpell_Struct { struct CZSpell_Struct {
uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name
uint8 update_subtype; // 0 - Cast Spell, 1 - Remove Spell uint8 update_subtype; // 0 - Cast Spell, 1 - Remove Spell
int update_identifier; // Character ID, Group ID, Raid ID, Guild ID, or Expedition ID based on update type, 0 for Character Name int update_identifier; // Character ID, Group ID, Raid ID, Guild ID, or Expedition ID based on update type, 0 for Character Name
uint32 spell_id; uint32 spell_id;
char client_name[64]; // Only used by Character Name Type, else empty char client_name[64]; // Only used by Character Name Type, else empty
}; };
struct CZTaskUpdate_Struct { struct CZTaskUpdate_Struct {
uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name uint8 update_type; // 0 - Character, 1 - Group, 2 - Raid, 3 - Guild, 4 - Expedition, 5 - Character Name
uint8 update_subtype; // 0 - Activity Reset, 1 - Activity Update, 2 - Assign Task, 3 - Disable Task, 4 - Enable Task, 5 - Fail Task, 6 - Remove Task uint8 update_subtype; // 0 - Activity Reset, 1 - Activity Update, 2 - Assign Task, 3 - Disable Task, 4 - Enable Task, 5 - Fail Task, 6 - Remove Task
int update_identifier; // Character ID, Group ID, Raid ID, Guild ID, or Expedition ID based on update type, 0 for Character Name int update_identifier; // Character ID, Group ID, Raid ID, Guild ID, or Expedition ID based on update type, 0 for Character Name
uint32 task_identifier; uint32 task_identifier;
int task_subidentifier; // Activity ID for Activity Reset and Activity Update, NPC Entity ID for Assign Task, else -1 int task_subidentifier; // Activity ID for Activity Reset and Activity Update, NPC Entity ID for Assign Task, else -1
int update_count; // Only used by Activity Update, else 1 int update_count; // Only used by Activity Update, else 1
bool enforce_level_requirement; // Only used by Assign Task bool enforce_level_requirement; // Only used by Assign Task
char client_name[64]; // Only used by Character Name Type, else empty char client_name[64]; // Only used by Character Name Type, else empty
}; };
struct WWDialogueWindow_Struct { struct WWDialogueWindow_Struct {
char message[4096]; char message[4096];
uint8 min_status; uint8 min_status;
uint8 max_status; uint8 max_status;
}; };
struct WWLDoNUpdate_Struct { struct WWLDoNUpdate_Struct {
uint8 update_type; // 0 - Loss, 1 - Points, 2 - Win uint8 update_type; // 0 - Loss, 1 - Points, 2 - Win
uint32 theme_id; uint32 theme_id;
int points; // Only used in Points Subtype, else 1 int points; // Only used in Points Subtype, else 1
uint8 min_status; uint8 min_status;
uint8 max_status; uint8 max_status;
}; };
struct WWMarquee_Struct { struct WWMarquee_Struct {
@ -1583,56 +1585,57 @@ struct WWMarquee_Struct {
uint32 fade_in; uint32 fade_in;
uint32 fade_out; uint32 fade_out;
uint32 duration; uint32 duration;
char message[512]; char message[512];
uint8 min_status; uint8 min_status;
uint8 max_status; uint8 max_status;
}; };
struct WWMessage_Struct { struct WWMessage_Struct {
uint32 type; uint32 type;
char message[512]; char message[512];
uint8 min_status; uint8 min_status;
uint8 max_status; uint8 max_status;
}; };
struct WWMove_Struct { struct WWMove_Struct {
uint8 update_type; // 0 - Move Zone, 1 - Move Zone Instance uint8 update_type; // 0 - Move Zone, 1 - Move Zone Instance
char zone_short_name[32]; // Used with Move Zone char zone_short_name[32]; // Used with Move Zone
uint16 instance_id; // Used with Move Zone Instance uint16 instance_id; // Used with Move Zone Instance
uint8 min_status; uint8 min_status;
uint8 max_status; uint8 max_status;
}; };
struct WWSetEntityVariable_Struct { struct WWSetEntityVariable_Struct {
uint8 update_type; // 0 - Character, 1 - NPC uint8 update_type; // 0 - Character, 1 - NPC
char variable_name[256]; char variable_name[256];
char variable_value[256]; char variable_value[256];
uint8 min_status; uint8 min_status;
uint8 max_status; uint8 max_status;
}; };
struct WWSignal_Struct { struct WWSignal_Struct {
uint8 update_type; // 0 - Character, 1 - NPC uint8 update_type; // 0 - Character, 1 - NPC
int signal_id; int signal_id;
uint8 min_status; uint8 min_status;
uint8 max_status; uint8 max_status;
}; };
struct WWSpell_Struct { struct WWSpell_Struct {
uint8 update_type; // 0 - Cast Spell, 1 - Remove Spell uint8 update_type; // 0 - Cast Spell, 1 - Remove Spell
uint32 spell_id; uint32 spell_id;
uint8 min_status; uint8 min_status;
uint8 max_status; uint8 max_status;
}; };
struct WWTaskUpdate_Struct { struct WWTaskUpdate_Struct {
uint8 update_type; // 0 - Activity Reset, 1 - Activity Update, 2 - Assign Task, 3 - Disable Task, 4 - Enable Task, 5 - Fail Task, 6 - Remove Task uint8 update_type; // 0 - Activity Reset, 1 - Activity Update, 2 - Assign Task, 3 - Disable Task, 4 - Enable Task, 5 - Fail Task, 6 - Remove Task
uint32 task_identifier; uint32 task_identifier;
int task_subidentifier; // Activity ID for Activity Reset and Activity Update, NPC Entity ID for Assign Task, else -1 int task_subidentifier; // Activity ID for Activity Reset and Activity Update, NPC Entity ID for Assign Task, else -1
int update_count; // Update Count for Activity Update, else 1 int update_count; // Update Count for Activity Update, else 1
bool enforce_level_requirement; // Only used by Assign Task, else false bool enforce_level_requirement; // Only used by Assign Task, else false
uint8 min_status; uint8 min_status;
uint8 max_status; uint8 max_status;
}; };
struct ReloadWorld_Struct { struct ReloadWorld_Struct {

View File

@ -1226,15 +1226,20 @@ void ConsoleCrossZoneMove(
} }
auto pack = new ServerPacket(ServerOP_CZMove, sizeof(CZMove_Struct)); 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; if (!name.empty()) {
CZM->update_subtype = !instance_id ? CZMoveUpdateSubtype_MoveZone : CZMoveUpdateSubtype_MoveZoneInstance; m->client_name = name;
CZM->update_identifier = update_identifier; }
CZM->instance_id = instance_id;
strn0cpy(CZM->zone_short_name, zone_short_name.c_str(), sizeof(CZM->zone_short_name)); m->instance_id = instance_id;
strn0cpy(CZM->client_name, name.c_str(), sizeof(CZM->client_name)); 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); zoneserver_list.SendPacket(pack);
safe_delete(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); 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(
quest_manager.CrossZoneMove(CZUpdateType_Character, CZMoveUpdateSubtype_MoveZone, character_id, zone_short_name, instance_id); 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(
quest_manager.CrossZoneMove(CZUpdateType_Group, CZMoveUpdateSubtype_MoveZone, group_id, zone_short_name, instance_id); 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(
quest_manager.CrossZoneMove(CZUpdateType_Raid, CZMoveUpdateSubtype_MoveZone, raid_id, zone_short_name, instance_id); 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(
quest_manager.CrossZoneMove(CZUpdateType_Guild, CZMoveUpdateSubtype_MoveZone, guild_id, zone_short_name, instance_id); 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(
quest_manager.CrossZoneMove(CZUpdateType_Expedition, CZMoveUpdateSubtype_MoveZone, expedition_id, zone_short_name, instance_id); 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; quest_manager.CrossZoneMove(
uint16 instance_id = 0; CZMove_Struct{
quest_manager.CrossZoneMove(CZUpdateType_ClientName, CZMoveUpdateSubtype_MoveZone, update_identifier, zone_short_name, instance_id, client_name); .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(
quest_manager.CrossZoneMove(CZUpdateType_Character, CZMoveUpdateSubtype_MoveZoneInstance, character_id, zone_short_name, instance_id); 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(
quest_manager.CrossZoneMove(CZUpdateType_Group, CZMoveUpdateSubtype_MoveZoneInstance, group_id, zone_short_name, instance_id); 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(
quest_manager.CrossZoneMove(CZUpdateType_Raid, CZMoveUpdateSubtype_MoveZoneInstance, raid_id, zone_short_name, instance_id); 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(
quest_manager.CrossZoneMove(CZUpdateType_Guild, CZMoveUpdateSubtype_MoveZoneInstance, guild_id, zone_short_name, instance_id); 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) void Perl__crosszonemoveinstancebyexpeditionid(uint32 expedition_id, uint16 instance_id)
{ {
const char* zone_short_name = ""; quest_manager.CrossZoneMove(
quest_manager.CrossZoneMove(CZUpdateType_Expedition, CZMoveUpdateSubtype_MoveZoneInstance, expedition_id, zone_short_name, instance_id); 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; quest_manager.CrossZoneMove(
const char* zone_short_name = ""; CZMove_Struct{
quest_manager.CrossZoneMove(CZUpdateType_ClientName, CZMoveUpdateSubtype_MoveZoneInstance, update_identifier, zone_short_name, instance_id, client_name); .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) void Perl__crosszoneremoveldonlossbycharid(int character_id, uint32 theme_id)
@ -5762,18 +6172,42 @@ void perl_register_quest()
package.add("crosszonemessageplayerbyguildid", &Perl__crosszonemessageplayerbyguildid); package.add("crosszonemessageplayerbyguildid", &Perl__crosszonemessageplayerbyguildid);
package.add("crosszonemessageplayerbyexpeditionid", &Perl__crosszonemessageplayerbyexpeditionid); package.add("crosszonemessageplayerbyexpeditionid", &Perl__crosszonemessageplayerbyexpeditionid);
package.add("crosszonemessageplayerbyname", &Perl__crosszonemessageplayerbyname); package.add("crosszonemessageplayerbyname", &Perl__crosszonemessageplayerbyname);
package.add("crosszonemoveplayerbycharid", &Perl__crosszonemoveplayerbycharid); package.add("crosszonemoveplayerbycharid", (void(*)(uint32, std::string))&Perl__crosszonemoveplayerbycharid);
package.add("crosszonemoveplayerbygroupid", &Perl__crosszonemoveplayerbygroupid); package.add("crosszonemoveplayerbycharid", (void(*)(uint32, std::string, float, float, float))&Perl__crosszonemoveplayerbycharid);
package.add("crosszonemoveplayerbyraidid", &Perl__crosszonemoveplayerbyraidid); package.add("crosszonemoveplayerbycharid", (void(*)(uint32, std::string, float, float, float, float))&Perl__crosszonemoveplayerbycharid);
package.add("crosszonemoveplayerbyguildid", &Perl__crosszonemoveplayerbyguildid); package.add("crosszonemoveplayerbygroupid", (void(*)(uint32, std::string))&Perl__crosszonemoveplayerbygroupid);
package.add("crosszonemoveplayerbyexpeditionid", &Perl__crosszonemoveplayerbyexpeditionid); package.add("crosszonemoveplayerbygroupid", (void(*)(uint32, std::string, float, float, float))&Perl__crosszonemoveplayerbygroupid);
package.add("crosszonemoveplayerbyname", &Perl__crosszonemoveplayerbyname); package.add("crosszonemoveplayerbygroupid", (void(*)(uint32, std::string, float, float, float, float))&Perl__crosszonemoveplayerbygroupid);
package.add("crosszonemoveinstancebycharid", &Perl__crosszonemoveinstancebycharid); package.add("crosszonemoveplayerbyraidid", (void(*)(uint32, std::string))&Perl__crosszonemoveplayerbyraidid);
package.add("crosszonemoveinstancebygroupid", &Perl__crosszonemoveinstancebygroupid); package.add("crosszonemoveplayerbyraidid", (void(*)(uint32, std::string, float, float, float))&Perl__crosszonemoveplayerbyraidid);
package.add("crosszonemoveinstancebyraidid", &Perl__crosszonemoveinstancebyraidid); package.add("crosszonemoveplayerbyraidid", (void(*)(uint32, std::string, float, float, float, float))&Perl__crosszonemoveplayerbyraidid);
package.add("crosszonemoveinstancebyguildid", &Perl__crosszonemoveinstancebyguildid); package.add("crosszonemoveplayerbyguildid", (void(*)(uint32, std::string))&Perl__crosszonemoveplayerbyguildid);
package.add("crosszonemoveinstancebyexpeditionid", &Perl__crosszonemoveinstancebyexpeditionid); package.add("crosszonemoveplayerbyguildid", (void(*)(uint32, std::string, float, float, float))&Perl__crosszonemoveplayerbyguildid);
package.add("crosszonemoveinstancebyclientname", &Perl__crosszonemoveinstancebyclientname); 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("crosszoneremoveldonlossbycharid", &Perl__crosszoneremoveldonlossbycharid);
package.add("crosszoneremoveldonlossbygroupid", &Perl__crosszoneremoveldonlossbygroupid); package.add("crosszoneremoveldonlossbygroupid", &Perl__crosszoneremoveldonlossbygroupid);
package.add("crosszoneremoveldonlossbyraidid", &Perl__crosszoneremoveldonlossbyraidid); 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); 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) { void lua_cross_zone_move_player_by_char_id(uint32 character_id, std::string zone_short_name) {
uint8 update_type = CZUpdateType_Character; quest_manager.CrossZoneMove(
uint8 update_subtype = CZMoveUpdateSubtype_MoveZone; CZMove_Struct{
uint16 instance_id = 0; .update_identifier = character_id,
quest_manager.CrossZoneMove(update_type, update_subtype, character_id, zone_short_name, instance_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) { void lua_cross_zone_move_player_by_char_id(uint32 character_id, std::string zone_short_name, float x, float y, float z) {
uint8 update_type = CZUpdateType_Group; quest_manager.CrossZoneMove(
uint8 update_subtype = CZMoveUpdateSubtype_MoveZone; CZMove_Struct{
uint16 instance_id = 0; .coordinates = glm::vec4(x, y, z, 0.0f),
quest_manager.CrossZoneMove(update_type, update_subtype, group_id, zone_short_name, instance_id); .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) { 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) {
uint8 update_type = CZUpdateType_Raid; quest_manager.CrossZoneMove(
uint8 update_subtype = CZMoveUpdateSubtype_MoveZone; CZMove_Struct{
uint16 instance_id = 0; .coordinates = glm::vec4(x, y, z, heading),
quest_manager.CrossZoneMove(update_type, update_subtype, raid_id, zone_short_name, instance_id); .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) { void lua_cross_zone_move_player_by_group_id(uint32 group_id, std::string zone_short_name) {
uint8 update_type = CZUpdateType_Guild; quest_manager.CrossZoneMove(
uint8 update_subtype = CZMoveUpdateSubtype_MoveZone; CZMove_Struct{
uint16 instance_id = 0; .update_identifier = group_id,
quest_manager.CrossZoneMove(update_type, update_subtype, guild_id, zone_short_name, instance_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) { void lua_cross_zone_move_player_by_group_id(uint32 group_id, std::string zone_short_name, float x, float y, float z) {
uint8 update_type = CZUpdateType_Expedition; quest_manager.CrossZoneMove(
uint8 update_subtype = CZMoveUpdateSubtype_MoveZone; CZMove_Struct{
uint16 instance_id = 0; .coordinates = glm::vec4(x, y, z, 0.0f),
quest_manager.CrossZoneMove(update_type, update_subtype, expedition_id, zone_short_name, instance_id); .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) { 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) {
uint8 update_type = CZUpdateType_Character; quest_manager.CrossZoneMove(
uint8 update_subtype = CZMoveUpdateSubtype_MoveZone; CZMove_Struct{
int update_identifier = 0; .coordinates = glm::vec4(x, y, z, heading),
uint16 instance_id = 0; .update_identifier = group_id,
quest_manager.CrossZoneMove(update_type, update_subtype, update_identifier, zone_short_name, instance_id, client_name); .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) { void lua_cross_zone_move_player_by_raid_id(uint32 raid_id, std::string zone_short_name) {
uint8 update_type = CZUpdateType_Character; quest_manager.CrossZoneMove(
uint8 update_subtype = CZMoveUpdateSubtype_MoveZoneInstance; CZMove_Struct{
const char* zone_short_name = ""; .update_identifier = raid_id,
quest_manager.CrossZoneMove(update_type, update_subtype, character_id, zone_short_name, instance_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) { void lua_cross_zone_move_player_by_raid_id(uint32 raid_id, std::string zone_short_name, float x, float y, float z) {
uint8 update_type = CZUpdateType_Group; quest_manager.CrossZoneMove(
uint8 update_subtype = CZMoveUpdateSubtype_MoveZoneInstance; CZMove_Struct{
const char* zone_short_name = ""; .coordinates = glm::vec4(x, y, z, 0.0f),
quest_manager.CrossZoneMove(update_type, update_subtype, group_id, zone_short_name, instance_id); .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) { 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) {
uint8 update_type = CZUpdateType_Raid; quest_manager.CrossZoneMove(
uint8 update_subtype = CZMoveUpdateSubtype_MoveZoneInstance; CZMove_Struct{
const char* zone_short_name = ""; .coordinates = glm::vec4(x, y, z, heading),
quest_manager.CrossZoneMove(update_type, update_subtype, raid_id, zone_short_name, instance_id); .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) { void lua_cross_zone_move_player_by_guild_id(uint32 guild_id, std::string zone_short_name) {
uint8 update_type = CZUpdateType_Guild; quest_manager.CrossZoneMove(
uint8 update_subtype = CZMoveUpdateSubtype_MoveZoneInstance; CZMove_Struct{
const char* zone_short_name = ""; .update_identifier = guild_id,
quest_manager.CrossZoneMove(update_type, update_subtype, guild_id, zone_short_name, instance_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) { void lua_cross_zone_move_instance_by_expedition_id(uint32 expedition_id, uint16 instance_id) {
uint8 update_type = CZUpdateType_Expedition; quest_manager.CrossZoneMove(
uint8 update_subtype = CZMoveUpdateSubtype_MoveZoneInstance; CZMove_Struct{
const char* zone_short_name = ""; .instance_id = instance_id,
quest_manager.CrossZoneMove(update_type, update_subtype, expedition_id, zone_short_name, 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) { void lua_cross_zone_move_instance_by_expedition_id(uint32 expedition_id, uint16 instance_id, float x, float y, float z) {
uint8 update_type = CZUpdateType_ClientName; quest_manager.CrossZoneMove(
uint8 update_subtype = CZMoveUpdateSubtype_MoveZoneInstance; CZMove_Struct{
int update_identifier = 0; .coordinates = glm::vec4(x, y, z, 0.0f),
const char* zone_short_name = ""; .instance_id = instance_id,
quest_manager.CrossZoneMove(update_type, update_subtype, update_identifier, zone_short_name, instance_id, client_name); .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) { 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_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_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_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_char_id", (void(*)(uint32,std::string))&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_char_id", (void(*)(uint32,std::string,float,float,float))&lua_cross_zone_move_player_by_char_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_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_guild_id", &lua_cross_zone_move_player_by_guild_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_expedition_id", &lua_cross_zone_move_player_by_expedition_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_client_name", &lua_cross_zone_move_player_by_client_name), 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_instance_by_char_id", &lua_cross_zone_move_instance_by_char_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_instance_by_group_id", &lua_cross_zone_move_instance_by_group_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_instance_by_raid_id", &lua_cross_zone_move_instance_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_instance_by_guild_id", &lua_cross_zone_move_instance_by_guild_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_instance_by_expedition_id", &lua_cross_zone_move_instance_by_expedition_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_instance_by_client_name", &lua_cross_zone_move_instance_by_client_name), 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_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_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), 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); 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)); auto pack = new ServerPacket(ServerOP_CZMove, sizeof(CZMove_Struct));
CZMove_Struct* CZM = (CZMove_Struct*)pack->pBuffer; auto s = (CZMove_Struct*) pack->pBuffer;
CZM->update_type = update_type;
CZM->update_subtype = update_subtype; if (!m.client_name.empty()) {
CZM->update_identifier = update_identifier; s->client_name = m.client_name;
strn0cpy(CZM->zone_short_name, zone_short_name, 32); }
CZM->instance_id = instance_id;
strn0cpy(CZM->client_name, client_name, 64); 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); worldserver.SendPacket(pack);
safe_delete(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 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 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 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 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 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 = ""); 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: case ServerOP_CZMove:
{ {
CZMove_Struct* CZM = (CZMove_Struct*) pack->pBuffer; auto s = (CZMove_Struct*) pack->pBuffer;
uint8 update_type = CZM->update_type;
uint8 update_subtype = CZM->update_subtype; const std::string& client_name = s->client_name;
int update_identifier = CZM->update_identifier; const glm::vec4& coordinates = s->coordinates;
const char* zone_short_name = CZM->zone_short_name; const uint16 instance_id = s->instance_id;
uint16 instance_id = CZM->instance_id; const uint32 update_identifier = s->update_identifier;
const char* client_name = CZM->client_name; 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) { if (update_type == CZUpdateType_Character) {
auto client = entity_list.GetClientByCharID(update_identifier); Client* c = entity_list.GetClientByCharID(update_identifier);
if (client) { if (c) {
switch (update_subtype) { switch (update_subtype) {
case CZMoveUpdateSubtype_MoveZone: case CZMoveUpdateSubtype_MoveZone:
client->MoveZone(zone_short_name); c->MoveZone(zone_short_name.c_str(), coordinates);
break; break;
case CZMoveUpdateSubtype_MoveZoneInstance: case CZMoveUpdateSubtype_MoveZoneInstance:
client->MoveZoneInstance(instance_id); c->MoveZoneInstance(instance_id, coordinates);
break; break;
} }
} }
} else if (update_type == CZUpdateType_Group) { } else if (update_type == CZUpdateType_Group) {
auto client_group = entity_list.GetGroupByID(update_identifier); Group* g = entity_list.GetGroupByID(update_identifier);
if (client_group) { if (g) {
for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { for (const auto& gm : g->members) {
if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { if (gm->IsClient()) {
auto group_member = client_group->members[member_index]->CastToClient(); Client* c = gm->CastToClient();
switch (update_subtype) { switch (update_subtype) {
case CZMoveUpdateSubtype_MoveZone: case CZMoveUpdateSubtype_MoveZone:
group_member->MoveZone(zone_short_name); c->MoveZone(zone_short_name.c_str(), coordinates);
break; break;
case CZMoveUpdateSubtype_MoveZoneInstance: case CZMoveUpdateSubtype_MoveZoneInstance:
group_member->MoveZoneInstance(instance_id); c->MoveZoneInstance(instance_id, coordinates);
break; break;
} }
} }
} }
} }
} else if (update_type == CZUpdateType_Raid) { } else if (update_type == CZUpdateType_Raid) {
auto client_raid = entity_list.GetRaidByID(update_identifier); Raid* r = entity_list.GetRaidByID(update_identifier);
if (client_raid) { if (r) {
for (const auto& m : client_raid->members) { for (const auto& rm : r->members) {
if (m.is_bot) { if (rm.is_bot) {
continue; continue;
} }
if (m.member && m.member->IsClient()) { if (rm.member && rm.member->IsClient()) {
auto raid_member = m.member->CastToClient(); Client* m = rm.member->CastToClient();
switch (update_subtype) { switch (update_subtype) {
case CZMoveUpdateSubtype_MoveZone: case CZMoveUpdateSubtype_MoveZone:
raid_member->MoveZone(zone_short_name); m->MoveZone(zone_short_name.c_str(), coordinates);
break; break;
case CZMoveUpdateSubtype_MoveZoneInstance: case CZMoveUpdateSubtype_MoveZoneInstance:
raid_member->MoveZoneInstance(instance_id); m->MoveZoneInstance(instance_id, coordinates);
break; break;
} }
} }
} }
} }
} else if (update_type == CZUpdateType_Guild) { } else if (update_type == CZUpdateType_Guild) {
for (auto &client: entity_list.GetClientList()) { for (auto& c : entity_list.GetClientList()) {
if (client.second->GuildID() > 0 && client.second->GuildID() == update_identifier) { if (c.second && c.second->IsInAGuild() && c.second->IsInGuild(update_identifier)) {
switch (update_subtype) { switch (update_subtype) {
case CZMoveUpdateSubtype_MoveZone: case CZMoveUpdateSubtype_MoveZone:
client.second->MoveZone(zone_short_name); c.second->MoveZone(zone_short_name.c_str(), coordinates);
break; break;
case CZMoveUpdateSubtype_MoveZoneInstance: case CZMoveUpdateSubtype_MoveZoneInstance:
client.second->MoveZoneInstance(instance_id); c.second->MoveZoneInstance(instance_id, coordinates);
break; break;
} }
} }
} }
} else if (update_type == CZUpdateType_Expedition) { } else if (update_type == CZUpdateType_Expedition) {
for (auto &client: entity_list.GetClientList()) { for (auto& c : entity_list.GetClientList()) {
if (client.second->GetExpedition() && client.second->GetExpedition()->GetID() == update_identifier) { if (c.second && c.second->GetExpeditionID() == update_identifier) {
switch (update_subtype) { switch (update_subtype) {
case CZMoveUpdateSubtype_MoveZone: case CZMoveUpdateSubtype_MoveZone:
client.second->MoveZone(zone_short_name); c.second->MoveZone(zone_short_name.c_str(), coordinates);
break; break;
case CZMoveUpdateSubtype_MoveZoneInstance: case CZMoveUpdateSubtype_MoveZoneInstance:
client.second->MoveZoneInstance(instance_id); c.second->MoveZoneInstance(instance_id, coordinates);
break; break;
} }
} }
} }
} else if (update_type == CZUpdateType_ClientName) { } else if (update_type == CZUpdateType_ClientName) {
auto client = entity_list.GetClientByName(client_name); Client* c = entity_list.GetClientByName(client_name.c_str());
if (client) { if (c) {
switch (update_subtype) { switch (update_subtype) {
case CZMoveUpdateSubtype_MoveZone: case CZMoveUpdateSubtype_MoveZone:
client->MoveZone(zone_short_name); c->MoveZone(zone_short_name.c_str(), coordinates);
break; break;
case CZMoveUpdateSubtype_MoveZoneInstance: case CZMoveUpdateSubtype_MoveZoneInstance:
client->MoveZoneInstance(instance_id); c->MoveZoneInstance(instance_id, coordinates);
break; break;
} }
} }
@ -3106,21 +3113,29 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
} }
case ServerOP_WWMove: case ServerOP_WWMove:
{ {
WWMove_Struct* WWM = (WWMove_Struct*) pack->pBuffer; auto m = (WWMove_Struct*) pack->pBuffer;
uint8 update_type = WWM->update_type;
uint16 instance_id = WWM->instance_id; uint16 instance_id = m->instance_id;
const char* zone_short_name = WWM->zone_short_name; uint8 max_status = m->max_status;
uint8 min_status = WWM->min_status; uint8 min_status = m->min_status;
uint8 max_status = WWM->max_status; uint8 update_type = m->update_type;
std::string zone_short_name = m->zone_short_name;
for (auto &client : entity_list.GetClientList()) { for (auto &client : entity_list.GetClientList()) {
switch (update_type) { switch (update_type) {
case WWMoveUpdateType_MoveZone: case WWMoveUpdateType_MoveZone:
if (client.second->Admin() >= min_status && (client.second->Admin() <= max_status || max_status == AccountStatus::Player)) { if (
client.second->MoveZone(zone_short_name); client.second->Admin() >= min_status &&
(client.second->Admin() <= max_status || max_status == AccountStatus::Player)
) {
client.second->MoveZone(zone_short_name.c_str());
} }
break; break;
case WWMoveUpdateType_MoveZoneInstance: 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); client.second->MoveZoneInstance(instance_id);
} }
break; 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) { 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) { void Client::MoveZoneGroup(const char *zone_short_name, const glm::vec4 &location) {
if (!GetGroup()) { Group* g = GetGroup();
if (!g) {
MoveZone(zone_short_name, location); MoveZone(zone_short_name, location);
} else { } else {
auto client_group = GetGroup(); for (const auto& gm : g->members) {
for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { if (gm && gm->IsClient()) {
if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { Client* c = gm->CastToClient();
auto group_member = client_group->members[member_index]->CastToClient(); c->MoveZone(zone_short_name, location);
group_member->MoveZone(zone_short_name, location);
} }
} }
} }
} }
void Client::MoveZoneRaid(const char *zone_short_name, const glm::vec4 &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); MoveZone(zone_short_name, location);
} else { } else {
auto client_raid = GetRaid(); for (const auto& rm : r->members) {
for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { if (rm.member && rm.member->IsClient()) {
if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { Client* c = rm.member->CastToClient();
auto raid_member = client_raid->members[member_index].member->CastToClient(); c->MoveZone(zone_short_name, location);
raid_member->MoveZone(zone_short_name, location);
} }
} }
} }
@ -611,32 +620,41 @@ void Client::MoveZoneInstance(uint16 instance_id, const glm::vec4 &location) {
database.AddClientToInstance(instance_id, CharacterID()); 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) { void Client::MoveZoneInstanceGroup(uint16 instance_id, const glm::vec4 &location) {
if (!GetGroup()) { Group* g = GetGroup();
if (!g) {
MoveZoneInstance(instance_id, location); MoveZoneInstance(instance_id, location);
} else { } else {
auto client_group = GetGroup(); for (const auto& gm : g->members) {
for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { if (gm && gm->IsClient()) {
if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { Client* c = gm->CastToClient();
auto group_member = client_group->members[member_index]->CastToClient(); c->MoveZoneInstance(instance_id, location);
group_member->MoveZoneInstance(instance_id, location);
} }
} }
} }
} }
void Client::MoveZoneInstanceRaid(uint16 instance_id, const glm::vec4 &location) { void Client::MoveZoneInstanceRaid(uint16 instance_id, const glm::vec4 &location) {
if (!GetRaid()) { Raid* r = GetRaid();
if (!r) {
MoveZoneInstance(instance_id, location); MoveZoneInstance(instance_id, location);
} else { } else {
auto client_raid = GetRaid(); for (const auto& rm : r->members) {
for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { if (rm.member && rm.member->IsClient()) {
if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { Client* c = rm.member->CastToClient();
auto raid_member = client_raid->members[member_index].member->CastToClient(); c->MoveZoneInstance(instance_id, location);
raid_member->MoveZoneInstance(instance_id, location);
} }
} }
} }