From d1fe43fde3ca83b5c013b2ab6036a5b86dce15e1 Mon Sep 17 00:00:00 2001 From: NotAdam Date: Sun, 8 Jul 2018 12:38:08 +1000 Subject: [PATCH] add linkshell event, some cleanup --- src/common/Network/GamePacketNew.h | 15 +-------------- src/common/Network/PacketDef/Zone/ClientZoneDef.h | 8 ++++++++ .../Network/Handlers/EventHandlers.cpp | 12 ++++-------- .../Network/Handlers/InventoryHandler.cpp | 6 +++--- src/servers/sapphire_zone/Script/ScriptMgr.cpp | 2 +- 5 files changed, 17 insertions(+), 26 deletions(-) diff --git a/src/common/Network/GamePacketNew.h b/src/common/Network/GamePacketNew.h index 7eefc16a..e93f29cb 100644 --- a/src/common/Network/GamePacketNew.h +++ b/src/common/Network/GamePacketNew.h @@ -14,12 +14,6 @@ #include "CommonNetwork.h" #include "PacketDef/Ipcs.h" -#include -#include -#include - -extern Core::Framework g_fw; - namespace Core { namespace Network { namespace Packets { @@ -184,7 +178,7 @@ public: initialize(); }; - FFXIVIpcPacket< T, T1 >( const FFXIVARR_PACKET_RAW& rawPacket, bool verbose = false ) + FFXIVIpcPacket< T, T1 >( const FFXIVARR_PACKET_RAW& rawPacket ) { auto ipcHdrSize = sizeof( FFXIVARR_IPC_HEADER ); auto copySize = std::min< uint32_t >( sizeof( T ), rawPacket.segHdr.size - ipcHdrSize ); @@ -192,13 +186,6 @@ public: memcpy( &m_segHdr, &rawPacket.segHdr, sizeof( FFXIVARR_PACKET_SEGMENT_HEADER ) ); memcpy( &m_data, &rawPacket.data[0] + ipcHdrSize, copySize ); - auto log = g_fw.get< Core::Logger >(); - if( log && verbose ) - { - log->debug( "rawpacket size " + std::to_string( rawPacket.segHdr.size ) + "\n" + Util::binaryToHexDump( const_cast< uint8_t* >( &rawPacket.data[0] ), rawPacket.segHdr.size ) ); - log->debug( "T size " + std::to_string( sizeof( T ) ) + "\n" + Util::binaryToHexDump( reinterpret_cast< uint8_t* >( &m_data ), sizeof( T ) ) ); - } - memset( &m_ipcHdr, 0, ipcHdrSize ); m_ipcHdr.type = static_cast< ServerZoneIpcType >( m_data._ServerIpcType ); } diff --git a/src/common/Network/PacketDef/Zone/ClientZoneDef.h b/src/common/Network/PacketDef/Zone/ClientZoneDef.h index 088a539f..cbe0a0b0 100644 --- a/src/common/Network/PacketDef/Zone/ClientZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ClientZoneDef.h @@ -139,6 +139,14 @@ struct FFXIVIpcChatHandler : FFXIVIpcBasePacket< ChatHandler > /* 001A */ char message[1012]; }; +struct FFXIVIpcLinkshellEventHandler : FFXIVIpcBasePacket< LinkshellEventHandler > +{ + /* 0000 */ uint32_t eventId; + /* 0004 */ uint16_t scene; + /* 0006 */ char pad_0006[1]; + /* 0007 */ char lsName[21]; +}; + } } } diff --git a/src/servers/sapphire_zone/Network/Handlers/EventHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/EventHandlers.cpp index da8f553b..801ab2b7 100644 --- a/src/servers/sapphire_zone/Network/Handlers/EventHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/EventHandlers.cpp @@ -243,15 +243,11 @@ void Core::Network::GameConnection::eventHandlerReturn( const Packets::FFXIVARR_ void Core::Network::GameConnection::eventHandlerLinkshell( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { - Packets::FFXIVARR_PACKET_RAW copy = inPacket; + const auto packet = ZoneChannelPacket< Client::FFXIVIpcLinkshellEventHandler >( inPacket ); - auto eventId = *reinterpret_cast< uint32_t* >( ©.data[0x10] ); - auto scene = *reinterpret_cast< uint16_t* >( ©.data[0x14] ); - auto lsName = std::string( reinterpret_cast< char* >( ©.data[0x17] ) ); - - auto linkshellEvent = makeZonePacket< FFXIVIpcEventLinkshell >( player.getId() ); - linkshellEvent->data().eventId = eventId; - linkshellEvent->data().scene = static_cast< uint8_t >( scene ); + auto linkshellEvent = makeZonePacket< Server::FFXIVIpcEventLinkshell >( player.getId() ); + linkshellEvent->data().eventId = packet.data().eventId; + linkshellEvent->data().scene = static_cast< uint8_t >( packet.data().scene ); linkshellEvent->data().param3 = 1; linkshellEvent->data().unknown1 = 0x15a; player.queuePacket( linkshellEvent ); diff --git a/src/servers/sapphire_zone/Network/Handlers/InventoryHandler.cpp b/src/servers/sapphire_zone/Network/Handlers/InventoryHandler.cpp index 05118fa2..edd34e19 100644 --- a/src/servers/sapphire_zone/Network/Handlers/InventoryHandler.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/InventoryHandler.cpp @@ -42,12 +42,12 @@ void Core::Network::GameConnection::inventoryModifyHandler( const Packets::FFXIV Entity::Player& player ) { Packets::FFXIVARR_PACKET_RAW copy = inPacket; - auto seq = *reinterpret_cast< uint32_t* >( ©.data[0x1] ); - auto action = *reinterpret_cast< uint8_t* >( ©.data[0x4] ); + auto seq = *reinterpret_cast< uint32_t* >( ©.data[0x1] ); // + auto action = *reinterpret_cast< uint8_t* >( ©.data[0x4] ); // auto fromSlot = *reinterpret_cast< uint8_t* >( ©.data[0x10] ); auto toSlot = *reinterpret_cast< uint8_t* >( ©.data[0x24] ); - auto fromContainer = *reinterpret_cast< uint16_t* >( ©.data[0xC] ); + auto fromContainer = *reinterpret_cast< uint16_t* >( ©.data[0xC] ); // auto toContainer = *reinterpret_cast< uint16_t* >( ©.data[0x20] ); // todo: check packet handler in game and see if this is sent as a u16 or u32 diff --git a/src/servers/sapphire_zone/Script/ScriptMgr.cpp b/src/servers/sapphire_zone/Script/ScriptMgr.cpp index 8e2efdbe..78424df8 100644 --- a/src/servers/sapphire_zone/Script/ScriptMgr.cpp +++ b/src/servers/sapphire_zone/Script/ScriptMgr.cpp @@ -76,7 +76,7 @@ bool Core::Scripting::ScriptMgr::init() scriptsLoaded++; } - pLog->info( "ScriptMgr: Loaded " + std::to_string( scriptsLoaded ) + "/" + std::to_string( scriptsFound ) + " scripts successfully" ); + pLog->info( "ScriptMgr: Loaded " + std::to_string( scriptsLoaded ) + "/" + std::to_string( scriptsFound ) + " modules" ); watchDirectories();