Add several cross zone methods to Perl/Lua.

This commit is contained in:
Alex 2020-05-11 20:10:52 -04:00
parent 5e0ab3e37c
commit 5f0d3e9026
7 changed files with 379 additions and 2 deletions

View File

@ -199,7 +199,14 @@
#define ServerOP_UCSServerStatusReply 0x4014
#define ServerOP_HotReloadQuests 0x4015
#define ServerOP_CZSignalGroup 0x4016
#define ServerOP_CZSignalRaid 0x4017
#define ServerOP_CZSignalGuild 0x4018
#define ServerOP_CZMessageGroup 0x4019
#define ServerOP_CZMessageRaid 0x4020
#define ServerOP_CZMessageGuild 0x4021
#define ServerOP_CZSetEntityVariableByGroupID 0x4022
#define ServerOP_CZSetEntityVariableByRaidID 0x4023
#define ServerOP_CZSetEntityVariableByGuildID 0x4024
/**
* QueryServer
@ -1174,6 +1181,16 @@ struct CZGroupSignal_Struct {
uint32 data;
};
struct CZRaidSignal_Struct {
int raid_id;
uint32 data;
};
struct CZGuildSignal_Struct {
int guild_id;
uint32 data;
};
struct CZNPCSignal_Struct {
uint32 npctype_id;
uint32 data;
@ -1341,6 +1358,18 @@ struct CZMessagePlayer_Struct {
char Message[512];
};
struct CZMessageGroup_Struct {
uint32 Type;
int GroupID;
char Message[512];
};
struct CZMessageRaid_Struct {
uint32 Type;
int RaidID;
char Message[512];
};
struct CZMessageGuild_Struct {
uint32 Type;
int GuildID;
@ -1368,6 +1397,24 @@ struct CZSetEntVarByClientName_Struct {
char m_var[256];
};
struct CZSetEntVarByGroupID_Struct {
int group_id;
char id[256];
char m_var[256];
};
struct CZSetEntVarByRaidID_Struct {
int raid_id;
char id[256];
char m_var[256];
};
struct CZSetEntVarByGuildID_Struct {
int guild_id;
char id[256];
char m_var[256];
};
struct ReloadWorld_Struct {
uint32 Option;
};

View File

@ -1238,12 +1238,19 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
case ServerOP_CZSignalClientByName:
case ServerOP_CZMessagePlayer:
case ServerOP_CZMessageGroup:
case ServerOP_CZMessageRaid:
case ServerOP_CZMessageGuild:
case ServerOP_CZSignalNPC:
case ServerOP_CZSetEntityVariableByNPCTypeID:
case ServerOP_CZSignalClient:
case ServerOP_CZSignalGroup:
case ServerOP_CZSignalRaid:
case ServerOP_CZSignalGuild:
case ServerOP_CZSetEntityVariableByClientName:
case ServerOP_CZSetEntityVariableByGroupID:
case ServerOP_CZSetEntityVariableByRaidID:
case ServerOP_CZSetEntityVariableByGuildID:
case ServerOP_WWMarquee:
case ServerOP_DepopAllPlayersCorpses:
case ServerOP_DepopPlayerCorpse:

View File

@ -3729,7 +3729,7 @@ XS(XS__crosszonesignalclientbygroupid) {
Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbygroupid(int group_id, int value)");
if (items == 2) {
int group_id = (int) SvIV(ST(0));
int group_id = (int) SvIV(ST(0));
uint32 int_value = (uint32) SvIV(ST(1));
quest_manager.CrossZoneSignalPlayerByGroupID(group_id, int_value);
} else {
@ -3739,6 +3739,42 @@ XS(XS__crosszonesignalclientbygroupid) {
XSRETURN_EMPTY;
}
XS(XS__crosszonesignalclientbyraidid);
XS(XS__crosszonesignalclientbyraidid) {
dXSARGS;
if (items != 2)
Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbyraidid(int raid_id, int value)");
if (items == 2) {
int raid_id = (int) SvIV(ST(0));
uint32 int_value = (uint32) SvIV(ST(1));
quest_manager.CrossZoneSignalPlayerByRaidID(raid_id, int_value);
} else {
Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbyraidid(int raid_id, int value)");
}
XSRETURN_EMPTY;
}
XS(XS__crosszonesignalclientbyguildid);
XS(XS__crosszonesignalclientbyguildid) {
dXSARGS;
if (items != 2)
Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbyguildid(int guild_id, int value)");
if (items == 2) {
int guild_id = (int) SvIV(ST(0));
uint32 int_value = (uint32) SvIV(ST(1));
quest_manager.CrossZoneSignalPlayerByGuildID(guild_id, int_value);
} else {
Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbyguildid(int guild_id, int value)");
}
XSRETURN_EMPTY;
}
XS(XS__crosszonesignalclientbyname);
XS(XS__crosszonesignalclientbyname) {
dXSARGS;
@ -3775,12 +3811,46 @@ XS(XS__crosszonemessageplayerbyname) {
XSRETURN_EMPTY;
}
XS(XS__crosszonemessageplayerbygroupid);
XS(XS__crosszonemessageplayerbygroupid) {
dXSARGS;
if (items != 3)
Perl_croak(aTHX_ "Usage: quest::crosszonemessageplayerbygroupid(int type, int group_id, string message)");
if (items == 3) {
uint32 type = (uint32) SvIV(ST(0));
int group_id = (int) SvIV(ST(1));
char *message = (char *) SvPV_nolen(ST(2));
quest_manager.CrossZoneMessagePlayerByGroupID(type, group_id, message);
}
XSRETURN_EMPTY;
}
XS(XS__crosszonemessageplayerbyraidid);
XS(XS__crosszonemessageplayerbyraidid) {
dXSARGS;
if (items != 3)
Perl_croak(aTHX_ "Usage: quest::crosszonemessageplayerbyraidid(int type, int raid_id, string message)");
if (items == 3) {
uint32 type = (uint32) SvIV(ST(0));
int raid_id = (int) SvIV(ST(1));
char *message = (char *) SvPV_nolen(ST(2));
quest_manager.CrossZoneMessagePlayerByRaidID(type, raid_id, message);
}
XSRETURN_EMPTY;
}
XS(XS__crosszonemessageplayerbyguildid);
XS(XS__crosszonemessageplayerbyguildid) {
dXSARGS;
if (items != 3)
Perl_croak(aTHX_ "Usage: quest::crosszonemessageplayerbyguildid(int typ, int guild_id, string message)");
Perl_croak(aTHX_ "Usage: quest::crosszonemessageplayerbyguildid(int type, int guild_id, string message)");
if (items == 3) {
uint32 type = (uint32) SvIV(ST(0));
@ -3911,6 +3981,57 @@ XS(XS__crosszonesetentityvariablebyclientname) {
XSRETURN_EMPTY;
}
XS(XS__crosszonesetentityvariablebygroupid);
XS(XS__crosszonesetentityvariablebygroupid) {
dXSARGS;
if (items != 3)
Perl_croak(aTHX_ "Usage: quest::crosszonesetentityvariablebygroupid(int group_id, string key, string value)");
if (items == 3) {
int group_id = SvIV(ST(0));
const char *key = (const char *) SvPV_nolen(ST(1));
const char *str_value = (const char *) SvPV_nolen(ST(2));
quest_manager.CrossZoneSetEntityVariableByGroupID(group_id, key, str_value);
}
XSRETURN_EMPTY;
}
XS(XS__crosszonesetentityvariablebyraidid);
XS(XS__crosszonesetentityvariablebyraidid) {
dXSARGS;
if (items != 3)
Perl_croak(aTHX_ "Usage: quest::crosszonesetentityvariablebyraidid(int raid_id, string key, string value)");
if (items == 3) {
int raid_id = SvIV(ST(0));
const char *key = (const char *) SvPV_nolen(ST(1));
const char *str_value = (const char *) SvPV_nolen(ST(2));
quest_manager.CrossZoneSetEntityVariableByRaidID(raid_id, key, str_value);
}
XSRETURN_EMPTY;
}
XS(XS__crosszonesetentityvariablebyguildid);
XS(XS__crosszonesetentityvariablebyguildid) {
dXSARGS;
if (items != 3)
Perl_croak(aTHX_ "Usage: quest::crosszonesetentityvariablebyguildid(int guild_id, string key, string value)");
if (items == 3) {
int guild_id = SvIV(ST(0));
const char *key = (const char *) SvPV_nolen(ST(1));
const char *str_value = (const char *) SvPV_nolen(ST(2));
quest_manager.CrossZoneSetEntityVariableByGuildID(guild_id, key, str_value);
}
XSRETURN_EMPTY;
}
XS(XS__crosszonesignalnpcbynpctypeid);
XS(XS__crosszonesignalnpcbynpctypeid) {
dXSARGS;
@ -4208,11 +4329,18 @@ EXTERN_C XS(boot_quest) {
newXS(strcpy(buf, "creategroundobjectfrommodel"), XS__CreateGroundObjectFromModel, file);
newXS(strcpy(buf, "createguild"), XS__createguild, file);
newXS(strcpy(buf, "crosszonemessageplayerbyname"), XS__crosszonemessageplayerbyname, file);
newXS(strcpy(buf, "crosszonemessageplayerbygroupid"), XS__crosszonemessageplayerbygroupid, file);
newXS(strcpy(buf, "crosszonemessageplayerbyraidid"), XS__crosszonemessageplayerbyraidid, file);
newXS(strcpy(buf, "crosszonemessageplayerbyguildid"), XS__crosszonemessageplayerbyguildid, file);
newXS(strcpy(buf, "crosszonesetentityvariablebynpctypeid"), XS__crosszonesetentityvariablebynpctypeid, file);
newXS(strcpy(buf, "crosszonesetentityvariablebyclientname"), XS__crosszonesetentityvariablebyclientname, file);
newXS(strcpy(buf, "crosszonesetentityvariablebygroupid"), XS__crosszonesetentityvariablebygroupid, file);
newXS(strcpy(buf, "crosszonesetentityvariablebyraidid"), XS__crosszonesetentityvariablebyraidid, file);
newXS(strcpy(buf, "crosszonesetentityvariablebyguildid"), XS__crosszonesetentityvariablebyguildid, file);
newXS(strcpy(buf, "crosszonesignalclientbycharid"), XS__crosszonesignalclientbycharid, file);
newXS(strcpy(buf, "crosszonesignalclientbygroupid"), XS__crosszonesignalclientbygroupid, file);
newXS(strcpy(buf, "crosszonesignalclientbyraidid"), XS__crosszonesignalclientbyraidid, file);
newXS(strcpy(buf, "crosszonesignalclientbyguildid"), XS__crosszonesignalclientbyguildid, file);
newXS(strcpy(buf, "crosszonesignalclientbyname"), XS__crosszonesignalclientbyname, file);
newXS(strcpy(buf, "crosszonesignalnpcbynpctypeid"), XS__crosszonesignalnpcbynpctypeid, file);
newXS(strcpy(buf, "worldwidemarquee"), XS__worldwidemarquee, file);

View File

@ -1030,6 +1030,14 @@ void lua_cross_zone_signal_client_by_group_id(uint32 group_id, int signal) {
quest_manager.CrossZoneSignalPlayerByGroupID(group_id, signal);
}
void lua_cross_zone_signal_client_by_raid_id(uint32 raid_id, int signal) {
quest_manager.CrossZoneSignalPlayerByRaidID(raid_id, signal);
}
void lua_cross_zone_signal_client_by_guild_id(uint32 guild_id, int signal) {
quest_manager.CrossZoneSignalPlayerByGuildID(guild_id, signal);
}
void lua_cross_zone_signal_client_by_name(const char *player, int signal) {
quest_manager.CrossZoneSignalPlayerByName(player, signal);
}
@ -1038,6 +1046,14 @@ void lua_cross_zone_message_player_by_name(uint32 type, const char *player, cons
quest_manager.CrossZoneMessagePlayerByName(type, player, message);
}
void lua_cross_zone_message_player_by_group_id(uint32 type, int group_id, const char *message) {
quest_manager.CrossZoneMessagePlayerByGroupID(type, group_id, message);
}
void lua_cross_zone_message_player_by_raid_id(uint32 type, int raid_id, const char *message) {
quest_manager.CrossZoneMessagePlayerByRaidID(type, raid_id, message);
}
void lua_cross_zone_message_player_by_guild_id(uint32 type, int guild_id, const char *message) {
quest_manager.CrossZoneMessagePlayerByGuildID(type, guild_id, message);
}
@ -1046,6 +1062,18 @@ void lua_cross_zone_set_entity_variable_by_client_name(const char *player, const
quest_manager.CrossZoneSetEntityVariableByClientName(player, id, m_var);
}
void lua_cross_zone_set_entity_variable_by_group_id(int group_id, const char *id, const char *m_var) {
quest_manager.CrossZoneSetEntityVariableByGroupID(group_id, id, m_var);
}
void lua_cross_zone_set_entity_variable_by_raid_id(int raid_id, const char *id, const char *m_var) {
quest_manager.CrossZoneSetEntityVariableByRaidID(raid_id, id, m_var);
}
void lua_cross_zone_set_entity_variable_by_guild_id(int guild_id, const char *id, const char *m_var) {
quest_manager.CrossZoneSetEntityVariableByGuildID(guild_id, id, m_var);
}
void lua_world_wide_marquee(uint32 type, uint32 priority, uint32 fadein, uint32 fadeout, uint32 duration, const char *message) {
quest_manager.WorldWideMarquee(type, priority, fadein, fadeout, duration, message);
}
@ -1848,10 +1876,17 @@ luabind::scope lua_register_general() {
luabind::def("send_mail", &lua_send_mail),
luabind::def("cross_zone_signal_client_by_char_id", &lua_cross_zone_signal_client_by_char_id),
luabind::def("cross_zone_signal_client_by_group_id", &lua_cross_zone_signal_client_by_group_id),
luabind::def("cross_zone_signal_client_by_raid_id", &lua_cross_zone_signal_client_by_raid_id),
luabind::def("cross_zone_signal_client_by_guild_id", &lua_cross_zone_signal_client_by_guild_id),
luabind::def("cross_zone_signal_client_by_name", &lua_cross_zone_signal_client_by_name),
luabind::def("cross_zone_message_player_by_name", &lua_cross_zone_message_player_by_name),
luabind::def("cross_zone_message_player_by_group_id", &lua_cross_zone_message_player_by_group_id),
luabind::def("cross_zone_message_player_by_raid_id", &lua_cross_zone_message_player_by_raid_id),
luabind::def("cross_zone_message_player_by_guild_id", &lua_cross_zone_message_player_by_guild_id),
luabind::def("cross_zone_set_entity_variable_by_client_name", &lua_cross_zone_set_entity_variable_by_client_name),
luabind::def("cross_zone_set_entity_variable_by_group_id", &lua_cross_zone_set_entity_variable_by_group_id),
luabind::def("cross_zone_set_entity_variable_by_raid_id", &lua_cross_zone_set_entity_variable_by_raid_id),
luabind::def("cross_zone_set_entity_variable_by_guild_id", &lua_cross_zone_set_entity_variable_by_guild_id),
luabind::def("world_wide_marquee", &lua_world_wide_marquee),
luabind::def("get_qglobals", (luabind::adl::object(*)(lua_State*,Lua_NPC,Lua_Client))&lua_get_qglobals),
luabind::def("get_qglobals", (luabind::adl::object(*)(lua_State*,Lua_Client))&lua_get_qglobals),

View File

@ -3220,6 +3220,24 @@ void QuestManager::CrossZoneSignalPlayerByGroupID(int group_id, uint32 data){
safe_delete(pack);
}
void QuestManager::CrossZoneSignalPlayerByRaidID(int raid_id, uint32 data){
auto pack = new ServerPacket(ServerOP_CZSignalRaid, sizeof(CZRaidSignal_Struct));
CZRaidSignal_Struct* CZRS = (CZRaidSignal_Struct*) pack->pBuffer;
CZRS->raid_id = raid_id;
CZRS->data = data;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSignalPlayerByGuildID(int guild_id, uint32 data){
auto pack = new ServerPacket(ServerOP_CZSignalGuild, sizeof(CZGuildSignal_Struct));
CZGuildSignal_Struct* CZGS = (CZGuildSignal_Struct*) pack->pBuffer;
CZGS->guild_id = guild_id;
CZGS->data = data;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSignalPlayerByName(const char *CharName, uint32 data){
uint32 message_len = strlen(CharName) + 1;
auto pack = new ServerPacket(ServerOP_CZSignalClientByName, sizeof(CZClientSignalByName_Struct) + message_len);
@ -3243,6 +3261,28 @@ void QuestManager::CrossZoneMessagePlayerByName(uint32 Type, const char *CharNam
safe_delete(pack);
}
void QuestManager::CrossZoneMessagePlayerByGroupID(uint32 Type, int GroupID, const char *Message){
uint32 message_len = strlen(Message) + 1;
auto pack = new ServerPacket(ServerOP_CZMessageGroup, sizeof(CZMessageGroup_Struct) + message_len);
CZMessageGroup_Struct* CZGM = (CZMessageGroup_Struct*) pack->pBuffer;
CZGM->Type = Type;
CZGM->GroupID = GroupID;
strn0cpy(CZGM->Message, Message, 512);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneMessagePlayerByRaidID(uint32 Type, int RaidID, const char *Message){
uint32 message_len = strlen(Message) + 1;
auto pack = new ServerPacket(ServerOP_CZMessageRaid, sizeof(CZMessageRaid_Struct) + message_len);
CZMessageRaid_Struct* CZRM = (CZMessageRaid_Struct*) pack->pBuffer;
CZRM->Type = Type;
CZRM->RaidID = RaidID;
strn0cpy(CZRM->Message, Message, 512);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneMessagePlayerByGuildID(uint32 Type, int GuildID, const char *Message){
uint32 message_len = strlen(Message) + 1;
auto pack = new ServerPacket(ServerOP_CZMessageGuild, sizeof(CZMessageGuild_Struct) + message_len);
@ -3268,6 +3308,42 @@ void QuestManager::CrossZoneSetEntityVariableByClientName(const char *CharName,
safe_delete(pack);
}
void QuestManager::CrossZoneSetEntityVariableByGroupID(int group_id, const char *id, const char *m_var){
uint32 message_len = strlen(id) + 1;
uint32 message_len2 = strlen(m_var) + 1;
auto pack = new ServerPacket(ServerOP_CZSetEntityVariableByGroupID, sizeof(CZSetEntVarByGroupID_Struct) + message_len + message_len2);
CZSetEntVarByGroupID_Struct* CZ = (CZSetEntVarByGroupID_Struct*)pack->pBuffer;
CZ->group_id = group_id;
strn0cpy(CZ->id, id, 256);
strn0cpy(CZ->m_var, m_var, 256);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSetEntityVariableByRaidID(int raid_id, const char *id, const char *m_var){
uint32 message_len = strlen(id) + 1;
uint32 message_len2 = strlen(m_var) + 1;
auto pack = new ServerPacket(ServerOP_CZSetEntityVariableByRaidID, sizeof(CZSetEntVarByRaidID_Struct) + message_len + message_len2);
CZSetEntVarByRaidID_Struct* CZ = (CZSetEntVarByRaidID_Struct*)pack->pBuffer;
CZ->raid_id = raid_id;
strn0cpy(CZ->id, id, 256);
strn0cpy(CZ->m_var, m_var, 256);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSetEntityVariableByGuildID(int guild_id, const char *id, const char *m_var){
uint32 message_len = strlen(id) + 1;
uint32 message_len2 = strlen(m_var) + 1;
auto pack = new ServerPacket(ServerOP_CZSetEntityVariableByGuildID, sizeof(CZSetEntVarByGuildID_Struct) + message_len + message_len2);
CZSetEntVarByGuildID_Struct* CZ = (CZSetEntVarByGuildID_Struct*)pack->pBuffer;
CZ->guild_id = guild_id;
strn0cpy(CZ->id, id, 256);
strn0cpy(CZ->m_var, m_var, 256);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSetEntityVariableByNPCTypeID(uint32 npctype_id, const char *id, const char *m_var){
uint32 message_len = strlen(id) + 1;
uint32 message_len2 = strlen(m_var) + 1;

View File

@ -280,11 +280,18 @@ public:
const char *GetZoneLongName(const char *zone);
void CrossZoneSignalPlayerByCharID(int charid, uint32 data);
void CrossZoneSignalPlayerByGroupID(int group_id, uint32 data);
void CrossZoneSignalPlayerByRaidID(int raid_id, uint32 data);
void CrossZoneSignalPlayerByGuildID(int guild_id, uint32 data);
void CrossZoneSignalNPCByNPCTypeID(uint32 npctype_id, uint32 data);
void CrossZoneSignalPlayerByName(const char *CharName, uint32 data);
void CrossZoneSetEntityVariableByNPCTypeID(uint32 npctype_id, const char *id, const char *m_var);
void CrossZoneSetEntityVariableByClientName(const char *CharName, const char *id, const char *m_var);
void CrossZoneSetEntityVariableByGroupID(int group_id, const char *id, const char *m_var);
void CrossZoneSetEntityVariableByRaidID(int raid_id, const char *id, const char *m_var);
void CrossZoneSetEntityVariableByGuildID(int guild_id, const char *id, const char *m_var);
void CrossZoneMessagePlayerByName(uint32 Type, const char *CharName, const char *Message);
void CrossZoneMessagePlayerByGroupID(uint32 Type, int GroupID, const char *Message);
void CrossZoneMessagePlayerByRaidID(uint32 Type, int RaidID, const char *Message);
void CrossZoneMessagePlayerByGuildID(uint32 Type, int GuildID, const char *Message);
void WorldWideMarquee(uint32 Type, uint32 Priority, uint32 FadeIn, uint32 FadeOut, uint32 Duration, const char *Message);
bool EnableRecipe(uint32 recipe_id);

View File

@ -1926,6 +1926,28 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
}
break;
}
case ServerOP_CZSignalRaid:
{
CZRaidSignal_Struct* CZRS = (CZRaidSignal_Struct*)pack->pBuffer;
auto client_list = entity_list.GetClientList();
for (auto client : client_list) {
if (client.second->GetRaid() && client.second->GetRaid()->GetID() == CZRS->raid_id) {
client.second->Signal(CZRS->data);
}
}
break;
}
case ServerOP_CZSignalGuild:
{
CZGuildSignal_Struct* CZGS = (CZGuildSignal_Struct*)pack->pBuffer;
auto client_list = entity_list.GetClientList();
for (auto client : client_list) {
if (client.second->GuildID() > 0 && client.second->GuildID() == CZGS->guild_id) {
client.second->Signal(CZGS->data);
}
}
break;
}
case ServerOP_CZSignalClientByName:
{
CZClientSignalByName_Struct* CZCS = (CZClientSignalByName_Struct*)pack->pBuffer;
@ -1944,6 +1966,28 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
}
break;
}
case ServerOP_CZMessageGroup:
{
CZMessageGroup_Struct* CZGM = (CZMessageGroup_Struct*)pack->pBuffer;
auto client_list = entity_list.GetClientList();
for (auto client : client_list) {
if (client.second->GetGroup() && client.second->GetGroup()->GetID() == CZGM->GroupID) {
client.second->Message(CZGM->Type, CZGM->Message);
}
}
break;
}
case ServerOP_CZMessageRaid:
{
CZMessageRaid_Struct* CZRM = (CZMessageRaid_Struct*)pack->pBuffer;
auto client_list = entity_list.GetClientList();
for (auto client : client_list) {
if (client.second->GetRaid() && client.second->GetRaid()->GetID() == CZRM->RaidID) {
client.second->Message(CZRM->Type, CZRM->Message);
}
}
break;
}
case ServerOP_CZMessageGuild:
{
CZMessageGuild_Struct* CZGM = (CZMessageGuild_Struct*)pack->pBuffer;
@ -1964,6 +2008,39 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
}
break;
}
case ServerOP_CZSetEntityVariableByGroupID:
{
CZSetEntVarByGroupID_Struct* CZCS = (CZSetEntVarByGroupID_Struct*)pack->pBuffer;
auto client_list = entity_list.GetClientList();
for (auto client : client_list) {
if (client.second->GetGroup() && client.second->GetGroup()->GetID() == CZCS->group_id) {
client.second->SetEntityVariable(CZCS->id, CZCS->m_var);
}
}
break;
}
case ServerOP_CZSetEntityVariableByRaidID:
{
CZSetEntVarByRaidID_Struct* CZCS = (CZSetEntVarByRaidID_Struct*)pack->pBuffer;
auto client_list = entity_list.GetClientList();
for (auto client : client_list) {
if (client.second->GetRaid() && client.second->GetRaid()->GetID() == CZCS->raid_id) {
client.second->SetEntityVariable(CZCS->id, CZCS->m_var);
}
}
break;
}
case ServerOP_CZSetEntityVariableByGuildID:
{
CZSetEntVarByGuildID_Struct* CZCS = (CZSetEntVarByGuildID_Struct*)pack->pBuffer;
auto client_list = entity_list.GetClientList();
for (auto client : client_list) {
if (client.second->GuildID() > 0 && client.second->GuildID() == CZCS->guild_id) {
client.second->SetEntityVariable(CZCS->id, CZCS->m_var);
}
}
break;
}
case ServerOP_WWMarquee:
{
WWMarquee_Struct* WWMS = (WWMarquee_Struct*)pack->pBuffer;