mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-27 06:47:45 +00:00
fixed playerstates being set incorrectly
This commit is contained in:
parent
a1999590b1
commit
2fe10bda85
5 changed files with 37 additions and 18 deletions
|
@ -547,7 +547,6 @@ namespace Core {
|
|||
|
||||
enum struct PlayerStateFlag : uint8_t
|
||||
{
|
||||
NoFlag = 0,
|
||||
NoCombat,
|
||||
Combat,
|
||||
Casting,
|
||||
|
@ -560,11 +559,10 @@ namespace Core {
|
|||
Occupied3,
|
||||
BoundByDuty,
|
||||
Occupied4,
|
||||
NewAdventurer,
|
||||
DuelingArea,
|
||||
TradeOpen,
|
||||
BrowsingBazaar,
|
||||
Occupied5,
|
||||
HandlingItems,
|
||||
|
||||
Crafting,
|
||||
PreparingToCraft,
|
||||
Gathering,
|
||||
|
@ -573,10 +571,9 @@ namespace Core {
|
|||
BetweenAreas,
|
||||
Stealthed,
|
||||
InnRoom,
|
||||
|
||||
Jumping,
|
||||
AutoRun,
|
||||
Occupied5,
|
||||
Occupied6,
|
||||
BetweenAreas1,
|
||||
SystemError,
|
||||
LoggingOut,
|
||||
|
@ -607,7 +604,13 @@ namespace Core {
|
|||
WaitingForRaceOrMatch,
|
||||
WaitingForTripleTriadMatch,
|
||||
InFlight,
|
||||
WatchingCutscene1
|
||||
WatchingCutscene1,
|
||||
DeepDungeon,
|
||||
Swimming,
|
||||
Diving,
|
||||
RegisteringTripleTriad,
|
||||
WaitingTripleTriad,
|
||||
InCrossWorldParty
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ void Core::Action::EventAction::onStart()
|
|||
m_startTime = Util::getTimeMs();
|
||||
|
||||
auto control = ActorControlPacket142( m_pSource->getId(), Common::ActorControlType::CastStart,
|
||||
1, m_id, 0x4000002F );
|
||||
1, m_id, 0x4000004E );
|
||||
|
||||
if( m_pSource->isPlayer() )
|
||||
{
|
||||
|
|
|
@ -554,14 +554,14 @@ bool Core::Entity::Player::isNewAdventurer() const
|
|||
|
||||
void Core::Entity::Player::setNewAdventurer( bool state )
|
||||
{
|
||||
if( !state )
|
||||
{
|
||||
unsetStateFlag( PlayerStateFlag::NewAdventurer );
|
||||
}
|
||||
else
|
||||
{
|
||||
setStateFlag( PlayerStateFlag::NewAdventurer );
|
||||
}
|
||||
//if( !state )
|
||||
//{
|
||||
// unsetStateFlag( PlayerStateFlag::NewAdventurer );
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// setStateFlag( PlayerStateFlag::NewAdventurer );
|
||||
//}
|
||||
sendStateFlags();
|
||||
m_bNewAdventurer = state;
|
||||
setSyncFlag( PlayerSyncFlags::NewAdventurer );
|
||||
|
@ -1014,6 +1014,20 @@ void Core::Entity::Player::setStateFlag( Core::Common::PlayerStateFlag flag )
|
|||
|
||||
}
|
||||
|
||||
void Core::Entity::Player::setStateFlags( std::vector< Common::PlayerStateFlag > flags )
|
||||
{
|
||||
for( const auto& flag : flags )
|
||||
{
|
||||
int iFlag = static_cast< uint32_t >( flag );
|
||||
|
||||
uint16_t index;
|
||||
uint8_t value;
|
||||
Util::valueToFlagByteIndexValue( iFlag, value, index );
|
||||
|
||||
m_stateFlags[index] |= value;
|
||||
}
|
||||
}
|
||||
|
||||
void Core::Entity::Player::sendStateFlags()
|
||||
{
|
||||
queuePacket( PlayerStateFlagsPacket( getAsPlayer() ) );
|
||||
|
|
|
@ -386,6 +386,8 @@ public:
|
|||
const uint8_t* getStateFlags() const;
|
||||
/* set a specified state flag */
|
||||
void setStateFlag( Common::PlayerStateFlag flag );
|
||||
/* set a specified state flag */
|
||||
void setStateFlags( std::vector< Common::PlayerStateFlag > flags );
|
||||
/* check if a specified flag is set */
|
||||
bool hasStateFlag( Common::PlayerStateFlag flag ) const;
|
||||
/* reset a specified flag */
|
||||
|
|
|
@ -203,8 +203,8 @@ bool Core::Entity::Player::load( uint32_t charId, Core::SessionPtr pSession )
|
|||
if( m_hp == 0 )
|
||||
m_status = ActorStatus::Dead;
|
||||
|
||||
if( m_bNewAdventurer )
|
||||
setStateFlag( PlayerStateFlag::NewAdventurer );
|
||||
// if( m_bNewAdventurer )
|
||||
// setStateFlag( PlayerStateFlag::NewAdventurer );
|
||||
|
||||
setStateFlag( PlayerStateFlag::BetweenAreas );
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue