do if type(getrlyunyz) ~= 'function' then gg.alert('请使用RLGG执行') os.exit() return end local info = { example_version = '1.0.3', name = '赤音', appid = '100328', appkey = 'a5M8cf57f7DF8uzd', rc4key = 'jRve71ppRT8epVTe', version = '1.0', mi_type = '3' } local rlyunyz = getrlyunyz(info) local ret = rlyunyz.start() if not ret or not isTable(ret) or ret.sign ~= '893cb8e0deb16a7f5d5eab5f8d75fffa' then os.exit() return end end -- 把以上代码复制到你脚本最前面即可 gg.alert('赤音') gg.toast('正在启动中请耐心等') function SO_Deposit(FUNCTIONADD, TYPE, VALUE) local SOMOD = gg.getRangesList("il2cpp.so") if SOMOD[2] == nil then gg.alert("开启失败\n内存\n解决方法:请重新选择游戏进程\n") else gg.setValues({{address=SOMOD[2].start+FUNCTIONADD, flags=4, value="~A8 LDR X0, [PC, #0x8]"}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+4, flags=4, value="~A8 RET"}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+8, flags=TYPE, value=VALUE}}) end end function SOSD(FUNCTIONADD, TYPE, VALUE) local SOMOD = gg.getRangesList("il2cpp.so") if SOMOD[2] == nil then gg.alert("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else gg.setValues({ { address = SOMOD[2].start + FUNCTIONADD, flags = TYPE, value = VALUE } }) gg.setValues({ { address = SOMOD[2].start + FUNCTIONADD + 4, flags = TYPE, value = "~A8 RET" } }) gg.setValues({ { address = SOMOD[2].start + FUNCTIONADD + 8, flags = 16, value = "1740" } }) end end function SO_Deposit(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[2]==nil then gg.alert("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else gg.setValues({{address=SOMOD[2].start+FUNCTIONADD,flags=4,value='~A8 LDR X0, [PC,#0x8]'}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+4,flags=4,value='~A8 RET'}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+8,flags=TYPE,value=VALUE}}) end end function SO_Deposit(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[2]==nil then gg.alert("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else gg.setValues({{address=SOMOD[2].start+FUNCTIONADD,flags=4,value='~A8 LDR X0, [PC,#0x8]'}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+4,flags=4,value='~A8 RET'}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+8,flags=TYPE,value=VALUE}}) end end function OP(libName, offsets, dataType, value, freeze, name) local startTime = os.clock() local somod = gg.getRangesList(libName) if not somod or #somod == 0 then gg.alert("操作失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━\nfailure") return end local baseAddress = somod[1].start local targetAddresses = {} for _, offset in ipairs(offsets) do table.insert(targetAddresses, baseAddress + offset) end local t = {} for _, address in ipairs(targetAddresses) do table.insert(t, {address = address, flags = dataType, value = value}) end gg.setValues(t) if freeze then local freezeTable = {} for _, address in ipairs(targetAddresses) do table.insert(freezeTable, { address = address, flags = dataType, value = value, freeze = true }) end gg.addListItems(freezeTable) end local elapsedTime = os.clock() - startTime local modifiedCount = #offsets gg.toast(name.."操作完成!\n当前进程名称:" .. gg.getTargetInfo().label .. "\n当前进程包名:" .. gg.getTargetPackage() .. "\n总共耗时:" .. string.format("%.2f", elapsedTime) .. "秒\n修改了 " .. modifiedCount .. " 条值") gg.toast(name.."操作完成!\n当前进程名称:" .. gg.getTargetInfo().label .. "\n当前进程包名:" .. gg.getTargetPackage() .. "\n总共耗时:" .. string.format("%.2f", elapsedTime) .. "秒\n修改了 " .. modifiedCount .. " 条值\nsuccess✅") end function SearchWrite(Search,Modification) gg.clearResults() gg.searchNumber(Search[1][1],Search[1][2],false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum=0 for i=2,#Search do for index=1,#Result do if gg.getValues({{address=Result[index].address+Search[i][3],flags=Search[i][2]}})[1].value~=Search[i][1]then Result[index].Usable=true sum=sum+1 end end end if sum==#Result then gg.toast(Name..'开启失败') return end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in pairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value[3],flags=value[2],value=value[1],freeze=true} sum=sum+1 if value[4]then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end end end end gg.setValues(Data) gg.addListItems(Freeze) if Freeze==0 then gg.toast(Name..'开启成功,共修改'..sum..'条数据.') else gg.toast(Name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据.') end end function search(ss,lx,nc,dz1,dz2) gg.setVisible(false) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,536870912,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("搜索到 "..sl.." 个结果") gg.clearResults() else gg.toast("未搜索到结果") end else gg.toast("无搜索值类型") end else gg.toast("无需搜索值") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function TL_TL(a,b,c,d,e) local time = os.clock() kv = {} ks={} if a == "libil2cpp.so" then local aa = gg.getRangesList(a)[2].start if aa == nil then gg.alert("模块未加载\n或选错游戏进程") return end for i, k in ipairs(b) do local v = aa + k kv[#kv+1] = {address = v, flags = c, value = d, freeze = true} ks[#ks+1] = {address = v+4, flags = c, value = -698416192, freeze = true} end else local aa = gg.getRangesList(a) if aa[1] == nil then gg.alert("模块未加载\n或选错游戏进程") end local l = gg.getRangesList(a)[1].start for i, k in ipairs (b) do local v = l + k kv[#kv+1] = {address = v, flags = c, value = d, freeze = true} end end gg.addListItems(kv) gg.addListItems(ks) gg.toast(e.."开启成功\n共耗时"..os.clock() - time.."秒\n共修改"..#b.."条值") end function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end ms = { } function setvalue ( add , value , falgs , dj ) local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs if dj == true then WY [ 1 ].freeze = true gg.addListItems ( WY ) else gg.setValues ( WY ) end end function ms.ss ( num , ty , nc ) local GGNUMBER_1 = num local GGNUMBER_2 = ty local GGNUMBER_3 = false local GGNUMBER_4 = gg.SIGN_EQUAL local GGNUMBER_5 = 0x3000000000 local GGNUMBER_6 = 0xFFFFFFFFFF local GGNUMBER_7 = 0 gg.clearResults ( ) gg.setRanges ( nc ) gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 ) Result = gg.getResults ( gg.getResultCount ( ) ) end function ms.py ( num , py , ty ) if ( Result and # Result ~= 0 ) then t = { } for i , v in ipairs ( Result ) do t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty end t = gg.getValues ( t ) for i , v in ipairs ( t ) do if v.value ~= num then Result [ i ] = nil end end local MS = { } for i , v in pairs ( Result ) do MS [ # MS + 1 ] = v end Result = MS end end function ms.bc ( ) data = { } if Result == nil or # Result == 0 then gg.alert ( "开启失败" ) else for i , v in pairs ( Result ) do data [ # data + 1 ] = v.address end end Result = nil end function ms.edit ( nn , off , ty , dj ) if ( Result ) then ms.bc ( ) end if # data > 0 then for i , v in ipairs ( data ) do setvalue ( v + off , nn , ty , dj or false ) end gg.toast ( Name.."成功" ) end end function editData(qmnb,qmxg)gg.setVisible(false)gg.clearResults()qmnbv=qmnb[3]["value"]or qmnb[3][1]qmnbt=qmnb[3]["type"]or qmnb[3][2]qmnbn=qmnb[2]["name"]or qmnb[2][1]gg.setRanges(qmnb[1]["memory"]or qmnb[1][1])gg.searchNumber(qmnbv,qmnbt)gg.refineNumber(qmnbv,qmnbt)sz=gg.getResultCount()if sz==0 then gg.toast(qmnbn.."开启失败")else sl=gg.getResults(999999)for i=1,sz do pdsz=true for v=4,#qmnb do if pdsz==true then pysz={{}}pysz[1].address=sl[i].address+(qmnb[v]["offset"]or qmnb[v][2])pysz[1].flags=qmnb[v]["type"]or qmnb[v][3]szpy=gg.getValues(pysz)tzszpd=tostring(qmnb[v]["lv"]or qmnb[v][1]):gsub(",","")pyszpd=tostring(szpy[1].value):gsub(",","")if tzszpd==pyszpd then pdjg=true pdsz=true else pdjg=false pdsz=false end end end if pdjg==true then szpy=sl[i].address for x=1,#qmxg do xgsz=qmxg[x]["value"]or qmxg[x][1]xgpy=szpy+(qmxg[x]["offset"]or qmxg[x][2])xglx=qmxg[x]["type"]or qmxg[x][3]xgdj=qmxg[x]["freeze"]or qmxg[x][4]xg={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xg[1].freeze=xgdj gg.addListItems(xg)else gg.setValues(xg)end end xgjg=true end end if xgjg==true then gg.toast(qmnbn.."开启成功")else gg.toast(qmnbn.."开启失败")end end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) if gg.searchNumber(qmnb[3]["value"],qmnb[3]["type"],false,gg.SIGN_EQUAL,0,-1)~=true then gg.searchAddress(qmnb[3]["value"],-1,qmnb[3]["type"]) end if gg.getResultCount()==0 then gg.toast(qmnb[2]["name"].."开启失败")return end szxx=gg.getResults(gg.getResultCount()) szpd={} a=0 for i=4,#qmnb do for s=1,#szxx do if szpd[s]~="false" then if gg.getValues({{address=szxx[s].address+qmnb[i]["offset"],flags=qmnb[i]["type"]}})[1].value+0~=qmnb[i]["lv"]then szpd[s]="false" a=a+1 end end end end if a==#szxx then gg.toast(qmnb[2]["name"].."开启失败")return end b=0 t={} for x=1,#qmxg do if qmxg[x]["freeze"]==true then a=1 end for i=1,#szxx do if szpd[i]==nil then b=b+1 table.insert(t,{address=szxx[i].address+qmxg[x]["offset"],flags=qmxg[x]["type"],freeze=qmxg[x]["freeze"],value=qmxg[x]["value"]}) end end end gg.setValues(t) gg.addListItems(t) gg.clearResults() if a~=1 then gg.clearList()else a=nil end gg.toast(qmnb[2]["name"].."开启成功,共修改了"..b.."条数据") end qmnb = function(daarr) local array = {} for i = 1, #daarr["搜索数组"] do local data = {["lv"] =daarr["搜索数组"][i][1], ["offset"] = daarr["搜索数组"][i][2], ["type"] = daarr["搜索类型"]} table.insert(array, i, data) end local isok, data = app.memorysearch(daarr["搜索内存"], array) if isok then for i = 1, #data do for x = 1, #daarr["修改数组"] do app.memorywrite(data[i] + daarr["修改数组"][x][2], daarr["搜索类型"], daarr["修改数组"][x][1]) end end gg.toast(daarr["功能名称"] .. "共修改" .. #data * #daarr["修改数组"] .. "条数据") else gg.toast(daarr["功能名称"] .. "开启失败") 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 print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function SOGSPY_ST(HDZ,DYZ) if HDZ >= DYZ then py=string.format("0x%X",HDZ-DYZ) return tostring(string.format("-0x%X",py)) else py=string.format("0x%X",DYZ-HDZ) return tostring(string.format("0x%X",py)) end end function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = { [true] = 32, [false] = 4 } if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({ { address = addr, flags = va[x64] } }) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF else -- addr[1].value = addr[1].value & 0xFFFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) if not addr then gg.toast('修改失败, 可能是模块不存在') return end local Table1 = { {}, {} } for k, v in ipairs(Table) do local value = { address = addr + v[3], value = v[1], flags = v[2], freeze = v[4] } if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改" .. #Table .. "个值") end function SO_PT(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[2]==nil then gg.alert("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else gg.setValues({{address=SOMOD[2].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+4,flags=TYPE,value="~A8 RET"}}) end end function SO_FPT(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[2]==nil then gg.alert([[开启失败 ━━━━━━━━━━━━━━━ 错误原因:未找到相关内存 解决方法:请重新选择游戏进程 ━━━━━━━━━━━━━━━]]) else gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+0x8,flags=16,value=VALUE}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD,flags=TYPE,value="~A8 LDR S0, [PC,#0x8]"}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+4,flags=TYPE,value="~A8 RET"}}) end end function SO_Deposit(FUNCTIONADD, TYPE, VALUE) local SOMOD = gg.getRangesList("il2cpp.so") if SOMOD[2] == nil then gg.alert("开启失败\n内存\n解决方法:请重新选择游戏进程\n") else gg.setValues({{address=SOMOD[2].start+FUNCTIONADD, flags=4, value="~A8 LDR X0, [PC, #0x8]"}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+4, flags=4, value="~A8 RET"}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+8, flags=TYPE, value=VALUE}}) end end function SOSD(FUNCTIONADD, TYPE, VALUE) local SOMOD = gg.getRangesList("il2cpp.so") if SOMOD[2] == nil then gg.alert("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else gg.setValues({ { address = SOMOD[2].start + FUNCTIONADD, flags = TYPE, value = VALUE } }) gg.setValues({ { address = SOMOD[2].start + FUNCTIONADD + 4, flags = TYPE, value = "~A8 RET" } }) gg.setValues({ { address = SOMOD[2].start + FUNCTIONADD + 8, flags = 16, value = "1740" } }) end end function SO_Deposit(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[2]==nil then gg.alert("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else gg.setValues({{address=SOMOD[2].start+FUNCTIONADD,flags=4,value='~A8 LDR X0, [PC,#0x8]'}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+4,flags=4,value='~A8 RET'}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+8,flags=TYPE,value=VALUE}}) end end function OP(libName, offsets, dataType, value, freeze, name) local startTime = os.clock() local somod = gg.getRangesList(libName) if not somod or #somod == 0 then gg.alert("操作失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━\nfailure") return end local baseAddress = somod[1].start local targetAddresses = {} for _, offset in ipairs(offsets) do table.insert(targetAddresses, baseAddress + offset) end local t = {} for _, address in ipairs(targetAddresses) do table.insert(t, {address = address, flags = dataType, value = value}) end gg.setValues(t) if freeze then local freezeTable = {} for _, address in ipairs(targetAddresses) do table.insert(freezeTable, { address = address, flags = dataType, value = value, freeze = true }) end gg.addListItems(freezeTable) end local elapsedTime = os.clock() - startTime local modifiedCount = #offsets gg.toast(name.."操作完成!\n当前进程名称:" .. gg.getTargetInfo().label .. "\n当前进程包名:" .. gg.getTargetPackage() .. "\n总共耗时:" .. string.format("%.2f", elapsedTime) .. "秒\n修改了 " .. modifiedCount .. " 条值") gg.toast(name.."操作完成!\n当前进程名称:" .. gg.getTargetInfo().label .. "\n当前进程包名:" .. gg.getTargetPackage() .. "\n总共耗时:" .. string.format("%.2f", elapsedTime) .. "秒\n修改了 " .. modifiedCount .. " 条值\nsuccess✅") end function SearchWrite(Search,Modification) gg.clearResults() gg.searchNumber(Search[1][1],Search[1][2],false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum=0 for i=2,#Search do for index=1,#Result do if gg.getValues({{address=Result[index].address+Search[i][3],flags=Search[i][2]}})[1].value~=Search[i][1]then Result[index].Usable=true sum=sum+1 end end end if sum==#Result then gg.toast(Name..'开启失败') return end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in pairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value[3],flags=value[2],value=value[1],freeze=true} sum=sum+1 if value[4]then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end end end end gg.setValues(Data) gg.addListItems(Freeze) if Freeze==0 then gg.toast(Name..'开启成功,共修改'..sum..'条数据.') else gg.toast(Name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据.') end end function search(ss,lx,nc,dz1,dz2) gg.setVisible(false) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,536870912,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("搜索到 "..sl.." 个结果") gg.clearResults() else gg.toast("未搜索到结果") end else gg.toast("无搜索值类型") end else gg.toast("无需搜索值") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function TL_TL(a,b,c,d,e) local time = os.clock() kv = {} ks={} if a == "libil2cpp.so" then local aa = gg.getRangesList(a)[2].start if aa == nil then gg.alert("模块未加载\n或选错游戏进程") return end for i, k in ipairs(b) do local v = aa + k kv[#kv+1] = {address = v, flags = c, value = d, freeze = true} ks[#ks+1] = {address = v+4, flags = c, value = -698416192, freeze = true} end else local aa = gg.getRangesList(a) if aa[1] == nil then gg.alert("模块未加载\n或选错游戏进程") end local l = gg.getRangesList(a)[1].start for i, k in ipairs (b) do local v = l + k kv[#kv+1] = {address = v, flags = c, value = d, freeze = true} end end gg.addListItems(kv) gg.addListItems(ks) gg.toast(e.."开启成功\n共耗时"..os.clock() - time.."秒\n共修改"..#b.."条值") end function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end ms = { } function setvalue ( add , value , falgs , dj ) local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs if dj == true then WY [ 1 ].freeze = true gg.addListItems ( WY ) else gg.setValues ( WY ) end end function ms.ss ( num , ty , nc ) local GGNUMBER_1 = num local GGNUMBER_2 = ty local GGNUMBER_3 = false local GGNUMBER_4 = gg.SIGN_EQUAL local GGNUMBER_5 = 0x3000000000 local GGNUMBER_6 = 0xFFFFFFFFFF local GGNUMBER_7 = 0 gg.clearResults ( ) gg.setRanges ( nc ) gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 ) Result = gg.getResults ( gg.getResultCount ( ) ) end function ms.py ( num , py , ty ) if ( Result and # Result ~= 0 ) then t = { } for i , v in ipairs ( Result ) do t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty end t = gg.getValues ( t ) for i , v in ipairs ( t ) do if v.value ~= num then Result [ i ] = nil end end local MS = { } for i , v in pairs ( Result ) do MS [ # MS + 1 ] = v end Result = MS end end function ms.bc ( ) data = { } if Result == nil or # Result == 0 then gg.alert ( "开启失败" ) else for i , v in pairs ( Result ) do data [ # data + 1 ] = v.address end end Result = nil end function ms.edit ( nn , off , ty , dj ) if ( Result ) then ms.bc ( ) end if # data > 0 then for i , v in ipairs ( data ) do setvalue ( v + off , nn , ty , dj or false ) end gg.toast ( Name.."成功" ) end end function editData(qmnb,qmxg)gg.setVisible(false)gg.clearResults()qmnbv=qmnb[3]["value"]or qmnb[3][1]qmnbt=qmnb[3]["type"]or qmnb[3][2]qmnbn=qmnb[2]["name"]or qmnb[2][1]gg.setRanges(qmnb[1]["memory"]or qmnb[1][1])gg.searchNumber(qmnbv,qmnbt)gg.refineNumber(qmnbv,qmnbt)sz=gg.getResultCount()if sz==0 then gg.toast(qmnbn.."开启失败")else sl=gg.getResults(999999)for i=1,sz do pdsz=true for v=4,#qmnb do if pdsz==true then pysz={{}}pysz[1].address=sl[i].address+(qmnb[v]["offset"]or qmnb[v][2])pysz[1].flags=qmnb[v]["type"]or qmnb[v][3]szpy=gg.getValues(pysz)tzszpd=tostring(qmnb[v]["lv"]or qmnb[v][1]):gsub(",","")pyszpd=tostring(szpy[1].value):gsub(",","")if tzszpd==pyszpd then pdjg=true pdsz=true else pdjg=false pdsz=false end end end if pdjg==true then szpy=sl[i].address for x=1,#qmxg do xgsz=qmxg[x]["value"]or qmxg[x][1]xgpy=szpy+(qmxg[x]["offset"]or qmxg[x][2])xglx=qmxg[x]["type"]or qmxg[x][3]xgdj=qmxg[x]["freeze"]or qmxg[x][4]xg={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xg[1].freeze=xgdj gg.addListItems(xg)else gg.setValues(xg)end end xgjg=true end end if xgjg==true then gg.toast(qmnbn.."开启成功")else gg.toast(qmnbn.."开启失败")end end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) if gg.searchNumber(qmnb[3]["value"],qmnb[3]["type"],false,gg.SIGN_EQUAL,0,-1)~=true then gg.searchAddress(qmnb[3]["value"],-1,qmnb[3]["type"]) end if gg.getResultCount()==0 then gg.toast(qmnb[2]["name"].."开启失败")return end szxx=gg.getResults(gg.getResultCount()) szpd={} a=0 for i=4,#qmnb do for s=1,#szxx do if szpd[s]~="false" then if gg.getValues({{address=szxx[s].address+qmnb[i]["offset"],flags=qmnb[i]["type"]}})[1].value+0~=qmnb[i]["lv"]then szpd[s]="false" a=a+1 end end end end if a==#szxx then gg.toast(qmnb[2]["name"].."开启失败")return end b=0 t={} for x=1,#qmxg do if qmxg[x]["freeze"]==true then a=1 end for i=1,#szxx do if szpd[i]==nil then b=b+1 table.insert(t,{address=szxx[i].address+qmxg[x]["offset"],flags=qmxg[x]["type"],freeze=qmxg[x]["freeze"],value=qmxg[x]["value"]}) end end end gg.setValues(t) gg.addListItems(t) gg.clearResults() if a~=1 then gg.clearList()else a=nil end gg.toast(qmnb[2]["name"].."开启成功,共修改了"..b.."条数据") end qmnb = function(daarr) local array = {} for i = 1, #daarr["搜索数组"] do local data = {["lv"] =daarr["搜索数组"][i][1], ["offset"] = daarr["搜索数组"][i][2], ["type"] = daarr["搜索类型"]} table.insert(array, i, data) end local isok, data = app.memorysearch(daarr["搜索内存"], array) if isok then for i = 1, #data do for x = 1, #daarr["修改数组"] do app.memorywrite(data[i] + daarr["修改数组"][x][2], daarr["搜索类型"], daarr["修改数组"][x][1]) end end gg.toast(daarr["功能名称"] .. "共修改" .. #data * #daarr["修改数组"] .. "条数据") else gg.toast(daarr["功能名称"] .. "开启失败") 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 print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function SOGSPY_ST(HDZ,DYZ) if HDZ >= DYZ then py=string.format("0x%X",HDZ-DYZ) return tostring(string.format("-0x%X",py)) else py=string.format("0x%X",DYZ-HDZ) return tostring(string.format("0x%X",py)) end end function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = { [true] = 32, [false] = 4 } if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({ { address = addr, flags = va[x64] } }) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF else -- addr[1].value = addr[1].value & 0xFFFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) if not addr then gg.toast('修改失败, 可能是模块不存在') return end local Table1 = { {}, {} } for k, v in ipairs(Table) do local value = { address = addr + v[3], value = v[1], flags = v[2], freeze = v[4] } if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改" .. #Table .. "个值") end function SO_PT(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[2]==nil then gg.alert("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else gg.setValues({{address=SOMOD[2].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+4,flags=TYPE,value="~A8 RET"}}) end end function SO_FPT(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[2]==nil then gg.alert([[开启失败 ━━━━━━━━━━━━━━━ 错误原因:未找到相关内存 解决方法:请重新选择游戏进程 ━━━━━━━━━━━━━━━]]) else gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+0x8,flags=16,value=VALUE}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD,flags=TYPE,value="~A8 LDR S0, [PC,#0x8]"}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+4,flags=TYPE,value="~A8 RET"}}) end end function SO_PT(FUNCTIONADD, TYPE, VALUE) local SOMOD = gg.getRangesList("il2cpp.so") if SOMOD[2] == nil then gg.alert("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else gg.setValues({ { address = SOMOD[2].start + FUNCTIONADD, flags = TYPE, value = VALUE } }) gg.setValues({ { address = SOMOD[2].start + FUNCTIONADD + 4, flags = TYPE, value = "~A8 RET" } }) gg.setValues({ { address = SOMOD[2].start + FUNCTIONADD + 8, flags = 16, value = "1740" } }) end end function SO_GT(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[2]==nil then gg.alert("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else gg.setValues({{address=SOMOD[2].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+4,flags=TYPE,value="~A8 RET"}}) end end function SO_LU(functionADD, TYPE, VALUE) local SOMOD = gg.getRangesList("il2cpp.so") if SOMOD[2] == nil then gg.alert("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else gg.setValues({ { address = SOMOD[2].start + functionADD, flags = TYPE, value = VALUE } }) gg.setValues({ { address = SOMOD[2].start + functionADD + 4, flags = TYPE, value = "~A8 RET" } }) gg.setValues({ { address = SOMOD[2].start + functionADD + 8, flags = 16, value = sz } }) end end function SO_Deposit(FUNCTIONADD, TYPE, VALUE) local SOMOD = gg.getRangesList("il2cpp.so") if SOMOD[2] == nil then gg.alert("开启失败\n内存\n解决方法:请重新选择游戏进程\n") else gg.setValues({{address=SOMOD[2].start+FUNCTIONADD, flags=4, value="~A8 LDR X0, [PC, #0x8]"}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+4, flags=4, value="~A8 RET"}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+8, flags=TYPE, value=VALUE}}) end end local SO = {} SO['新手'] = 0x25a024c SO['封号'] = 0x22a7a88 SO['行为1'] = 0x256a4e8 SO['行为2'] = 0x256a57c SO['行为3'] = 0x256a32c SO['行为4'] = 0x25637b0 SO['行为5'] = 0x256a204 SO['行为6'] = 0x256a204 SO['行为7'] = 0x233155c SO['行为8'] = 0x22045cc SO['行为9'] = 0x25df3a4 SO['行为10'] = 0x25df2c4 SO['行为11'] = 0x255d15c SO['行为12'] = 0x24b26d0 SO['行为13'] = 0x25df1c0 SO['行为14'] = 0x25dec10 SO['行为15'] = 0x2330e18 SO['行为16'] = 0x2331338 SO['行为17'] = 0x23314b0 SO['行为18'] = 0x27b7c80 SO['行为19'] = 0x1358880 SO['行为20'] = 0x1f23498 SO['行为21'] = 0x1f25430 SO['行为22'] = 0x1376b04 SO['行为23'] = 0x1f27188 SO['行为24'] = 0x1f2dfb4 SO['行为25'] = 0x1f2e060 SO['行为26'] = 0x3b79740 SO['行为27'] = 0x25623d4 SO['行为28'] = 0x256a298 SO['行为29'] = 0x256a3c0 SO['行为30'] = 0x256a454 SO['行为31'] = 0x1f2dc34 SO['行为32'] = 0x1f2dce0 SO['行为33'] = 0x1f2dd8c SO['行为34'] = 0x1f2de30 SO['行为35'] = 0x1f2e060 SO['行为36'] = 0x1f2dc34 SO['行为37'] = 0x22062f4 SO['行为38'] = 0x1b59edc SO['行为39'] = 0x2331120 SO['行为40'] = 0x256246c SO['行为41'] = 0x1f246b8 SO['行为42'] = 0x1f28098 SO['行为43'] = 0x1f2dedc SO['行为44'] = 0xe42bcc SO['行为45'] = 0xe42bc0 SO['货币检测'] = 0x13450c4 SO['速度检测'] = 0x222c1f0 SO['防举报1'] = 0x1b59f6c SO['防举报2'] = 0x1b59e54 SO['防举报3'] = 0x207b868 SO['防举报4'] = 0x27bb774 SO['人物'] = 0x2598dd8 SO['滑板'] = 0x259ab50 SO['背饰'] = 0x25bd044 SO['背饰保存'] = 0x25bd124 SO['像框'] = 0x2608654 SO['相框1'] = 0x227b7f4 SO['装扮'] = 0x258d460 SO['技能'] = 0x254b150 SO['技能勾选'] = 0x254b414 SO['名称'] = 0x13da8d0 SO['获取十倍'] = 0x2562cf0 SO['解锁十倍'] = 0x1082504 SO['内购'] = 0x24e7c58 SO['内购成功'] = 0x24f4040 SO['领奖'] = 0x25f1800 SO['十抽'] = 0x26af8d4 SO['宝物备份'] = 0x26ad4ac SO['奖励替换'] = 0x2607ec4 SO['人物奖励'] = 0x2608074 SO['滑板奖励'] = 0x2608224 SO['背饰奖励'] = 0x2608584 SO['像框奖励'] = 0x2608654 SO['赛事'] = 0x283df0c SO['备份1'] = 0x2559fec SO['备份2'] = 0x25c99c8 SO['备份3'] = 0x2559fec SO['备份4'] = 0x1f75208 SO['双倍'] = 0x25a6d28 SO['微博'] = 0x15ed684 SO['金币'] = 0x2586bb8 SO['钥匙'] = 0x2586ef8 SO['紫币'] = 0x25f37a0 SO['宝物钥匙'] = 0x25c26bc SO['开发者'] = 0x255ebdc SO['抓娃娃'] = 0x25633e4 SO['重生'] = 0x23235b0 SO['邮箱'] = 0x2666304 SO['炫跑卡'] = 0x25be8e4 SO['历史分数1'] = 0x2587404 SO['历史分数2'] = 0x258761c SO['历史排名'] = 0x25b5c94 SO['等级'] = 0x258a3e8 SO['隐藏1'] = 0x23cfd98 SO['隐藏2'] = 0x255d15c SO['隐藏3'] = 0x23d0c2c SO['隐藏4'] = 0x25b1ba0 SO['隐藏5'] = 0x1b564ac SO['防止卡屏1'] = 0x27b7b9c SO['防止卡屏2'] = 0x27b7ab4 SO['受到攻击'] = 0x2461580 SO['攻击拾取'] = 0x245bc4c SO['局内金币'] = 0x253c944 SO['获取能量'] = 0x245b1ec SO['获取能量1'] = 0x2456ac8 SO['获取能量2'] = 0x2456ac8 SO['跳跃'] = 0x2541b74 SO['下滑'] = 0x25420d8 SO['下滑1'] = 0x2541d38 SO['下滑左'] = 0x2541e08 SO['下滑中'] = 0x2541e80 SO['下滑右'] = 0x2541ef8 SO['滑板跳高'] = 0x1053d90 SO['滑板滑翔'] = 0x105413c SO['滑板瞬移'] = 0x105428c SO['无尽装死'] = 0x105d3b4 SO['无限跳跃'] = 0x207ebe8 SO['金币消失'] = 0x20c2924 SO['无尽死亡'] = 0x1066100 SO['道具图标'] = 0x245a0d8 SO['道具图标2'] = 0x245a168 SO['道具图标3'] = 0x245c064 SO['修改道具'] = 0x245b9c0 SO['战绩消失'] = 0x27a76dc SO['购买界面'] = 0x1350618 SO['反弹道具1'] = 0x2491630 SO['反弹道具2'] = 0x2491718 SO['释放能量'] = 0x245b368 SO['释放'] = 0x245b474 SO['无视道具1'] = 0x24928f4 SO['无视道具2'] = 0x2492e0c SO['无视道具3'] = 0x1b56830 SO['无视障碍'] = 0x243f4ac SO['无视侧撞'] = 0x243ffc0 SO['开局道具'] = 0x2586458 SO['能量穿透'] = 0x24564f4 SO['忙碌状态'] = 0x245a660 SO['无限能量'] = 0x2459f6c SO['Buff模式'] = 0x2460994 SO['派对聚能'] = 0x27c41d8 SO['得到分数'] = 0x253e598 SO['结束游戏'] = 0x27b7ab4 SO['锁定人机'] = 0x27baafc SO['派对新手'] = 0x255ffcc SO['派对省份'] = 0x26f3c0c SO['派对省排'] = 0x26f3b98 SO['派对全服'] = 0x26f3b24 SO['滑板消失'] = 0x2441e38 SO['三倍金币'] = 0x2412498 SO['得分倍增'] = 0x258b640 SO['宝物等级'] = 0x26a9398 SO['段位'] = 0x27f8058 SO['历史段位'] = 0x25b63b4 SO['道具满级'] = 0x1eaaecc SO['道具等级'] = 0x1eaad2c SO['退出登录'] = 0x2566c54 SO['超级跑者'] = 0x25ee7cc SO['使用技能'] = 0x1dcc034 SO['观战对手'] = 0x208a3d4 SO['替换人物'] = 0x1dca508 SO['替换滑板'] = 0x1dcb5dc SO['替换背饰'] = 0x1dccac8 SO['替换装扮'] = 0x1dcad94 SO['点击表情'] = 0x1edb1e8 SO['宝抽次数'] = 0x25c3560 SO['铁轨金币'] = 0x20c2924 SO['房间防踢'] = 0x244c570 SO['匹配人机'] = 0x27bc008 SO['道具聚能'] = 0x2460a28 SO['道具备份1'] = 0x25c99c8 SO['道具备份2'] = 0x2559fec SO['好友'] = 0x282c7e0 SO['踢人'] = 0x282ca38 SO['修改对抗赛'] = 0x222a668 SO['对抗赛好友匹配'] = 0x2483018 SO['观察者室'] = 0x127a02c SO['自救'] = 0x2227c08 SO['复活结算'] = 0x27a76dc SO['调出名称'] = 0x25a036c SO['派对新手1'] = 0x255ffcc SO['派对新手2'] = 0x256006c SO['改变角色'] = 0x222dedc SO['自变保安'] = 0x2226854 SO['时间'] = 0x207c054 SO['异常弹窗'] = 0x24b2408 SO['HFX目标'] = 0x243b988 SO['HP目标'] = 0x2491718 SO['HP使用人'] = 0x2491630 SO['PVP定人'] = 0x27baafc SO['全宝'] = 0x26b1028 SO['半宝'] = 0x26b1ab0 SO['强制下线'] = 0x23bbb84 SO['时间检测'] = 0x256a170 SO['行为弹窗'] = 0x24b26d0 SO['升级金币'] = 0x26a9874 SO['升级材料'] = 0x26a96e4 SO['道具无限时长'] = 0x25fd794 SO['人物购买按钮'] = 0x1db8cf4 SO['人物购买成功'] = 0x1dbde64 SO['滑板购买按钮'] = 0x1dd5ec8 SO['滑板购买成功'] = 0x1ddaafc SO['竞赛模式1'] = 0x28688ac SO['竞赛模式2'] = 0x2797d68 SO['竞赛模式3'] = 0x1bac8b8 SO['匹配机制1'] = 0x1edb5d0 SO['匹配机制2'] = 0x283df0c SO['匹配机制3'] = 0x127a02c SO['屏蔽时间检1'] = 0x27f8eb8 SO['屏蔽时间检2'] = 0x27f8e3c SO['屏蔽时间检4'] = 0x27f896c SO['屏蔽时间检5'] = 0x27f881c SO['屏蔽时间检6'] = 0x27f8738 SO['屏蔽时间检8'] = 0x256a170 SO['屏蔽时间检9'] = 0x27f83e8 SO['屏蔽时间检10'] = 0xe42be0 SO['一分40秒1'] = 0x1b564ac SO['一分40秒2'] = 0x27f8eb8 SO['一分40秒3'] = 0x27f8e3c SO['一分40秒4'] = 0x27f881c SO['一分40秒6'] = 0x27f8738 SO['一分40秒7'] = 0x256a170 SO['一分40秒8'] = 0x1b59f6c SO['一分40秒9'] = 0x1b59e54 SO['一分40秒10'] = 0x27bb774 SO['一分40秒11'] = 0x27bb7dc SO['轨道位置'] = 0x207cf80 SO['铁轨金币'] = 0x20c2924 SO['表情退出'] = 0x284e8cc SO['按钮复制房间'] = 0x1eaa564 SO['无视敏感词'] = 0x27ffd6c SO['房间防踢1'] = 0x2483864 SO['分数全服'] = 0x2779ca8 SO['分数全省'] = 0x2779dac SO['改字复活'] = 0x284e9f0 SO['好友踢人'] = 0x282ca38 SO['派对房间1'] = 0x1b059c8 SO['派对房间2'] = 0x2730b64 SO['人物速度'] = 0x207b9e0 SO['滑板时长'] = 0x2442390 SO['宝藏等级'] = 0x26a9398 SO['目标地图1'] = 0x20284a8 SO['目标地图2'] = 0x2029428 SO['目标路线'] = 0x1b05a50 SO['结算检测1'] = 0x27f881c SO['结算检测2'] = 0x256201c SO['结算检测3'] = 0x256a170 SO['结算检测4'] = 0x1b564ac SO['结算退出'] = 0x13f4328 SO['退出界面'] = 0x13f2570 SO['灵魂出窍'] = 0x13e3e90 SO['玩家离线'] = 0x1b58df0 SO['断开连接1'] = 0x277d7b0 SO['断开连接2'] = 0x1a29c54 SO['服务器1'] = 0x256201c SO['服务器2'] = 0x2569a50 SO['服务器3'] = 0x2569b00 SO['服务器4'] = 0xf8fd0c SO['人物全显'] = 0x1cd3ad4 SO['滑板全显'] = 0x1cd3fcc SO['API检值'] = 0xf52588 SO['拖尾'] = 0x207d858 SO['弹窗'] = 0x1413208 SO['PVP获胜者'] = 0x26f6f4c SO['离线形式'] = 0x1b564ac SO['胜利时间'] = 0x27f8450 SO['能量吸附'] = 0x24564f4 SO['能量吸附2'] = 0x24574b4 SO['撑杆'] = 0x106400c SO['能量消失'] = 0x2457700 SO['更新时刻'] = 0x3a123e8 SO['更新程序'] = 0x1be4424 SO['获取奖励'] = 0x14a0080 SO['滑板提速'] = 0x2440d20 SO['翻滚动作'] = 0x207f3e0 SO['翻滚更新'] = 0x208afc0 SO['触发事件'] = 0x24546cc SO['速度不变'] = 0x26ff658 SO['发送信息'] = 0x1030b28 SO['发送成功'] = 0x1030cb4 SO['金币分数'] = 0x2587ae8 local DH = {} DH.controlFlip = function(control,time) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotationY", {0, 360}) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.REVERSE) xuanzhuandonghua:setDuration(time) xuanzhuandonghua:start() end) end function ftz(xgzs,czmzs) tzzmm = 0 gg.clearResults() gg.setRanges(16384)--设置Xa内存 il2cpp = gg.getRangesList("il2cpp.so")[1]--获取il2cpp.so模块 gg.searchNumber("-1", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, il2cpp['start'], il2cpp['end'], 0)--搜索值 for k , v in pairs(gg.getResults(xgzs)) do tzzmm = tzzmm+1 random = math.random(1,6) if random == 1 then gg.setValues({{address=v.address , flags = 4 , value = czmzs}}) gg.setValues({{address=v.address + 4 , flags = 4 , value = '-516,948,194'}}) end if random == 2 then gg.setValues({{address=v.address , flags = 4 , value = '~A B +0x'..math.random(0,1000000)}}) gg.setValues({{address=v.address + 4 , flags = 4 , value = '-516,948,194'}}) end if random == 3 then gg.setValues({{address=v.address , flags = 4 , value = '~A B -0x'..math.random(0,1000000)}}) gg.setValues({{address=v.address + 4 , flags = 4 , value = '-516,948,194'}}) end if random == 4 then gg.setValues({{address=v.address , flags = 4 , value = '~A8 MOV W0, #1'}}) gg.setValues({{address=v.address + 4 , flags = 4 , value = '-516,948,194'}}) end if random == 5 then gg.setValues({{address=v.address , flags = 4 , value = '~A8 MOV W0, WZR'}}) gg.setValues({{address=v.address + 4 , flags = 4 , value = '-516,948,194'}}) end if random == 6 then gg.setValues({{address=v.address , flags = 4 , value = '~A8 MOV W0, #'..math.random(1,50)}}) gg.setValues({{address=v.address + 4 , flags = 4 , value = '-516,948,194'}}) end if tzzmm == 19 then gg.alert("开启成功") end end end function HX_value(hxvalue) gg.setRanges(gg.REGION_CODE_APP)--设置xa gg.searchNumber(0, gg.TYPE_DWORD,false, gg.SIGN_EQUAL, 0, -1, 0) local t = gg.getResults(hxvalue) for i,v in pairs(t) do gg.setValues({{address=v.address,flags=4,value=i*-9000000*i+10000}}) gg.clearResults() end end 项目名字='赤音project' 控件颜色='9349E8' 分页颜色=0xffa090ee rs=context:getResources():getDisplayMetrics() rs=tostring(rs) rs=string.gsub(rs,',',';') rs=string.gsub(rs,'DisplayMetrics','') load('rs='..rs)() dheight=rs.height dwidth=rs.width if tonumber(dheight)==nil then dwidth=1340 dheight=2300 end if dheight>dwidth then dheight,dwidth=dwidth,dheight end if not UI宽度 then UI宽度='280dp' end if not UI高度 then UI高度='320dp' end if not 项目名字 then 项目名字='赤音project' end import('android.content.res.ColorStateList') gg.setVisible(false) luajava.setFloatingWindowHide(true) local material3 = require 'material3' local context=material3:getContext() import 'android.graphics.Bitmap' import 'android.renderscript.Allocation' import 'android.renderscript.Element' import 'android.renderscript.RenderScript' import 'android.renderscript.ScriptIntrinsicBlur' import 'android.graphics.Canvas' import 'android.graphics.Rect' import "android.animation.ObjectAnimator" import "android.view.animation.Animation" import "android.animation.ArgbEvaluator" import "android.animation.ValueAnimator" import "android.graphics.Color" import'com.google.android.material.divider.MaterialDivider' import'com.google.android.material.progressindicator.*' import'com.google.android.material.dialog.MaterialAlertDialogBuilder' import'com.google.android.material.tabs.TabLayout' import'com.google.android.material.tabs.TabItem' import'androidx.coordinatorlayout.widget.CoordinatorLayout' import'com.google.android.material.button.MaterialButton' import'androidx.appcompat.widget.LinearLayoutCompat' import'com.google.android.material.slider.Slider' import'com.google.android.material.materialswitch.MaterialSwitch' import'com.google.android.material.card.MaterialCardView' import'androidx.transition.Transition' import'androidx.transition.Scene' import'androidx.transition.TransitionManager' import'androidx.transition.TransitionSet' import'androidx.transition.ChangeBounds' import'androidx.transition.Fade' import'androidx.constraintlayout.motion.widget.MotionLayout' import"android.view.animation.AccelerateInterpolator" import"android.view.animation.DecelerateInterpolator" import"androidx.interpolator.view.animation.FastOutLinearInInterpolator" import"androidx.interpolator.view.animation.LinearOutSlowInInterpolator" import 'android.animation.ValueAnimator$AnimatorUpdateListener' import 'android.animation.TypeEvaluator' import 'android.graphics.PorterDuff' import 'android.graphics.PorterDuffColorFilter' changan = {} local LayoutParams = luajava.bindClass('android.view.WindowManager$LayoutParams') context:setTheme(0x7f090069) function rgb_to_hex(r,g,b) r = math.min(math.max(r, 0), 255) g = math.min(math.max(g, 0), 255) b = math.min(math.max(b, 0), 255) local hex_r = string.format("%02X", r) local hex_g = string.format("%02X", g) local hex_b = string.format("%02X", b) return hex_r .. hex_g .. hex_b end function hexToRgb(hex) hex = hex:sub(-6,-1) local r = tonumber(hex:sub(1, 2), 16) local g = tonumber(hex:sub(3, 4), 16) local b = tonumber(hex:sub(5, 6), 16) return {r, g, b} end local rgbt=hexToRgb(控件颜色) switchs={} function 获取图片(txt) txt = string.url(txt,"de") if string.find(tostring(txt),"http") ~= nil then ntxt = string.sub(string.gsub(txt,"/","-"),-10,-1) if file.length("/sdcard/长安/图片/"..ntxt,false)<200 then file.download(txt,"/sdcard/长安/图片/"..ntxt) end txt = "/sdcard/长安/图片/"..ntxt end return luajava.getBitmapDrawable(txt) end window = context:getSystemService("window") -- 获取窗口管理器 function getLayoutParams2() local prm = luajava.new(WindowManager.LayoutParams) layoutParams1 = prm if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams1.type = prm.TYPE_APPLICATION_OVERLAY else layoutParams1.type = prm.TYPE_PHONE end layoutParams1.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams1.flags = prm.FLAG_NOT_FOCUSABLE -- 焦点设置Finish layoutParams1.gravity = Gravity.CENTER -- 重力设置 layoutParams1.width = prm.MATCH_PARENT -- 布局宽度 layoutParams1.height = prm.MATCH_PARENT -- 布局高度 return layoutParams1 end function getLayoutParams() LayoutParams = WindowManager.LayoutParams layoutParams = luajava.new(LayoutParams) if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams.type = LayoutParams.TYPE_APPLICATION_OVERLAY else layoutParams.type = LayoutParams.TYPE_PHONE end layoutParams.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL -- 焦点设置Finish layoutParams.gravity = Gravity.TOP|Gravity.LEFT -- 重力设置 layoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度 layoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度 return layoutParams end mainLayoutParams=getLayoutParams() xfcParams = getLayoutParams() local rs=RenderScript:create(app.context) local blur=ScriptIntrinsicBlur:create(rs, Element:U8_4(rs)) blur:setRadius(25) function getBlur(bit) local input=Allocation:createFromBitmap(rs,bit) blur:setInput(input) local output=Allocation:createTyped(rs, input:getType()) blur:forEach(output) output:copyTo(bit) return bit end function View2Bitmap(view,isblur) local width = view:getMeasuredWidth() local height = view:getMeasuredHeight() if width==0 then width=1 height=1 end local bitmap = Bitmap:createBitmap(width, height, Bitmap.Config.ARGB_8888); local canvas = Canvas(bitmap) canvas:translate(-view:getScrollX(), -view:getScrollY()) view:draw(canvas) if isblur then return getBlur(bitmap) else return bitmap end end changan.controlBig = function(control,time) luajava.runUiThread(function() ObjectAnimator():ofFloat(control,"scaleX", { 0, 0.4, 0.7, 1 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 0, 0.4, 0.7, 1 }):setDuration(time):start() end) end local dpi=context:getResources():getDisplayMetrics().densityDpi function getpx(x) if type(x)=='string' then if string.find(x,'dp') then x=string.gsub(x,'dp','') x=tonumber(x) end return x*(dpi/160) else return x end end function getdp(x) if type(x)=='number' then return x/(dpi/160)..'dp' else return x end end function getdp(x) if type(x)=='number' then return x/(dpi/160)..'dp' else return x end end hanshu = function(v, event) local view if control2==nil then view=floatWindow else if control2:isAttachedToWindow() then view=control2 else view=floatWindow end end local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = mainLayoutParams.x y = mainLayoutParams.y elseif Action == MotionEvent.ACTION_MOVE then isMove = true mainLayoutParams.x = tonumber(x) + (event:getRawX() - RawX) if mainLayoutParams.x<=0 then mainLayoutParams.x=0 end mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(view, mainLayoutParams) elseif Action == MotionEvent.ACTION_UP then mainLayoutParams.x = tonumber(x) + (event:getRawX() - RawX) if mainLayoutParams.x<=0 then mainLayoutParams.x=0 end mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(view, mainLayoutParams) if math.abs(mainLayoutParams.x-x)>=10 or math.abs(mainLayoutParams.y-y)>=10 then return true else end end end local UI宽度=getpx(UI宽度) local UI高度=getpx(UI高度) function checkimg(tmp,ii) if file.length("/sdcard/长安/图片/"..tmp[1],false)<200 then gg.toast("正在下载图片"..ii.."/"..#ckimg.."\n请耐心等待") file.download(tmp[2],"/sdcard/长安/图片/"..tmp[1]) end end ckimg = { {'hei_right','https://image.rlyun.fun/down.php/dfcc155180c66711a66a1c6540db5e03.'}, {'heir','https://image.rlyun.fun/down.php/1f8c38a24d8adda4f8f4f897ab2abfbd.'}, {'heix','https://image.rlyun.fun/down.php/1631f943c3cad4fd0aee9e611638198e.'}, {'classes3.dex','https://image.rlyun.fun/down.php/29e1a4722ddf781d8f8d95a68f4e07ad.dex'}, {'JCTTF.ttf','https://pan.jl8.top/down.php/971ef23ed96102a5bc5a032328331ec7.ttf'}, } luajava.post(function() floatWindow = { MaterialCardView, layout_height='match_parent', layout_width='match_parent', useCompatPadding=false, cardElevation='5dp', cardBackgroundColor=0xffffffff, strokeColor=0x00ffffff, onClick=function() end, onTouch=hanshu, __onCreate=function(v) v:setRadius(30) local c=ColorStateList({ {android.R.attr.state_pressed}, {-android.R.attr.state_pressed} }, { 0x00ffffff, 0x00ffffff }) v:setRippleColor(c) end, -- strokeWidth='0dp', { LinearLayout, __onFinish=function(v) _ENV['beforejz']=v end, layout_height='match_parent', layout_width='match_parent', orientation='vertical', gravity='center', { LinearProgressIndicator, indicatorTrackGapSize='0dp', trackStopIndicatorSize='0dp', id = luajava.ids['下载进度条'], layout_width = 'match_parent', layout_height = 'wrap_content', min = 0, max = #ckimg, progress=0, trackColor=0xffefefef, __onFinish=function(v) v:setIndicatorColor({0xfff8c8e0, 0xfff5a8d0, 0xfff290c0}) end, }, {TextView, layout_marginTop='4dp', text='首次运行,正在下载图片...', textSize='13sp', Typeface=font, id=luajava.ids['jzzy'], textColor='#000000', }, { LinearProgressIndicator, layout_marginTop='30dp', id = luajava.ids['加载进度条'], layout_width = 'match_parent', layout_height = 'wrap_content', indeterminate = true, __onFinish=function(v) v:setIndicatorColor({'0xFFFF4F4F', '0xFFF8BD46', '0xff1D8FFF'}) v:setIndeterminateAnimationType(0) end, }, {TextView, layout_marginTop='4dp', text=项目名字..' 启动中...', textSize='13sp', Typeface=font, textColor='#000000', } } } mainLayoutParams.x = dwidth/4-150 mainLayoutParams.y = dheight/8 mainLayoutParams.height = UI高度 mainLayoutParams.width = UI宽度 floatWindow=luajava.loadlayout(floatWindow) changan.controlBig(floatWindow,800) window:addView(floatWindow,mainLayoutParams) end) local cpIndicator1 = luajava.getIdView('下载进度条') for i = 1,#ckimg do checkimg(ckimg[i],i) cpIndicator1:setProgress(i, true) end luajava.runUiThread(function() luajava.getIdView('jzzy'):setText('图片检查完毕') end) local UIMAXY=getpx('154dp') local UIMAXX=getpx('280dp') animY=getpx('12dp') local ui = require('ui') local ljson = require('ljson') local shuaxin huiz = function() end function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end 摇一摇=true YoYoImpl = luajava.getYoYoImpl() vibra = context:getSystemService(Context.VIBRATOR_SERVICE) import'android.hardware.*'; ---@type android.hardware.SensorEventListener local sensor = luajava.createProxy('android.hardware.SensorEventListener', { onSensorChanged = functions.debounce(function() if 摇一摇==false then return 0 end if qhkai~=0 then qhkai=0 luajava.runUiThread(function() floatWindow:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(300):playOn(floatWindow) end) huiz() else qhkai=1 luajava.newThread(function() luajava.runUiThread(function() YoYoImpl:with("FadeOut"):duration(300):playOn(floatWindow) end) gg.sleep(400) luajava.runUiThread(function() floatWindow:setVisibility(View.GONE) end) draw.remove() end):start() gg.toast("HIDE") end end,500) }) dexloader=dex.loadfile('/sdcard/长安/图片/classes3.dex') MySensorManager = dexloader:loadClass('yaocn.rlyun.yaoyiyao.MySensorManager') luajava.runOnUiThread(function() MySensorManager(context, sensor) end) dex.loadfile('/sdcard/长安/图片/Lottie.dex') import'com.airbnb.lottie.*' function getTimeStamp(t) local str = os.date("%Y年%m月%d日%H:%M:%S",t) return str end function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end function 获取图片2(txt) txt = string.url(txt,"de") ntxt = string.sub(string.gsub(txt,"/","-"),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/长安/图片/"..ntxt) == false then file.download(txt,"/sdcard/长安/图片/"..ntxt) else if file.length("/sdcard/长安/图片/"..ntxt) <= 1 then file.download(txt,"/sdcard/长安/图片/"..ntxt) end end txt = "/sdcard/长安/图片/"..ntxt end return luajava.getBitmapDrawable(txt) end function getRes(x) return 获取图片("/sdcard/长安/图片/"..x) end function getCorner(gtvb1,gtvb3,gtvb4,gtvb5,g1,g2,g3,g4) if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end local jianbians = luajava.loadlayout({GradientDrawable}) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(gtvb1) jianbians:setStroke(gtvb4,gtvb5)--边框宽度和颜色 jianbians:setCornerRadii({g1,g1,g2,g2,g3,g3,g4,g4}) return jianbians end function getBG(DrawableColor,Radius,StrokeWidth,StrokeColor) if type(DrawableColor)~='table' then DrawableColor={DrawableColor,DrawableColor} end local jianbians = luajava.loadlayout({ GradientDrawable, color = 0xff000000, gradientType = GradientDrawable.LINEAR_GRADIENT, orientation = GradientDrawable.Orientation.TOP_BOTTOM , }) jianbians:setColors(DrawableColor) jianbians:setStroke(StrokeWidth or 0,StrokeColor or 0xffffffff) if type(Radius)=='table' then jianbians:setCornerRadii({Radius[1],Radius[1],Radius[2],Radius[2],Radius[3],Radius[3],Radius[4],Radius[4]}) else jianbians:setCornerRadius(Radius or 0) end return jianbians end function getVerticalBG(gtvb1,gtvb3,gtvb4,gtvb5) if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end local jianbians = luajava.loadlayout({GradientDrawable}) jianbians:setCornerRadius(gtvb3) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(gtvb1) jianbians:setStroke(gtvb4,gtvb5)--边框宽度和颜色 return jianbians end function getHorizontalBG(gtvb1,gtvb3,gtvb4,gtvb5) if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end local jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(gtvb3) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(gtvb1) jianbians:setStroke(gtvb4,gtvb5)--边框宽度和颜色 return jianbians end changan.controlFlip = function(control,time) luajava.runUiThread(function() xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotationY", { 0, 360 }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.REVERSE) xuanzhuandonghua:setDuration(time) xuanzhuandonghua:start() end) end changan.controlWater = function(control,time) luajava.runUiThread(function() ObjectAnimator():ofFloat(control,"scaleX", { 1, 0.8, 0.9, 1 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 1,0.8,0.9,1 }):setDuration(time):start() end) end changan.controlSmall = function(control,time) luajava.runUiThread(function() ObjectAnimator():ofFloat(control,"scaleX", { 1, 0.7, 0.4, 0 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 1, 0.7, 0.4, 0 }):setDuration(time):start() end) end changan.controlBig2 = function(control,time) luajava.runUiThread(function() control:setPivotX(control:getWidth()/2) control:setPivotY(0) ObjectAnimator():ofFloat(control,"scaleX", { 0, 0.4, 0.7, 1 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 0, 0.1, 0.4, 1 }):setDuration(time):start() end) end changan.controlSmall2 = function(control,time) luajava.runUiThread(function() control:setPivotX(control:getWidth()/2) control:setPivotY(0) ObjectAnimator():ofFloat(control,"scaleX", { 1, 0.7, 0.4, 0 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 1, 0.4, 0.1, 0 }):setDuration(time):start() end) end gg.setVisible(false) function guid() seed = { 'e','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' } tb = {} for i = 1,32 do table.insert(tb,seed[math.random(1,16)]) end sid = table.concat(tb) return string.format('%s%s%s', string.sub(sid,1,8), string.sub(sid,10,12), string.sub(sid,21,22)) end import("android.media.AudioManager") audi = context:getSystemService("audio") audiotype = { AudioManager.STREAM_ALARM, --手机闹铃的声音 AudioManager.STREAM_MUSIC, --手机音乐的声音 AudioManager.STREAM_NOTIFICATION, --系统提示的通知 AudioManager.STREAM_RING, --电话铃声的声音 AudioManager.STREAM_SYSTEM, --手机系统的声音 AudioManager.STREAM_VOICE_CALL, --语音电话的声音 AudioManager.STREAM_DTMF, --DTMF音调的声音 --AudioManager.STREAM_BLUETOOTH_SCO, } yinl = {} for i = 1,#audiotype do yinl[i] = {} yinl[i].type = audiotype[i] yinl[i].min = audi:getStreamMinVolume(audiotype[i]) yinl[i].max = audi:getStreamMaxVolume(audiotype[i]) yinl[i].now = audi:getStreamVolume(audiotype[i]) end yltype = 0 function jianting3(func) yinln = {} for i = 1,#audiotype do yinln[i] = {} yinln[i].type = audiotype[i] yinln[i].now = audi:getStreamVolume(audiotype[i]) if yinln[i].now > yinl[i].now then yinl[i].now = yinln[i].now if yltype == 1 then yltype = 0 func() end elseif yinln[i].now < yinl[i].now then yinl[i].now = yinln[i].now if yltype == 0 then yltype = 1 func() end end end end local screenD=false function defaultP(x) if not screenD then screenD=x return end if x==screenD then return end screenD=x if UI高度 <= UIMAXX then UI高度 = UIMAXX end mainLayoutParams.height = UI宽度 mainLayoutParams.width = UI高度 UI高度, UI宽度 = UI宽度, UI高度 window:updateViewLayout(floatWindow, mainLayoutParams) hx = mainLayoutParams.height hy = mainLayoutParams.width if IsLandStatus == 1 then return end end suofang = function(v, event) if isLocked then hanshu(v,event) return 0 end local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then print(View2Bitmap(floatWindow,true)) isMove = false RawX = event:getRawX() RawY = event:getRawY() hx = mainLayoutParams.height hy = mainLayoutParams.width if hx == 0 or hx==-2 then hx = UIMAXX hy = UIMAXY end elseif Action == MotionEvent.ACTION_MOVE then isMove = true UI高度 = tonumber(hx) + (event:getRawY() - RawY) if UI高度 > UIMAXY then mainLayoutParams.height = UI高度 else UI高度=UIMAXY end UI宽度 = tonumber(hy) + (event:getRawX() - RawX) if UI宽度 > UIMAXX then mainLayoutParams.width = UI宽度 else UI宽度=UIMAXX end --隐藏() window:updateViewLayout(floatWindow, mainLayoutParams) elseif Action == MotionEvent.ACTION_UP then end end setOnExitListener(function() luajava.post(function() window:removeView(floatWindow) if verB~=nil then window:removeView(verB) window:removeView(horiB) end end) luajava.setFloatingWindowHide(false) luajava.setFloatingWindowHide(false) gg.setVisible(true) tuichu=1 end) pic_heir=获取图片("/sdcard/长安/图片/heir") pic_heiright=获取图片('/sdcard/长安/图片/hei_right') function changan.menu(sview) Gsview=sview if #sview~=#分页名字 then gg.alert('分页名字数量与菜单配置数量不对应\n请检查你是否写错了') os.exit() end sview[#sview+1]=sview[#sview] PageNum=#分页名字 sview=sview huiz() local mainView2 = luajava.post(function() return luajava.loadlayout({ LinearProgressIndicator, id = luajava.ids['loading'], layout_width = 'match_parent', layout_height = '10dp', indeterminate = true, __onFinish=function(v) v:hide() v:setIndicatorColor({0xff3455FF, 0xff672AFF, 0xff1D8FFF}) v:setIndeterminateAnimationType(0) end, }) end) local dp20=getpx('20dp') local dp60=getpx('dp60') local dp130=getpx('130dp') local fdp20= -dp20 menus = { LinearLayout, layout_height='match_parent', layout_width='match_parent', } for i=1,PageNum do local tmp={ LinearLayout, id=luajava.newId("layoutm"..i), orientation="vertical", layout_width="match_parent", layout_height="wrap_content", padding={'0dp','10dp','0dp','37dp'}, } table.insert(menus,{ ScrollView, __onFinish=function(v) _ENV['layout'..i]=v v:setVerticalScrollBarEnabled(false) end, padding={'90dp','0dp','10dp','0dp'}, layout_width="match_parent", layout_height="wrap_content", tmp }) end local bottombar={ LinearLayout, layout_width="wrap_content", layout_height="match_parent", layout_gravity='right', orientation='vertical', elevation='3dp', { LinearLayout, orientation='horizontal', gravity='left', layout_height='match_parent', layout_weight=1, layout_width='match_parent', }, { ImageView, padding = "2dp", src ="/storage/emulated/0/Pictures/WeiXin/mmexport1749287937877.png", layout_width = "40dp", layout_height = "40dp", onClick = function() end, onTouch = suofang, }, } changan.colorf = function(control,colors,t) control:post(function() colorAnim = ObjectAnimator:ofInt(control,"colorFilter", colors) colorAnim:setDuration(t) colorAnim:setEvaluator(ArgbEvaluator()) colorAnim:setRepeatCount(ValueAnimator.INFINITE) colorAnim:setRepeatMode(ValueAnimator.REVERSE) end) end local cebian={ LinearLayout, orientation='vertical', layout_height='match_parent', layout_width='match_parent', gravity='center_horizontal', } slctb=getVerticalBG({分页颜色,分页颜色},20,2,0xff7a68e5) function getTimeStamp(t) local str = os.date("%H:%M:%S ",t) return str end jms={ "https://pan.jl8.top/view.php/56486407cf0a1c2f9279775137a5d72a.png", "https://pan.jl8.top/view.php/daa0ad700a8264be45ca98a4ef17d0d3.png", "https://pan.jl8.top/view.php/012fd1bb0f95382cfc09b8a325f45501.png", "https://pan.jl8.top/view.php/0d7874422016705b1ea4f7d85b926e9d.png", "https://pan.jl8.top/view.php/65aab7187b5fc97d5589488c5bdaa87b.png", "https://pan.jl8.top/view.php/3026c90159223d9af3d449689c93e4e2.png", } for i = 1,#分页名字 do table.insert(cebian,{ LinearLayout, id="fymzqh"..i, layout_height = "wrap_content", layout_width = "match_parent", layout_marginTop = "1dp", layout_marginBottom = "1dp", onClick = function() 切换(i) DH.controlFlip("fymzqh"..i,800) end, { LinearLayout, id='jmp'..i, background=slctb, gravity = "center_vertical", elevation='2dp', layout_margin='3dp', layout_height = "24dp", layout_width = "24dp", layout_weight=1, { TextView, text = 分页名字[i], gravity = "center", elevation='2dp', textSize = "10sp", Typeface=font, id = "jmt" .. i, textColor = "#000000", layout_height = "match_parent", layout_width = "match_parent", layout_weight=1, }, { ImageView, layout_height = "29dp", layout_width = "29dp", src =jms[i], layout_gravity="center|right", }, } }) end local cebian={ ScrollView, layout_width='match_parent', layout_height='match_parent', orientation='horizontal', gravity='left', cebian } local cebian={ LinearLayout, layout_width='match_parent', layout_weight=1, layout_height='match_parent', orientation='vertical', gravity='center_horizontal', cebian } local menui=luajava.loadlayout({ FrameLayout,--菜单 layout_height = "match_parent", layout_width = "match_parent", gravity = "center_horizontal", onClick = function() end, onTouch = hanshu, {LinearLayout, layout_height='match_parent', layout_width='match_parent', {FrameLayout, layout_height='match_parent', layout_width='match_parent', menus, }}, { LinearLayout, layout_width='80dp', layout_height='match_parent', orientation='vertical', gravity='center', background='#ffffff', onClick=function(v) end, onTouch=hanshu, { LinearLayout, layout_width='match_parent', layout_height='match_parent', orientation='vertical', gravity='center_horizontal', layout_margin='5dp', elevation='4dp', background=getBG(0xffffffff,20), { MaterialCardView, layout_width='50dp', layout_height='50dp', useCompatPadding=false, layout_margin='5dp', cardElevation='5dp', cardBackgroundColor=0xffffffff, strokeColor=0x00ffffff, onClick=隐藏, onTouch=hanshu, __onCreate=function(v) v:setRadius(20) local c=ColorStateList({{android.R.attr.state_pressed},{-android.R.attr.state_pressed}}, {0x00ffffff,0x00ffffff}) v:setRippleColor(c) end, { ImageView, layout_width='match_parent', layout_height='match_parent', gravity='center', background=获取图片(左上角头像), }, }, { LinearLayout, layout_width='match_parent', layout_height='wrap_content', orientation='horizontal', gravity='center_vertical', { TextView, layout_width='match_parent', gravity='center', textSize='10sp', Typeface=font, layout_marginBottom='4dp', layout_marginTop='4dp', textColor='#000000', __onFinish=function(v) timet=v luajava.startThread(function() while true do luajava.runUiThread(function() timet:setText(getTimeStamp(os.date())) end) gg.sleep(1000) end end) end, }, }, cebian, }, }, { LinearLayout, layout_gravity='center_horizontal|bottom', background='#dd27272A', layout_width='match_parent', --layout_height='20dp', onClick=function() end, onTouch=hanshu }, bottombar }) transManager=TransitionManager() playingjson=file.read('/sdcard/Download/Animation - 1723566050310.json') dp35=getpx('39dp') local ckou=luajava.loadlayout({ FrameLayout, id = "ckou", layout_height = "match_parent", layout_width = "match_parent", menui, }) changan.loadViews(PageNum,sview) control2=luajava.loadlayout{LinearLayout, { MaterialCardView, layout_width = "40dp", layout_height = "40dp", useCompatPadding=false, cardBackgroundColor=0xffffffff, strokeColor=0x00ffffff, onClick=function() end, __onCreate=function(v) v:setRadius(25) local c=ColorStateList({{android.R.attr.state_pressed},{-android.R.attr.state_pressed}}, {0x00ffffff,0x00ffffff}) v:setRippleColor(c) end, { ImageView, background = 获取图片2(悬浮窗图标), layout_width = "40dp", layout_height = "40dp", onTouch = hanshu, onClick = 隐藏, } }, } floatmain={ FrameLayout, id='floatmain', fillViewPort=true, layout_height='match_parent', layout_width='match_parent', onClick = function() end, onTouch = hanshu, ckou, } function checkSize() end luajava.post(function() floatmain=luajava.loadlayout(floatmain) luajava.runUiThread(function() floatWindow:setPivotY(25) floatWindow:setPivotX(25) control2:setPivotY(25) control2:setPivotX(25) YoYoImpl:with("FadeIn"):duration(800):playOn(floatmain) end) local vertiParam=getLayoutParams2() vertiParam.width=0 local horiParam=getLayoutParams2() horiParam.height=0 window:addView(luajava.loadlayout({ LinearLayout, __onFinish=function(v) verB=v 切换(1) end }),vertiParam) window:addView(luajava.loadlayout({ LinearLayout, __onFinish=function(v) isVertical=true defaultP(1) horiB=v luajava.startThread(function () while true do gg.sleep(200) luajava.runUiThread(function () local Vheight=verB:getMeasuredHeight() local Vwidth=horiB:getMeasuredWidth() if Vheight>Vwidth then defaultP(1) else defaultP(0) end end) end end) end }),horiParam) floatWindow:addView(floatmain) floatWindow:removeView(beforejz) luajava.startThread(function() gg.sleep(500) luajava.runUiThread(function() floatWindow:requestFocus() mainLayoutParams.x=mainLayoutParams.x+1 window:updateViewLayout(floatWindow, mainLayoutParams) end) end) beforejz=nil end) qhkai = 0 显示 = 1 qiehuan = function() if qhkai == 0 then yinll = 0 qhkai = 1 draw.remove() gg.toast("HIDE") luajava.runUiThread(function() nowxfc2=floatWindow:isAttachedToWindow() if nowxfc2 then YoYoImpl:with("FadeOut"):duration(300):playOn(floatWindow) else YoYoImpl:with("FadeOut"):duration(300):playOn(control2) end end) gg.sleep(400) luajava.runUiThread(function() if nowxfc2 then floatWindow:setVisibility(View.GONE) else control2:setVisibility(View.GONE) end end) else qhkai = 0 yinll = 1 huiz() luajava.runUiThread(function() nowxfc2=floatWindow:isAttachedToWindow() if nowxfc2 then floatWindow:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(300):playOn(floatWindow) else control2:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(300):playOn(control2) end end) end end if yyfunc~=nil then yyfunc() end if ylfunc~=nil then ylfunc() end while true do if tuichu==1 then os.exit() end if 音量键 then jianting3(qiehuan) gg.sleep(300) end if isPlaying and isReady and #musiclist ~= 0 then luajava.runOnUiThread(function() ntime:setText(ctime(math.floor(mediaPlayer:getCurrentPosition()/1000))) hkuai:setValue(math.floor(mediaPlayer:getCurrentPosition()/1000)) end) end gg.sleep(60) end end function 切换(x) luajava.runUiThread(function() 当前ui=x for i = 1,#分页名字 do _ENV['jmp'..i]:setBackground(slctb) _ENV["jmt" ..i]:setTextColor(0xff6b5cd9) --选中的字体颜色 _ENV['layout'..i]:setVisibility(View.GONE) end _ENV["jmt" .. 当前ui]:setTextColor(0xfff5e0eb) --选中的字体颜色 _ENV['layout'..当前ui]:setVisibility(View.VISIBLE) end) end function 隐藏() vibra:vibrate(6) luajava.runUiThread (function () if 显示== 0 then 显示 = 1 mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL mainLayoutParams.height = UI高度 mainLayoutParams.width = UI宽度 if control2:isAttachedToWindow() and not floatWindow:isAttachedToWindow() then luajava.startThread(function() luajava.runUiThread(function() changan.controlSmall(control2,600) changan.controlBig(floatWindow,600) mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL mainLayoutParams.width = UI宽度 -- 布局宽度 mainLayoutParams.height = UI高度 -- 布局高度 if not floatWindow:isAttachedToWindow() then window : addView (floatWindow , mainLayoutParams) end end) gg.sleep(600) luajava.runUiThread(function() window:removeView(control2) end) zzdh=false end) end else 显示=0 zzdh=true if floatWindow:isAttachedToWindow() and not control2:isAttachedToWindow() then luajava.startThread(function() luajava.runUiThread(function() changan.controlSmall(floatWindow,600) changan.controlBig(control2,600) mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE mainLayoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度 mainLayoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度 if not control2:isAttachedToWindow() then window : addView (control2 , mainLayoutParams) end end) gg.sleep(600) luajava.runUiThread(function() window:removeView(floatWindow) end) zzdh=false end) end end end) end local RadTint=ColorStateList({ {android.R.attr.state_checked}, {-android.R.attr.state_checked}, {}, }, { '0xff'..控件颜色, '0x55161616', 0xffffffff }) function changan.intcheck(name,func1,func2) local nid = name..guid() local func = 开关(name,func1,func2,nid) if not name then name = "未设置" end return { LinearLayout, layout_width = 'match_parent', layout_weight=1, layout_height = "42dp", layout_marginTop = "1dp", layout_marginBottom = "1dp", padding = "1dp", { LinearLayout, padding="3dp", layout_width = 'match_parent', layout_height = "wrap_content", gravity = "center_vertical", --background=getVerticalBG({0xffFFFDF2,0xddffffff,0xffFFFDF2},15,8,0xffFFDA71), { CheckBox, id=luajava.newId(nid.."t"), layout_width = '32dp', layout_height = '32dp', padding = "0dp", __onFinish=function(v) v:setButtonTintList(RadTint) end, onClick = function() luajava.newThread(function() func() end):start() end, },{ TextView, gravity = "left", text = name, textColor=0xff000000, textSize = "14sp", Typeface=font, layout_width = 'match_parent', layout_weight=1, onClick = function() local v=luajava.getIdView(nid..'t') if v:isChecked() then v:setChecked(false) else v:setChecked(true) end luajava.newThread(function() func() end):start() end, }, } } end changan.controlRotation9 = function(control, time,t) luajava.runUiThread(function() xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", { time,t }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.RESTART) xuanzhuandonghua:setDuration(400) xuanzhuandonghua:start() end) end function visi (tid) vibra:vibrate(4) if boxes[tid][5] then boxes[tid][5]=false transManager:go(boxes[tid][1],boxes[tid][4]) changan.controlRotation9(boxes[tid][3],90,0) boxes[tid][3]:setColorFilter(0xff161616) else boxes[tid][5]=true transManager:go(boxes[tid][2],boxes[tid][4]) changan.controlRotation9(boxes[tid][6],0,90) boxes[tid][6]:setColorFilter('0xffFEEEF5') end end function 开关(name , func1 , func2 ) local localname=name local tname=name..guid() if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1 ) == "function" then return function() namers = _ENV [ tname ] if namers ~= "开" then _ENV [ tname ] = "开" pcall(func1 ) else _ENV [ tname ] = "关" pcall(func2 ) end end end end swfuncs,buts,sliders,boxes,textvs={},{},{},{},{} local swcDraw=ColorStateList({ {android.R.attr.state_checked}, {-android.R.attr.state_checked}, }, { 0xFFF8C8E0, 0x33d7d7d7, }) local swcThumb=ColorStateList({ {android.R.attr.state_checked}, {android.R.attr.state_pressed}, {-android.R.attr.state_pressed}, }, { 0xfffef5fa, '0x88'..控件颜色, 0x55161616 }) function changan.getedit (name) edit = tostring (luajava.getIdValue (_ENV [name]) : getText ()) return edit end function changan.setedit (name , txt) txt = tostring (txt) luajava.runUiThread (function () luajava.getIdValue (_ENV [name]) : setText (txt) end ) end function getButtonBG() local selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, getVerticalBG({0xffd7d7d7,0xffd7d7d7},20)) selector:addState({ -android.R.attr.state_pressed }, getVerticalBG({0xffffffff,0xffffffff},20)) return selector end function changan.text(text,color,size,isjz) if not color then color="#161616" end if color=='跟随主题' then color='#7F5EFF' end if isjz then jzjz='center' else jzjz='left' end return { TextView, text=text, textColor=color, textSize=size, Typeface=font, gravity=jzjz, layout_height="wrap_content", layout_width="match_parent", autoSizeTextType="uniform", } end function changan.button(txt,func,txtc) if not txt then txt = "未设置" end if not txtc then txtc="#000000" end if txtc=='跟随主题' then txtc='#190335' end local tid="Cbutton".. guid() return { LinearLayout, layout_width = "match_parent", gravity = "center_vertical", layout_margin = "4dp", background = getButtonBG(), elevation='2dp', padding="10dp", onClick = function(v) changan.controlWater(v,300) luajava.newThread(func):start() end, { TextView, --id = luajava.newId(tid), textColor = txtc, text = txt, textSize = "13sp", Typeface=font, layout_height = "wrap_content", layout_width = "match_parent", layout_weight=1, },{ImageView, src=pic_heir, layout_height="14dp", layout_width="14dp", } } end function changan.switch(name,func1,func2,miaoshu) local nid = name..guid() swfuncs[nid]= {func1,func2} if not name then name = "未设置" end local rest ={ LinearLayout, layout_width = 'match_parent', layout_height = "48dp", gravity = "center_vertical", { LinearLayout, layout_width = 'match_parent', layout_height = "40dp", layout_margin="4dp", gravity = "center_vertical", background = luajava.loadlayout { GradientDrawable , color = 0xffffffff , cornerRadius = 20}, elevation="2dp", padding = { "0dp","0dp","6dp","0dp" }, { TextView, gravity = "top", text = name, textColor = '#000000', textSize = "13sp", Typeface=font, layout_weight = 1, layout_width = '80dp', layout_marginLeft = "10dp", layout_marginRight = "20dp", }, { TextView, gravity = "center", layout_height = "match_parent", text = miaoshu, textSize = "11sp", Typeface=font, layout_width = "wrap_content", layout_marginLeft = "-50dp", layout_weight = 1, textColor = "#A5A5A5", }, { MaterialSwitch, id=luajava.newId(nid), __onFinish=function(v) table.insert(switchs,v) v:setTrackTintList(swcDraw) v:setThumbTintList(swcThumb) luajava.setInterface(v, 'setOnCheckedChangeListener', {onCheckedChanged=function(view,isc) if isc then local func=swfuncs[nid][1] or function() end if func~=nil then luajava.startThread(func) end else local func=swfuncs[nid][2] or function() end if func~=nil then luajava.startThread(func) end end end}) end, layout_width = 'wrap_content', layout_height = 'wrap_content', }} } return rest end function changan.check(cklist) if #cklist==0 then return nil end local rest = { LinearLayout, layout_width = 'match_parent', layout_height = "wrap_content", gravity = "center", orientation="vertical", } for i = 1, #cklist,3 do local tempTable = {LinearLayout, layout_width = 'match_parent', layout_height = "wrap_content", gravity = "left", orientation="horizontal" } for j = 0, 2 do if cklist[i + j] ~= nil then local name = cklist[i + j][1] local func1 = cklist[i + j][2] local func2 = cklist[i + j][3] if not name then name = "未设置" end rstt = changan.intcheck(name,func1,func2) table.insert(tempTable, rstt) else table.insert(tempTable, {LinearLayout, layout_width = 'match_parent', layout_weight=1,}) end end table.insert(rest, tempTable) end return rest end function changan.box(views) local tid = "box".. guid () boxes[tid]={} local firadio = { LinearLayout , layout_width = 'match_parent' , layout_height = "wrap_content" , layout_margin = "4dp" , orientation = "vertical" , background=luajava.loadlayout { GradientDrawable , color = 0xffffffff , cornerRadius = 20 }, elevation='2dp', __onFinish=function(v) boxes[tid][2]=Scene(v,boxes[tid][2]) boxes[tid][1]=Scene(v,boxes[tid][1]) boxes[tid][4]=luajava.new(TransitionSet) local bds=luajava.new(ChangeBounds) bds:setDuration(500) boxes[tid][4]:addTransition(bds) boxes[tid][4]:setDuration(500) end, } if type (views [1]) == "string" or type (views [1]) == "number" then else gg.alert ("changan.box的table内第一个元素必须是string") os.exit () end local but={ LinearLayout , layout_width = 'match_parent' , layout_height = "40dp" , gravity = "center_vertical" , layout_margin = "3dp" , background = getButtonBG(), onClick = function () visi (tid) end, { TextView , text = views [1] , textSize = "13sp" , Typeface=font, layout_marginLeft = "15dp" , layout_width = "match_parent" , layout_weight=1, textColor = "#000000" , gravity = "left" , },{ LinearLayout , padding={"0dp","0dp","10dp","0dp"}, layout_width = "30dp" , layout_height = "30dp" , gravity = "center", { ImageView , src = pic_heiright, layout_width = "24dp" , layout_height = "24dp" , colorFilter=0xff161616 } } } boxes[tid][1]=luajava.loadlayout{ LinearLayout, layout_width='match_parent', { LinearLayout , layout_width = 'match_parent' , layout_height = "40dp" , gravity = "center_vertical" , layout_margin = "3dp" , background = getButtonBG(), onClick = function () visi (tid) end, { TextView , text = views [1] , textSize = "13sp" , Typeface=font, layout_marginLeft = "15dp" , layout_width = "match_parent" , layout_weight=1, textColor = "#000000" , gravity = "left" , },{ LinearLayout , padding={"0dp","0dp","10dp","0dp"}, layout_width = "30dp" , layout_height = "30dp" , gravity = "center", { ImageView , src = pic_heiright, layout_width = "24dp" , layout_height = "24dp" , colorFilter=0xff161616, __onFinish=function(v) boxes[tid][3]=v end, } } } } table.insert(firadio,but) local radios = { LinearLayout, orientation = "vertical", layout_width = 'match_parent', } for i = 2 , # views do radios [# radios + 1] = views [i] end boxes[tid][2]=luajava.loadlayout{ LinearLayout, layout_width='match_parent', orientation = "vertical" , { LinearLayout , layout_width = 'match_parent' , layout_height = "40dp" , gravity = "center_vertical" , layout_margin = "3dp" , background = getButtonBG(), onClick = function () visi (tid) end, { TextView , text = views [1] , textSize = "13sp" , Typeface=font, layout_marginLeft = "15dp" , layout_width = "match_parent" , layout_weight=1, textColor = "#000000" , gravity = "left" , },{ LinearLayout , padding={"0dp","0dp","10dp","0dp"}, layout_width = "30dp" , layout_height = "30dp" , gravity = "center", { ImageView , src = pic_heiright, layout_width = "24dp" , layout_height = "24dp" , colorFilter='0xff'..控件颜色, __onFinish=function(v) boxes[tid][6]=v end, } } }, radios } return firadio end function changan.edit(name , hint) _ENV [name] = name..guid () if not hint then hint = "点击输入文字" end return { LinearLayout , layout_width = 'match_parent' , layout_height = "40dp" , layout_marginTop = "5dp" , layout_marginBottom = "5dp" , layout_marginLeft = "0dp" , layout_marginRight = "0dp" , gravity = "center_vertical" , { EditText , background = getButtonBG(), __onFinish=function(v) v:setHintTextColor(0xff545454) end, gravity = "center" , hint = hint , textColor='#000000', textSize = "13sp", Typeface=font, layout_height = "40dp" , layout_marginBottom = "-2dp", id=luajava.newId(_ENV [name]), layout_width = 'match_parent' , } } end function changan.seek(name,bian,smin,smax,nows) _ENV[bian] =nows local smin=tonumber(smin) local smax=tonumber(smax) if _ENV[bian] == nil then _ENV[bian] = 1.0 end if not name then name = "未设置" end local names = name..guid() kid=guid().."sk" return { LinearLayout, id=luajava.newId(kid), layout_width = 'match_parent', layout_hight = "match_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", gravity = "center_vertical", { TextView, padding={"5dp","10dp","0dp","10dp",}, gravity = "top", textColor='#000000', text = name, id = luajava.newId(names), layout_width = '100dp', --layout_marginLeft = "5dp", layout_marginRight = "0dp", }, { Slider, thumbHeight='23dp', trackHeight='15dp', trackStopIndicatorSize='0dp', tickVisible=false, __onFinish=function(v) table.insert(sliders,v) v:setTrackActiveTintList(ColorStateList({{},},{'0xff'..控件颜色})) v:setTrackInactiveTintList(ColorStateList({{},},{'0x55'..控件颜色})) v:setThumbTintList(ColorStateList({{},},{'0xff'..控件颜色})) luajava.setInterface(v, 'addOnChangeListener', function(SeekBar, var2, var3) _ENV[bian] = var2 end) end, layout_width = 'match_parent', id=luajava.newId(name.."seekbar"), valueFrom=smin, valueTo=smax, value=nows, stepSize=1.0, } } end function changan.radio(cklist) local rest = { LinearLayout , layout_width = 'match_parent' , layout_height = "wrap_content" , gravity = "top" , orientation = "vertical" , } if type (cklist [1]) == "string" then rds=2 rest [# rest + 1] = { TextView , gravity = "left" , padding="5dp", text = cklist [1] , textSize = "13sp" , Typeface=font, textColor = '#000000' , layout_width = 'match_parent' , layout_height = 'wrap_content' , layout_marginLeft = "10dp" , layout_marginRight = "5dp" , layout_marginTop = "0dp" , layout_marginBottom = "0dp" , } else rds=1 end local restt={ RadioGroup , layout_width = 'match_parent' , layout_height = "wrap_content" , layout_margin = "4dp" , gravity = "top" , orientation = "vertical" , elevation='2dp', background=luajava.loadlayout { GradientDrawable , color = 0xffffffff , cornerRadius = 20 }, } for i = rds , # cklist do local name = cklist [i] [1] local func = cklist [i] [2] if not name then name = "未设置" end local nid = name..guid () restt [# restt + 1] = { RadioButton , gravity = "top" , text = name , textSize="13sp", Typeface=font, gravity='center_vertical', textColor = '#000000' , layout_width = 'match_parent' , layout_height = 'wrap_content' , layout_marginLeft = "2dp" , layout_marginRight = "2dp" , __onFinish=function(v) v:setButtonTintList(RadTint) end, onClick=function() luajava.startThread(func) end } end rest [# rest + 1] = restt return rest end function changan.image(img,height,width,pad,func) if not func then func=function() end end if not pad then pad="0dp" end if not height then height="80dp" end if not width then width="80dp" end return { LinearLayout, layout_height="wrap_content", layout_width="match_parent", gravity="center", { ImageView, layout_height=height, layout_width=width, padding=pad, src=获取图片(img), onClick=function() luajava.newThread(func):start() end, }} end function changan.loadViews(PageNum) local i=1 local gsi=Gsview[i] for j=1,#gsi do if type(gsi[j])=='table' then local CreatedView CreatedView=gsi[j] local ParentV=luajava.loadlayout({LinearLayout,CreatedView}) CreatedView=ParentV:getChildAt(0) ParentV:removeView(CreatedView) local layoutm=luajava.getIdView('layoutm'..i) luajava.runUiThread(function() layoutm:addView(CreatedView) end) elseif type(gsi[j])=='userdata' then luajava.getIdView('layoutm'..i):addView(gsi[j]) end end for i=2,PageNum do local gsi=Gsview[i] luajava.startThread(function() for j=1,#gsi do if type(gsi[j])=='table' then local CreatedView CreatedView=gsi[j] local ParentV=luajava.loadlayout({LinearLayout,CreatedView}) CreatedView=ParentV:getChildAt(0) ParentV:removeView(CreatedView) local layoutm=luajava.getIdView('layoutm'..i) luajava.runUiThread(function() layoutm:addView(CreatedView) end) elseif type(gsi[j])=='userdata' then luajava.getIdView('layoutm'..i):addView(gsi[j]) end end end) end end function huiz() --绘制内容必须写在这里否则会消失 draw3 = require("draw3") draw.setStyle("填充") draw.setColor('#F8E8F0') end 左上角头像='http://vip.okig.top/view.php/9ca6fa77335cf75b298fb991d25980a4.png' 悬浮窗图标='http://vip.okig.top/view.php/9ca6fa77335cf75b298fb991d25980a4.png' 分页名字={ "公告", "防封", "刷号", "竞赛", "音乐", "设置", } changan.menu({ {---第一页 changan.button("选择进程", function() gg.setProcessX() string.toMusic("请选择地铁跑酷进程,选第一个") end), changan.button("了解此项目", function() gg.toast(' AR ') gg.alert('作者Crève.') gg.alert('作者QQ166498536') end), changan.button("欢迎使用赤音", function() end), changan.button("已适配爱丁堡版本", function() end), changan.switch("过新手教程", function() SO_PT(SO['新手'],4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic("新手教程已跳过,直接结算即可") end, function() end), }, {---第二页 changan.button("点击锁定进程", function() gg.setProcess('com.kiloo.subwaysurf') string.toMusic("已锁定成功") end), changan.box({"登录", changan.switch("闪退", function() function setvalue(address, flags, value) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = flags tt[1].value = value gg.setValues(tt) end so=gg.getRangesList('libtersafe2.so')[1].start py=0x4FD6AC setvalue(so+py,4,"~A8 RET") py=0x4FD6BC setvalue(so+py,4,"~A8 RET") py=0x4FD6DC setvalue(so+py,4,"~A8 RET") py=0x4FD6FC setvalue(so+py,4,"~A8 RET") gg.toast("防闪退:开启") string.toMusic('防闪已加载') end), changan.switch("环境", function() function setvalue(address, flags, value) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = flags tt[1].value = value gg.setValues(tt) end so=gg.getRangesList('libtersafe2.so')[1].start py=0x4FD6A0 setvalue(so+py,4,"~A8 RET") py=0x4FD6B0 setvalue(so+py,4,"~A8 RET") py=0x4FD6D0 setvalue(so+py,4,"~A8 RET") py=0x4FD80C setvalue(so+py,4,"~A8 RET") py=0x4FD78C setvalue(so+py,4,"~A8 RET") py=0x4FD68C setvalue(so+py,4,"~A8 RET") py=0x4FD69C setvalue(so+py,4,"~A8 RET") py=0x4FD72C setvalue(so+py,4,"~A8 RET") py=0x4FD73C setvalue(so+py,4,"~A8 RET") py=0x4FD74C setvalue(so+py,4,"~A8 RET") py=0x4FD75C setvalue(so+py,4,"~A8 RET") py=0x4FD76C setvalue(so+py,4,"~A8 RET") py=0x4FD77C setvalue(so+py,4,"~A8 RET") py=0x4FD78C setvalue(so+py,4,"~A8 RET") py=0x4FD79C setvalue(so+py,4,"~A8 RET") gg.toast("防环境:开启") string.toMusic('防环境已注入') end), changan.switch("SO-RET", function() local gg=gg SO_PT(SO['登录1'] ,4,"~A8 RET") SO_PT(SO['登录2'] ,4,"~A8 RET") SO_PT(SO['登录3'] ,4,"~A8 RET") gg.toast("独家登录SO开启成功") string.toMusic('登录SO已注入') end), }), changan.box({"大厅", changan.switch("防行为", function() local gg=gg for i = 1, 2 do if SO['act'..i] then SO_PT(SO['act'..i], 4, "~A8 MOV W0, WZR") end end local gg=gg for i = 1, 42 do if SO['行为'..i] then SO_PT(SO['行为'..i], 4, "~A8 MOV X0, XZR") end end local gg=gg local so=gg.getRangesList('libil2cpp.so')[2].start bj={ {address = so+0x37418f8, flags = 4, value = "~A8 RET"}, } gg.setValues(bj) gg.alert('防行为成功') string.toMusic('防行为已注入') end), changan.switch("全过", function() SO_PT(SO['速度检测1'],4,"~A8 MOV W0, WZR") SO_PT(SO['速度检测2'],4,"~A8 MOV W0, WZR") SO_PT(SO['速度检测3'],4,"~A8 MOV W0, WZR") SO_PT(SO['速度检测4'],4,"~A8 MOV W0, WZR") SO_PT(SO['速度检测5'],4,"~A8 MOV W0, WZR")--滑板速度检测 string.toMusic('注入成功') end), }), },{---第三页 changan.box({"数据更改", changan.button("修改金币", function() a = gg.prompt({"请输入你想要的金币数量\n[改多会封号]"},{"0"},{"text"})[1] if not a then return end SO_PT(SO['金币'],4,"~A8 MOV W0, #"..a.."","~A8 RET") gg.toast("更改成功") string.toMusic("游戏金币开启成功") end), changan.button("修改钥匙", function() local OP = gg.prompt({'请输入修改的钥匙\n[改多会封号]'},{"0"},{"text"}) SO_PT(SO['钥匙'] ,4,"~A8 MOV W0, #"..OP[1]) gg.toast("更改成功") string.toMusic("游戏蓝色钥匙修改成功") end), changan.button("宝物钥匙", function() local OP = gg.prompt({'请输入修改的宝物钥匙\n[改多会封号]'},{"0"},{"text"}) SO_PT(SO['宝物钥匙'] ,4,"~A8 MOV W0, #"..OP[1]) gg.toast("更改成功") string.toMusic("宝物钥匙修改成功") end), changan.button("改赛季币", function() SO_Deposit(SO['紫币'],4,gg.prompt({"请输入修改的赛季币数量"},{"0"},{"text"})[1]) gg.toast("更改成功") string.toMusic("赛季币数量修改成功") end), changan.button("蓝色扳手", function() SO_Deposit(SO['蓝扳手'],4,gg.prompt({"请输入蓝扳手数量\n可能不是实体"},{"91"},{"text"})[1]) gg.toast("更改成功") string.toMusic("蓝色扳手修改成功") end), changan.button("金色扳手", function() SO_Deposit(SO['金扳手'],4,gg.prompt({"请输入金扳手数量\n可能不是实体"},{"78"},{"text"})[1]) gg.toast("更改成功") string.toMusic("金色扳手修改成功") end), changan.button('自改跑卡', function() local OP = gg.prompt({'炫跑卡\n输入1~6'},{"6"},{"text"}) SO_PT(SO['炫跑卡'] ,4,"~A8 MOV W0, #"..OP[1]) gg.toast("更改成功") string.toMusic("炫跑卡修改成功") end), changan.button("修改段位", function() BL=gg.prompt({"请输入你要修改的段位\n伪实体\n1=青铜\n2=白银\n3=黄金\n4=铂金\n5=钻石\n6=王者"},{"6"},{"text"})[1] SO_PT(SO['段位'],4,"~A8 MOV W0, #"..BL.."") gg.toast("更改成功") string.toMusic("修改成功") end), changan.button("修改阶段", function() BL=gg.prompt({"段位阶段\n1-6"},{"6"},{"text"})[1] SO_PT(SO['阶段'],4,"~A8 MOV W0, #"..BL.."") string.toMusic("修改成功") gg.toast("更改成功") end), changan.button("修改星数", function() BL=gg.prompt({"段位星星数量\n最多9999星\n伪实体"},{"520"},{"text"})[1] SO_PT(SO['星数'],4,"~A8 MOV W0, #"..BL.."") string.toMusic("修改成功") gg.toast("更改成功") end), changan.button("全服排名", function() SO_PT(SO['国标'],4,"~A8 MOV W0, #"..gg.prompt({"输入你想要的排名\n1-100"},{"78"},{"text"})[1]) gg.toast("更改成功") string.toMusic("修改成功") end), changan.button("派队赛全服", function() a = gg.prompt({"派对赛全服显示"},{""},{"text"})[1] if not a then return end SO_PT(SO['派对全服'],4,"~A8 MOV W0, #"..a.."") gg.toast("更改成功") string.toMusic("修改成功") end), changan.button("派队赛省份", function() a = gg.prompt({"0=其他地区\n1=北京\n2=上海\n3=天津\n4=重庆\n5=河北\n6=山西\n7=河南\n8=辽宁\n9=吉林\n10=黑龙江\n11=内蒙古\n12=江苏\n13=山东\n14=安徽\n15=浙江\n16=福建\n17=湖北\n18=湖南\n19=广东\n20=广西\n21=江西\n22=四川\n23=海南\n24=贵州\n25=云南\n26=西藏\n27=陕西\n28=甘肃\n29=青海\n30=宁夏\n31=新疆\n32=香港\n33=澳门\n34=台湾"},{""},{"text"})[1] if not a then return end SO_PT(SO['派对省份'],4,"~A8 MOV W0, #"..a.."") string.toMusic("修改成功") end), changan.button("派队赛省服", function() a = gg.prompt({"派队赛"},{""},{"text"})[1] if not a then return end SO_PT(SO['派对省排'],4,"~A8 MOV W0, #"..a.."") gg.toast("更改成功") string.toMusic("修改成功") end), }), changan.box({"人物自定义选择", changan.text("↑上方分区可以向左/右滑动↑","#000000","12sp"), changan.button("调查人物滑板背饰代码", function() local gg=gg local list = { "点击此处搜索你需要的代码", "人物代码", "杰克0", "琪琪1", "小黑2", "钉子3", "青青4", "弗兰克5", "卷卷6", "小胖7", "露西8", "忍者9", "机器人10", "莎莎11", "祖伊12", "波迪13", "K王子14", "僵尸杰克15", "精灵琪琪16", "17托尼", "卡门18", "罗伯特19", "金20", "浅浅21", "尼克22", "可可23", "孙悟空24", "阿丽25", "艾迪26", "杰米27", "跑跑28", "美美29", "福喜杰克30", "米娜31", "罗莎32", "奥莉薇亚33", "爱迪生34", "洛奇35", "韦恩36", "欢欢37", "茉莉38", "鬼鬼39", "宝拉40", "小牙仔41", "邦邦42", "雷克斯43", "小武哥44", "伊奇45", "艾美46", "哪吒47", "马可48", "希腊-尼科斯49", "哈库50", "科罗娜51", "麦克52", "白小嫦53", "旧金山-詹妮54", "春节-小春55", "雅罗56", "玉依57", "马达加斯加-爱娜58", "秘鲁-卡洛斯59", "新加坡-佳佳60", "龙宝宝61", "小宁62", "嫦娥63", "亚奇64", "拉蒙娜65", "劳伦66", "马利克67", "吕小布68", "左利尔69", "菲利普70", "芙蕾雅71", "小李72", "邬童73", "班小松74", "伊柯75", "陶西76", "萨尔玛77", "安谧78", "嘟嘟79", "曼尼80", "少年嬴政81", "小乔82", "尼古拉83", "十三妹84", "貂蝉85", "杨戬86", "伊泽87", "刘三姐88", "索菲亚89 ", "威尼斯-迪伦90", "三亚-海音91", "街舞机器人92", "阿一93", "阿龙94", "安琪95", "斯嘉丽96", "冰冰97", "小虎98", "艾丽西娅99", "麦娅100", "鸿仔101", "阿莹102", "苏黎世-雨果103", "哇! 兔子机器人104", "卡里姆105", "素贞106", "糖心107", "梅108", "淮安109", "飞天110", "迪戈111", "圣诞小黑112", "铁甲武僧113", "鼠小易114", "阿尔巴115", "未来杰克116", "时光少年117", "蓝骑士118", "艾波索119", "甜心少女120", "卡勒姆121", "小石城-洛克122", "太空人123", "冰雪杰克124", "冰雪弗兰克125", "冰雪钉子126", "冰雪琪琪127", "冰雪青青128", "许愿神龙129", "穿越华夏-小雅130", "穿越华夏-牛犇犇131", "穿越华夏-鼠萌萌132", "开学季-元气少年133", "柏林-妮娜134", "柏林-泽恩135", "纽约-达瑞尔136", "纽约-拉娜137", "小狐狸138", "牛津-邦妮139", "哥本哈根版本-维京人140", "空间站版本-机械弗兰克141", "空间站版本-电音机器人142", "艾嘉桦143", "柠檬妹妹144", "米娅145", "武田146", "环儿147", "科拉尔148", "杰森149", "塔哈150", "菲尼克斯151", "艾斯152", "福气琪琪153", "克莱门汀154", "姜博155", "克莱奥156", "哈西娜157", "查理158", "雅美159", "假面机器人160", "夜莺161", "玛雅162", "超级琪琪163", "超级小黑164", "超级杰克165", "喵千金166", "幻觉167", "番薯仔168", "鹿少爷169", "超级青青170", "精灵杰克171", "精灵小黑172", "精灵琪琪173", "虎冲冲174", "妲己175", "迪迦杰克176", "巴尔坦杰克177", "超级费尔南多178", "宋毅179", "奥斯汀180", "大眼仔181", "乔治182", "骑士183", "兔跳跳184", "隐秘小子185", "机械兔186", "假面机器人187", "乌兰188", "巴兹189", "FB]恭喜190", "欧布小黑191", "哥莫拉青青192", "电玩番薯仔193", "隐秘女孩194", "喷雾机器人195", "兔小萌196", "诺艾尔197", "卡特琳198", "比格蒙199", "赛罗弗兰克200", "水母妹妹201", "魔法兔小萌202", "章鱼水手203", "章鱼船长204", "泽塔杰森205", "赛文加琪琪206", "阿尔菲207", "跑神番薯仔208", "侦探多戈209", "绅士多戈210", "路障僵尸青青211", "豌豆射手弗兰克212", "燃跑杰克213", "燃跑琪琪214", "燃跑弗兰克215", "江户川柯南216", "怪盗基德217", "超级番薯仔218", "少女雅典娜219", "神圣雅典娜220", "燃跑青青221", "燃跑小黑222", "列车小胖223", "方圆224", "灵素225", "墨韵226", "塔伊纳227", "布鲁诺228", "柳兰229", "寻梦柳兰230", "米拉231", "魔术杰克232", "安室透233", "赤井秀一234", "灰原哀235", "楼恒236", "战神楼恒237", "阿莉亚238", "燃跑兔239", "燃跑番薯仔240", "摇滚维维妮241", "摇滚扎克242", "燃跑杰森243", "莱卡244", "雨林青青245", "冰灵246", "冰蓝247", "摩蝎座卡普248", "工藤新一249", "毛利兰250", "小黑251", "龙焱252", "小龙女253", "汤圆圆254", "春阳255", "雷256", "糖雪球257", "劳伦斯258", "发条约翰尼259", "魔王吕布260", "火舞貂蝉261", "曹植262", "龙达达263", "织樱264", "圣剑机甲265", "猪猪侠266", "菲菲公主267", "薇薇安268", "闪电队长269", "FBL16245", "滑板代码", "默认滑板0", "大跳板1", "卧板2", "街头滑板3", "滑浪板4", "超级英雄5", "星星6", "迈阿密7", "怪兽8", "火焰9", "自由女神10", "风之子11", "犀鸟12", "木板13", "小鸡14", "机车15", "足球16", "腹地17", "大白鲨18", "樱花19", "猫咪20", "狂热21", "弗拉明戈22", "玫瑰23", "熊猫24", "龙25", "泰迪26", "南瓜27", "铃铛28", "雪花29", "孟加拉30", "泡泡糖31", "仙人掌32", "麋鹿33", "香蕉34", "逐风35", "传送器36", "巡逻车37", "鳄鱼38", "乌龟39", "红鼻子40", "劳莱斯41", "狮王42", "提基43", "飞毯44", "龙舟45", "贡多拉46", "风火轮47", "飞羽48", "浪花49", "雷电50", "筋斗云51", "玛塔塔52", "影子53", "圣诞火车54", "花朵55", "独角兽56", "变色龙57", "魔鬼鱼58", "图米59", "超级跑车60", "狮子61", "金牌62", "奥尼63", "鲸鱼64", "合金跑车65", "灵符66", "雄鹰67", "冰川68", "赤兔69", "踏板70", "秘宝71", "疯狂赛车72", "尤克里里73", "纪念日74", "音槌75", "黄包车76", "眼镜蛇77", "太空飞船78", "桂花扇79", "骷髅80", "招魂幡81", "南瓜扫帚82", "竹简83", "风韵84", "水晶雪橇85", "海盗船86", "圣甲虫87", "羊88", "羞花89", "哮天犬90", "热狗91", "浪漫甜心92", "竹筏93", "琉璃94", "喷射飞行器95", "多彩云96", "蓝莓滑板97", "低音炮98", "冲浪滑板99", "平底锅100", "黄色的士101", "帆船滑板102", "音符103", "魔毯104", "锦鲤105", "龙王炮106", "金猪107", "烟花火箭108", "唱片109", "像素爱心110", "黄色闪电111", "发条112", "蓝色风暴113", "油纸伞114", "梦幻蝴蝶115", "海蛇116", "青铜战马117", "莲台118", "落叶119", "皇家战马120", "七色彩虹121", "极速光轮122", "电音风暴123", "TapTAp滑板124", "小米滑板125", "星际巡洋舰126", "时光涡轮127", "无人机128", "飞影129", "朋克滑板130", "老爷车131", "旅行者一号132", "马头琴133", "电音熊134", "自由涂鸦135", "迷你兔136", "维京战船137", "旋风138", "秘密139", "开拓者140", "幻影141", "调色板142", "樱之花143", "神龙144", "海浪145", "骆驼146", "海滩板147", "冰雪奥义148", "姜饼149", "红桃皇后150", "原子瓦151", "星盘152", "向阳153", "测速仪154", "括普155", "月羽156", "浮夸157", "萌妹飞车158", "液体159", "番薯电动车160", "小鹿板161", "磁铁162", "超级冲浪板163", "高音号滑板164", "雪云滑板165", "寅虎滑板166", "狐狸滑板167", "胜利飞燕168", "电测仪169", "夜琵琶170", "彩虹炸弹171", "微博滑板172", "兔兔气垫船173", "盾牌飞行器174", "年年有余175", "赛博摩托176", "枫叶177", "战斗机178", "鸡动机179", "欧布圣剑180", "蓝牙手柄181", "粉色冰淇凌182", "追随者183", "绝不迟到滑板鞋184", "蝰鱼185", "缓冲器186", "赛罗之剑187", "233滑板188", "鹤189", "水草190", "卷轴191", "贝壳192", "藏宝图193", "极速黄昏194", "火种195", "大老板196", "真相放大镜197", "玉米加农炮198", "小推车199", "燃跑冲锋板200", "燃跑气垫板201", "燃跑影子202", "滑板203", "侦探小子204", "四叶草205", "时空滑板206", "燃跑火箭207", "燃跑飞行器208", "小胖专车210", "机关鸟211", "虫詹宫折桂212", "水墨山河213", "蝠鲼214", "科技浪潮215", "幽谷兰香216", "塔尔琴217", "帽子戏法218", "RX-7-219", "GT500-220", "缩小药舟221", "失落方舟222", "飞鱼223", "萝卜基尼224", "蓝鳍金枪鱼225", "键盘乐器226", "电吉他227", "燃跑青春228", "泰酷辣229", "极速飞板230", "幻雪星梦-心231", "幻雪星梦-毅232", "推进器-摩蝎233", "帝丹234", "海参男235", "火灵兽罗盘236", "蓝梦云鲸237", "食神奖牌238", "闪电239", "雪林240", "上上签241", "超级齿轮242", "发条火箭243", "村日滑板244", "至黯赤兔245", "绯月246", "飞鸢247", "月光卷轴248", "霓虹灯牌249", "复古灯牌250", "ATX-1飞行器251", "卟卟机车252", "超级棒棒糖253", "死人定制254", "闪电加速器255", "背饰代码", "幸运星背包1", "圣诞雪人2", "机械之翼3", "天使之翼4", "绿野风车5", "愚乐气球6", "迷蝶之翼7", "甜心花环8", "时光之翼9", "玲珑秋月10", "星辰11", "圣诞树12", "许愿神龙背饰13", "元气书包14", "帆布克15", "琵琶16", "神光棒17", "狗狗背饰18", "大眼泡泡19", "超能氧气瓶20", "闪电篮球21", "吸铁石22", "欧布之光23", "游戏机24", "小兔书包25", ",赛罗之翼26", "乐园喷射器27", "河马28", "迷失的船舵29", "贝利亚黄昏30", "跑神杯31", "绅士的礼仪32", "磁力菇33", "向日葵34", "少年侦探35", "魔术鸽子36", "时空守恒器37", "机关罗盘38", "月上枝头39", "绣韵天青40", "可爱小快41", "兰花灯42", "燃跑之翼43", "波本44", "狙击45", "APTXC4869-46", "莲花橛47", "兔百德48", "猫猫守护49", "幻月迷音50", "冰晶碎羽-星51", "冰晶碎羽-棱52", "布布53", "危险距离54", "小兰名牌55", "麻辣小龙虾56", "珠玉绮螺57", "糖葫芦58", "团元圆59", "咸鱼不闲60", "雪怪冰淇淋61", "保安的大磁铁62", "魔王之翼63", "青团叽64", "圣剑之翼65", "极光之翼66", "银河之翼67", "开天宝剑68", "猪猪背包69", "宝物代码", "1小丑面具", "2露西耳环", "3紫色花球", "4金属发条", "5火焰纹章", "6星星项链", "7机械手表", "8金色耳环", "9黄金皇冠", "10摩托头盔", "11狼牙项链", "12纯金手表", "13金箍", "14乾坤圈", "15水手猫", "16积木", "17灵符", "18黄金盔甲", "19令牌", "20龙蛋", "21南瓜", "22月兔", "23舞狮头", "24甜心项链", "25圣诞帽", "26夹克", "27红色战衣", "28火红灯笼", "29美人折扇", "30卫衣", "31校服", "32相机", "33耳机", "34眼镜", "道具代码", "1导弹", "2蓝色魔鬼炸弹", "4护盾", "8香蕉皮", "16颜料炸弹", "32恶魔", "64粘液罐子", "128小狗", "256滑板", "272减速乌龟", "288云雾", "320净化饮料", "384磁铁", "512群体护盾", "544超级导弹", "560滑板", "563羽毛", "564砝码", "头像框代码", "2019年春节限定头像框1", "情人节限定头像框2", "角色达人头像框3", "滑板达人头像框4", "愚人节限定头像框5", "毅力达人限定头像框6", "劳动节限定头像框7", "端午节限定头像框8", "夏日清凉头像框9", "钻石璀璨头像框10", "七夕限定头像框11", "中秋节限定头像框12", "飞天头像框13", "万圣节头像框14", "万圣霓虹头像框15", "秋日头像框代码16", "6周年头像框代码17", "冰雪节头像框代码18", "2020春节限定头像框代码19", "我爱饺子头像框代码20", "我爱汤圆头像框代码21", "去春游吧头像框代码22", "中国加油头像框代码23", "愚乐一下头像框代码24", "纯真记忆头像框代码25", "爱心传递头像框代码26", "7周年头像框代码27", "圣诞迎新头像框代码28", "许愿神龙头像框代码29", "2021年春节限定头像框代码30", "春日芳华头像框代码31", "愚人节恶搞头像框代码32", "2021劳动节头像框代码33", "牛津头像框代码34", "2021端午头像框代码35", "2021暑假头像框代码36", "2021巴厘岛像框代码37", "2021中秋头像框代码38", "长安限定头像框代码39", "一起来捣蛋头像框代码40", "8周年限定头像框代码41", "创作达人头像框代码42", "大神头像框代码43", "双旦快乐头像框代码44", "2022春节头像框代码45", "春意盎然头像框代码46", "愚你同乐头像框代码47", "劳动快乐头像框代码48", "端午快乐头像框代码49", "摩纳哥限定头像框代码50", "暑假快乐头像框代码51", "冰岛限定头像框代码52", "武汉限定头像框代码53", "社团S1赛季冠军头像框代码54", "社团S1赛季亚军头像框代码55", "社团S1赛季季军头像框代码56", "社团S1赛季精英头像框代码57", "社团S1赛季勇者头像框代码58", "万圣节限定头像框59", "9周年限定头像框60", "深圳限定头像框61", "社团S2赛季冠军头像框代码62", "社团S2赛季亚军头像框代码63", "社团S2赛季季军头像框代码64", "社团S2赛季精英头像框代码65", "社团S2赛季勇者头像框代码66", "新城洛阳头像框67", "奥特曼限定68", "微博专属头像框69", "Fanbook头像框70", "哥本哈根专属头像框71", "社团S3赛季冠军头像框代码72", "社团S3赛季亚军头像框代码73", "社团S3赛季季军头像框代码74", "社团S3赛季精英头像框代码75", "社团S3赛季勇者头像框代码76", "跑神杯S3冠军社团头像框77", "跑神杯S3亚军社团头像框78", "跑神杯S3季军社团头像框79", "跑神杯S3纪念头像框80", "呼和浩特版本头像框81", "劳动最光荣头像框82", "大神作者头像框83", "人气作者头像框84", "新秀作者头像框85", "欧布头像框86", "大朋友头像框87", "小朋友头像框88", "电玩番薯仔头像框89", "校园时光头像框90", "233乐园头像框91", "赛罗头像框92", "2023年端午节头像框93", "航海日记94", "暑假来袭头像框95", "社团S4赛季王者头像框96", "社团S4赛季大师头像框97", "社团S4赛季钻石头像框98", "社团S4赛季白金头像框99", "社团S4赛季黄金头像框100", "泽塔头像框101", "欢乐暑假头像框102", "跑神番薯仔103", "时光回溯头像框104", "燃跑弗兰克头像框105", "燃跑杰克头像框106", "燃跑琪琪头像框107", "植物大战僵尸头像框108", "江户川柯南头像框109", "怪盗基德头像框110", "燃跑青青头像框111", "超级番薯仔头像框112", "圣殿之下头像框113", "社团S5赛季王者头像框114", "社团S5赛季大师头像框115", "社团S5赛季钻石头像框116", "社团S5赛季白金头像框117", "社团S5赛季黄金头像框118", "社团联赛S6赛季头像框119", "苏州版本头像框120", "秋辞诗赋头像框121", "幽兰头像框122", "社团联赛S7赛季头像框124", "安室透头像框125", "赤井秀一头像框126", "灰原衰头像框127", "楼兰版本头像框128", "社团联赛S8赛季头像框129", "忆往昔头像框130", "社团联赛S9赛季头像框131", "燃跑番薯仔头像框132", "燃跑杰森头像框133", "十周年头像框134", "社团联赛S10赛季头像框135", "工藤新一头像框136", "毛利兰头像框137", "小黑头像框138", "社团联赛S11赛季头像框139", "中国城限定头像框140", "2024新春限定头像框141", "2024元宵限定头像框142", "龙族太子限定头像框143", "食神头像框144", "专属包限定头像框145", "社团联赛S12赛季头像框146", "社团联赛S13赛季头像框147", "跑神杯S6纪念头像框148", "进步之星头像框149", "幻想城头像框150", "雪国头像框151", "上上签头像框152", "社团联赛S14赛季头像框153", "社团联赛S15赛季头像框154", "跑神杯S6冠军头像框155", "跑神杯S6亚军头像框156", "跑神杯S6季军头像框157", "灵山秀水限定头像框158", "魔王头像框159", "火舞头像框160", "草长莺飞头像框161", "社团联赛S16赛季头像框162", "社团联赛S17赛季头像框163", "猪猪侠头像框164", "菲菲公主头像框165", "圣剑机甲头像框166", "社团联赛S18赛季头像框167", "物品代码", "0金币", "1钥匙", "2滑板", "3得分倍增", "4喷射起跑", "5迷你宝箱", "6宝箱", "7超级宝箱", "8收集物宝箱", "9头像框", "10人物", "11杰克", "12滑板", "13未知", "14背饰", "15秘典宝箱", "16高级秘典宝箱", "17杰克的喷雾器", "18抽奖券", "19秘典收集物", "20空白千万不要领取", "21宝物", "22宝物钥匙", "23鲜花", "24社团贡献", "25荣耀之路奖杯", "26跑酷币", "27金钥匙", } local name = {} --- 功能函数表 local UI = gg.choice(list, nil, '查询') if UI then if UI == 1 then local prompt = gg.prompt({ '请输入关键词进行搜索' }, { '' }, { 'text' }) if prompt then local str = prompt[1] local t = {} local t1 = {} for i = 2, #list - 1 do if string.find(list[i], str) then table.insert(t, list[i]) table.insert(t1, name[i - 1]) end end if #t == 0 then gg.toast('无搜索结果') else local c = gg.choice(t, nil, '关键词:['.. str .. '],共搜索到' .. #t .. '条结果') if c then end end end else end if UI == 2 then os.exit()end end FX1=0 end), changan.button("替换人物", function() a = gg.prompt({"代码人物\n保安代码190"},{"190"},{"text"})[1] if not a then return end SO_PT(SO['替换人物'],4,"~A8 MOV X0, #" .. a .. "") gg.toast("人物替换成功") string.toMusic('人物替换成功') end), changan.button("替换滑板", function() a = gg.prompt({"代码滑板\n跑车代码60"},{"60"},{"text"})[1] if not a then return end SO_PT(SO['替换滑板'],4,"~A8 MOV X0, #" .. a .. "") gg.toast("滑板替换成功") string.toMusic('滑板替换成功') end), changan.button("替换背饰", function() a = gg.prompt({"代码背饰\n磁铁代码22"},{"22"},{"text"})[1] if not a then return end SO_PT(SO['替换背饰'],4,"~A8 MOV X0, #" .. a .. "") gg.toast("背饰替换成功") string.toMusic('背饰替换成功') end), }), changan.box({"全解区域", changan.switch('人物全解', function() SO_PT(SO['人物'] ,4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch('滑板全解', function() SO_PT(SO['滑板'] ,4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch('背饰全解', function() SO_PT(SO['背饰'] ,4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("人物装扮", function() SO_PT(SO['装扮'] ,4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("直购人物", function() SO_PT(SO['人物购买按钮'] ,4, "~A8 B [PC,#"..SOGSPY_ST(SO['人物购买按钮'] ,SO['人物购买成功'] ).."]") gg.toast("开启成功") string.toMusic('开启成功') end), changan.switch("直购滑板", function() SO_PT(SO['滑板购买按钮'],4,"~A8 B [PC,#"..SOGSPY_ST(SO['滑板购买按钮'],SO['滑板购买成功']).."]") gg.toast("开启成功") string.toMusic('开启成功') end), }), changan.box({"特殊区域", changan.switch('满级跑卡', function() SO_PT(SO['炫跑卡'],4,"~A8 MOV W0, #6") gg.toast("开启成功") string.toMusic('开启成功') end), changan.switch("十倍得分", function() SO_PT(SO['获取十倍'] ,4,"~A8 MOV W0, #1") SO_PT(SO['解锁十倍'] ,4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic('开启成功') end), changan.switch("双倍金币", function() SO_PT(SO['双倍'] ,4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic('开启成功') end), changan.switch("一键领奖", function() SO_PT(SO['领奖'] ,4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic('开启成功') end), changan.switch("破解内购", function() SO_PT(SO['内购'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['内购'] ,SO['内购成功']).."]") gg.toast("开启成功") string.toMusic("开启成功,搭配宝物十抽购买") end), changan.switch("超长名称", function() SO_PT(SO['名称'] ,4,"~A8 B [PC,#0x100]") gg.toast("开启成功") string.toMusic('超长名称开启成功') end), changan.switch("粉色名称", function() SO_PT(SO['高级秘典昵称'],4,"~A8 MOV X0, #1") gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("金色名称", function() SO_PT(SO['炫跑卡'],4,"~A8 MOV W0, #6") SO_PT(SO['高级秘典昵称'],4,"~A8 MOV X0, #1") gg.toast("秘典调用成功") string.toMusic("开启成功") end), }), changan.box({"修改宝物", changan.switch("十抽全宝", function() SO_PT(SO['十抽'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['十抽'] ,SO['全宝']).."]") gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("十抽购买", function() SO_PT(SO['十抽'], 4, "~A8 B [PC,#" .. SOGSPY_ST(SO['十抽'], SO['购买界面']) .. "]") gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("十抽保存", function() SO_PT(SO['十抽'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['十抽'] ,SO['宝物备份']).."]") gg.toast("开启成功") string.toMusic("开启成功") end), }), changan.box({"兑换码", changan.button("调查人物滑板背饰代码", function() local gg=gg local list = { "点击此处搜索你需要的代码", "人物代码", "杰克0", "琪琪1", "小黑2", "钉子3", "青青4", "弗兰克5", "卷卷6", "小胖7", "露西8", "忍者9", "机器人10", "莎莎11", "祖伊12", "波迪13", "K王子14", "僵尸杰克15", "精灵琪琪16", "17托尼", "卡门18", "罗伯特19", "金20", "浅浅21", "尼克22", "可可23", "孙悟空24", "阿丽25", "艾迪26", "杰米27", "跑跑28", "美美29", "福喜杰克30", "米娜31", "罗莎32", "奥莉薇亚33", "爱迪生34", "洛奇35", "韦恩36", "欢欢37", "茉莉38", "鬼鬼39", "宝拉40", "小牙仔41", "邦邦42", "雷克斯43", "小武哥44", "伊奇45", "艾美46", "哪吒47", "马可48", "希腊-尼科斯49", "哈库50", "科罗娜51", "麦克52", "白小嫦53", "旧金山-詹妮54", "春节-小春55", "雅罗56", "玉依57", "马达加斯加-爱娜58", "秘鲁-卡洛斯59", "新加坡-佳佳60", "龙宝宝61", "小宁62", "嫦娥63", "亚奇64", "拉蒙娜65", "劳伦66", "马利克67", "吕小布68", "左利尔69", "菲利普70", "芙蕾雅71", "小李72", "邬童73", "班小松74", "伊柯75", "陶西76", "萨尔玛77", "安谧78", "嘟嘟79", "曼尼80", "少年嬴政81", "小乔82", "尼古拉83", "十三妹84", "貂蝉85", "杨戬86", "伊泽87", "刘三姐88", "索菲亚89 ", "威尼斯-迪伦90", "三亚-海音91", "街舞机器人92", "阿一93", "阿龙94", "安琪95", "斯嘉丽96", "冰冰97", "小虎98", "艾丽西娅99", "麦娅100", "鸿仔101", "阿莹102", "苏黎世-雨果103", "哇! 兔子机器人104", "卡里姆105", "素贞106", "糖心107", "梅108", "淮安109", "飞天110", "迪戈111", "圣诞小黑112", "铁甲武僧113", "鼠小易114", "阿尔巴115", "未来杰克116", "时光少年117", "蓝骑士118", "艾波索119", "甜心少女120", "卡勒姆121", "小石城-洛克122", "太空人123", "冰雪杰克124", "冰雪弗兰克125", "冰雪钉子126", "冰雪琪琪127", "冰雪青青128", "许愿神龙129", "穿越华夏-小雅130", "穿越华夏-牛犇犇131", "穿越华夏-鼠萌萌132", "开学季-元气少年133", "柏林-妮娜134", "柏林-泽恩135", "纽约-达瑞尔136", "纽约-拉娜137", "小狐狸138", "牛津-邦妮139", "哥本哈根版本-维京人140", "空间站版本-机械弗兰克141", "空间站版本-电音机器人142", "艾嘉桦143", "柠檬妹妹144", "米娅145", "武田146", "环儿147", "科拉尔148", "杰森149", "塔哈150", "菲尼克斯151", "艾斯152", "福气琪琪153", "克莱门汀154", "姜博155", "克莱奥156", "哈西娜157", "查理158", "雅美159", "假面机器人160", "夜莺161", "玛雅162", "超级琪琪163", "超级小黑164", "超级杰克165", "喵千金166", "幻觉167", "番薯仔168", "鹿少爷169", "超级青青170", "精灵杰克171", "精灵小黑172", "精灵琪琪173", "虎冲冲174", "妲己175", "迪迦杰克176", "巴尔坦杰克177", "超级费尔南多178", "宋毅179", "奥斯汀180", "大眼仔181", "乔治182", "骑士183", "兔跳跳184", "隐秘小子185", "机械兔186", "假面机器人187", "乌兰188", "巴兹189", "FB]恭喜190", "欧布小黑191", "哥莫拉青青192", "电玩番薯仔193", "隐秘女孩194", "喷雾机器人195", "兔小萌196", "诺艾尔197", "卡特琳198", "比格蒙199", "赛罗弗兰克200", "水母妹妹201", "魔法兔小萌202", "章鱼水手203", "章鱼船长204", "泽塔杰森205", "赛文加琪琪206", "阿尔菲207", "跑神番薯仔208", "侦探多戈209", "绅士多戈210", "路障僵尸青青211", "豌豆射手弗兰克212", "燃跑杰克213", "燃跑琪琪214", "燃跑弗兰克215", "江户川柯南216", "怪盗基德217", "超级番薯仔218", "少女雅典娜219", "神圣雅典娜220", "燃跑青青221", "燃跑小黑222", "列车小胖223", "方圆224", "灵素225", "墨韵226", "塔伊纳227", "布鲁诺228", "柳兰229", "寻梦柳兰230", "米拉231", "魔术杰克232", "安室透233", "赤井秀一234", "灰原哀235", "楼恒236", "战神楼恒237", "阿莉亚238", "燃跑兔239", "燃跑番薯仔240", "摇滚维维妮241", "摇滚扎克242", "燃跑杰森243", "莱卡244", "雨林青青245", "冰灵246", "冰蓝247", "摩蝎座卡普248", "工藤新一249", "毛利兰250", "小黑251", "龙焱252", "小龙女253", "汤圆圆254", "春阳255", "雷256", "糖雪球257", "劳伦斯258", "发条约翰尼259", "魔王吕布260", "火舞貂蝉261", "曹植262", "龙达达263", "织樱264", "圣剑机甲265", "猪猪侠266", "菲菲公主267", "薇薇安268", "闪电队长269", "FBL16245", "滑板代码", "默认滑板0", "大跳板1", "卧板2", "街头滑板3", "滑浪板4", "超级英雄5", "星星6", "迈阿密7", "怪兽8", "火焰9", "自由女神10", "风之子11", "犀鸟12", "木板13", "小鸡14", "机车15", "足球16", "腹地17", "大白鲨18", "樱花19", "猫咪20", "狂热21", "弗拉明戈22", "玫瑰23", "熊猫24", "龙25", "泰迪26", "南瓜27", "铃铛28", "雪花29", "孟加拉30", "泡泡糖31", "仙人掌32", "麋鹿33", "香蕉34", "逐风35", "传送器36", "巡逻车37", "鳄鱼38", "乌龟39", "红鼻子40", "劳莱斯41", "狮王42", "提基43", "飞毯44", "龙舟45", "贡多拉46", "风火轮47", "飞羽48", "浪花49", "雷电50", "筋斗云51", "玛塔塔52", "影子53", "圣诞火车54", "花朵55", "独角兽56", "变色龙57", "魔鬼鱼58", "图米59", "超级跑车60", "狮子61", "金牌62", "奥尼63", "鲸鱼64", "合金跑车65", "灵符66", "雄鹰67", "冰川68", "赤兔69", "踏板70", "秘宝71", "疯狂赛车72", "尤克里里73", "纪念日74", "音槌75", "黄包车76", "眼镜蛇77", "太空飞船78", "桂花扇79", "骷髅80", "招魂幡81", "南瓜扫帚82", "竹简83", "风韵84", "水晶雪橇85", "海盗船86", "圣甲虫87", "羊88", "羞花89", "哮天犬90", "热狗91", "浪漫甜心92", "竹筏93", "琉璃94", "喷射飞行器95", "多彩云96", "蓝莓滑板97", "低音炮98", "冲浪滑板99", "平底锅100", "黄色的士101", "帆船滑板102", "音符103", "魔毯104", "锦鲤105", "龙王炮106", "金猪107", "烟花火箭108", "唱片109", "像素爱心110", "黄色闪电111", "发条112", "蓝色风暴113", "油纸伞114", "梦幻蝴蝶115", "海蛇116", "青铜战马117", "莲台118", "落叶119", "皇家战马120", "七色彩虹121", "极速光轮122", "电音风暴123", "TapTAp滑板124", "小米滑板125", "星际巡洋舰126", "时光涡轮127", "无人机128", "飞影129", "朋克滑板130", "老爷车131", "旅行者一号132", "马头琴133", "电音熊134", "自由涂鸦135", "迷你兔136", "维京战船137", "旋风138", "秘密139", "开拓者140", "幻影141", "调色板142", "樱之花143", "神龙144", "海浪145", "骆驼146", "海滩板147", "冰雪奥义148", "姜饼149", "红桃皇后150", "原子瓦151", "星盘152", "向阳153", "测速仪154", "括普155", "月羽156", "浮夸157", "萌妹飞车158", "液体159", "番薯电动车160", "小鹿板161", "磁铁162", "超级冲浪板163", "高音号滑板164", "雪云滑板165", "寅虎滑板166", "狐狸滑板167", "胜利飞燕168", "电测仪169", "夜琵琶170", "彩虹炸弹171", "微博滑板172", "兔兔气垫船173", "盾牌飞行器174", "年年有余175", "赛博摩托176", "枫叶177", "战斗机178", "鸡动机179", "欧布圣剑180", "蓝牙手柄181", "粉色冰淇凌182", "追随者183", "绝不迟到滑板鞋184", "蝰鱼185", "缓冲器186", "赛罗之剑187", "233滑板188", "鹤189", "水草190", "卷轴191", "贝壳192", "藏宝图193", "极速黄昏194", "火种195", "大老板196", "真相放大镜197", "玉米加农炮198", "小推车199", "燃跑冲锋板200", "燃跑气垫板201", "燃跑影子202", "滑板203", "侦探小子204", "四叶草205", "时空滑板206", "燃跑火箭207", "燃跑飞行器208", "小胖专车210", "机关鸟211", "虫詹宫折桂212", "水墨山河213", "蝠鲼214", "科技浪潮215", "幽谷兰香216", "塔尔琴217", "帽子戏法218", "RX-7-219", "GT500-220", "缩小药舟221", "失落方舟222", "飞鱼223", "萝卜基尼224", "蓝鳍金枪鱼225", "键盘乐器226", "电吉他227", "燃跑青春228", "泰酷辣229", "极速飞板230", "幻雪星梦-心231", "幻雪星梦-毅232", "推进器-摩蝎233", "帝丹234", "海参男235", "火灵兽罗盘236", "蓝梦云鲸237", "食神奖牌238", "闪电239", "雪林240", "上上签241", "超级齿轮242", "发条火箭243", "村日滑板244", "至黯赤兔245", "绯月246", "飞鸢247", "月光卷轴248", "霓虹灯牌249", "复古灯牌250", "ATX-1飞行器251", "卟卟机车252", "超级棒棒糖253", "死人定制254", "闪电加速器255", "背饰代码", "幸运星背包1", "圣诞雪人2", "机械之翼3", "天使之翼4", "绿野风车5", "愚乐气球6", "迷蝶之翼7", "甜心花环8", "时光之翼9", "玲珑秋月10", "星辰11", "圣诞树12", "许愿神龙背饰13", "元气书包14", "帆布克15", "琵琶16", "神光棒17", "狗狗背饰18", "大眼泡泡19", "超能氧气瓶20", "闪电篮球21", "吸铁石22", "欧布之光23", "游戏机24", "小兔书包25", ",赛罗之翼26", "乐园喷射器27", "河马28", "迷失的船舵29", "贝利亚黄昏30", "跑神杯31", "绅士的礼仪32", "磁力菇33", "向日葵34", "少年侦探35", "魔术鸽子36", "时空守恒器37", "机关罗盘38", "月上枝头39", "绣韵天青40", "可爱小快41", "兰花灯42", "燃跑之翼43", "波本44", "狙击45", "APTXC4869-46", "莲花橛47", "兔百德48", "猫猫守护49", "幻月迷音50", "冰晶碎羽-星51", "冰晶碎羽-棱52", "布布53", "危险距离54", "小兰名牌55", "麻辣小龙虾56", "珠玉绮螺57", "糖葫芦58", "团元圆59", "咸鱼不闲60", "雪怪冰淇淋61", "保安的大磁铁62", "魔王之翼63", "青团叽64", "圣剑之翼65", "极光之翼66", "银河之翼67", "开天宝剑68", "猪猪背包69", "宝物代码", "1小丑面具", "2露西耳环", "3紫色花球", "4金属发条", "5火焰纹章", "6星星项链", "7机械手表", "8金色耳环", "9黄金皇冠", "10摩托头盔", "11狼牙项链", "12纯金手表", "13金箍", "14乾坤圈", "15水手猫", "16积木", "17灵符", "18黄金盔甲", "19令牌", "20龙蛋", "21南瓜", "22月兔", "23舞狮头", "24甜心项链", "25圣诞帽", "26夹克", "27红色战衣", "28火红灯笼", "29美人折扇", "30卫衣", "31校服", "32相机", "33耳机", "34眼镜", "道具代码", "1导弹", "2蓝色魔鬼炸弹", "4护盾", "8香蕉皮", "16颜料炸弹", "32恶魔", "64粘液罐子", "128小狗", "256滑板", "272减速乌龟", "288云雾", "320净化饮料", "384磁铁", "512群体护盾", "544超级导弹", "560滑板", "563羽毛", "564砝码", "头像框代码", "2019年春节限定头像框1", "情人节限定头像框2", "角色达人头像框3", "滑板达人头像框4", "愚人节限定头像框5", "毅力达人限定头像框6", "劳动节限定头像框7", "端午节限定头像框8", "夏日清凉头像框9", "钻石璀璨头像框10", "七夕限定头像框11", "中秋节限定头像框12", "飞天头像框13", "万圣节头像框14", "万圣霓虹头像框15", "秋日头像框代码16", "6周年头像框代码17", "冰雪节头像框代码18", "2020春节限定头像框代码19", "我爱饺子头像框代码20", "我爱汤圆头像框代码21", "去春游吧头像框代码22", "中国加油头像框代码23", "愚乐一下头像框代码24", "纯真记忆头像框代码25", "爱心传递头像框代码26", "7周年头像框代码27", "圣诞迎新头像框代码28", "许愿神龙头像框代码29", "2021年春节限定头像框代码30", "春日芳华头像框代码31", "愚人节恶搞头像框代码32", "2021劳动节头像框代码33", "牛津头像框代码34", "2021端午头像框代码35", "2021暑假头像框代码36", "2021巴厘岛像框代码37", "2021中秋头像框代码38", "长安限定头像框代码39", "一起来捣蛋头像框代码40", "8周年限定头像框代码41", "创作达人头像框代码42", "大神头像框代码43", "双旦快乐头像框代码44", "2022春节头像框代码45", "春意盎然头像框代码46", "愚你同乐头像框代码47", "劳动快乐头像框代码48", "端午快乐头像框代码49", "摩纳哥限定头像框代码50", "暑假快乐头像框代码51", "冰岛限定头像框代码52", "武汉限定头像框代码53", "社团S1赛季冠军头像框代码54", "社团S1赛季亚军头像框代码55", "社团S1赛季季军头像框代码56", "社团S1赛季精英头像框代码57", "社团S1赛季勇者头像框代码58", "万圣节限定头像框59", "9周年限定头像框60", "深圳限定头像框61", "社团S2赛季冠军头像框代码62", "社团S2赛季亚军头像框代码63", "社团S2赛季季军头像框代码64", "社团S2赛季精英头像框代码65", "社团S2赛季勇者头像框代码66", "新城洛阳头像框67", "奥特曼限定68", "微博专属头像框69", "Fanbook头像框70", "哥本哈根专属头像框71", "社团S3赛季冠军头像框代码72", "社团S3赛季亚军头像框代码73", "社团S3赛季季军头像框代码74", "社团S3赛季精英头像框代码75", "社团S3赛季勇者头像框代码76", "跑神杯S3冠军社团头像框77", "跑神杯S3亚军社团头像框78", "跑神杯S3季军社团头像框79", "跑神杯S3纪念头像框80", "呼和浩特版本头像框81", "劳动最光荣头像框82", "大神作者头像框83", "人气作者头像框84", "新秀作者头像框85", "欧布头像框86", "大朋友头像框87", "小朋友头像框88", "电玩番薯仔头像框89", "校园时光头像框90", "233乐园头像框91", "赛罗头像框92", "2023年端午节头像框93", "航海日记94", "暑假来袭头像框95", "社团S4赛季王者头像框96", "社团S4赛季大师头像框97", "社团S4赛季钻石头像框98", "社团S4赛季白金头像框99", "社团S4赛季黄金头像框100", "泽塔头像框101", "欢乐暑假头像框102", "跑神番薯仔103", "时光回溯头像框104", "燃跑弗兰克头像框105", "燃跑杰克头像框106", "燃跑琪琪头像框107", "植物大战僵尸头像框108", "江户川柯南头像框109", "怪盗基德头像框110", "燃跑青青头像框111", "超级番薯仔头像框112", "圣殿之下头像框113", "社团S5赛季王者头像框114", "社团S5赛季大师头像框115", "社团S5赛季钻石头像框116", "社团S5赛季白金头像框117", "社团S5赛季黄金头像框118", "社团联赛S6赛季头像框119", "苏州版本头像框120", "秋辞诗赋头像框121", "幽兰头像框122", "社团联赛S7赛季头像框124", "安室透头像框125", "赤井秀一头像框126", "灰原衰头像框127", "楼兰版本头像框128", "社团联赛S8赛季头像框129", "忆往昔头像框130", "社团联赛S9赛季头像框131", "燃跑番薯仔头像框132", "燃跑杰森头像框133", "十周年头像框134", "社团联赛S10赛季头像框135", "工藤新一头像框136", "毛利兰头像框137", "小黑头像框138", "社团联赛S11赛季头像框139", "中国城限定头像框140", "2024新春限定头像框141", "2024元宵限定头像框142", "龙族太子限定头像框143", "食神头像框144", "专属包限定头像框145", "社团联赛S12赛季头像框146", "社团联赛S13赛季头像框147", "跑神杯S6纪念头像框148", "进步之星头像框149", "幻想城头像框150", "雪国头像框151", "上上签头像框152", "社团联赛S14赛季头像框153", "社团联赛S15赛季头像框154", "跑神杯S6冠军头像框155", "跑神杯S6亚军头像框156", "跑神杯S6季军头像框157", "灵山秀水限定头像框158", "魔王头像框159", "火舞头像框160", "草长莺飞头像框161", "社团联赛S16赛季头像框162", "社团联赛S17赛季头像框163", "猪猪侠头像框164", "菲菲公主头像框165", "圣剑机甲头像框166", "社团联赛S18赛季头像框167", "物品代码", "0金币", "1钥匙", "2滑板", "3得分倍增", "4喷射起跑", "5迷你宝箱", "6宝箱", "7超级宝箱", "8收集物宝箱", "9头像框", "10人物", "11杰克", "12滑板", "13未知", "14背饰", "15秘典宝箱", "16高级秘典宝箱", "17杰克的喷雾器", "18抽奖券", "19秘典收集物", "20空白千万不要领取", "21宝物", "22宝物钥匙", "23鲜花", "24社团贡献", "25荣耀之路奖杯", "26跑酷币", "27金钥匙", } local name = {} --- 功能函数表 local UI = gg.choice(list, nil, '查询') if UI then if UI == 1 then local prompt = gg.prompt({ '请输入关键词进行搜索' }, { '' }, { 'text' }) if prompt then local str = prompt[1] local t = {} local t1 = {} for i = 2, #list - 1 do if string.find(list[i], str) then table.insert(t, list[i]) table.insert(t1, name[i - 1]) end end if #t == 0 then gg.toast('无搜索结果') else local c = gg.choice(t, nil, '关键词:['.. str .. '],共搜索到' .. #t .. '条结果') if c then end end end else end if UI == 2 then os.exit()end end FX1=0 end), changan.button("兑换码-人物", function() local code = gg.prompt({'输入人物代码id'},{[1] = ""}, {[1] = 'number'}) if not code then return end local addr = gg.getRangesList("libil2cpp.so")[2].start + 0x329623c gg.setValues({ {address = addr, flags = 4, value = '~A8 LDR X0, [PC,#0x80000]'}, {address = addr + 0x4, flags = 4, value = '~A8 B [PC,#'..string.format("0x%X", 0x56B60)..']'}, {address = addr + 0x80000, flags = 4, value = tonumber ( code [ 1 ] ) }, }) gg.toast("开启成功") string.toMusic("开启成功,去兑换码输入兑换") end), changan.button("兑换码-滑板", function() local code = gg.prompt({'输入滑板代码id'},{[1] = ""}, {[1] = 'number'}) if not code then return end local addr = gg.getRangesList("libil2cpp.so")[2].start + 0x329623c gg.setValues({ {address = addr, flags = 4, value = '~A8 LDR X0, [PC,#0x80000]'}, {address = addr + 0x4, flags = 4, value = '~A8 B [PC,#'..string.format("0x%X", 0x56EBC)..']'}, {address = addr + 0x80000, flags = 4, value = tonumber ( code [ 1 ] ) }, }) gg.toast("开启成功") string.toMusic("开启成功,请去兑换码输入兑换") end), changan.button("奖励替换人物", function() SO_PT(SO['奖励替换'],4,"~A8 MOV W0, #10") a = gg.prompt({"输入奖励替换的人物代码\n可改保安可以保存"},{""},{"text"})[1] if not a then return end SO_PT(SO['人物奖励'],4,"~A8 MOV W0, #"..a.."") gg.toast("开启成功") local json = json title = "脚本:" message = "奖励替换人物开启成功" gg.htmlAlert(title, message, "确定") end), changan.button("奖励替换滑板", function() SO_PT(SO['奖励替换'],4,"~A8 MOV W0, #12") a = gg.prompt({"输入奖励替换的滑板代码\n可以保存"},{""},{"text"})[1] if not a then return end SO_PT(SO['滑板奖励'],4,"~A8 MOV W0, #"..a.."") gg.toast("开启成功") local json = json title = "脚本:" message = "奖励替换滑板开启成功" gg.htmlAlert(title, message, "确定") end), changan.button("奖励替换背饰", function() SO_PT(SO['奖励替换'],4,"~A8 MOV W0, #14") a = gg.prompt({"输入奖励替换的背饰代码\n可以保存"},{""},{"text"})[1] if not a then return end SO_PT(SO['背饰奖励'],4,"~A8 MOV W0, #"..a.."") gg.toast("开启成功") local json = json title = "脚本:" message = "奖励替换背饰开启成功" gg.htmlAlert(title, message, "确定") end), }), },{--第四页 changan.button("查询榜名单", function() loadYunLua("http://vip.okig.top/down.php/1e4cd5dca6855a28a9cee39ef5ace3ae.lua") 打印道具赛()--调用 打印派对赛()--调用 打印分数赛()--调用 打印跑号(10086)--10086是跑号 end), changan.box({"道具赛区", changan.switch("去除断网弹窗", function() so=gg.getRangesList('libil2cpp.so')[2].start L={ {address = so+SO['弹窗'], flags = 4, value = "~A8 MOV W0, #0x1"}, {address = so+SO['弹窗']+4, flags = 4, value = "~A8 RET"}, } gg.setValues(L) gg.toast("开启成功") string.toMusic("开启成功") end), changan.button("退出游戏", function() local gg=gg local lib = gg.getRangesList() do do for _FORV_4_ in ipairs(lib) do if string.find(lib[_FORV_4_].name, "libil2cpp.so") and lib[_FORV_4_].state == "Xa" and lib[_FORV_4_].type == "r-xp" then module = lib[_FORV_4_].start break end end end end hook = {StaticUpdater = SO['更新时刻']} function HookCall(set) local action = module + set.hook local recover = gg.getValues({ {address = action, flags = 4} })[1].value local offset = function(a, b) if b <= a then return string.format("-0x%X", a - b) else return string.format("0x%X", b - a) end return 0 end local original = {} do do for _FORV_8_, _FORV_9_ in pairs(set.method) do original[#original + 1] = { address = action, flags = 4, value = "~A8 B [PC,#" .. offset(action, module + _FORV_9_) .. "]" } end end end original[#original + 1] = { address = action, flags = 4, value = recover } do do for _FORV_8_ in ipairs(original) do gg.setValues({ original[_FORV_8_] }) gg.sleep(math.random(28, 35)) end end end return true end HookCall({ method = {SO['弹窗']}, -- RealPVPDisconnectPopup,Open hook = hook.StaticUpdater }) gg.toast("成功") end), changan.button("匹配人机", function() local gg=gg function huitiao(a , b) pyl = b - a if string.find(pyl, "-") then gsub = string.gsub(pyl, "-", "") format = string.format("-0x%X", gsub) else format = string.format("0x%X", pyl) end format = '~A8 B [PC,#'..format..']' return format end _ENV['获取玩家ID_1'] = 0x27997fc _ENV['获取玩家ID_2'] = 0x2796f4c _ENV['获取玩家ID_3'] = 0x2798ad4 _ENV['获取玩家ID_4'] = 0x26eea3c il2cpp = gg.getRangesList('il2cpp.so')[2].start Values = { {address = il2cpp + _ENV['获取玩家ID_1'] , flags = 4 , value = huitiao(_ENV['获取玩家ID_1'],_ENV['获取玩家ID_4'])}, {address = il2cpp + _ENV['获取玩家ID_2'] , flags = 4 , value = '~A8 MOV X0, XZR'}, {address = il2cpp + _ENV['获取玩家ID_2'] + 4, flags = 4 , value = '~A8 RET'}, {address = il2cpp + _ENV['获取玩家ID_3'] , flags = 4 , value = '~A8 MOV X0, XZR'}, {address = il2cpp + _ENV['获取玩家ID_3'] + 4, flags = 4 , value = '~A8 RET'}, } gg.setValues(Values) _ENV['刷新函数_2'] = 0x19cf2f0 _ENV['游戏刷新函数'] = 0x3c0cee8 function HookCall(set) local lib = gg.getRangesList() for _ in ipairs(lib) do if string.find(lib[_].name, 'libil2cpp.so') and lib[_].state == 'Xa' and lib[_].type == 'r-xp' then module = lib[_].start break end end local action = module + set.hook local recover = gg.getValues({{address = action, flags = 4}})[1].value local function offset(a, b) if a >= b then return string.format("-0x%X", a - b) else return string.format("0x%X", b - a) end return 0 end local original = {} for a, r in pairs(set.method) do original[#original+1] = {address = action, flags = 4, value = "~A8 B [PC,#"..offset(action, module + r).."]"} end original[#original+1] = {address = action, flags = 4, value = recover} for I in ipairs(original) do gg.setValues({original[I]}) gg.sleep(math.random(4 * 7, 5 * 7)) --给它一个调用的时间 end return true end HookCall{ method = {0x30e6158}, hook = _ENV['游戏刷新函数'], } gg.toast("调用成功") gg.alert('调用成功!\n铂金以下有效果\n进游戏直接退出即可加星') end), changan.button("自改滑板速度", function() local gg=gg local sz = gg.prompt({"请输入滑板速度"}, {"16384"}, {"text"})[1] function SO_LU(functionADD, TYPE, VALUE) local SOMOD = gg.getRangesList("il2cpp.so") if SOMOD[2] == nil then gg.alert("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else gg.setValues({ { address = SOMOD[2].start + functionADD, flags = TYPE, value = VALUE } }) gg.setValues({ { address = SOMOD[2].start + functionADD + 4, flags = TYPE, value = "~A8 RET" } }) gg.setValues({ { address = SOMOD[2].start + functionADD + 8, flags = 16, value = sz } }) end end SO_LU(0x391dbbc,4,"~A8 LDR S0, [PC,#0x8]") gg.toast("更改成功") string.toMusic("滑板速度已更新") end), changan.button("自改滑板时长", function() local gg=gg function setfloat(method, value, ufo) local so = gg.getRangesList("il2cpp.so")[2].start local mmap if ufo == nil then mmap = gg.allocatePage(gg.PROT_READ | gg.PROT_WRITE | gg.PROT_EXEC) else mmap = ufo end gg.setValues({ { address = mmap, flags = 4, value = "~A8 LDR S0, [PC,#0xFC]" }, { address = mmap + 0x4, flags = 4, value = "~A8 BR X30" }, { address = mmap + 0xFC, flags = 16, value = value }, { address = so + method, flags = 4, value = "~A8 LDR X0, [PC,#0x8]" }, { address = so + method + 0x4, flags = 4, value = "~A8 BR X0" }, { address = so + method + 0x8, flags = 32, value = mmap }, }) return mmap end local a = gg.prompt({"输入局内滑板持续时长\n推荐14250.5"},{"14250.5"},{"text"}) if not a then return end setfloat(SO['滑板时长'], tonumber ( a [1] ) ) gg.toast("更改成功") string.toMusic("滑板持续时间已更新") end), changan.switch("冲榜配置", function() local gg=gg SO_PT(SO['跳跃'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['跳跃'] ,SO['获取能量2']).."]") SO_PT(SO['下滑'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑'] ,SO['获取能量2']).."]") SO_PT(SO['无视障碍'],4,"~A8 MOV W0, #1") gg.toast("开启成功") gg.alert('开启成功 不要搭配任何功能') end), changan.switch("作者配置", function() local gg=gg SO_PT(SO['无视道具1'] ,4,"~A8 MOV W0, #1") SO_PT(SO['无视道具2'] ,4,"~A8 MOV W0, #1") SO_PT(SO['跳跃'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['跳跃'] ,SO['获取能量2']).."]") SO_PT(SO['下滑'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑'] ,SO['获取能量2']).."]") SO_PT(SO['Buff模式'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['Buff模式'] ,SO['获取能量1']).."]") SO_PT(SO['无视障碍'],4,"~A8 MOV W0, #1") SO_PT(SO['无视侧撞'] ,4,"~A8 MOV W0, #1") SO_PT(SO['减速带'],4,"~A8 MOV W0, WZR") gg.toast("开启成功") string.toMusic('开启成功') end), changan.switch("半自动上分", function() local gg=gg SO_FPT(SO['人物全局速度'],4,"1745") SO_PT(SO['能量穿透'] ,4,"~A8 MOV W0, #1") SO_PT(SO['无视障碍'],4,"~A8 MOV W0, #1") SO_PT(SO['无视侧撞'] ,4,"~A8 MOV W0, #1") SO_PT(SO['减速带'],4,"~A8 MOV W0, WZR") SO_PT(SO['反弹道具1'] ,4,"~A8 MOV W0, #1") SO_PT(SO['反弹道具2'] ,4,"~A8 MOV W0, WZR") gg.toast("开启成功") gg.alert('开启成功\n挂连点器即可') end), changan.switch("慢能量倍增", function() SO_PT(SO['跳跃'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['跳跃'] ,SO['获取能量1']).."]") SO_PT(SO['下滑'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑'] ,SO['获取能量1']).."]") gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("快能量倍增" , function() SO_PT(SO['跳跃'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['跳跃'] ,SO['获取能量1']).."]") SO_PT(SO['下滑1'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑1'] ,SO['获取能量1']).."]") SO_PT(SO['下滑左'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑左'] ,SO['获取能量1']).."]") SO_PT(SO['下滑中'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑中'] ,SO['获取能量1']).."]") SO_PT(SO['下滑右'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑右'] ,SO['获取能量1']).."]") gg.toast("开启成功") string.toMusic('开启成功') end), changan.switch("新量倍增", function() SO_PT(SO['跳跃'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['跳跃'] ,SO['获取能量2']).."]") SO_PT(SO['下滑'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑'] ,SO['获取能量2']).."]") SO_PT(SO['Buff模式'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['Buff模式'] ,SO['获取能量1']).."]") gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("Buff聚能", function() SO_PT(SO['Buff模式'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['Buff模式'] ,SO['获取能量1']).."]") gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("图标聚能", function() SO_PT(SO['使用道具'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['使用道具'] ,SO['加能量']).."]") SO_PT(SO['点击道具图标'],4,"~A8 B [PC,#"..SOGSPY_ST(SO['点击道具图标'],SO['点击道具图标获取能量回调']).."]") gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("过滤十秒", function() SO_PT(SO['过滤十秒'],4, "~A8 MOV X0, WZR") gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("概率敌人进不去", function() il2cpp = gg.getRangesList('il2cpp.so')[2].start Values = { {address = il2cpp + SO['获取玩家ID_1'] , flags = 4 , value = huitiao(SO['获取玩家ID_1'],SO['获取玩家ID_4'])}, {address = il2cpp + SO['获取玩家ID_2'] , flags = 4 , value = '~A8 MOV X0, XZR'}, {address = il2cpp + SO['获取玩家ID_2'] + 4, flags = 4 , value = '~A8 RET'}, {address = il2cpp + SO['获取玩家ID_3'] , flags = 4 , value = '~A8 MOV X0, XZR'}, {address = il2cpp + SO['获取玩家ID_3'] + 4, flags = 4 , value = '~A8 RET'}, {address = il2cpp + 0x1c5feac , flags = 4 , value = '~A8 MOV X0, XZR'}, {address = il2cpp + 0x1c5d5fc + 4, flags = 4 , value = '~A8 RET'}, {address = il2cpp + 0x1c5f184, flags = 4 , value = '~A8 MOV X0, XZR'}, {address = il2cpp + 0x1b9b0a4 + 4, flags = 4 , value = '~A8 RET'}, } gg.setValues(Values) gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("定住人机", function() SO_PT(SO['PVP定人'],4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic('开启成功') end, function () SO_PT(SO['PVP定人'],4,"~A8 MOV W0, WZR") gg.toast("关闭成功") string.toMusic('定住人机关闭成功') end), changan.switch("人机匹配机制", function() SO_PT(SO['匹配机制3'],4,"~A8 B [PC,#"..SOGSPY_ST(SO['匹配机制3'],SO['竞赛模式1']).."]") SO_PT(SO['匹配机制2'],4,"~A8 MOV W0, #1") gg.toast("匹配机制开启成功") function huitiao(a , b) pyl = b - a if string.find(pyl, "-") then gsub = string.gsub(pyl, "-", "") format = string.format("-0x%X", gsub) else format = string.format("0x%X", pyl) end format = '~A8 B [PC,#'..format..']' return format end _ENV['获取玩家ID_1'] = 0x1c5feac _ENV['获取玩家ID_2'] = 0x1c5d5fc _ENV['获取玩家ID_3'] = 0x1c5f184 _ENV['获取玩家ID_4'] = 0x1b9b0a4 il2cpp = gg.getRangesList('il2cpp.so')[2].start Values = { {address = il2cpp + _ENV['获取玩家ID_1'] , flags = 4 , value = huitiao(_ENV['获取玩家ID_1'],_ENV['获取玩家ID_4'])}, {address = il2cpp + _ENV['获取玩家ID_2'] , flags = 4 , value = '~A8 MOV X0, XZR'}, {address = il2cpp + _ENV['获取玩家ID_2'] + 4, flags = 4 , value = '~A8 RET'}, {address = il2cpp + _ENV['获取玩家ID_3'] , flags = 4 , value = '~A8 MOV X0, XZR'}, {address = il2cpp + _ENV['获取玩家ID_3'] + 4, flags = 4 , value = '~A8 RET'}, } gg.setValues(Values) _ENV['刷新函数_2'] = 0x19cf2f0 _ENV['游戏刷新函数'] = 0x3c0cee8 function HookCall(set) local lib = gg.getRangesList() for _ in ipairs(lib) do if string.find(lib[_].name, 'libil2cpp.so') and lib[_].state == 'Xa' and lib[_].type == 'r-xp' then module = lib[_].start break end end local action = module + set.hook local recover = gg.getValues({{address = action, flags = 4}})[1].value local function offset(a, b) if a >= b then return string.format("-0x%X", a - b) else return string.format("0x%X", b - a) end return 0 end local original = {} for a, r in pairs(set.method) do original[#original+1] = {address = action, flags = 4, value = "~A8 B [PC,#"..offset(action, module + r).."]"} end original[#original+1] = {address = action, flags = 4, value = recover} for I in ipairs(original) do gg.setValues({original[I]}) gg.sleep(math.random(4 * 7, 5 * 7)) --给它一个调用的时间 end return true end HookCall{ method = {0x30e6158}, hook = _ENV['游戏刷新函数'], } gg.toast("游戏函数刷新成功") gg.alert('开启成功\n已调出创建观战房间按钮\n点击创建观战房间匹配人机\n局内直接退即可加星') end), changan.switch("ACC状态[无法开滑板]" , function() local SO = {} SO['改状态'] = 0x299554c so=gg.getRangesList('libil2cpp.so')[2].start py=SO['改状态'] bj={ {address = so+py+0xDC, flags = 4, value = "~A8 MOV W1, #0x2"}, } gg.setValues(bj) gg.toast("ACC状态开启成功") string.toMusic("开启成功") end), changan.switch("开关加速", function() SO_FPT(SO['人物全局速度'],4,"0") gg.toast("开启成功") string.toMusic("人物速度修改为零,局内一分四十五秒手动关闭") end, function() SO_FPT(SO['人物全局速度'],4,"99999") gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("自动上分", function() 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 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 = Get_Address(t_So, t_Offset, _bit) return _A end function setvalue(address, flags, value) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = flags tt[1].value = value gg.setValues(tt) end setvalue(gg.getRangesList('libil2cpp.so')[2].start+SO['速度检测'] ,4,-698416192) setvalue(gg.getRangesList('libil2cpp.so')[2].start+SO['速度检测2'] ,4,-698416192) local t = {"libunity.so:bss", "Cb"} local tt = {0xF83B8,0x698,0x668,0x688,0x218,0x3F4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 9191, freeze = true}}) local t = {"libunity.so:bss", "Cb"} local tt = {0xF83B8,0x698,0x668,0x688,0x218,0x3F4+0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 9191, freeze = true}}) -- 下滑穿透 local mk=gg.getRangesList('libil2cpp.so')[2].start local pyl=SO['自动速度'] local xg={ {address = mk+pyl, flags = 4, value = "~A8 RET"}, {address = mk+pyl+4, flags = 4, value = "~A8 LDR S17, [PC,#0x90000]"}, {address = mk+pyl+4+0x90000, flags = 16, value = 104.0}, {address = mk+pyl+8, flags = 4, value = "~A8 FCMP S16, S17"}, {address = mk+pyl+12, flags = 4, value = "~A8 B.GT [PC,#0xC]"}, {address = mk+pyl+12+0xC, flags = 4, value = "~A8 LDR S0, [PC,#0x90000]"}, {address = mk+pyl+12+0xC+4, flags = 4, value = "~A8 RET"}, {address = mk+pyl+12+0xC+0x90000, flags = 16, value = 50000.0}, {address = mk+pyl+16, flags = 4, value = "~A8 LDR S0, [PC,#0x90000]"}, {address = mk+pyl+16+0x90000, flags = 16, value = 0.0}, {address = mk+pyl+20, flags = 4, value = "~A8 RET"}, {address = mk+pyl, flags = 4, value = "~A8 LDR S16, [X0,#0xF4]"}, } gg.setValues(xg) gg.toast("开启成功") gg.alert('开启成功\n局内下滑一次') end), changan.switch("无视道具", function() SO_PT(SO['无视道具1'] ,4,"~A8 MOV W0, #1") SO_PT(SO['无视道具2'] ,4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic('开启成功') end), changan.switch("能量穿透" , function() SO_PT(SO['能量穿透'] ,4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic('开启成功') end), changan.switch("无视障碍" , function() SO_PT(SO['无视障碍'],4,"~A8 MOV W0, #1") SO_PT(SO['无视侧撞'] ,4,"~A8 MOV W0, #1") SO_PT(SO['减速带'],4,"~A8 MOV W0, WZR") gg.toast("开启成功") string.toMusic('开启成功') end), changan.switch("反弹道具", function() SO_PT(SO['反弹道具1'] ,4,"~A8 MOV W0, #1") SO_PT(SO['反弹道具2'] ,4,"~A8 MOV W0, WZR") gg.toast("开启成功") string.toMusic("开启成功") end, function () SO_PT(SO['反弹道具2'] ,4,"~A8 MOV W0, WZR") SO_PT(SO['反弹道具1'] ,4,"~A8 MOV W0, #1") gg.toast("关闭成功") string.toMusic('关闭成功') end), changan.switch("隐藏敌人", function() il2cpp = gg.getRangesList('il2cpp.so')[2].start Values = { {address = il2cpp + SO['隐藏敌人'] , flags = 4 , value = '~A8 MOV X0, XZR'}, {address = il2cpp + SO['隐藏敌人'] + 4, flags = 4 , value = '~A8 RET'}, } gg.setValues(Values) gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("间隔满板", function() SO_PT(SO['无限能量'] ,4,"~A8 MOV W0, WZR") gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("受击道具", function() SO_PT(SO['受到攻击'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['受到攻击'] ,SO['攻击拾取']).."]") gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("无限滑板", function() function _lib(libs, state) local lib = gg.getRangesList(libs) for seed in ipairs(lib) do if lib[seed].state == state then return lib[seed].start end end end function zhix() local il2cpp_start = _lib('il2cpp', 'Xa') local targetOffset = il2cpp_start +SO['点击'] local getClass = il2cpp_start +SO['结尾'] local destinationOffset = il2cpp_start +SO['状态'] local ReleaseEnergyOffset = il2cpp_start +SO['释放能量'] local CollectPropOffset = il2cpp_start +SO['攻击拾取'] local register = { [0] = {0xB8, 32, 0}; [1] = {0x208, 4, 5}; [2] = {0x20C, 16, 80}; [3] = {0x210, 4, 0}; [4] = {0x214, 4, 1}; [5] = {0x218, 32, destinationOffset}; } local mmap = gg.allocatePage(1 | 2 | 4) + 8 local table_correct = { { address = mmap + ( #register + 1) * 4, flags = 4, value = '~A8 BR X5' }, {address = ReleaseEnergyOffset, flags = 4, value = '~A8 MOV W0, #1'}, {address = ReleaseEnergyOffset + 4, flags = 4, value = '~A8 RET'}, {address = CollectPropOffset, flags = 4, value = '~A8 RET'}, {address = targetOffset, flags = 4, value = '~A8 LDR X1, [PC,#0x8]'}, {address = targetOffset + 4, flags = 4, value = '~A8 BR X1'}, {address = targetOffset + 8, flags = 32, value = mmap}, {address = getClass, flags = 4, value = '~A8 LDR X2, [PC,#0x8]'}, {address = getClass + 4, flags = 4, value = '~A8 BR X2'}, { address = getClass + 8, flags = 32, value = (mmap - 8) }, { address = (mmap - 8), flags = 4, value = '~A8 STR X0, [X2,#0xC0]' }, { address = (mmap - 4), flags = 4, value = '~A8 RET' }, } for search = 0,#register do table_correct[ #table_correct + 1], table_correct[ #table_correct + 2] = { address = mmap + search * 4, flags = 4, value = '~A8 LDR X' .. search .. ', [PC,#' .. string.format('0x%X', register[search][1]) .. ']' }, { address = mmap + (search * 4) + register[search][1], flags = register[search][2], value = register[search][3] } end return gg.setValues(table_correct) end zhix() gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("开局道具", function() local gg=gg a = gg.prompt({'道具代码:\n1=恶魔 2=乌龟 3=颜料 4=能量10%[1;4]'},{[1]=2},{[1]='number'})[1] if not a then return end SO_PT(SO['开局道具'],4,"~A8 MOV W0, #"..a.."") gg.toast("更改成功") string.toMusic("修改成功") end), }), changan.box({"娱乐区", changan.switch("滑板瞬移", function() SO_PT(SO['滑板瞬移'],4,"~A8 MOV W0, #1") SO_PT(SO['滑板技能'],4,"~A8 MOV W0, #1") SO_PT(SO['滑板技能勾选'],4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic('开启成功') end, function() SO_PT(SO['滑板瞬移'],"~A8 MOV W0, WZR") gg.toast("关闭成功") string.toMusic('关闭成功') end), changan.switch("人物瞬移", function() SO_PT(SO['人物瞬移'],4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic('开启成功') end, function() SO_PT(SO['人物瞬移'],4,"~A8 MOV W0, WZR") gg.toast("关闭成功") string.toMusic('关闭成功') end), changan.switch("人物无敌", function() SO_PT(SO['人物无敌'],4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic('开启成功') end), changan.switch("无限跳跃", function() SO_PT(SO['无限跳跃'],4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic('开启成功') end, function() SO_PT(SO['无限跳跃'],4,"~A8 MOV W0, WZR") gg.toast("关闭成功") string.toMusic("关闭成功") end), changan.switch("滑板滑翔", function() SO_PT(SO['滑板滑翔'],4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic('开启成功') end, function() SO_PT(SO['滑板滑翔'],4,"~A8 MOV W0, #1") gg.toast("关闭成功") string.toMusic('关闭成功') end), changan.switch("滑板跳高", function() SO_PT(SO['滑板跳高'],4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic('开启成功') end, function() SO_PT(SO['滑板跳高'],4,"~A8 MOV W0, #1") gg.toast("关闭成功") string.toMusic('关闭成功') end), changan.switch("滑板消失" , function() SO_PT(SO['滑板消失'],4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic("开启成功") end, function() SO_PT(SO['滑板消失'],4,"~A8 MOV W0, WZR") gg.toast("关闭成功") string.toMusic("关闭成功") end), changan.switch("下滑穿透", function() function getMmap() --获取游戏自己分配的内存页 local AddrList = {} local RangesList = gg.getRangesList() for _, __ in pairs(RangesList) do if __["state"] == "A" and __["type"] == "rwxp" then for ___=0, 4096, 8 do table.insert(AddrList, {address = __["start"]+___, flags = 32, value = 0}) end gg.setValues(AddrList) return __["start"] end end end function getMmap_1() il2cpp = gg.getRangesList('il2cpp.so') for k , v in ipairs (il2cpp) do if v.state == 'Xa' then il2cpp = v.start break end end TargetOffset_ByMmap = il2cpp + _ENV['刷新函数_2'] mmap = getMmap() local hook = { {address=TargetOffset_ByMmap,value="~A8 LDR X16, [PC,#0x8]",flags=4}, {address=TargetOffset_ByMmap+0x4,value="~A8 BR X16",flags=4}, {address=TargetOffset_ByMmap+0x8, value=mmap,flags=32}, {value="~A8 LDR X16, [PC,#0x54]",flags=4,address=mmap}, {value="~A8 STP X29, X30, [SP,#-0x20]!",flags=4,address=mmap+0x4}, {value="~A8 MOV X0, XZR",flags=4,address=mmap+0x8}, {value="~A8 MOV X1, #4096",flags=4,address=mmap+0xC}, {value="~A8 MOV X2, #7",flags=4,address=mmap+0x10}, {value="~A8 MOV X3, #0x22",flags=4,address=mmap+0x14}, {value="~A8 MOV X4, XZR",flags=4,address=mmap+0x18}, {value="~A8 MOV X5, XZR",flags=4,address=mmap+0x1C}, {value="~A8 MOV X8, #222",flags=4,address=mmap+0x20}, {value="~A8 B [PC,#0x200]",flags=4,address=mmap+0x24}, {value=mmap+0x5C,flags=32,address=mmap+0x54}, {address = mmap + 0x224 , flags = 4 , value = '~A8 LDR X11, [X16,#0x100]'}, {address = mmap + 0x224 + 4, flags = 4 , value = '~A8 ADD X11, X11, #1'}, {address = mmap + 0x224 + 8, flags = 4 , value = '~A8 STR X11, [X16,#0x100]'}, {address = mmap + 0x224 + 12, flags = 4 , value = '~A8 CMP X11, #1'}, {address = mmap + 0x224 + 16, flags = 4 , value = '~A8 B.EQ [PC,#0x8]'}, {address = mmap + 0x224 + 20, flags = 4 , value = '~A8 RET'}, {address = mmap + 0x224 + 24, flags = 4 , value = '~A8 SVC #0'}, {address = mmap + 0x224 + 28, flags = 4 , value = '~A8 STR X0, [X16]'}, {address = mmap + 0x224 + 32, flags = 4 , value = '~A8 LDP X29, X30, [SP], #0x20'}, {address = mmap + 0x224 + 36, flags = 4 , value = '~A8 RET'}, } gg.setValues(hook) getMmap_Addr = mmap + 0x5C return getMmap_Addr end function GetMmap() mmap = gg.allocatePage(gg.PROT_READ | gg.PROT_WRITE | gg.PROT_EXEC) if mmap ~= '无法分配内存页。错误 0' then return mmap else if not getMmap_Addr then gg.processPause() getMmap_Addr = getMmap_1() gg.processResume() end gg.setValues({{address = getMmap_Addr + 0x100 , flags = 4 , value = 0}}) while true do Value_Addr = gg.getValues({{address=getMmap_Addr,flags=32}})[1].value gg.sleep(20) if Value_Addr ~= 0 then return Value_Addr end end end end function getPointer(Address) return gg.getValues({{address=Address,flags=32}})[1].value end function getString(a) local utf, u16 = {}, {} for i = 1, 64, 1 do utf[i] = {address = a + i * 2, flags = 2} end utf = gg.getValues(utf) for k, v in ipairs(utf) do if v.value == 0 then break end u16[k] = v.value & 0xFFFF end return utf8.char(table.unpack(u16)) end function zl_table(a, b, c) return not a[c] and b or a[c] end _ENV['获取Character实例'] = 0x3506d70 _ENV['游戏刷新函数'] = 0x3c0cee8 il2cpp = gg.getRangesList('il2cpp.so')[2].start TargetOffset = il2cpp + _ENV['游戏刷新函数'] if not Character_1 then mmap = GetMmap() SetValues_1 = { {address = TargetOffset , flags = 4 , value = '~A8 LDR X16, [PC,#0x8]'}, {address = TargetOffset + 4, flags = 4 , value = '~A8 BR X16'}, {address = TargetOffset + 8, flags = 32 , value = mmap}, {address = mmap , flags = 4 , value = '~A8 STP X29, X30, [SP,#-0x20]!'}, {address = mmap + 4, flags = 4 , value = '~A8 MOV X29, SP'}, {address = mmap + 8, flags = 4 , value = '~A8 LDR X17, [X16,#0x200]'}, {address = mmap + 12, flags = 4 , value = '~A8 BLR X17'}, {address = mmap + 16, flags = 4 , value = '~A8 STR X0, [X16,#0x210]'}, {address = mmap + 20, flags = 4 , value = '~A8 LDR X16, [PC,#0x20]'}, {address = mmap + 24, flags = 4 , value = '~A8 LDP X29, X30, [SP], #0x20'}, {address = mmap + 28, flags = 4 , value = '~A8 RET'}, {address = mmap + 32, flags = 32 , value = mmap}, {address = mmap + 0x200, flags = 32 , value = il2cpp + _ENV['获取Character实例']}, } gg.setValues(SetValues_1) while true do gg.sleep(20) Value = gg.getValues({{address = mmap + 0x210 , flags = 32}})[1].value if Value ~= 0 then Character_1 = Value break end end end mmap = GetMmap() gg.setValues({ {address = TargetOffset , flags = 4 , value = '~A8 LDR X16, [PC,#0x8]'}, {address = TargetOffset + 4, flags = 4 , value = '~A8 BR X16'}, {address = TargetOffset + 8, flags = 32 , value = mmap}, {address = mmap , flags = 4 , value = '~A8 LDR X0, [X16,#0x200]'}, {address = mmap + 4, flags = 4 , value = '~A8 LDR W1, [X16,#0x210]'}, {address = mmap + 8, flags = 4 , value = '~A8 STR W1, [X0,#0x3F4]'}, {address = mmap + 12, flags = 4 , value = '~A8 STR W1, [X0,#0x404]'}, {address = mmap + 16, flags = 4 , value = '~A8 RET'}, {address = mmap + 0x200, flags = 32 , value = Character_1}, {address = mmap + 0x210, flags = 16 , value = 9999}, }) gg.toast("开启成功") string.toMusic('开启成功') end), }), changan.box({"调出观战区", changan.switch("调出观战", function() SO_PT(SO['观战资格'],4,"~A8 MOV W0, #1","~A8 RET") SO_PT(SO['对抗赛好友匹配'],4,"~A8 MOV W0, #1","~A8 RET") gg.toast("调用成功") string.toMusic('开启成功') end, function() SO_PT(SO['观战资格'],4,"~A8 RET") gg.toast("关闭成功") string.toMusic('关闭成功') end), changan.switch("房间踢人", function() SO_PT(SO['好友'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['好友'] ,SO['踢人']).."]") gg.toast("更改成功") string.toMusic('开启成功') end), changan.switch("房间防踢", function() SO_PT(SO['房间防踢1'],4,"~A8 MOV W0, WZR") SO_PT(SO['房间防踢'],4,"~A8 MOV W0, WZR") gg.toast("更改成功") string.toMusic('开启成功') end), }), changan.box({"派对赛区", changan.switch("防止卡屏", function() SO_PT(SO['防止卡屏1'],4,"~A8 MOV W0, #1","~A8 RET") SO_PT(SO['防止卡屏2'],4,"~A8 MOV W0, WZR","~A8 RET") gg.toast("更改成功") string.toMusic('开启成功') end), changan.switch("过结算检测", function() SO_PT(SO['新时刻'],4,"~A8 MOV W0, #1") SO_PT(SO['作弊时间'],4,"~A8 MOV W0, WZR") gg.toast("更改成功") string.toMusic('开启成功') end), changan.switch("结算得分", function() local nc={} local so=gg.getRangesList("il2cpp.so") for i=1,#so do nc[i]=so[i].state if nc[i]=="Xa" then nc=i break end end local so=so[nc].start local py=SO['结束游戏'] gg.setValues({{address=so+py,flags=4,value="~A8 MOV W0, #1"}}) gg.setValues({{address=so+py+4,flags=4,value="~A8 RET"}}) gg.toast("开启成功") string.toMusic("结算成功") end, function() SO_PT(SO['结束游戏'],"~A8 MOV W0, WZR","~A8 RET") gg.toast("关闭成功") string.toMusic("关闭成功") end), changan.switch("一分钟结算", function() SO_PT(SO['结算作弊状态'],4,"~A8 MOV W0, WZR")--结算作弊状态 SO_PT(SO['结算异常'],4,"~A8 MOV W0, #1")--结算异常 SO_PT(SO['结算恢复'],4,"~A8 MOV W0, WZR")--结算恢复 SO_PT(SO['屏蔽人机'],4,"~A8 MOV W0, #1")--屏蔽人机 SO_PT(SO['进入结算屏蔽'],4,"~A8 MOV W0, #1")--进入结算屏蔽 gg.toast("开启成功") string.toMusic('开启成功') end), changan.switch("发表情退出", function() SO_PT(SO['发表情退出'],4,"~A8 B [PC,#"..SOGSPY_ST(SO['发表情退出'],SO['发表情退出回调']).."]") SO_PT(SO['终点自动退出'],4,"~A8 B [PC,#"..SOGSPY_ST(SO['终点自动退出'],SO['终点自动退出回调']).."]") gg.toast("开启成功") string.toMusic('开启成功') end), changan.switch("表情退出", function() SO_PT(SO['表情退出'],4,"~A8 B [PC,#-0x67BF4]") gg.toast("开启成功") string.toMusic('开启成功') end), changan.switch("自动上分", function() 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 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 = Get_Address(t_So, t_Offset, _bit) return _A end function setvalue(address, flags, value) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = flags tt[1].value = value gg.setValues(tt) end setvalue(gg.getRangesList('libil2cpp.so')[2].start+SO['速度检测'] ,4,-698416192) setvalue(gg.getRangesList('libil2cpp.so')[2].start+SO['速度检测2'] ,4,-698416192) local t = {"libunity.so:bss", "Cb"} local tt = {0xF83B8,0x698,0x668,0x688,0x218,0x3F4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 9191, freeze = true}}) local t = {"libunity.so:bss", "Cb"} local tt = {0xF83B8,0x698,0x668,0x688,0x218,0x3F4+0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 9191, freeze = true}}) -- 下滑穿透 local mk=gg.getRangesList('libil2cpp.so')[2].start local pyl=SO['自动速度'] local xg={ {address = mk+pyl, flags = 4, value = "~A8 RET"}, {address = mk+pyl+4, flags = 4, value = "~A8 LDR S17, [PC,#0x90000]"}, {address = mk+pyl+4+0x90000, flags = 16, value = 136.0}, {address = mk+pyl+8, flags = 4, value = "~A8 FCMP S16, S17"}, {address = mk+pyl+12, flags = 4, value = "~A8 B.GT [PC,#0xC]"}, {address = mk+pyl+12+0xC, flags = 4, value = "~A8 LDR S0, [PC,#0x90000]"}, {address = mk+pyl+12+0xC+4, flags = 4, value = "~A8 RET"}, {address = mk+pyl+12+0xC+0x90000, flags = 16, value = 11100.0}, {address = mk+pyl+16, flags = 4, value = "~A8 LDR S0, [PC,#0x90000]"}, {address = mk+pyl+16+0x90000, flags = 16, value = 0.0}, {address = mk+pyl+20, flags = 4, value = "~A8 RET"}, {address = mk+pyl, flags = 4, value = "~A8 LDR S16, [X0,#0xF4]"}, } gg.setValues(xg) gg.toast("开启成功") gg.alert('开启成功\n局内下滑一次') end), changan.switch("受击道具", function() SO_PT(SO['受到攻击'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['受到攻击'] ,SO['攻击拾取']).."]") gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("无限滑板", function() function _lib(libs, state) local lib = gg.getRangesList(libs) for seed in ipairs(lib) do if lib[seed].state == state then return lib[seed].start end end end function zhix() local il2cpp_start = _lib('il2cpp', 'Xa') local targetOffset = il2cpp_start +SO['点击'] local getClass = il2cpp_start +SO['结尾'] local destinationOffset = il2cpp_start +SO['状态'] local ReleaseEnergyOffset = il2cpp_start +SO['释放能量'] local CollectPropOffset = il2cpp_start +SO['攻击拾取'] local register = { [0] = {0xB8, 32, 0}; [1] = {0x208, 4, 5}; [2] = {0x20C, 16, 80}; [3] = {0x210, 4, 0}; [4] = {0x214, 4, 1}; [5] = {0x218, 32, destinationOffset}; } local mmap = gg.allocatePage(1 | 2 | 4) + 8 local table_correct = { { address = mmap + ( #register + 1) * 4, flags = 4, value = '~A8 BR X5' }, {address = ReleaseEnergyOffset, flags = 4, value = '~A8 MOV W0, #1'}, {address = ReleaseEnergyOffset + 4, flags = 4, value = '~A8 RET'}, {address = CollectPropOffset, flags = 4, value = '~A8 RET'}, {address = targetOffset, flags = 4, value = '~A8 LDR X1, [PC,#0x8]'}, {address = targetOffset + 4, flags = 4, value = '~A8 BR X1'}, {address = targetOffset + 8, flags = 32, value = mmap}, {address = getClass, flags = 4, value = '~A8 LDR X2, [PC,#0x8]'}, {address = getClass + 4, flags = 4, value = '~A8 BR X2'}, { address = getClass + 8, flags = 32, value = (mmap - 8) }, { address = (mmap - 8), flags = 4, value = '~A8 STR X0, [X2,#0xC0]' }, { address = (mmap - 4), flags = 4, value = '~A8 RET' }, } for search = 0,#register do table_correct[ #table_correct + 1], table_correct[ #table_correct + 2] = { address = mmap + search * 4, flags = 4, value = '~A8 LDR X' .. search .. ', [PC,#' .. string.format('0x%X', register[search][1]) .. ']' }, { address = mmap + (search * 4) + register[search][1], flags = register[search][2], value = register[search][3] } end return gg.setValues(table_correct) end zhix() string.toMusic("开启成功") gg.toast("开启成功") end), changan.switch("无视道具", function() SO_PT(SO['无视道具1'] ,4,"~A8 MOV W0, #1") SO_PT(SO['无视道具2'] ,4,"~A8 MOV W0, #1") gg.toast("开启成功") string.toMusic('开启成功') end), changan.switch("无视障碍" , function() SO_PT(SO['无视障碍'],4,"~A8 MOV W0, #1") SO_PT(SO['无视侧撞'] ,4,"~A8 MOV W0, #1") SO_PT(SO['减速带'],4,"~A8 MOV W0, WZR") gg.toast("开启成功") string.toMusic('开启成功') end), changan.switch("反弹道具", function() SO_PT(SO['反弹道具1'] ,4,"~A8 MOV W0, #1") SO_PT(SO['反弹道具2'] ,4,"~A8 MOV W0, WZR") gg.toast("开启成功") string.toMusic("开启成功") end, function () SO_PT(SO['反弹道具2'] ,4,"~A8 MOV W0, WZR") SO_PT(SO['反弹道具1'] ,4,"~A8 MOV W0, #1") gg.toast("关闭成功") string.toMusic('反弹道具关闭成功') end), changan.text("能量倍增自定义区域\n开启后每执行一次此操作则获取一次能量","0xffE20C30","13dp"), changan.check({ {"跳跃", function() SO_PT({SO['跳跃']},4,"~A8 B [PC,#"..SOGSPY_ST(SO['跳跃'],SO['获取能量1']).."]") end, function() SO_PT({SO['跳跃']},4,"~A8 MOV W0, #1") end}, {"下滑", function() SO_PT({SO['下滑']},4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑'],SO['获取能量1']).."]") SO_PT({SO['下滑1']},4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑1'],SO['获取能量1']).."]") end, function() SO_PT({SO['下滑']},4,"~A8 MOV W0, #1") SO_PT({SO['下滑1']},4,"~A8 MOV W0, #1") end}, {"下滑左", function() SO_PT({SO['下滑左']},4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑左'],SO['获取能量1']).."]") end, function() SO_PT({SO['下滑左']},4,"~A8 MOV W0, #1") end}, {"下滑中", function() SO_PT({SO['下滑中']},4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑中'],SO['获取能量1']).."]") end, function() SO_PT({SO['下滑中']},4,"~A8 MOV W0, #1") end}, {"下滑右", function() SO_PT({SO['下滑右']},4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑右'],SO['获取能量1']).."]") end, function() SO_PT({SO['下滑右']},4,"~A8 MOV W0, #1") end}, {"Buff增益", function() SO_PT({SO['Buff模式']},4,"~A8 B [PC,#"..SOGSPY_ST(SO['Buff模式'],SO['获取能量1']).."]") end, function() SO_PT({SO['Buff模式']},4,"~A8 MOV W0, #1") end}, }), changan.switch("快速收集能量", function() gg.alert("使用说明:\n踩加减速带,撞墙,被攻击,跳跃翻滚后/拾取能量.踩加减速带/增加能量\n最好隔一秒再开下一次的滑板否则容易被踢出\n如果因多次行为被踢出,会封号。例如开滑板太快被踢出,包括所有提示行为被踢出") SO_PT({SO['Buff模式']},4,"~A8 B [PC,#"..SOGSPY_ST(SO['Buff模式'],SO['获取能量1']).."]") SO_PT({SO['跳跃']},4,"~A8 B [PC,#"..SOGSPY_ST(SO['跳跃'],SO['获取能量1']).."]") SO_PT({SO['下滑1']},4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑1'],SO['获取能量1']).."]") SO_PT({SO['下滑左']},4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑左'],SO['获取能量1']).."]") SO_PT({SO['下滑中']},4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑中'],SO['获取能量1']).."]") SO_PT({SO['下滑右']},4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑右'],SO['获取能量1']).."]") gg.toast("快速收集能量开启成功") end, function() SO_PT({SO['Buff模式']},4,"~A8 MOV W0, #1") SO_PT({SO['跳跃']},4,"~A8 MOV W0, #1") SO_PT({SO['下滑1']},4,"~A8 MOV W0, #1") SO_PT({SO['下滑左']},4,"~A8 MOV W0, #1") SO_PT({SO['下滑中']},4,"~A8 MOV W0, #1") SO_PT({SO['下滑右']},4,"~A8 MOV W0, #1") gg.toast("快速收集能量关闭成功") end), }), changan.box({"分数赛区", changan.text("分数赛"), changan.switch("屏蔽分数检测", function() BJ_SO(SO['分数赛过检'],4,"~A8 MOV W0, #1") gg.toast("开启成功") end), changan.switch("局内分数", function() a = gg.prompt({"输入要修改的分数"},{""},{"text"})[1] a= tonumber(a) BJ_D(SO['得到分数'],4,a,"~A8 RET") end), changan.switch("修改倍数[30/107]", function() BJ_SO(SO['得分倍增'],4,"~A8 MOV W0, #107") gg.toast("倍数修改107级成功") end, function() BJ_SO(SO['得分倍增'],4,"~A8 MOV W0, #30") gg.toast("倍数修改30级成功") end), changan.switch("修改速度", function() local lib = gg.getRangesList() for _ in ipairs(lib) do if string.find(lib[_].name, 'libil2cpp.so') and lib[_].state == 'Xa' and lib[_].type == 'r-xp' then module = lib[_].start break end end function returnValue(set) local inputRegister local page = module + set[1] local mmap = set[4] local setva = { {address = mmap + 0x4, flags = 4, value = '~A8 BR X30'}, {address = mmap + set[2], flags = 16, value = set[3]}, {address = page, flags = 4, value = '~A8 LDR X0, [PC,#0x8]'}, {address = page + 0x4, flags = 4, value = '~A8 BR X0'}, {address = page + 0x8, flags = 32, value = mmap}, } if set[3] % 1 == 0 then inputRegister = 'X0' else inputRegister = 'S0' end table.insert(setva, {address = mmap, flags = 4, value = '~A8 LDR '..inputRegister..', [PC,#'..string.format('0x%X', set[2])..']'}) return gg.setValues(setva) end returnValue{ SO['人物速度'], 0x3BC, 417.5, gg.allocatePage(gg.PROT_READ | gg.PROT_WRITE | gg.PROT_EXEC), } gg.alert("开启成功") string.toMusic('速度修改成功') end), changan.switch("下滑穿透", function() gg.alert("开启稍慢") search(4.5,16) py1(5.5,16,16) xg1(9191,16,0,true) xg1(9192,16,16,true) gg.alert("开启成功") end), changan.switch("修改倍数[30/107]", function() SO_PT(SO['得分倍增'] ,4,"~A8 MOV W0, #107","~A8 RET") gg.toast("倍数修改107级成功") end, function() SO_PT(SO['得分倍增'] ,4,"~A8 MOV W0, #30","~A8 RET") gg.toast("倍数修改30级成功") gg.alert("分数不能跑太多不然会归零") end), changan.switch("无尽装死", function() SO_PT(SO['无尽装死'],"~A8 MOV W0, #1") end), changan.switch("无限跳跃", function() SO_PT(SO['无限跳跃'],"~A8 MOV W0, #1") end), changan.switch("滑板飞翔", function() SO_PT(SO['滑板滑翔'],"~A8 MOV W0, #1") end, function() SO_PT(SO['滑板滑翔'],"~A8 MOV W0, #1") end), changan.switch("滑板跳高", function() SO_PT(SO['滑板跳高'],"~A8 MOV W0, #1") end, function() SO_PT(SO['滑板跳高'],"~A8 MOV W0, WZR") end), changan.switch("滑板瞬移", function() SO_PT(SO['滑板瞬移'],"~A8 MOV W0, #1") end, function() SO_PT(SO['滑板瞬移'],"~A8 MOV W0, WZR") end), changan.switch("撞墙撑杆", function() SO_PT(SO['无尽死亡'],"~A B -0x0000062C") end), changan.switch('金币消失', function() SO_PT(SO['金币消失'],'~A8 MOV W0, WZR') end), changan.switch('平板视角',function() search(1.5,16,32) py1(33,16,0xC) py1(20,16,0x18) xg1(45,16,0x1C,true) gg.alert('平板视角开启成功') end, function() search(1.5,16,32) py1(33,16,0xC) py1(20,16,0x18) xg1(40,16,0x1C,true) end), }), changan.box({"超能无尽区", changan.switch("修改差额分数", function() a = gg.prompt({"输入要修改的分数"},{""},{"text"})[1] a= tonumber(a) SO_Deposit(SO["差额分数"],4,a,"~A8 RET") gg.alert("开启成功") end), changan.switch("无限滑板", function() SO_PT(SO["无限滑板"],4,"~A8 MOV W0, #1") gg.alert("开启成功") end), }), },{---第三页 changan.box({'音乐区域', changan.button("暂停音乐", function() gg.playMusic("6") end), changan.button("搜索音乐", function() menu ={} name ={} id = 0 play = false song = "" _G_ = { function() local searchMusic = gg.prompt({ "歌曲•歌手", "列表•限制", },{"","10"},{ "text", "text", }) if not searchMusic then gg.setVisible(false) Main() elseif searchMusic[1] == "" then gg.alert("请输入歌曲/歌手!") _G_[1]() else local results = gg.makeRequest("http://music.163.com/api/search/get?s="..searchMusic[1].."&type=1&offset=0&total=true&limit="..searchMusic[2]) if results.code == 200 then n=1 for v,k in results.content:gmatch('"id":(.-),"name":"(.-)"') do if n%4 == 1 then menu[n/4+1] = v..";"..k end if n%4 == 2 then menu[n/4+1] = menu[n/4+1]..";"..k end n=n+1 end _G_[2]() else local s = gg.alert("请求异常,请检查网络……","返回","退出") if not s then gg.setVisible(false) Main() end if s == 1 then os.exit() end if s == 2 then _G_[1]() end end end end, function() if #menu == 0 then gg.alert("没有搜索记录") Main() else for n=1,#menu do name[n] = menu[n]:gsub("[0-9]+;",""):gsub(";","\n歌手:") end local mu = gg.choice(name,0,"歌单") if not mu then _G_[1]() else song = name[mu] local sn=gg.choice({"播放","查看歌词"},nil,"歌曲:"..name[mu]) if not sn then _G_[1]() end if sn == 1 then id = menu[mu]:match("(.-);") gg.toast("正在播放音乐:"..name[mu],true) gg.playMusic("http://music.163.com/song/media/outer/url?id="..id..".mp3") play = true end if sn == 2 then id = menu[mu]:match("(.-);") song = name[mu] _G_[3]() end end end end, function() if id == 0 then gg.alert("未有播放记录") Main() else local results = gg.makeRequest("http://music.163.com/api/song/media?id="..id).content rs = results:match('"lyric":"(.-)","code'):gsub("\\n","\n"):gsub("[[!-z]+]","") gg.alert("\n《"..song:gsub("\n","》\n").."\n\n"..rs) gg.setVisible(false) end end, function() if play then play = false gg.toast("正在停止播放...") for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end gg.toast("播放已停止") else gg.toast("无正在播放的音乐") end end, function() gg.setVisible(false) if play then _G_[4]() end LSP() end } local emo = gg.choice({ "搜索歌曲", "搜索列表", "显示歌词", "暂停播放", },nil,"音乐功能") if not emo then gg.setVisible(false) end if emo then _G_[emo]() end end), changan.button('随机热歌', function() A="https://api.uomg.com/api/rand.music?sort=热歌榜&format=json" Obtain=gg.makeRequest(A).content muchen=Obtain:match('url":"(.-)","picurl') name=Obtain:match('name":"(.-)","') zz=Obtain:match('artistsname":"(.-)"}') gg.toast('正在播放『'..name..'』') gg.playMusic(muchen) gg.alert('歌名:『'..name..'』\n作者:『'..zz..'』') end), changan.button('随机旋律',function() --随机音乐 function sjyy() gg.toast('正在搜索音乐,请耐心等待') awnb = 1 random = math.random(1,250) xlgd = math.random(1,3) if xlgd == 1 then--歌单1 a = gg.makeRequest('http://music.163.com/api/playlist/detail?id=7686573572').content end if xlgd == 2 then--歌单2 a = gg.makeRequest('http://music.163.com/api/playlist/detail?id=2611030296').content end if xlgd == 3 then--歌单3 a = gg.makeRequest('http://music.163.com/api/playlist/detail?id=7144194514').content end c = a:match ('"code":(.-),') if c == '-447' then sjyy() return end for i = 1 , math.huge do for v , k in a:gmatch('{"name":"(.-)","id":(.-),') do awnb = awnb + 1 if awnb == random then if v == '' then sjyy() return end gg.playMusic('stop') mz = gg.makeRequest("http://music.163.com/api/search/get?s="..v.."&type=1&offset=0&total=true&limit=1").content songid = mz:match ('"id":(.-),') gg.toast('正在播放『'..v..'』') gg.playMusic("http://music.163.com/song/media/outer/url?id="..songid..".mp3") gg.alert('正在播放『'..v..'』') os.exit() end end end end sjyy() end), changan.radio({'推荐音乐', {"moonlight", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1402622369.mp3") end}, {"户籍还是道歉", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2036791477.mp3") end}, {"会魔法的老人", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1988564487.mp3") end}, {"予你", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1895330088.mp3") end}, {"ТАМАДА(Remix)", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2010247887.mp3") end}, {"Running Up That Hill", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2047985543.mp3") end}, {"Midnight Love", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1954696352.mp3") end}, {"Castles", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1960985596.mp3") end}, {"New World", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1988163085.mp3") end}, {"Dead Inside", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1890128737.mp3") end}, {"海誓山盟", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=34586275.mp3") end}, {"孤单心事", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1973864157.mp3") end}, {"我走后", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1370047789.mp3") end}, {"可不可以", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=553755659.mp3") end}, {"Close Eyes ", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1861101583.mp3") end}, {"The Best Of Me", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1329938686.mp3") end}, {"Letting Go", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2015047009.mp3") end}, {"爱的最终章", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1947671652.mp3") end}, {"毒药", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2066654616.mp3") end}, {"想念是凋谢的云", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2042403498.mp3") end}, {"Fool For You", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1817576399.mp3") end}, {"若生命等候", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=94809.mp3") end}, {"我知道你", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=41462017.mp3") end}, {"风驶过的声音是", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2041974276.mp3") end}, {"我的美丽", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1979417838.mp3") end}, {"脚踩魔怔b", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2027640152.mp3") end}, {"Differences", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2001314407.mp3") end}, {"my whole life has changed", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1918443223.mp3") end}, {"Apex", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1333144056.mp3") end}, {"Cold Blood", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1989845851.mp3") end}, {"悬溺", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1397345903.mp3") end}, {"我落泪情绪零碎", function() gg.playMusic("http://vip.kyun.top/view.php/0e96b9b99063bba78fcd1cbbf41c753b.mp3") end}, {"蒲公英的约定", function() gg.playMusic("http://vip.kyun.top/view.php/d8d17d8e695cc20d184caef5afc65602.mp3") end}, {"说好的幸福呢", function() gg.playMusic("http://vip.kyun.top/view.php/19af5941cb552443dde833b665074dfa.mp3") end}, {"我撕裂我的身体", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2021173064.mp3") end}, {"Opr(Low Speed)", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1902653318.mp3") end}, {"Criminals", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1450889933.mp3") end}, {"Morsmordre", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=144186007.mp3") end}, {"BG", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1399891888.mp3") end}, {"Shootout", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1964529701.mp3") end}, {"Shootout (Sped Up)", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1960740829.mp3") end}, {"不经痛苦何来荣耀", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2042022213.mp3") end}, {"印度国歌", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2024109979.mp3") end}, {"我选择的路", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2042022862.mp3") end}, {"spirited away", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=478731317.mp3") end}, {"i walk this earth all by myself", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1808235517.mp3") end}, {"Rain", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1963654951.mp3") end}, {"哪里都是你", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=488249475.mp3") end}, {"School Rooftop", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=478049185.mp3") end}, {"Maybe", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1393412185.mp3") end}, {"monday", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=494862146.mp3") end}, {"flower.", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1441250313.mp3") end}, {"瞬", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2063864551.mp3") end}, {"Ein kleines Lied",-- function() gg.playMusic("http://music.163.com/song/media/outer/url?id=17075871.mp3") end}, {"花海", function() gg.playMusic("http://vip.kyun.top/view.php/85853c770c37112d3ed3d99d884374bd.mp3") end}, {"武家坡2021", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2066628581.mp3") end}, {"你听得到", function() gg.playMusic("http://www.1314love520.top/view.php/6ea0867eddadeab1876b38977301190e.mp3") end}, {"不问ciaga", function() gg.playMusic("http://www.1314love520.top/view.php/65fd64592982cb202d68ad1d8d23f0fd.mp3") end}, {"戒烟", function() gg.playMusic("http://www.1314love520.top/down.php/a5c16d5dc6d8f03485ef39796074d00b.mp3") end}, {"Sea Of Problems", function() gg.playMusic("http://www.1314love520.top/view.php/f129eebe4f9a0cc657a05aff13a6decd.mp3") end}, {"心做し", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=478303470.mp3") end}, {"POOR", function() gg.playMusic("http://www.1314love520.top/view.php/2b04f03f83e14b85eaf10369fcea9df6.mp3") end}, {"面具", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2054613130.mp3") end}, {"夏夜最后的烟火", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1482867143.mp3") end}, {"METAMORPHOSIS", function() gg.playMusic("http://www.1314love520.top/view.php/c26f2b940f4ffe26d0469b4732391db9.mp3") end}, {"晴", function() gg.playMusic("http://www.1314love520.top/view.php/a7dbbaad36b3984b357052f3e31c9325.mp3") end}, {"SHADOW", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1967493421.mp3") end}, {"与我无关", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1413585838.mp3") end}, {"Mars", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1855856092.mp3") end}, {"Baby, Don't Cry ", function() gg.playMusic("http://www.1314love520.top/view.php/2dd6d39cb5b8ce5a2383bdc75a7263dc.mp3") end}, {'我想念', function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2071935674.mp3") end}, {'诛心', function() gg.playMusic('https://vip.kyun.top/view.php/a85a8f40dd76e964ad85dbd4e08c66aa.mp3') end}, }), }), },{---第五页 changan.switch( "音量键隐藏UI", function() 音量键=true end, function() 音量键=false end ), changan.switch( "摇一摇隐藏UI", function() 摇一摇=true end, function() 摇一摇=false end ), changan.text("风雪压我两三年,我心早已无怨言",'0xff161616',"#ff0000","18sp",true),--第三个是扫光颜色 changan.button( "退出", function() tuichu=1 end), }, })