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:
parent
a10c0cdc0f
commit
25dbd60cdf
2 changed files with 26 additions and 12 deletions
|
@ -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();
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue