1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-29 07:37:45 +00:00

more duty reset work, respawn players on duty reset;

This commit is contained in:
Alice Ogeda 2023-03-08 16:36:13 -03:00 committed by Tahir
parent a10c0cdc0f
commit 25dbd60cdf
2 changed files with 26 additions and 12 deletions

View file

@ -57,6 +57,7 @@ Sapphire::InstanceContent::InstanceContent( std::shared_ptr< Excel::ExcelStruct<
m_instanceExpireTime( Util::getTimeSeconds() + 300 ), m_instanceExpireTime( Util::getTimeSeconds() + 300 ),
m_instanceTerminateTime( 0 ), m_instanceTerminateTime( 0 ),
m_instanceResetTime( 0 ), m_instanceResetTime( 0 ),
m_instanceResetFinishTime( 0 ),
m_instanceTerminate( false ) m_instanceTerminate( false )
{ {
@ -178,28 +179,40 @@ void Sapphire::InstanceContent::onUpdate( uint64_t tickCount )
{ {
//sendDutyReset(); //sendDutyReset();
m_instanceResetTime = tickCount + 3000; m_instanceResetTime = tickCount + 3000;
return;
}
if( m_instanceResetFinishTime == 0 )
{
m_instanceResetFinishTime = tickCount + 3000;
m_pEncounter->reset(); m_pEncounter->reset();
auto& server = Common::Service< World::WorldServer >::ref();
for( const auto& playerIt : m_playerMap ) for( const auto& playerIt : m_playerMap )
{ {
movePlayerToEntrance( *playerIt.second ); auto pPlayer = playerIt.second;
pPlayer->resetHp();
pPlayer->resetMp();
pPlayer->setStatus( Common::ActorStatus::Idle );
movePlayerToEntrance( *pPlayer );
auto zoneInPacket = makeActorControlSelf( pPlayer->getId(), Appear, 0x3, 0, 0, 0 );
auto setStatusPacket = makeActorControl( pPlayer->getId(), SetStatus, static_cast< uint8_t >( Common::ActorStatus::Idle ) );
server.queueForPlayer( pPlayer->getCharacterId(), zoneInPacket );
server.queueForPlayers( pPlayer->getInRangePlayerIds( true ), setStatusPacket );
} }
if( m_pEntranceEObj ) if( m_pEntranceEObj )
m_pEntranceEObj->setPermissionInvisibility( 0 ); m_pEntranceEObj->setPermissionInvisibility( 0 );
return; return;
} }
else if( tickCount < m_instanceResetTime ) else if( tickCount < m_instanceResetTime )
return; return;
auto& server = Common::Service< World::WorldServer >::ref();
for( const auto& playerIt : m_playerMap )
{
auto player = playerIt.second;
auto zoneInPacket = makeActorControlSelf( player->getId(), Appear, 0x3, 0, 0, 0 );
auto setStatusPacket = makeActorControl( player->getId(), SetStatus, static_cast< uint8_t >( Common::ActorStatus::Idle ) );
server.queueForPlayer( player->getCharacterId(), zoneInPacket );
server.queueForPlayers( player->getInRangePlayerIds( true ), setStatusPacket );
}
m_pEntranceEObj->setPermissionInvisibility( 1 ); m_pEntranceEObj->setPermissionInvisibility( 1 );
sendForward(); sendForward();

View file

@ -208,6 +208,7 @@ namespace Sapphire
uint64_t m_instanceTerminateTime; uint64_t m_instanceTerminateTime;
uint64_t m_instanceCommenceTime; uint64_t m_instanceCommenceTime;
uint64_t m_instanceResetTime; uint64_t m_instanceResetTime;
uint64_t m_instanceResetFinishTime;
bool m_voteState; bool m_voteState;
bool m_instanceTerminate; bool m_instanceTerminate;