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

Fixed !instance cr, it now takes contentfindercondition ids as input though

This commit is contained in:
Mordred 2018-09-19 23:04:23 +02:00
parent a58056cde7
commit f7d2bb813a
7 changed files with 18 additions and 10 deletions

View file

@ -1247,7 +1247,7 @@ Core::Data::ContentFinderCondition::ContentFinderCondition( uint32_t row_id, Cor
auto row = exdData->m_ContentFinderConditionDat.get_row( row_id ); auto row = exdData->m_ContentFinderConditionDat.get_row( row_id );
territoryType = exdData->getField< uint16_t >( row, 1 ); territoryType = exdData->getField< uint16_t >( row, 1 );
contentLinkType = exdData->getField< uint8_t >( row, 2 ); contentLinkType = exdData->getField< uint8_t >( row, 2 );
content = exdData->getField< uint16_t >( row, 3 ); instanceContent = exdData->getField< uint16_t >( row, 3 );
contentMemberType = exdData->getField< uint8_t >( row, 9 ); contentMemberType = exdData->getField< uint8_t >( row, 9 );
classJobLevelRequired = exdData->getField< uint8_t >( row, 15 ); classJobLevelRequired = exdData->getField< uint8_t >( row, 15 );
classJobLevelSync = exdData->getField< uint8_t >( row, 16 ); classJobLevelSync = exdData->getField< uint8_t >( row, 16 );

View file

@ -1551,7 +1551,7 @@ struct ContentFinderCondition
{ {
uint16_t territoryType; uint16_t territoryType;
uint8_t contentLinkType; uint8_t contentLinkType;
uint16_t content; uint16_t instanceContent;
uint8_t contentMemberType; uint8_t contentMemberType;
uint8_t classJobLevelRequired; uint8_t classJobLevelRequired;
uint8_t classJobLevelSync; uint8_t classJobLevelSync;

View file

@ -77,12 +77,12 @@ void Core::Network::GameConnection::cfRegisterDuty( const Packets::FFXIVARR_PACK
if( !cfCondition ) if( !cfCondition )
return; return;
auto instance = pTeriMgr->createInstanceContent( cfCondition->content ); auto instance = pTeriMgr->createInstanceContent( cfCondition->instanceContent );
if( !instance ) if( !instance )
return; return;
auto pInstance = instance->getAsInstanceContent(); auto pInstance = instance->getAsInstanceContent();
pInstance->bindPlayer( player.getId() ); a pInstance->bindPlayer( player.getId() );
player.sendDebug( "Created instance with id: " + std::to_string( instance->getGuId() ) ); player.sendDebug( "Created instance with id: " + std::to_string( instance->getGuId() ) );

View file

@ -30,12 +30,13 @@ using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl; using namespace Core::Network::ActorControl;
Core::InstanceContent::InstanceContent( boost::shared_ptr< Core::Data::InstanceContent > pInstanceConfiguration, Core::InstanceContent::InstanceContent( boost::shared_ptr< Core::Data::InstanceContent > pInstanceConfiguration,
uint16_t territoryType,
uint32_t guId, uint32_t guId,
const std::string& internalName, const std::string& internalName,
const std::string& contentName, const std::string& contentName,
uint32_t instanceContentId ) uint32_t instanceContentId )
: :
Zone( static_cast< uint16_t >( pInstanceConfiguration->territoryType ), guId, internalName, contentName ), Zone( static_cast< uint16_t >( territoryType ), guId, internalName, contentName ),
Director( Event::Director::InstanceContent, instanceContentId ), Director( Event::Director::InstanceContent, instanceContentId ),
m_instanceConfiguration( pInstanceConfiguration ), m_instanceConfiguration( pInstanceConfiguration ),
m_instanceContentId( instanceContentId ), m_instanceContentId( instanceContentId ),

View file

@ -22,6 +22,7 @@ public:
}; };
InstanceContent( boost::shared_ptr< Core::Data::InstanceContent > pInstanceConfiguration, InstanceContent( boost::shared_ptr< Core::Data::InstanceContent > pInstanceConfiguration,
uint16_t territoryType,
uint32_t guId, uint32_t guId,
const std::string& internalName, const std::string& internalName,
const std::string& contentName, const std::string& contentName,

View file

@ -218,17 +218,23 @@ Core::ZonePtr Core::TerritoryMgr::createTerritoryInstance( uint32_t territoryTyp
return pZone; return pZone;
} }
Core::ZonePtr Core::TerritoryMgr::createInstanceContent( uint32_t instanceContentId ) Core::ZonePtr Core::TerritoryMgr::createInstanceContent( uint32_t contentFinderConditionId )
{ {
auto pExdData = g_fw.get< Data::ExdDataGenerated >(); auto pExdData = g_fw.get< Data::ExdDataGenerated >();
auto pContentFinderCondition = pExdData->get< Core::Data::ContentFinderCondition >( contentFinderConditionId );
if( !pContentFinderCondition )
return nullptr;
auto instanceContentId = pContentFinderCondition->instanceContent;
auto pInstanceContent = pExdData->get< Core::Data::InstanceContent >( instanceContentId ); auto pInstanceContent = pExdData->get< Core::Data::InstanceContent >( instanceContentId );
if( !pInstanceContent ) if( !pInstanceContent )
return nullptr; return nullptr;
if( !isInstanceContentTerritory( pInstanceContent->territoryType ) ) if( !isInstanceContentTerritory( pContentFinderCondition->territoryType ) )
return nullptr; return nullptr;
auto pTeri = getTerritoryDetail( pInstanceContent->territoryType ); auto pTeri = getTerritoryDetail( pContentFinderCondition->territoryType );
if( !pTeri || pInstanceContent->name.empty() ) if( !pTeri || pInstanceContent->name.empty() )
return nullptr; return nullptr;
@ -237,7 +243,7 @@ Core::ZonePtr Core::TerritoryMgr::createInstanceContent( uint32_t instanceConten
pLog->debug( "Starting instance for InstanceContent id: " + std::to_string( instanceContentId ) + pLog->debug( "Starting instance for InstanceContent id: " + std::to_string( instanceContentId ) +
" (" + pInstanceContent->name + ")" ); " (" + pInstanceContent->name + ")" );
auto pZone = make_InstanceContent( pInstanceContent, getNextInstanceId(), auto pZone = make_InstanceContent( pInstanceContent, pContentFinderCondition->territoryType, getNextInstanceId(),
pTeri->name, pInstanceContent->name, instanceContentId ); pTeri->name, pInstanceContent->name, instanceContentId );
pZone->init(); pZone->init();

View file

@ -95,7 +95,7 @@ public:
/*! creates a new instance for a given territoryTypeId */ /*! creates a new instance for a given territoryTypeId */
ZonePtr createTerritoryInstance( uint32_t territoryTypeId ); ZonePtr createTerritoryInstance( uint32_t territoryTypeId );
ZonePtr createInstanceContent( uint32_t instanceContentId ); ZonePtr createInstanceContent( uint32_t contentFinderConditionId );
/*! removes instance by instanceId, return true if successful */ /*! removes instance by instanceId, return true if successful */
bool removeTerritoryInstance( uint32_t territoryTypeId ); bool removeTerritoryInstance( uint32_t territoryTypeId );