private void *SetQuestMarkerInfoDetour(Map *map, uint index, ushort questId, Utf8String *name, ushort recommendedLevel) { var result = this.setQuestMarkerInfoHook.Original(map, index, questId, name, recommendedLevel); if (!QuestManager.Instance()->Quest[(int)index]->IsHidden) { map->QuestMarkers[(int)index]->ShouldRender = 1; } return(result); }
private Utf8String *Utf8StringFromSequenceDetour(Utf8String *thisPtr, byte *sourcePtr, nuint sourceLen) { if (sourcePtr != null) { this.utf8StringFromSequenceHook.Original(thisPtr, sourcePtr, sourceLen); } else { thisPtr->Ctor(); // this is in clientstructs but you could do it manually too } return(thisPtr); // this function shouldn't need to return but the original asm moves this into rax before returning so be safe? }
public string[] ToArray() { if (Buffer == IntPtr.Zero) { return(null); } var buffer = new string[Length]; for (int i = 0; i < Length; i++) { unsafe { Utf8String *current = ((Utf8String *)Buffer) + i; buffer[i] = (*current).ToString(); } } return(buffer); }
/// <summary> /// Read an SeString from a specified Utf8String structure. /// </summary> /// <param name="utf8String">The memory address to read from.</param> /// <returns>The read in string.</returns> public static unsafe SeString ReadSeString(Utf8String *utf8String) { if (utf8String == null) { return(string.Empty); } var ptr = utf8String->StringPtr; if (ptr == null) { return(string.Empty); } var len = Math.Max(utf8String->BufUsed, utf8String->StringLength); return(ReadSeString((IntPtr)ptr, (int)len)); }
public Common() { var gameAllocPtr = Scanner.ScanText("E8 ?? ?? ?? ?? 49 83 CF FF 4C 8B F0"); var getGameAllocatorPtr = Scanner.ScanText("E8 ?? ?? ?? ?? 8B 75 08"); InventoryManagerAddress = Scanner.GetStaticAddressFromSig("BA ?? ?? ?? ?? 48 8D 0D ?? ?? ?? ?? E8 ?? ?? ?? ?? 48 8B F8 48 85 C0"); var getInventoryContainerPtr = Scanner.ScanText("E8 ?? ?? ?? ?? 8B 55 BB"); var getContainerSlotPtr = Scanner.ScanText("E8 ?? ?? ?? ?? 8B 5B 0C"); PlayerStaticAddress = Scanner.GetStaticAddressFromSig("8B D7 48 8D 0D ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B7 E8"); LastCommandAddress = Scanner.GetStaticAddressFromSig("4C 8D 05 ?? ?? ?? ?? 41 B1 01 49 8B D4 E8 ?? ?? ?? ?? 83 EB 06"); LastCommand = (Utf8String *)(LastCommandAddress); _gameAlloc = Marshal.GetDelegateForFunctionPointer <GameAlloc>(gameAllocPtr); _getGameAllocator = Marshal.GetDelegateForFunctionPointer <GetGameAllocator>(getGameAllocatorPtr); _getInventoryContainer = Marshal.GetDelegateForFunctionPointer <GetInventoryContainer>(getInventoryContainerPtr); _getContainerSlot = Marshal.GetDelegateForFunctionPointer <GetContainerSlot>(getContainerSlotPtr); }
/// <summary> /// Read an SeString from a specified Utf8String structure. /// </summary> /// <param name="utf8String">The memory address to read from.</param> /// <param name="value">The read in string.</param> public static unsafe void ReadSeString(Utf8String *utf8String, out SeString value) => value = ReadSeString(utf8String);
public partial void SetMacroLines(Macro *macro, int lineStartIndex, Utf8String *lines);
public partial void AppendMacroLines(Macro *macro, Utf8String *lines);
public partial void ReplaceMacroLines(Macro *macro, Utf8String *lines);
public partial void AddGatheringTempMarker(uint styleFlags, int mapX, int mapY, uint iconId, int radius, Utf8String *tooltip);