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:
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 );
|
||||
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 );
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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() ) );
|
||||
|
||||
|
|
|
@ -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 ),
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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 );
|
||||
|
|
Loading…
Add table
Reference in a new issue