[Quest API] Add EVENT_PAYLOAD to Perl/Lua. (#2611)

* [Quest API] Add EVENT_PAYLOAD to Perl/Lua.

# Perl
- Add `$bot->SendPayload(payload_id)`.
- Add `$bot->SendPayload(payload_id, payload_value)`.
- Add `$client->SendPayload(payload_id)`.
- Add `$client->SendPayload(payload_id, payload_value)`.
- Add `$mob->SendPayload(payload_id)`.
- Add `$mob->SendPayload(payload_id, payload_value)`.
- Add `$npc->SendPayload(payload_id)`.
- Add `$npc->SendPayload(payload_id, payload_value)`.

# Lua
- Add `bot:SendPayload(payload_id)`.
- Add `bot:SendPayload(payload_id, payload_value)`.
- Add `client:SendPayload(payload_id)`.
- Add `client:SendPayload(payload_id, payload_value)`.
- Add `mob:SendPayload(payload_id)`.
- Add `mob:SendPayload(payload_id, payload_value)`.
- Add `npc:SendPayload(payload_id)`.
- Add `npc:SendPayload(payload_id, payload_value)`.

# Notes
- Allows operators to send payload IDs with a payload value, the value can be a comma separated value, JSON, etc.
- The idea is to allow a more configurable event for operators to send information to/from entities.

* Cleanup parser events.
This commit is contained in:
Alex King 2022-12-04 17:47:49 -05:00 committed by GitHub
parent e1d5274bd5
commit 9a35cacf27
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 1630 additions and 342 deletions

View File

@ -10476,12 +10476,18 @@ void Bot::SpawnBotGroupByName(Client* c, std::string botgroup_name, uint32 leade
);
}
void Bot::SignalBot(int signal_id)
void Bot::Signal(int signal_id)
{
const auto export_string = fmt::format("{}", signal_id);
parse->EventBot(EVENT_SIGNAL, this, nullptr, export_string, 0);
}
void Bot::SendPayload(int payload_id, std::string payload_value)
{
const auto export_string = fmt::format("{} {}", payload_id, payload_value);
parse->EventBot(EVENT_PAYLOAD, this, nullptr, export_string, 0);
}
void Bot::OwnerMessage(std::string message)
{
if (!GetBotOwner() || !GetBotOwner()->IsClient()) {

View File

@ -323,7 +323,7 @@ public:
std::string bucket_value,
uint8 bucket_comparison
);
void AddSpellToBotEnforceList(
int16 iPriority,
uint16 iSpellID,
@ -719,7 +719,8 @@ public:
int32 GetBaseDR() { return _baseDR; }
int32 GetBaseCorrup() { return _baseCorrup; }
void SignalBot(int signal_id);
void Signal(int signal_id);
void SendPayload(int payload_id, std::string payload_value = std::string());
void OwnerMessage(std::string message);
protected:

View File

@ -5496,6 +5496,12 @@ void Client::Signal(int signal_id)
parse->EventPlayer(EVENT_SIGNAL, this, export_string, 0);
}
void Client::SendPayload(int payload_id, std::string payload_value)
{
const auto export_string = fmt::format("{} {}", payload_id, payload_value);
parse->EventPlayer(EVENT_PAYLOAD, this, export_string, 0);
}
void Client::SendRewards()
{
std::vector<ClientReward> rewards;

View File

@ -1438,6 +1438,7 @@ public:
void Doppelganger(uint16 spell_id, Mob *target, const char *name_override, int pet_count, int pet_duration);
void NotifyNewTitlesAvailable();
void Signal(int signal_id);
void SendPayload(int payload_id, std::string payload_value = std::string());
Mob *GetBindSightTarget() { return bind_sight_target; }
void SetBindSightTarget(Mob *n) { bind_sight_target = n; }
const uint16 GetBoatID() const { return controlling_boat_id; }

View File

@ -162,7 +162,8 @@ const char *QuestEventSubroutines[_LargestEventID] = {
"EVENT_INSPECT",
"EVENT_TASK_BEFORE_UPDATE",
"EVENT_AA_BUY",
"EVENT_AA_GAIN"
"EVENT_AA_GAIN",
"EVENT_PAYLOAD"
#ifdef BOTS
,
"EVENT_SPELL_EFFECT_BOT",
@ -1603,6 +1604,13 @@ void PerlembParser::ExportEventVariables(
break;
}
case EVENT_PAYLOAD: {
Seperator sep(data);
ExportVar(package_name.c_str(), "payload_id", sep.arg[0]);
ExportVar(package_name.c_str(), "payload_value", sep.arg[1]);
break;
}
case EVENT_NPC_SLAY: {
ExportVar(package_name.c_str(), "killed", mob->GetNPCTypeID());
break;

View File

@ -5214,7 +5214,7 @@ void EntityList::SignalAllBotsByOwnerCharacterID(uint32 character_id, int signal
}
for (const auto& b : client_bot_list) {
b->SignalBot(signal_id);
b->Signal(signal_id);
}
}
@ -5222,7 +5222,7 @@ void EntityList::SignalBotByBotID(uint32 bot_id, int signal_id)
{
auto b = GetBotByBotID(bot_id);
if (b) {
b->SignalBot(signal_id);
b->Signal(signal_id);
}
}
@ -5230,7 +5230,7 @@ void EntityList::SignalBotByBotName(std::string bot_name, int signal_id)
{
auto b = GetBotByBotName(bot_name);
if (b) {
b->SignalBot(signal_id);
b->Signal(signal_id);
}
}
#endif

View File

@ -106,6 +106,7 @@ typedef enum {
EVENT_TASK_BEFORE_UPDATE,
EVENT_AA_BUY,
EVENT_AA_GAIN,
EVENT_PAYLOAD,
#ifdef BOTS
EVENT_SPELL_EFFECT_BOT,
EVENT_SPELL_EFFECT_BUFF_TIC_BOT,

View File

@ -84,9 +84,9 @@ uint32 Lua_Bot::GetBotItemIDBySlot(uint16 slot_id) {
return self->GetBotItemBySlot(slot_id);
}
void Lua_Bot::SignalBot(int signal_id) {
void Lua_Bot::Signal(int signal_id) {
Lua_Safe_Call_Void();
self->SignalBot(signal_id);
self->Signal(signal_id);
}
void Lua_Bot::OwnerMessage(std::string message) {
@ -134,6 +134,16 @@ bool Lua_Bot::HasBotSpellEntry(uint16 spellid) {
return self->HasBotSpellEntry(spellid);
}
void Lua_Bot::SendPayload(int payload_id) {
Lua_Safe_Call_Void();
self->SendPayload(payload_id);
}
void Lua_Bot::SendPayload(int payload_id, std::string payload_value) {
Lua_Safe_Call_Void();
self->SendPayload(payload_id, payload_value);
}
luabind::scope lua_register_bot() {
return luabind::class_<Lua_Bot, Lua_Mob>("Bot")
.def(luabind::constructor<>())
@ -161,7 +171,9 @@ luabind::scope lua_register_bot() {
.def("RemoveBotItem", (void(Lua_Bot::*)(uint32))&Lua_Bot::RemoveBotItem)
.def("SetExpansionBitmask", (void(Lua_Bot::*)(int))&Lua_Bot::SetExpansionBitmask)
.def("SetExpansionBitmask", (void(Lua_Bot::*)(int,bool))&Lua_Bot::SetExpansionBitmask)
.def("SignalBot", (void(Lua_Bot::*)(int))&Lua_Bot::SignalBot);
.def("SendPayload", (void(Lua_Bot::*)(int))&Lua_Bot::SendPayload)
.def("SendPayload", (void(Lua_Bot::*)(int,std::string))&Lua_Bot::SendPayload)
.def("Signal", (void(Lua_Bot::*)(int))&Lua_Bot::Signal);
}
#endif

View File

@ -50,8 +50,10 @@ public:
void RemoveBotItem(uint32 item_id);
void SetExpansionBitmask(int expansion_bitmask);
void SetExpansionBitmask(int expansion_bitmask, bool save);
void SignalBot(int signal_id);
void Signal(int signal_id);
bool HasBotSpellEntry(uint16 spellid);
void SendPayload(int payload_id);
void SendPayload(int payload_id, std::string payload_value);
};
#endif

View File

@ -2855,6 +2855,16 @@ luabind::object Lua_Client::GetZoneFlags(lua_State* L) {
return t;
}
void Lua_Client::SendPayload(int payload_id) {
Lua_Safe_Call_Void();
self->SendPayload(payload_id);
}
void Lua_Client::SendPayload(int payload_id, std::string payload_value) {
Lua_Safe_Call_Void();
self->SendPayload(payload_id, payload_value);
}
std::string Lua_Client::GetGuildPublicNote()
{
Lua_Safe_Call_String();
@ -3316,6 +3326,8 @@ luabind::scope lua_register_client() {
.def("SendSound", (void(Lua_Client::*)(void))&Lua_Client::SendSound)
.def("SendToGuildHall", (void(Lua_Client::*)(void))&Lua_Client::SendToGuildHall)
.def("SendToInstance", (void(Lua_Client::*)(std::string,std::string,uint32,float,float,float,float,std::string,uint32))&Lua_Client::SendToInstance)
.def("SendPayload", (void(Lua_Client::*)(int))&Lua_Client::SendPayload)
.def("SendPayload", (void(Lua_Client::*)(int,std::string))&Lua_Client::SendPayload)
.def("SendWebLink", (void(Lua_Client::*)(const char *))&Lua_Client::SendWebLink)
.def("SendZoneFlagInfo", (void(Lua_Client::*)(Lua_Client))&Lua_Client::SendZoneFlagInfo)
.def("SetAAEXPModifier", (void(Lua_Client::*)(uint32,double))&Lua_Client::SetAAEXPModifier)

View File

@ -450,6 +450,8 @@ public:
void UpdateAdmin(bool from_database);
luabind::object GetPEQZoneFlags(lua_State* L);
luabind::object GetZoneFlags(lua_State* L);
void SendPayload(int payload_id);
void SendPayload(int payload_id, std::string payload_value);
std::string GetGuildPublicNote();
void ApplySpell(int spell_id);

View File

@ -4529,7 +4529,8 @@ luabind::scope lua_register_events() {
luabind::value("inspect", static_cast<int>(EVENT_INSPECT)),
luabind::value("task_before_update", static_cast<int>(EVENT_TASK_BEFORE_UPDATE)),
luabind::value("aa_buy", static_cast<int>(EVENT_AA_BUY)),
luabind::value("aa_gain", static_cast<int>(EVENT_AA_GAIN))
luabind::value("aa_gain", static_cast<int>(EVENT_AA_GAIN)),
luabind::value("payload", static_cast<int>(EVENT_PAYLOAD))
];
}

View File

@ -1366,7 +1366,7 @@ void Lua_Mob::Signal(int signal_id) {
self->CastToNPC()->SignalNPC(signal_id);
#ifdef BOTS
} else if (self->IsBot()) {
self->CastToBot()->SignalBot(signal_id);
self->CastToBot()->Signal(signal_id);
#endif
}
}
@ -2719,6 +2719,34 @@ bool Lua_Mob::EntityVariableExists(std::string variable_name) {
return self->EntityVariableExists(variable_name);
}
void Lua_Mob::SendPayload(int payload_id) {
Lua_Safe_Call_Void();
if (self->IsClient()) {
self->CastToClient()->SendPayload(payload_id);
} else if (self->IsNPC()) {
self->CastToNPC()->SendPayload(payload_id);
#ifdef BOTS
} else if (self->IsBot()) {
self->CastToBot()->SendPayload(payload_id);
#endif
}
}
void Lua_Mob::SendPayload(int payload_id, std::string payload_value) {
Lua_Safe_Call_Void();
if (self->IsClient()) {
self->CastToClient()->SendPayload(payload_id, payload_value);
} else if (self->IsNPC()) {
self->CastToNPC()->SendPayload(payload_id, payload_value);
#ifdef BOTS
} else if (self->IsBot()) {
self->CastToBot()->SendPayload(payload_id, payload_value);
#endif
}
}
#ifdef BOTS
void Lua_Mob::DamageAreaBots(int64 damage) {
Lua_Safe_Call_Void();
@ -3193,6 +3221,8 @@ luabind::scope lua_register_mob() {
.def("SendWearChange", (void(Lua_Mob::*)(uint8))&Lua_Mob::SendWearChange)
.def("SendBeginCast", &Lua_Mob::SendBeginCast)
.def("SendIllusionPacket", (void(Lua_Mob::*)(luabind::adl::object))&Lua_Mob::SendIllusionPacket)
.def("SendPayload", (void(Lua_Mob::*)(int))&Lua_Mob::SendPayload)
.def("SendPayload", (void(Lua_Mob::*)(int,std::string))&Lua_Mob::SendPayload)
.def("SendSpellEffect", (void(Lua_Mob::*)(uint32,uint32,uint32,bool,uint32))&Lua_Mob::SendSpellEffect)
.def("SendSpellEffect", (void(Lua_Mob::*)(uint32,uint32,uint32,bool,uint32,bool))&Lua_Mob::SendSpellEffect)
.def("SendSpellEffect", (void(Lua_Mob::*)(uint32,uint32,uint32,bool,uint32,bool,Lua_Client))&Lua_Mob::SendSpellEffect)

View File

@ -308,6 +308,8 @@ public:
void SetEntityVariable(std::string variable_name, std::string variable_value);
bool EntityVariableExists(std::string variable_name);
void Signal(int signal_id);
void SendPayload(int payload_id);
void SendPayload(int payload_id, std::string payload_value);
bool CombatRange(Lua_Mob other);
void DoSpecialAttackDamage(Lua_Mob other, int skill, int max_damage);
void DoSpecialAttackDamage(Lua_Mob other, int skill, int max_damage, int min_damage);

View File

@ -681,6 +681,16 @@ void Lua_NPC::ReloadSpells()
self->ReloadSpells();
}
void Lua_NPC::SendPayload(int payload_id) {
Lua_Safe_Call_Void();
self->SendPayload(payload_id);
}
void Lua_NPC::SendPayload(int payload_id, std::string payload_value) {
Lua_Safe_Call_Void();
self->SendPayload(payload_id, payload_value);
}
luabind::scope lua_register_npc() {
return luabind::class_<Lua_NPC, Lua_Mob>("NPC")
.def(luabind::constructor<>())
@ -787,6 +797,8 @@ luabind::scope lua_register_npc() {
.def("SaveGuardSpot", (void(Lua_NPC::*)(bool))&Lua_NPC::SaveGuardSpot)
.def("SaveGuardSpot", (void(Lua_NPC::*)(float,float,float,float))&Lua_NPC::SaveGuardSpot)
.def("ScaleNPC", (void(Lua_NPC::*)(uint8))&Lua_NPC::ScaleNPC)
.def("SendPayload", (void(Lua_NPC::*)(int))&Lua_NPC::SendPayload)
.def("SendPayload", (void(Lua_NPC::*)(int,std::string))&Lua_NPC::SendPayload)
.def("SetCopper", (void(Lua_NPC::*)(uint32))&Lua_NPC::SetCopper)
.def("SetFollowCanRun", (void(Lua_NPC::*)(bool))&Lua_NPC::SetFollowCanRun)
.def("SetFollowDistance", (void(Lua_NPC::*)(int))&Lua_NPC::SetFollowDistance)

View File

@ -157,6 +157,8 @@ public:
void RemoveAISpellEffect(int spell_effect_id);
bool HasAISpellEffect(int spell_effect_id);
float GetNPCStat(std::string stat);
void SendPayload(int payload_id);
void SendPayload(int payload_id, std::string payload_value);
};
#endif

View File

@ -149,7 +149,8 @@ const char *LuaEvents[_LargestEventID] = {
"event_inspect",
"event_task_before_update",
"event_aa_buy",
"event_aa_gain"
"event_aa_gain",
"event_payload"
};
extern Zone *zone;
@ -206,6 +207,7 @@ LuaParser::LuaParser() {
NPCArgumentDispatch[EVENT_LEAVE_AREA] = handle_npc_area;
NPCArgumentDispatch[EVENT_LOOT_ZONE] = handle_npc_loot_zone;
NPCArgumentDispatch[EVENT_SPAWN_ZONE] = handle_npc_spawn_zone;
NPCArgumentDispatch[EVENT_PAYLOAD] = handle_npc_payload;
PlayerArgumentDispatch[EVENT_SAY] = handle_player_say;
PlayerArgumentDispatch[EVENT_ENVIRONMENTAL_DAMAGE] = handle_player_environmental_damage;
@ -259,6 +261,7 @@ LuaParser::LuaParser() {
PlayerArgumentDispatch[EVENT_INSPECT] = handle_player_inspect;
PlayerArgumentDispatch[EVENT_AA_BUY] = handle_player_aa_buy;
PlayerArgumentDispatch[EVENT_AA_GAIN] = handle_player_aa_gain;
PlayerArgumentDispatch[EVENT_PAYLOAD] = handle_player_payload;
ItemArgumentDispatch[EVENT_ITEM_CLICK] = handle_item_click;
ItemArgumentDispatch[EVENT_ITEM_CLICK_CAST] = handle_item_click;
@ -296,6 +299,7 @@ LuaParser::LuaParser() {
BotArgumentDispatch[EVENT_TIMER] = handle_bot_timer;
BotArgumentDispatch[EVENT_TRADE] = handle_bot_trade;
BotArgumentDispatch[EVENT_USE_SKILL] = handle_bot_use_skill;
BotArgumentDispatch[EVENT_PAYLOAD] = handle_bot_payload;
#endif
L = nullptr;

File diff suppressed because it is too large Load Diff

View File

@ -12,169 +12,758 @@ typedef void(*EncounterArgumentHandler)(QuestInterface*, lua_State*, Encounter*
typedef void(*BotArgumentHandler)(QuestInterface*, lua_State*, Bot*, Mob*, std::string, uint32, std::vector<std::any>*);
#endif
//NPC
void handle_npc_event_say(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_event_trade(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_event_hp(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_single_mob(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_single_client(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_single_npc(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_task_accepted(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_popup(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_waypoint(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_hate(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_signal(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_timer(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_death(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_cast(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_area(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_null(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_loot_zone(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_spawn_zone(QuestInterface *parse, lua_State* L, NPC* npc, Mob *init, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
// NPC
void handle_npc_event_say(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
//Player
void handle_player_say(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_environmental_damage(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_death(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_timer(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_discover_item(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_fish_forage_success(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_click_object(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_click_door(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_signal(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_popup_response(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_pick_up(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_cast(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_task_fail(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_zone(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_duel_win(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_duel_loss(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_loot(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_task_stage_complete(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_task_update(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_command(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_combine(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_feign(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_area(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_respawn(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_packet(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_null(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_use_skill(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_test_buff(QuestInterface* parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any>* extra_pointers);
void handle_player_combine_validate(QuestInterface* parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any>* extra_pointers);
void handle_player_bot_command(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_warp(QuestInterface* parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any>* extra_pointers);
void handle_player_quest_combine(QuestInterface* parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any>* extra_pointers);
void handle_player_consider(QuestInterface* parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any>* extra_pointers);
void handle_player_consider_corpse(QuestInterface* parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any>* extra_pointers);
void handle_player_equip_item(QuestInterface* parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any>* extra_pointers);
void handle_player_skill_up(QuestInterface* parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any>* extra_pointers);
void handle_player_language_skill_up(QuestInterface* parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any>* extra_pointers);
void handle_player_alt_currency_merchant(QuestInterface* parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any>* extra_pointers);
void handle_player_merchant(QuestInterface* parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any>* extra_pointers);
void handle_player_inspect(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_player_aa_buy(QuestInterface* parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any>* extra_pointers);
void handle_player_aa_gain(QuestInterface* parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
std::vector<std::any>* extra_pointers);
void handle_npc_event_trade(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
//Item
void handle_item_click(QuestInterface *parse, lua_State* L, Client* client, EQ::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_item_timer(QuestInterface *parse, lua_State* L, Client* client, EQ::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_item_proc(QuestInterface *parse, lua_State* L, Client* client, EQ::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_item_loot(QuestInterface *parse, lua_State* L, Client* client, EQ::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_item_equip(QuestInterface *parse, lua_State* L, Client* client, EQ::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_item_augment(QuestInterface *parse, lua_State* L, Client* client, EQ::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_item_augment_insert(QuestInterface *parse, lua_State* L, Client* client, EQ::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_item_augment_remove(QuestInterface *parse, lua_State* L, Client* client, EQ::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_item_null(QuestInterface *parse, lua_State* L, Client* client, EQ::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_event_hp(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
//Spell
void handle_spell_event(QuestInterface *parse, lua_State* L, Mob* mob, Client* client, uint32 spell_id, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_translocate_finish(QuestInterface *parse, lua_State* L, Mob* mob, Client* client, uint32 spell_id, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_spell_null(QuestInterface *parse, lua_State* L, Mob* mob, Client* client, uint32 spell_id, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_npc_single_mob(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_npc_single_client(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_npc_single_npc(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_npc_task_accepted(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_npc_popup(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_npc_waypoint(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_npc_hate(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_npc_signal(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_npc_timer(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_npc_death(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_npc_cast(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_npc_area(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_npc_null(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_npc_loot_zone(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_npc_spawn_zone(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_npc_payload(
QuestInterface *parse,
lua_State* L,
NPC* npc,
Mob *init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
// Player
void handle_player_say(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_environmental_damage(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_death(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_timer(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_discover_item(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_fish_forage_success(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_click_object(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_click_door(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_signal(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_popup_response(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_pick_up(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_cast(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_task_fail(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_zone(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_duel_win(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_duel_loss(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_loot(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_task_stage_complete(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_task_update(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_command(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_combine(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_feign(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_area(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_respawn(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_packet(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_null(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_use_skill(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_test_buff(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_combine_validate(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_bot_command(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_warp(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_quest_combine(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_consider(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_consider_corpse(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_equip_item(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_skill_up(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_language_skill_up(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_alt_currency_merchant(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_merchant(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_inspect(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_aa_buy(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_aa_gain(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_payload(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
//Encounter
void handle_encounter_timer(QuestInterface *parse, lua_State* L, Encounter* encounter, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_encounter_load(QuestInterface *parse, lua_State* L, Encounter* encounter, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_encounter_unload(QuestInterface *parse, lua_State* L, Encounter* encounter, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
void handle_encounter_null(QuestInterface *parse, lua_State* L, Encounter* encounter, std::string data, uint32 extra_data,
std::vector<std::any> *extra_pointers);
// Item
void handle_item_click(
QuestInterface *parse,
lua_State* L,
Client* client,
EQ::ItemInstance* item,
Mob *mob,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_item_timer(
QuestInterface *parse,
lua_State* L,
Client* client,
EQ::ItemInstance* item,
Mob *mob,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_item_proc(
QuestInterface *parse,
lua_State* L,
Client* client,
EQ::ItemInstance* item,
Mob *mob,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_item_loot(
QuestInterface *parse,
lua_State* L,
Client* client,
EQ::ItemInstance* item,
Mob *mob,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_item_equip(
QuestInterface *parse,
lua_State* L,
Client* client,
EQ::ItemInstance* item,
Mob *mob,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_item_augment(
QuestInterface *parse,
lua_State* L,
Client* client,
EQ::ItemInstance* item,
Mob *mob,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_item_augment_insert(
QuestInterface *parse,
lua_State* L,
Client* client,
EQ::ItemInstance* item,
Mob *mob,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_item_augment_remove(
QuestInterface *parse,
lua_State* L,
Client* client,
EQ::ItemInstance* item,
Mob *mob,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_item_null(
QuestInterface *parse,
lua_State* L,
Client* client,
EQ::ItemInstance* item,
Mob *mob,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
// Spell
void handle_spell_event(
QuestInterface *parse,
lua_State* L,
Mob* mob,
Client* client,
uint32 spell_id,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_translocate_finish(
QuestInterface *parse,
lua_State* L,
Mob* mob,
Client* client,
uint32 spell_id,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_spell_null(
QuestInterface *parse,
lua_State* L,
Mob* mob,
Client* client,
uint32 spell_id,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
// Encounter
void handle_encounter_timer(
QuestInterface *parse,
lua_State* L,
Encounter* encounter,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_encounter_load(
QuestInterface *parse,
lua_State* L,
Encounter* encounter,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_encounter_unload(
QuestInterface *parse,
lua_State* L,
Encounter* encounter,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_encounter_null(
QuestInterface *parse,
lua_State* L,
Encounter* encounter,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
// Bot
#ifdef BOTS
void handle_bot_null(
QuestInterface *parse,
@ -296,6 +885,16 @@ void handle_bot_use_skill(
std::vector<std::any> *extra_pointers
);
void handle_bot_payload(
QuestInterface *parse,
lua_State* L,
Bot* bot,
Mob* init,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
#endif
#endif

View File

@ -2477,37 +2477,11 @@ void NPC::CheckSignal() {
if (!signal_q.empty()) {
int signal_id = signal_q.front();
signal_q.pop_front();
std::string export_string = fmt::format("{}", signal_id);
const auto export_string = fmt::format("{}", signal_id);
parse->EventNPC(EVENT_SIGNAL, this, nullptr, export_string, 0);
}
}
/*
alter table npc_types drop column usedspells;
alter table npc_types add column npc_spells_id int(11) unsigned not null default 0 after merchant_id;
Create Table npc_spells (
id int(11) unsigned not null auto_increment primary key,
name tinytext,
parent_list int(11) unsigned not null default 0,
attack_proc smallint(5) not null default -1,
proc_chance tinyint(3) not null default 3
);
create table npc_spells_entries (
id int(11) unsigned not null auto_increment primary key,
npc_spells_id int(11) not null,
spellid smallint(5) not null default 0,
type smallint(5) unsigned not null default 0,
minlevel tinyint(3) unsigned not null default 0,
maxlevel tinyint(3) unsigned not null default 255,
manacost smallint(5) not null default '-1',
recast_delay int(11) not null default '-1',
priority smallint(5) not null default 0,
index npc_spells_id (npc_spells_id)
);
*/
bool IsSpellInList(DBnpcspells_Struct* spell_list, uint16 iSpellID);
bool IsSpellEffectInList(DBnpcspellseffects_Struct* spelleffect_list, uint16 iSpellEffectID, int32 base_value, int32 limit, int32 max_value);

View File

@ -3040,6 +3040,12 @@ void NPC::SignalNPC(int _signal_id)
signal_q.push_back(_signal_id);
}
void NPC::SendPayload(int payload_id, std::string payload_value)
{
const auto export_string = fmt::format("{} {}", payload_id, payload_value);
parse->EventNPC(EVENT_PAYLOAD, this, nullptr, export_string, 0);
}
NPC_Emote_Struct* NPC::GetNPCEmote(uint32 emoteid, uint8 event_) {
LinkedListIterator<NPC_Emote_Struct*> iterator(zone->NPCEmoteList);
iterator.Reset();

View File

@ -262,6 +262,7 @@ public:
void PetOnSpawn(NewSpawn_Struct* ns);
void SignalNPC(int _signal_id);
void SendPayload(int payload_id, std::string payload_value = std::string());
inline int32 GetNPCFactionID() const
{ return npc_faction_id; }
@ -321,8 +322,9 @@ public:
bool MeetsLootDropLevelRequirements(LootDropEntries_Struct loot_drop, bool verbose=false);
void CheckSignal();
virtual void DoClassAttacks(Mob *target);
void CheckSignal();
inline bool IsNotTargetableWithHotkey() const { return no_target_hotkey; }
int64 GetNPCHPRegen() const { return hp_regen + itembonuses.HPRegen + spellbonuses.HPRegen; }
inline const char* GetAmmoIDfile() const { return ammo_idfile; }

View File

@ -81,9 +81,9 @@ uint32 Perl_Bot_GetBotItemIDBySlot(Bot* self, uint16 slot_id)
return self->GetBotItemBySlot(slot_id);
}
void Perl_Bot_SignalBot(Bot* self, int signal_id)
void Perl_Bot_Signal(Bot* self, int signal_id)
{
self->SignalBot(signal_id);
self->Signal(signal_id);
}
void Perl_Bot_OwnerMessage(Bot* self, std::string message)
@ -131,6 +131,16 @@ bool Perl_Bot_HasBotSpellEntry(Bot* self, uint16 spellid)
return self->HasBotSpellEntry(spellid);
}
void Perl_Bot_SendPayload(Bot* self, int payload_id) // @categories Script Utility
{
self->SendPayload(payload_id);
}
void Perl_Bot_SendPayload(Bot* self, int payload_id, std::string payload_value) // @categories Script Utility
{
self->SendPayload(payload_id, payload_value);
}
void perl_register_bot()
{
perl::interpreter state(PERL_GET_THX);
@ -159,9 +169,11 @@ void perl_register_bot()
package.add("ReloadBotSpells", &Perl_Bot_ReloadBotSpells);
package.add("ReloadBotSpellSettings", &Perl_Bot_ReloadBotSpellSettings);
package.add("RemoveBotItem", &Perl_Bot_RemoveBotItem);
package.add("SendPayload", (void(*)(Bot*, int))&Perl_Bot_SendPayload);
package.add("SendPayload", (void(*)(Bot*, int, std::string))&Perl_Bot_SendPayload);
package.add("SetExpansionBitmask", (void(*)(Bot*, int))&Perl_Bot_SetExpansionBitmask);
package.add("SetExpansionBitmask", (void(*)(Bot*, int, bool))&Perl_Bot_SetExpansionBitmask);
package.add("SignalBot", &Perl_Bot_SignalBot);
package.add("Signal", &Perl_Bot_Signal);
}
#endif //EMBPERL_XS_CLASSES

View File

@ -2732,6 +2732,16 @@ perl::array Perl_Client_GetZoneFlags(Client* self)
return a;
}
void Perl_Client_SendPayload(Client* self, int payload_id) // @categories Script Utility
{
self->SendPayload(payload_id);
}
void Perl_Client_SendPayload(Client* self, int payload_id, std::string payload_value) // @categories Script Utility
{
self->SendPayload(payload_id, payload_value);
}
void Perl_Client_Signal(Client* self, int signal_id)
{
self->Signal(signal_id);
@ -3179,6 +3189,8 @@ void perl_register_client()
package.add("SendMarqueeMessage", (void(*)(Client*, uint32, std::string, uint32))&Perl_Client_SendMarqueeMessage);
package.add("SendMarqueeMessage", (void(*)(Client*, uint32, uint32, uint32, uint32, uint32, std::string))&Perl_Client_SendMarqueeMessage);
package.add("SendOPTranslocateConfirm", &Perl_Client_SendOPTranslocateConfirm);
package.add("SendPayload", (void(*)(Client*, int))&Perl_Client_SendPayload);
package.add("SendPayload", (void(*)(Client*, int, std::string))&Perl_Client_SendPayload);
package.add("SendPEQZoneFlagInfo", &Perl_Client_SendPEQZoneFlagInfo);
package.add("SendSound", &Perl_Client_SendSound);
package.add("SendSpellAnim", &Perl_Client_SendSpellAnim);

View File

@ -670,6 +670,16 @@ void Perl_NPC_ReloadSpells(NPC* self)
self->ReloadSpells();
}
void Perl_NPC_SendPayload(NPC* self, int payload_id) // @categories Script Utility
{
self->SendPayload(payload_id);
}
void Perl_NPC_SendPayload(NPC* self, int payload_id, std::string payload_value) // @categories Script Utility
{
self->SendPayload(payload_id, payload_value);
}
void perl_register_npc()
{
perl::interpreter perl(PERL_GET_THX);
@ -786,6 +796,8 @@ void perl_register_npc()
package.add("SaveGuardSpot", (void(*)(NPC*, bool))&Perl_NPC_SaveGuardSpot);
package.add("SaveGuardSpot", (void(*)(NPC*, float, float, float, float))&Perl_NPC_SaveGuardSpot);
package.add("ScaleNPC", &Perl_NPC_ScaleNPC);
package.add("SendPayload", (void(*)(NPC*, int))&Perl_NPC_SendPayload);
package.add("SendPayload", (void(*)(NPC*, int, std::string))&Perl_NPC_SendPayload);
package.add("SetCopper", &Perl_NPC_SetCopper);
package.add("SetGold", &Perl_NPC_SetGold);
package.add("SetGrid", &Perl_NPC_SetGrid);