[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
25 changed files with 1630 additions and 342 deletions
+31 -1
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)