feat: add periodic recruitment payload
This commit is contained in:
@@ -428,4 +428,23 @@ internal unsafe class GameFunctions : IDisposable {
|
|||||||
var itemFinder = Framework.Instance()->GetUiModule()->GetItemFinderModule();
|
var itemFinder = Framework.Instance()->GetUiModule()->GetItemFinderModule();
|
||||||
this._searchForItem(itemFinder, itemId, 1);
|
this._searchForItem(itemFinder, itemId, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static void OpenPartyFinder() {
|
||||||
|
// this whole method: 6.05: 84433A
|
||||||
|
var lfg = Framework.Instance()->GetUiModule()->GetAgentModule()->GetAgentByInternalId(AgentId.LookingForGroup);
|
||||||
|
if (lfg->IsAgentActive()) {
|
||||||
|
var addonId = lfg->GetAddonID();
|
||||||
|
var atkModule = Framework.Instance()->GetUiModule()->GetRaptureAtkModule();
|
||||||
|
var atkModuleVtbl = (void**) atkModule->AtkModule.vtbl;
|
||||||
|
var vf27 = (delegate* unmanaged<RaptureAtkModule*, ulong, ulong, byte>) atkModuleVtbl[27];
|
||||||
|
vf27(atkModule, addonId, 1);
|
||||||
|
} else {
|
||||||
|
// 6.05: 8443DD
|
||||||
|
if (*(uint*) ((IntPtr) lfg + 0x2AB8) > 0) {
|
||||||
|
lfg->Hide();
|
||||||
|
} else {
|
||||||
|
lfg->Show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -175,6 +175,13 @@ internal sealed class PayloadHandler {
|
|||||||
this.ClickLinkPayload(chunk, payload, link);
|
this.ClickLinkPayload(chunk, payload, link);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case RawPayload raw: {
|
||||||
|
if (Equals(raw, ChunkUtil.PeriodicRecruitmentLink)) {
|
||||||
|
GameFunctions.OpenPartyFinder();
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -70,6 +70,8 @@ internal static class ChunkUtil {
|
|||||||
glow.Pop();
|
glow.Pop();
|
||||||
} else if (Equals(rawPayload, RawPayload.LinkTerminator)) {
|
} else if (Equals(rawPayload, RawPayload.LinkTerminator)) {
|
||||||
link = null;
|
link = null;
|
||||||
|
} else if (Equals(rawPayload, PeriodicRecruitmentLink)) {
|
||||||
|
link = rawPayload;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -84,4 +86,8 @@ internal static class ChunkUtil {
|
|||||||
|
|
||||||
return chunks;
|
return chunks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static readonly RawPayload PeriodicRecruitmentLink = new(new byte[] {
|
||||||
|
0x02, 0x27, 0x07, 0x08, 0x01, 0x01, 0x01, 0xFF, 0x01, 0x03,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user