diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index 57de2993..88e219b6 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -180,13 +180,16 @@ namespace Sapphire::Network::Packets HuntingLogEntry = 0x01B3, // updated 5.0 EventPlay = 0x0279, // updated 5.18 - DirectorPlayScene = 0x01B9, // updated 5.0 - EventOpenGilShop = 0x01B1, // updated 5.18 + EventPlay4 = 0x02F7, // updated 5.18 + EventPlay8 = 0x0119, // updated 5.18 + EventPlay16 = 0x01FB, // updated 5.18 + EventPlay32 = 0x0364, // updated 5.18 + EventPlay64 = 0x00E5, // updated 5.18 + EventPlay128 = 0x02BE, // updated 5.18 + EventPlay255 = 0x01B1, // updated 5.18 EventStart = 0x0230, // updated 5.18 EventFinish = 0x01E4, // updated 5.18 - EventUnk0 = 0x02F7, // updated 5.18 - EventUnk1 = 0x0100, // updated 5.18 UseMooch = 0x0233, // updated 5.18 EventLinkshell = 0x1169, @@ -205,8 +208,15 @@ namespace Sapphire::Network::Packets Mount = 0x02F0, // updated 5.18 - DirectorVars = 0x01F5, // updated 5.0 - DirectorPopUp = 0x0200, // updated 5.0 - display dialogue pop-ups in duties and FATEs, for example, Teraflare's countdown + DirectorVars = 0x00E6, // updated 5.18 + SomeDirectorUnk1 = 0x0084, // updated 5.18 + SomeDirectorUnk2 = 0x00C1, // updated 5.18 + SomeDirectorUnk4 = 0x0100, // updated 5.18 + SomeDirectorUnk8 = 0x028A, // updated 5.18 + SomeDirectorUnk16 = 0x028C, // updated 5.18 + DirectorPopUp = 0x0162, // updated 5.18 - display dialogue pop-ups in duties and FATEs, for example, Teraflare's countdown + DirectorPopUp4 = 0x0214, // updated 5.18 + DirectorPopUp8 = 0x00F8, // updated 5.18 CFAvailableContents = 0xF1FD, // updated 4.2 diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index 33915278..f2075f74 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -1421,11 +1421,24 @@ namespace Sapphire::Network::Packets::Server uint8_t unknown[8]; }; + template< int ArgCount > + struct FFXIVIpcEventPlayN + { + uint64_t actorId; + uint32_t eventId; + uint16_t scene; + uint16_t padding; + uint32_t sceneFlags; + uint8_t paramCount; + uint8_t padding2[3]; + uint32_t params[ArgCount]; + }; + /** * Structural representation of the packet sent by the server * to play an event */ - struct FFXIVIpcDirectorPlayScene : FFXIVIpcBasePacket< DirectorPlayScene > + struct FFXIVIpcDirectorPlayScene : FFXIVIpcBasePacket< EventPlay32 > { uint64_t actorId; uint32_t eventId; @@ -1454,15 +1467,10 @@ namespace Sapphire::Network::Packets::Server /* 000C */ uint32_t padding1; }; - struct FFXIVIpcEventOpenGilShop : FFXIVIpcBasePacket< EventOpenGilShop > + struct FFXIVIpcEventPlay255 : + FFXIVIpcBasePacket< EventPlay255 >, + FFXIVIpcEventPlayN< 255 > { - uint64_t actorId; - uint32_t eventId; - uint16_t scene; - uint16_t padding; - uint32_t sceneFlags; - - uint32_t unknown_wtf[0x101]; }; diff --git a/src/world/Actor/PlayerEvent.cpp b/src/world/Actor/PlayerEvent.cpp index b4fb05a1..15c84470 100644 --- a/src/world/Actor/PlayerEvent.cpp +++ b/src/world/Actor/PlayerEvent.cpp @@ -141,7 +141,7 @@ void Sapphire::Entity::Player::playGilShop( uint32_t eventId, uint32_t flags, pEvent->setEventReturnCallback( eventCallback ); pEvent->setSceneChainCallback( nullptr ); - auto openGilShopPacket = makeZonePacket< Server::FFXIVIpcEventOpenGilShop >( getId() ); + auto openGilShopPacket = makeZonePacket< Server::FFXIVIpcEventPlay255 >( getId() ); openGilShopPacket->data().eventId = eventId; openGilShopPacket->data().sceneFlags = flags; openGilShopPacket->data().actorId = getId();