[Quest API] Cleanup Signal Methods in Perl/Lua. (#2604)

# Perl
- Add `$client->Signal(signal_id)`.

# Notes
- Some places still had signal as `uint32` versus `int`.
- Rename `signal` to `signal_id` where valid so we don't have conflicts.
This commit is contained in:
Alex King 2022-12-04 17:40:48 -05:00 committed by GitHub
parent ede3ed4df3
commit e1d5274bd5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 82 additions and 76 deletions

View File

@ -1528,7 +1528,7 @@ struct CZSetEntityVariable_Struct {
struct CZSignal_Struct {
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 signal;
int signal_id;
char client_name[64]; // Only used by Character Name Type, else empty
};
@ -1601,7 +1601,7 @@ struct WWSetEntityVariable_Struct {
struct WWSignal_Struct {
uint8 update_type; // 0 - Character, 1 - NPC
int signal;
int signal_id;
uint8 min_status;
uint8 max_status;
};

View File

@ -901,7 +901,7 @@ void ConsoleSignalCharByName(
int update_identifier = 0;
CZS->update_type = update_type;
CZS->update_identifier = update_identifier;
CZS->signal = atoi(args[1].c_str());
CZS->signal_id = atoi(args[1].c_str());
strn0cpy(CZS->client_name, (char *) args[0].c_str(), 64);
zoneserver_list.SendPacket(pack);
safe_delete(pack);

View File

@ -3173,40 +3173,40 @@ void Perl__crosszonesetentityvariablebynpctypeid(int npc_id, const char* variabl
quest_manager.CrossZoneSetEntityVariable(CZUpdateType_NPC, npc_id, variable_name, variable_value);
}
void Perl__crosszonesignalclientbycharid(int character_id, int signal)
void Perl__crosszonesignalclientbycharid(int character_id, int signal_id)
{
quest_manager.CrossZoneSignal(CZUpdateType_Character, character_id, signal);
quest_manager.CrossZoneSignal(CZUpdateType_Character, character_id, signal_id);
}
void Perl__crosszonesignalclientbygroupid(int group_id, int signal)
void Perl__crosszonesignalclientbygroupid(int group_id, int signal_id)
{
quest_manager.CrossZoneSignal(CZUpdateType_Group, group_id, signal);
quest_manager.CrossZoneSignal(CZUpdateType_Group, group_id, signal_id);
}
void Perl__crosszonesignalclientbyraidid(int raid_id, int signal)
void Perl__crosszonesignalclientbyraidid(int raid_id, int signal_id)
{
quest_manager.CrossZoneSignal(CZUpdateType_Raid, raid_id, signal);
quest_manager.CrossZoneSignal(CZUpdateType_Raid, raid_id, signal_id);
}
void Perl__crosszonesignalclientbyguildid(int guild_id, int signal)
void Perl__crosszonesignalclientbyguildid(int guild_id, int signal_id)
{
quest_manager.CrossZoneSignal(CZUpdateType_Guild, guild_id, signal);
quest_manager.CrossZoneSignal(CZUpdateType_Guild, guild_id, signal_id);
}
void Perl__crosszonesignalclientbyexpeditionid(uint32 expedition_id, int signal)
void Perl__crosszonesignalclientbyexpeditionid(uint32 expedition_id, int signal_id)
{
quest_manager.CrossZoneSignal(CZUpdateType_Expedition, expedition_id, signal);
quest_manager.CrossZoneSignal(CZUpdateType_Expedition, expedition_id, signal_id);
}
void Perl__crosszonesignalclientbyname(const char* client_name, int signal)
void Perl__crosszonesignalclientbyname(const char* client_name, int signal_id)
{
int update_identifier = 0;
quest_manager.CrossZoneSignal(CZUpdateType_Expedition, update_identifier, signal, client_name);
quest_manager.CrossZoneSignal(CZUpdateType_Expedition, update_identifier, signal_id, client_name);
}
void Perl__crosszonesignalnpcbynpctypeid(uint32 npc_id, int signal)
void Perl__crosszonesignalnpcbynpctypeid(uint32 npc_id, int signal_id)
{
quest_manager.CrossZoneSignal(CZUpdateType_NPC, npc_id, signal);
quest_manager.CrossZoneSignal(CZUpdateType_NPC, npc_id, signal_id);
}
void Perl__crosszoneupdateactivitybycharid(int character_id, uint32 task_id, int activity_id)
@ -3638,24 +3638,24 @@ void Perl__worldwidesetentityvariablenpc(const char* variable_name, const char*
quest_manager.WorldWideSetEntityVariable(WWSetEntityVariableUpdateType_NPC, variable_name, variable_value);
}
void Perl__worldwidesignalnpc(int signal)
void Perl__worldwidesignalnpc(int signal_id)
{
quest_manager.WorldWideSignal(WWSignalUpdateType_NPC, signal);
quest_manager.WorldWideSignal(WWSignalUpdateType_NPC, signal_id);
}
void Perl__worldwidesignalclient(int signal)
void Perl__worldwidesignalclient(int signal_id)
{
quest_manager.WorldWideSignal(WWSignalUpdateType_Character, signal);
quest_manager.WorldWideSignal(WWSignalUpdateType_Character, signal_id);
}
void Perl__worldwidesignalclient(int signal, uint8 min_status)
void Perl__worldwidesignalclient(int signal_id, uint8 min_status)
{
quest_manager.WorldWideSignal(WWSignalUpdateType_Character, signal, min_status);
quest_manager.WorldWideSignal(WWSignalUpdateType_Character, signal_id, min_status);
}
void Perl__worldwidesignalclient(int signal, uint8 min_status, uint8 max_status)
void Perl__worldwidesignalclient(int signal_id, uint8 min_status, uint8 max_status)
{
quest_manager.WorldWideSignal(WWSignalUpdateType_Character, signal, min_status, max_status);
quest_manager.WorldWideSignal(WWSignalUpdateType_Character, signal_id, min_status, max_status);
}
void Perl__worldwideupdateactivity(uint32 task_id, int activity_id)

View File

@ -3409,7 +3409,7 @@ luabind::scope lua_register_client() {
.def("SetTint", (void(Lua_Client::*)(int,uint32))&Lua_Client::SetTint)
.def("SetTitleSuffix", (void(Lua_Client::*)(const char *))&Lua_Client::SetTitleSuffix)
.def("SetZoneFlag", (void(Lua_Client::*)(uint32))&Lua_Client::SetZoneFlag)
.def("Signal", (void(Lua_Client::*)(uint32))&Lua_Client::Signal)
.def("Signal", (void(Lua_Client::*)(int))&Lua_Client::Signal)
.def("Sit", (void(Lua_Client::*)(void))&Lua_Client::Sit)
.def("Stand", (void(Lua_Client::*)(void))&Lua_Client::Stand)
.def("SummonBaggedItems", (void(Lua_Client::*)(uint32,luabind::adl::object))&Lua_Client::SummonBaggedItems)

View File

@ -281,9 +281,9 @@ std::string Lua_EntityList::RemoveNumbers(const char *name) {
return self->RemoveNumbers(t_name);
}
void Lua_EntityList::SignalMobsByNPCID(uint32 npc_id, int signal) {
void Lua_EntityList::SignalMobsByNPCID(uint32 npc_id, int signal_id) {
Lua_Safe_Call_Void();
self->SignalMobsByNPCID(npc_id, signal);
self->SignalMobsByNPCID(npc_id, signal_id);
}
uint32 Lua_EntityList::DeleteNPCCorpses() {
@ -558,9 +558,9 @@ Lua_Spawn_List Lua_EntityList::GetSpawnList() {
return ret;
}
void Lua_EntityList::SignalAllClients(int signal) {
void Lua_EntityList::SignalAllClients(int signal_id) {
Lua_Safe_Call_Void();
self->SignalAllClients(signal);
self->SignalAllClients(signal_id);
}
void Lua_EntityList::ChannelMessage(Lua_Mob from, int channel_num, int language, const char *message) {

View File

@ -101,7 +101,7 @@ public:
void OpenDoorsNear(Lua_Mob opener);
std::string MakeNameUnique(const char *name);
std::string RemoveNumbers(const char *name);
void SignalMobsByNPCID(uint32 npc_id, int signal);
void SignalMobsByNPCID(uint32 npc_id, int signal_id);
uint32 DeleteNPCCorpses();
uint32 DeletePlayerCorpses();
void HalveAggro(Lua_Mob who);
@ -128,7 +128,7 @@ public:
Lua_Object_List GetObjectList();
Lua_Doors_List GetDoorsList();
Lua_Spawn_List GetSpawnList();
void SignalAllClients(int signal);
void SignalAllClients(int signal_id);
void ChannelMessage(Lua_Mob from, int channel_num, int language, const char *message);
#ifdef BOTS
Lua_Bot GetBotByID(uint32 bot_id);

View File

@ -2868,40 +2868,40 @@ void lua_cross_zone_set_entity_variable_by_client_name(const char* character_nam
quest_manager.CrossZoneSetEntityVariable(update_type, update_identifier, variable_name, variable_value, character_name);
}
void lua_cross_zone_signal_client_by_char_id(uint32 character_id, int signal) {
void lua_cross_zone_signal_client_by_char_id(uint32 character_id, int signal_id) {
uint8 update_type = CZUpdateType_Character;
quest_manager.CrossZoneSignal(update_type, character_id, signal);
quest_manager.CrossZoneSignal(update_type, character_id, signal_id);
}
void lua_cross_zone_signal_client_by_group_id(uint32 group_id, int signal) {
void lua_cross_zone_signal_client_by_group_id(uint32 group_id, int signal_id) {
uint8 update_type = CZUpdateType_Group;
quest_manager.CrossZoneSignal(update_type, group_id, signal);
quest_manager.CrossZoneSignal(update_type, group_id, signal_id);
}
void lua_cross_zone_signal_client_by_raid_id(uint32 raid_id, int signal) {
void lua_cross_zone_signal_client_by_raid_id(uint32 raid_id, int signal_id) {
uint8 update_type = CZUpdateType_Raid;
quest_manager.CrossZoneSignal(update_type, raid_id, signal);
quest_manager.CrossZoneSignal(update_type, raid_id, signal_id);
}
void lua_cross_zone_signal_client_by_guild_id(uint32 guild_id, int signal) {
void lua_cross_zone_signal_client_by_guild_id(uint32 guild_id, int signal_id) {
uint8 update_type = CZUpdateType_Guild;
quest_manager.CrossZoneSignal(update_type, guild_id, signal);
quest_manager.CrossZoneSignal(update_type, guild_id, signal_id);
}
void lua_cross_zone_signal_client_by_expedition_id(uint32 expedition_id, int signal) {
void lua_cross_zone_signal_client_by_expedition_id(uint32 expedition_id, int signal_id) {
uint8 update_type = CZUpdateType_Expedition;
quest_manager.CrossZoneSignal(update_type, expedition_id, signal);
quest_manager.CrossZoneSignal(update_type, expedition_id, signal_id);
}
void lua_cross_zone_signal_client_by_name(const char* client_name, int signal) {
void lua_cross_zone_signal_client_by_name(const char* client_name, int signal_id) {
uint8 update_type = CZUpdateType_ClientName;
int update_identifier = 0;
quest_manager.CrossZoneSignal(update_type, update_identifier, signal, client_name);
quest_manager.CrossZoneSignal(update_type, update_identifier, signal_id, client_name);
}
void lua_cross_zone_signal_npc_by_npctype_id(uint32 npctype_id, int signal) {
void lua_cross_zone_signal_npc_by_npctype_id(uint32 npctype_id, int signal_id) {
uint8 update_type = CZUpdateType_NPC;
quest_manager.CrossZoneSignal(update_type, npctype_id, signal);
quest_manager.CrossZoneSignal(update_type, npctype_id, signal_id);
}
void lua_cross_zone_update_activity_by_char_id(int character_id, uint32 task_id, int activity_id) {
@ -3329,24 +3329,24 @@ void lua_world_wide_set_entity_variable_npc(const char* variable_name, const cha
quest_manager.WorldWideSetEntityVariable(update_type, variable_name, variable_value);
}
void lua_world_wide_signal_client(uint32 signal) {
void lua_world_wide_signal_client(int signal_id) {
uint8 update_type = WWSignalUpdateType_Character;
quest_manager.WorldWideSignal(update_type, signal);
quest_manager.WorldWideSignal(update_type, signal_id);
}
void lua_world_wide_signal_client(uint32 signal, uint8 min_status) {
void lua_world_wide_signal_client(int signal_id, uint8 min_status) {
uint8 update_type = WWSignalUpdateType_Character;
quest_manager.WorldWideSignal(update_type, signal, min_status);
quest_manager.WorldWideSignal(update_type, signal_id, min_status);
}
void lua_world_wide_signal_client(uint32 signal, uint8 min_status, uint8 max_status) {
void lua_world_wide_signal_client(int signal_id, uint8 min_status, uint8 max_status) {
uint8 update_type = WWSignalUpdateType_Character;
quest_manager.WorldWideSignal(update_type, signal, min_status, max_status);
quest_manager.WorldWideSignal(update_type, signal_id, min_status, max_status);
}
void lua_world_wide_signal_npc(uint32 signal) {
void lua_world_wide_signal_npc(int signal_id) {
uint8 update_type = WWSignalUpdateType_NPC;
quest_manager.WorldWideSignal(update_type, signal);
quest_manager.WorldWideSignal(update_type, signal_id);
}
void lua_world_wide_update_activity(uint32 task_id, int activity_id) {
@ -4329,9 +4329,9 @@ luabind::scope lua_register_general() {
luabind::def("world_wide_set_entity_variable_client", (void(*)(const char*,const char*,uint8))&lua_world_wide_set_entity_variable_client),
luabind::def("world_wide_set_entity_variable_client", (void(*)(const char*,const char*,uint8,uint8))&lua_world_wide_set_entity_variable_client),
luabind::def("world_wide_set_entity_variable_npc", &lua_world_wide_set_entity_variable_npc),
luabind::def("world_wide_signal_client", (void(*)(uint32))&lua_world_wide_signal_client),
luabind::def("world_wide_signal_client", (void(*)(uint32,uint8))&lua_world_wide_signal_client),
luabind::def("world_wide_signal_client", (void(*)(uint32,uint8,uint8))&lua_world_wide_signal_client),
luabind::def("world_wide_signal_client", (void(*)(int))&lua_world_wide_signal_client),
luabind::def("world_wide_signal_client", (void(*)(int,uint8))&lua_world_wide_signal_client),
luabind::def("world_wide_signal_client", (void(*)(int,uint8,uint8))&lua_world_wide_signal_client),
luabind::def("world_wide_signal_npc", &lua_world_wide_signal_npc),
luabind::def("world_wide_update_activity", (void(*)(uint32,int))&lua_world_wide_update_activity),
luabind::def("world_wide_update_activity", (void(*)(uint32,int,int))&lua_world_wide_update_activity),

View File

@ -2732,6 +2732,11 @@ perl::array Perl_Client_GetZoneFlags(Client* self)
return a;
}
void Perl_Client_Signal(Client* self, int signal_id)
{
self->Signal(signal_id);
}
std::string Perl_Client_GetGuildPublicNote(Client* self)
{
return self->GetGuildPublicNote();
@ -3276,6 +3281,7 @@ void perl_register_client()
package.add("SetTitleSuffix", (void(*)(Client*, std::string))&Perl_Client_SetTitleSuffix);
package.add("SetTitleSuffix", (void(*)(Client*, std::string, bool))&Perl_Client_SetTitleSuffix);
package.add("SetZoneFlag", &Perl_Client_SetZoneFlag);
package.add("Signal", &Perl_Client_Signal);
package.add("SilentMessage", &Perl_Client_SilentMessage);
package.add("Sit", &Perl_Client_Sit);
package.add("SlotConvert2", &Perl_Client_SlotConvert2);

View File

@ -533,9 +533,9 @@ perl::array Perl_EntityList_GetDoorsList(EntityList* self) // @categories Script
return result;
}
void Perl_EntityList_SignalAllClients(EntityList* self, uint32_t data) // @categories Script Utility
void Perl_EntityList_SignalAllClients(EntityList* self, int signal_id) // @categories Script Utility
{
entity_list.SignalAllClients(data);
entity_list.SignalAllClients(signal_id);
}
Mob* Perl_EntityList_GetRandomMob(EntityList* self) // @categories Account and Character, Script Utility

View File

@ -3701,12 +3701,12 @@ void QuestManager::CrossZoneSetEntityVariable(uint8 update_type, int update_iden
safe_delete(pack);
}
void QuestManager::CrossZoneSignal(uint8 update_type, int update_identifier, int signal, const char* client_name) {
void QuestManager::CrossZoneSignal(uint8 update_type, int update_identifier, int signal_id, const char* client_name) {
auto pack = new ServerPacket(ServerOP_CZSignal, sizeof(CZSignal_Struct));
CZSignal_Struct* CZS = (CZSignal_Struct*)pack->pBuffer;
CZS->update_type = update_type;
CZS->update_identifier = update_identifier;
CZS->signal = signal;
CZS->signal_id = signal_id;
strn0cpy(CZS->client_name, client_name, 64);
worldserver.SendPacket(pack);
safe_delete(pack);
@ -3811,11 +3811,11 @@ void QuestManager::WorldWideSetEntityVariable(uint8 update_type, const char* var
safe_delete(pack);
}
void QuestManager::WorldWideSignal(uint8 update_type, int signal, uint8 min_status, uint8 max_status) {
void QuestManager::WorldWideSignal(uint8 update_type, int signal_id, uint8 min_status, uint8 max_status) {
auto pack = new ServerPacket(ServerOP_WWSignal, sizeof(WWSignal_Struct));
WWSignal_Struct* WWS = (WWSignal_Struct*)pack->pBuffer;
WWS->update_type = update_type;
WWS->signal = signal;
WWS->signal_id = signal_id;
WWS->min_status = min_status;
WWS->max_status = max_status;
worldserver.SendPacket(pack);

View File

@ -313,7 +313,7 @@ public:
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 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, 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 CrossZoneTaskUpdate(uint8 update_type, uint8 update_subtype, int update_identifier, uint32 task_identifier, int task_subidentifier = -1, int update_count = 1, bool enforce_level_requirement = false, const char* client_name = "");
void WorldWideDialogueWindow(const char* message, uint8 min_status = AccountStatus::Player, uint8 max_status = AccountStatus::Player);
@ -322,7 +322,7 @@ public:
void WorldWideMessage(uint32 type, const char* message, uint8 min_status = AccountStatus::Player, uint8 max_status = AccountStatus::Player);
void WorldWideMove(uint8 update_type, const char* zone_short_name, uint16 instance_id = 0, uint8 min_status = AccountStatus::Player, uint8 max_status = AccountStatus::Player);
void WorldWideSetEntityVariable(uint8 update_type, const char* variable_name, const char* variable_value, uint8 min_status = AccountStatus::Player, uint8 max_status = AccountStatus::Player);
void WorldWideSignal(uint8 update_type, int signal, uint8 min_status = AccountStatus::Player, uint8 max_status = AccountStatus::Player);
void WorldWideSignal(uint8 update_type, int signal_id, uint8 min_status = AccountStatus::Player, uint8 max_status = AccountStatus::Player);
void WorldWideSpell(uint8 update_type, uint32 spell_id, uint8 min_status = AccountStatus::Player, uint8 max_status = AccountStatus::Player);
void WorldWideTaskUpdate(uint8 update_type, uint32 task_identifier, int task_subidentifier = -1, int update_count = 1, bool enforce_level_requirement = false, uint8 min_status = AccountStatus::Player, uint8 max_status = AccountStatus::Player);
bool EnableRecipe(uint32 recipe_id);

View File

@ -2614,12 +2614,12 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
CZSignal_Struct* CZS = (CZSignal_Struct*) pack->pBuffer;
uint8 update_type = CZS->update_type;
int update_identifier = CZS->update_identifier;
int signal = CZS->signal;
int signal_id = CZS->signal_id;
const char* client_name = CZS->client_name;
if (update_type == CZUpdateType_Character) {
auto client = entity_list.GetClientByCharID(update_identifier);
if (client) {
client->Signal(signal);
client->Signal(signal_id);
}
} else if (update_type == CZUpdateType_Group) {
auto client_group = entity_list.GetGroupByID(update_identifier);
@ -2627,7 +2627,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) {
if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) {
auto group_member = client_group->members[member_index]->CastToClient();
group_member->Signal(signal);
group_member->Signal(signal_id);
}
}
}
@ -2637,31 +2637,31 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) {
if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) {
auto raid_member = client_raid->members[member_index].member->CastToClient();
raid_member->Signal(signal);
raid_member->Signal(signal_id);
}
}
}
} else if (update_type == CZUpdateType_Guild) {
for (auto &client: entity_list.GetClientList()) {
if (client.second->GuildID() > 0 && client.second->GuildID() == update_identifier) {
client.second->Signal(signal);
client.second->Signal(signal_id);
}
}
} else if (update_type == CZUpdateType_Expedition) {
for (auto &client: entity_list.GetClientList()) {
if (client.second->GetExpedition() && client.second->GetExpedition()->GetID() == update_identifier) {
client.second->Signal(signal);
client.second->Signal(signal_id);
}
}
} else if (update_type == CZUpdateType_ClientName) {
auto client = entity_list.GetClientByName(client_name);
if (client) {
client->Signal(signal);
client->Signal(signal_id);
}
} else if (update_type == CZUpdateType_NPC) {
auto npc = entity_list.GetNPCByNPCTypeID(update_identifier);
if (npc) {
npc->SignalNPC(signal);
npc->SignalNPC(signal_id);
}
}
break;
@ -3083,18 +3083,18 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
{
WWSignal_Struct* WWS = (WWSignal_Struct*) pack->pBuffer;
uint8 update_type = WWS->update_type;
uint32 signal = WWS->signal;
int signal_id = WWS->signal_id;
uint8 min_status = WWS->min_status;
uint8 max_status = WWS->max_status;
if (update_type == WWSignalUpdateType_Character) {
for (auto &client : entity_list.GetClientList()) {
if (client.second->Admin() >= min_status && (client.second->Admin() <= max_status || max_status == AccountStatus::Player)) {
client.second->Signal(signal);
client.second->Signal(signal_id);
}
}
} else if (update_type == WWSignalUpdateType_NPC) {
for (auto &npc : entity_list.GetNPCList()) {
npc.second->SignalNPC(signal);
npc.second->SignalNPC(signal_id);
}
}
break;