mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-28 23:27:45 +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_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,29 +179,41 @@ 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();
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Reference in a new issue