1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-03 09:17:47 +00:00

Increase cell size and spawn distance, fix player despawn issue

This commit is contained in:
NotAdam 2019-01-28 20:29:30 +11:00
parent 7741acefcd
commit bc1ed29948
4 changed files with 12 additions and 6 deletions

View file

@ -37,7 +37,7 @@ namespace Sapphire::Util
{ {
auto it = m_actorIdToAllocatedMap.find( actorId ); auto it = m_actorIdToAllocatedMap.find( actorId );
if( it == m_actorIdToAllocatedMap.end() ) if( it == m_actorIdToAllocatedMap.end() )
return 0; return getAllocFailId();
auto index = it->second; auto index = it->second;
m_availableIds.push( index ); m_availableIds.push( index );

View file

@ -1127,11 +1127,14 @@ void Sapphire::Entity::Player::freePlayerSpawnId( uint32_t actorId )
{ {
auto spawnId = m_actorSpawnIndexAllocator.freeUsedSpawnIndex( actorId ); auto spawnId = m_actorSpawnIndexAllocator.freeUsedSpawnIndex( actorId );
// actor was never spawned for this player
if( spawnId == m_actorSpawnIndexAllocator.getAllocFailId() )
return;
auto freeActorSpawnPacket = makeZonePacket< FFXIVIpcActorFreeSpawn >( getId() ); auto freeActorSpawnPacket = makeZonePacket< FFXIVIpcActorFreeSpawn >( getId() );
freeActorSpawnPacket->data().actorId = actorId; freeActorSpawnPacket->data().actorId = actorId;
freeActorSpawnPacket->data().spawnId = spawnId; freeActorSpawnPacket->data().spawnId = spawnId;
queuePacket( freeActorSpawnPacket ); queuePacket( freeActorSpawnPacket );
} }
uint8_t* Sapphire::Entity::Player::getAetheryteArray() uint8_t* Sapphire::Entity::Player::getAetheryteArray()
@ -1844,6 +1847,10 @@ void Sapphire::Entity::Player::freeObjSpawnIndexForActorId( uint32_t actorId )
{ {
auto spawnId = m_objSpawnIndexAllocator.freeUsedSpawnIndex( actorId ); auto spawnId = m_objSpawnIndexAllocator.freeUsedSpawnIndex( actorId );
// obj was never spawned for this player
if( spawnId == m_objSpawnIndexAllocator.getAllocFailId() )
return;
auto freeObjectSpawnPacket = makeZonePacket< FFXIVIpcObjectDespawn >( getId() ); auto freeObjectSpawnPacket = makeZonePacket< FFXIVIpcObjectDespawn >( getId() );
freeObjectSpawnPacket->data().spawnIndex = spawnId; freeObjectSpawnPacket->data().spawnIndex = spawnId;
queuePacket( freeObjectSpawnPacket ); queuePacket( freeObjectSpawnPacket );

View file

@ -3,7 +3,7 @@
#include <cassert> #include <cassert>
#define TilesCount 32 #define TilesCount 32
#define TileSize 250.0f #define TileSize 500.0f
#define _minY (-TilesCount*TileSize/2) #define _minY (-TilesCount*TileSize/2)
#define _minX (-TilesCount*TileSize/2) #define _minX (-TilesCount*TileSize/2)

View file

@ -645,7 +645,7 @@ void Sapphire::Zone::updateInRangeSet( Entity::ActorPtr pActor, Cell* pCell )
auto iter = pCell->m_actors.begin(); auto iter = pCell->m_actors.begin();
float fRange = 70.0f; float fRange = 150.0f;
int32_t count = 0; int32_t count = 0;
while( iter != pCell->m_actors.end() ) while( iter != pCell->m_actors.end() )
{ {
@ -655,8 +655,7 @@ void Sapphire::Zone::updateInRangeSet( Entity::ActorPtr pActor, Cell* pCell )
if( !pCurAct || pCurAct == pActor ) if( !pCurAct || pCurAct == pActor )
continue; continue;
float distance = Util::distance( pCurAct->getPos().x, pCurAct->getPos().y, pCurAct->getPos().z, float distance = Util::distance( pCurAct->getPos(), pActor->getPos() );
pActor->getPos().x, pActor->getPos().y, pActor->getPos().z );
bool isInRange = ( fRange == 0.0f || distance <= fRange ); bool isInRange = ( fRange == 0.0f || distance <= fRange );
bool isInRangeSet = pActor->isInRangeSet( pCurAct ); bool isInRangeSet = pActor->isInRangeSet( pCurAct );