1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-28 07:07:45 +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() int dumpSpawns()
{ {
Logger::init( "mob_parse" ); //Logger::init( "mob_parse" );
Logger::info( "Setting up EXD data" ); Logger::info( "Setting up EXD data" );
if( !g_exdData.init( datLocation ) ) 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; int spawngroups = 0;
for( auto entry : zoneToPacketList ) 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 ) for( auto entry : zoneToPacketList )
{ {
@ -530,6 +531,11 @@ int dumpTemplates()
std::string name = delChar( nameStruct->singular, ' ' ); std::string name = delChar( nameStruct->singular, ' ' );
name = delChar( name, '\'' ); 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`) " 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 ) + "\", " "VALUES ( \"" + name +"_" + std::to_string( instance.bNPCBase ) + "\", "
+ std::to_string( instance.bNPCBase ) + ", " + std::to_string( instance.bNPCBase ) + ", "
@ -593,7 +599,7 @@ int dumpTemplates()
int main() int main()
{ {
//dumpTemplates(); dumpTemplates();
dumpSpawns(); dumpSpawns();
return 0; return 0;

View file

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

View file

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

View file

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