diff --git a/ChatTwo/GameFunctions/GameFunctions.cs b/ChatTwo/GameFunctions/GameFunctions.cs index 3e2db34..075b1fe 100755 --- a/ChatTwo/GameFunctions/GameFunctions.cs +++ b/ChatTwo/GameFunctions/GameFunctions.cs @@ -227,7 +227,7 @@ internal unsafe class GameFunctions : IDisposable { vf27(atkModule, addonId, 1); } else { // 6.05: 8443DD - if (*(uint*) ((IntPtr) lfg + 0x2AB8) > 0) { + if (*(uint*) ((IntPtr) lfg + 0x2C20) > 0) { lfg->Hide(); } else { lfg->Show(); diff --git a/ChatTwo/PayloadHandler.cs b/ChatTwo/PayloadHandler.cs index 56c0ff8..b9ad6ab 100755 --- a/ChatTwo/PayloadHandler.cs +++ b/ChatTwo/PayloadHandler.cs @@ -14,6 +14,7 @@ using ImGuiNET; using ImGuiScene; using Lumina.Excel.GeneratedSheets; using Action = System.Action; +using PartyFinderPayload = Dalamud.Game.Text.SeStringHandling.Payloads.PartyFinderPayload; namespace ChatTwo; @@ -295,20 +296,18 @@ internal sealed class PayloadHandler { break; } case PartyFinderPayload pf: { - this.Ui.Plugin.Functions.OpenPartyFinder(pf.Id); + if (pf.LinkType == PartyFinderPayload.PartyFinderLinkType.PartyFinderNotification) { + GameFunctions.GameFunctions.OpenPartyFinder(); + } else { + this.Ui.Plugin.Functions.OpenPartyFinder(pf.ListingId); + } + break; } case AchievementPayload achievement: { this.Ui.Plugin.Functions.OpenAchievement(achievement.Id); break; } - case RawPayload raw: { - if (Equals(raw, ChunkUtil.PeriodicRecruitmentLink)) { - GameFunctions.GameFunctions.OpenPartyFinder(); - } - - break; - } } } diff --git a/ChatTwo/Util/ChunkUtil.cs b/ChatTwo/Util/ChunkUtil.cs index 2ae39d7..1358081 100755 --- a/ChatTwo/Util/ChunkUtil.cs +++ b/ChatTwo/Util/ChunkUtil.cs @@ -63,16 +63,14 @@ internal static class ChunkUtil { case PayloadType.Player: link = payload; break; + case PayloadType.PartyFinder: + link = payload; + break; case PayloadType.Unknown: var rawPayload = (RawPayload) payload; if (rawPayload.Data.Length > 1 && rawPayload.Data[1] == 0x13) { foreground.Pop(); glow.Pop(); - } else if (rawPayload.Data.Length > 7 && rawPayload.Data[1] == 0x27 && rawPayload.Data[3] == 0x0A) { - // pf payload - var reader = new BinaryReader(new MemoryStream(rawPayload.Data[4..])); - var id = GetInteger(reader); - link = new PartyFinderPayload(id); } else if (rawPayload.Data.Length > 5 && rawPayload.Data[1] == 0x27 && rawPayload.Data[3] == 0x06) { // achievement payload var reader = new BinaryReader(new MemoryStream(rawPayload.Data[4..])); @@ -80,8 +78,6 @@ internal static class ChunkUtil { link = new AchievementPayload(id); } else if (Equals(rawPayload, RawPayload.LinkTerminator)) { link = null; - } else if (Equals(rawPayload, PeriodicRecruitmentLink)) { - link = rawPayload; } break;