local function setvalue(address, flags, value, freeze) if address == 0 then return end local item = {{ address = address, flags = flags, value = value, freeze = freeze or false }} if not freeze then gg.setValues(item) end gg.addListItems(item) end local function getvalue(address, flags) if address == 0 then return end gg.addListItems({{address = address, flags = flags}}) end local function autovalue(address, flags, _o, _v, freeze) if address == 0 then return end local item = {{address = address, flags = flags}} local val = gg.getValues(item)[1].value item[1].value = math.abs(val - _o) < 1e-7 and _v or _o item[1].freeze = freeze or false if not freeze then gg.setValues(item) end gg.addListItems(item) end local function readD(address) return gg.getValues({{address = address, flags = 4}})[1].value end local function RDI(address) return readD(address) & 0xFFFFFFFF end local function RQI(address) return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value end local function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/.so$') for _, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local _t = ti_bit and 32 or 4 local base = gg.getRangesList(N_So[1])[1] if not base then return nil end local t = {{address = base.start + Offset[1], flags = _t}} if #Offset > 1 then for i = 2, #Offset do local res = gg.getValues(t) t = {} for _, v in pairs(res) do if not ti.x64 then v.value = v.value & 0xFFFFFFFF else v.value = v.value & 0xFFFFFFFFFF end table.insert(t, {address = v.value + Offset[i], flags = _t}) end end end return t[#t].address end local addr = Get_Address(t_So, t_Offset, _bit) return addr and string.format('0x%X', addr) or 0 end local function PS() end local function A1() local UE4_BSS = {"libUE4.so:bss", "Cb"} local UE4_SO = {"libUE4.so"} -- 伤害显示 local ptr = S_Pointer(UE4_BSS, {0xAD0990,0x30,0x6888}, true) gg.setValues({{address = ptr, flags = 4, value = 65536}}) ptr = S_Pointer(UE4_SO, {0xD2F9644}, true) setvalue(ptr, 4, -721215457, false) -- 地皮锁定逻辑 local b = {"libUE4.so:bss","Cb"} local p = function(o) return S_Pointer(b, o, true) end local f = function(m, v) local check = p({0xAD0990,0x30,0x20,0xA0,m,0x6B8,0x1c8}) if gg.getValues({{address=check, flags=16}})[1].value == v then local s = p({0xAD0990,0x30,0x20,0xA0,m,0x6B8,0x0}) local a = tonumber(s) or tonumber(s:gsub("0x",""),16) gg.setValues({{address = p({0xAD0990,0x30,0x34A0,0x670}), flags=32, value=a}}) end end -- 地皮检测 f(0x10, 1000000256.0) f(0xA0, 2000000512.0) f(0x118,1000000256.0) f(0x140,2000000512.0) ptr = S_Pointer(UE4_SO, {0xD359B6C}, true) setvalue(ptr, 16, 8.95671814e-21, false) ptr = S_Pointer(UE4_SO, {0x8415B5C}, true) setvalue(ptr, 4, -698416192, false) gg.clearList() end local function A2() local ptr = S_Pointer({"libUE4.so"}, {0xD359B6C}, true) setvalue(ptr, 16, 8.58285189e-21, false) end local function A3() local UE4 = {0xAD0990,0x30,0x34A0,0x660,0x280} local UE5 = {0xAD0990,0x30,0x34A0,0x660,0x28C} local UE6 = {0xAD0990,0x30,0x34A0,0x658,0xC38} while true do gg.sleep(5) local flag = RDI(S_Pointer({"libUE4.so"}, {0x16B61990,0x30,0x34A0,0x35D0}, true)) == 1 setvalue(S_Pointer({"libUE4.so"}, {0x16724EC4}, true), 4, flag and 1 or 0, false) gg.setValues({ {address = S_Pointer({"libUE4.so:bss","Cb"}, UE4, true), flags=16, value=flag and -999 or 2}, {address = S_Pointer({"libUE4.so:bss","Cb"}, UE5, true), flags=16, value=flag and 500 or 2048}, {address = S_Pointer({"libUE4.so:bss","Cb"}, UE6, true), flags=16, value=flag and 0.5 or 1}, }) end end local function A4() local ptr = S_Pointer({"libUE4.so:bss", "Cb"}, {0xACB338,0x4}, true) gg.setValues({{address = ptr, flags = 4, value = 0}}) end local function A5() local ptr = S_Pointer({"libUE4.so:bss", "Cb"}, {0xACB338,0x4}, true) gg.setValues({{address = ptr, flags = 4, value = 100000000}}) end local function A6() local ptr = S_Pointer({"libUE4.so:bss", "Cb"}, {0xAD0990,0x30,0x34A0,0x1198,0x2F4}, true) gg.setValues({{address = ptr, flags = 16, value = 105}}) end local function kk() os.exit() end local function Main() local menu = gg.multiChoice({ "加速(开)", "加速(关)", "提速", "除草树", "恢复地面", "广角", "退出脚本" }, nil, os.date"1.37.10") if not menu then return end if menu[1] then A1() end if menu[2] then A2() end if menu[3] then A3() end if menu[4] then A4() end if menu[5] then A5() end if menu[6] then A6() end if menu[7] then kk() end end -- 常驻监听 local XGCK = -1 while true do if gg.isVisible(true) then XGCK = 1 gg.setVisible(false) end gg.clearResults() if XGCK == 1 then Main() XGCK = -1 end end