1
Fork 0
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:
Mordred 2017-08-13 18:28:05 +02:00
parent a1999590b1
commit 2fe10bda85
5 changed files with 37 additions and 18 deletions

View file

@ -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
};

View file

@ -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() )
{

View file

@ -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() ) );

View file

@ -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 */

View file

@ -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 );