#
Job Information
The Job Information section allows you to fine-tune the details that describe your job:
#
Title
Textbox
Edit the job title to make it appealing to players.
Json
nm
Global
Global_4718592.f_117598
#
Description
Textbox
Customize the job's description, providing players with a clear understanding of what your job offers.
Json
nm
Global
Global_4718592.f_117620
#
Job Image
This option primarily displays the job image. However, it also includes the ability to export the image for editing and import it again to upload custom or edited images.
How it Works
The Change Image
function converts the selected Image into jpeg
format. Then it makes an AOB scan for pattern : 48 8D 0D ? ? ? ? 44 8A C3 BA ? ? ? ? E8 ? ? ? ? 84 C0 75 07 BB ? ? ? ? EB 06
with Function GTA.getIMGPointer
and calculates the final address with + 0x18
.
It then writes subtracts 0x4
from the calculated address and writes the size of the image into that address.
Then all bytes from the image gets written into memory.
// Function GTA.getIMGPointer
public static IntPtr getIMGPointer()
{
ulong addy = MainWindow.m.AOBScanModule2(GTA.Offsets.Editor.AOB_img_ptr, MainWindow.m.getMainModule());
return (IntPtr)(MainWindow.m.rip(IntPtr.Add((IntPtr)addy, 3)).ToInt64() - (long)MainWindow.m.getBaseAddress());
}
// Change Image Code Snippet
List<byte> temp = ImageSourceToBytes(new JpegBitmapEncoder(), new BitmapImage(new Uri(ofd.FileName))).ToList();
long offset = GTA.Offsets.Editor.Image.img;
long addy = m.memory((m.memory(GTA.getIMGPointer().ToInt64()).GetAddress() + 0x18)).Get<long>() + offset;
byte[] temparray = temp.ToArray();
m.memory((addy - 0x4).ToString("X")).SetInt(temparray.Count());
m.memory(addy.ToString("X")).SetBytes(temparray);