string.toMusic('欢迎老板使用YL全防') gg.toast("欢迎使用YL全防") string.toMusic('欢迎使用YL全防') gg.alert("已更新最新爱丁堡2.0版本") gg.alert("只支持九游渠道的地铁跑酷,在浏览器搜索九游下载,然后在九游里面搜索地铁跑酷下载") gg.alert("群公告有使用教程") function SOGSPY_ST(HDZ,DTL) if HDZ >= DTL then py = string.format("0x%X", HDZ - DTL) return tostring(string.format("-0x%X", py)) else py = string.format("0x%X", DTL - HDZ) return tostring(string.format("0x%X", py)) end end function SO_PT(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=TYPE, value=VALUE}}) 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 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 end 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 function TL_TL(a,b,c,d,e) local time = os.clock() kv = {} 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 gg.addListItems(kv) gg.toast(e.."开启成功\n共耗时"..os.clock() - time.."秒\n共修改"..#b.."条值") 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 t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end 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 function TL_TL(a,b,c,d,e) local time = os.clock() kv = {} 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 gg.addListItems(kv) gg.alert("已修改,共修改了"..#b.."数据") 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 t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function SCRIPT() gg.jumpAPP("com.kiloo.subwaysurf") string.toMusic("地铁跑酷启动成功!") end function OP_jizhigongjiu(SONC,NCFW,PYL,TYPE,VALUE,NAME,DJ) local Somod=gg.getRangesList(SONC)[1] if Somod==nil then gg.alert(NAME..'开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━') else function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end time=os.clock() local DZT = S_Pointer({SONC, NCFW},{0x0}) local PY_offsets = PYL local prompt_displayed = false for _,MR in pairs(PY_offsets) do gg.addListItems({{address = DZT+MR, flags = TYPE, value = VALUE, freeze = DJ}}) end local loop_count = 0 repeat loop_count = loop_count + 1 until loop_count >= 5 if not prompt_displayed then local time_str = string.sub(tostring(os.clock() - time), 1, 5) gg.toast(NAME..'️开启成功\n当前进程名称:'..gg.getTargetInfo().label..'\n当前进程包名:'..gg.getTargetPackage()..'\n总共耗时:'..time_str..'秒') prompt_displayed = true end end end function SOGSPY_ST(HDZ,DTL) if HDZ >= DTL then py=string.format("0x%X",HDZ-DTL) return tostring(string.format("-0x%X",py)) else py=string.format("0x%X",DTL-HDZ) return tostring(string.format("0x%X",py)) end end So_32 = function ( Ad , Value , IF ) if gg.getRangesList ( 'libil2cpp.so' ) [ 1 ] == nil then gg.alert("请重新选择进程") else gg.clearResults ( ) local Ret = "~A8 RET" local So = gg.getRangesList ( 'libil2cpp.so' ) for key , value in pairs ( So ) do if value.state ~= "Xa" then return else local Soad = value.start local Add = Soad + Ad gg.processPause ( ) gg.setValues ( { { address = Add , flags = 4 , value = Value } } ) gg.processResume ( ) if IF == true then gg.setValues ( { { address = Add + 4 , flags = 4 , value = Ret } } ) gg.processResume ( ) elseif IF == nil then gg.processPause ( ) gg.setValues ( { { address = Add + 4 , flags = 4 , value =Ret } } ) gg.processResume ( ) elseif IF == false then break end end end end 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 gg.SetSo = function ( Address , Value ) local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 2 ] if Somod == nil then gg.alert ( '请重新选择地铁跑酷进程' ) else local So = Somod.start local Add = So + Address gg.processPause ( ) gg.setValues ( { { address = Add , flags = 4 , value = Value } } ) gg.setValues ( { { address = Add + 4 , flags = 4 , value = "~A BX LR" } } ) gg.processResume ( ) end end function SO_FLPTXG(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[2]==nil then gg.alert("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else local SOMOD1=gg.getRangesList("libil2cpp.so")[2].start gg.setValues({{address=SOMOD1+FUNCTIONADD,flags=TYPE,value='~A8 MOV W0, #'..VALUE}}) gg.setValues({{address=SOMOD1+FUNCTIONADD+4,flags=TYPE,value="0000271Er"}}) gg.setValues({{address=SOMOD1+FUNCTIONADD+8,flags=TYPE,value="00D8215Er"}}) gg.setValues({{address=SOMOD1+FUNCTIONADD+12,flags=TYPE,value="0000261Er"}}) gg.setValues({{address=SOMOD1+FUNCTIONADD+16,flags=TYPE,value="~A8 RET"}}) 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 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 xg1(value,lx,py,dj) if sj~=nil and #sj>0 then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx if value == nil then value = readValue(z[i].address, lx) end z[i].value= value z[i].freeze = dj and true or false end if dj == true or dj == false then gg.addListItems(z) else gg.setValues(z) end gg.toast('') else gg.toast('') end end function xg2(bz,value,lx,py,dj) if #bz~=nil then z={} for i=1,#bz do z[i]={} z[i].address=bz[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('') else gg.toast('') end end function bc(bz) if sj~=nil then _ENV[bz]=sj else gg.toast('') end end Qr_UIP2FazG='Main' gg.clearResults() sj={} xgz={} function search(ss,lx,nc,dz1,dz2) 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,gg.SIGN_EQUAL,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(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 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 xg2(bz,value,lx,py,dj) if #bz~=nil then z={} for i=1,#bz do z[i]={} z[i].address=bz[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 bc(bz) if sj~=nil then _ENV[bz]=sj else gg.toast("无数据") end end function BaAdd(add) if gg.getTargetInfo().x64==true then t=gg.getValues({[1]={address=add,flags=32}}) return t[1].value else t=gg.getValues({[1]={address=add,flags=4}}) return t[1].value&0xFFFFFFFF end end function set(dz,xg,lx,dj) if dj=="true" then gg.addListItems({{address=dz,flags=lx,value=xg,freeze=true}}) else gg.setValues({{address=dz,flags=lx,value=xg}}) end gg.toast("已修改完成~") end DWORD=gg.TYPE_DWORD DOUBLE=gg.TYPE_DOUBLE FLOAT=gg.TYPE_FLOAT WORD=gg.TYPE_WORD BYTE=gg.TYPE_BYTE XOR=gg.TYPE_XOR QWORD=gg.TYPE_QWORD D=gg.TYPE_DWORD E=gg.TYPE_DOUBLE F=gg.TYPE_FLOAT W=gg.TYPE_WORD B=gg.TYPE_BYTE X=gg.TYPE_XOR Q=gg.TYPE_QWORD check_font_color=0xff000000 switch_color=0xff0062FF btn_color=0xffefefef vibra = context:getSystemService(Context.VIBRATOR_SERVICE) changan = {} local changan = changan local android = import('android.*') function write(fileName, content) file.write(fileName, content) end function panduan(rec) local f,err = io.open(rec) if f == nil then return false else f:close() return true end end function pdcf(lujing) rec = "/sdcard/长安/配置文件/"..lujing return panduan(rec) end sleep = gg.sleep function read(fileName) local f = assert(io.open(fileName, 'r')) local content = f:read("*a") f:close() return content end function wtcf(lujing,neirong) write("/sdcard/长安/配置文件/"..lujing,neirong) end function rdcf(lujing) return read("/sdcard/长安/配置文件/"..lujing) end 开 = "开" 关 = "关" function checkimg(tmp) if panduan("/sdcard/长安/图片/"..tmp) ~= true then gg.toast("正在下载资源"..tmp.."\n请耐心等待") download("https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/"..tmp,"/sdcard/长安/图片/"..tmp) end end ckimg = { 'heir','hei_right','heiraoff','heiraon' } for i = 1,#ckimg do checkimg(ckimg[i]) end function 获取图片(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 getVerticalBG(gtvb1,gtvb3,gtvb4,gtvb5) if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end local jianbians = luajava.new(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 context = app.context window = context:getSystemService("window") 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_FOCUSABLE layoutParams.gravity = Gravity.TOP|Gravity.LEFT layoutParams.width = LayoutParams.WRAP_CONTENT layoutParams.height = LayoutParams.WRAP_CONTENT return layoutParams end function getj7() jianbian6 = luajava.new(GradientDrawable) jianbian6:setCornerRadius(20) jianbian6:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian6:setColors({0x002F3032,0x002F3032}) jianbian6:setStroke(3,"0xff0091FE") return jianbian6 end function getCorner(gtvb1,gtvb3,gtvb4,gtvb5,g1,g2,g3,g4) if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end local jianbians = luajava.new(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 slctb = empty slcta = getHorizontalBG({0xff3e92fc,0xff3e92fc},10) slctc = luajava.loadlayout {GradientDrawable,color="#11ffffff",cornerRadius=8} slctd = luajava.loadlayout {GradientDrawable,color="#55ffffff",cornerRadius=8} slcte = luajava.loadlayout {GradientDrawable,color="#11ffffff",cornerRadius=12} slctf = luajava.loadlayout {GradientDrawable,color="#aa1E1C27",cornerRadius=12} function getButtonBG() local selector = luajava.getStateListDrawable() selector:addState({android.R.attr.state_pressed}, getVerticalBG({0xffd7d7d7,0xffd7d7d7},12)) selector:addState({-android.R.attr.state_pressed}, getVerticalBG({0x00ffffff,0x00ffffff},12)) return selector end function getSelector3() selector = luajava.getStateListDrawable() selector:addState({android.R.attr.state_pressed}, luajava.loadlayout {GradientDrawable,color="#b9b9b9",cornerRadius=10}) selector:addState({-android.R.attr.state_pressed}, luajava.loadlayout {GradientDrawable,color="#ffffff",cornerRadius=10}) return selector end function getSelector() selector = luajava.getStateListDrawable() selector:addState({android.R.attr.state_pressed}, slcta) selector:addState({-android.R.attr.state_pressed}, slctb) return selector end hanshu = function(v, event) 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) mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(floatWindow, mainLayoutParams) end end function getSelector2() selector = luajava.getStateListDrawable() selector:addState({android.R.attr.state_pressed}, slctd) selector:addState({-android.R.attr.state_pressed}, slctc) return selector end jianbian = luajava.new(GradientDrawable) jianbian:setCornerRadius(30) jianbian:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian2 = luajava.new(GradientDrawable) jianbian2:setCornerRadius(30) jianbian2:setGradientType(GradientDrawable.LINEAR_GRADIENT) function 获取图片(txt) txt = file.checkUrl(txt) return luajava.getBitmapDrawable(txt) end local isswitch YoYoImpl = luajava.getYoYoImpl() changan.menu = function(sview) if isswitch then return false end isswitch = true cebian = {LinearLayout,layout_height="match_parent",layout_width="wrap_content",orientation="horizontal",gravity="center",orientation='vertical'} jmbg={} for i = 1,#stab do jmbg[i]=getSelector() cebian[#cebian+1] = {LinearLayout,id="jm"..i,gravity="center_vertical",layout_height="wrap_content",layout_width="80dp",layout_marginRight="3dp",layout_marginLeft="3dp",elevation='2dp',onClick=function() 切换(i) end,background=jmbg[i], {ImageView,padding='2dp',src=获取图片(stab[i][2]),layout_height='20dp',layout_width='20dp',layout_marginLeft='1dp'}, {TextView,text=stab[i][1],id="jmt"..i,layout_marginLeft='2dp',gravity="center_vertical",paddingLeft='3dp',textSize="11sp",textColor="#4d4d4d",layout_height="20dp",layout_width="wrap_content"}} end cebian = luajava.loadlayout({LinearLayout,orientation='vertical',layout_height='match_parent',background=getCorner({0xffe9e9e9,0xffe9e9e9},0,0,0x00ffffff,18,0,0,18), {LinearLayout,padding={"2dp","2dp","8dp","2dp"},layout_marginLeft='9dp',layout_marginRight='2dp',layout_marginTop='2dp',layout_marginBottom='2dp',layout_width="40dp",layout_height="24dp",gravity="center",onClick=隐藏,onTouch=hanshu, {LinearLayout,layout_width='6dp',layout_height='6dp',background=getVerticalBG({0xffff5f57,0xffff5f57},360),layout_marginLeft='2dp',layout_marginRight='2dp'}, {LinearLayout,layout_width='6dp',layout_height='6dp',background=getVerticalBG({0xfffebc2d,0xfffebc2d},360),layout_marginLeft='2dp',layout_marginRight='2dp'}, {LinearLayout,layout_width='6dp',layout_height='6dp',background=getVerticalBG({0xff29c840,0xff29c840},360),layout_marginLeft='2dp',layout_marginRight='2dp'}}}, {ScrollView,layout_height="wrap_content",layout_width="wrap_content",cebian}}) for i = 1,#stab do _ENV["layout"..i] = luajava.loadlayout({LinearLayout,layout_width="250dp",layout_height="200dp",visibility="gone",orientation="vertical", {ScrollView,fillViewport="true",gravity="center",layout_width="250dp",layout_height="200dp",orientation="horizontal", {LinearLayout,id="layoutm"..i,layout_marginRight="5dp",layout_marginLeft="5dp",layout_width="240dp",orientation="vertical",gravity="center_horizontal"}}}}) end ckou={LinearLayout,orientation='vertical',layout_width="wrap_content",layout_height="wrap_content", {LinearLayout,layout_height='30dp',layout_width='match_parent',gravity='center_vertical',onClick=function() end,onTouch=hanshu, {ImageView,src=getRes('heir'),colorFilter=0xff727272,layout_height='20dp',padding='2dp',layout_width='20dp',rotation=180,layout_marginLeft='10dp',onClick=上一页,onTouch=hanshu,id='lastp'}, {ImageView,src=getRes('heir'),colorFilter=0xff727272,layout_height='20dp',padding='2dp',layout_width='20dp',layout_marginLeft='3dp',onClick=下一页,onTouch=hanshu,id='nextp'}, {TextView,id='titlev',text=stab[1][1],textColor='#000000',textSize='13sp',layout_marginLeft='5dp',layout_height='30dp',gravity='center_vertical',onClick=function() end,onTouch=hanshu}}} for i = 1,#stab do ckou[#ckou+1] = _ENV["layout"..i] end ckou = {LinearLayout,layout_width="wrap_content",layout_height="wrap_content",cebian, {LinearLayout,layout_marginBottom="1dp",layout_marginTop="1dp",layout_width="1dp",layout_height="match_parent",background="#D7D7D7"},ckou} ckou = luajava.loadlayout(ckou) floatWindow = {FrameLayout,id="motion",elevation="10dp",onTouch=hanshu,onClick=function() end,layout_width="wrap_content",orientation="vertical",gravity="center_vertical",layout_height="wrap_content", {LinearLayout,orientation='vertical',id='chuangk',visibility='gone',ckou}, {ImageView,id="control",background=获取图片(xfcpic),layout_width="40dp",layout_height="40dp",onTouch=hanshu,onClick=隐藏}} local function invoke() local ok local RawX, RawY, x, y mainLayoutParams = getLayoutParams() floatWindow = luajava.loadlayout(floatWindow) local function invoke2() for k = 1,#stab do for i = 1,#sview[k] do _ENV["layoutm"..k]:addView(sview[k][i]) end end window:addView(floatWindow, mainLayoutParams) block('end') end 切换(1) local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) block('join') local isMove end invoke(swib1,swib2) gg.setVisible(false) luajava.setFloatingWindowHide(true) qhkai = 0 qiehuan = function() if qhkai == 0 then qhkai = 1 draw.remove() gg.toast('UI已隐藏') luajava.runUiThread(function() changan.controlSmall(floatWindow,400) end) gg.sleep(400) luajava.runUiThread(function() floatWindow:setVisibility(View.GONE) end) else qhkai = 0 huiz() luajava.runUiThread(function() floatWindow:setVisibility(View.VISIBLE) end) luajava.runUiThread(function() changan.controlBig(floatWindow,400) end) end end huiz() while true do if tuichu == 1 then break end jianting3(qiehuan) gg.sleep(300) end luajava.setFloatingWindowHide(false) end changan.controlRotation9 = function(control, time,t) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", {time,t}) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.RESTART) xuanzhuandonghua:setDuration(400) xuanzhuandonghua:start() end) end function visi (tid , ttid) vibra:vibrate(4) local tview = luajava.getIdValue (tid) local ttview = luajava.getIdValue (ttid) if not tview then return 0 end if tonumber (tostring (tview : getVisibility ())) == 8.0 then tview : setVisibility (View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(boxes[tid]) changan.controlRotation9(boxpic[tid],0,90) else tview : setVisibility (View.GONE) changan.controlWater (_ENV [tid.."6"] , 200) changan.controlRotation9(boxpic[tid],90,0) end end boxes = {} boxpic = {} function changan.box (views) local tid = "box"..guid () boxpic[tid] = luajava.loadlayout {ImageView ,background=getRes("hei_right"),layout_width="24dp",layout_height="24dp"} local ttid = tid.."6" local t1id = guid () firadio = {LinearLayout ,layout_width='fill_parent',layout_height="wrap_content",layout_marginTop="2dp",layout_marginBottom="2dp",orientation="vertical"} if type (views [1]) == "string" or type (views [1]) == "number" then firadio [# firadio + 1] = {LinearLayout ,layout_width='fill_parent',layout_height="wrap_content",gravity="center_vertical",layout_marginTop="2dp",layout_marginLeft='2dp',layout_marginRight='2dp',layout_marginBottom="2dp",onClick=function () visi (tid , ttid) end,background=getButtonBG(), {TextView , text=views [1] ,textSize="12sp",layout_marginLeft="5dp",layout_width="match_parent",layout_weight=1,textColor="#000000",gravity="left"}, {LinearLayout ,padding={"0dp","0dp","10dp","0dp"},layout_width="24dp",layout_height="24dp",gravity="center",boxpic[tid]}} else gg.alert ("changan.box的table内第一个元素必须是string") os.exit () end radios = {LinearLayout ,layout_marginLeft="0dp",layout_marginRight="0dp",orientation="vertical",visibility="gone",id=luajava.newId (tid),padding="0dp",layout_width='fill_parent'} for i = 2 , # views do radios [# radios + 1] = views [i] end boxes[tid] = luajava.loadlayout(radios) firadio [# firadio + 1] = boxes[tid] _ENV [t1id] = luajava.loadlayout (firadio) return _ENV [t1id] end corbk = true 当前ui = 1 function 上一页() if 当前ui==1 then return 0 end 切换(当前ui-1) end function 下一页() if 当前ui==#stab then return 0 end 切换(当前ui+1) end function 切换(x) 当前ui = x luajava.runUiThread(function() if 当前ui==1 then lastp:setColorFilter(0xffb6b6b6) nextp:setColorFilter(0xff6b6b6b) elseif 当前ui==#stab then nextp:setColorFilter(0xffb6b6b6) lastp:setColorFilter(0xff6b6b6b) else lastp:setColorFilter(0xff6b6b6b) nextp:setColorFilter(0xff6b6b6b) end titlev:setText(stab[x][1]) for i = 1,#stab do _ENV["jmt"..i]:setTextColor(0xff4d4d4d) _ENV['jm'..i]:setBackground(jmbg[i]) _ENV["layout"..i]:setVisibility(View.GONE) end _ENV['jm'..当前ui]:setBackground(slcta) _ENV["jmt"..当前ui]:setTextColor(0xffffffff) _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(400):playOn(_ENV["layout"..当前ui]) end) end 显示 = 0 beij2 = luajava.loadlayout({GradientDrawable,color="#001E1C27",cornerRadius=10}) beij=getHorizontalBG({0xfff6f6f6,0xfff6f6f6},12) 显示 = 0 function 隐藏() luajava.runUiThread(function() if tonumber(tostring(chuangk:getVisibility())) == 8.0 then control:setVisibility(View.GONE) 显示 = 1 chuangk:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(floatWindow) floatWindow:setBackground(beij) else luajava.startThread(function() luajava.runUiThread(function() YoYoImpl:with("FadeOut"):duration(400):playOn(floatWindow) end) gg.sleep(400) luajava.runUiThread(function() chuangk:setVisibility(View.GONE) floatWindow:setBackground(beij2) control:setVisibility(View.VISIBLE) 显示 = 0 YoYoImpl:with("FadeIn"):duration(400):playOn(floatWindow) end) end) end) 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 } 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 function jianting2() yinln = {} for i = 1,#audiotype do yinln[i] = {} yinln[i].type = audiotype[i] yinln[i].min = audi:getStreamMinVolume(audiotype[i]) yinln[i].max = audi:getStreamMaxVolume(audiotype[i]) yinln[i].now = audi:getStreamVolume(audiotype[i]) if yinln[i].now > yinl[i].now then audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_LOWER,0) gg.alert("up") elseif yinln[i].now < yinl[i].now then audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_RAISE,0) gg.alert("down\n"..yinln[i].now.."\n"..yinl[i].now) end end local SO = {} SO['新手'] = 0x22b0060 SO['封号'] = 0x29c2b14 SO['行为1'] = 0x3469468 SO['行为2'] = 0x3469500 SO['行为3'] = 0x34692a0 SO['行为4'] = 0x3462698 SO['行为5'] = 0x3469170 SO['行为6'] = 0x3469170 SO['行为7'] = 0x2fe5bb0 SO['行为8'] = 0x27b6034 SO['行为9'] = 0x22f0a4c SO['行为10'] = 0x22f0960 SO['行为11'] = 0x345bd7c SO['行为12'] = 0x2d22c0c SO['行为13'] = 0x22f0824 SO['行为14'] = 0x22f02f4 SO['行为15'] = 0x2fe53c0 SO['行为16'] = 0x2fe58ac SO['行为17'] = 0x2fe5af4 SO['行为18'] = 0x2848b94 SO['行为19'] = 0x235c854 SO['行为20'] = 0x2fed13c SO['行为21'] = 0x2feefdc SO['行为22'] = 0x23842fc SO['行为23'] = 0x2ff0d54 SO['行为24'] = 0x2ff7848 SO['行为25'] = 0x2ff78ec SO['行为26'] = 0x20111bc SO['行为27'] = 0x34612a4 SO['行为28'] = 0x3469208 SO['行为29'] = 0x3469338 SO['行为30'] = 0x34693d0 SO['行为31'] = 0x2ff74f0 SO['行为32'] = 0x2ff7594 SO['行为33'] = 0x2ff7638 SO['行为34'] = 0x2ff76d4 SO['行为35'] = 0x2ff78ec SO['行为36'] = 0x2ff74f0 SO['行为37'] = 0x27b7cb8 SO['行为38'] = 0x36f47a4 SO['行为39'] = 0x2fe5698 SO['行为40'] = 0x3461340 SO['行为41'] = 0x2fee2b0 SO['行为42'] = 0x2ff1c64 SO['行为43'] = 0x2ff7778 SO['行为44'] = 0x1a6a914 SO['行为45'] = 0x1a6a908 SO['GG爆2'] = 0x42dea50 SO['GG爆1'] = 0x2feed38 SO['货币检测'] = 0x2404944 SO['速度检测1'] = 0x29d8344 SO['速度检测2'] = 0x29d83c8 SO['防举报1'] = 0x36f484c SO['防举报2'] = 0x36f4704 SO['防举报3'] = 0x31f7838 SO['防举报4'] = 0x29f11a0 SO['人物'] = 0x22a8c18 SO['滑板'] = 0x22aa9c8 SO['背饰'] = 0x22cdf94 SO['背饰保存'] = 0x22ce078 SO['像框'] = 0x293b7d8 SO['相框1'] = 0x33978e0 SO['装扮'] = 0x229d344 SO['技能'] = 0x2311784 SO['技能勾选'] = 0x231c1dc SO['名称'] = 0x2912764 SO['获取十倍'] = 0x3461bb4 SO['解锁十倍'] = 0x2a41b7c SO['内购'] = 0x27ebef8 SO['内购成功'] = 0x27f926c SO['领奖'] = 0x2302658 SO['十抽'] = 0x28fe824 SO['单抽'] = 0x2905acc SO['宝物备份'] = 0x2905274 SO['奖励替换'] = 0x2933234 SO['人物奖励'] = 0x293b37c SO['滑板奖励'] = 0x293b53c SO['背饰奖励'] = 0x293b6fc SO['像框奖励'] = 0x293b7d8 SO['赛事'] = 0x23a2fec SO['备份1'] = 0x34587a0 SO['备份2'] = 0x22dabe8 SO['备份3'] = 0x34587a0 SO['备份4'] = 0x3872b14 SO['双倍'] = 0x2283d14 SO['微博'] = 0x2ef6d40 SO['金币'] = 0x2296778 SO['钥匙'] = 0x2296a90 SO['紫币'] = 0x2304460 SO['宝物钥匙'] = 0x2304460 SO['开发者'] = 0x345d990 SO['抓娃娃'] = 0x34622d8 SO['重生'] = 0x25bca30 SO['邮箱'] = 0x2493a54 SO['炫跑卡'] = 0x22cfa0c SO['历史分数1'] = 0x2296fe4 SO['历史分数2'] = 0x22971fc SO['历史排名'] = 0x22c651c SO['等级'] = 0x229a0d8 SO['全服'] = 0x23b66a4 SO['省标'] = 0x23b673c SO['地区'] = 0x23b67d4 SO['断网1'] = 0x201aebc SO['断网2'] = 0x201aebc SO['隐藏1'] = 0x2cafc74 SO['隐藏2'] = 0x345bd7c SO['隐藏3'] = 0x2cb0bb4 SO['隐藏4'] = 0x22c22f8 SO['隐藏5'] = 0x36f0a94 SO['防止卡屏1'] = 0x2848a70 SO['防止卡屏2'] = 0x2848948 SO['受到攻击'] = 0x35d373c SO['攻击拾取'] = 0x35ce1a8 SO['局内金币'] = 0x2892118 SO['获取能量1'] = 0x35cd6e8 SO['获取能量2'] = 0x35c9080 SO['获取能量3'] = 0x35cd5d0 SO['跳跃'] = 0x2899974 SO['下滑'] = 0x2899f70 SO['下滑1'] = 0x2899b64 SO['下滑左'] = 0x2899c40 SO['下滑中'] = 0x2899cc8 SO['下滑右'] = 0x2899d50 SO['滑板跳高'] = 0x32e3654 SO['滑板滑翔'] = 0x32e3a40 SO['滑板瞬移'] = 0x32e3ba8 SO['人物瞬移'] = 0x31faeac SO['无尽装死'] = 0x2333074 SO['无限跳跃'] = 0x31f1778 SO['金币消失'] = 0x30e3ca0 SO['无尽死亡'] = 0x233a27c SO['道具图标1'] = 0x35ce608 SO['道具图标2'] = 0x35cc5b4 SO['道具图标3'] = 0x35cc654 SO['修改道具'] = 0x35cdeb0 SO['战绩消失'] = 0x2846c20 SO['购买界面'] = 0x2410404 SO['反弹道具1'] = 0x363b4d0 SO['反弹道具2'] = 0x363b5bc SO['释放能量'] = 0x35cd874 SO['释放'] = 0x35cd9a4 SO['无视减速带'] = 0x362aeb8 SO['无视道具1'] = 0x363c878 SO['无视道具2'] = 0x363ce24 SO['无视香蕉'] = 0x35d17f4 SO['无视香蕉'] = 0x35d17f4 SO['无视障碍'] = 0x2520f84 SO['无视侧撞'] = 0x2521b8c SO['开局道具'] = 0x2295f38 SO['能量穿透'] = 0x35c89d4 SO['忙碌状态'] = 0x35ccb68 SO['无限能量'] = 0x35cc430 SO['恶魔状态'] = 0x2e115b4 SO['磁铁状态'] = 0x2e11b7c SO['乌龟状态'] = 0x2e116dc SO['Buff模式'] = 0x35d2af0 SO['派对聚能'] = 0x29f9620 SO['得到分数'] = 0x289624c SO['分数赛'] = 0x259b4c4 SO['结束游戏'] = 0x2848948 SO['锁定人机'] = 0x284b3c8 SO['派对新手'] = 0x345edd8 SO['派对省份'] = 0x2c8580c SO['派对省排'] = 0x2c85778 SO['派对全服'] = 0x2c856e4 SO['滑板消失'] = 0x25248b8 SO['三倍金币'] = 0x2e2f6d8 SO['得分倍增'] = 0x229b440 SO['宝物等级'] = 0x28ff460 SO['段位'] = 0x2e17e6c SO['历史段位'] = 0x22c6c3c SO['星数'] = 0x23bbcb0 SO['道具满级'] = 0x31b98c4 SO['道具等级'] = 0x31b9730 SO['退出登录'] = 0x3465b98 SO['超级跑者'] = 0x2300230 SO['使用技能'] = 0x29607c0 SO['观战对手'] = 0x31ecd78 SO['替换人物'] = 0x295f18c SO['替换滑板'] = 0x295fe18 SO['替换背饰'] = 0x29611e4 SO['替换装扮'] = 0