diff --git a/Func.cs b/Func.cs
index 5f5660e..5c76a66 100644
--- a/Func.cs
+++ b/Func.cs
@@ -200,6 +200,32 @@ namespace Func {
return "Game not fully loaded yet...";
}
}
+
+
+ public static string EquippedHeadgear() {
+ try {
+ var p_SaveDataMgr = Program.readUInt32((uint)(Program.readUInt32(SaveEditor.SAVEDATAMGR_ROOT_PTR) + 0xC));
+ return $"{Program.readUInt32((uint)(p_SaveDataMgr + 0x188))}";
+ } catch {
+ return "Game not fully loaded yet...";
+ }
+ }
+ public static string EquippedClothes() {
+ try {
+ var p_SaveDataMgr = Program.readUInt32((uint)(Program.readUInt32(SaveEditor.SAVEDATAMGR_ROOT_PTR) + 0xC));
+ return $"{Program.readUInt32((uint)(p_SaveDataMgr + 0x180))}";
+ } catch {
+ return "Game not fully loaded yet...";
+ }
+ }
+ public static string EquippedShoes() {
+ try {
+ var p_SaveDataMgr = Program.readUInt32((uint)(Program.readUInt32(SaveEditor.SAVEDATAMGR_ROOT_PTR) + 0xC));
+ return $"{Program.readUInt32((uint)(p_SaveDataMgr + 0x184))}";
+ } catch {
+ return "Game not fully loaded yet...";
+ }
+ }
public static string EquippedWep() {
try {
var p_SaveDataMgr = Program.readUInt32((uint)(Program.readUInt32(SaveEditor.SAVEDATAMGR_ROOT_PTR) + 0xC));
diff --git a/SaveEditor.cs b/SaveEditor.cs
index 2c58014..ca89462 100644
--- a/SaveEditor.cs
+++ b/SaveEditor.cs
@@ -153,6 +153,18 @@ namespace ModMenu {
Program.writeUInt32((uint)(p_save_start + 0xA5B4), amount);
}
+ public static void ChangeEquippedHeadgear(uint WeaponSetID) {
+ var p_save_start = Program.readUInt32((uint)(Program.readUInt32(SAVEDATAMGR_ROOT_PTR) + 0xC));
+ Program.writeUInt32((uint)(p_save_start + 0x188), WeaponSetID);
+ }
+ public static void ChangeEquippedClothes(uint ClothesID) {
+ var p_save_start = Program.readUInt32((uint)(Program.readUInt32(SAVEDATAMGR_ROOT_PTR) + 0xC));
+ Program.writeUInt32((uint)(p_save_start + 0x180), ClothesID);
+ }
+ public static void ChangeEquippedShoes(uint ShoesID) {
+ var p_save_start = Program.readUInt32((uint)(Program.readUInt32(SAVEDATAMGR_ROOT_PTR) + 0xC));
+ Program.writeUInt32((uint)(p_save_start + 0x184), ShoesID);
+ }
public static void ChangeEquippedWeapon(uint WeaponSetID) {
var p_save_start = Program.readUInt32((uint)(Program.readUInt32(SAVEDATAMGR_ROOT_PTR) + 0xC));
Program.writeUInt32((uint)(p_save_start + 0x18C), WeaponSetID);
diff --git a/httpMenu.cs b/httpMenu.cs
index e8f91c3..adb4944 100644
--- a/httpMenu.cs
+++ b/httpMenu.cs
@@ -22,6 +22,9 @@ namespace ModMenu {
public static uint Level;
public static uint Cash;
public static uint SeaSnails;
+ public static uint HeadgearID;
+ public static uint ClothesID;
+ public static uint ShoesID;
public static uint WeaponSetID;
public static SessionData session = new SessionData();
static WorkThread sessiondIdThread = new WorkThread(() => {
@@ -46,6 +49,15 @@ namespace ModMenu {
Thread.Sleep(5000);
SplatTelemetry.SendTelemetry();
});
+ static WorkThread HeadgearChangeThread = new WorkThread(() => {
+ SaveEditor.ChangeEquippedHeadgear(HeadgearID);
+ });
+ static WorkThread ClothesChangeThread = new WorkThread(() => {
+ SaveEditor.ChangeEquippedClothes(ClothesID);
+ });
+ static WorkThread ShoesChangeThread = new WorkThread(() => {
+ SaveEditor.ChangeEquippedShoes(ShoesID);
+ });
static WorkThread WeaponChangeThread = new WorkThread(() => {
SaveEditor.ChangeEquippedWeapon(WeaponSetID);
});
@@ -55,7 +67,7 @@ namespace ModMenu {
switch (data.action) {
case "cbase":
- return $"Cemu Base: 0x{Program.cbase:X} (0x{Program.cbaseCorrected:X})
Total Wins: {Codes.TotalWins()}
Total Losses: {Codes.TotalLoss()}
Equipped Weapon: {Codes.EquippedWep()}
Thread Status:
- Write Gear: {WriteGear.Status.ToString()}
- Telemetry: {TelemetryThread.Status.ToString()}
- Change Gender: {ChangeGender.Status.ToString()}
- Change Level: {ChangeLevel.Status.ToString()}
- Change Cash: {ChangeCash.Status.ToString()}
- Change Sea Snails: {ChangeSeaSnails.Status.ToString()}
- Change Weapon: {WeaponChangeThread.Status.ToString()}";
+ return $"Cemu Base: 0x{Program.cbase:X} (0x{Program.cbaseCorrected:X})
Total Wins: {Codes.TotalWins()}
Total Losses: {Codes.TotalLoss()}
Equipped Headgear: {Codes.EquippedHeadgear()}
Equipped Clothes: {Codes.EquippedClothes()}
Equipped Shoes: {Codes.EquippedShoes()}
Equipped Weapon: {Codes.EquippedWep()}
Thread Status:
- Write Gear: {WriteGear.Status.ToString()}
- Telemetry: {TelemetryThread.Status.ToString()}
- Change Gender: {ChangeGender.Status.ToString()}
- Change Level: {ChangeLevel.Status.ToString()}
- Change Cash: {ChangeCash.Status.ToString()}
- Change Sea Snails: {ChangeSeaSnails.Status.ToString()}
- Change Headgear: {HeadgearChangeThread.Status.ToString()}
- Change Clothes: {ClothesChangeThread.Status.ToString()}
- Change Shoes: {ShoesChangeThread.Status.ToString()}
- Change Weapon: {WeaponChangeThread.Status.ToString()}";
case "sessiondata":
return Codes.GetSessionData();
@@ -135,11 +147,49 @@ namespace ModMenu {
HandleThread(TelemetryThread);
return "1";
+ case "HeadgearChange":
+ HeadgearID = UInt32.Parse(data.settings[0]);
+ HandleThread(HeadgearChangeThread);
+ return "1";
+
+ case "HeadgearChangeApply":
+ HeadgearID = UInt32.Parse(data.settings[0]);
+ return "1";
+
+ case "ClothesChange":
+ ClothesID = UInt32.Parse(data.settings[0]);
+ HandleThread(ClothesChangeThread);
+ return "1";
+
+ case "ClothesChangeApply":
+ ClothesID = UInt32.Parse(data.settings[0]);
+ return "1";
+
+ case "ShoesChange":
+ ShoesID = UInt32.Parse(data.settings[0]);
+ HandleThread(ShoesChangeThread);
+ return "1";
+
+ case "ShoesChangeApply":
+ ShoesID = UInt32.Parse(data.settings[0]);
+ return "1";
+
case "WepChange":
WeaponSetID = UInt32.Parse(data.settings[0]);
HandleThread(WeaponChangeThread);
return "1";
+ case "WepChangeApply":
+ WeaponSetID = UInt32.Parse(data.settings[0]);
+ return "1";
+
+ case "AllEquipment":
+ string headgearID = Codes.EquippedHeadgear();
+ string clothesID = Codes.EquippedClothes();
+ string shoesID = Codes.EquippedShoes();
+ string weaponId = Codes.EquippedWep();
+ return $"{{\"EquippedHeadgearId\": \"{headgearID}\", \"EquippedClothesId\": \"{clothesID}\", \"EquippedShoesId\": \"{shoesID}\", \"EquippedWepId\": \"{weaponId}\"}}";
+
default:
return "Not Found";
}
diff --git a/modmenu/index.html b/modmenu/index.html
index 72c703e..9ddf0f5 100644
--- a/modmenu/index.html
+++ b/modmenu/index.html
@@ -14,6 +14,7 @@