mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-27 22:57: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
|
enum struct PlayerStateFlag : uint8_t
|
||||||
{
|
{
|
||||||
NoFlag = 0,
|
|
||||||
NoCombat,
|
NoCombat,
|
||||||
Combat,
|
Combat,
|
||||||
Casting,
|
Casting,
|
||||||
|
@ -560,11 +559,10 @@ namespace Core {
|
||||||
Occupied3,
|
Occupied3,
|
||||||
BoundByDuty,
|
BoundByDuty,
|
||||||
Occupied4,
|
Occupied4,
|
||||||
NewAdventurer,
|
DuelingArea,
|
||||||
TradeOpen,
|
TradeOpen,
|
||||||
BrowsingBazaar,
|
Occupied5,
|
||||||
HandlingItems,
|
HandlingItems,
|
||||||
|
|
||||||
Crafting,
|
Crafting,
|
||||||
PreparingToCraft,
|
PreparingToCraft,
|
||||||
Gathering,
|
Gathering,
|
||||||
|
@ -573,10 +571,9 @@ namespace Core {
|
||||||
BetweenAreas,
|
BetweenAreas,
|
||||||
Stealthed,
|
Stealthed,
|
||||||
InnRoom,
|
InnRoom,
|
||||||
|
|
||||||
Jumping,
|
Jumping,
|
||||||
AutoRun,
|
AutoRun,
|
||||||
Occupied5,
|
Occupied6,
|
||||||
BetweenAreas1,
|
BetweenAreas1,
|
||||||
SystemError,
|
SystemError,
|
||||||
LoggingOut,
|
LoggingOut,
|
||||||
|
@ -607,7 +604,13 @@ namespace Core {
|
||||||
WaitingForRaceOrMatch,
|
WaitingForRaceOrMatch,
|
||||||
WaitingForTripleTriadMatch,
|
WaitingForTripleTriadMatch,
|
||||||
InFlight,
|
InFlight,
|
||||||
WatchingCutscene1
|
WatchingCutscene1,
|
||||||
|
DeepDungeon,
|
||||||
|
Swimming,
|
||||||
|
Diving,
|
||||||
|
RegisteringTripleTriad,
|
||||||
|
WaitingTripleTriad,
|
||||||
|
InCrossWorldParty
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ void Core::Action::EventAction::onStart()
|
||||||
m_startTime = Util::getTimeMs();
|
m_startTime = Util::getTimeMs();
|
||||||
|
|
||||||
auto control = ActorControlPacket142( m_pSource->getId(), Common::ActorControlType::CastStart,
|
auto control = ActorControlPacket142( m_pSource->getId(), Common::ActorControlType::CastStart,
|
||||||
1, m_id, 0x4000002F );
|
1, m_id, 0x4000004E );
|
||||||
|
|
||||||
if( m_pSource->isPlayer() )
|
if( m_pSource->isPlayer() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -554,14 +554,14 @@ bool Core::Entity::Player::isNewAdventurer() const
|
||||||
|
|
||||||
void Core::Entity::Player::setNewAdventurer( bool state )
|
void Core::Entity::Player::setNewAdventurer( bool state )
|
||||||
{
|
{
|
||||||
if( !state )
|
//if( !state )
|
||||||
{
|
//{
|
||||||
unsetStateFlag( PlayerStateFlag::NewAdventurer );
|
// unsetStateFlag( PlayerStateFlag::NewAdventurer );
|
||||||
}
|
//}
|
||||||
else
|
//else
|
||||||
{
|
//{
|
||||||
setStateFlag( PlayerStateFlag::NewAdventurer );
|
// setStateFlag( PlayerStateFlag::NewAdventurer );
|
||||||
}
|
//}
|
||||||
sendStateFlags();
|
sendStateFlags();
|
||||||
m_bNewAdventurer = state;
|
m_bNewAdventurer = state;
|
||||||
setSyncFlag( PlayerSyncFlags::NewAdventurer );
|
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()
|
void Core::Entity::Player::sendStateFlags()
|
||||||
{
|
{
|
||||||
queuePacket( PlayerStateFlagsPacket( getAsPlayer() ) );
|
queuePacket( PlayerStateFlagsPacket( getAsPlayer() ) );
|
||||||
|
|
|
@ -386,6 +386,8 @@ public:
|
||||||
const uint8_t* getStateFlags() const;
|
const uint8_t* getStateFlags() const;
|
||||||
/* set a specified state flag */
|
/* set a specified state flag */
|
||||||
void setStateFlag( Common::PlayerStateFlag 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 */
|
/* check if a specified flag is set */
|
||||||
bool hasStateFlag( Common::PlayerStateFlag flag ) const;
|
bool hasStateFlag( Common::PlayerStateFlag flag ) const;
|
||||||
/* reset a specified flag */
|
/* reset a specified flag */
|
||||||
|
|
|
@ -203,8 +203,8 @@ bool Core::Entity::Player::load( uint32_t charId, Core::SessionPtr pSession )
|
||||||
if( m_hp == 0 )
|
if( m_hp == 0 )
|
||||||
m_status = ActorStatus::Dead;
|
m_status = ActorStatus::Dead;
|
||||||
|
|
||||||
if( m_bNewAdventurer )
|
// if( m_bNewAdventurer )
|
||||||
setStateFlag( PlayerStateFlag::NewAdventurer );
|
// setStateFlag( PlayerStateFlag::NewAdventurer );
|
||||||
|
|
||||||
setStateFlag( PlayerStateFlag::BetweenAreas );
|
setStateFlag( PlayerStateFlag::BetweenAreas );
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue