1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-26 14:37:44 +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 );
territoryType = exdData->getField< uint16_t >( row, 1 );
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 );
classJobLevelRequired = exdData->getField< uint8_t >( row, 15 );
classJobLevelSync = exdData->getField< uint8_t >( row, 16 );

View file

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

View file

@ -77,12 +77,12 @@ void Core::Network::GameConnection::cfRegisterDuty( const Packets::FFXIVARR_PACK
if( !cfCondition )
return;
auto instance = pTeriMgr->createInstanceContent( cfCondition->content );
auto instance = pTeriMgr->createInstanceContent( cfCondition->instanceContent );
if( !instance )
return;
auto pInstance = instance->getAsInstanceContent();
pInstance->bindPlayer( player.getId() );
a pInstance->bindPlayer( player.getId() );
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;
Core::InstanceContent::InstanceContent( boost::shared_ptr< Core::Data::InstanceContent > pInstanceConfiguration,
uint16_t territoryType,
uint32_t guId,
const std::string& internalName,
const std::string& contentName,
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 ),
m_instanceConfiguration( pInstanceConfiguration ),
m_instanceContentId( instanceContentId ),

View file

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

View file

@ -218,17 +218,23 @@ Core::ZonePtr Core::TerritoryMgr::createTerritoryInstance( uint32_t territoryTyp
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 pContentFinderCondition = pExdData->get< Core::Data::ContentFinderCondition >( contentFinderConditionId );
if( !pContentFinderCondition )
return nullptr;
auto instanceContentId = pContentFinderCondition->instanceContent;
auto pInstanceContent = pExdData->get< Core::Data::InstanceContent >( instanceContentId );
if( !pInstanceContent )
return nullptr;
if( !isInstanceContentTerritory( pInstanceContent->territoryType ) )
if( !isInstanceContentTerritory( pContentFinderCondition->territoryType ) )
return nullptr;
auto pTeri = getTerritoryDetail( pInstanceContent->territoryType );
auto pTeri = getTerritoryDetail( pContentFinderCondition->territoryType );
if( !pTeri || pInstanceContent->name.empty() )
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 ) +
" (" + pInstanceContent->name + ")" );
auto pZone = make_InstanceContent( pInstanceContent, getNextInstanceId(),
auto pZone = make_InstanceContent( pInstanceContent, pContentFinderCondition->territoryType, getNextInstanceId(),
pTeri->name, pInstanceContent->name, instanceContentId );
pZone->init();

View file

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