1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-28 15:17:46 +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_instanceTerminateTime( 0 ),
m_instanceResetTime( 0 ),
m_instanceResetFinishTime( 0 ),
m_instanceTerminate( false )
{
@ -178,29 +179,41 @@ void Sapphire::InstanceContent::onUpdate( uint64_t tickCount )
{
//sendDutyReset();
m_instanceResetTime = tickCount + 3000;
return;
}
if( m_instanceResetFinishTime == 0 )
{
m_instanceResetFinishTime = tickCount + 3000;
m_pEncounter->reset();
auto& server = Common::Service< World::WorldServer >::ref();
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 )
m_pEntranceEObj->setPermissionInvisibility( 0 );
return;
}
else if( tickCount < m_instanceResetTime )
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 );
sendForward();

View file

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