From c0870e85dfdab9504a6fd9a1f1164a9a3a54010a Mon Sep 17 00:00:00 2001 From: rootdarkarchon Date: Mon, 21 Apr 2025 10:25:01 +0200 Subject: [PATCH 1/2] rebuild aid on login --- MareSynchronos/Services/DalamudUtilService.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/MareSynchronos/Services/DalamudUtilService.cs b/MareSynchronos/Services/DalamudUtilService.cs index daa94aa..5685403 100644 --- a/MareSynchronos/Services/DalamudUtilService.cs +++ b/MareSynchronos/Services/DalamudUtilService.cs @@ -47,7 +47,7 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber private readonly List _notUpdatedCharas = []; private bool _sentBetweenAreas = false; private readonly Dictionary _aidCache = []; - private readonly Lazy _aid; + private Lazy _aid; private int _aidCounter = 0; public DalamudUtilService(ILogger logger, IClientState clientState, IObjectTable objectTable, IFramework framework, @@ -64,6 +64,7 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber _gameConfig = gameConfig; _blockedCharacterHandler = blockedCharacterHandler; Mediator = mediator; + _sigScanner = sigScanner; _performanceCollector = performanceCollector; WorldData = new(() => { @@ -126,12 +127,15 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber }).ConfigureAwait(false); }); IsWine = Util.IsWine(); + _aid = RebuildAid(); + } - _aid = new(() => + private Lazy RebuildAid() { + return new(() => { unsafe { - var address = sigScanner.GetStaticAddressFromSig("48 8B 0D ?? ?? ?? ?? 4C 8B CA"); + var address = _sigScanner.GetStaticAddressFromSig("48 8B 0D ?? ?? ?? ?? 4C 8B CA"); return (uint)(address != nint.Zero ? (*(ulong**)address)[1] : 0u); } }); @@ -172,6 +176,9 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber public MareMediator Mediator { get; } + private readonly ISigScanner _sigScanner; + + public IGameObject? CreateGameObject(IntPtr reference) { EnsureIsOnFramework(); @@ -758,6 +765,7 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber _logger.LogDebug("Logged in"); IsLoggedIn = true; _lastZone = _clientState.TerritoryType; + _aid = RebuildAid(); Mediator.Publish(new DalamudLoginMessage()); } else if (localPlayer == null && IsLoggedIn) From 95969eeb7cd2eebcfdb7cac01371408d93d83188 Mon Sep 17 00:00:00 2001 From: rootdarkarchon Date: Mon, 21 Apr 2025 10:28:04 +0200 Subject: [PATCH 2/2] format some shit --- MareSynchronos/Services/DalamudUtilService.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/MareSynchronos/Services/DalamudUtilService.cs b/MareSynchronos/Services/DalamudUtilService.cs index 5685403..eb09067 100644 --- a/MareSynchronos/Services/DalamudUtilService.cs +++ b/MareSynchronos/Services/DalamudUtilService.cs @@ -37,6 +37,7 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber private readonly IGameGui _gameGui; private readonly ILogger _logger; private readonly IObjectTable _objectTable; + private readonly ISigScanner _sigScanner; private readonly PerformanceCollectorService _performanceCollector; private uint? _classJobId = 0; private DateTime _delayedFrameworkUpdateCheck = DateTime.UtcNow; @@ -173,12 +174,8 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber public Lazy> TerritoryData { get; private set; } public Lazy> MapData { get; private set; } public bool IsLodEnabled { get; private set; } - public MareMediator Mediator { get; } - private readonly ISigScanner _sigScanner; - - public IGameObject? CreateGameObject(IntPtr reference) { EnsureIsOnFramework();