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
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue