watafak
This commit is contained in:
@@ -230,7 +230,12 @@ public sealed class ActorObjectService : IHostedService, IDisposable
|
||||
if (descriptor.ObjectKind == DalamudObjectKind.Player &&
|
||||
!string.IsNullOrEmpty(descriptor.HashedContentId))
|
||||
{
|
||||
var liveHash = DalamudUtilService.GetHashedCIDFromPlayerPointer(descriptor.Address);
|
||||
if (!TryGetLivePlayerHash(descriptor, out var liveHash))
|
||||
{
|
||||
UntrackGameObject(descriptor.Address);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!string.Equals(liveHash, descriptor.HashedContentId, StringComparison.Ordinal))
|
||||
{
|
||||
UntrackGameObject(descriptor.Address);
|
||||
@@ -241,6 +246,16 @@ public sealed class ActorObjectService : IHostedService, IDisposable
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool TryGetLivePlayerHash(ActorDescriptor descriptor, out string liveHash)
|
||||
{
|
||||
liveHash = string.Empty;
|
||||
|
||||
if (_objectTable.CreateObjectReference(descriptor.Address) is not IPlayerCharacter playerCharacter)
|
||||
return false;
|
||||
|
||||
return DalamudUtilService.TryGetHashedCID(playerCharacter, out liveHash);
|
||||
}
|
||||
|
||||
public void RefreshTrackedActors(bool force = false)
|
||||
{
|
||||
var now = DateTime.UtcNow;
|
||||
@@ -425,8 +440,10 @@ public sealed class ActorObjectService : IHostedService, IDisposable
|
||||
bool isLocal = _objectTable.LocalPlayer?.Address == address;
|
||||
string hashedCid = string.Empty;
|
||||
|
||||
IPlayerCharacter? resolvedPlayer = null;
|
||||
if (_objectTable.CreateObjectReference(address) is IPlayerCharacter playerCharacter)
|
||||
{
|
||||
resolvedPlayer = playerCharacter;
|
||||
name = playerCharacter.Name.TextValue ?? string.Empty;
|
||||
objectIndex = playerCharacter.ObjectIndex;
|
||||
isInGpose = objectIndex >= 200;
|
||||
@@ -439,7 +456,10 @@ public sealed class ActorObjectService : IHostedService, IDisposable
|
||||
|
||||
if (objectKind == DalamudObjectKind.Player)
|
||||
{
|
||||
hashedCid = DalamudUtilService.GetHashedCIDFromPlayerPointer(address);
|
||||
if (resolvedPlayer == null || !DalamudUtilService.TryGetHashedCID(resolvedPlayer, out hashedCid))
|
||||
{
|
||||
hashedCid = DalamudUtilService.GetHashedCIDFromPlayerPointer(address);
|
||||
}
|
||||
}
|
||||
|
||||
var (ownedKind, ownerEntityId) = DetermineOwnedKind(gameObject, objectKind, isLocal);
|
||||
|
||||
Reference in New Issue
Block a user