1
Fork 0
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:
Adam 2018-03-15 03:13:20 +11:00
parent 9789faaf17
commit f9323cc574

View file

@ -93,6 +93,7 @@ enum ClientTrigger
SomeDirectorEvent = 0x328, // unsure what exactly triggers it, starts director when returning to instance though
EnterTerritoryEventFinished = 0x330,
RequestInstanceLeave = 0x330, // df menu button
AchievementCritReq = 0x3E8,
AchievementList = 0x3E9,
@ -107,174 +108,174 @@ enum ClientTrigger
void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& inPacket,
Entity::Player& player )
{
auto pLog = g_fw.get< Logger >();
uint16_t commandId = inPacket.getValAt< uint16_t >( 0x20 );
uint64_t param1 = inPacket.getValAt< uint64_t >( 0x24 );
uint32_t param11 = inPacket.getValAt< uint32_t >( 0x24 );
uint32_t param12 = inPacket.getValAt< uint32_t >( 0x28 );
uint32_t param2 = inPacket.getValAt< uint32_t >( 0x2C );
uint64_t param3 = inPacket.getValAt< uint64_t >( 0x38 );
auto pLog = g_fw.get< Logger >();
uint16_t commandId = inPacket.getValAt< uint16_t >( 0x20 );
uint64_t param1 = inPacket.getValAt< uint64_t >( 0x24 );
uint32_t param11 = inPacket.getValAt< uint32_t >( 0x24 );
uint32_t param12 = inPacket.getValAt< uint32_t >( 0x28 );
uint32_t param2 = inPacket.getValAt< uint32_t >( 0x2C );
uint64_t param3 = inPacket.getValAt< uint64_t >( 0x38 );
pLog->debug( "[" + std::to_string( m_pSession->getId() ) + "] Incoming action: " +
boost::str( boost::format( "%|04X|" ) % ( uint32_t ) ( commandId & 0xFFFF ) ) +
"\nparam1: " + boost::str( boost::format( "%|016X|" ) % ( uint64_t ) ( param1 & 0xFFFFFFFFFFFFFFF ) ) +
"\nparam2: " + boost::str( boost::format( "%|08X|" ) % ( uint32_t ) ( param2 & 0xFFFFFFFF ) ) +
"\nparam3: " + boost::str( boost::format( "%|016X|" ) % ( uint64_t ) ( param3 & 0xFFFFFFFFFFFFFFF ) )
);
pLog->debug( "[" + std::to_string( m_pSession->getId() ) + "] Incoming action: " +
boost::str( boost::format( "%|04X|" ) % ( uint32_t ) ( commandId & 0xFFFF ) ) +
"\nparam1: " + boost::str( boost::format( "%|016X|" ) % ( uint64_t ) ( param1 & 0xFFFFFFFFFFFFFFF ) ) +
"\nparam2: " + boost::str( boost::format( "%|08X|" ) % ( uint32_t ) ( param2 & 0xFFFFFFFF ) ) +
"\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 )
{
case ClientTrigger::ToggleSeathe: // Toggle sheathe
{
if ( param11 == 1 )
player.setStance( Entity::Chara::Stance::Active );
else
{
player.setStance( Entity::Chara::Stance::Passive );
player.setAutoattack( false );
}
switch( commandId )
{
case ClientTrigger::ToggleSeathe: // Toggle sheathe
{
if ( param11 == 1 )
player.setStance( Entity::Chara::Stance::Active );
else
{
player.setStance( Entity::Chara::Stance::Passive );
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;
}
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;
}
}
}
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;
}
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;
}
}
}