mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-05-01 08:27:46 +00:00
Add sendEventLogMessage to director
This commit is contained in:
parent
4d9717ed46
commit
ff88c136b2
2 changed files with 69 additions and 0 deletions
|
@ -1,11 +1,14 @@
|
||||||
#include "Director.h"
|
#include "Director.h"
|
||||||
|
|
||||||
|
#include <Territory/InstanceContent.h>
|
||||||
|
|
||||||
#include <Network/PacketDef/ServerIpcs.h>
|
#include <Network/PacketDef/ServerIpcs.h>
|
||||||
#include <Network/PacketDef/Zone/ServerZoneDef.h>
|
#include <Network/PacketDef/Zone/ServerZoneDef.h>
|
||||||
#include <Network/CommonActorControl.h>
|
#include <Network/CommonActorControl.h>
|
||||||
|
|
||||||
#include "Actor/Player.h"
|
#include "Actor/Player.h"
|
||||||
|
|
||||||
|
#include "Network/PacketDef/Zone/ServerZoneDef.h"
|
||||||
#include "Network/PacketWrappers/ActorControlPacket.h"
|
#include "Network/PacketWrappers/ActorControlPacket.h"
|
||||||
#include "Network/PacketWrappers/ActorControlSelfPacket.h"
|
#include "Network/PacketWrappers/ActorControlSelfPacket.h"
|
||||||
#include <Logging/Logger.h>
|
#include <Logging/Logger.h>
|
||||||
|
@ -17,6 +20,7 @@
|
||||||
|
|
||||||
using namespace Sapphire::Common;
|
using namespace Sapphire::Common;
|
||||||
using namespace Sapphire::Network::Packets;
|
using namespace Sapphire::Network::Packets;
|
||||||
|
using namespace Sapphire::Network::Packets::WorldPackets;
|
||||||
using namespace Sapphire::Network::Packets::WorldPackets::Server;
|
using namespace Sapphire::Network::Packets::WorldPackets::Server;
|
||||||
using namespace Sapphire::Network::ActorControl;
|
using namespace Sapphire::Network::ActorControl;
|
||||||
|
|
||||||
|
@ -45,6 +49,69 @@ uint8_t Sapphire::Event::Director::getSequence() const
|
||||||
return m_sequence;
|
return m_sequence;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Sapphire::Event::Director::sendEventLogMessage( Sapphire::Entity::Player& player, Sapphire::InstanceContent& instance, uint32_t msgId, std::vector< uint32_t > args ) const
|
||||||
|
{
|
||||||
|
if( args.size() == 0 )
|
||||||
|
{
|
||||||
|
auto packet = makeZonePacket< Server::FFXIVIpcEventLogMessageHeader >( player.getId() );
|
||||||
|
packet->data().handlerId = instance.getDirectorId();
|
||||||
|
packet->data().messageId = msgId;
|
||||||
|
packet->data().numOfArgs = args.size();
|
||||||
|
instance.queuePacketForZone( player, packet, true );
|
||||||
|
}
|
||||||
|
else if( args.size() <= 2 )
|
||||||
|
{
|
||||||
|
auto packet = makeZonePacket< Server::FFXIVIpcEventLogMessage2 >( player.getId() );
|
||||||
|
packet->data().handlerId = instance.getDirectorId();
|
||||||
|
packet->data().messageId = msgId;
|
||||||
|
packet->data().numOfArgs = args.size();
|
||||||
|
std::copy( args.begin(), args.end(), packet->data().args );
|
||||||
|
instance.queuePacketForZone( player, packet, true );
|
||||||
|
Logger::debug( "arg size: {}", packet->data().numOfArgs );
|
||||||
|
Logger::debug(
|
||||||
|
"Dump:\n{0}",
|
||||||
|
Util::binaryToHexDump( const_cast< uint8_t* >( &packet->getContent()[ 0 ] ),
|
||||||
|
static_cast< uint16_t >( packet->getContentSize() ) )
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else if( args.size() <= 4 )
|
||||||
|
{
|
||||||
|
auto packet = makeZonePacket< Server::FFXIVIpcEventLogMessage4 >( player.getId() );
|
||||||
|
packet->data().handlerId = instance.getDirectorId();
|
||||||
|
packet->data().messageId = msgId;
|
||||||
|
packet->data().numOfArgs = args.size();
|
||||||
|
std::copy( args.begin(), args.end(), packet->data().args );
|
||||||
|
instance.queuePacketForZone( player, packet, true );
|
||||||
|
}
|
||||||
|
else if( args.size() <= 8 )
|
||||||
|
{
|
||||||
|
auto packet = makeZonePacket< Server::FFXIVIpcEventLogMessage8 >( player.getId() );
|
||||||
|
packet->data().handlerId = instance.getDirectorId();
|
||||||
|
packet->data().messageId = msgId;
|
||||||
|
packet->data().numOfArgs = args.size();
|
||||||
|
std::copy( args.begin(), args.end(), packet->data().args );
|
||||||
|
instance.queuePacketForZone( player, packet, true );
|
||||||
|
}
|
||||||
|
else if( args.size() <= 16 )
|
||||||
|
{
|
||||||
|
auto packet = makeZonePacket< Server::FFXIVIpcEventLogMessage16 >( player.getId() );
|
||||||
|
packet->data().handlerId = instance.getDirectorId();
|
||||||
|
packet->data().messageId = msgId;
|
||||||
|
packet->data().numOfArgs = args.size();
|
||||||
|
std::copy( args.begin(), args.end(), packet->data().args );
|
||||||
|
instance.queuePacketForZone( player, packet, true );
|
||||||
|
}
|
||||||
|
else if( args.size() <= 32 )
|
||||||
|
{
|
||||||
|
auto packet = makeZonePacket< Server::FFXIVIpcEventLogMessage32 >( player.getId() );
|
||||||
|
packet->data().handlerId = instance.getDirectorId();
|
||||||
|
packet->data().messageId = msgId;
|
||||||
|
packet->data().numOfArgs = args.size();
|
||||||
|
std::copy( args.begin(), args.end(), packet->data().args );
|
||||||
|
instance.queuePacketForZone( player, packet, true );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Sapphire::Event::Director::sendDirectorClear( Sapphire::Entity::Player& player ) const
|
void Sapphire::Event::Director::sendDirectorClear( Sapphire::Entity::Player& player ) const
|
||||||
{
|
{
|
||||||
auto& server = Common::Service< World::WorldServer >::ref();
|
auto& server = Common::Service< World::WorldServer >::ref();
|
||||||
|
|
|
@ -77,6 +77,8 @@ namespace Sapphire::Event
|
||||||
|
|
||||||
void sendDirectorInit( Entity::Player& player ) const;
|
void sendDirectorInit( Entity::Player& player ) const;
|
||||||
|
|
||||||
|
void sendEventLogMessage( Sapphire::Entity::Player& player, Sapphire::InstanceContent& instance, uint32_t msgId, const std::vector< uint32_t > args = {} ) const;
|
||||||
|
|
||||||
void sendDirectorClear( Entity::Player& player ) const;
|
void sendDirectorClear( Entity::Player& player ) const;
|
||||||
|
|
||||||
void sendDirectorVars( Entity::Player& player ) const;
|
void sendDirectorVars( Entity::Player& player ) const;
|
||||||
|
|
Loading…
Add table
Reference in a new issue