Core/PacketIO: Updated SMSG_UPDATE_OBJECT for 11.0.5

Port From (https://github.com/TrinityCore/TrinityCore/commit/68db469ee1f992bcdc81de64d6af1007d303be05)
This commit is contained in:
Hondacrx
2024-11-11 21:11:21 -05:00
parent 5909e7ba98
commit 7d351406f5
23 changed files with 678 additions and 208 deletions
+4 -4
View File
@@ -3802,8 +3802,8 @@ namespace Game.Entities
stmt.AddValue(index++, GetLootSpecId());
ss.Clear();
for (int i = 0; i < m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Size(); ++i)
ss.Append($"{(uint)(m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex][i] & 0xFFFFFFFF)} {(uint)((m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex][i] >> 32) & 0xFFFFFFFF)} ");
for (int i = 0; i < m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Values.Size(); ++i)
ss.Append($"{(uint)(m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Values[i] & 0xFFFFFFFF)} {(uint)((m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Values[i] >> 32) & 0xFFFFFFFF)} ");
stmt.AddValue(index++, ss.ToString());
@@ -3958,8 +3958,8 @@ namespace Game.Entities
stmt.AddValue(index++, GetLootSpecId());
ss.Clear();
for (int i = 0; i < m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Size(); ++i)
ss.Append($"{(uint)(m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex][i] & 0xFFFFFFFF)} {(uint)((m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex][i] >> 32) & 0xFFFFFFFF)} ");
for (int i = 0; i < m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Values.Size(); ++i)
ss.Append($"{(uint)(m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Values[i] & 0xFFFFFFFF)} {(uint)((m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Values[i] >> 32) & 0xFFFFFFFF)} ");
stmt.AddValue(index++, ss.ToString());
+9 -6
View File
@@ -6485,8 +6485,8 @@ namespace Game.Entities
int offset = (areaEntry.AreaBit / PlayerConst.ExploredZonesBits);
ulong val = 1ul << (areaEntry.AreaBit % PlayerConst.ExploredZonesBits);
if (offset >= m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Size()
|| (m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex][offset] & val) == 0)
if (offset >= m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Values.Size()
|| (m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Values[offset] & val) == 0)
{
AddExploredZones(offset, val);
@@ -6540,13 +6540,15 @@ namespace Game.Entities
public void AddExploredZones(int pos, ulong mask)
{
BitVectors bitVectors = m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.BitVectors);
SetUpdateFieldFlagValue(bitVectors.ModifyValue(bitVectors.Values, (int)PlayerDataFlag.ExploredZonesIndex, pos), mask);
BitVector bitVector = bitVectors.ModifyValue(bitVectors.Values, (int)PlayerDataFlag.ExploredZonesIndex);
SetUpdateFieldFlagValue(bitVector.ModifyValue(bitVector.Values, pos), mask);
}
public void RemoveExploredZones(int pos, ulong mask)
{
BitVectors bitVectors = m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.BitVectors);
RemoveUpdateFieldFlagValue(bitVectors.ModifyValue(bitVectors.Values, (int)PlayerDataFlag.ExploredZonesIndex, pos), mask);
BitVector bitVector = bitVectors.ModifyValue(bitVectors.Values, (int)PlayerDataFlag.ExploredZonesIndex);
RemoveUpdateFieldFlagValue(bitVector.ModifyValue(bitVector.Values, pos), mask);
}
public bool HasExploredZone(uint areaId)
@@ -6559,11 +6561,11 @@ namespace Game.Entities
return false;
int playerIndexOffset = area.AreaBit / PlayerConst.ExploredZonesBits;
if (playerIndexOffset >= m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Size())
if (playerIndexOffset >= m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Values.Size())
return false;
ulong mask = 1ul << (area.AreaBit % PlayerConst.ExploredZonesBits);
return (m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex][playerIndexOffset] & mask) != 0;
return (m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Values[playerIndexOffset] & mask) != 0;
}
void SendExplorationExperience(uint Area, uint Experience)
@@ -7976,6 +7978,7 @@ namespace Game.Entities
valuesMask.Set((int)TypeId.ActivePlayer);
WorldPacket buffer = new();
BuildEntityFragmentsForValuesUpdateForPlayerWithMask(buffer, flags);
buffer.WriteUInt32(valuesMask.GetBlock(0));
if (valuesMask[(int)TypeId.Object])