Fixed world login
This commit is contained in:
@@ -384,7 +384,7 @@ namespace Game.Entities
|
||||
|
||||
public abstract class HasChangesMask : IHasChangesMask
|
||||
{
|
||||
public static int ChangeMaskLength;
|
||||
public int ChangeMaskLength;
|
||||
|
||||
public UpdateMask _changesMask;
|
||||
public int _blockBit;
|
||||
|
||||
@@ -164,7 +164,7 @@ namespace Game.Entities
|
||||
dynFlags |= (uint)GameObjectDynamicLowFlags.NoInterract;
|
||||
|
||||
var data = Global.ObjectMgr.GetSpawnMetadata(SpawnObjectType.GameObject, gameObject.GetSpawnId());
|
||||
if (data.spawnTrackingData != null && !data.spawnTrackingQuestObjectives.Empty())
|
||||
if (data != null && data.spawnTrackingData != null && !data.spawnTrackingQuestObjectives.Empty())
|
||||
if (receiver.GetSpawnTrackingStateByObjectives(data.spawnTrackingData.SpawnTrackingId, data.spawnTrackingQuestObjectives) != SpawnTrackingState.Active)
|
||||
dynFlags &= ~(uint)GameObjectDynamicLowFlags.Activate;
|
||||
}
|
||||
@@ -3352,14 +3352,14 @@ namespace Game.Entities
|
||||
|
||||
public void FilterDisallowedFieldsMaskForFlag(UpdateMask changesMask, UpdateFieldFlag fieldVisibilityFlags)
|
||||
{
|
||||
UpdateMask allowedMaskForTarget = new(324, [0xFFFFFFDDu, 0x0007FFFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFFF8u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x0000000Fu]);
|
||||
UpdateMask allowedMaskForTarget = new(ChangeMaskLength, [0xFFFFFFDDu, 0x0007FFFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFFF8u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x0000000Fu]);
|
||||
PlayerDataAppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
|
||||
changesMask.AND(allowedMaskForTarget);
|
||||
}
|
||||
|
||||
public void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Player owner, Player receiver)
|
||||
{
|
||||
UpdateMask allowedMaskForTarget = new(324, [0xFFFFFFDDu, 0x0007FFFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFFF8u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x0000000Fu]);
|
||||
UpdateMask allowedMaskForTarget = new(ChangeMaskLength, [0xFFFFFFDDu, 0x0007FFFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFFF8u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x0000000Fu]);
|
||||
PlayerDataAppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
|
||||
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
|
||||
}
|
||||
|
||||
@@ -24,12 +24,11 @@ namespace Game.Entities
|
||||
if (input != null)
|
||||
{
|
||||
int block = 0;
|
||||
for (; block < input.Length; ++block)
|
||||
for (; block < _blockCount; ++block)
|
||||
if ((_blocks[block] = input[block]) != 0)
|
||||
_blocksMask[GetBlockIndex(block)] |= (uint)GetBlockFlag(block);
|
||||
|
||||
for (; block < _blockCount; ++block)
|
||||
_blocks[block] = 0;
|
||||
else
|
||||
_blocksMask[GetBlockIndex(block)] &= ~(uint)GetBlockFlag(block);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,7 +99,7 @@ namespace Game.Entities
|
||||
|
||||
for (int i = 0; i < _blockCount; ++i)
|
||||
{
|
||||
if (!Convert.ToBoolean(_blocks[i] &= right._blocks[i]))
|
||||
if ((_blocks[i] &= right._blocks[i]) == 0)
|
||||
_blocksMask[GetBlockIndex(i)] &= ~(uint)GetBlockFlag(i);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user