0% found this document useful (0 votes)
656 views41 pages

Payback2 CHEATus - Lua

This document contains code for various cheat menus and functions in a mobile game. It predefines some variables for performance and defines config and suspend files. The main menu lets the user select different cheats like wallhacks, godmodes, and match modifiers. There are also menus for CSD cheats and settings. The cheats manipulate game memory to modify behaviors like immortality, ammo, vehicle controls, and more. Comments discuss challenges with newer game versions storing more data in different memory regions.

Uploaded by

Doanh Đặng
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
656 views41 pages

Payback2 CHEATus - Lua

This document contains code for various cheat menus and functions in a mobile game. It predefines some variables for performance and defines config and suspend files. The main menu lets the user select different cheats like wallhacks, godmodes, and match modifiers. There are also menus for CSD cheats and settings. The cheats manipulate game memory to modify behaviors like immortality, ammo, vehicle controls, and more. Comments discuss challenges with newer game versions storing more data in different memory regions.

Uploaded by

Doanh Đặng
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

--— Predefine local variables ————--

--- (can possibly improve performance according to [Link] wiki)


local gg,io,os = gg,io,os -- precache the usual call function (faster function
call)
[Link],[Link],[Link] =
[Link](),[Link](),[Link]() -- prefetch some gg output
[Link] = [Link]:gsub("%.lua$","") -- strip .lua
local susp_file,cfg_file = [Link]..'.[Link]',[Link]..'.conf' --
define config and suspend files
local tmp,revert,memOzt,memOffset,t = {},{},{},{},{} -- blank stuff for who
knows...
local curVal,CH,cfg,lastCfg -- blank stuff for who knows...
--————————————————————————————————--

--— Cheat menus ——————————————————--


--- Bunch of menus and cheat codes
function MENU()
--Let the user choose stuff
local CH = [Link]({
"1. "..f"Cheat_WallHack",
"2. Flood Respawn/RC Spam/Win Brawl/Swag Deliver 0 timer",
"3. "..f"Cheat_C4AutoRig",
"4. "..f"Cheat_GodModes",
"5. Strong vehicle",
"6. No blast damage",
"7. Pistol/SG Knockback",
"8. "..f"Cheat_CSD",
"9. Match modifier",
"——",
f"Settings",
f"__about__",
f"__exit__",
f"Suspend"
},nil,f"Title_Version")
if CH == 1 then cheat_wallhack()
elseif CH == 2 then cheat_floodspawn()
elseif CH == 3 then cheat_c4autorigg()
elseif CH == 4 then MENU_godmode()
elseif CH == 5 then cheat_strongvehicle()
elseif CH == 6 then cheat_noblastdamage()
elseif CH == 7 then cheat_pistolknockback()
elseif CH == 8 then MENU_CSD()
elseif CH == 9 then MENU_matchmode()
---
elseif CH == 11 then MENU_settings()
elseif CH == 12 then show_about()
elseif CH == 13 then exit()
elseif CH == 14 then suspend() end
CH = nil
if type(tmp)=="table"then for k in pairs(tmp)do tmp[k]=nil end else tmp={}end
end
function MENU_CSD()
--Let the user choose stuff
local CH = [Link]({
f"Cheat_CSD".."\n"..f"Cheat_CSD_Notice",
"1. Running speed modifier",
"2. Walk animation Wonkyness (client-side only)",
"3. Change Name (EXPERIMENTAL)",
"4. Change Name Color (EXPERIMENTAL)",
"5. Change XP/Coin",
"6. Explosion Power",
"7. Explosion Direction",
"8. Particle interval (Slow/Fast explosion)",
"9. Reflection Graphics",
"10. Colored trees",
"11. Autoshoot Rocket",
"12. Car drift",
"13. Big body",
"14. Big Flamethrower (Item)",
"15. Shadows",
"16. Colored Peoples (ESP)",
"17. Delete All Names",
"——",
f"__back__"
},nil,f"Title_Version")
--Title:CSD...
if CH == 2 then cheat_runspeedmod()
elseif CH == 3 then cheat_walkwonkyness()
elseif CH == 4 then cheat_changeplayername()
elseif CH == 5 then cheat_changeplayernamecolor()
elseif CH == 6 then cheat_xpmodifier()
elseif CH == 7 then cheat_explodepow()
elseif CH == 8 then cheat_explodedir()
elseif CH == 9 then cheat_prtclintrvl()
elseif CH == 10 then cheat_reflectiongraphics()
elseif CH == 11 then cheat_coloredtree()
elseif CH == 12 then cheat_autoshootrocket()
elseif CH == 13 then cheat_cardrift()
elseif CH == 14 then cheat_bigbody()
elseif CH == 15 then cheat_bigflamethroweritem()
elseif CH == 16 then cheat_shadowfx()
elseif CH == 17 then cheat_clrdpplsp()
elseif CH == 18 then cheat_deleteingameplaytext()
---
elseif CH == 20 then MENU() end
end
function MENU_other()
--Let the user choose stuff
local CH = [Link]({
"1. Weapon ammo",
"2. void mode",
f"__back__"
},nil,"Other cheats\nmost of these cheats might be experiment, or
uncategorized or whatnot...")
if CH == 1 then cheat_weaponammo()
elseif CH == 2 then cheat_voidmatchmode()
elseif CH == 3 then MENU() end
end
function MENU_settings()
--Let the user choose stuff
local CH = [Link]({
"Change default player name and custom name",
"Change language",
"Change entity anchor searching method",
"——",
"Clear results & list items",
"Clear results",
"Clear list items",
"Remove suspend file",
"——",
"Save settings",
"Reset settings",
f"__back__"
},nil,f"Title_Version")
if CH == 12 then MENU()
elseif CH == 1 then
local CH = [Link]({'Put your new default player name','Put your new
default custom player name'},{[Link],[Link]},
{'text','text'})
if CH then
if CH[1] ~= "" then [Link] = CH[1] end
if CH[2] ~= "" then [Link] = CH[1] end
end
CH = nil
MENU_settings()
elseif CH == 2 then
if [Link] == "en_US" then tmp = 1
elseif [Link] == "in" then tmp = 2
elseif [Link] == "auto" then tmp = 3 end
local CH = [Link]({
"🇺🇸️ English",
"🇮🇩️ Indonesia",
"Auto-detect (uses GameGuardian API, will use English as fallback
if your language didn't exist)",
f"__back__",
},tmp,f"Title_Version")
if CH then
if CH == 4 then MENU_settings()
elseif CH == 1 then [Link] = "en_US"
elseif CH == 2 then [Link] = "in"
elseif CH == 3 then [Link] = "auto" end
update_language()
MENU_settings()
end
elseif CH == 3 then
tmp = nil
if [Link] == "wordWeaponAmmo" then tmp = 1
elseif [Link] == "holdWeapon" then tmp = 2
elseif [Link] == "abjAutoAnchor" then tmp = 3 end
local CH = [Link]({
"1. Weapon ammo (finds the weapon ammo, slowest method)",
"2. Hold weapon (tells you to hold pistol/knife and find those
values. faster, ~6 seconds)",
"3. ABJ4403's Automatic anchor (Hold pistol, dont shoot, little
bit Hold-Weapon-like. rarely fails)",
f"__back__",
},tmp,f"Title_Version")
if CH then
if CH == 5 then MENU_settings()
elseif CH == 1 then [Link] =
"wordWeaponAmmo"
elseif CH == 2 then [Link] = "holdWeapon"
elseif CH == 3 then [Link] = "abjAutoAnchor"
end
update_language()
MENU_settings()
end
---
elseif CH == 5 then [Link]() [Link]() toast('Cleared!')
elseif CH == 6 then [Link]() toast('Cleared!')
elseif CH == 7 then [Link]() toast('Cleared!')
elseif CH == 8 then [Link](susp_file) MENU_settings()
---
elseif CH == 10 then
saveConfig()
toast("your current settings is saved")
MENU_settings()
elseif CH == 11 then
cfg = {
enableLogging=false,
Language="auto",
PlayerCurrentName=":Player",
PlayerCustomName=":CoolFoe",
removeSuspendAfterRestoredSession=true,
VERSION=[Link]
}
toast("your current settings was reset.\n- If you accidentally reset
the settings, interrupt the script using the floating stop button and relaunch then
script.\n- If you sure to reset, save the setting")
MENU_settings()
end
end
--[[
A little note before looking at the cheat mechanics:
- On newer version of the game, now it stores data mostly on OTHER region
(with the rest of the data stored in Calloc, and CodeApp),
old version uses Ca,Ch,Jh,A (C++Alloc,C++Heap,JavaHeap,Anonymous)
And also the previous value that is fail when tested, will fail even if you
change memory region and still use same value
- on version 121+ (specifically build 126), some offsets has been changed
(specifically the Xa stuff)
- If you play on build 126, use Payback2_CHEATus.[Link] instead.
]]
function MENU_godmode()
--Let the user choose stuff
local CH = [Link]({
"1. Top 10 Essentials (2,3,6,8,12,15,18,19,20,21)",
--[[ Add your own set of favorite frequently used cheats here ]]
"——",
"2. Weapon Ammo",
"3. Rel0ad Pistol,SG,Rocket,C4s",
"4. Rel0ad Grenade", -- 5
"5. Prevent car stealing",
"6. Immortality",
"7. Immortality (Self-explode)",
"8. C4 Drawing",
"9. Speed Sliding", -- 10
"10 Float",
"11. Ragdoll",
"12. Anti-Burn body",
"13. Burned body",
"14. Burning body", -- 15
"15. Dr0wned",
"——",
"16. Clone",
"17. Change vehicle color",
"18. Vehicle jet", -- 20
"19. Fast car acceleration (+ other tweaks)",
"20. Translucent Vehicle",
"21. Disable vehicle noise",
"22. Change car wheel height",
"23. 6 Star police", -- 25
"24. Win rampage (not instant)",
"25. AI Control",
"26. Prevent car from stuckflipped",
},nil,f"Cheat_GodModes".."\n"..f"Cheat_GodModes_Notice")
if CH then
local achAdr = findEntityAnchr()
if achAdr then
--TODO: add a way to somehow be able to also hack other entity (AI,
dead-objects/turret/C4)
cheat_godmode(CH,achAdr)
toast('Selected operations done')
achAdr = nil
else
toast('Can\'t find the value. Try different entity anchor search
method on settings, and disable memory optimization in config file.\nNothing
worked? report this issue on my GitHub page:
[Link]
end
end
end
function MENU_matchmode()
--Let the user choose stuff
local CH = [Link]({
"Weapon Ammo",
"void mode (+void/no time limit)",
"——",
f"__back__"
},nil,"Match mode modifier")
if CH then
if CH[4] then return MENU()end
[Link](gg.REGION_ANONYMOUS | gg.REGION_OTHER)
local ta =
handleMemOzt('MatchOffset',1217115234,nil,gg.TYPE_DWORD,1,[Link].Common_Regio
nOther)
if ta[1] then
t = {}
ta = ta[1].address
ta = {
ta+0xB4, -- 1P
ta+0x1C4 -- 2P
}
if CH[1] then t = [Link](t,{
{a=0x58,value=3e4,flags=gg.TYPE_DWORD},
{a=0x5C,value=3e4,flags=gg.TYPE_DWORD},
{a=0x60,value=3e4,flags=gg.TYPE_DWORD},
{a=0x64,value=3e4,flags=gg.TYPE_DWORD},
{a=0x68,value=3e4,flags=gg.TYPE_DWORD},
{a=0x6C,value=3e4,flags=gg.TYPE_DWORD},
{a=0x70,value=3e4,flags=gg.TYPE_DWORD},
{a=0x74,value=1e3,flags=gg.TYPE_DWORD},
})
end
if CH[2] then t = [Link](t,{
{a=0,value=9,flags=gg.TYPE_DWORD},
{a=0x1C,value=6,flags=gg.TYPE_DWORD},
})
end
for i=1,#t do
t[i].address = (ta[1] + t[i].a)
t[i].value = t[i].value
t[i].flags = t[i].flags
t[i+#t] = {
address = (ta[2] + t[i].a),
value = t[i].value,
flags = t[i].flags
}
end
[Link](t)
[Link](t)
[Link]()
toast('Selected operations done')
else
toast('Can\'t find the value, report this issue on my GitHub
page: [Link]
end
end
end

function cheat_godmode(CH,anchor)
t = {}
-- 1. Groups: Essentials (Weapon Ammo,Rel0ad,Immortality,C4
Drawing,Antiburn,Dr0wned,Car jet,Fast car,Transparent car,Disable car noise)
---
if CH[3] or CH[1] then -- Weapon Ammo (Freeze/NoFreeze)
tmp.a = {
{a=0x1C,n='Shotgun'},
{a=0x1E,n='Rocket'},
{a=0x20,n='Flamethrower'},
{a=0x22,n='Grenade'},
{a=0x24,n='Minigun'},
{a=0x26,n='Explosives'},
{a=0x28,n='Turret'},
{a=0x2A,n='Laser'},
}
for i=1,#tmp.a do
tmp.a[i].address = (anchor + tmp.a[i].a)
tmp.a[i].name = 'Pb2Chts [Weapon]: '..(tmp.a[i].n)
tmp.a[i].flags = gg.TYPE_WORD
tmp.a[i].freeze = CH[2]
tmp.a[i].value = 3e4
tmp.a[i].a = nil
tmp.a[i].n = nil
end
tmp.a = nil
end
if CH[4] or CH[5] or CH[1] then -- Rel0ad (Pistol,SG,Rocket,C4/Grenade)
tmp.a =
{{address=anchor+0x84,flags=gg.TYPE_WORD,value=0,freeze=true,name="Pb2Chts
[Rel0adTimer]"}}
if CH[5] then
local grenadeRange = [Link]({"Put your grenade range\nHold
your grenade if you use this setting\nignore the throw range and disables delay by
setting this to 0 [0;100]"},{100},{"number"})
if grenadeRange and grenadeRange[1] and grenadeRange[1] ~= "0"
then
toast("Wait for it")
tmp.a[1].value = grenadeRange[1]

[Link]({{address=anchor+0x18,flags=gg.TYPE_WORD,value=3,name="Pb2Chts
[HoldWeapon]: Grenade"}})
[Link](tmp.a)
[Link](tmp.a)
sleep(999)
end
tmp.a[1].value = -63
end
t = [Link](t,tmp.a)
end
-- [5]
if CH[6] or CH[7] or CH[8] or CH[1] then --
(NoCarSteal/Immortality(On/Explode)) is this a good idea?
[Link] = CH[6]
[Link] = CH[7] or CH[1]
[Link] = CH[8]
t = [Link](t,{

{address=anchor+0x8,flags=gg.TYPE_WORD,freeze=true,value=([Link] and -
501 or 800),name="Pb2Chts [Health]"},
{address=anchor+0x158,flags=([Link] and gg.TYPE_WORD or
gg.TYPE_FLOAT),freeze=true,value=(([Link] or [Link]) and 1 or
0),name="Pb2Chts [RespawnInterval]"},
})
[Link],[Link],[Link] = nil,nil,nil
end
-- [7]
-- [8]
if CH[9] or CH[1] then t = [Link](t,{
{address=anchor+0x2C,flags=gg.TYPE_WORD,value=-
1,freeze=true,name="Pb2Chts [C4Position]: X"},
{address=anchor+0x2E,flags=gg.TYPE_WORD,value=-
1,freeze=true,name="Pb2Chts [C4Position]: Y"}
})
end
if CH[10] then t = [Link](t,{

{address=anchor+0x86,flags=gg.TYPE_WORD,value=300,freeze=true,name="Pb2Chts
[SpeedSlide]"}
})
end
if CH[11] then t = [Link](t,{
{address=anchor-
0x408,flags=gg.TYPE_DWORD,value=1,freeze=true,name="Pb2Chts [Float]"}
})
end
if CH[12] then t = [Link](t,{
{address=anchor-
0x4,flags=gg.TYPE_DWORD,value=0,freeze=true,name="Pb2Chts [Ragdoll]"},
{address=anchor+0x128,flags=gg.TYPE_DWORD,value=0,freeze=true,freezeType=gg.FREEZE_
IN_RANGE,freezeFrom=0,freezeTo=120,name="Pb2Chts [Ragdoll]"}
})
end
if CH[13] or CH[7] or CH[1] then t = [Link](t,{ -- AntiBurn/NoSteal
{address=anchor-
0x4,flags=gg.TYPE_DWORD,value=0,freeze=true,name="Pb2Chts [EntityBurning]:
Antiburn"},
})
end
if CH[14] then t = [Link](t,{
{address=anchor-
0x4,flags=gg.TYPE_DWORD,value=1,freeze=true,name="Pb2Chts [EntityBurning]:
Burned"},
})
end
if CH[15] then t = [Link](t,{
{address=anchor-
0x4,flags=gg.TYPE_DWORD,value=99,freeze=true,name="Pb2Chts [EntityBurning]: Fire"},
})
end
if CH[16] or CH[1] then t = [Link](t,{
{address=anchor-
0x60E,flags=gg.TYPE_WORD,value=0,freeze=true,name="Pb2Chts [Dr0wned]"},
})
end
---
-- [18]
-- [19]
if CH[20] or CH[1] then t = [Link](t,{
{address=anchor-
0x1AC,flags=gg.TYPE_WORD,value=1,freeze=true,name="Pb2Chts [Enable jet]"},
})
end
if CH[21] or CH[1] then t = [Link](t,{
{address=anchor-
0x210,flags=gg.TYPE_BYTE,value=3,freeze=true,name="Pb2Chts [CarAccelEngType]"},
{address=anchor-
0x208,flags=gg.TYPE_FLOAT,value=0,freeze=true,name="Pb2Chts [CarSpeed]"},
{address=anchor-
0x202,flags=gg.TYPE_WORD,value=31000,freeze=true,name="Pb2Chts [CarSpeed]"},
{address=anchor-
0x214,flags=gg.TYPE_WORD,value=4,freeze=true,freezeType=gg.FREEZE_IN_RANGE,freezeFr
om=4,freezeTo=6,name="Pb2Chts [WheelCount]"},
--{address=anchor-
0x20C,flags=gg.TYPE_FLOAT,value=1000,freeze=true,name="Pb2Chts [WheelGrip]"},
unused, it can give significant "controllable" fast speed, but comes at tons of
minuses
})
end
if CH[22] or CH[1] then t = [Link](t,{
{address=anchor-0x10,flags=gg.TYPE_WORD,value=1,name="Pb2Chts
[TransparentVehicle]"},
})
end
if CH[23] or CH[1] then -- Disable vehicle noise
tmp[1] = {
{address=anchor-
0x4,flags=gg.TYPE_DWORD,value=99,freeze=true,name="Pb2Chts
[BodyBurningStateAndTimer]: Antiburn"},
}
[Link](tmp[1])
tmp[1][1].value = 0
[Link](100)
[Link](tmp[1])
[Link](tmp[1])
end
-- [24]
if CH[25] then t = [Link](t,{
{address=anchor-0x11,flags=gg.TYPE_BYTE,value=127,name="Pb2Chts [Wanted
level]"},
})
end
if CH[26] then t = [Link](t,{

{address=anchor+0x30,flags=gg.TYPE_DWORD,value=9e8,freeze=true,name="Pb2Chts
[Win rampage] (remove after you win match)"},
})
end
if CH[27] then t = [Link](t,{

{address=anchor+0xDB,flags=gg.TYPE_BYTE,value=1,freeze=true,name="Pb2Chts
[ControlMode] (remove after you win match)"},
})
end
if CH[28] then t = [Link](t,{
{address=anchor-
0x72A,flags=gg.TYPE_WORD,value=16255,freeze=true,name="Pb2Chts [StopStuckFlip]"},
})
end
--- stuff that requires user intervention and takes longer?
if CH[24] then -- Custom wheel height
local wheelHeight = [Link]({"Set your custom wheel height [0;200]"},
{190},{"number"})
if wheelHeight then
wheelHeight = wheelHeight[1]
t = [Link](t,{
{address=anchor-
0x3EB,flags=gg.TYPE_FLOAT,value=wheelHeight,name="Pb2Chts [CarWheelFLZ]"},
{address=anchor-
0x3DF,flags=gg.TYPE_FLOAT,value=wheelHeight,name="Pb2Chts [CarWheelFRZ]"},
{address=anchor-
0x3D3,flags=gg.TYPE_FLOAT,value=wheelHeight,name="Pb2Chts [CarWheelBLZ]"},
{address=anchor-
0x3C7,flags=gg.TYPE_FLOAT,value=wheelHeight,name="Pb2Chts [CarWheelBRZ]"},
{address=anchor-
0x3BB,flags=gg.TYPE_FLOAT,value=wheelHeight,name="Pb2Chts [CarWheelMLZ]"},
{address=anchor-
0x3AF,flags=gg.TYPE_FLOAT,value=wheelHeight,name="Pb2Chts [CarWheelMRZ]"}
})
end
end
if CH[18] then -- Clone player
toast("[ClonePlayer] Change the weapon you want before you can\'t
change it anymore")
tmp[1] = {

{address=anchor+0xDB,flags=gg.TYPE_BYTE,value=7,freeze=true,name="Pb2Chts
[ControlMode]"}
}
sleep(3e3)
[Link](tmp[1])
tmp[1][1].value = 2
t = [Link](t,tmp[1])
sleep(1e3)
end
if CH[19] then -- Change vehicle color
local CH,PlyrClrCH = [Link]({
"1. Black (0)",
"2. Blue (1)",
"3. Green (2)",
"4. Brown (3)",
"5. Red (4)",
"6. Gray (5)",
"7. Yellow (6)",
"8. White (7)",
"9. Bold red (8)",
"10. Exteme black (16)",
"11. Rare green (48)",
"12. Dark green (50)",
"13. Dark red (59)",
"14. Tomato red (65)",
"15. Rainbow"
},nil,"Select the color you want")
if CH == 1 then PlyrClrCH = 0
elseif CH == 2 then PlyrClrCH = 1
elseif CH == 3 then PlyrClrCH = 2
elseif CH == 4 then PlyrClrCH = 3
elseif CH == 5 then PlyrClrCH = 4
elseif CH == 6 then PlyrClrCH = 5
elseif CH == 7 then PlyrClrCH = 6
elseif CH == 8 then PlyrClrCH = 7
elseif CH == 9 then PlyrClrCH = 8
elseif CH == 10 then PlyrClrCH = 16
elseif CH == 11 then PlyrClrCH = 48
elseif CH == 12 then PlyrClrCH = 50
elseif CH == 13 then PlyrClrCH = 59
elseif CH == 14 then PlyrClrCH = 65
elseif CH == 15 then PlyrClrCH = -1 end
if PlyrClrCH and PlyrClrCH >= 0 then t = [Link](t,{

{address=anchor+0x94,flags=gg.TYPE_BYTE,freeze=true,value=PlyrClrCH,name="Pb2Chts
[Vehicle color]"},
})
elseif PlyrClrCH and PlyrClrCH == -1 then
toast("click the floating GG icon to stop. while the rainbow
animation playing, you cannot access GG until its stopped.")
[Link] = 1
[Link] =
{{address=anchor+0x94,flags=gg.TYPE_BYTE,freeze=false,name="Pb2Chts [Vehicle
color]"}}
[Link](t)
[Link](t)
[Link]()
[Link](false)
while not [Link]() do
if [Link] > 8 then [Link] = 1 end
[Link][1].value = [Link]
[Link]([Link])
sleep(77)
[Link] = [Link] + 1
end
[Link](false)
end
end
[Link](t)
[Link](t)
end
function cheat_pistolknockback()
local CH = [Link]({
"Grapple gun/Pull (-20)",
"Knockback/Push (20)",
"Default (0.25)",
"None (0.00001)",
"Custom",
"——",
"Change current Knockback variable",
"Restore previous value",
"Clear memory buffer",
f"__back__"
},nil,"Pistol/Shotgun knockback modifier\nCurrent:
"..[Link].."\nHint: recommended value is -20 to 20 if you use
pistol")
if CH then
if CH == 10 then return MENU()
elseif CH == 1 then PISTOL_KNOCKBACK_VALUE = -20
elseif CH == 2 then PISTOL_KNOCKBACK_VALUE = 20
elseif CH == 3 then PISTOL_KNOCKBACK_VALUE = 0.25
elseif CH == 4 then PISTOL_KNOCKBACK_VALUE = 1e-5
elseif CH == 5 then
local CH = [Link]({'Input your custom knockback value'})
if CH and CH[1] then
PISTOL_KNOCKBACK_VALUE = CH[1]
else
return cheat_pistolknockback()
end
---
elseif CH == 7 then
local CH = [Link]({'If you think the current knockback value
is wrong, or get reset due to quiting from script, you can change it here\n\nPut
the current pistol/shotgun knockback value'},{[Link]},{'number'})
if CH and CH[1] then [Link] = CH[1] end
return cheat_pistolknockback()
elseif CH == 8 then
[Link] = nil
return cheat_pistolknockback()
elseif CH == 9 then
[Link] = nil
return cheat_pistolknockback()
end
if PISTOL_KNOCKBACK_VALUE then
-- | gg.REGION_ANONYMOUS
[Link](gg.REGION_C_ALLOC)
if not [Link] then
[Link](1067869798,gg.TYPE_DWORD)
tmp[1]=[Link](5e3)
for i=1,#tmp[1] do
tmp[1][i].address = (tmp[1][i].address - 0xC)
tmp[1][i].flags = gg.TYPE_FLOAT
end
[Link](tmp[1])
[Link]([Link])
end
--specially crafted for above conditions

handleMemOzt("PistolKnockback",[Link],nil,gg.TYPE_FLOAT,2)
if [Link]() == 0 then
[Link],[Link] = nil,nil
toast("Can't find the specific set of number. if you
changed the knockback value and reopened the script, restore the actual current
number using 'Change current knockback value' menu")
else
for i=1,#[Link] do
[Link][i].value =
PISTOL_KNOCKBACK_VALUE
end
[Link] = PISTOL_KNOCKBACK_VALUE
toast("Pistol/SG Knockback "..[Link])
[Link]([Link])
end
end
PISTOL_KNOCKBACK_VALUE = nil
end
end
function cheat_wallhack()
local CH,tmp = [Link]({
"GKTV, ON (wonky physics, Xa-based, fast to enable, survives multiple
match, and can wallhack entities)",
"GKTV, OFF",
"AGH, ON (physics works best. Ca-based, need to reapplied every match,
takes slightly longer than GKTV)",
"AGH, OFF",
"——",
"Restore previous value",
"Clear memory buffer",
f"__back__"
},nil,f"Cheat_WallHack"..". "..f"Cheat_WallHack_Notice"),nil
if CH == 8 then MENU()
-- Set value that is going to be searched using logic after this `if CH elseif end`
elseif CH == 1 then tmp={1,1e-3,-1,"ON"}
elseif CH == 2 then tmp={1,-1,1e-3,"OFF"}
elseif CH == 3 then tmp={2,1140457472,-1,"ON"}
elseif CH == 4 then tmp={2,-1,1140457472,"OFF"}
---
elseif CH == 6 then
[Link](revert.wallhack_agh)
[Link](revert.wallhack_gktv)
revert.wallhack_agh,revert.wallhack_gktv = nil,nil
toast("Previous value restored, be warned though this will cause
instability")
cheat_wallhack()
elseif CH == 7 then
CH,memOzt.wallhack_agh,memOzt.wallhack_gktv = nil,nil,nil
toast("Memory buffer cleared")
cheat_wallhack()
end
if tmp then
if tmp[1] == 1 then
[Link](gg.REGION_CODE_APP)
if memOzt.wallhack_gktv then
toast('Previous result found, using previous result.')
else
toast('No buffer found, creating new buffer.')
[Link]("3472W;5W;"..tmp[2].."F;-17789W::15") --
wall hack
[Link](tmp[2],gg.TYPE_FLOAT)
tmp[6] = [Link](1)
log("Results: "..[Link]())
[Link]()
[Link]("2W;16256W;"..tmp[2].."F;24W::9") --
vehicle wallhack
[Link](tmp[2],gg.TYPE_FLOAT)
[Link](tmp[6],[Link](1)[1])
log("Results: "..[Link]())
memOzt.wallhack_gktv,revert.wallhack_gktv = tmp[6],tmp[6]
end
[Link](memOzt.wallhack_gktv)
if #memOzt.wallhack_gktv == 0 then
toast("Can't find the specific set of number, report this
issue on my GitHub page: [Link]
else
if #memOzt.wallhack_gktv == 1 then log("Only found 1 result
instead of 2 results.\n Wallhack might partially or not working\n try
to play on build 121.") end
for i=1,#memOzt.wallhack_gktv do
memOzt.wallhack_gktv[i].value = tmp[3]
end
[Link](memOzt.wallhack_gktv)
toast("Wall Hack "..tmp[4])
end
else
[Link](gg.REGION_C_ALLOC)
if not memOzt.wallhack_agh then
--Optimized group search of: "576F;"..tmp[2].."D;576F::9"
[Link](576,gg.TYPE_FLOAT)
t=[Link](1e3) for i=1,#t do t[i].address =
(t[i].address + 0x8) end [Link](t) [Link](576)
t=[Link](1e3) for i=1,#t do t[i].address =
(t[i].address - 0x4) t[i].flags = gg.TYPE_DWORD end [Link](t)
[Link](tmp[2])
t=nil
end
handleMemOzt("wallhack_agh",tmp[2],nil,gg.TYPE_DWORD,1e3)
if [Link]() == 0 then
toast("Can't find the specific set of number, report this
issue on my GitHub page: [Link]
else
for i=1,#memOzt.wallhack_agh do
memOzt.wallhack_agh[i].value = tmp[3]
end
[Link](memOzt.wallhack_agh)
toast("Wall Hack "..tmp[4])
end
end
end
end
function cheat_bigbody()
local CH = [Link]({
"ON",
"OFF",
"Restore previous value",
"Use custom value",
f"__back__"
},nil,"Big body\nPS: client-side only")
if CH then
local t
if CH == 5 then MENU()
elseif CH == 1 then
[Link](gg.REGION_CODE_APP)
handleMemOzt("bigbody",4.30000019073,nil,gg.TYPE_FLOAT,22)
if [Link]() == 0 then
toast("Can't find the specific set of number, report this
issue on my GitHub page: [Link]
else
[Link]([Link]+0.00000019073,gg.TYPE_FLOAT)
toast("Big Body ON")
end
elseif CH == 2 then
[Link](gg.REGION_CODE_APP)

handleMemOzt("bigbody",[Link]+0.00000019073,nil,gg.TYPE_FLOAT,22)
if [Link]() == 0 then
toast("Can't find the specific set of number, report this
issue on my GitHub page: [Link]
else
[Link](4.30000019073,gg.TYPE_FLOAT)
toast("Big body OFF")
end
elseif CH == 3 then
if [Link] then
[Link]([Link])
toast("Big body previous value restored")
else
toast("No values to restore")
end
[Link] = nil
elseif CH == 4 then
local CH = [Link]({'Put your custom value (Game default:
4.3,Cheatus default: 5.9, offset: .00000019073)'},{[Link]},{'number'})
if CH and CH[1] ~= "" then [Link] = CH[1] end
CH = nil
cheat_bigbody()
end
t = nil
end
end
function cheat_strongvehicle()
local CH = [Link]({
"Strong (30000)",
"Default (125)",
"Really weak (1)",
"Destroy (-1)",
"Custom",
"——",
"Change current health variable",
"Restore previous value",
"Clear memory buffer",
f"__back__"
},nil,"Vehicle default health modifier")
if CH then
if CH == 9 then MENU()
elseif CH == 1 then CAR_HEALTH_VALUE = 3e4
elseif CH == 2 then CAR_HEALTH_VALUE = 125
elseif CH == 3 then CAR_HEALTH_VALUE = 1
elseif CH == 4 then CAR_HEALTH_VALUE = -1
elseif CH == 5 then
local CH = [Link]({'Input your custom Vehicle default health
value'})
if CH and CH[1] then
CAR_HEALTH_VALUE = CH[1]
else
return cheat_strongvehicle()
end
---
elseif CH == 7 then
local CH = [Link]({'If you think the current Vehicle default
health value is wrong, or get reset due to quiting from script, you can change it
here\n\nPut the current Vehicle default health value'},{[Link]},
{'number'})
if CH and CH[1] then [Link] = CH[1] end
return cheat_strongvehicle()
elseif CH == 8 then
CH,[Link] = nil,nil
return cheat_strongvehicle()
elseif CH == 9 then
CH,[Link] = nil,nil
return cheat_strongvehicle()
end
if CAR_HEALTH_VALUE then
[Link](gg.REGION_CODE_APP)

handleMemOzt("CarHealth",[Link].."D;4D;1F::21",[Link],[Link]
_DWORD,50)
if [Link]() == 0 then
[Link],[Link] = nil,nil
toast("Can't find the specific set of number. if you
changed the vehicle health value, and reopened the script, restore the actual
current number using 'Change current health variable' menu")
else
for i=1,#[Link] do
[Link][i].flags = gg.TYPE_WORD
[Link][i].value = CAR_HEALTH_VALUE
end
[Link] = CAR_HEALTH_VALUE
[Link]([Link])
toast("Vehicles default health "..[Link])
end
end
CAR_HEALTH_VALUE = nil
end
end
function cheat_noblastdamage()
local CH = [Link]({
"None (0)",
"Default (300)",
"Far (3.000.000, dead with almost any explosed explosion)",
"——",
"Change current damage value",
"Restore previous value",
"Clear memory buffer",
f"__back__"
},nil,"Blast damage intensity modifier")
if CH then
if CH == 8 then MENU()
elseif CH == 1 then DAMAGE_INTENSITY_VALUE = 0
elseif CH == 2 then DAMAGE_INTENSITY_VALUE = 300
elseif CH == 3 then DAMAGE_INTENSITY_VALUE = 3e6
---
elseif CH == 5 then
local CH = [Link]({'If you think the current Damage intensity
is wrong, or get reset due to quiting from script, you can change it here\n\nPut
the current Damage intensity'},{[Link]},{'number'})
if CH and CH[1] then [Link] = CH[1] end
cheat_noblastdamage()
elseif CH == 6 then
CH,[Link] = nil,nil
cheat_noblastdamage()
elseif CH == 7 then
CH,[Link] = nil,nil
cheat_noblastdamage()
end
if DAMAGE_INTENSITY_VALUE then
[Link](gg.REGION_CODE_APP)

handleMemOzt("NoBlastDamage",[Link]..";2e9::5",[Link],[Link]
_FLOAT,9)
if [Link]() == 0 then
[Link],[Link] = nil,nil
toast("Can't find the specific set of number. if you
changed the blast intensity value and reopened the script, restore the actual
current number using 'Change current damage value' menu")
else
for i=1,#[Link] do
[Link][i].value =
DAMAGE_INTENSITY_VALUE
end
[Link] = DAMAGE_INTENSITY_VALUE
toast("Blast damage intensity "..[Link])
[Link]([Link])
end
end
DAMAGE_INTENSITY_VALUE = nil
end
end
function cheat_floodspawn()
CH = [Link]({
"Activate",
"Activate v2 (EXPERIMENTAL, yolo-edit-all values)",
"Clear memory buffer",
"Clear buffer and Activate",
"Back"
},nil,"Flood Respawn. WARNING:\n- DO'NT USE THIS TO HARM OTHER PLAYER!\n-
THIS CHEAT IS TECHINCALLY POWERFUL, BECAUSE IT INCREASE SERVER LATENCY AND LAG
PLAYERS. ONLY USE IT OFFLINE!!\n- if you use this for racing stuff, consider
lowering your freeze range to ~40.000-100.000 if after reaching checkpoint wont
move to next checkpoint.")
if CH then
if CH == 5 then MENU() end
if CH == 3 or CH == 4 then
[Link] = nil
if CH == 3 then cheat_floodspawn() end
end
if CH == 1 or CH == 2 or CH == 4 then
[Link]([Link])
if CH == 1 then
t =
handleMemOzt("respawnCheat",52428800,nil,gg.TYPE_DWORD,5e3,[Link].Common_Regi
onOther)
else
[Link]()

[Link](52428800,gg.TYPE_DWORD,nil,nil,[Link]([Link].Common_Reg
ionOther))
t = [Link](5e3)
end
--[[for i=1,#t do TODO: fix this stuff only works for 1P not 2P due to
different address (1P always ends with 66c, while 2P can ends with either 4/6/e??
tmp[0] = [Link]("%x",t[i].address)
if not tmp[0]:find('66c$') then
t[i] = nil
end
end
[Link](t)
t = [Link](5e3)]]
if [Link]() > 1 and (CH == 1 or CH == 4) then
searchWatchdog("Now trigger respawn animation (by respawning yourself through pause
menu)","52428801~52429000","respawnCheat") end
if [Link]() == 0 then
toast("Can't find the specific set of number, report this
issue on my GitHub page: [Link]
else
CH = [Link]({
"Put the respawn duration (in seconds)\n0:No
duration\n-1:No respawn hack [-1;20]",
"RC Car Spam","Win Brawl (client-side)",
"Swag Delivery no timer","Freeze camera entity ID
(this can protect you against JokerGGS player takeover cheat)",
"Disable AI"
},{
1,
true,false,
false,false,
true
},{
"number",
"checkbox","checkbox",
"checkbox","checkbox",
"checkbox"
})
if CH then
--2nd table that dont affected by timer and crap
local ta = {}
--prepare respawn/rccarspam/winbrawl values
for i=1,#t do
t[i].value = 52428801
t[i].freeze = true
t[i].name = "Pb2Chts [RespawnHack]"
if CH[2] then -- rc spam
ta = [Link](ta,{{
address = t[i].address - 0xE,
flags = gg.TYPE_WORD,
value = -1,
freeze = true,
name = "Pb2Chts [RCCarSpam]"
}})
end
if CH[3] then -- win brawl
ta = [Link](ta,{{
address = t[i].address - 0x14,
flags = gg.TYPE_DWORD,
value = 9e6,
freeze = true,
name = "Pb2Chts [WinBrawl]"
}})
end
if CH[4] then -- swag deliver 0 timer
ta = [Link](ta,{{
address = t[i].address + 0xE,
flags = gg.TYPE_WORD,
value = 0,
freeze = true,
name = "Pb2Chts [SwagDeliverTim0r]"
}})
end
if CH[5] then -- lock camera entity id
--fetch current entity cam id
[Link]({{address=t[i].address +
0x10,flags=gg.TYPE_WORD}})
--and apply
ta = [Link](ta,{{
address = t[i].address + 0x10,
flags = gg.TYPE_WORD,
value = [Link](1)[1].value,
freeze = true,
name = "Pb2Chts [EntityCamID]"
}})
[Link]() -- get rid of temporary
trash after used
end
if CH[6] then -- disable AI
ta = [Link](ta,{{
address = t[i].address + 0xE8,
flags = gg.TYPE_BYTE,
value = 0,
name = "Pb2Chts [EnableAIControl]"
}})
end
end
--since the only thing required in CH is only the 1st
option, change the whole table to that instead
CH = CH[1]
--set other stuff if user ticked those options
if ta[1] then
[Link](ta)
[Link](ta)
end
--set respawn hack if not disabled (not -1)
if CH ~= "-1" then
--set respawn hack
[Link](t)
[Link](t)
end
--if no duration
if CH == "0" then
toast("Flood Respawn ON\nRemember to turn off
again by using \"Clear list items\" button in settings")
--if not disabled
elseif CH ~= "-1" then
toast("Flood Respawn ON for "..CH.." seconds")
--Way to sleep for a long time but cancellable by
user too, which is great
for i=1,CH do
if [Link]()then
[Link](false)break
end
sleep(1e3)
end
--restore the value back by removing list items ???
(heres the problem, what if it stays freezed even if removed from list?)
[Link](t)
toast("Flood Respawn OFF")
end
end
end
end
end
CH = nil
end
function cheat_c4autorigg()
local totalC4sRigged = 0
[Link]([Link])
[Link]()
--search c4s control code

[Link](83886336,gg.TYPE_DWORD,nil,nil,[Link]([Link].Common_Reg
ionOther))
local t = [Link](1e3)
--Offset -0xD0 (health), load its result
for i=1,#t do
t[i].address = (t[i].address - 0xD0)
t[i].flags = gg.TYPE_WORD
end
[Link](t)
--Refine health 100 (which is C4s health), check if it actually located in [5d]08,
and set to 0 if so
[Link](100)
t = [Link](1e3) for i=1,#t do
tmp0 = [Link]("%x",t[i].address)
if tmp0:find('508$') or tmp0:find('d08$') or tmp0:find('5f4$') or
tmp0:find('df4$') then
t[i].value = 0
totalC4sRigged = totalC4sRigged + 1
else
t[i] = nil
end
end
if totalC4sRigged == 0 then
[Link]("Can't find any C4s, is there any C4 bombs planted?")
else
[Link](t)
[Link](totalC4sRigged.." C4s rigged!")
end
end
function cheat_runspeedmod()
CH = [Link]({
"400",
"120 (Default)",
"Back"
},nil,"Running speed modifier (Controllable, CodeApp implementation)")
if CH then
if CH == 3 then MENU()
elseif CH == 1 then tmp={15120,15400}
elseif CH == 2 then tmp={15400,15120} end
[Link](gg.REGION_CODE_APP)

handleMemOzt("runSpeed",tmp[1].."W;1186693120D;985158124D;1114636288D::12",tmp[1],g
g.TYPE_WORD,1)
if [Link]() == 0 then
[Link]("Can't find specific set of number")
else
[Link](tmp[2],gg.TYPE_WORD)
[Link]("Running speed changed")
end
end
end
function cheat_xpmodifier()
--Not ready to use gg.REGION_C_BSS yet especially because JokerGGS mentioned a
problem with it.
[Link]([Link])
local CH = [Link]({
'Put your new XP (Play Game limit is 999999, while DWORD integer is the
max limit)',
'Put your new coin (max 30000, temporary, not recommend if you have
infinite coin coz it might get reset)',
'Freeze XP',
'Freeze Coin',
'Enable skip slow intro animation',
'Override current controlled player [-1;16]',
'Win CTS match (0:disable,-1/1 one of the teams) [-1;1]',
},{999999,-1,true,false,false,-1,0},
{'number','number','checkbox','checkbox','checkbox','number','number'})
if CH then
tmp[1] = handleMemOzt("CustomXP",1014817001,nil,gg.TYPE_DWORD,1)
if [Link]() == 0 then
toast('Can\'t find the specific number.')
else
t = {}
tmp[1] = tmp[1][1].address
if CH[1] and CH[1] ~= "" and CH[1] ~= "-1" then
t = [Link](t,{{address=(tmp[1]-
0x804),flags=gg.TYPE_DWORD,value=CH[1],freeze=CH[3],name="Pb2Chts
[PlayerCurrentXP]"}})
end
if CH[2] and CH[2] ~= "" and CH[2] ~= "-1" then
t = [Link](t,{{address=(tmp[1]-
0x608),flags=gg.TYPE_DWORD,value=CH[2],freeze=CH[4],name="Pb2Chts
[PlayerCurrentCoin]"}})
end
if CH[5] and CH[5] ~= "-1" then
t = [Link](t,{{address=(tmp[1]-
0x403B54),flags=gg.TYPE_WORD,value=CH[5],name="Pb2Chts
[OverrideControlledPlayer]"}})
end
if CH[6] then
if CH[6] == "-1" then -- 1
t = [Link](t,{{address=(tmp[1]-
0x403A2C),flags=gg.TYPE_WORD,value=3e4,freeze=true,name="Pb2Chts [WinCTS]"}})
elseif CH[6] == "1" then -- 2
t = [Link](t,{{address=(tmp[1]-
0x403A30),flags=gg.TYPE_WORD,value=3e4,freeze=true,name="Pb2Chts [WinCTS]"}})
end
end
if CH[7] then
t = [Link](t,{{address=(tmp[1]-
0x403B78),flags=gg.TYPE_WORD,value=0,freeze=true,name="Pb2Chts
[SkipSlowAnimation]"}})
end
[Link](t)
[Link](t)
toast('Selected operations done')
end
end
end
function cheat_changeplayername()
[Link](gg.REGION_C_ALLOC | gg.REGION_ANONYMOUS | gg.REGION_OTHER)
--request user to give player name
local player_name = [Link]({
'Put your current player name (case-sensitive, ":" or ";" is required
at the beginning, because how GameGuardian search works)',
'Put new player name (cant be longer than current name, you can change
color/add icon by copy-pasting custom name edited using hex-editor (use hex 1-9 for
color))'
},{
[Link],
[Link]
},{
"text",
"text"
})
--search old player name
if player_name and player_name[1] and player_name[1] ~= ":" then
[Link](player_name[1],gg.TYPE_BYTE)
[Link] = [Link](5e3)
if [Link]() == 0 then
toast('Can\'t find the player name, this cheat is still in
experimentation phase. report issue on my GitHub page:
[Link]
else
[Link](player_name[2],gg.TYPE_BYTE)
[Link] = player_name[2]
toast('"'..player_name[1]..'" changed to "'..player_name[2]..'"\
nWarn: this is still in experimentation phase, the name might only apply on your
client and not others')
end
end
end
function cheat_changeplayernamecolor()
[Link](gg.REGION_C_ALLOC | gg.REGION_ANONYMOUS | gg.REGION_OTHER)
local CH,player_name,player_color_choice = [Link]({
"Invisible name (all values 1 byte, Experimental)",
"Red (2)",
"Blue (3)",
"White (4)",
"Yellow (5,9)",
"Green (6h)",
"Coin (7h)",
"Man icon (8h)",
"Corrupted (10h)",
"——",
"Remove all color/icon",
f"__back__"
},nil,"Select the color you want (Experimental)"),[Link]({'Put your
current player name (case-sensitive)'},{[Link]},{'text'})
if CH then
if CH == 1 then player_color_choice = 1
elseif CH == 2 then player_color_choice = 2
elseif CH == 3 then player_color_choice = 3
elseif CH == 4 then player_color_choice = 4
elseif CH == 5 then player_color_choice = 5
elseif CH == 6 then player_color_choice = 6
elseif CH == 7 then player_color_choice = 7
elseif CH == 8 then player_color_choice = 8
elseif CH == 9 then player_color_choice = 10
---
elseif CH == 11 then player_color_choice = 0
elseif CH == 12 then MENU() end
if player_color_choice then
[Link](player_name[1],gg.TYPE_BYTE)
local t,removeOffset = [Link](5e3),0
[Link] = [Link](5e3)
if [Link]() == 0 then
toast('Can\'t find the player name, this cheat is still in
experimentation phase')
else
--if the chioce is 0, remove color/icons
if player_color_choice == 0 then
for i=1,#t do
--if within the custom color/icon range
if t[i].value >= 0 and t[i].value < 11 then
--remove it
t[i] = nil
removeOffset = removeOffset + 1
else
--and -removeOffset for the rest
t[i].address = (t[i].address -
removeOffset)
end
end
--else (numbers ranging from 2-10)
else
--this is where the problem arises, you know that the
player names might be more than 1?, will this vvv work? probably not, mostly.
--1. shift all addreses
for i=1,#t do
t[i].address = (t[i].address + 1)
end
--2. add value whatever
[Link](t,1,{
address = (t[1].address - 1),
freeze = false,
flags = gg.TYPE_BYTE,
value = player_color_choice
})
end
[Link] = [Link](t)
[Link](t)
toast('Color set to '..player_color_choice..'. PS: still in
experimental phase, might not work')
end
end
player_color_choice = nil
end
end
function cheat_walkwonkyness()
local CH = [Link]({
"Default (0.004)",
"ON (1)",
"OFF (0)",
"Restore",
"Clear memory buffer",
f"__back__"
},nil,"Walk Wonkyness (fancy-cheat)")
[Link](gg.REGION_CODE_APP) -- PS: 0.00999999978 > 0.3 for new version
if CH == 5 then MENU()
elseif CH == 1 then

handleMemOzt("walkwonkyness","0.004~1;0.00999999978::5",nil,gg.TYPE_FLOAT,1)
[Link](0.004,gg.TYPE_FLOAT)
toast("Walk Wonkyness Default")
elseif CH == 2 then

handleMemOzt("walkwonkyness","0.004;0.00999999978::5",nil,gg.TYPE_FLOAT,1)
[Link](1.004,gg.TYPE_FLOAT)
toast("Walk Wonkyness ON")
elseif CH == 3 then

handleMemOzt("walkwonkyness","1.004;0.00999999978::5",nil,gg.TYPE_FLOAT,1)
[Link](0,gg.TYPE_FLOAT)
toast("Walk Wonkyness OFF")
elseif CH == 4 then
[Link]([Link])
[Link] = nil
elseif CH == 5 then
[Link] = nil
end
end
function cheat_coloredtree()
local CH = [Link]({
"ON",
"OFF",
f"__back__"
},nil,"Colored trees\nThis will change some shader stuff (actually idk wut
this does lol) that affects trees")
if CH == 3 then MENU()
elseif CH == 1 then tmp={0.04,-999,"ON"}
elseif CH == 2 then tmp={-999,0.04,"OFF"} end
if tmp then
[Link](gg.REGION_CODE_APP)
local t = handleMemOzt("clrdtree","4.06176449e-39;0.06;"..tmp[1]..";-
0.04;-0.02::17",tmp[1],gg.TYPE_FLOAT,1)
if [Link]() == 0 then
toast("Can't find the specific set of number, report this issue
on my GitHub page: [Link]
else
[Link](tmp[2],gg.TYPE_FLOAT)
toast("Colored trees "..tmp[3])
end
end
end
function cheat_bigflamethroweritem()
local CH = [Link]({
"ON",
"OFF",
f"__back__"
},nil,"Big flamethrower (Item)\nPS: this will not make the flame burst
bigger")
if CH == 3 then MENU()
elseif CH == 1 then tmp={0.9,5.1403,"ON"}
elseif CH == 2 then tmp={5.1403,0.9,"OFF"} end
if tmp then
[Link](gg.REGION_CODE_APP)

handleMemOzt("bigflmthrwritm","0.4;0.2;"..tmp[1]..";24e3::13",tmp[1],gg.TYPE_FLOAT,
9)
if [Link]() == 0 then
toast("Can't find the specific set of number")
else
[Link](tmp[2],gg.TYPE_FLOAT)
toast("Big flamethrower "..tmp[3])
end
end
end
function cheat_autoshootrocket()
local CH,r,t = [Link]({
"ON",
"ON (Only if holding rocket, better to use with Rel0ad)",
"OFF",
f"__back__"
},nil,"Autoshoot rocket. PS:\n- This will make everyone shoot rocket no
matter what weapon they hold\n- To use this, use the machine gun, or use Rel0ad
(will be quirky if using this)")
if CH == 4 then MENU()
elseif CH == 1 then tmp={0,0,"ON"}
elseif CH == 2 then tmp={754,0,"ON"}
elseif CH == 3 then tmp={754,752,"OFF"} end
if tmp then
[Link](gg.REGION_CODE_APP)
[Link](5000,gg.TYPE_FLOAT)
t = [Link](1)
if [Link]() == 0 then
toast("Can't find the specific set of number")
else
t = t[1].address
r = {
{address=t+0x80,flags=gg.TYPE_WORD,value=tmp[1]},
{address=t+0x88,flags=gg.TYPE_WORD,value=tmp[2]}
}
[Link](r) -- Pretty non-Pb2Chts-standard variable there XD
[Link](r) -- Debugging
toast("Autoshoot rocket "..tmp[3])
end
r = nil
end
end
function cheat_shadowfx()
local CH = [Link]({
"OFF",
"ON",
f"__back__"
},nil,"Shadow effects\nInfo: this wont affect your game performance at all
(not making it lag/fast)\ndont use this for performance purpose :)")
if CH == 3 then MENU()
elseif CH == 1 then tmp={1e-4,-1.0012,"Disabled"}
elseif CH == 2 then tmp={-1.0012,1e-4,"Enabled"} end
if tmp then
[Link](gg.REGION_CODE_APP)
handleMemOzt("shadow",tmp[1]..";-5.96152076e27;-2.55751098e30;-
1.11590087e28;-5.59128595e24:17",tmp[1],gg.TYPE_FLOAT,1)
if [Link]() == 0 then
toast("Can't find the specific set of number, report this issue
on my GitHub page: [Link]
else
[Link](tmp[2],gg.TYPE_FLOAT)
toast("Shadow "..tmp[3])
end
end
end
function cheat_clrdpplsp()
local CH = [Link]({
"ON",
"OFF",
f"__back__"
},nil,"Colored people ESP (ExtraSensoryPerception. i guess this is X-Ray
Hack)\nPS: Not work on latest version")
if CH == 3 then MENU()
elseif CH == 1 then tmp={0.08,436,"ON"}
elseif CH == 2 then tmp={436,0.08,"OFF"} end
if tmp then
[Link](gg.REGION_CODE_APP)
handleMemOzt("clrdpplsp",tmp[1],nil,gg.TYPE_FLOAT,9)
if [Link]() == 0 then
toast("Can't find the specific set of number, report this issue
on my GitHub page: [Link]
else
[Link](tmp[2],gg.TYPE_FLOAT)
toast("ESP "..tmp[3])
end
end
end
function cheat_deleteingameplaytext()
[Link](gg.REGION_C_ALLOC)
tmp = {
"Toasted",
"Wasted",
"Nuked",
"Drowned",
"OBLITERATED",
"Your team won",
"You scored",
"You finished",
"You team scored",
"DEFEND",
"STEAL",
"BASE",
"SPLATTERED",
"DELIVER",
"DOMINATE",
"CAPTURE",
"KILL"
}
for i=1,#tmp do
[Link](":"..tmp[i])
[Link](99)
[Link](0,gg.TYPE_BYTE)
[Link]()
end
toast("In-gameplay-text cleared, to restore, you have to restart the game\
nPS: This might not work, idk why though..")
end
function cheat_reflectiongraphics()
local CH = [Link]({
"ON",
"OFF",
f"__back__"
},nil,"Reflection graphics\nWARNING: this can cause rendering issue that
requires restart to fix it\nDont forget to disable this before you get in/out-of
match\ni only recommend using this in offline mode so you can easily disable the
reflection graphics before getting out of match")
if CH == 3 then MENU()
elseif CH == 1 then tmp={49,1,"ON",true} -- << `,true` is trick from [Link]
to make lua better prepare a memory slot area whatevr... (will be used for
temporary result save below :)
elseif CH == 2 then tmp={1,49,"OFF",true} end
if CH and tmp[3] then
[Link](gg.REGION_OTHER)
if not [Link] then

[Link](144,gg.TYPE_DWORD,nil,nil,[Link]([Link].Common_RegionOt
her))
tmp[4]=[Link](5e3) for i=1,#tmp[4] do tmp[4][i].address =
(tmp[4][i].address + 0x8) tmp[4][i].flags = gg.TYPE_DWORD end
[Link](tmp[4]) [Link](50)
tmp[4]=[Link](5e3) for i=1,#tmp[4] do tmp[4][i].address =
(tmp[4][i].address - 0x4) tmp[4][i].flags = gg.TYPE_DWORD end
[Link](tmp[4]) [Link](tmp[1])
end
--specially crafted for above conditions
handleMemOzt("RfTgraphics",tmp[1],nil,gg.TYPE_DWORD,1)
if [Link]() == 0 then
toast("Can't find the specific set of number, report this issue
on my GitHub page: [Link]
else
[Link][1].value = tmp[2]
toast("Reflection Graphics "..tmp[3])
[Link]([Link])
end
end
t = nil
end
function cheat_explodepow()
local CH = [Link]({
"Modify Explosion power",
"——",
"Change current Explosion power",
"Restore previous value",
"Clear memory buffer",
f"__back__"
},nil,"Explosion power modifier\nCurrent: "..[Link].."\n")
if CH then
if CH == 6 then MENU()
elseif CH == 1 then
local CH = [Link]({'Put your explosion power. Lower is more
powerful\nSet to -1 to disable explosion\n PS:only applies to you'},
{[Link]},{'number'})
if CH and CH[1] then
EXPLOSION_POWER = CH[1]
else
cheat_explodepow()
end
---
elseif CH == 3 then
local CH = [Link]({'If you think the current explosion power
is wrong, or get reset due to quiting from script, you can change it here\n\nPut
the current explosion power'},{[Link]},{'number'})
if CH and CH[1] then [Link] = CH[1] end
cheat_explodepow()
elseif CH == 4 then
[Link] = nil
cheat_explodepow()
elseif CH == 5 then
[Link] = nil
cheat_explodepow()
end
if EXPLOSION_POWER then
[Link](gg.REGION_CODE_APP)

handleMemOzt("explodePower","15120W;"..[Link].."F::3",[Link],gg.T
YPE_FLOAT,1)
if [Link]() == 0 then
[Link],[Link] = nil,nil
toast("Can't find the specific set of number. if you
changed the explosion power and reopened the script, restore current number using
'Change current explosion power' menu")
else
[Link][1].value,[Link] =
EXPLOSION_POWER,EXPLOSION_POWER
toast("Explosion power modified to "..[Link])
[Link]([Link])
end
end
EXPLOSION_POWER = nil
end
end
function cheat_explodedir()
local CH = [Link]({
"Default (50000)",
"OFF (0)",
"Attractive/magnet (-50000)",
"Custom",
"——",
"Change current value",
"Restore previous value",
"Clear memory buffer",
f"__back__"
},nil,"Explode direction")
if CH == 8 then MENU()
elseif CH == 1 then XPLODIR_VAL = 5e4
elseif CH == 2 then XPLODIR_VAL = 0
elseif CH == 3 then XPLODIR_VAL = -5e4
elseif CH == 4 then
local CH = [Link]({'Input your custom damage intensity'})
if CH and CH[1] then
XPLODIR_VAL = CH[1]
else
cheat_explodedir()
end
---
elseif CH == 6 then
local CH = [Link]({'If you think the current Damage intensity is
wrong, or get reset due to quiting from script, you can change it here\n\nPut the
current Damage intensity'},{[Link]},{'number'})
if CH and CH[1] then [Link] = CH[1] end
cheat_explodedir()
elseif CH == 7 then
CH,[Link] = nil,nil
cheat_explodedir()
elseif CH == 8 then
CH,[Link] = nil,nil
cheat_explodedir()
end
if XPLODIR_VAL then
[Link](gg.REGION_CODE_APP)

handleMemOzt("explodeDir","1259902592D;"..[Link].."F::5",[Link],g
g.TYPE_FLOAT,9)
if [Link]() == 0 then
[Link],[Link] = nil,nil
toast("Can't find the specific set of number. if you changed the
value and reopened the script, restore the actual current number using 'Change
current value' menu")
else
for i=1,#[Link] do
[Link][i].value = XPLODIR_VAL
end
[Link] = XPLODIR_VAL
toast("Explosion direction is set to "..([Link] > 0 and
"default" or [Link] < 0 and "magnet" or [Link] == 0 and "none"))
[Link]([Link])
end
end
XPLODIR_VAL = nil
end
function cheat_prtclintrvl()
local CH = [Link]({
"No particle (0ms, increases FPS)",
"Faster (9ms)",
"Fast (20ms)",
"Default (120ms)",
"Slow (2s)",
"Custom",
"——",
"Change current interval variable",
"Restore previous value",
"Clear memory buffer",
f"__back__"
},nil,"Particle interval modifier\nCurrent: "..[Link])
if CH == 10 then MENU()
elseif CH == 1 then PARTICLE_INT = 0
elseif CH == 2 then PARTICLE_INT = 9
elseif CH == 3 then PARTICLE_INT = 20
elseif CH == 4 then PARTICLE_INT = 120
elseif CH == 5 then PARTICLE_INT = 2e3
elseif CH == 6 then
local CH = [Link]({'Input your custom interval value (in
miliseconds)'})
if CH and CH[1] then
PARTICLE_INT = CH[1]
else
cheat_prtclintrvl()
end
---
elseif CH == 8 then
local CH = [Link]({'If you think the current interval value is
wrong, or get reset due to quiting from script, you can change it here\n\nPut the
current interval'},{[Link]},{'number'})
if CH and CH[1] then [Link] = CH[1] end
cheat_prtclintrvl()
elseif CH == 9 then [Link] = nil cheat_prtclintrvl()
elseif CH == 10 then [Link] = nil cheat_prtclintrvl()
end
if PARTICLE_INT then
[Link](gg.REGION_CODE_APP)
handleMemOzt("PrtclAnmtnIntrvl","-
352321693D;"..[Link].."F::5",[Link],gg.TYPE_FLOAT
,1)
if [Link]() == 0 then
[Link],[Link] = nil,nil
toast("Can't find the specific set of number. if you changed the
interval and reopened the script, restore the actual current number using 'Change
current interval' menu")
else
for i=1,#[Link] do
[Link][i].value = PARTICLE_INT
end
[Link] = PARTICLE_INT
toast("Particle interval "..[Link].."ms")
[Link]([Link])
end
PARTICLE_INT = nil
end
end
function cheat_cardrift()
local CH = [Link]({
"Modify drifting speed",
"——",
"Change current drifting speed",
"Restore previous value",
"Clear memory buffer",
f"__back__"
},nil,"Drifting speed modifier\nCurrent: "..[Link].."\n")
if CH == 6 then MENU()
elseif CH == 1 then
local CH = [Link]({'How fast you want the drifting rotation? Higher
value is more powerful\nDefault:1 (1.3) [1;20]'},{[Link]},{'number'})
if CH and CH[1] then
DRIFT_SPEED = CH[1]..".3"
else
cheat_cardrift()
end
---
elseif CH == 3 then
local CH = [Link]({'If you think the current explosion power is
wrong, or get reset due to quiting from script, you can change it here\n\nPut the
current explosion power'},{[Link]},{'number'})
if CH and CH[1] then [Link] = CH[1] end
cheat_cardrift()
elseif CH == 4 then
[Link] = nil
cheat_cardrift()
elseif CH == 5 then
[Link] = nil
cheat_cardrift()
end
if DRIFT_SPEED then
[Link](gg.REGION_CODE_APP)
handleMemOzt("DrftSpd","120F;"..[Link].."F;-
712W::9",[Link],gg.TYPE_FLOAT,1)
if [Link]() == 0 then
[Link],[Link] = nil,nil
toast("Can't find the specific set of number. if you changed the
drift speed and reopened the script, restore current number using 'Change current
drift speed' menu")
else
[Link][1].value,[Link] = DRIFT_SPEED,DRIFT_SPEED
[Link]([Link])
toast("Explosion power modified to "..[Link])
end
end
DRIFT_SPEED = nil
end
function show_about()
local CH = [Link]({
f"__about__",
"——",
f"Disclaimmer",
f"License",
f"Credits",
f"__back__"
},nil,f"__about__")
if CH == 1 then alert(f"About_Text") show_about()
---
elseif CH == 3 then alert(f"Disclaimmer_Text") show_about()
elseif CH == 4 then alert(f"License_Text") show_about()
elseif CH == 5 then alert(f"Credits_Text") show_about()
elseif CH == 6 then CH = nil MENU() end
end
--————————————————————————————————--

--— Helper functions —————————————--


--- Its here to make stuff easier & faster
function [Link](t,dp)
local d,r,tab,tv = 0,'{\n',function(i)
str = ""
for i=1,i+(dp or 0) do str = str.."\t" end
return str
end
for k,v in pairs(t) do
r = r..tab(d)
if type(k) == 'string' then
r = r..k..' = '
end
tv = type(v)
if tv == 'table' then
r = r..[Link](v,(dp or 0)+1)
elseif tv == 'number' and #tostring(v) > 7 then
r = r..'0x'..[Link]("%x",v):gsub("%l",[Link])
elseif tv == 'boolean' or tv == 'number' then
r = r..tostring(v)
else
r = r..'"'..v..'"'
end
r,tv = r..',\n',nil
end
return r:sub(1,r:len()-2)..'\n'..tab(d-1)..'}'
end
function [Link](...)
--[[
merge 2 tables, just like [Link] on JS
first table will be replaced by new table...
also merge tables recursively
recommended only on object-like tables, but not on array-like tables
]]
local r = {}
for _,t in ipairs{...} do
for k,v in pairs(t) do
if type(r[k]) == "table" then
r[k] = [Link](r[k],v)
else
r[k] = v
end
end
end
return r
end
function [Link](t)
local t2 = {}
for k,v in pairs(t) do
if type(v) == "table" then
t2[k] = [Link](v) -- make sure ist not just some reference
shit (full no messing up factual deep clone)
else
t2[k] = v
end
end
return t2
end
function [Link](valuesTable,modifierTable)
--[[
Same as [Link] but optimized for GameGuardian values
this is used to "replace" (kindof) [Link]()
how to use:[Link]({ -- gg result, comes from searching
whatever number using [Link]()
{address:1,value:0,type:gg.TYPE_BYTE},
{address:2,value:2,type:gg.TYPE_QWORD},
{address:3,value:5,type:gg.TYPE_WORD},
},{value:1,type:gg.TYPE_DWORD,freeze:true})
{ {address:1,value:1,type:gg.TYPE_DWORD,freeze:true},
{address:2,value:1,type:gg.TYPE_DWORD,freeze:true},
} {address:3,value:1,type:gg.TYPE_DWORD,freeze:true},
]]
--for each result
for i=1,#valuesTable do
--for each contents in modifier table...
for k,v in pairs(modifierTable) do
--change valuesTable contents to new modifierTable contents
valuesTable[i][k] = modifierTable[k]
end
end
return valuesTable
end
function [Link](t1,t2)
--[[
Creates new table then
add table 1 and table 2
]]
for _,v in ipairs(t2) do
t1[#t1+1]=v
end
return t1
end
function searchWatchdog(msg,refineVal,mmBfr)
--[[

]]
if [Link]() < 2 then return [Link](1)
elseif msg then toast(msg.."\nClick GG Icon to abort the search") end
local prvVl,foundTheValue = [Link](100)
while not foundTheValue do
if [Link]() then [Link](false) foundTheValue = 1 end
[Link](refineVal)
if [Link]() > 0 then
foundTheValue = 1
else
[Link](prvVl)
end
sleep(100)
end
t = [Link](1)
prvVl,foundTheValue,memOzt[mmBfr],revert[mmBfr] = nil,nil,t,t
return t
end
function handleMemOzt(memOztName,val,valRefine,valTypes,dsrdRslts,memZones)
--[[
This function handles memory buffer related stuff by saving previous
result and return that instead the next time the same search is requested.
This optimization can only apply if the values not always changing.
Best for memory region that is huge and taking long time to search.
]]
--default configs
memZones = memZones or {0,-1}
dsrdRslts = dsrdRslts or 1
--if buffer is found
if memOzt[memOztName] then
--load previous result
toast('Previous result found, using previous result')
[Link](memOzt[memOztName])
else
--or search new ones
toast('No buffer found, creating new buffer')
[Link](val,valTypes,nil,nil,[Link](memZones))
--optionally refine if valRefine is defined
if valRefine then
[Link](valRefine,valTypes)
end
if [Link]() > 0 then
memOzt[memOztName],revert[memOztName] =
[Link](dsrdRslts),[Link](dsrdRslts)
end
end
return [Link](dsrdRslts)
end
function optimizeRange(range)
--[[
This optimizes used memory range automatically without using the config thing
This can work on every phone/enviroment/architecture (need testing)
]]
local t = {
[Link]([Link]('/data/app/'..[Link]..'-*/
[Link]')),
[Link]([Link]('/data/app/'..[Link]..'-*/
split_config.*.apk'))
}
local result = {
range[2],
range[1]
}
range[3] = range[2] - range[1] -- calculate the range difference (save it to
index 3, later index 3 is removed and table returned)
for i=1,#t do -- loop over all [Link] result tables
--If:
--the start is below minimum range
--or the end if above maximum range
--or range is more than the stated requirement
--or not Other/CodeApp region
if t[i].start < range[1] or
t[i]['end'] > range[2] or
(t[i]['end'] - t[i].start) > range[3] or
not (t[i].state == "O" or t[i].state == "Xa") then
--Remove it
t[i] = nil
else
--else, calculate the result...
result[1] = [Link](result[1],t[i].start)
result[2] = [Link](result[2],t[i]['end'])
end
end
[Link](range,3)
if not next(t) then -- if there {}?? on the table
return range -- return the previously given input
end
return result -- else, return the result.
end
function findEntityAnchr()
[Link]([Link])
local tmp,tmp0
if [Link] == "abjAutoAnchor" then
toast(f"eAchA_wait")
--this huge packs of "battery" below is basically searching "120W;20W;-
501~30000W;13W;2B::??" in accurately optimized way
--TODO: maybe we can somehow allow shooting/hold pistol for split second? by
shifting the searching order (but it cant be the one with "A;B" or "A~B", because
group/range searching is slower than normal search)

[Link](120,gg.TYPE_WORD,nil,nil,[Link]([Link].Common_RegionOth
er)) -- 1/6 shooting state
tmp=[Link](5e3)for i=1,#tmp do tmp[i].address = (tmp[i].address
+ 0x48) end [Link](tmp) [Link](32000)
-- 2/6 (random anchor)
tmp=[Link](5e3)for i=1,#tmp do tmp[i].address = (tmp[i].address
+ 0xA7) tmp[i].flags = gg.TYPE_BYTE end [Link](tmp) [Link](2)
-- 3/6 (ControlCode 2)
tmp=[Link](5e3)for i=1,#tmp do tmp[i].address = (tmp[i].address
- 0xC7) tmp[i].flags = gg.TYPE_QWORD end [Link](tmp)
[Link](55834574848) -- 4/6 (HoldWeapon 0;0;13;0::W)
tmp=[Link](5e3)for i=1,#tmp do tmp[i].address = (tmp[i].address
- 0xC) tmp[i].flags = gg.TYPE_WORD end [Link](tmp) [Link]('-
501~30000') -- 5/6 (Health -501+30000(because carhealth&nostealcar cheat))
tmp=[Link](5e3)for i=1,#tmp do tmp0 =
[Link]("%x",tmp[i].address) if tmp0:find('508$') or tmp0:find('d08$') or
tmp0:find('5f4$') or tmp0:find('df4$') then tmp[i].address = (tmp[i].address - 0x8)
else tmp[i] = nil end end [Link](tmp) [Link](20) -- 6/6 (Anchor
20)
tmp=[Link](5e3)
if [Link]() > 0 then
if [Link]() > 1 then
toast(f("eAchA_dupe",[Link]()))
for i=1,#tmp do tmp[i].address = (tmp[i].address + 0x14)
tmp[i].flags = gg.TYPE_QWORD end [Link](tmp) sleep(2e3) [Link](0)
-- refine pistol
tmp=[Link](1)
if tmp[1] then -- just in case nothing found and crash
happened
tmp0=tmp[1].address - 0x14 -- back to anchor
end
else
tmp0=tmp[1].address
end
tmp=nil
[Link]()
return tmp0
end
elseif [Link] == "holdWeapon" then
toast(f"eAchB_hold1")
sleep(1e3)

[Link](13,gg.TYPE_DWORD,nil,nil,[Link]([Link].Common_RegionOth
er))
t = [Link](200)
for i=1,#t do
tmp0 = [Link]("%x",t[i].address)
if not (tmp0:find('518$') or tmp0:find('d18$')) then t[i] = nil
end
end
while [Link]() > 1 do
toast(f"eAchB_hold2")
sleep(2e3)
[Link](0)
t = [Link](200)
if [Link]() == 1 then break
elseif [Link]() == 0 then return
elseif [Link]() == 2 then
t = [Link](2)
if t[1].value == t[2].value then t = {t[1]} break end
end
toast(f"eAchB_hold1")
sleep(2e3)
[Link](13)
t = [Link](200)
if [Link]() == 1 then break
elseif [Link]() == 0 then return
elseif [Link]() == 2 then
t = [Link](2)
if t[1].value == t[2].value then t = {t[1]} break end
end
end
tmp,tmp0=nil,nil
[Link]()
return t[1].address - 0x18
else
toast(f("ErrorToastNotice","invalidConf"))
print("[[Link]]: Configuration value
for \"[Link]\" ("..[Link]..") is
invalid.\n Possible values: abjAutoAnchor, holdWeapon")
log("Your Configuration:\n",cfg)
end
end
function exit()
saveConfig()
[Link]()
print(f"Exit_ThankYouMsg")
[Link]()
end
function suspend()
[Link]({
cfg=cfg,
memOzt=memOzt,
pid=[Link],
revert=revert
},susp_file)
print(f"Suspend_Text")
[Link]()
end
function update_language()
--[[
Parse language strings...
]]
if [Link] == "auto" then
-- Only English and Indonesian are supported (for now)
curr_lang = [Link]()
if curr_lang ~= "in" then
curr_lang = "en_US"
end
else
curr_lang = [Link]
end
end
function saveConfig()
[Link] = [Link]
log("[saveConfig] Saving configuration to "..cfg_file)
[Link](cfg_file,'w'):write([[-- This is the configuration file for
Payback2_CHEATus.
-- You can customize any settings and parameters you want here (w/o messing that
'HUGE' script)
-- Make sure you have a backup of this config file, because even a tiny bit of
error/typo here results in config reader failed and your config file got reset
-- Refer to my GitHub Wiki for some explanation (TODO)
-- btw, please ignore the return thingy below :)
return ]]..[Link](cfg)):close()
end
function loadConfig()
--[[
Loads configuration file.
]]
cfg = {
memZones={
Common_RegionOther={0xB0000000,0xCFFFFFFF},
Common_RegionOtherB={0xB0000000,0xBFFFFFFF}
},
memRange={
general = (gg.REGION_C_BSS | gg.REGION_ANONYMOUS |
gg.REGION_OTHER)
},
clearAllList=false,
enableAutoMemRangeOpti=true,
enableLogging=false,
entityAnchrSearchMethod="abjAutoAnchor",
Language="auto",
PlayerCurrentName=":Player",
PlayerCustomName=":CoolFoe",
VERSION="2.2.7"
}
lastCfg = cfg
local cfg_load = loadfile(cfg_file)
if cfg_load then
cfg_load = cfg_load()
cfg_load.VERSION = [Link]
cfg = [Link](cfg,cfg_load)
lastCfg = [Link](cfg) -- deep-clone
else
toast("No configuration files detected, Creating new one... 💾️\nHi
There! 👋️ Looks like You're new here.")
saveConfig()
end
cfg_load = nil
[Link] = [Link]
update_language()
end
function restoreSuspend()
--[[
Restore current session from suspend file and remove it afterwards
]]
local susp = loadfile(susp_file)
if susp then
susp = susp()
[Link](susp_file)
if [Link] == [Link] then
toast(f"Suspend_Detected")
cfg = [Link]
revert = [Link]
memOzt = [Link]
end
end
susp = nil
end
function log(...)if [Link] then print("[Debug]",...)end end
print = (function() -- convert table to readable format (with addition of
converting 0xXXXXXXXX+ addreses
local printLn,tmp = print,{}
return function(...)
tmp = {...}
for i=1,#tmp do
if type(tmp[i]) == "table" then
tmp[i] = [Link](tmp[i])
end
end
return printLn([Link](tmp))
end
end)()
--————————————————————————————————--

--— Initialization ———————————————--


--- This is where everything is prepared
--- before the final MENU() call is happened
--generic functions
alert=function(str,...)
[Link](f(str),...)
end
toast=function(str,fastmode)
if fastmode == nil then fastmode = true end
[Link](str,fastmode)
end
sleep=[Link]
isVisible=[Link]
[Link]=function(checkDuration,visible,showNotice)
local checkDuration = checkDuration
if showNotice then toast(showNotice) end -- "Script paused. Close the GG GUI
to continue..."
if visible == nil then visible = true end
if not checkDuration then checkDuration = 500 end
[Link](visible)
showNotice = nil
while isVisible() == visible do sleep(checkDuration) end
[Link](false)
end
curVal={
PstlSgKnckbck=0.25,
CrDfltHlth=125,
DmgIntnsty=300,
DrftSpd=1.3,
BigBody=5.9,
XplodPow=1e7,
XplodDir=5e4,
PrtclAnmtnIntrvl=120
}

-- Load settings and languages


loadConfig()

-- Run automatic memory range optimization (needs testing)


if [Link] then
[Link].Common_RegionOther =
optimizeRange([Link].Common_RegionOther)
[Link].Common_RegionOtherB =
optimizeRange([Link].Common_RegionOtherB)
end

-- Modify [Link] (if enabled in config), to only remove Pb2Chts-related


values
if not [Link] then
[Link] = (function()
local clearList,tmp = [Link]
return function()
tmp = [Link]()
for i=1,#tmp do
if tmp[i].name and tmp[i].name:find"Pb2Chts" then
tmp[i] = nil
end
end
clearList()
[Link](tmp)
tmp = nil
end
end)()
end

-- Initialize language
local lang = {
en_US={
Automatic = "Automatic",
About_Text = "Payback2 CHEATus, created by ABJ4403.\nThis cheat is
Open-source on GitHub (unlike any other cheats some cheater bastards not showing at
all! they make it beyond proprietary)\nGitHub:
[Link] issues here:
[Link] GPLv3\nTested on:\n-
Payback2 v2.104.12.4\n- GameGuardian v101.0\nThis cheat is part of FOSS (Free and
Open-Source Software)",
Credits = "Credits",
Credits_Text = "Credit:\n+ mdp43140 - Main Contributor\n+ Mangyu -
Original inspiration\n+ MisterCuteX - Mega Explosion,Respawn Hack\n+ tehtmi -
unluac Creator (and decompile helper)\n+ Crystal_Mods100x - ICE Menu\n+ Latic AX &
ToxicCoder - providing removed script via YT & MediaFire\n+ AGH - Wall Hack,Car
Health GG Values\n+ GKTV - PB2 GG script (wall hack,big body,colored tree,big
flamethower item,shadow,esp)\n+ XxGabriel5HRxX - Car wheel height and acceleration
GG Offsets\n+ JokerGGS - No Blast Damage,Rel0ad,Rel0ad
grenade,RTX,Immortal,Float,Ragdoll,C4,Autoshoot rocket Drawing GG Values\n+
antonyROOTlegendMAXx - Transparent vehicle GG Offsets.\n+ MinFRE - 6 star police GG
Offsets.",
Disclaimmer = "Disclaimmer (please read)",
Disclaimmer_Text = "DISCLAIMMER:\n Please DO NOT misuse the script to harm other
Payback2 players.\n I'm NOT RESPONSIBLE for your action with using this
script.\n Remember to keep your patience out of other players.\n i recommend
ONLY using this script in offline mode.\n I made this because no one would share
their cheat script.",
Exit_ThankYouMsg = " Report a bug:
[Link] Discussion: at
[Link] FAQ:
[Link]
License = "License",
License_Text = "Payback2 CHEATus, Cheat LUA Script for GameGuardian\n©
2021-2023 ABJ4403\n\nThis program is free software: you can redistribute it and/or
modify\nit under the terms of the GNU General Public License as published by\nthe
Free Software Foundation, either version 3 of the License, or\n(at your option) any
later version.\n\nThis program is distributed in the hope that it will be useful,\
nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more
details.\n\nYou should have received a copy of the GNU General Public License\
nalong with this program. If not, see [Link]
Settings = "Settings",
Suspend = "Suspend",
Suspend_Detected = "Session file detected, continuing from suspend...",
Suspend_Text = "You quit the script using suspend option. you can
continue your current session by relaunching the script.",
Title_Version = "Payback2 CHEATus v"..[Link]..", by ABJ4403.",
ErrorToastNotice = "An error occured (%s): Exit out of script and see print log for
more details.",
Cheat_WallHack = "Wall Hack",
Cheat_WallHack_Notice = "Warn:\n- Careful w/ holes behind walls\n- using the GKTV
wallhack is recommended cause its wonky physics can prevent helicopter from
falling",
Cheat_C4AutoRig = "C4 auto-trigger",
Cheat_GodModes = "God Modes",
Cheat_GodModes_Notice = "WARN: DON'T USE THIS TO HARM INNOCENT PLAYERS IN ANY
WAY!!",
Cheat_CSD = "Client-side cheats",
Cheat_CSD_Notice = "Some cheats won't affect other player",
eAchA_wait = "Please wait... don't shoot, hold pistol 🔫",
eAchA_dupe = "%s Duplicate results! hold knife 🔪",
eAchB_hold1 = "Hold your pistol 🔫",
eAchB_hold2 = "Hold your knife 🔪",
},
['in']={
Automatic = "Otomatis",
About_Text = "Payback2 CHEATus, dibuat oleh ABJ4403.\nCheat ini
bersumber-terbuka (Tidak seperti cheat lain yang cheater tidak menampilkan sama
sekali! mereka membuatnya diluar proprietri)\nGitHub:
[Link] isu disini:
[Link] GPLv3\nDiuji di:\n-
Payback2 v2.104.12.4\n- GameGuardian v101.0\nCheat ini termasuk bagian dari FOSS
(Perangkat lunak Gratis dan bersumber-terbuka)",
Credits = "Kredit",
Credits_Text = "Kredit:\n+ mdp43140 - Kontributor Utama\n+ Mangyu -
Inspirasi original\n+ MisterCuteX - Mega Explosion,Respawn Hack\n+ tehtmi - Pembuat
unluac (dan helper dekompilasi)\n+ Crystal_Mods100x - Menu ICE\n+ Latic AX &
ToxicCoder - menyediakan skrip yang dihapus via YT & MediaFire\n+ AGH - Value
WallHack,CarHealth GG\n+ GKTV - Skrip GG Payback2 (wall hack,big body,pohon
berwarna,item flamethower besar,bayangan,esp)\n+ XxGabriel5HRxX - offset Tinggi
roda mobil dan akselerasi mobil GG\n+ JokerGGS - Value No Blast
Damage,Rel0ad,Rel0ad grenade,RTX,Immortal,Float,Ragdoll,C4 Drawing,Autoshoot roket
GG\n+ antonyROOTlegendMAXx - Offset kendaraan tembus pandang GG.\n+ MinFRE - Offset
6 star police GG.",
Disclaimmer = "Disklaimmer (mohon untuk dibaca)",
Disclaimmer_Text = "DISKLAIMMER:\n TOLONG JANGAN menyalahgunakan skrip ini untuk
menjahili pemain lain.\n Saya TIDAK BERTANGGUNG JAWAB atas kerusakan yang anda
sebabkan karena MENGGUNAKAN skrip ini.\n Ingat untuk menjaga kesabaran anda dari
pemain lain.\n Saya merekomendasikan menggunakan skrip ini HANYA di mode
offline.\n Saya membuat ini karena tidak ada orang lain yang membagikan skrip
cheat mereka.",
Exit_ThankYouMsg = " Laporkan bug:
[Link] Diskusi:
[Link] Pertanyaan yang sering
ditanyakan: [Link]
License = "Lisensi",
License_Text = "Payback2 CHEATus, Cheat Skrip LUA untuk GameGuardian\n©
2021-2023 ABJ4403\n\nProgram ini adalah perangkat lunak gratis: Anda dapat
mendistribusikan kembali dan/atau memodifikasi\ndi bawah ketentuan lisensi publik
umum GNU seperti yang diterbitkan oleh\nFree Software Foundation, baik lisensi
versi 3, atau\n(pada opsi Anda) versi yang lebih baru.\n\nProgram ini
didistribusikan dengan harapan bahwa itu akan berguna,\nTETAPI TANPA JAMINAN;
bahkan tanpa jaminan tersirat dari\nKELAYAKAN JUAL atau KELAYAKAN UNTUK KEGUNAAN
TERTENTU. Lihat\nGNU Lisensi Publik Umum untuk detail lebih lanjut.\n\nAnda
seharusnya menerima salinan Lisensi Publik Umum GNU\nbersama dengan program ini.
Jika tidak, lihat [Link]
Settings = "Pengaturan",
Suspend = "Suspensi",
Suspend_Detected = "File sesi terdeteksi, melanjutkan dari suspensi...",
Suspend_Text = "Anda keluar dari skrip melalui opsi suspensi. Anda bisa
melanjutkan sesi saat ini dengan meluncurkan skrip ini.",
Title_Version = "Payback2 CHEATus v"..[Link]..", oleh ABJ4403.",
ErrorToastNotice = "Galat terjadi (%s): Keluar dari skrip dan lihat log print untuk
lebih detail.",
Cheat_WallHack = "Tembus Dinding",
Cheat_WallHack_Notice = "Perhatian:\n- Hati-hati dengan lubang dibelakang dinding\
n- Saat menggunakan helikopter, direkomendasikan mengunnakan cheat tembus dinding
GKTV karena fisik wonkynya bisa mencegah helikopter jatuh ke void",
Cheat_C4AutoRig = "Auto-rig C4",
Cheat_GodModes = "Mode tuhan",
Cheat_GodModes_Notice = "PERINGATAN: JANGAN MENGGUNAKAN INI UNTUK MENCURANGI PEMAIN
LAIN DENGAN CARA APAPUN!!",
Cheat_CSD = "Cheat sisi-klien",
Cheat_CSD_Notice = "Beberapa cheat tidak akan memengaruhi pemain lain",
eAchA_wait = "Mohon tunggu... jangan menembak, pegang pistol 🔫",
eAchA_dupe = "%s Hasil duplikat! pegang pisau 🔪",
eAchB_hold1 = "Pegang pistol 🔫",
eAchB_hold2 = "Pegang pisau 🔪",
}
}
function f(i,...)return [Link](lang[curr_lang][i]or i,...)end

-- Restore suspend file if any


restoreSuspend()

--detect if gg gui was open/floating gg icon clicked. if so, close that & show our
menu.
while true do
while not isVisible()do sleep(100)end
[Link](false)
MENU()
[Link]()
collectgarbage()
end
--————————————————————————————————--

You might also like