mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-05-01 16:37:45 +00:00
fix indent and leave button opcode def
This commit is contained in:
parent
9789faaf17
commit
f9323cc574
1 changed files with 164 additions and 163 deletions
|
@ -93,6 +93,7 @@ enum ClientTrigger
|
||||||
SomeDirectorEvent = 0x328, // unsure what exactly triggers it, starts director when returning to instance though
|
SomeDirectorEvent = 0x328, // unsure what exactly triggers it, starts director when returning to instance though
|
||||||
|
|
||||||
EnterTerritoryEventFinished = 0x330,
|
EnterTerritoryEventFinished = 0x330,
|
||||||
|
RequestInstanceLeave = 0x330, // df menu button
|
||||||
|
|
||||||
AchievementCritReq = 0x3E8,
|
AchievementCritReq = 0x3E8,
|
||||||
AchievementList = 0x3E9,
|
AchievementList = 0x3E9,
|
||||||
|
@ -107,174 +108,174 @@ enum ClientTrigger
|
||||||
void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& inPacket,
|
void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& inPacket,
|
||||||
Entity::Player& player )
|
Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto pLog = g_fw.get< Logger >();
|
auto pLog = g_fw.get< Logger >();
|
||||||
uint16_t commandId = inPacket.getValAt< uint16_t >( 0x20 );
|
uint16_t commandId = inPacket.getValAt< uint16_t >( 0x20 );
|
||||||
uint64_t param1 = inPacket.getValAt< uint64_t >( 0x24 );
|
uint64_t param1 = inPacket.getValAt< uint64_t >( 0x24 );
|
||||||
uint32_t param11 = inPacket.getValAt< uint32_t >( 0x24 );
|
uint32_t param11 = inPacket.getValAt< uint32_t >( 0x24 );
|
||||||
uint32_t param12 = inPacket.getValAt< uint32_t >( 0x28 );
|
uint32_t param12 = inPacket.getValAt< uint32_t >( 0x28 );
|
||||||
uint32_t param2 = inPacket.getValAt< uint32_t >( 0x2C );
|
uint32_t param2 = inPacket.getValAt< uint32_t >( 0x2C );
|
||||||
uint64_t param3 = inPacket.getValAt< uint64_t >( 0x38 );
|
uint64_t param3 = inPacket.getValAt< uint64_t >( 0x38 );
|
||||||
|
|
||||||
pLog->debug( "[" + std::to_string( m_pSession->getId() ) + "] Incoming action: " +
|
pLog->debug( "[" + std::to_string( m_pSession->getId() ) + "] Incoming action: " +
|
||||||
boost::str( boost::format( "%|04X|" ) % ( uint32_t ) ( commandId & 0xFFFF ) ) +
|
boost::str( boost::format( "%|04X|" ) % ( uint32_t ) ( commandId & 0xFFFF ) ) +
|
||||||
"\nparam1: " + boost::str( boost::format( "%|016X|" ) % ( uint64_t ) ( param1 & 0xFFFFFFFFFFFFFFF ) ) +
|
"\nparam1: " + boost::str( boost::format( "%|016X|" ) % ( uint64_t ) ( param1 & 0xFFFFFFFFFFFFFFF ) ) +
|
||||||
"\nparam2: " + boost::str( boost::format( "%|08X|" ) % ( uint32_t ) ( param2 & 0xFFFFFFFF ) ) +
|
"\nparam2: " + boost::str( boost::format( "%|08X|" ) % ( uint32_t ) ( param2 & 0xFFFFFFFF ) ) +
|
||||||
"\nparam3: " + boost::str( boost::format( "%|016X|" ) % ( uint64_t ) ( param3 & 0xFFFFFFFFFFFFFFF ) )
|
"\nparam3: " + boost::str( boost::format( "%|016X|" ) % ( uint64_t ) ( param3 & 0xFFFFFFFFFFFFFFF ) )
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
//g_log.Log(LoggingSeverity::debug, "[" + std::to_string(m_pSession->getId()) + "] " + pInPacket->toString());
|
//g_log.Log(LoggingSeverity::debug, "[" + std::to_string(m_pSession->getId()) + "] " + pInPacket->toString());
|
||||||
|
|
||||||
switch( commandId )
|
switch( commandId )
|
||||||
{
|
{
|
||||||
case ClientTrigger::ToggleSeathe: // Toggle sheathe
|
case ClientTrigger::ToggleSeathe: // Toggle sheathe
|
||||||
{
|
{
|
||||||
if ( param11 == 1 )
|
if ( param11 == 1 )
|
||||||
player.setStance( Entity::Chara::Stance::Active );
|
player.setStance( Entity::Chara::Stance::Active );
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.setStance( Entity::Chara::Stance::Passive );
|
player.setStance( Entity::Chara::Stance::Passive );
|
||||||
player.setAutoattack( false );
|
player.setAutoattack( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
player.sendToInRangeSet( ActorControlPacket142( player.getId(), 0, param11, 1 ) );
|
player.sendToInRangeSet( ActorControlPacket142( player.getId(), 0, param11, 1 ) );
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::ToggleAutoAttack: // Toggle auto-attack
|
|
||||||
{
|
|
||||||
if ( param11 == 1 )
|
|
||||||
{
|
|
||||||
player.setAutoattack( true );
|
|
||||||
player.setStance( Entity::Chara::Stance::Active );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
player.setAutoattack( false );
|
|
||||||
|
|
||||||
player.sendToInRangeSet( ActorControlPacket142( player.getId(), 1, param11, 1 ) );
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::ChangeTarget: // Change target
|
|
||||||
{
|
|
||||||
|
|
||||||
uint64_t targetId = inPacket.getValAt< uint64_t >( 0x24 );
|
|
||||||
player.changeTarget( targetId );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::Dismount:
|
|
||||||
{
|
|
||||||
player.dismount();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::RemoveStatusEffect: // Remove status (clicking it off)
|
|
||||||
{
|
|
||||||
// todo: check if status can be removed by client from exd
|
|
||||||
player.removeSingleStatusEffectById( static_cast< uint32_t >( param1 ) );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::CastCancel: // Cancel cast
|
|
||||||
{
|
|
||||||
if( player.getCurrentAction() )
|
|
||||||
player.getCurrentAction()->setInterrupted();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::MarkPlayer: // Mark player
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::SetTitle: // Set player title
|
|
||||||
{
|
|
||||||
player.setTitle( static_cast< uint16_t >( param1 ) );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::TitleList: // Get title list
|
|
||||||
{
|
|
||||||
player.sendTitleList();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::UpdatedSeenHowTos: // Update howtos seen
|
|
||||||
{
|
|
||||||
uint32_t howToId = param11;
|
|
||||||
player.updateHowtosSeen( howToId );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::Emote: // emote
|
|
||||||
{
|
|
||||||
uint64_t targetId = player.getTargetId();
|
|
||||||
uint32_t emoteId = inPacket.getValAt< uint32_t >( 0x24 );
|
|
||||||
|
|
||||||
player.emote( emoteId, targetId );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::PersistantEmoteCancel: // cancel persistant emote
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::PoseChange: // change pose
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::PoseReapply: // reapply pose
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::PoseCancel: // cancel pose
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::Return: // return dead / accept raise
|
|
||||||
{
|
|
||||||
switch ( static_cast < ResurrectType >( param1 ) )
|
|
||||||
{
|
|
||||||
case ResurrectType::RaiseSpell:
|
|
||||||
// todo: handle raise case (set position to raiser, apply weakness status, set hp/mp/tp as well as packet)
|
|
||||||
player.returnToHomepoint();
|
|
||||||
break;
|
|
||||||
case ResurrectType::Return:
|
|
||||||
player.returnToHomepoint();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
case ClientTrigger::FinishZoning: // Finish zoning
|
|
||||||
{
|
|
||||||
player.finishZoning();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ClientTrigger::Teleport: // Teleport
|
|
||||||
{
|
|
||||||
|
|
||||||
player.teleportQuery( param11 );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::DyeItem: // Dye item
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::DirectorInitFinish: // Director init finish
|
|
||||||
{
|
|
||||||
player.getCurrentZone()->onInitDirector( player );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTrigger::SomeDirectorEvent: // Director init finish
|
|
||||||
{
|
|
||||||
player.getCurrentZone()->onSomeDirectorEvent( player );
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ClientTrigger::EnterTerritoryEventFinished:// this may still be something else. I think i have seen it elsewhere
|
case ClientTrigger::ToggleAutoAttack: // Toggle auto-attack
|
||||||
{
|
{
|
||||||
player.setOnEnterEventDone( true );
|
if ( param11 == 1 )
|
||||||
break;
|
{
|
||||||
}
|
player.setAutoattack( true );
|
||||||
default:
|
player.setStance( Entity::Chara::Stance::Active );
|
||||||
{
|
}
|
||||||
pLog->debug( "[" + std::to_string( m_pSession->getId() ) + "] Unhandled action: " +
|
else
|
||||||
boost::str( boost::format( "%|04X|" ) % (uint32_t) ( commandId & 0xFFFF ) ) );
|
player.setAutoattack( false );
|
||||||
break;
|
|
||||||
}
|
player.sendToInRangeSet( ActorControlPacket142( player.getId(), 1, param11, 1 ) );
|
||||||
}
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::ChangeTarget: // Change target
|
||||||
|
{
|
||||||
|
|
||||||
|
uint64_t targetId = inPacket.getValAt< uint64_t >( 0x24 );
|
||||||
|
player.changeTarget( targetId );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::Dismount:
|
||||||
|
{
|
||||||
|
player.dismount();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::RemoveStatusEffect: // Remove status (clicking it off)
|
||||||
|
{
|
||||||
|
// todo: check if status can be removed by client from exd
|
||||||
|
player.removeSingleStatusEffectById( static_cast< uint32_t >( param1 ) );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::CastCancel: // Cancel cast
|
||||||
|
{
|
||||||
|
if( player.getCurrentAction() )
|
||||||
|
player.getCurrentAction()->setInterrupted();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::MarkPlayer: // Mark player
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::SetTitle: // Set player title
|
||||||
|
{
|
||||||
|
player.setTitle( static_cast< uint16_t >( param1 ) );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::TitleList: // Get title list
|
||||||
|
{
|
||||||
|
player.sendTitleList();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::UpdatedSeenHowTos: // Update howtos seen
|
||||||
|
{
|
||||||
|
uint32_t howToId = param11;
|
||||||
|
player.updateHowtosSeen( howToId );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::Emote: // emote
|
||||||
|
{
|
||||||
|
uint64_t targetId = player.getTargetId();
|
||||||
|
uint32_t emoteId = inPacket.getValAt< uint32_t >( 0x24 );
|
||||||
|
|
||||||
|
player.emote( emoteId, targetId );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::PersistantEmoteCancel: // cancel persistant emote
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::PoseChange: // change pose
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::PoseReapply: // reapply pose
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::PoseCancel: // cancel pose
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::Return: // return dead / accept raise
|
||||||
|
{
|
||||||
|
switch ( static_cast < ResurrectType >( param1 ) )
|
||||||
|
{
|
||||||
|
case ResurrectType::RaiseSpell:
|
||||||
|
// todo: handle raise case (set position to raiser, apply weakness status, set hp/mp/tp as well as packet)
|
||||||
|
player.returnToHomepoint();
|
||||||
|
break;
|
||||||
|
case ResurrectType::Return:
|
||||||
|
player.returnToHomepoint();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
case ClientTrigger::FinishZoning: // Finish zoning
|
||||||
|
{
|
||||||
|
player.finishZoning();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case ClientTrigger::Teleport: // Teleport
|
||||||
|
{
|
||||||
|
|
||||||
|
player.teleportQuery( param11 );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::DyeItem: // Dye item
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::DirectorInitFinish: // Director init finish
|
||||||
|
{
|
||||||
|
player.getCurrentZone()->onInitDirector( player );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::SomeDirectorEvent: // Director init finish
|
||||||
|
{
|
||||||
|
player.getCurrentZone()->onSomeDirectorEvent( player );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ClientTrigger::EnterTerritoryEventFinished:// this may still be something else. I think i have seen it elsewhere
|
||||||
|
{
|
||||||
|
player.setOnEnterEventDone( true );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
pLog->debug( "[" + std::to_string( m_pSession->getId() ) + "] Unhandled action: " +
|
||||||
|
boost::str( boost::format( "%|04X|" ) % (uint32_t) ( commandId & 0xFFFF ) ) );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue