mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-30 16:17:46 +00:00
Finish zoning converted aswell
This commit is contained in:
parent
bfdf732579
commit
cf69e1876a
5 changed files with 34 additions and 56 deletions
|
@ -1581,55 +1581,6 @@ void Sapphire::Entity::Player::sendTitleList()
|
||||||
queuePacket( titleListPacket );
|
queuePacket( titleListPacket );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Sapphire::Entity::Player::sendZoneInPackets( uint32_t param1, bool shouldSetStatus = false )
|
|
||||||
{
|
|
||||||
auto zoneInPacket = makeActorControlSelf( getId(), Appear, param1, 0, 0, 0 );
|
|
||||||
auto SetStatusPacket = makeActorControl( getId(), SetStatus, static_cast< uint8_t >( Common::ActorStatus::Idle ) );
|
|
||||||
|
|
||||||
if( !getGmInvis() )
|
|
||||||
sendToInRangeSet( zoneInPacket );
|
|
||||||
|
|
||||||
if( shouldSetStatus )
|
|
||||||
sendToInRangeSet( SetStatusPacket, true );
|
|
||||||
|
|
||||||
queuePacket( zoneInPacket );
|
|
||||||
|
|
||||||
setZoningType( Common::ZoneingType::None );
|
|
||||||
unsetStateFlag( PlayerStateFlag::BetweenAreas );
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sapphire::Entity::Player::finishZoning()
|
|
||||||
{
|
|
||||||
switch( getZoningType() )
|
|
||||||
{
|
|
||||||
case ZoneingType::None:
|
|
||||||
sendZoneInPackets( 0x01 );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ZoneingType::Teleport:
|
|
||||||
sendZoneInPackets( 0x01 );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ZoneingType::Return:
|
|
||||||
case ZoneingType::ReturnDead:
|
|
||||||
{
|
|
||||||
if( getStatus() == Common::ActorStatus::Dead )
|
|
||||||
{
|
|
||||||
resetHp();
|
|
||||||
resetMp();
|
|
||||||
setStatus( Common::ActorStatus::Idle );
|
|
||||||
sendZoneInPackets( 0x01, true );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
sendZoneInPackets( 0x01 );
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ZoneingType::FadeIn:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sapphire::Entity::Player::teleportQuery( uint16_t aetheryteId )
|
void Sapphire::Entity::Player::teleportQuery( uint16_t aetheryteId )
|
||||||
{
|
{
|
||||||
auto& exdData = Common::Service< Data::ExdData >::ref();
|
auto& exdData = Common::Service< Data::ExdData >::ref();
|
||||||
|
|
|
@ -562,10 +562,6 @@ namespace Sapphire::Entity
|
||||||
/*! set the loading complete bool */
|
/*! set the loading complete bool */
|
||||||
void setLoadingComplete( bool bComplete );
|
void setLoadingComplete( bool bComplete );
|
||||||
|
|
||||||
void sendZoneInPackets( uint32_t param1, bool pSetStatus );
|
|
||||||
|
|
||||||
void finishZoning();
|
|
||||||
|
|
||||||
void sendZonePackets();
|
void sendZonePackets();
|
||||||
|
|
||||||
Common::ZoneingType getZoningType() const;
|
Common::ZoneingType getZoningType() const;
|
||||||
|
|
|
@ -61,6 +61,37 @@ void WarpMgr::requestMoveTerritory( Entity::Player& player, Common::WarpType war
|
||||||
|
|
||||||
void WarpMgr::finishWarp( Entity::Player& player )
|
void WarpMgr::finishWarp( Entity::Player& player )
|
||||||
{
|
{
|
||||||
|
WarpType warpType = WarpType::WARP_TYPE_NORMAL;
|
||||||
|
auto it = m_entityIdToWarpInfoMap.find( player.getId() );
|
||||||
|
if( it != m_entityIdToWarpInfoMap.end() )
|
||||||
|
warpType = it->second.m_warpType;
|
||||||
|
|
||||||
|
switch( warpType )
|
||||||
|
{
|
||||||
|
case WarpType::WARP_TYPE_REISE:
|
||||||
|
case WarpType::WARP_TYPE_HOME_POINT:
|
||||||
|
{
|
||||||
|
if( player.getStatus() == Common::ActorStatus::Dead )
|
||||||
|
{
|
||||||
|
player.resetHp();
|
||||||
|
player.resetMp();
|
||||||
|
player.setStatus( Common::ActorStatus::Idle );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
auto zoneInPacket = makeActorControlSelf( player.getId(), Appear, warpType, 0, 0, 0 );
|
||||||
|
auto SetStatusPacket = makeActorControl( player.getId(), SetStatus, static_cast< uint8_t >( Common::ActorStatus::Idle ) );
|
||||||
|
|
||||||
|
if( !player.getGmInvis() )
|
||||||
|
player.sendToInRangeSet( zoneInPacket );
|
||||||
|
|
||||||
|
player.sendToInRangeSet( SetStatusPacket, true );
|
||||||
|
|
||||||
|
auto& server = Common::Service< WorldServer >::ref();
|
||||||
|
server.queueForPlayer( player.getCharacterId(), zoneInPacket );
|
||||||
|
|
||||||
|
player.unsetStateFlag( PlayerStateFlag::BetweenAreas );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -648,8 +648,6 @@ void Sapphire::Network::GameConnection::gmCommandNameHandler( const Packets::FFX
|
||||||
targetPlayer->resetHp();
|
targetPlayer->resetHp();
|
||||||
targetPlayer->resetMp();
|
targetPlayer->resetMp();
|
||||||
targetPlayer->setStatus( Common::ActorStatus::Idle );
|
targetPlayer->setStatus( Common::ActorStatus::Idle );
|
||||||
targetPlayer->sendZoneInPackets( 0x01, true );
|
|
||||||
|
|
||||||
|
|
||||||
targetPlayer->sendToInRangeSet( makeActorControlSelf( player.getId(), Appear, 0x01, 0x01, 0, 113 ), true );
|
targetPlayer->sendToInRangeSet( makeActorControlSelf( player.getId(), Appear, 0x01, 0x01, 0, 113 ), true );
|
||||||
targetPlayer->sendToInRangeSet( makeActorControl( player.getId(), SetStatus,
|
targetPlayer->sendToInRangeSet( makeActorControl( player.getId(), SetStatus,
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#include "Territory/Territory.h"
|
#include "Territory/Territory.h"
|
||||||
#include "Manager/HousingMgr.h"
|
#include "Manager/HousingMgr.h"
|
||||||
|
#include "Manager/WarpMgr.h"
|
||||||
|
|
||||||
#include "Network/GameConnection.h"
|
#include "Network/GameConnection.h"
|
||||||
|
|
||||||
|
@ -587,7 +588,8 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_
|
||||||
}
|
}
|
||||||
case PacketCommand::FINISH_LOADING: // Finish zoning
|
case PacketCommand::FINISH_LOADING: // Finish zoning
|
||||||
{
|
{
|
||||||
player.finishZoning();
|
auto& warpMgr = Service< WarpMgr >::ref();
|
||||||
|
warpMgr.finishWarp( player );
|
||||||
player.setLoadingComplete( true );
|
player.setLoadingComplete( true );
|
||||||
if( player.isLogin() )
|
if( player.isLogin() )
|
||||||
player.setIsLogin( false );
|
player.setIsLogin( false );
|
||||||
|
|
Loading…
Add table
Reference in a new issue