Skip to content

Commit

Permalink
Changed it so only the offsets.json file has to be updated whenever a…
Browse files Browse the repository at this point in the history
… new update for the game comes out.
  • Loading branch information
Zero1UP committed Dec 1, 2022
1 parent 8267733 commit d4dd2b8
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 18 deletions.
12 changes: 9 additions & 3 deletions FinalFantasyXIRichPresence/FinalFantasyXIRichPresence.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,20 @@
<UseWindowsForms>true</UseWindowsForms>
<Platforms>AnyCPU;x86</Platforms>
<ApplicationManifest>app.manifest</ApplicationManifest>
<Version>1.0.6</Version>
<AssemblyVersion>1.0.5.0</AssemblyVersion>
<FileVersion>1.0.5.0</FileVersion>
<Version>1.1.0</Version>
<AssemblyVersion>1.1.0.0</AssemblyVersion>
<FileVersion>1.1.0.0</FileVersion>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="DiscordRichPresence" Version="1.0.175" />
<PackageReference Include="MemorySharp" Version="1.2.0" />
</ItemGroup>

<ItemGroup>
<None Update="offsets.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>

</Project>
20 changes: 20 additions & 0 deletions FinalFantasyXIRichPresence/Offsets.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FinalFantasyXIRichPresence
{
public class Offsets
{
public string PlayerNameOffset;
public string ServerNameOffset;
public string PartyCountOffset;
public string MainJobLevelOffset;
public string SubJobLevelOffset;
public string MainJobIdOffset;
public string SubJobIdOffset;
public string ZoneIdOffset;
}
}
35 changes: 20 additions & 15 deletions FinalFantasyXIRichPresence/frm_Main.cs
Original file line number Diff line number Diff line change
@@ -1,25 +1,23 @@
using Binarysharp.MemoryManagement;
using DiscordRPC;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Newtonsoft.Json;
using System.IO;

namespace FinalFantasyXIRichPresence
{
public partial class frm_Main : Form
{
private const string OFFSET_FILE_PATH = ".\\offsets.json";
private const string PROCESS_NAME = "pol";
private const string MODULE_NAME = "FFXiMain.dll";
MemorySharp mem = null;
public DiscordRpcClient client;
bool sessionStarted = false;

Offsets ffxiOffsets = new Offsets();
private RichPresence defaultPresence = new RichPresence()
{
Details = "Not Currently logged in.",
Expand All @@ -37,6 +35,13 @@ public partial class frm_Main : Form
public frm_Main()
{
InitializeComponent();

if (!File.Exists(OFFSET_FILE_PATH))
{
MessageBox.Show("Offsets.json file can not be found!");
return;
}
ffxiOffsets = JsonConvert.DeserializeObject<Offsets>(File.ReadAllText(OFFSET_FILE_PATH));
client = new DiscordRpcClient("875985842450083850");
client.Initialize();
client.SetPresence(presence);
Expand Down Expand Up @@ -85,15 +90,15 @@ private void tmr_ProcessCheck_Tick(object sender, EventArgs e)

if (mem.IsRunning)
{
string playerName = mem.ReadString(ff11BaseAddress + 0x4D52E0, Encoding.Default, false, 10);
string serverName = mem.ReadString(ff11BaseAddress + 0x4D52F0, Encoding.Default, false, 15) ;
short partyCount = mem.Read<byte>(ff11BaseAddress + 0x628CC3, false);
string playerName = mem.ReadString(ff11BaseAddress + Convert.ToInt32(ffxiOffsets.PlayerNameOffset, 16), Encoding.Default, false, 10);
string serverName = mem.ReadString(ff11BaseAddress + Convert.ToInt32(ffxiOffsets.ServerNameOffset, 16), Encoding.Default, false, 15) ;
short partyCount = mem.Read<byte>(ff11BaseAddress + Convert.ToInt32(ffxiOffsets.PartyCountOffset, 16), false);
//0x97703E level sync
short mainJobLevel = mem.Read<byte>(ff11BaseAddress + 0x9B7F76, false);
short subJobLevel = mem.Read<byte>(ff11BaseAddress + 0x97CBE0, false);
short mainJobID = mem.Read<byte>(ff11BaseAddress + 0x9B7F78, false);
short subJobID = mem.Read<byte>(ff11BaseAddress + 0x9B8014, false);
short zoneID = BitConverter.ToInt16(mem.Read<byte>(ff11BaseAddress + 0x62842A, 2,false));
short mainJobLevel = mem.Read<byte>(ff11BaseAddress + Convert.ToInt32(ffxiOffsets.MainJobLevelOffset, 16), false);
short subJobLevel = mem.Read<byte>(ff11BaseAddress + Convert.ToInt32(ffxiOffsets.SubJobLevelOffset, 16), false);
short mainJobID = mem.Read<byte>(ff11BaseAddress + Convert.ToInt32(ffxiOffsets.MainJobIdOffset, 16), false);
short subJobID = mem.Read<byte>(ff11BaseAddress + Convert.ToInt32(ffxiOffsets.SubJobIdOffset, 16), false);
short zoneID = BitConverter.ToInt16(mem.Read<byte>(ff11BaseAddress + Convert.ToInt32(ffxiOffsets.ZoneIdOffset, 16), 2,false));

setPresence(serverName, mainJobLevel, subJobLevel, playerName, partyCount,mainJobID,subJobID,zoneID);
return;
Expand Down
10 changes: 10 additions & 0 deletions FinalFantasyXIRichPresence/offsets.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"playerNameOffset": "0x4D52E0",
"serverNameOffset": "0x4D52F0",
"partyCountOffset": "0x628CC3",
"mainJobLevelOffset": "0x9B7F76",
"subJobLevelOffset": "0x97CBE0",
"mainJobIdOffset": "0x9B7F78",
"subJobIdOffset": "0x9B8014",
"zoneIdOffset": "0x62842A"
}

0 comments on commit d4dd2b8

Please sign in to comment.