mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-27 14:57:44 +00:00
Error message now displayed properly when /tell ing unknown char
This commit is contained in:
parent
d6711a0119
commit
a1fb3bd419
5 changed files with 24 additions and 10 deletions
|
@ -50,7 +50,7 @@ Core::Network::Packets::GamePacket::GamePacket( char * pData, uint16_t size, boo
|
||||||
*reinterpret_cast< uint32_t* >( &m_dataBuf[0] + 0x18 ) = m_timeStamp;
|
*reinterpret_cast< uint32_t* >( &m_dataBuf[0] + 0x18 ) = m_timeStamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_segHdr._reserved_E = 0;
|
//m_segHdr._reserved_E = 0;
|
||||||
m_segHdr.size = *reinterpret_cast< uint32_t* >( &m_dataBuf[0] );
|
m_segHdr.size = *reinterpret_cast< uint32_t* >( &m_dataBuf[0] );
|
||||||
m_segHdr.type = *reinterpret_cast< uint16_t* >( &m_dataBuf[0] + 0x0C );
|
m_segHdr.type = *reinterpret_cast< uint16_t* >( &m_dataBuf[0] + 0x0C );
|
||||||
m_subType = *reinterpret_cast< uint16_t* >( &m_dataBuf[0] + 0x12 );
|
m_subType = *reinterpret_cast< uint16_t* >( &m_dataBuf[0] + 0x12 );
|
||||||
|
|
|
@ -35,6 +35,8 @@ void Core::Network::Packets::PacketContainer::fillSendBuffer( std::vector< uint8
|
||||||
using namespace std::chrono;
|
using namespace std::chrono;
|
||||||
auto ms = duration_cast< milliseconds >( system_clock::now().time_since_epoch() );
|
auto ms = duration_cast< milliseconds >( system_clock::now().time_since_epoch() );
|
||||||
uint64_t tick = ms.count();
|
uint64_t tick = ms.count();
|
||||||
|
m_ipcHdr.unknown_0 = 0xE2465DFF41a05252;
|
||||||
|
m_ipcHdr.unknown_8 = 0x75C4997B4D642A7F;
|
||||||
m_ipcHdr.timestamp = tick;
|
m_ipcHdr.timestamp = tick;
|
||||||
m_ipcHdr.unknown_20 = 1;
|
m_ipcHdr.unknown_20 = 1;
|
||||||
|
|
||||||
|
|
|
@ -413,7 +413,8 @@ void Core::Entity::Player::setZone( uint32_t zoneId )
|
||||||
GamePacketNew< FFXIVIpcInitZone, ServerZoneIpcType > initZonePacket( getId() );
|
GamePacketNew< FFXIVIpcInitZone, ServerZoneIpcType > initZonePacket( getId() );
|
||||||
initZonePacket.data().zoneId = getCurrentZone()->getLayoutId();
|
initZonePacket.data().zoneId = getCurrentZone()->getLayoutId();
|
||||||
initZonePacket.data().weatherId = static_cast< uint8_t >( getCurrentZone()->getCurrentWeather() );
|
initZonePacket.data().weatherId = static_cast< uint8_t >( getCurrentZone()->getCurrentWeather() );
|
||||||
initZonePacket.data().bitmask = 0x2A;
|
initZonePacket.data().bitmask = 0x1;
|
||||||
|
initZonePacket.data().unknown5 = 0x2A;
|
||||||
initZonePacket.data().pos.x = getPos().x;
|
initZonePacket.data().pos.x = getPos().x;
|
||||||
initZonePacket.data().pos.y = getPos().y;
|
initZonePacket.data().pos.y = getPos().y;
|
||||||
initZonePacket.data().pos.z = getPos().z;
|
initZonePacket.data().pos.z = getPos().z;
|
||||||
|
|
|
@ -351,28 +351,38 @@ void Core::Network::GameConnection::handlePackets( const Core::Network::Packets:
|
||||||
if( !m_pSession && session )
|
if( !m_pSession && session )
|
||||||
m_pSession = session;
|
m_pSession = session;
|
||||||
|
|
||||||
|
GamePacket pPe( 0x00, 0x18, 0, 0, 0x07 );
|
||||||
|
//pPe.setValAt< uint32_t >( 0x10, 0xE0000005 );
|
||||||
|
pPe.setValAt< uint32_t >( 0x10, 0xE0037603 );
|
||||||
|
pPe.setValAt< uint32_t >( 0x14, static_cast< uint32_t >( time( nullptr ) ) );
|
||||||
|
sendSinglePacket( &pPe );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// main connection, assinging it to the session
|
// main connection, assinging it to the session
|
||||||
if( ipcHeader.connectionType == ConnectionType::Zone )
|
if( ipcHeader.connectionType == ConnectionType::Zone )
|
||||||
{
|
{
|
||||||
|
pPe = GamePacket( 0x00, 0x38, 0, 0, 0x02 );
|
||||||
|
pPe.setValAt< uint32_t >( 0x10, playerId );
|
||||||
|
sendSinglePacket( &pPe );
|
||||||
g_log.info( "[" + std::string( id ) + "] Setting session for zone connection" );
|
g_log.info( "[" + std::string( id ) + "] Setting session for zone connection" );
|
||||||
session->setZoneConnection( pCon );
|
session->setZoneConnection( pCon );
|
||||||
}
|
}
|
||||||
// chat connection, assinging it to the session
|
// chat connection, assinging it to the session
|
||||||
else if( ipcHeader.connectionType == ConnectionType::Chat )
|
else if( ipcHeader.connectionType == ConnectionType::Chat )
|
||||||
{
|
{
|
||||||
g_log.info( "[" + std::string( id ) + "] Setting session for chat connection" );
|
|
||||||
session->setChatConnection( pCon );
|
|
||||||
}
|
|
||||||
|
|
||||||
GamePacket pPe( 0x00, 0x18, 0, 0, 0x07 );
|
|
||||||
pPe.setValAt< uint32_t >( 0x10, 0xE0000005 );
|
|
||||||
pPe.setValAt< uint32_t >( 0x14, static_cast< uint32_t >( time( nullptr ) ) );
|
|
||||||
sendSinglePacket( &pPe );
|
|
||||||
|
|
||||||
pPe = GamePacket( 0x00, 0x38, 0, 0, 0x02 );
|
pPe = GamePacket( 0x00, 0x38, 0, 0, 0x02 );
|
||||||
pPe.setValAt< uint32_t >( 0x10, playerId );
|
pPe.setValAt< uint32_t >( 0x10, playerId );
|
||||||
sendSinglePacket( &pPe );
|
sendSinglePacket( &pPe );
|
||||||
|
|
||||||
|
g_log.info( "[" + std::string( id ) + "] Setting session for chat connection" );
|
||||||
|
session->setChatConnection( pCon );
|
||||||
|
pPe = GamePacket( 0x02, 0x28, playerId, playerId, 0x03 );
|
||||||
|
sendSinglePacket( &pPe );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -557,7 +557,8 @@ void Core::Network::GameConnection::tellHandler( const Packets::GamePacket& inPa
|
||||||
{
|
{
|
||||||
GamePacketNew< FFXIVIpcTellErrNotFound, ServerChatIpcType > tellErrPacket( pPlayer->getId() );
|
GamePacketNew< FFXIVIpcTellErrNotFound, ServerChatIpcType > tellErrPacket( pPlayer->getId() );
|
||||||
strcpy( tellErrPacket.data().receipientName, targetPcName.c_str() );
|
strcpy( tellErrPacket.data().receipientName, targetPcName.c_str() );
|
||||||
pPlayer->queueChatPacket( tellErrPacket );
|
sendSinglePacket( tellErrPacket );
|
||||||
|
|
||||||
g_log.debug( "TargetPc not found" );
|
g_log.debug( "TargetPc not found" );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue