[TWEAK.XM]https://github.com/Rednick16/r16Menu-Projects/blob/main/Terraria/Tweak.xm
-
Customizable UI
-
Customizable menu logo
-
7 different switchs:
- Patcher
- Patch
- Regular switch
- Textfield Switch wide or right
- Slider Switch
- Index switch
- Hook Swith
-
Patcher and Patch switch is based on KittyMemory
- Original bytes are not required
- Supports MSHookMemory
- Write unlimited bytes to a offset
I did not include encryption you will have to make your own to encrypt nsstrings.
Download the modmenu template paste in /var/theos/templates/ios/theos
Changing the menu logo open r16Logo.h and paste own menu image https://www.base64-encode.org/
menu.r16Logo = @"YOUR BASE 64 Here";
Using a custom framework You can set this in the function startAuthentication() inside Tweak.xm but this is not requierd. Dont worry about it skip_
menu.frameworkNamed = @"UnityFramework";
Patching variables
//call these inside ur own custom functions
*(int*)[UIKeyPatch address:@"0x78" ptr:ptr] = 999;
*(bool*)[UIKeyPatch address:@"0x32" ptr:ptr] = true;
*(float*)[UIKeyPatch address:@"0x56" ptr:ptr] = 999.0f;
Hooking methods
//toggle on or off
[r16Hook toggleHook:true
address:@"0x101C0E5F0"
with:(void *)PlayerMoveC_Update
original:(void **)&orig_PlayerMoveC_Update];
//without toggle
[r16Hook hook:@"0x10276FB26"
with:(void *)Player_Update
original:(void **)&_Player_Update];
//shmoos
HOOK(@"0x102517FB251", Player_Update, orig_Player_Update);
HOOK_NO_ORIG(@"0x102517FB251", Player_Update);
Patching a plain offset:
[UIKeyPatch offset:@"0x104361010" byte:@"0xC0035FD6"];
[UIKeyPatch offset:@"0x104361010" byte:@"0x000080D2C0035FD6"];
// You can write as many bytes as you want to an offset
[UIKeyPatch offset:@"0x104361010" byte:@"0x00F0271E0008201E000080D2C0035FD6"];
Patcher switch:
[menu addPatcher:@"Custom Patch #1"];
Patch Switch
[menu addPatch:@"Godmode"
description:@""
offsets:@[@"0x101C350C8"]
hexPatches:@[@"C0035FD6"]];
//or
[menu addPatch:@"Godmode"
description:@""
offsets:@[@"0x101C350C8", @"0x101C35052"]
hexPatches:@[@"0xC0035FD6", @"0xC0035FD6"]];
Plain Switch:
[menu addSwitch:@"Mana"
description:@"Infinite mana"];
Textfield Switch Right:
[menu addTextfieldRight:@"Set Weapon:"
description:@""];
Textfield Switch Wide:
[menu addTextfieldWide:@"Chat Spam:"
description:@""];
Slider Switch:
[menu addSlider:@"Custom Fov"
description:@""
initialValue:1.00
minValue:1.00
maxValue:200.00];
Index Switch:
[menu addIndexSwitch:@"Pick Damage"
description:@""
items:@[@"10", @"20", @"40", @"80", @"120", @"140"]];
Hook Switch:
//adding one hook
[menu addHookNamed:@"Aimbot"
description:@""
hook:@[[r16Hook hook:@"0x10276FB26"
with:(void *)Player_Update
original:(void **)&_Player_Update]]];
//adding infinte :)
[menu addHookNamed:@"Aimbot"
description:@""
hook:@[
[r16Hook hook:@"0x10276FB26"
with:(void *)Player_Update
original:(void **)&_Player_Update],
[r16Hook hook:@"0x10276FB26"
with:(void *)Player_Update
original:(void **)&_Player_Update],
[r16Hook hook:@"0x10276FB26"
with:(void *)Player_Update
original:(void **)&_Player_Update]]
];
Checking if a switch is on:
bool manaOn = [menu getSwitchOnForSwitch:@"Mana"];
if(manaOn) {
//stuff
}
//checking directly:
if([menu getSwitchOnForSwitch:@"Mana"]) {
//stuff
}
//using index string-arrays start at 0
if([menu getIndexForString:@"Pick Damage"] == 1/*20*/){
//do stuff
}
if([menu getIndexForString:@"Pick Damage"] == 0/*10*/){
//do stuff
}
Getting textfield or slider value:
//textfield
int userValue = [menu getInt:@"Switch Name"];
NSString *userValue3 = [menu getNSString:@"Switch Name"];
//slider
float userValue1 = [menu getFloat:@"Switch Name"];
- Rednick16
- MJx0
- For KittyMemory
If you find a bug in this beta version hit me up
Don't spam me.
Discord: Red16#6558