gg = gg or {} gg.TYPE_DWORD = 4 gg.TYPE_FLOAT = 16 gg.TYPE_QWORD = 32 xgsl = 0 xgjg = false function split(str, sep) local t = {} local i = 1 while true do local p = string.find(str, sep, i) if not p then table.insert(t, string.sub(str, i)) break end table.insert(t, string.sub(str, i, p-1)) i = p + string.len(sep) end return t end function xgxc(base, list) for i, v in ipairs(list) do local addr = base + v.offset if v.freeze then gg.addListItems({{address=addr, flags=v.type, value=v.value, freeze=true}}) else gg.setValues({{address=addr, flags=v.type, value=v.value}}) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(search_config, modify_list) gg.clearResults() gg.setRanges(search_config[1].memory) gg.searchNumber(search_config[3].value, search_config[3].type) if gg.getResultCount() == 0 then return end gg.refineNumber(search_config[3].value, search_config[3].type) gg.refineNumber(search_config[3].value, search_config[3].type) gg.refineNumber(search_config[3].value, search_config[3].type) if gg.getResultCount() == 0 then return end local results = gg.getResults(999999) local count = math.min(gg.getResultCount(), 999999) xgsl = 0 xgjg = false for i = 1, count do local base_addr = results[i].address local ok = true for j = 4, #search_config do local cfg = search_config[j] local val = gg.getValues({{ address = base_addr + cfg.offset, flags = cfg.type }})[1].value local parts = split(tostring(cfg.lv) .. ";" .. tostring(val), ";") if parts[1] ~= parts[2] then ok = false break end end if ok then xgxc(base_addr, modify_list) end end end local function interruptThread(thread) if thread then pcall(function() thread:interrupt() end) end end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, 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 S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end draw.text("小熊猫[自制版]",220,165) draw.setSize(48) draw.setColor("#00FFFF") function A1() gg.clearResults() gg.setRanges(32) gg.searchNumber("1054615798", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) if gg.getResultCount() == 0 then else gg.searchNumber("1054615798",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1) gg.getResults(200) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() end gg.alert("开启成功") end function A2() gg.clearResults() gg.setRanges(32) gg.searchNumber("2.3509887e-38", gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultCount()) if not res or #res < 1 then return end for i, v in ipairs(res) do local p1 = v.address local val20 = gg.getValues({{address = p1 + 0x20, flags = gg.TYPE_FLOAT}})[1].value if math.abs(val20 - 0.3) < 0.0001 then gg.addListItems({{address = p1 + 0x18, flags = gg.TYPE_FLOAT, value = 1000, freeze = true}}) gg.addListItems({{address = p1 + 0x1C, flags = gg.TYPE_FLOAT, value = 1000, freeze = true}}) gg.addListItems({{address = p1 + 0x20, flags = gg.TYPE_FLOAT, value = 6, freeze = true}}) return end end gg.alert("开启成功") end function A3() local qmnb= { {['memory']=32}, {['name']=''}, {['value']=130.0,['type']=16}, {['lv']=262.0,['offset']=-8,['type']=16} } local qmxg={ {['value']=3000,['offset']=0xC,['type']=16,['freeze']=true}, {['value']=3000,['offset']=0x10,['type']=16,['freeze']=true} } xqmnb(qmnb,qmxg) gg.alert("开启成功") end function A4() local qmnb= { {['memory']=32}, {['name']=''}, {['value']=245.0,['type']=16}, {['lv']=452.0,['offset']=-8,['type']=16} } local qmxg={ {['value']=3000,['offset']=0xC,['type']=16,['freeze']=true}, {['value']=3000,['offset']=0x10,['type']=16,['freeze']=true} } xqmnb(qmnb,qmxg) gg.alert("开启成功") end function A5() local qmnb= { {['memory']=32}, {['name']=''}, {['value']=383.0,['type']=16}, {['lv']=1024.0,['offset']=-8,['type']=16} } local qmxg={ {['value']=3000,['offset']=0x10,['type']=16,['freeze']=true}, {['value']=3000,['offset']=0x14,['type']=16,['freeze']=true} } xqmnb(qmnb,qmxg) gg.alert("开启成功") end function A6() local qmnb={ {['memory']=32}, {['name']=''}, {['value']=352.0,['type']=16}, {['lv']=105.5,['offset']=8,['type']=16} } local qmxg={ {['value']=3000.0,['offset']=0xC,['type']=16,['freeze']=true}, {['value']=3000.0,['offset']=0x10,['type']=16,['freeze']=true} } xqmnb(qmnb,qmxg) local qmnb={ {['memory']=32}, {['name']=''}, {['value']=352.0,['type']=16}, {['lv']=105.5,['offset']=8,['type']=16} } local qmxg={ {['value']=3000.0,['offset']=0x14,['type']=16,['freeze']=true}, {['value']=3000.0,['offset']=0x18,['type']=16,['freeze']=true} } xqmnb(qmnb,qmxg) gg.alert("开启成功") end function A7() local qmnb={ {['memory']=32}, {['name']=''}, {['value']=2.5,['type']=16}, {['lv']=55.0,['offset']=-8,['type']=16} } local qmxg={ {['value']=120,['offset']=-8,['type']=16,['freeze']=true}, {['value']=120,['offset']=-4,['type']=16,['freeze']=true} } xqmnb(qmnb,qmxg) gg.alert("开启成功") end function A8() gg.clearResults() gg.setRanges(32) gg.searchNumber(0.26666, gg.TYPE_FLOAT) local res = gg.getResults(1) if not res or #res < 1 then return end local p1 = res[1].address local v1 = gg.getValues({{address = p1 - 0x278, flags = gg.TYPE_QWORD}}) local p2 = v1[1].value if p2 == 0 then return end local v2 = gg.getValues({{address = p2 + 0x18, flags = gg.TYPE_QWORD}}) local p3 = v2[1].value if p3 == 0 then return end local v3 = gg.getValues({{address = p3 + 0x30, flags = gg.TYPE_QWORD}}) local p4 = v3[1].value if p4 == 0 then return end local real = p4 + 0x34 gg.setValues({{address = real, flags = gg.TYPE_FLOAT, value = 0.1}}) local res = gg.getResults(1) if not res or #res < 1 then return end local p1 = res[1].address local v1 = gg.getValues({{address = p1 - 0x278, flags = gg.TYPE_QWORD}}) local p2 = v1[1].value if p2 == 0 then return end local v2 = gg.getValues({{address = p2 + 0x18, flags = gg.TYPE_QWORD}}) local p3 = v2[1].value if p3 == 0 then return end local v3 = gg.getValues({{address = p3 + 0x48, flags = gg.TYPE_QWORD}}) local p4 = v3[1].value if p4 == 0 then return end local real = p4 + 0x34 gg.setValues({{address = real, flags = gg.TYPE_FLOAT, value = 0.1}}) local res = gg.getResults(1) if not res or #res < 1 then return end local p1 = res[1].address local v1 = gg.getValues({{address = p1 - 0x278, flags = gg.TYPE_QWORD}}) local p2 = v1[1].value if p2 == 0 then return end local v2 = gg.getValues({{address = p2 + 0x18, flags = gg.TYPE_QWORD}}) local p3 = v2[1].value if p3 == 0 then return end local v3 = gg.getValues({{address = p3 + 0x60, flags = gg.TYPE_QWORD}}) local p4 = v3[1].value if p4 == 0 then return end local real = p4 + 0x34 gg.setValues({{address = real, flags = gg.TYPE_FLOAT, value = 0.1}}) gg.alert("开启成功") end function C1() gg.clearResults() gg.setRanges(32) gg.searchNumber("30554470", gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultCount()) if not res or #res < 1 then return end for i, v in ipairs(res) do local p1 = v.address local check_5C = gg.getValues({{address = p1 - 0x5C, flags = gg.TYPE_FLOAT}}) local val_5C = check_5C[1].value local check_9C = gg.getValues({{address = p1 - 0x9C, flags = gg.TYPE_FLOAT}}) local val_9C = check_9C[1].value local check_4 = gg.getValues({{address = p1 + 0x4, flags = gg.TYPE_FLOAT}}) local val_4 = check_4[1].value local check_A0 = gg.getValues({{address = p1 + 0xA0, flags = gg.TYPE_FLOAT}}) local val_A0 = check_A0[1].value local check_694 = gg.getValues({{address = p1 - 0x694, flags = gg.TYPE_FLOAT}}) local val_694 = check_694[1].value local check_33C = gg.getValues({{address = p1 + 0x33C, flags = gg.TYPE_FLOAT}}) local val_33C = check_33C[1].value if math.abs(val_5C - 0.05) < 0.0001 and math.abs(val_9C - 1) < 0.0001 and math.abs(val_4 - 1) < 0.0001 and math.abs(val_A0 - 1) < 0.0001 and math.abs(val_694 - 1) < 0.0001 and math.abs(val_33C - 1) < 0.0001 then gg.setValues({{address = p1 - 0x9C, flags = gg.TYPE_FLOAT, value = 100000}}) gg.setValues({{address = p1 + 0x4, flags = gg.TYPE_FLOAT, value = 100000}}) gg.setValues({{address = p1 + 0xA0, flags = gg.TYPE_FLOAT, value = 0}}) gg.setValues({{address = p1 - 0x694, flags = gg.TYPE_FLOAT, value = 0}}) gg.setValues({{address = p1 + 0x33C, flags = gg.TYPE_FLOAT, value = 0}}) end end gg.clearResults() gg.setRanges(32) gg.searchNumber(0.03333330154, gg.TYPE_FLOAT) local res = gg.getResults(1000) if not res or #res < 1 then return end for i, v in ipairs(res) do local p1 = v.address local v1 = gg.getValues({{address = p1 - 0x8, flags = gg.TYPE_FLOAT}}) local p2 = v1[1].value if p2 == 1 then local real = p1 - 0x8 gg.addListItems({{address = real, flags = gg.TYPE_FLOAT, value = 3, freeze = true}}) end end gg.alert("开启成功") end function C2() gg.clearResults() gg.setRanges(32) gg.searchNumber(0.7, gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultCount()) if not res or #res < 1 then return end for i, v in ipairs(res) do local p1 = v.address local v4 = gg.getValues({{address = p1 + 0x4, flags = gg.TYPE_FLOAT}}) local val4 = v4[1].value local v_neg4 = gg.getValues({{address = p1 - 0x4, flags = gg.TYPE_FLOAT}}) local val_neg4 = v_neg4[1].value if math.abs(val4 - 0.25) < 0.0001 and math.abs(val_neg4 - 1.7) < 0.0001 then gg.setValues({{address = p1 - 0x4, flags = gg.TYPE_FLOAT, value = 6}}) end end gg.clearResults() gg.setRanges(32) gg.searchNumber(0.04, gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultCount()) if not res or #res < 1 then return end for i, v in ipairs(res) do local p1 = v.address local v_neg8 = gg.getValues({{address = p1 - 0x8, flags = gg.TYPE_FLOAT}}) local val_neg8 = v_neg8[1].value local v_neg10 = gg.getValues({{address = p1 - 0x10, flags = gg.TYPE_FLOAT}}) local val_neg10 = v_neg10[1].value if math.abs(val_neg8 - 0.3) < 0.0001 and math.abs(val_neg10 - 2) < 0.0001 then gg.setValues({{address = p1 - 0x10, flags = gg.TYPE_FLOAT, value = 6}}) end end gg.clearResults() gg.setRanges(32) gg.searchNumber("30554470", gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultCount()) if not res or #res < 1 then return end for i, v in ipairs(res) do local p1 = v.address local check_4 = gg.getValues({{address = p1 + 0x4, flags = gg.TYPE_FLOAT}}) local val_4 = check_4[1].value if math.abs(val_4 - 1) < 0.0001 then local check_A68 = gg.getValues({{address = p1 + 0xA68, flags = gg.TYPE_FLOAT}}) local val_A68 = check_A68[1].value if math.abs(val_A68 - 1) < 0.0001 then gg.setValues({{address = p1 + 0x4, flags = gg.TYPE_FLOAT, value = 0}}) gg.setValues({{address = p1 + 0xA68, flags = gg.TYPE_FLOAT, value = 0.000001}}) end end end gg.clearResults() gg.setRanges(32) gg.searchNumber(0.03333330154, gg.TYPE_FLOAT) local res = gg.getResults(1000) if not res or #res < 1 then return end for i, v in ipairs(res) do local p1 = v.address local v1 = gg.getValues({{address = p1 - 0x8, flags = gg.TYPE_FLOAT}}) local p2 = v1[1].value if p2 == 1 then local real = p1 - 0x8 gg.addListItems({{address = real, flags = gg.TYPE_FLOAT, value = 6, freeze = true}}) end end gg.alert("开启成功") end function C8() local url = "https://genshin.hoyoverse.com" os.execute('su -c "am start -a android.intent.action.VIEW -d ' .. url .. '"') gg.alert("原神启动") end function C4() gg.clearResults() gg.setRanges(32) gg.searchNumber(0.03999999911, gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultCount()) if not res or #res < 1 then return end for i, v in ipairs(res) do local p1 = v.address local v4 = gg.getValues({{address = p1 - 0x4, flags = gg.TYPE_FLOAT}}) local val4 = v4[1].value local v8 = gg.getValues({{address = p1 - 0xC, flags = gg.TYPE_FLOAT}}) local val8 = v8[1].value local vC = gg.getValues({{address = p1 - 0x10, flags = gg.TYPE_FLOAT}}) local valC = vC[1].value if math.abs(val4 - 0.20000000298) < 0.0001 and math.abs(val8 - 0.5) < 0.0001 and math.abs(valC - 1.39999997616) < 0.0001 then gg.setValues({{address = p1 - 0xC, flags = gg.TYPE_FLOAT, value = 25}}) gg.setValues({{address = p1 - 0x10, flags = gg.TYPE_FLOAT, value = 4.5}}) end end gg.clearResults() gg.setRanges(32) gg.searchNumber(0.03999999911, gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultCount()) if not res or #res < 1 then return end for i, v in ipairs(res) do local p1 = v.address local v4 = gg.getValues({{address = p1 - 0x4, flags = gg.TYPE_FLOAT}}) local val4 = v4[1].value local v8 = gg.getValues({{address = p1 - 0x8, flags = gg.TYPE_FLOAT}}) local val8 = v8[1].value local vC = gg.getValues({{address = p1 - 0xC, flags = gg.TYPE_FLOAT}}) local valC = vC[1].value if math.abs(val4 - 0.15000000596) < 0.0001 and math.abs(val8 - 0.25) < 0.0001 and math.abs(valC - 1) < 0.0001 then gg.setValues({{address = p1 - 0x8, flags = gg.TYPE_FLOAT, value = 25}}) gg.setValues({{address = p1 - 0xC, flags = gg.TYPE_FLOAT, value = 4.5}}) end end gg.alert("开启成功") end function C5() gg.clearResults() gg.setRanges(32) gg.searchNumber(0.67668819427, gg.TYPE_FLOAT) local res = gg.getResults(1000) if not res or #res < 1 then return end for i, v in ipairs(res) do local p1 = v.address local v1 = gg.getValues({{address = p1 - 0x1C, flags = gg.TYPE_FLOAT}}) local p2 = v1[1].value if p2 == 1 then local real = p1 - 0x1C gg.setValues({{address = real, flags = gg.TYPE_FLOAT, value = 9}}) end end gg.alert("开启成功") end function C6() gg.clearResults() gg.setRanges(32) gg.searchNumber(0.25, gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultCount()) if not res or #res < 1 then return end for i, v in ipairs(res) do local p1 = v.address local val_neg8 = gg.getValues({{address = p1 - 0x8, flags = gg.TYPE_FLOAT}})[1].value if math.abs(val_neg8 - 1.8) < 0.001 then gg.setValues({{address = p1 - 0x4, flags = gg.TYPE_FLOAT, value = 4.5}}) gg.setValues({{address = p1 - 0x8, flags = gg.TYPE_FLOAT, value = 25}}) end end gg.clearResults() gg.setRanges(32) gg.searchNumber(2.25, gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultCount()) if not res or #res < 1 then return end for i, v in ipairs(res) do local p1 = v.address local val14 = gg.getValues({{address = p1 + 0x14, flags = gg.TYPE_FLOAT}})[1].value local val8 = gg.getValues({{address = p1 + 0x8, flags = gg.TYPE_FLOAT}})[1].value local valC = gg.getValues({{address = p1 + 0xC, flags = gg.TYPE_FLOAT}})[1].value if math.abs(val14 - 0.15) < 0.001 and math.abs(val8 - 1.79999995232) < 0.001 and math.abs(valC - 1) < 0.001 then gg.setValues({{address = p1 + 0x8, flags = gg.TYPE_FLOAT, value = 25}}) gg.setValues({{address = p1 + 0xC, flags = gg.TYPE_FLOAT, value = 4.5}}) end end gg.alert("开启成功") end function C3() gg.clearResults() gg.setRanges(32) gg.searchNumber(-0.82999998331, gg.TYPE_FLOAT) local res = gg.getResults(100000) gg.clearResults() gg.alert("路飞已开启循环 蹲下有效果") local base = nil for i, v in ipairs(res) do local check = gg.getValues({{address = v.address - 0xC, flags = gg.TYPE_FLOAT}})[1].value if math.abs(check - 1) < 0.0001 then base = v.address break end end if not base then return end local addr_X = base + 0x54C local addr_Y = base + 0x550 local addr_Z = base + 0x554 local addr_DirX = base - 0x4 local addr_DirY = base + 0x0 local addr_DirZ = base + 0x4 local addr_Cond = base + 0x1FC local last_cv = 0 while true do local cv = gg.getValues({{address = addr_Cond, flags = gg.TYPE_DWORD}})[1].value if cv == 1 and last_cv == 0 then local x = gg.getValues({{address = addr_X, flags = gg.TYPE_FLOAT}})[1].value local y = gg.getValues({{address = addr_Y, flags = gg.TYPE_FLOAT}})[1].value local z = gg.getValues({{address = addr_Z, flags = gg.TYPE_FLOAT}})[1].value local dirX = gg.getValues({{address = addr_DirX, flags = gg.TYPE_FLOAT}})[1].value local dirY = gg.getValues({{address = addr_DirY, flags = gg.TYPE_FLOAT}})[1].value local dirZ = gg.getValues({{address = addr_DirZ, flags = gg.TYPE_FLOAT}})[1].value local len = math.sqrt(dirX*dirX + dirY*dirY + dirZ*dirZ) if len > 0 then dirX = dirX / len dirY = dirY / len dirZ = dirZ / len end local new_x = x + dirX * 5 local new_y = y + dirY * 5 local new_z = z + dirZ * 5 gg.setValues({ {address = addr_X, flags = gg.TYPE_FLOAT, value = new_x}, {address = addr_Y, flags = gg.TYPE_FLOAT, value = new_y}, {address = addr_Z, flags = gg.TYPE_FLOAT, value = new_z} }) end last_cv = cv gg.sleep(50) end end function C7() gg.clearResults() gg.setRanges(32) gg.searchNumber(0.8812277317, gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultCount()) if not res or #res < 1 then return end for i, v in ipairs(res) do local p1 = v.address local check10 = gg.getValues({{address = p1 - 0x10, flags = gg.TYPE_FLOAT}}) local val10 = check10[1].value local check14 = gg.getValues({{address = p1 - 0x14, flags = gg.TYPE_FLOAT}}) local val14 = check14[1].value local check18 = gg.getValues({{address = p1 - 0x18, flags = gg.TYPE_FLOAT}}) local val18 = check18[1].value if math.abs(val10 - 0.20000000298) < 0.0001 and math.abs(val14 - 0.5) < 0.0001 and math.abs(val18 - 9.5) < 0.0001 then gg.setValues({{address = p1 - 0x14, flags = gg.TYPE_FLOAT, value = 4.5}}) gg.setValues({{address = p1 - 0x18, flags = gg.TYPE_FLOAT, value = 25}}) end end gg.clearResults() gg.setRanges(32) gg.searchNumber("30554470", gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultCount()) if not res or #res < 1 then return end for i, v in ipairs(res) do local p1 = v.address local check1 = gg.getValues({{address = p1 + 0x54, flags = gg.TYPE_FLOAT}}) local val1 = check1[1].value local check2 = gg.getValues({{address = p1 + 0xBEC, flags = gg.TYPE_FLOAT}}) local val2 = check2[1].value local check3 = gg.getValues({{address = p1 + 0xEBC, flags = gg.TYPE_FLOAT}}) local val3 = check3[1].value local check4 = gg.getValues({{address = p1 + 0x1224, flags = gg.TYPE_FLOAT}}) local val4 = check4[1].value if math.abs(val1 - 2) < 0.0001 and math.abs(val2 - 1) < 0.0001 and math.abs(val3 - 1) < 0.0001 and math.abs(val4 - 1) < 0.0001 then gg.setValues({{address = p1 + 0x54, flags = gg.TYPE_FLOAT, value = 1}}) gg.setValues({{address = p1 + 0xBEC, flags = gg.TYPE_FLOAT, value = 0.15}}) gg.setValues({{address = p1 + 0xEBC, flags = gg.TYPE_FLOAT, value = 999}}) gg.setValues({{address = p1 + 0x1224, flags = gg.TYPE_FLOAT, value = 999}}) end end gg.clearResults() gg.setRanges(32) gg.searchNumber(0.03333330154, gg.TYPE_FLOAT) local res = gg.getResults(1000) if not res or #res < 1 then return end for i, v in ipairs(res) do local p1 = v.address local v1 = gg.getValues({{address = p1 - 0x8, flags = gg.TYPE_FLOAT}}) local p2 = v1[1].value if p2 == 1 then local real = p1 - 0x8 gg.addListItems({{address = real, flags = gg.TYPE_FLOAT, value = 2, freeze = true}}) end end gg.alert("开启成功") end function C9() gg.clearResults() gg.setRanges(32) gg.searchNumber(-0.82999998331, gg.TYPE_FLOAT) local res = gg.getResults(100000) gg.clearResults() gg.alert("开启成功 循环飞天 蹲下视角控制方向") local base = nil for i, v in ipairs(res) do local check = gg.getValues({{address = v.address - 0xC, flags = gg.TYPE_FLOAT}})[1].value if math.abs(check - 1) < 0.0001 then base = v.address break end end if not base then return end local addr_X = base + 0x54C local addr_Y = base + 0x550 local addr_Z = base + 0x554 local addr_DirX = base - 0x4 local addr_DirY = base + 0x0 local addr_DirZ = base + 0x4 local addr_Cond = base + 0x1FC local speed = 2 while true do local cv = gg.getValues({{address = addr_Cond, flags = gg.TYPE_DWORD}})[1].value if cv == 1 then local x = gg.getValues({{address = addr_X, flags = gg.TYPE_FLOAT}})[1].value local y = gg.getValues({{address = addr_Y, flags = gg.TYPE_FLOAT}})[1].value local z = gg.getValues({{address = addr_Z, flags = gg.TYPE_FLOAT}})[1].value local dirX = gg.getValues({{address = addr_DirX, flags = gg.TYPE_FLOAT}})[1].value local dirY = gg.getValues({{address = addr_DirY, flags = gg.TYPE_FLOAT}})[1].value local dirZ = gg.getValues({{address = addr_DirZ, flags = gg.TYPE_FLOAT}})[1].value local new_x = x + speed * dirX local new_y = y + speed * dirY local new_z = z + speed * dirZ gg.setValues({ {address = addr_X, flags = gg.TYPE_FLOAT, value = new_x}, {address = addr_Y, flags = gg.TYPE_FLOAT, value = new_y}, {address = addr_Z, flags = gg.TYPE_FLOAT, value = new_z} }) end gg.sleep(50) end end function C10() gg.clearResults() gg.setRanges(32) gg.searchNumber(0.03333330154, gg.TYPE_FLOAT) local res = gg.getResults(1000) if not res or #res < 1 then return end for i, v in ipairs(res) do local p1 = v.address local v1 = gg.getValues({{address = p1 - 0x8, flags = gg.TYPE_FLOAT}}) local p2 = v1[1].value if p2 == 1 then local real = p1 - 0x8 gg.addListItems({{address = real, flags = gg.TYPE_FLOAT, value = 3, freeze = true}}) end end gg.alert("开启成功") end function G1() if gg.getRangesList("libtersafe2.so:bss")[1] then local t = {} t[1] = gg.getRangesList("libtersafe2.so:bss")[1]["start"] + 0x4C0; t[2] = gg.getRangesList("libtersafe2.so:bss")[1]["start"] + 0x4F8; t[3] = gg.getRangesList("libtersafe2.so:bss")[1]["start"] + 0x630; t[4] = gg.getRangesList("libtersafe2.so:bss")[1]["start"] + 0x6B8; gg.addListItems({ [1] = { address = t[1], flags = 4, value = 64, freeze = true, }, [2] = { address = t[2], flags = 4, value = 64, freeze = true, }, [3] = { address = t[3], flags = 4, value = 64, freeze = true, }, [4] = { address = t[4], flags = 4, value = 64, freeze = true, }, }) end gg.toast("开启成功") end function G2() gg.setProcessX() gg.toast("请选择进程") end local function runThread(func) return function() luajava.startThread(function() pcall(func) end) end end local floatingWindowManager = require('floatingWindowManager') floatingWindowManager:init() floatingWindowManager:newWindow(('小熊猫[自制版]'):format(floatingWindowManager.version), { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_margin = '10dp', layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '10dp', { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '5dp', text = '选择进程', textSize = '16sp', onClick = runThread(G2) }, { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '5dp', text = '防止闪退', textSize = '16sp', onClick = runThread(G1) }, { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '5dp', text = '摸金页面', textSize = '16sp', onClick = function(View) floatingWindowManager:start('摸金页面') end }, { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '5dp', text = '武器页面', textSize = '16sp', onClick = function() floatingWindowManager:start('武器页面') end } } }) end, onDestroy = function() end }) floatingWindowManager:newWindow('摸金页面', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '10dp', { Switch, layout_width = 'match_parent', text = '动态广角[全局有效]', onCheckedChange = function(CompoundButton, state) if state then runThread(A7)() else end end }, { Switch, layout_width = 'match_parent', text = '去除磁场[一把一开]', onCheckedChange = function(CompoundButton, state) if state then runThread(A8)() else end end }, { Switch, layout_width = 'match_parent', text = '全局除雾[全局有效]', onCheckedChange = function(CompoundButton, state) if state then runThread(A1)() else end end }, { Switch, layout_width = 'match_parent', text = '人物夜视[全局有效]', onCheckedChange = function(CompoundButton, state) if state then runThread(A2)() else end end }, { Switch, layout_width = 'match_parent', text = '古蜀遗迹[全局有效]', onCheckedChange = function(CompoundButton, state) if state then runThread(A3)() else end end }, { Switch, layout_width = 'match_parent', text = '精绝古城', onCheckedChange = function(CompoundButton, state) if state then runThread(A4)() else end end }, { Switch, layout_width = 'match_parent', text = '昆仑秘境', onCheckedChange = function(CompoundButton, state) if state then runThread(A5)() else end end }, { Switch, layout_width = 'match_parent', text = '秦岭龙宫', onCheckedChange = function(CompoundButton, state) if state then runThread(A6)() else end end } } }) end }) floatingWindowManager:newWindow('武器页面', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '10dp', { Switch, layout_width = 'match_parent', text = '全局变速[全局有效]', onCheckedChange = function(CompoundButton, state) if state then runThread(C10)() else end end }, { Switch, layout_width = 'match_parent', text = '杀戮折扇[一把一开]', onCheckedChange = function(CompoundButton, state) if state then runThread(C1)() else end end }, { Switch, layout_width = 'match_parent', text = '伞杀戮[一把一开]', onCheckedChange = function(CompoundButton, state) if state then runThread(C2)() else end end }, { Switch, layout_width = 'match_parent', text = '原神启动[非常牛逼]', onCheckedChange = function(CompoundButton, state) if state then runThread(C8)() else end end }, { Switch, layout_width = 'match_parent', text = '折扇范围[全局有效]', onCheckedChange = function(CompoundButton, state) if state then runThread(C4)() else end end }, { Switch, layout_width = 'match_parent', text = '桃木剑范围[全局有效]', onCheckedChange = function(CompoundButton, state) if state then runThread(C5)() else end end }, { Switch, layout_width = 'match_parent', text = '长枪范围[全局有效]', onCheckedChange = function(CompoundButton, state) if state then runThread(C6)() else end end }, { Switch, layout_width = 'match_parent', text = '鞭子杀戮[一把一开]', onCheckedChange = function(CompoundButton, state) if state then runThread(C7)() else end end }, { Switch, layout_width = 'match_parent', text = '坐标飞天[循环]', onCheckedChange = function(CompoundButton, state) if state then runThread(C9)() else end end }, { Switch, layout_width = 'match_parent', text = '坐标路飞[循环]', onCheckedChange = function(CompoundButton, state) if state then runThread(C3)() else end end } } }) end }) floatingWindowManager:run()