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:
parent
a58056cde7
commit
f7d2bb813a
7 changed files with 18 additions and 10 deletions
|
@ -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 );
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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() ) );
|
||||||
|
|
||||||
|
|
|
@ -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 ),
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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 );
|
||||||
|
|
Loading…
Add table
Reference in a new issue