1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-27 14:57:44 +00:00

Cleaned up some zoning code. Secondly, alot more bnpcs will spawn now

This commit is contained in:
Mordred 2019-01-14 22:29:52 +01:00
parent d5d6584e2a
commit 328b8bf14d
5 changed files with 1002 additions and 376 deletions

File diff suppressed because one or more lines are too long

View file

@ -195,7 +195,7 @@ std::string delChar( std::string &str, char del )
int dumpSpawns()
{
Logger::init( "mob_parse" );
//Logger::init( "mob_parse" );
Logger::info( "Setting up EXD data" );
if( !g_exdData.init( datLocation ) )
@ -250,7 +250,7 @@ int dumpSpawns()
}
std::ofstream out("output_1.txt");
std::ofstream out("spawns.txt");
int spawngroups = 0;
for( auto entry : zoneToPacketList )
@ -462,7 +462,8 @@ int dumpTemplates()
}
std::ofstream out("output.txt");
std::map< std::string, bool > mobDumped;
std::ofstream out("templates.txt");
for( auto entry : zoneToPacketList )
{
@ -530,6 +531,11 @@ int dumpTemplates()
std::string name = delChar( nameStruct->singular, ' ' );
name = delChar( name, '\'' );
if( mobDumped.find( name + "_" + std::to_string( instance.bNPCBase ) ) != mobDumped.end() )
continue;
mobDumped[ name +"_" + std::to_string( instance.bNPCBase ) ] = true;
std::string output = "INSERT IGNORE INTO `bnpctemplate` ( `Name`, `bNPCBaseId`, `bNPCNameId`, `mainWeaponModel`, `secWeaponModel`, `aggressionMode`, `enemyType`, `pose`, `modelChara`, `displayFlags`, `Look`, `Models`) "
"VALUES ( \"" + name +"_" + std::to_string( instance.bNPCBase ) + "\", "
+ std::to_string( instance.bNPCBase ) + ", "
@ -593,7 +599,7 @@ int dumpTemplates()
int main()
{
//dumpTemplates();
dumpTemplates();
dumpSpawns();
return 0;

View file

@ -420,13 +420,13 @@ void Sapphire::Entity::Player::setZone( uint32_t zoneId )
return;
}
sendZonePackets();
}
bool Sapphire::Entity::Player::setInstance( uint32_t instanceContentId )
{
auto pTeriMgr = m_pFw->get< TerritoryMgr >();
m_onEnterEventDone = false;
auto pTeriMgr = m_pFw->get< TerritoryMgr >();
auto instance = pTeriMgr->getInstanceZonePtr( instanceContentId );
if( !instance )
return false;
@ -441,7 +441,6 @@ bool Sapphire::Entity::Player::setInstance( ZonePtr instance )
return false;
auto pTeriMgr = m_pFw->get< TerritoryMgr >();
auto currentZone = getCurrentZone();
// zoning within the same zone won't cause the prev data to be overwritten
@ -453,35 +452,30 @@ bool Sapphire::Entity::Player::setInstance( ZonePtr instance )
m_prevTerritoryId = getTerritoryId();
}
if( !pTeriMgr->movePlayer( instance, getAsPlayer() ) )
return false;
sendZonePackets();
return true;
return pTeriMgr->movePlayer( instance, getAsPlayer() );
}
bool Sapphire::Entity::Player::setInstance( ZonePtr instance, Common::FFXIVARR_POSITION3 pos )
{
m_onEnterEventDone = false;
if( !instance )
return false;
m_onEnterEventDone = false;
auto pTeriMgr = m_pFw->get< TerritoryMgr >();
auto currentZone = getCurrentZone();
m_prevPos = m_pos;
m_prevRot = m_rot;
m_prevTerritoryTypeId = currentZone->getTerritoryTypeId();
m_prevTerritoryId = getTerritoryId();
// zoning within the same zone won't cause the prev data to be overwritten
if( instance->getTerritoryTypeId() != m_territoryTypeId )
{
m_prevPos = m_pos;
m_prevRot = m_rot;
m_prevTerritoryTypeId = currentZone->getTerritoryTypeId();
m_prevTerritoryId = getTerritoryId();
}
if( pTeriMgr->movePlayer( instance, getAsPlayer() ) )
{
m_pos = pos;
sendZonePackets();
return true;
}
@ -512,8 +506,6 @@ bool Sapphire::Entity::Player::exitInstance()
m_territoryTypeId = m_prevTerritoryTypeId;
m_territoryId = m_prevTerritoryId;
sendZonePackets();
//m_queuedZoneing = std::make_shared< QueuedZoning >( m_territoryTypeId, m_pos, Util::getTimeMs(), m_rot );
return true;

View file

@ -67,6 +67,5 @@ void Sapphire::World::Manager::PlayerMgr::movePlayerToLandDestination( Sapphire:
player.setPos( terriPos->getTargetPosition() );
player.setRot( terriPos->getTargetRotation() );
if( terriMgr->movePlayer( destinationZone, player.getAsPlayer() ) )
player.sendZonePackets();
terriMgr->movePlayer( destinationZone, player.getAsPlayer() );
}

View file

@ -535,7 +535,7 @@ bool Sapphire::World::Manager::TerritoryMgr::movePlayer( ZonePtr pZone, Sapphire
// mark character as zoning in progress
pPlayer->setLoadingComplete( false );
if( pPlayer->getLastPing() != 0 )
if( pPlayer->getLastPing() != 0 && pPlayer->getCurrentZone() )
pPlayer->getCurrentZone()->removeActor( pPlayer );
pPlayer->setCurrentZone( pZone );
@ -544,6 +544,8 @@ bool Sapphire::World::Manager::TerritoryMgr::movePlayer( ZonePtr pZone, Sapphire
// map player to instanceId so it can be tracked.
m_playerIdToInstanceMap[ pPlayer->getId() ] = pZone->getGuId();
pPlayer->sendZonePackets();
return true;
}