diff --git a/zone/CMakeLists.txt b/zone/CMakeLists.txt index cef968b6d..4a5266ab1 100644 --- a/zone/CMakeLists.txt +++ b/zone/CMakeLists.txt @@ -47,6 +47,7 @@ SET(zone_sources lua_mob.cpp lua_npc.cpp lua_object.cpp + lua_packet.cpp lua_parser.cpp lua_parser_events.cpp lua_raid.cpp @@ -156,6 +157,7 @@ SET(zone_headers lua_mob.h lua_npc.h lua_object.h + lua_packet.h lua_parser.h lua_parser_events.h lua_ptr.h diff --git a/zone/lua_client.cpp b/zone/lua_client.cpp index 81d204029..9768f2b30 100644 --- a/zone/lua_client.cpp +++ b/zone/lua_client.cpp @@ -11,6 +11,7 @@ #include "lua_inventory.h" #include "lua_group.h" #include "lua_raid.h" +#include "lua_packet.h" struct InventoryWhere { }; @@ -1183,6 +1184,26 @@ void Lua_Client::SendItemScale(Lua_ItemInst inst) { self->SendItemScale(inst); } +void Lua_Client::QueuePacket(Lua_Packet app) { + Lua_Safe_Call_Void(); + self->QueuePacket(app); +} + +void Lua_Client::QueuePacket(Lua_Packet app, bool ack_req) { + Lua_Safe_Call_Void(); + self->QueuePacket(app, ack_req); +} + +void Lua_Client::QueuePacket(Lua_Packet app, bool ack_req, int client_connection_status) { + Lua_Safe_Call_Void(); + self->QueuePacket(app, ack_req, static_cast(client_connection_status)); +} + +void Lua_Client::QueuePacket(Lua_Packet app, bool ack_req, int client_connection_status, int filter) { + Lua_Safe_Call_Void(); + self->QueuePacket(app, ack_req, static_cast(client_connection_status), static_cast(filter)); +} + luabind::scope lua_register_client() { return luabind::class_("Client") .def(luabind::constructor<>()) @@ -1418,7 +1439,11 @@ luabind::scope lua_register_client() { .def("PutItemInInventory", (bool(Lua_Client::*)(int,Lua_ItemInst))&Lua_Client::PutItemInInventory) .def("PushItemOnCursor", (bool(Lua_Client::*)(Lua_ItemInst))&Lua_Client::PushItemOnCursor) .def("GetInventory", (Lua_Inventory(Lua_Client::*)(void))&Lua_Client::GetInventory) - .def("SendItemScale", (void(Lua_Client::*)(Lua_ItemInst))&Lua_Client::SendItemScale); + .def("SendItemScale", (void(Lua_Client::*)(Lua_ItemInst))&Lua_Client::SendItemScale) + .def("QueuePacket", (void(Lua_Client::*)(Lua_Packet))&Lua_Client::QueuePacket) + .def("QueuePacket", (void(Lua_Client::*)(Lua_Packet,bool))&Lua_Client::QueuePacket) + .def("QueuePacket", (void(Lua_Client::*)(Lua_Packet,bool,int))&Lua_Client::QueuePacket) + .def("QueuePacket", (void(Lua_Client::*)(Lua_Packet,bool,int,int))&Lua_Client::QueuePacket); } luabind::scope lua_register_inventory_where() { diff --git a/zone/lua_client.h b/zone/lua_client.h index 9c4705cd1..dc757dd73 100644 --- a/zone/lua_client.h +++ b/zone/lua_client.h @@ -8,6 +8,7 @@ class Client; class Lua_Group; class Lua_Raid; class Lua_Inventory; +class Lua_Packet; namespace luabind { struct scope; @@ -263,6 +264,10 @@ public: bool PushItemOnCursor(Lua_ItemInst inst); Lua_Inventory GetInventory(); void SendItemScale(Lua_ItemInst inst); + void QueuePacket(Lua_Packet app); + void QueuePacket(Lua_Packet app, bool ack_req); + void QueuePacket(Lua_Packet app, bool ack_req, int client_connection_status); + void QueuePacket(Lua_Packet app, bool ack_req, int client_connection_status, int filter); }; #endif diff --git a/zone/lua_mob.cpp b/zone/lua_mob.cpp index 98a48e8fc..f3e5d6cbc 100644 --- a/zone/lua_mob.cpp +++ b/zone/lua_mob.cpp @@ -119,7 +119,7 @@ bool Lua_Mob::Attack(Lua_Mob other, int hand, bool from_riposte, bool is_striket cur = opts["crit_flat"]; if(luabind::type(cur) != LUA_TNIL) { try { - options.crit_flat = luabind::object_cast(cur); + options.crit_flat = luabind::object_cast(cur); } catch(luabind::cast_failed) { } } diff --git a/zone/lua_packet.cpp b/zone/lua_packet.cpp new file mode 100644 index 000000000..761a2c26b --- /dev/null +++ b/zone/lua_packet.cpp @@ -0,0 +1,810 @@ +#ifdef LUA_EQEMU + +#include "lua.hpp" +#include +#include + +#include "masterentity.h" +#include "lua_packet.h" + +struct Opcodes { }; + +Lua_Packet::Lua_Packet(int opcode, int size) { + SetLuaPtrData(new EQApplicationPacket(static_cast(opcode), size)); + owned_ = true; +} + +Lua_Packet& Lua_Packet::operator=(const Lua_Packet& o) { + if(o.owned_) { + owned_ = true; + EQApplicationPacket *app = reinterpret_cast(o.d_); + if(app) + d_ = new EQApplicationPacket(app->GetOpcode(), app->pBuffer, app->size); + else + d_ = nullptr; + } else { + owned_ = false; + d_ = o.d_; + } + return *this; +} + +Lua_Packet::Lua_Packet(const Lua_Packet& o) { + if(o.owned_) { + owned_ = true; + EQApplicationPacket *app = reinterpret_cast(o.d_); + if(app) + d_ = new EQApplicationPacket(app->GetOpcode(), app->pBuffer, app->size); + else + d_ = nullptr; + } else { + owned_ = false; + d_ = o.d_; + } +} + +int Lua_Packet::GetOpcode() { + Lua_Safe_Call_Int(); + return static_cast(self->GetOpcode()); +} + +void Lua_Packet::SetOpcode(int op) { + Lua_Safe_Call_Void(); + self->SetOpcode(static_cast(op)); +} + +void Lua_Packet::WriteInt8(int offset, int value) { + Lua_Safe_Call_Void(); + + if(offset + sizeof(int8) <= self->size) { + *reinterpret_cast(self->pBuffer + offset) = value; + } +} + +void Lua_Packet::WriteInt16(int offset, int value) { + Lua_Safe_Call_Void(); + + if(offset + sizeof(int16) <= self->size) { + *reinterpret_cast(self->pBuffer + offset) = value; + } +} + +void Lua_Packet::WriteInt32(int offset, int value) { + Lua_Safe_Call_Void(); + + if(offset + sizeof(int32) <= self->size) { + *reinterpret_cast(self->pBuffer + offset) = value; + } +} + +void Lua_Packet::WriteInt64(int offset, int64 value) { + Lua_Safe_Call_Void(); + + if(offset + sizeof(int64) <= self->size) { + *reinterpret_cast(self->pBuffer + offset) = value; + } +} + +void Lua_Packet::WriteFloat(int offset, float value) { + Lua_Safe_Call_Void(); + + if(offset + sizeof(float) <= self->size) { + *reinterpret_cast(self->pBuffer + offset) = value; + } +} + +void Lua_Packet::WriteDouble(int offset, double value) { + Lua_Safe_Call_Void(); + + if(offset + sizeof(double) <= self->size) { + *reinterpret_cast(self->pBuffer + offset) = value; + } +} + +void Lua_Packet::WriteString(int offset, std::string value) { + Lua_Safe_Call_Void(); + + if(offset + value.length() + 1 <= self->size) { + memcpy(self->pBuffer + offset, value.c_str(), value.length()); + *reinterpret_cast(self->pBuffer + offset + value.length()) = 0; + } +} + +void Lua_Packet::WriteFixedLengthString(int offset, std::string value, int string_length) { + Lua_Safe_Call_Void(); + + if(offset + string_length <= static_cast(self->size)) { + memset(self->pBuffer + offset, 0, string_length); + memcpy(self->pBuffer + offset, value.c_str(), value.length()); + } +} + +int Lua_Packet::ReadInt8(int offset) { + Lua_Safe_Call_Int(); + if(offset + sizeof(int8) <= self->size) { + int8 v = *reinterpret_cast(self->pBuffer + offset); + return v; + } + + return 0; +} + +int Lua_Packet::ReadInt16(int offset) { + Lua_Safe_Call_Int(); + + if(offset + sizeof(int16) <= self->size) { + int16 v = *reinterpret_cast(self->pBuffer + offset); + return v; + } + + return 0; +} + +int Lua_Packet::ReadInt32(int offset) { + Lua_Safe_Call_Int(); + + if(offset + sizeof(int32) <= self->size) { + int32 v = *reinterpret_cast(self->pBuffer + offset); + return v; + } + + return 0; +} + +int64 Lua_Packet::ReadInt64(int offset) { + Lua_Safe_Call_Int(); + + if(offset + sizeof(int64) <= self->size) { + int64 v = *reinterpret_cast(self->pBuffer + offset); + return v; + } + + return 0; +} + +float Lua_Packet::ReadFloat(int offset) { + Lua_Safe_Call_Real(); + + if(offset + sizeof(float) <= self->size) { + float v = *reinterpret_cast(self->pBuffer + offset); + return v; + } + + return 0; +} + +double Lua_Packet::ReadDouble(int offset) { + Lua_Safe_Call_Real(); + + if(offset + sizeof(double) <= self->size) { + double v = *reinterpret_cast(self->pBuffer + offset); + return v; + } + + return 0; +} + +std::string Lua_Packet::ReadString(int offset) { + Lua_Safe_Call_String(); + + if(offset < static_cast(self->size)) { + std::string ret; + + int i = offset; + for(;;) { + if(i >= static_cast(self->size)) { + break; + } + + char c = *reinterpret_cast(self->pBuffer + i); + + if(c == '\0') { + break; + } + + ret.push_back(c); + ++i; + } + + return ret; + } + + return ""; +} + +std::string Lua_Packet::ReadFixedLengthString(int offset, int string_length) { + Lua_Safe_Call_String(); + + if(offset + string_length <= static_cast(self->size)) { + std::string ret; + + int i = offset; + for(;;) { + if(i >= offset + string_length) { + break; + } + + char c = *reinterpret_cast(self->pBuffer + i); + ret.push_back(c); + ++i; + } + + return ret; + } + + return ""; +} + +luabind::scope lua_register_packet() { + return luabind::class_("Packet") + .def(luabind::constructor<>()) + .def(luabind::constructor()) + .property("null", &Lua_Packet::Null) + .property("valid", &Lua_Packet::Valid) + .def("GetOpcode", &Lua_Packet::GetOpcode) + .def("SetOpcode", &Lua_Packet::SetOpcode) + .def("WriteInt8", &Lua_Packet::WriteInt8) + .def("WriteInt16", &Lua_Packet::WriteInt16) + .def("WriteInt32", &Lua_Packet::WriteInt32) + .def("WriteInt64", &Lua_Packet::WriteInt64) + .def("WriteFloat", &Lua_Packet::WriteFloat) + .def("WriteDouble", &Lua_Packet::WriteDouble) + .def("WriteString", &Lua_Packet::WriteString) + .def("WriteFixedLengthString", &Lua_Packet::WriteFixedLengthString) + .def("ReadInt8", &Lua_Packet::ReadInt8) + .def("ReadInt16", &Lua_Packet::ReadInt16) + .def("ReadInt32", &Lua_Packet::ReadInt32) + .def("ReadInt64", &Lua_Packet::ReadInt64) + .def("ReadFloat", &Lua_Packet::ReadFloat) + .def("ReadDouble", &Lua_Packet::ReadDouble) + .def("ReadString", &Lua_Packet::ReadString) + .def("ReadFixedLengthString", &Lua_Packet::ReadFixedLengthString); +} + +luabind::scope lua_register_packet_opcodes() { + return luabind::class_("Opcode") + .enum_("constants") + [ + luabind::value("ExploreUnknown", static_cast(OP_ExploreUnknown)), + luabind::value("Heartbeat", static_cast(OP_Heartbeat)), + luabind::value("ReloadUI", static_cast(OP_ReloadUI)), + luabind::value("IncreaseStats", static_cast(OP_IncreaseStats)), + luabind::value("ApproveZone", static_cast(OP_ApproveZone)), + luabind::value("Dye", static_cast(OP_Dye)), + luabind::value("Stamina", static_cast(OP_Stamina)), + luabind::value("ControlBoat", static_cast(OP_ControlBoat)), + luabind::value("MobUpdate", static_cast(OP_MobUpdate)), + luabind::value("ClientUpdate", static_cast(OP_ClientUpdate)), + luabind::value("ChannelMessage", static_cast(OP_ChannelMessage)), + luabind::value("SimpleMessage", static_cast(OP_SimpleMessage)), + luabind::value("FormattedMessage", static_cast(OP_FormattedMessage)), + luabind::value("TGB", static_cast(OP_TGB)), + luabind::value("Bind_Wound", static_cast(OP_Bind_Wound)), + luabind::value("Charm", static_cast(OP_Charm)), + luabind::value("Begging", static_cast(OP_Begging)), + luabind::value("MoveCoin", static_cast(OP_MoveCoin)), + luabind::value("SpawnDoor", static_cast(OP_SpawnDoor)), + luabind::value("Sneak", static_cast(OP_Sneak)), + luabind::value("ExpUpdate", static_cast(OP_ExpUpdate)), + luabind::value("DumpName", static_cast(OP_DumpName)), + luabind::value("RespondAA", static_cast(OP_RespondAA)), + luabind::value("UpdateAA", static_cast(OP_UpdateAA)), + luabind::value("SendAAStats", static_cast(OP_SendAAStats)), + luabind::value("SendAATable", static_cast(OP_SendAATable)), + luabind::value("AAAction", static_cast(OP_AAAction)), + luabind::value("BoardBoat", static_cast(OP_BoardBoat)), + luabind::value("LeaveBoat", static_cast(OP_LeaveBoat)), + luabind::value("AdventureInfoRequest", static_cast(OP_AdventureInfoRequest)), + luabind::value("AdventureInfo", static_cast(OP_AdventureInfo)), + luabind::value("AdventureRequest", static_cast(OP_AdventureRequest)), + luabind::value("AdventureDetails", static_cast(OP_AdventureDetails)), + luabind::value("LDoNButton", static_cast(OP_LDoNButton)), + luabind::value("AdventureData", static_cast(OP_AdventureData)), + luabind::value("AdventureFinish", static_cast(OP_AdventureFinish)), + luabind::value("LeaveAdventure", static_cast(OP_LeaveAdventure)), + luabind::value("AdventureUpdate", static_cast(OP_AdventureUpdate)), + luabind::value("SendExpZonein", static_cast(OP_SendExpZonein)), + luabind::value("RaidUpdate", static_cast(OP_RaidUpdate)), + luabind::value("GuildLeader", static_cast(OP_GuildLeader)), + luabind::value("GuildPeace", static_cast(OP_GuildPeace)), + luabind::value("GuildRemove", static_cast(OP_GuildRemove)), + luabind::value("GuildMemberList", static_cast(OP_GuildMemberList)), + luabind::value("GuildMemberUpdate", static_cast(OP_GuildMemberUpdate)), + luabind::value("GuildMemberLevelUpdate", static_cast(OP_GuildMemberLevelUpdate)), + luabind::value("GuildInvite", static_cast(OP_GuildInvite)), + luabind::value("GuildMOTD", static_cast(OP_GuildMOTD)), + luabind::value("SetGuildMOTD", static_cast(OP_SetGuildMOTD)), + luabind::value("GuildPublicNote", static_cast(OP_GuildPublicNote)), + luabind::value("GetGuildsList", static_cast(OP_GetGuildsList)), + luabind::value("GuildDemote", static_cast(OP_GuildDemote)), + luabind::value("GuildInviteAccept", static_cast(OP_GuildInviteAccept)), + luabind::value("GuildWar", static_cast(OP_GuildWar)), + luabind::value("GuildDelete", static_cast(OP_GuildDelete)), + luabind::value("GuildManageRemove", static_cast(OP_GuildManageRemove)), + luabind::value("GuildManageAdd", static_cast(OP_GuildManageAdd)), + luabind::value("GuildManageStatus", static_cast(OP_GuildManageStatus)), + luabind::value("GuildManageBanker", static_cast(OP_GuildManageBanker)), + luabind::value("GetGuildMOTD", static_cast(OP_GetGuildMOTD)), + luabind::value("Trader", static_cast(OP_Trader)), + luabind::value("Bazaar", static_cast(OP_Bazaar)), + luabind::value("BecomeTrader", static_cast(OP_BecomeTrader)), + luabind::value("TraderItemUpdate", static_cast(OP_TraderItemUpdate)), + luabind::value("TraderShop", static_cast(OP_TraderShop)), + luabind::value("TraderBuy", static_cast(OP_TraderBuy)), + luabind::value("PetCommands", static_cast(OP_PetCommands)), + luabind::value("TradeSkillCombine", static_cast(OP_TradeSkillCombine)), + luabind::value("AugmentItem", static_cast(OP_AugmentItem)), + luabind::value("ItemName", static_cast(OP_ItemName)), + luabind::value("ShopItem", static_cast(OP_ShopItem)), + luabind::value("ShopPlayerBuy", static_cast(OP_ShopPlayerBuy)), + luabind::value("ShopPlayerSell", static_cast(OP_ShopPlayerSell)), + luabind::value("ShopDelItem", static_cast(OP_ShopDelItem)), + luabind::value("ShopRequest", static_cast(OP_ShopRequest)), + luabind::value("ShopEnd", static_cast(OP_ShopEnd)), + luabind::value("LFGCommand", static_cast(OP_LFGCommand)), + luabind::value("LFGAppearance", static_cast(OP_LFGAppearance)), + luabind::value("GroupUpdate", static_cast(OP_GroupUpdate)), + luabind::value("GroupInvite", static_cast(OP_GroupInvite)), + luabind::value("GroupDisband", static_cast(OP_GroupDisband)), + luabind::value("GroupInvite2", static_cast(OP_GroupInvite2)), + luabind::value("GroupFollow", static_cast(OP_GroupFollow)), + luabind::value("GroupFollow2", static_cast(OP_GroupFollow2)), + luabind::value("GroupCancelInvite", static_cast(OP_GroupCancelInvite)), + luabind::value("CustomTitles", static_cast(OP_CustomTitles)), + luabind::value("Split", static_cast(OP_Split)), + luabind::value("Jump", static_cast(OP_Jump)), + luabind::value("ConsiderCorpse", static_cast(OP_ConsiderCorpse)), + luabind::value("SkillUpdate", static_cast(OP_SkillUpdate)), + luabind::value("GMEndTrainingResponse", static_cast(OP_GMEndTrainingResponse)), + luabind::value("GMEndTraining", static_cast(OP_GMEndTraining)), + luabind::value("GMTrainSkill", static_cast(OP_GMTrainSkill)), + luabind::value("GMTraining", static_cast(OP_GMTraining)), + luabind::value("DeleteItem", static_cast(OP_DeleteItem)), + luabind::value("CombatAbility", static_cast(OP_CombatAbility)), + luabind::value("TrackUnknown", static_cast(OP_TrackUnknown)), + luabind::value("TrackTarget", static_cast(OP_TrackTarget)), + luabind::value("Track", static_cast(OP_Track)), + luabind::value("ItemLinkClick", static_cast(OP_ItemLinkClick)), + luabind::value("ItemLinkResponse", static_cast(OP_ItemLinkResponse)), + luabind::value("ItemLinkText", static_cast(OP_ItemLinkText)), + luabind::value("RezzAnswer", static_cast(OP_RezzAnswer)), + luabind::value("RezzComplete", static_cast(OP_RezzComplete)), + luabind::value("SendZonepoints", static_cast(OP_SendZonepoints)), + luabind::value("SetRunMode", static_cast(OP_SetRunMode)), + luabind::value("InspectRequest", static_cast(OP_InspectRequest)), + luabind::value("InspectAnswer", static_cast(OP_InspectAnswer)), + luabind::value("SenseTraps", static_cast(OP_SenseTraps)), + luabind::value("DisarmTraps", static_cast(OP_DisarmTraps)), + luabind::value("Assist", static_cast(OP_Assist)), + luabind::value("AssistGroup", static_cast(OP_AssistGroup)), + luabind::value("PickPocket", static_cast(OP_PickPocket)), + luabind::value("LootRequest", static_cast(OP_LootRequest)), + luabind::value("EndLootRequest", static_cast(OP_EndLootRequest)), + luabind::value("MoneyOnCorpse", static_cast(OP_MoneyOnCorpse)), + luabind::value("LootComplete", static_cast(OP_LootComplete)), + luabind::value("LootItem", static_cast(OP_LootItem)), + luabind::value("MoveItem", static_cast(OP_MoveItem)), + luabind::value("WhoAllRequest", static_cast(OP_WhoAllRequest)), + luabind::value("WhoAllResponse", static_cast(OP_WhoAllResponse)), + luabind::value("Consume", static_cast(OP_Consume)), + luabind::value("AutoAttack", static_cast(OP_AutoAttack)), + luabind::value("AutoAttack2", static_cast(OP_AutoAttack2)), + luabind::value("TargetMouse", static_cast(OP_TargetMouse)), + luabind::value("TargetCommand", static_cast(OP_TargetCommand)), + luabind::value("TargetReject", static_cast(OP_TargetReject)), + luabind::value("TargetHoTT", static_cast(OP_TargetHoTT)), + luabind::value("Hide", static_cast(OP_Hide)), + luabind::value("Forage", static_cast(OP_Forage)), + luabind::value("Fishing", static_cast(OP_Fishing)), + luabind::value("Bug", static_cast(OP_Bug)), + luabind::value("Emote", static_cast(OP_Emote)), + luabind::value("Consider", static_cast(OP_Consider)), + luabind::value("FaceChange", static_cast(OP_FaceChange)), + luabind::value("RandomReq", static_cast(OP_RandomReq)), + luabind::value("RandomReply", static_cast(OP_RandomReply)), + luabind::value("Camp", static_cast(OP_Camp)), + luabind::value("YellForHelp", static_cast(OP_YellForHelp)), + luabind::value("SafePoint", static_cast(OP_SafePoint)), + luabind::value("Buff", static_cast(OP_Buff)), + luabind::value("BuffFadeMsg", static_cast(OP_BuffFadeMsg)), + luabind::value("SpecialMesg", static_cast(OP_SpecialMesg)), + luabind::value("Consent", static_cast(OP_Consent)), + luabind::value("ConsentResponse", static_cast(OP_ConsentResponse)), + luabind::value("Stun", static_cast(OP_Stun)), + luabind::value("BeginCast", static_cast(OP_BeginCast)), + luabind::value("CastSpell", static_cast(OP_CastSpell)), + luabind::value("InterruptCast", static_cast(OP_InterruptCast)), + luabind::value("Death", static_cast(OP_Death)), + luabind::value("FeignDeath", static_cast(OP_FeignDeath)), + luabind::value("Illusion", static_cast(OP_Illusion)), + luabind::value("LevelUpdate", static_cast(OP_LevelUpdate)), + luabind::value("LevelAppearance", static_cast(OP_LevelAppearance)), + luabind::value("MemorizeSpell", static_cast(OP_MemorizeSpell)), + luabind::value("HPUpdate", static_cast(OP_HPUpdate)), + luabind::value("Mend", static_cast(OP_Mend)), + luabind::value("Taunt", static_cast(OP_Taunt)), + luabind::value("GMDelCorpse", static_cast(OP_GMDelCorpse)), + luabind::value("GMFind", static_cast(OP_GMFind)), + luabind::value("GMServers", static_cast(OP_GMServers)), + luabind::value("GMGoto", static_cast(OP_GMGoto)), + luabind::value("GMSummon", static_cast(OP_GMSummon)), + luabind::value("GMKill", static_cast(OP_GMKill)), + luabind::value("GMLastName", static_cast(OP_GMLastName)), + luabind::value("GMToggle", static_cast(OP_GMToggle)), + luabind::value("GMEmoteZone", static_cast(OP_GMEmoteZone)), + luabind::value("GMBecomeNPC", static_cast(OP_GMBecomeNPC)), + luabind::value("GMHideMe", static_cast(OP_GMHideMe)), + luabind::value("GMZoneRequest", static_cast(OP_GMZoneRequest)), + luabind::value("GMZoneRequest2", static_cast(OP_GMZoneRequest2)), + luabind::value("Petition", static_cast(OP_Petition)), + luabind::value("PetitionRefresh", static_cast(OP_PetitionRefresh)), + luabind::value("PDeletePetition", static_cast(OP_PDeletePetition)), + luabind::value("PetitionBug", static_cast(OP_PetitionBug)), + luabind::value("PetitionUpdate", static_cast(OP_PetitionUpdate)), + luabind::value("PetitionCheckout", static_cast(OP_PetitionCheckout)), + luabind::value("PetitionCheckout2", static_cast(OP_PetitionCheckout2)), + luabind::value("PetitionDelete", static_cast(OP_PetitionDelete)), + luabind::value("PetitionResolve", static_cast(OP_PetitionResolve)), + luabind::value("PetitionCheckIn", static_cast(OP_PetitionCheckIn)), + luabind::value("PetitionUnCheckout", static_cast(OP_PetitionUnCheckout)), + luabind::value("PetitionQue", static_cast(OP_PetitionQue)), + luabind::value("SetServerFilter", static_cast(OP_SetServerFilter)), + luabind::value("NewSpawn", static_cast(OP_NewSpawn)), + luabind::value("Animation", static_cast(OP_Animation)), + luabind::value("ZoneChange", static_cast(OP_ZoneChange)), + luabind::value("DeleteSpawn", static_cast(OP_DeleteSpawn)), + luabind::value("EnvDamage", static_cast(OP_EnvDamage)), + luabind::value("Action", static_cast(OP_Action)), + luabind::value("Damage", static_cast(OP_Damage)), + luabind::value("ManaChange", static_cast(OP_ManaChange)), + luabind::value("ClientError", static_cast(OP_ClientError)), + luabind::value("Save", static_cast(OP_Save)), + luabind::value("LocInfo", static_cast(OP_LocInfo)), + luabind::value("Surname", static_cast(OP_Surname)), + luabind::value("ClearSurname", static_cast(OP_ClearSurname)), + luabind::value("SwapSpell", static_cast(OP_SwapSpell)), + luabind::value("DeleteSpell", static_cast(OP_DeleteSpell)), + luabind::value("CloseContainer", static_cast(OP_CloseContainer)), + luabind::value("ClickObjectAction", static_cast(OP_ClickObjectAction)), + luabind::value("GroundSpawn", static_cast(OP_GroundSpawn)), + luabind::value("ClearObject", static_cast(OP_ClearObject)), + luabind::value("ZoneUnavail", static_cast(OP_ZoneUnavail)), + luabind::value("ItemPacket", static_cast(OP_ItemPacket)), + luabind::value("TradeRequest", static_cast(OP_TradeRequest)), + luabind::value("TradeRequestAck", static_cast(OP_TradeRequestAck)), + luabind::value("TradeAcceptClick", static_cast(OP_TradeAcceptClick)), + luabind::value("TradeMoneyUpdate", static_cast(OP_TradeMoneyUpdate)), + luabind::value("TradeCoins", static_cast(OP_TradeCoins)), + luabind::value("CancelTrade", static_cast(OP_CancelTrade)), + luabind::value("FinishTrade", static_cast(OP_FinishTrade)), + luabind::value("SaveOnZoneReq", static_cast(OP_SaveOnZoneReq)), + luabind::value("Logout", static_cast(OP_Logout)), + luabind::value("LogoutReply", static_cast(OP_LogoutReply)), + luabind::value("PreLogoutReply", static_cast(OP_PreLogoutReply)), + luabind::value("DuelResponse2", static_cast(OP_DuelResponse2)), + luabind::value("InstillDoubt", static_cast(OP_InstillDoubt)), + luabind::value("SafeFallSuccess", static_cast(OP_SafeFallSuccess)), + luabind::value("DisciplineUpdate", static_cast(OP_DisciplineUpdate)), + luabind::value("SendGuildTributes", static_cast(OP_SendGuildTributes)), + luabind::value("SendTributes", static_cast(OP_SendTributes)), + luabind::value("TributeUpdate", static_cast(OP_TributeUpdate)), + luabind::value("TributeItem", static_cast(OP_TributeItem)), + luabind::value("TributePointUpdate", static_cast(OP_TributePointUpdate)), + luabind::value("TributeInfo", static_cast(OP_TributeInfo)), + luabind::value("GuildTributeInfo", static_cast(OP_GuildTributeInfo)), + luabind::value("OpenGuildTributeMaster", static_cast(OP_OpenGuildTributeMaster)), + luabind::value("OpenTributeMaster", static_cast(OP_OpenTributeMaster)), + luabind::value("TributeTimer", static_cast(OP_TributeTimer)), + luabind::value("SelectTribute", static_cast(OP_SelectTribute)), + luabind::value("TributeNPC", static_cast(OP_TributeNPC)), + luabind::value("TributeMoney", static_cast(OP_TributeMoney)), + luabind::value("TributeToggle", static_cast(OP_TributeToggle)), + luabind::value("CloseTributeMaster", static_cast(OP_CloseTributeMaster)), + luabind::value("RecipesFavorite", static_cast(OP_RecipesFavorite)), + luabind::value("RecipesSearch", static_cast(OP_RecipesSearch)), + luabind::value("RecipeReply", static_cast(OP_RecipeReply)), + luabind::value("RecipeDetails", static_cast(OP_RecipeDetails)), + luabind::value("RecipeAutoCombine", static_cast(OP_RecipeAutoCombine)), + luabind::value("Shielding", static_cast(OP_Shielding)), + luabind::value("FindPersonRequest", static_cast(OP_FindPersonRequest)), + luabind::value("FindPersonReply", static_cast(OP_FindPersonReply)), + luabind::value("ZoneEntry", static_cast(OP_ZoneEntry)), + luabind::value("PlayerProfile", static_cast(OP_PlayerProfile)), + luabind::value("CharInventory", static_cast(OP_CharInventory)), + luabind::value("ZoneSpawns", static_cast(OP_ZoneSpawns)), + luabind::value("Weather", static_cast(OP_Weather)), + luabind::value("ReqNewZone", static_cast(OP_ReqNewZone)), + luabind::value("NewZone", static_cast(OP_NewZone)), + luabind::value("ReqClientSpawn", static_cast(OP_ReqClientSpawn)), + luabind::value("SpawnAppearance", static_cast(OP_SpawnAppearance)), + luabind::value("ClientReady", static_cast(OP_ClientReady)), + luabind::value("ZoneComplete", static_cast(OP_ZoneComplete)), + luabind::value("ApproveWorld", static_cast(OP_ApproveWorld)), + luabind::value("LogServer", static_cast(OP_LogServer)), + luabind::value("MOTD", static_cast(OP_MOTD)), + luabind::value("SendLoginInfo", static_cast(OP_SendLoginInfo)), + luabind::value("DeleteCharacter", static_cast(OP_DeleteCharacter)), + luabind::value("SendCharInfo", static_cast(OP_SendCharInfo)), + luabind::value("ExpansionInfo", static_cast(OP_ExpansionInfo)), + luabind::value("CharacterCreate", static_cast(OP_CharacterCreate)), + luabind::value("CharacterCreateRequest", static_cast(OP_CharacterCreateRequest)), + luabind::value("RandomNameGenerator", static_cast(OP_RandomNameGenerator)), + luabind::value("GuildsList", static_cast(OP_GuildsList)), + luabind::value("ApproveName", static_cast(OP_ApproveName)), + luabind::value("EnterWorld", static_cast(OP_EnterWorld)), + luabind::value("PostEnterWorld ", static_cast(OP_PostEnterWorld )), + luabind::value("SendSystemStats", static_cast(OP_SendSystemStats)), + luabind::value("World_Client_CRC1", static_cast(OP_World_Client_CRC1)), + luabind::value("World_Client_CRC2", static_cast(OP_World_Client_CRC2)), + luabind::value("SetChatServer", static_cast(OP_SetChatServer)), + luabind::value("SetChatServer2", static_cast(OP_SetChatServer2)), + luabind::value("ZoneServerInfo", static_cast(OP_ZoneServerInfo)), + luabind::value("WorldClientReady", static_cast(OP_WorldClientReady)), + luabind::value("WorldUnknown001", static_cast(OP_WorldUnknown001)), + luabind::value("AckPacket", static_cast(OP_AckPacket)), + luabind::value("WearChange", static_cast(OP_WearChange)), + luabind::value("CrashDump", static_cast(OP_CrashDump)), + luabind::value("LoginComplete", static_cast(OP_LoginComplete)), + luabind::value("GMNameChange", static_cast(OP_GMNameChange)), + luabind::value("ReadBook", static_cast(OP_ReadBook)), + luabind::value("GMKick", static_cast(OP_GMKick)), + luabind::value("RezzRequest", static_cast(OP_RezzRequest)), + luabind::value("MultiLineMsg", static_cast(OP_MultiLineMsg)), + luabind::value("TimeOfDay", static_cast(OP_TimeOfDay)), + luabind::value("CompletedTasks", static_cast(OP_CompletedTasks)), + luabind::value("MoneyUpdate", static_cast(OP_MoneyUpdate)), + luabind::value("ClickObject", static_cast(OP_ClickObject)), + luabind::value("MoveDoor", static_cast(OP_MoveDoor)), + luabind::value("TraderDelItem", static_cast(OP_TraderDelItem)), + luabind::value("AdventureMerchantPurchase", static_cast(OP_AdventureMerchantPurchase)), + luabind::value("TestBuff", static_cast(OP_TestBuff)), + luabind::value("DuelResponse", static_cast(OP_DuelResponse)), + luabind::value("RequestDuel", static_cast(OP_RequestDuel)), + luabind::value("BazaarInspect", static_cast(OP_BazaarInspect)), + luabind::value("ClickDoor", static_cast(OP_ClickDoor)), + luabind::value("GroupAcknowledge", static_cast(OP_GroupAcknowledge)), + luabind::value("GroupDelete", static_cast(OP_GroupDelete)), + luabind::value("AdventureMerchantResponse", static_cast(OP_AdventureMerchantResponse)), + luabind::value("ShopEndConfirm", static_cast(OP_ShopEndConfirm)), + luabind::value("AdventureMerchantRequest", static_cast(OP_AdventureMerchantRequest)), + luabind::value("Sound", static_cast(OP_Sound)), + luabind::value("0x0193", static_cast(OP_0x0193)), + luabind::value("0x0347", static_cast(OP_0x0347)), + luabind::value("WorldComplete", static_cast(OP_WorldComplete)), + luabind::value("MobRename", static_cast(OP_MobRename)), + luabind::value("TaskDescription", static_cast(OP_TaskDescription)), + luabind::value("TaskActivity", static_cast(OP_TaskActivity)), + luabind::value("TaskMemberList", static_cast(OP_TaskMemberList)), + luabind::value("AnnoyingZoneUnknown", static_cast(OP_AnnoyingZoneUnknown)), + luabind::value("Some3ByteHPUpdate", static_cast(OP_Some3ByteHPUpdate)), + luabind::value("FloatListThing", static_cast(OP_FloatListThing)), + luabind::value("AAExpUpdate", static_cast(OP_AAExpUpdate)), + luabind::value("ForceFindPerson", static_cast(OP_ForceFindPerson)), + luabind::value("PlayMP3", static_cast(OP_PlayMP3)), + luabind::value("RequestClientZoneChange", static_cast(OP_RequestClientZoneChange)), + luabind::value("SomeItemPacketMaybe", static_cast(OP_SomeItemPacketMaybe)), + luabind::value("QueryResponseThing", static_cast(OP_QueryResponseThing)), + luabind::value("Some6ByteHPUpdate", static_cast(OP_Some6ByteHPUpdate)), + luabind::value("BankerChange", static_cast(OP_BankerChange)), + luabind::value("BecomeCorpse", static_cast(OP_BecomeCorpse)), + luabind::value("Action2", static_cast(OP_Action2)), + luabind::value("BazaarSearch", static_cast(OP_BazaarSearch)), + luabind::value("SetTitle", static_cast(OP_SetTitle)), + luabind::value("SetTitleReply", static_cast(OP_SetTitleReply)), + luabind::value("ConfirmDelete", static_cast(OP_ConfirmDelete)), + luabind::value("ConsentDeny", static_cast(OP_ConsentDeny)), + luabind::value("CrystalCountUpdate", static_cast(OP_CrystalCountUpdate)), + luabind::value("DeletePetition", static_cast(OP_DeletePetition)), + luabind::value("DenyResponse", static_cast(OP_DenyResponse)), + luabind::value("Disarm", static_cast(OP_Disarm)), + luabind::value("Feedback", static_cast(OP_Feedback)), + luabind::value("FriendsWho", static_cast(OP_FriendsWho)), + luabind::value("GMApproval", static_cast(OP_GMApproval)), + luabind::value("GMSearchCorpse", static_cast(OP_GMSearchCorpse)), + luabind::value("GuildBank", static_cast(OP_GuildBank)), + luabind::value("InitialHPUpdate", static_cast(OP_InitialHPUpdate)), + luabind::value("InitialMobHealth", static_cast(OP_InitialMobHealth)), + luabind::value("LFGGetMatchesRequest", static_cast(OP_LFGGetMatchesRequest)), + luabind::value("LFGGetMatchesResponse", static_cast(OP_LFGGetMatchesResponse)), + luabind::value("LFGResponse", static_cast(OP_LFGResponse)), + luabind::value("LFPCommand", static_cast(OP_LFPCommand)), + luabind::value("LFPGetMatchesRequest", static_cast(OP_LFPGetMatchesRequest)), + luabind::value("LFPGetMatchesResponse", static_cast(OP_LFPGetMatchesResponse)), + luabind::value("LeadershipExpToggle", static_cast(OP_LeadershipExpToggle)), + luabind::value("LeadershipExpUpdate", static_cast(OP_LeadershipExpUpdate)), + luabind::value("LoadSpellSet", static_cast(OP_LoadSpellSet)), + luabind::value("LockoutTimerInfo", static_cast(OP_LockoutTimerInfo)), + luabind::value("MendHPUpdate", static_cast(OP_MendHPUpdate)), + luabind::value("MobHealth", static_cast(OP_MobHealth)), + luabind::value("MoveLogDisregard", static_cast(OP_MoveLogDisregard)), + luabind::value("MoveLogRequest", static_cast(OP_MoveLogRequest)), + luabind::value("PetitionSearch", static_cast(OP_PetitionSearch)), + luabind::value("PetitionSearchResults", static_cast(OP_PetitionSearchResults)), + luabind::value("PetitionSearchText", static_cast(OP_PetitionSearchText)), + luabind::value("RaidInvite", static_cast(OP_RaidInvite)), + luabind::value("ReclaimCrystals", static_cast(OP_ReclaimCrystals)), + luabind::value("Report", static_cast(OP_Report)), + luabind::value("SenseHeading", static_cast(OP_SenseHeading)), + luabind::value("LDoNOpen", static_cast(OP_LDoNOpen)), + luabind::value("LDoNSenseTraps", static_cast(OP_LDoNSenseTraps)), + luabind::value("LDoNPickLock", static_cast(OP_LDoNPickLock)), + luabind::value("LDoNDisarmTraps", static_cast(OP_LDoNDisarmTraps)), + luabind::value("LDoNInspect", static_cast(OP_LDoNInspect)), + luabind::value("DynamicWall", static_cast(OP_DynamicWall)), + luabind::value("RequestTitles", static_cast(OP_RequestTitles)), + luabind::value("PurchaseLeadershipAA", static_cast(OP_PurchaseLeadershipAA)), + luabind::value("UpdateLeadershipAA", static_cast(OP_UpdateLeadershipAA)), + luabind::value("AdventurePointsUpdate", static_cast(OP_AdventurePointsUpdate)), + luabind::value("ZoneInUnknown", static_cast(OP_ZoneInUnknown)), + luabind::value("ZoneServerReady ", static_cast(OP_ZoneServerReady )), + luabind::value("ZoneGuildList", static_cast(OP_ZoneGuildList)), + luabind::value("SendTitleList", static_cast(OP_SendTitleList)), + luabind::value("NewTitlesAvailable", static_cast(OP_NewTitlesAvailable)), + luabind::value("Bandolier", static_cast(OP_Bandolier)), + luabind::value("OpenDiscordMerchant", static_cast(OP_OpenDiscordMerchant)), + luabind::value("DiscordMerchantInventory", static_cast(OP_DiscordMerchantInventory)), + luabind::value("GiveMoney", static_cast(OP_GiveMoney)), + luabind::value("OnLevelMessage", static_cast(OP_OnLevelMessage)), + luabind::value("RequestKnowledgeBase", static_cast(OP_RequestKnowledgeBase)), + luabind::value("KnowledgeBase", static_cast(OP_KnowledgeBase)), + luabind::value("VetRewardsAvaliable", static_cast(OP_VetRewardsAvaliable)), + luabind::value("VetClaimRequest", static_cast(OP_VetClaimRequest)), + luabind::value("VetClaimReply", static_cast(OP_VetClaimReply)), + luabind::value("WeaponEquip1", static_cast(OP_WeaponEquip1)), + luabind::value("WeaponEquip2", static_cast(OP_WeaponEquip2)), + luabind::value("WeaponUnequip2", static_cast(OP_WeaponUnequip2)), + luabind::value("WorldLogout", static_cast(OP_WorldLogout)), + luabind::value("SessionReady", static_cast(OP_SessionReady)), + luabind::value("Login", static_cast(OP_Login)), + luabind::value("ServerListRequest", static_cast(OP_ServerListRequest)), + luabind::value("PlayEverquestRequest", static_cast(OP_PlayEverquestRequest)), + luabind::value("ChatMessage", static_cast(OP_ChatMessage)), + luabind::value("LoginAccepted", static_cast(OP_LoginAccepted)), + luabind::value("ServerListResponse", static_cast(OP_ServerListResponse)), + luabind::value("Poll", static_cast(OP_Poll)), + luabind::value("PlayEverquestResponse", static_cast(OP_PlayEverquestResponse)), + luabind::value("EnterChat", static_cast(OP_EnterChat)), + luabind::value("PollResponse", static_cast(OP_PollResponse)), + luabind::value("Command", static_cast(OP_Command)), + luabind::value("ZonePlayerToBind", static_cast(OP_ZonePlayerToBind)), + luabind::value("AutoFire", static_cast(OP_AutoFire)), + luabind::value("Rewind", static_cast(OP_Rewind)), + luabind::value("OpenNewTasksWindow", static_cast(OP_OpenNewTasksWindow)), + luabind::value("TaskActivityComplete", static_cast(OP_TaskActivityComplete)), + luabind::value("AcceptNewTask", static_cast(OP_AcceptNewTask)), + luabind::value("CancelTask", static_cast(OP_CancelTask)), + luabind::value("TaskHistoryRequest", static_cast(OP_TaskHistoryRequest)), + luabind::value("TaskHistoryReply", static_cast(OP_TaskHistoryReply)), + luabind::value("PetBuffWindow", static_cast(OP_PetBuffWindow)), + luabind::value("RaidJoin", static_cast(OP_RaidJoin)), + luabind::value("Translocate", static_cast(OP_Translocate)), + luabind::value("Sacrifice", static_cast(OP_Sacrifice)), + luabind::value("KeyRing", static_cast(OP_KeyRing)), + luabind::value("PopupResponse", static_cast(OP_PopupResponse)), + luabind::value("DeleteCharge", static_cast(OP_DeleteCharge)), + luabind::value("PotionBelt", static_cast(OP_PotionBelt)), + luabind::value("Barter", static_cast(OP_Barter)), + luabind::value("VoiceMacroIn", static_cast(OP_VoiceMacroIn)), + luabind::value("VoiceMacroOut", static_cast(OP_VoiceMacroOut)), + luabind::value("WorldObjectsSent", static_cast(OP_WorldObjectsSent)), + luabind::value("BlockedBuffs", static_cast(OP_BlockedBuffs)), + luabind::value("RemoveBlockedBuffs", static_cast(OP_RemoveBlockedBuffs)), + luabind::value("ClearBlockedBuffs", static_cast(OP_ClearBlockedBuffs)), + luabind::value("GroupUpdateLeaderAA", static_cast(OP_GroupUpdateLeaderAA)), + luabind::value("MarkNPC", static_cast(OP_MarkNPC)), + luabind::value("ClearNPCMarks", static_cast(OP_ClearNPCMarks)), + luabind::value("DoGroupLeadershipAbility", static_cast(OP_DoGroupLeadershipAbility)), + luabind::value("DelegateAbility", static_cast(OP_DelegateAbility)), + luabind::value("SetGroupTarget", static_cast(OP_SetGroupTarget)), + luabind::value("ApplyPoison", static_cast(OP_ApplyPoison)), + luabind::value("FinishWindow", static_cast(OP_FinishWindow)), + luabind::value("FinishWindow2", static_cast(OP_FinishWindow2)), + luabind::value("ItemVerifyRequest", static_cast(OP_ItemVerifyRequest)), + luabind::value("ItemVerifyReply", static_cast(OP_ItemVerifyReply)), + luabind::value("GMTrainSkillConfirm", static_cast(OP_GMTrainSkillConfirm)), + luabind::value("RestState", static_cast(OP_RestState)), + luabind::value("AugmentInfo", static_cast(OP_AugmentInfo)), + luabind::value("PVPStats", static_cast(OP_PVPStats)), + luabind::value("PVPLeaderBoardRequest", static_cast(OP_PVPLeaderBoardRequest)), + luabind::value("PVPLeaderBoardReply", static_cast(OP_PVPLeaderBoardReply)), + luabind::value("PVPLeaderBoardDetailsRequest", static_cast(OP_PVPLeaderBoardDetailsRequest)), + luabind::value("PVPLeaderBoardDetailsReply", static_cast(OP_PVPLeaderBoardDetailsReply)), + luabind::value("DisciplineTimer", static_cast(OP_DisciplineTimer)), + luabind::value("RespawnWindow", static_cast(OP_RespawnWindow)), + luabind::value("AdventureMerchantSell", static_cast(OP_AdventureMerchantSell)), + luabind::value("AdventureStatsRequest", static_cast(OP_AdventureStatsRequest)), + luabind::value("AdventureStatsReply", static_cast(OP_AdventureStatsReply)), + luabind::value("AdventureLeaderboardRequest", static_cast(OP_AdventureLeaderboardRequest)), + luabind::value("AdventureLeaderboardReply", static_cast(OP_AdventureLeaderboardReply)), + luabind::value("SetStartCity", static_cast(OP_SetStartCity)), + luabind::value("LoginUnknown1", static_cast(OP_LoginUnknown1)), + luabind::value("LoginUnknown2", static_cast(OP_LoginUnknown2)), + luabind::value("ItemViewUnknown", static_cast(OP_ItemViewUnknown)), + luabind::value("GetGuildMOTDReply", static_cast(OP_GetGuildMOTDReply)), + luabind::value("SetGuildRank", static_cast(OP_SetGuildRank)), + luabind::value("SpawnPositionUpdate", static_cast(OP_SpawnPositionUpdate)), + luabind::value("ManaUpdate", static_cast(OP_ManaUpdate)), + luabind::value("EnduranceUpdate", static_cast(OP_EnduranceUpdate)), + luabind::value("MobManaUpdate", static_cast(OP_MobManaUpdate)), + luabind::value("MobEnduranceUpdate", static_cast(OP_MobEnduranceUpdate)), + luabind::value("GroupUpdateB", static_cast(OP_GroupUpdateB)), + luabind::value("GroupDisbandYou", static_cast(OP_GroupDisbandYou)), + luabind::value("GroupDisbandOther", static_cast(OP_GroupDisbandOther)), + luabind::value("GroupLeaderChange", static_cast(OP_GroupLeaderChange)), + luabind::value("GroupLeadershipAAUpdate", static_cast(OP_GroupLeadershipAAUpdate)), + luabind::value("GroupRoles", static_cast(OP_GroupRoles)), + luabind::value("SendFindableNPCs", static_cast(OP_SendFindableNPCs)), + luabind::value("HideCorpse", static_cast(OP_HideCorpse)), + luabind::value("TargetBuffs", static_cast(OP_TargetBuffs)), + luabind::value("TradeBusy", static_cast(OP_TradeBusy)), + luabind::value("GuildUpdateURLAndChannel", static_cast(OP_GuildUpdateURLAndChannel)), + luabind::value("CameraEffect", static_cast(OP_CameraEffect)), + luabind::value("SpellEffect", static_cast(OP_SpellEffect)), + luabind::value("DzQuit", static_cast(OP_DzQuit)), + luabind::value("DzListTimers", static_cast(OP_DzListTimers)), + luabind::value("DzPlayerList", static_cast(OP_DzPlayerList)), + luabind::value("DzAddPlayer", static_cast(OP_DzAddPlayer)), + luabind::value("DzRemovePlayer", static_cast(OP_DzRemovePlayer)), + luabind::value("DzSwapPlayer", static_cast(OP_DzSwapPlayer)), + luabind::value("DzMakeLeader", static_cast(OP_DzMakeLeader)), + luabind::value("DzJoinExpeditionConfirm", static_cast(OP_DzJoinExpeditionConfirm)), + luabind::value("DzJoinExpeditionReply", static_cast(OP_DzJoinExpeditionReply)), + luabind::value("DzExpeditionInfo", static_cast(OP_DzExpeditionInfo)), + luabind::value("DzMemberStatus", static_cast(OP_DzMemberStatus)), + luabind::value("DzLeaderStatus", static_cast(OP_DzLeaderStatus)), + luabind::value("DzExpeditionEndsWarning", static_cast(OP_DzExpeditionEndsWarning)), + luabind::value("DzExpeditionList", static_cast(OP_DzExpeditionList)), + luabind::value("DzMemberList", static_cast(OP_DzMemberList)), + luabind::value("DzCompass", static_cast(OP_DzCompass)), + luabind::value("DzChooseZone", static_cast(OP_DzChooseZone)), + luabind::value("BuffCreate", static_cast(OP_BuffCreate)), + luabind::value("GuildStatus", static_cast(OP_GuildStatus)), + luabind::value("BuffRemoveRequest", static_cast(OP_BuffRemoveRequest)), + luabind::value("CorpseDrag", static_cast(OP_CorpseDrag)), + luabind::value("CorpseDrop", static_cast(OP_CorpseDrop)), + luabind::value("ChangeSize", static_cast(OP_ChangeSize)), + luabind::value("GroupMakeLeader", static_cast(OP_GroupMakeLeader)), + luabind::value("RemoveAllDoors", static_cast(OP_RemoveAllDoors)), + luabind::value("RemoveNimbusEffect", static_cast(OP_RemoveNimbusEffect)), + luabind::value("GuildCreate", static_cast(OP_GuildCreate)), + luabind::value("AltCurrency", static_cast(OP_AltCurrency)), + luabind::value("FellowshipUpdate", static_cast(OP_FellowshipUpdate)), + luabind::value("AltCurrencyMerchantRequest", static_cast(OP_AltCurrencyMerchantRequest)), + luabind::value("AltCurrencyMerchantReply", static_cast(OP_AltCurrencyMerchantReply)), + luabind::value("AltCurrencyPurchase", static_cast(OP_AltCurrencyPurchase)), + luabind::value("AltCurrencySellSelection", static_cast(OP_AltCurrencySellSelection)), + luabind::value("AltCurrencyReclaim", static_cast(OP_AltCurrencyReclaim)), + luabind::value("AltCurrencySell", static_cast(OP_AltCurrencySell)), + luabind::value("Untargetable", static_cast(OP_Untargetable)), + luabind::value("CrystalReclaim", static_cast(OP_CrystalReclaim)), + luabind::value("CrystalCreate", static_cast(OP_CrystalCreate)), + luabind::value("SendMaxCharacters", static_cast(OP_SendMaxCharacters)), + luabind::value("SendMembership", static_cast(OP_SendMembership)), + luabind::value("SendMembershipDetails", static_cast(OP_SendMembershipDetails)), + luabind::value("LFGuild", static_cast(OP_LFGuild)), + luabind::value("XTargetRequest", static_cast(OP_XTargetRequest)), + luabind::value("XTargetResponse", static_cast(OP_XTargetResponse)), + luabind::value("XTargetAutoAddHaters", static_cast(OP_XTargetAutoAddHaters)), + luabind::value("Weblink", static_cast(OP_Weblink)), + luabind::value("InspectMessageUpdate", static_cast(OP_InspectMessageUpdate)), + luabind::value("ItemPreview", static_cast(OP_ItemPreview)), + luabind::value("MercenaryDataRequest", static_cast(OP_MercenaryDataRequest)), + luabind::value("MercenaryDataResponse", static_cast(OP_MercenaryDataResponse)), + luabind::value("MercenaryHire", static_cast(OP_MercenaryHire)), + luabind::value("MercenaryUnknown1", static_cast(OP_MercenaryUnknown1)), + luabind::value("MercenaryTimer", static_cast(OP_MercenaryTimer)), + luabind::value("MercenaryAssign", static_cast(OP_MercenaryAssign)), + luabind::value("MercenaryDataUpdate", static_cast(OP_MercenaryDataUpdate)), + luabind::value("MercenaryCommand", static_cast(OP_MercenaryCommand)), + luabind::value("MercenarySuspendRequest", static_cast(OP_MercenarySuspendRequest)), + luabind::value("MercenarySuspendResponse", static_cast(OP_MercenarySuspendResponse)), + luabind::value("MercenaryUnsuspendResponse", static_cast(OP_MercenaryUnsuspendResponse)), + luabind::value("MercenaryDataUpdateRequest", static_cast(OP_MercenaryDataUpdateRequest)), + luabind::value("MercenaryDismiss", static_cast(OP_MercenaryDismiss)), + luabind::value("MercenaryTimerRequest", static_cast(OP_MercenaryTimerRequest)), + luabind::value("OpenInventory", static_cast(OP_OpenInventory)), + luabind::value("OpenContainer", static_cast(OP_OpenContainer)) + ]; +} + +#endif diff --git a/zone/lua_packet.h b/zone/lua_packet.h new file mode 100644 index 000000000..149d8a30e --- /dev/null +++ b/zone/lua_packet.h @@ -0,0 +1,56 @@ +#ifndef EQEMU_LUA_PACKET_H +#define EQEMU_LUA_PACKET_H +#ifdef LUA_EQEMU + +#include "lua_ptr.h" +#include "../common/types.h" + +class EQApplicationPacket; + +namespace luabind { + struct scope; +} + +luabind::scope lua_register_packet(); +luabind::scope lua_register_packet_opcodes(); + +class Lua_Packet : public Lua_Ptr +{ + typedef EQApplicationPacket NativeType; +public: + Lua_Packet() : Lua_Ptr(nullptr), owned_(false) { } + Lua_Packet(EQApplicationPacket *d) : Lua_Ptr(d), owned_(false) { } + Lua_Packet(int opcode, int size); + Lua_Packet& operator=(const Lua_Packet& o); + Lua_Packet(const Lua_Packet& o); + virtual ~Lua_Packet() { if(owned_) { EQApplicationPacket *ptr = GetLuaPtrData(); if(ptr) { delete ptr; } } } + + int GetOpcode(); + void SetOpcode(int op); + void WriteInt8(int offset, int value); + void WriteInt16(int offset, int value); + void WriteInt32(int offset, int value); + void WriteInt64(int offset, int64 value); + void WriteFloat(int offset, float value); + void WriteDouble(int offset, double value); + void WriteString(int offset, std::string value); + void WriteFixedLengthString(int offset, std::string value, int string_length); + int ReadInt8(int offset); + int ReadInt16(int offset); + int ReadInt32(int offset); + int64 ReadInt64(int offset); + float ReadFloat(int offset); + double ReadDouble(int offset); + std::string ReadString(int offset); + std::string ReadFixedLengthString(int offset, int string_length); + + operator EQApplicationPacket*() { + return reinterpret_cast(GetLuaPtrData()); + } + +private: + bool owned_; +}; + +#endif +#endif diff --git a/zone/lua_parser.cpp b/zone/lua_parser.cpp index 7a5563be1..e042a753d 100644 --- a/zone/lua_parser.cpp +++ b/zone/lua_parser.cpp @@ -29,6 +29,7 @@ #include "lua_object.h" #include "lua_door.h" #include "lua_spawn.h" +#include "lua_packet.h" #include "lua_general.h" #include "questmgr.h" #include "zone.h" @@ -957,7 +958,9 @@ void LuaParser::MapFunctions(lua_State *L) { lua_register_raid(), lua_register_corpse(), lua_register_door(), - lua_register_object() + lua_register_object(), + lua_register_packet(), + lua_register_packet_opcodes() ]; } catch(std::exception &ex) {