From a5191c2b4ff06fc7da96f283756259eddc090751 Mon Sep 17 00:00:00 2001 From: Mordred Date: Sun, 8 Jul 2018 23:18:01 +0200 Subject: [PATCH] emotes with motion only added #329 --- src/common/Network/GamePacketNew.h | 2 +- src/servers/sapphire_zone/Actor/Player.cpp | 5 +++-- src/servers/sapphire_zone/Actor/Player.h | 2 +- .../sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp | 3 ++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/common/Network/GamePacketNew.h b/src/common/Network/GamePacketNew.h index 1eb6d0f8..aae33508 100644 --- a/src/common/Network/GamePacketNew.h +++ b/src/common/Network/GamePacketNew.h @@ -239,7 +239,7 @@ protected: // The IPC type itself. m_ipcHdr.type = static_cast< ServerZoneIpcType >( m_data._ServerIpcType ); - m_ipcHdr.timestamp = Util::getTimeSeconds(); + m_ipcHdr.timestamp = static_cast< uint32_t >( Util::getTimeSeconds() ); m_segHdr.size = sizeof( T ) + sizeof( FFXIVARR_IPC_HEADER ) + sizeof( FFXIVARR_PACKET_SEGMENT_HEADER ); }; diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index 8621da64..4f17b1d0 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -1650,9 +1650,10 @@ void Core::Entity::Player::finishZoning() } } -void Core::Entity::Player::emote( uint32_t emoteId, uint64_t targetId ) +void Core::Entity::Player::emote( uint32_t emoteId, uint64_t targetId, bool isSilent ) { - sendToInRangeSet( boost::make_shared< ActorControlPacket144 >( getId(), ActorControlType::Emote, emoteId, 0, 0, 0, targetId ) ); + sendToInRangeSet( boost::make_shared< ActorControlPacket144 >( getId(), ActorControlType::Emote, + emoteId, 0, isSilent ? 1 : 0, 0, targetId ) ); } void Core::Entity::Player::teleportQuery( uint16_t aetheryteId ) diff --git a/src/servers/sapphire_zone/Actor/Player.h b/src/servers/sapphire_zone/Actor/Player.h index a61454ae..fe460c2e 100644 --- a/src/servers/sapphire_zone/Actor/Player.h +++ b/src/servers/sapphire_zone/Actor/Player.h @@ -507,7 +507,7 @@ public: /*! return true if the player is marked for zoning */ bool isMarkedForZoning() const; - void emote( uint32_t emoteId, uint64_t targetId ); + void emote( uint32_t emoteId, uint64_t targetId, bool isSilent ); void sendZoneInPackets( uint32_t param1, uint32_t param2, uint32_t param3, uint32_t param4, bool pSetStatus ); diff --git a/src/servers/sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp b/src/servers/sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp index d902cc6f..598460d4 100644 --- a/src/servers/sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp @@ -142,8 +142,9 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR { uint64_t targetId = player.getTargetId(); uint32_t emoteId = param11; + bool isSilent = param2 == 1; - player.emote( emoteId, targetId ); + player.emote( emoteId, targetId, isSilent ); break; } case ClientTriggerType::PersistantEmoteCancel: // cancel persistant emote