Selective saving for map and location (#732)

* Don't save the map and char location info if
we are in an instanced 
* LUP worlds will be handled in a future PR
* simplify check
This commit is contained in:
Aaron Kimbrell 2022-08-16 20:53:28 -05:00 committed by GitHub
parent 3b7f1dad54
commit 976bd3c41b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 9 deletions

View File

@ -301,9 +301,9 @@ void Character::SaveXMLToDatabase() {
character->SetAttribute("gm", m_GMLevel); character->SetAttribute("gm", m_GMLevel);
character->SetAttribute("cc", m_Coins); character->SetAttribute("cc", m_Coins);
auto zoneInfo = dZoneManager::Instance()->GetZone()->GetZoneID();
// lzid garbage, binary concat of zoneID, zoneInstance and zoneClone // lzid garbage, binary concat of zoneID, zoneInstance and zoneClone
if (Game::server->GetZoneID() != 0) { if (zoneInfo.GetMapID() != 0 && zoneInfo.GetCloneID() == 0) {
auto zoneInfo = dZoneManager::Instance()->GetZone()->GetZoneID();
uint64_t lzidConcat = zoneInfo.GetCloneID(); uint64_t lzidConcat = zoneInfo.GetCloneID();
lzidConcat = (lzidConcat << 16) | uint16_t(zoneInfo.GetInstanceID()); lzidConcat = (lzidConcat << 16) | uint16_t(zoneInfo.GetInstanceID());
lzidConcat = (lzidConcat << 16) | uint16_t(zoneInfo.GetMapID()); lzidConcat = (lzidConcat << 16) | uint16_t(zoneInfo.GetMapID());

View File

@ -11,6 +11,7 @@
#include "CDClientManager.h" #include "CDClientManager.h"
#include "EntityManager.h" #include "EntityManager.h"
#include "Character.h" #include "Character.h"
#include "dZoneManager.h"
ControllablePhysicsComponent::ControllablePhysicsComponent(Entity* entity) : Component(entity) { ControllablePhysicsComponent::ControllablePhysicsComponent(Entity* entity) : Component(entity) {
m_Position = {}; m_Position = {};
@ -163,13 +164,17 @@ void ControllablePhysicsComponent::UpdateXml(tinyxml2::XMLDocument* doc) {
return; return;
} }
character->SetAttribute("lzx", m_Position.x); auto zoneInfo = dZoneManager::Instance()->GetZone()->GetZoneID();
character->SetAttribute("lzy", m_Position.y);
character->SetAttribute("lzz", m_Position.z); if (zoneInfo.GetMapID() != 0 && zoneInfo.GetCloneID() == 0) {
character->SetAttribute("lzrx", m_Rotation.x); character->SetAttribute("lzx", m_Position.x);
character->SetAttribute("lzry", m_Rotation.y); character->SetAttribute("lzy", m_Position.y);
character->SetAttribute("lzrz", m_Rotation.z); character->SetAttribute("lzz", m_Position.z);
character->SetAttribute("lzrw", m_Rotation.w); character->SetAttribute("lzrx", m_Rotation.x);
character->SetAttribute("lzry", m_Rotation.y);
character->SetAttribute("lzrz", m_Rotation.z);
character->SetAttribute("lzrw", m_Rotation.w);
}
} }
void ControllablePhysicsComponent::SetPosition(const NiPoint3& pos) { void ControllablePhysicsComponent::SetPosition(const NiPoint3& pos) {