mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 17:51:28 +00:00
Add CrossZoneSignalPlayerByGroupID() to Perl/Lua.
This commit is contained in:
parent
518bcb58d3
commit
12c4b20169
@ -198,6 +198,7 @@
|
|||||||
#define ServerOP_UCSServerStatusRequest 0x4013
|
#define ServerOP_UCSServerStatusRequest 0x4013
|
||||||
#define ServerOP_UCSServerStatusReply 0x4014
|
#define ServerOP_UCSServerStatusReply 0x4014
|
||||||
#define ServerOP_HotReloadQuests 0x4015
|
#define ServerOP_HotReloadQuests 0x4015
|
||||||
|
#define ServerOP_CZSignalGroup 0x4016
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* QueryServer
|
* QueryServer
|
||||||
@ -1167,6 +1168,11 @@ struct CZClientSignal_Struct {
|
|||||||
uint32 data;
|
uint32 data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct CZGroupSignal_Struct {
|
||||||
|
int group_id;
|
||||||
|
uint32 data;
|
||||||
|
};
|
||||||
|
|
||||||
struct CZNPCSignal_Struct {
|
struct CZNPCSignal_Struct {
|
||||||
uint32 npctype_id;
|
uint32 npctype_id;
|
||||||
uint32 data;
|
uint32 data;
|
||||||
|
|||||||
@ -1241,6 +1241,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
|
|||||||
case ServerOP_CZSignalNPC:
|
case ServerOP_CZSignalNPC:
|
||||||
case ServerOP_CZSetEntityVariableByNPCTypeID:
|
case ServerOP_CZSetEntityVariableByNPCTypeID:
|
||||||
case ServerOP_CZSignalClient:
|
case ServerOP_CZSignalClient:
|
||||||
|
case ServerOP_CZSignalGroup:
|
||||||
case ServerOP_CZSetEntityVariableByClientName:
|
case ServerOP_CZSetEntityVariableByClientName:
|
||||||
case ServerOP_WWMarquee:
|
case ServerOP_WWMarquee:
|
||||||
case ServerOP_DepopAllPlayersCorpses:
|
case ServerOP_DepopAllPlayersCorpses:
|
||||||
|
|||||||
@ -3721,6 +3721,24 @@ XS(XS__crosszonesignalclientbycharid) {
|
|||||||
XSRETURN_EMPTY;
|
XSRETURN_EMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XS(XS__crosszonesignalclientbygroupid);
|
||||||
|
XS(XS__crosszonesignalclientbygroupid) {
|
||||||
|
dXSARGS;
|
||||||
|
|
||||||
|
if (items != 2)
|
||||||
|
Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbygroupid(int group_id, int value)");
|
||||||
|
|
||||||
|
if (items == 2) {
|
||||||
|
int group_id = (int) SvIV(ST(0));
|
||||||
|
uint32 int_value = (uint32) SvIV(ST(1));
|
||||||
|
quest_manager.CrossZoneSignalPlayerByGroupID(group_id, int_value);
|
||||||
|
} else {
|
||||||
|
Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbygroupid(int group_id, int value)");
|
||||||
|
}
|
||||||
|
|
||||||
|
XSRETURN_EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
XS(XS__crosszonesignalclientbyname);
|
XS(XS__crosszonesignalclientbyname);
|
||||||
XS(XS__crosszonesignalclientbyname) {
|
XS(XS__crosszonesignalclientbyname) {
|
||||||
dXSARGS;
|
dXSARGS;
|
||||||
@ -4176,6 +4194,7 @@ EXTERN_C XS(boot_quest) {
|
|||||||
newXS(strcpy(buf, "crosszonesetentityvariablebynpctypeid"), XS__crosszonesetentityvariablebynpctypeid, file);
|
newXS(strcpy(buf, "crosszonesetentityvariablebynpctypeid"), XS__crosszonesetentityvariablebynpctypeid, file);
|
||||||
newXS(strcpy(buf, "crosszonesetentityvariablebyclientname"), XS__crosszonesetentityvariablebyclientname, file);
|
newXS(strcpy(buf, "crosszonesetentityvariablebyclientname"), XS__crosszonesetentityvariablebyclientname, file);
|
||||||
newXS(strcpy(buf, "crosszonesignalclientbycharid"), XS__crosszonesignalclientbycharid, file);
|
newXS(strcpy(buf, "crosszonesignalclientbycharid"), XS__crosszonesignalclientbycharid, file);
|
||||||
|
newXS(strcpy(buf, "crosszonesignalclientbygroupid"), XS__crosszonesignalclientbygroupid, file);
|
||||||
newXS(strcpy(buf, "crosszonesignalclientbyname"), XS__crosszonesignalclientbyname, file);
|
newXS(strcpy(buf, "crosszonesignalclientbyname"), XS__crosszonesignalclientbyname, file);
|
||||||
newXS(strcpy(buf, "crosszonesignalnpcbynpctypeid"), XS__crosszonesignalnpcbynpctypeid, file);
|
newXS(strcpy(buf, "crosszonesignalnpcbynpctypeid"), XS__crosszonesignalnpcbynpctypeid, file);
|
||||||
newXS(strcpy(buf, "worldwidemarquee"), XS__worldwidemarquee, file);
|
newXS(strcpy(buf, "worldwidemarquee"), XS__worldwidemarquee, file);
|
||||||
|
|||||||
@ -1026,6 +1026,10 @@ void lua_cross_zone_signal_client_by_char_id(uint32 player_id, int signal) {
|
|||||||
quest_manager.CrossZoneSignalPlayerByCharID(player_id, signal);
|
quest_manager.CrossZoneSignalPlayerByCharID(player_id, signal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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_name(const char *player, int signal) {
|
void lua_cross_zone_signal_client_by_name(const char *player, int signal) {
|
||||||
quest_manager.CrossZoneSignalPlayerByName(player, signal);
|
quest_manager.CrossZoneSignalPlayerByName(player, signal);
|
||||||
}
|
}
|
||||||
@ -1839,6 +1843,7 @@ luabind::scope lua_register_general() {
|
|||||||
luabind::def("voice_tell", &lua_voice_tell),
|
luabind::def("voice_tell", &lua_voice_tell),
|
||||||
luabind::def("send_mail", &lua_send_mail),
|
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_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_name", &lua_cross_zone_signal_client_by_name),
|
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_name", &lua_cross_zone_message_player_by_name),
|
||||||
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_client_name", &lua_cross_zone_set_entity_variable_by_client_name),
|
||||||
|
|||||||
@ -3211,6 +3211,15 @@ void QuestManager::CrossZoneSignalPlayerByCharID(int charid, uint32 data){
|
|||||||
safe_delete(pack);
|
safe_delete(pack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QuestManager::CrossZoneSignalPlayerByGroupID(int group_id, uint32 data){
|
||||||
|
auto pack = new ServerPacket(ServerOP_CZSignalGroup, sizeof(CZGroupSignal_Struct));
|
||||||
|
CZGroupSignal_Struct* CZGS = (CZGroupSignal_Struct*) pack->pBuffer;
|
||||||
|
CZGS->group_id = group_id;
|
||||||
|
CZGS->data = data;
|
||||||
|
worldserver.SendPacket(pack);
|
||||||
|
safe_delete(pack);
|
||||||
|
}
|
||||||
|
|
||||||
void QuestManager::CrossZoneSignalPlayerByName(const char *CharName, uint32 data){
|
void QuestManager::CrossZoneSignalPlayerByName(const char *CharName, uint32 data){
|
||||||
uint32 message_len = strlen(CharName) + 1;
|
uint32 message_len = strlen(CharName) + 1;
|
||||||
auto pack = new ServerPacket(ServerOP_CZSignalClientByName, sizeof(CZClientSignalByName_Struct) + message_len);
|
auto pack = new ServerPacket(ServerOP_CZSignalClientByName, sizeof(CZClientSignalByName_Struct) + message_len);
|
||||||
|
|||||||
@ -279,6 +279,7 @@ public:
|
|||||||
int32 GetZoneID(const char *zone);
|
int32 GetZoneID(const char *zone);
|
||||||
const char *GetZoneLongName(const char *zone);
|
const char *GetZoneLongName(const char *zone);
|
||||||
void CrossZoneSignalPlayerByCharID(int charid, uint32 data);
|
void CrossZoneSignalPlayerByCharID(int charid, uint32 data);
|
||||||
|
void CrossZoneSignalPlayerByGroupID(int group_id, uint32 data);
|
||||||
void CrossZoneSignalNPCByNPCTypeID(uint32 npctype_id, uint32 data);
|
void CrossZoneSignalNPCByNPCTypeID(uint32 npctype_id, uint32 data);
|
||||||
void CrossZoneSignalPlayerByName(const char *CharName, uint32 data);
|
void CrossZoneSignalPlayerByName(const char *CharName, uint32 data);
|
||||||
void CrossZoneSetEntityVariableByNPCTypeID(uint32 npctype_id, const char *id, const char *m_var);
|
void CrossZoneSetEntityVariableByNPCTypeID(uint32 npctype_id, const char *id, const char *m_var);
|
||||||
|
|||||||
@ -1915,6 +1915,17 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ServerOP_CZSignalGroup:
|
||||||
|
{
|
||||||
|
CZGroupSignal_Struct* CZGS = (CZGroupSignal_Struct*)pack->pBuffer;
|
||||||
|
auto client_list = entity_list.GetClientList();
|
||||||
|
for (auto client : client_list) {
|
||||||
|
if (client.second->GetGroup() && client.second->GetGroup()->GetID() == CZGS->group_id) {
|
||||||
|
client.second->Signal(CZGS->data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case ServerOP_CZSignalClientByName:
|
case ServerOP_CZSignalClientByName:
|
||||||
{
|
{
|
||||||
CZClientSignalByName_Struct* CZCS = (CZClientSignalByName_Struct*)pack->pBuffer;
|
CZClientSignalByName_Struct* CZCS = (CZClientSignalByName_Struct*)pack->pBuffer;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user