do if type(getrlyunyz) ~= 'function' then gg.alert('请使用RLGG执行') os.exit() return end local info = { example_version = '1.0.3', name = '清沅科技', appid = '69912', appkey = 'hefZ7to7K0Zf02H2', rc4key = '3SQx1H333iphGZHZ', version = '1314.520', mi_type = '3' } local rlyunyz = getrlyunyz(info) local ret = rlyunyz.start() if not ret or not isTable(ret) or ret.sign ~= '02eec5621940e7772ec44faee2092f25' then os.exit() return end end if tonumber(device.width)==nil then dwidth=1340 dheight=2300 else dwidth=device.width dheight=device.height end function getTimeStamp(t) local str = os.date("%m/%d-%H:%M:%S",t) return str end sviews={} for i=1,15 do sviews['第'..i..'页']={} end function particle(co1,co2,cor) local webView = luajava.webView(function(webView) webView:loadData([[
]], 'text/html', 'UTF-8') webView:setBackgroundColor(0x0) end) return webView end parti=particle( "rgba(0,0,0,0.1)", "rgba(0,0,0,1)", "#909090") 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 colorvs={} changan = {} huiz = function() end window = context:getSystemService("window") -- 获取窗口管理器 function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end function checkimg(tmp,ii) if panduan("/sdcard/长安/图片/"..tmp) ~= true then gg.toast("正在下载资源"..ii.."/"..#ckimg.."\n请耐心等待") luajava.download("https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/"..tmp,"/sdcard/长安/图片/"..tmp) else if file.length("/sdcard/长安/图片/"..tmp) <= 1 then gg.toast("正在下载资源"..ii.."/"..#ckimg.."\n请耐心等待") luajava.download("https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/"..tmp,"/sdcard/长安/图片/"..tmp) end end if panduan("/sdcard/长安/图片/"..tmp) ~= true then gg.toast("正在下载资源"..ii.."/"..#ckimg.."\n请耐心等待") luajava.download("https://rl-1303126286.cos.ap-beijing-fsi.myqcloud.com/"..tmp,"/sdcard/长安/图片/"..tmp) else if file.length("/sdcard/长安/图片/"..tmp) <= 1 then gg.toast("正在下载资源"..ii.."/"..#ckimg.."\n请耐心等待") luajava.download("https://rl-1303126286.cos.ap-beijing-fsi.myqcloud.com/"..tmp,"/sdcard/长安/图片/"..tmp) end end end ckimg = { "heir", "hei_right", "heir", "heic", 'heis','heisuo', 'quarkcheckoff','quarkcheckon', 'sscoR','Shimmer2.dex' } for i = 1,#ckimg do jindu = i checkimg(ckimg[i],i) gg.toast("正在开启") end shimmer=dex.loadfile('/sdcard/长安/图片/Shimmer2.dex') import "com.romainpiel.shimmer.Shimmer" import "com.romainpiel.shimmer.ShimmerTextView" 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 isLocked=false inlock=getRes("heisuo") uiunlock=getRes("heis") function uiLock() vibra:vibrate(15) if isLocked==false then isLocked=true luajava.newThread(function() gg.toast("UI缩放已锁定") end):start() lockui:setImageDrawable(inlock) else isLocked=false luajava.newThread(function() gg.toast("UI缩放已解锁") end):start() lockui:setImageDrawable(uiunlock) end end YoYoImpl = luajava.getYoYoImpl() vibra = context:getSystemService(Context.VIBRATOR_SERVICE) function getLayoutParams2() LayoutParams2 = WindowManager.LayoutParams layoutParams2 = luajava.new(LayoutParams2) if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams2.type = LayoutParams2.TYPE_APPLICATION_OVERLAY else layoutParams2.type = LayoutParams2.TYPE_PHONE end layoutParams2.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams2.flags = LayoutParams2.FLAG_NOT_TOUCH_MODAL -- 焦点设置Finish layoutParams2.gravity = Gravity.CENTER -- 重力设置 layoutParams2.width = LayoutParams2.MATCH_PARENT -- 布局宽度 layoutParams2.height = LayoutParams2.MATCH_PARENT -- 布局高度 return layoutParams2 end function changan.line() return luajava.loadlayout ( { LinearLayout , layout_width = 'fill_parent' , layout_height = "3dp" , background = pe0, }) end function getShape8() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0xff000000,0xddffffff, }) jianbians:setOrientation(GradientDrawable.Orientation.BL_TR) return jianbians end searchlist={} pe0 = getShape8() 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 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) if mainLayoutParams.x<=0 then mainLayoutParams.x=0 end mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(floatWindow, mainLayoutParams) elseif Action == MotionEvent.ACTION_UP then mainLayoutParams.x = tonumber(x) + (event:getRawX() - RawX) mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(floatWindow, mainLayoutParams) end 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:setCornerRadius(gtvb3) 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 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 mainLayoutParams = getLayoutParams() 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 changan.controlWater = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" 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() import "android.animation.ObjectAnimator" 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.controlBig = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" 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 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 local ui = require('ui') suofang = function(v, event) if isLocked then hanshu(v,event) return 0 end local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() hx = mainLayoutParams.height hy = mainLayoutParams.width if hx == 0 or hx==-2 then hx = 810 hy = 1150 end elseif Action == MotionEvent.ACTION_MOVE then isMove = true mubx = tonumber(hx) + (event:getRawY() - RawY) if mubx >= 250 and mubx <= 11100 then mainLayoutParams.height = mubx end muby = tonumber(hy) + (event:getRawX() - RawX) if muby >= 250 and muby <= 24500 then mainLayoutParams.width = muby end if muby<=250 and mubx<=250 then muby=250 mubx=250 --隐藏() return 0 end window:updateViewLayout(floatWindow, mainLayoutParams) end end changan.menu = function(sviews) if isswitch then return false end isswitch = true local layout = { 'ui.ViewPager', layout_height ="match_parent", layout_width='match_parent', focusable="false", focusableInTouchMode="false", } cebian={ LinearLayout, layout_height="50dp", layout_width="wrap_content", orientation="horizontal", gravity="center_horizontal", } slcta={} slctb={} for i=1,#stab do slcta[i]=getVerticalBG({0xff161616,0xff161616},15) slctb[i]=getVerticalBG({0xffffffff,0xffffffff},15) _ENV["jm"..i]=luajava.loadlayout({ LinearLayout, layout_height="50dp", layout_width="58.4dp", gravity="center", orientation="vertical", onClick=function() 切换(i) end, {TextView, id="jm"..i.."t", text=stab[i], textSize="11sp", textColor="#161616", background=slctb[i], padding={"10dp","6dp","10dp","6dp"}, } }) cebian[#cebian+1]=_ENV["jm"..i] tmp1={ LinearLayout, layout_height="wrap_content", layout_width="match_parent", orientation="vertical", } tmp2={ LinearLayout, layout_height="wrap_content", layout_width="match_parent", orientation="vertical", } for h=1,#sviews[i] do local t=sviews[i][h] if type(t)=='userdata' then tmp1[#tmp1 +1]=t else tmp1[#tmp1+1]=t.view end end tmp1={ LinearLayout, layout_height="match_parent", layout_width="match_parent", layout_weight=1, orientation="vertical", {ScrollView, layout_height='match_parent', layout_width='match_parent', tmp1 } } _ENV["layout"..i]={ LinearLayout, --orientation="vertical", layout_height="match_parent", layout_width="match_parent", orientation='horizontal', {LinearLayout, layout_height="match_parent", layout_width="match_parent", layout_weight=1, padding={'8dp','10dp','8dp','10dp'}, background=getCorner({0x00ffffff,0x00ffffff},20,0,0xaa161616,20,0,0,20), tmp1}, --onTouch=Gundong, padding={"8dp","3dp","8dp","3dp"}, } layout[#layout + 1] =_ENV["layout"..i] end 当前ui=1 jm1t:setTextColor(0xffffffff) jm1t:setBackground(slcta[1]) ViewPager = ui.ViewPager(layout) luajava.setInterface(ViewPager, 'addOnPageChangeListener', {onPageSelected=function(view) view=tonumber(string.sub(view,1,1)) for i=1,#stab do _ENV["jm"..i .."t"]:setTextColor(0xff161616) _ENV["jm"..i .."t"]:setBackground(slctb[i]) end 当前ui=view+1 --滚(当前ui) _ENV["jm"..view+1 .."t"]:setTextColor(0xffffffff) _ENV["jm"..view+1 .."t"]:setBackground(slcta[view+1]) end}) _ENV['tosearch']='tosearch' function topSelect() local selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, getVerticalBG({0x22161616,0x22161616},30)) selector:addState({ -android.R.attr.state_pressed }, empty) return selector end topbar=luajava.loadlayout({ LinearLayout, layout_width="fill_parent", layout_height="35dp", background=getCorner({0xffffffff,0xffffffff},15,0,0xff232323,20,20,0,0), onClick=function() end, onTouch=hanshu, {LinearLayout, layout_width="35dp", layout_height="match_parent", gravity="center", { ImageView, padding = "5dp", id="lockui", src = getRes("heis"), background=getVerticalBG({0xffE6E6E6,0xffE6E6E6},90), layout_width = "20dp", layout_height = "20dp", layout_marginRight = "5dp", onClick = uiLock, onTouch = hanshu, } }, {LinearLayout, layout_width="wrap_content", layout_height="match_parent", gravity="center", { LinearLayout, id='cvv', layout_width='70dp', layout_height='match_parent', gravity="center", } }, {LinearLayout, layout_width="fill_parent", layout_marginLeft='-80dp', layout_weight=1, layout_height="match_parent", gravity="center", {LinearLayout, layout_height="match_parent", layout_width="80dp", background=topSelect(), onClick=function() end, gravity="center", onTouch=hanshu, {LinearLayout, layout_height="5dp", layout_width="60dp", id='tops', background=getVerticalBG({颜色表[1][1],颜色表[1][2]},20) } } }, {LinearLayout, layout_width="35dp", layout_height="match_parent", gravity="center", { ImageView, padding = "5dp", src = getRes("heix"), background=getVerticalBG({0xffE6E6E6,0xffE6E6E6},90), layout_width = "20dp", layout_height = "20dp", layout_marginRight = "5dp", onClick = 隐藏, onTouch = hanshu, } } }) stit=luajava.loadlayout({ShimmerTextView, textSize="18sp", gravity='center_horizontal', layout_width='match_parent', shimmerEnable='true', reflectionColor="#FFDD60"; textColor="#151515", text=左上角标题, }) ckou={ FrameLayout, layout_height="match_parent", layout_width="match_parent", orientation="vertical", id='chuangkou', background=getVerticalBG({0xffeeeeee,0xffeeeeee},15,0,0xff01CBFF,25,25,25,25), {LinearLayout, id="canv", layout_height="match_parent", layout_width="match_parent", gravity="bottom", orientation='vertical', {LinearLayout, layout_height='150dp', } }, topbar, {LinearLayout,--top layout_marginTop="40dp", orientation='vertical', {LinearLayout, layout_width='match_parent', layout_height='50dp', padding='4dp', {LinearLayout, layout_height='match_parent', layout_width='match_parent', background=getHorizontalBG({0xffffffff,0xffffffff},10), gravity='center_vertical', {LinearLayout, layout_height="match_parent", layout_width="100dp", orientation="vertical", gravity="center", onClick=隐藏, onTouch=hanshu, {LinearLayout, onClick=function() end, onTouch=hanshu, layout_height="fill_parent", layout_width="fill_parent", gravity="center", stit } }, {HorizontalScrollView, layout_height='match_parent', layout_width='match_parent', layout_weight=1, padding='4dp', {LinearLayout, layout_height='match_parent', layout_width='match_parent', background=getVerticalBG({0x44ffffff,0x44ffffff},10), padding='3dp', tiaose() }, }, } }, {LinearLayout,layout_height='match_parent',layout_width='match_parent',layout_weight=1,ViewPager,}, {HorizontalScrollView, layout_width='match_parent', layout_height='wrap_content', background=getCorner({0x11232323,0x11232323},10,0,0xff0097FF,0,0,20,20), {LinearLayout, layout_width='wrap_content', layout_height='wrap_content', padding={'0dp','0dp','20dp','0dp'}, cebian}}}, } ckou = { LinearLayout, id = "chuangk", layout_width = "match_parent", layout_height = "match_parent", orientation = "vertical", 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", ckou, { ImageView, id = "control2", background = 获取图片(悬浮窗图标), layout_width = "40dp", layout_height = "40dp", onTouch = hanshu, onClick = 隐藏, },{LinearLayout, id="smallc", visibility="gone", onClick=显示2, onTouch=hanshu, layout_height="56dp", layout_width="20dp", gravity="center", background=getCorner({0x88161616,0x88161616},12,0,0xff232323,0,35,35,0), },{FrameLayout, id='reme', layout_height='match_parent', layout_width='match_parent', elevation='3dp', { ImageView, id="sf", padding = "2dp", src = getRes("sscoR"), layout_width = "30dp", layout_height = "30dp", layout_marginRight = "0dp", layout_marginBottom = "0dp", layout_gravity = "right|bottom", onClick = function() end, onTouch = suofang, }} } local function invoke() local ok local RawX, RawY, x, y mainLayoutParams = getLayoutParams() mainLayoutParams.x = 10 mainLayoutParams.y = dheight/4 param2=getLayoutParams2() floatWindow = luajava.loadlayout(floatWindow) local function invoke2() window:addView(floatWindow, mainLayoutParams) canv:addView(parti) end if loadingBox~=nil then loadingBox['关闭']() end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) local isMove end invoke(swib1,swib2) shimmer = Shimmer(); luajava.runUiThread(function() shimmer:setDuration(2000) shimmer:setStartDelay(50) shimmer:start(stit) end) gg.setVisible(false) 隐藏() setOnExitListener(function() luajava.post(function() window:removeView(floatWindow) end) tuichu=1 luajava.setFloatingWindowHide(false) end) luajava.setFloatingWindowHide(true) qhkai = 0 qiehuan = function() if qhkai == 0 then qhkai = 1 draw.remove() 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 function 滚(x) luajava.runUiThread(function() local cbsc=luajava.getIdView("cbscro") local targetLeft = _ENV["jm"..x]:getLeft()/2 cbsc:smoothScrollTo(targetLeft, 0); end) end function 切换(x) 窗口=false x=x-1 luajava.runUiThread(function() 当前ui=x ViewPager:setCurrentItem(x) end) end 显示=0 function 隐藏() luajava.runUiThread(function() if 显示 == 0 then control2:setVisibility(View.GONE) 显示 = 1 YoYoImpl:with("ZoomIn"):duration(300):playOn(floatWindow) canv:setVisibility(View.VISIBLE) mainLayoutParams.height = mubx mainLayoutParams.width = muby mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL window : updateViewLayout (floatWindow , mainLayoutParams) reme:setVisibility(View.VISIBLE) ckou:setVisibility(View.VISIBLE) else canv:setVisibility(View.GONE) if tuichuing then return 0 end tuichuing=true luajava.newThread(function() luajava.runUiThread(function() YoYoImpl:with("FadeOut"):duration(200):playOn(floatWindow) end) gg.sleep(200) luajava.runUiThread(function() ckou:setVisibility(View.GONE) reme:setVisibility(View.GONE) YoYoImpl:with("FadeIn"):duration(200):playOn(floatWindow) mainLayoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度 mainLayoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度 control2:setVisibility(View.VISIBLE) 显示 = 0 mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE window : updateViewLayout (floatWindow , mainLayoutParams) end) tuichuing=false end):start() end end) end switches = {} function 开关3(name,func1,func2,nid) local sname = nid local localname=name name = name..guid() _ENV[name] = "关" if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then local outfunc=function() namers = _ENV[name] if namers ~= "开" then vibra:vibrate(9) luajava.runUiThread(function() luajava.getIdValue(nid.."k"):setVisibility(View.GONE) YoYoImpl:with("ZoomInLeft"):duration(600):playOn(switches["2s"..sname]) luajava.getIdValue(nid.."g"):setVisibility(View.VISIBLE) luajava.getIdValue(nid):setBackground(checkbg) end) _ENV[name] = "开" colorvs[nid]={true,"switch"} pcall(func1) else vibra:vibrate(9) luajava.runUiThread(function() luajava.getIdValue(nid.."g"):setVisibility(View.GONE) YoYoImpl:with("ZoomInRight"):duration(600):playOn(switches["1s"..sname]) luajava.getIdValue(nid.."k"):setVisibility(View.VISIBLE) luajava.getIdValue(nid):setBackground(checkbga) end) colorvs[nid]={false,"switch"} _ENV[name] = "关" pcall(func2) end end return outfunc end end function getShape(tmp0,tmp1,tmp2,tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(tmp1) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(7,tmp3)--边框宽度和颜色 return jianbians end function getShape2(tmp0,tmp1,tmp2,tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(tmp1) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(26,tmp3)--边框宽度和颜色 return jianbians end function changan.switch(name,func1,func2,miaoshu) if not checkbg then checkbg = getShape2( 45, {控件颜色[1],控件颜色[2]}, 4,控件颜色[1]) checkbga = getShape2( 45, { 0xffaaaaaa,0xffaaaaaa }, 4,0xffaaaaaa) switchbg1 = getShape( 45, { 0xffffffff,0xffffffff }, 4,0xffffffff) switchbg2 = luajava.loadlayout { GradientDrawable , color = "#ffffff" , cornerRadius = 360 } end nid = name..guid() local func = 开关3(name,func1,func2,nid) if not name then name = "未设置" end switches["1s"..nid] = luajava.loadlayout { FrameLayout, layout_width = '40dp', layout_height = '20dp', gravity = "center_vertical", padding = { "1dp","0dp","1dp","0dp" }, { LinearLayout, layout_gravity = "left|center_vertical", id = luajava.newId(nid.."k"), background = switchbg1, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '17dp', layout_height = '17dp', }, } switches["2s"..nid] = luajava.loadlayout { FrameLayout, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '40dp', layout_height = '20dp', gravity = "center_vertical", padding = { "1dp","0dp","1dp","0dp" } , { LinearLayout, visibility = "gone", layout_gravity = "right|center_vertical", id = luajava.newId(nid.."g"), background = switchbg2, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '17dp', layout_height = '17dp', } } rest = luajava.loadlayout({ LinearLayout, elevation = "5dp", layout_width = 'fill_parent', layout_height = "48dp", gravity = "center_vertical", { LinearLayout, layout_width = 'fill_parent', layout_height = "40dp", gravity = "center_vertical", background = luajava.loadlayout { GradientDrawable , color = 0xffffffff , cornerRadius = 30 } ,padding = { "0dp","0dp","6dp","0dp" }, { TextView, gravity = "top", text = name, textColor = "#000000", textSize = "13sp", layout_weight = 1, layout_width = '80dp', layout_marginLeft = "10dp", layout_marginRight = "20dp", }, { TextView, gravity = "center", layout_height = "match_parent", text = miaoshu, textSize = "11sp", layout_width = "wrap_content", layout_marginLeft = "-50dp", layout_weight = 1, textColor = "#A5A5A5", }, { FrameLayout, id=luajava.newId(nid), background = checkbga, elevation = "1dp", onClick = function() luajava.newThread(function() func() end):start() end, layout_width = 'wrap_content', layout_height = 'wrap_content', gravity = "left", padding="1dp", switches["1s"..nid],switches["2s"..nid] }} }) return {view=rest, type='switch', name=name, func1=func1,func2=func2 } end switchs={} tcheck=10 function changan.intcard(name,name2,func1,func2,ii,gid) if tcheck==56 then tcheck=1 else tcheck=tcheck+1 end tocheck=spics[tcheck] local func = 开关6(name,func1,func2,gid..ii) if not name then name = "未设置" end if not name2 then name2="" end switchs[gid..ii] = { LinearLayout, id = luajava.newId(gid..ii), layout_width = 'wrap_content', layout_height = "wrap_content", layout_marginTop="5dp", layout_marginBottom="5dp", layout_marginLeft="3dp", layout_marginRight="3dp", { LinearLayout, padding="3dp", onClick = function() luajava.newThread(function() func() end):start() end, layout_width = ( (tonumber(string.replace(界面宽度,"dp","")) -30)/2).."dp", layout_height = "wrap_content", gravity = "left", background=getVerticalBG({0xaa1a1b1d,0xaa1a1b1d},10), orientation="vertical", padding="5dp", --background=getVerticalBG({0xffFFFDF2,0xddffffff,0xffFFFDF2},15,8,0xffFFDA71), { ImageView, id = luajava.newId(gid..ii.."p"), src = getRes(tocheck), gravity="left", layout_width = '30dp', layout_height = '30dp', padding = "3dp", },{ TextView, id=luajava.newId(gid..ii.."t"), gravity = "left", text = name, textColor="#ffffff", textSize = "12sp", layout_width = 'match_parent', layout_weight=1, },{ TextView, id=luajava.newId(gid..ii.."t2"), gravity = "left", text = name2, textColor="#aaaaaa", textSize = "9sp", layout_width = 'match_parent', layout_weight=1, } } } colorvs[gid..ii.."p"]={false,"img"} colorvs[gid..ii.."t"]={false,"txt"} return {view=switchs[gid..ii], type='card', name=name, func1=func1, func2=func2, } end shous={} function 收起ck(gid,ii) if shous[gid] ==false then shous[gid]=true luajava.getIdView(gid..ii.."p"):setRotation(0) for i=1,ii-1 do if i>=9 then luajava.post(function() luajava.getIdView(gid):removeView(luajava.getIdView(gid..i)) end) end end else shous[gid]=false luajava.post(function() luajava.getIdView(gid):removeView(luajava.getIdView(gid..ii)) for i=1,ii-1 do if i>=9 then luajava.getIdView(gid):addView(luajava.getIdView(gid..i)) end end luajava.getIdView(gid):addView(luajava.getIdView(gid..ii)) end) luajava.getIdView(gid..ii.."p"):setRotation(180) end end function 开关6(name,func1,func2,nid) local sname = nid local localname=name name = name..guid() _ENV[name] = "关" if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then vibra:vibrate(9) luajava.runUiThread(function() luajava.getIdValue(nid.."t"):setTextColor(控件颜色[1]) luajava.getIdValue(nid.."t2"):setTextColor(控件颜色[1]) luajava.getIdValue(nid.."p"):setColorFilter(控件颜色[1]) colorvs[nid.."p"]={true,"img"} colorvs[nid.."t"]={true,"txt"} colorvs[nid.."t2"]={true,"txt"} --changan.controlWater(switchs[nid],100) end) _ENV[name] = "开" pcall(func1) else vibra:vibrate(9) luajava.runUiThread(function() luajava.getIdValue(nid.."t"):setTextColor(0xffffffff) luajava.getIdValue(nid.."p"):setColorFilter(0xffd7d7d7) luajava.getIdValue(nid.."t2"):setTextColor(0xffaaaaaa) colorvs[nid.."p"]={false,"img"} colorvs[nid.."t"]={false,"txt"} colorvs[nid.."t2"]={false,"txt"} --changan.controlWater(switchs[nid],100) end) _ENV[name] = "关" pcall(func2) end end end end function hexTo255(rgbHex) local rgbHex = string.format("%x", rgbHex) local red = tonumber(rgbHex:sub(3, 4), 16) local green = tonumber(rgbHex:sub(5, 6), 16) local blue = tonumber(rgbHex:sub(7, 8), 16) return {red,green,blue} end function changeColor(co) 控件颜色=co luajava.runUiThread(function() luajava.post(function() canv:removeView(parti) end) parti:destroy() parti=nil local t=hexTo255(控件颜色[1]) local a,b,c=t[1],t[2],t[3] parti=particle( "rgba("..a..","..b..","..c..",0.1)", "rgba("..a..","..b..","..c..",1)", "#"..string.sub(string.format("%x", 控件颜色[2]),3,-1)) luajava.post(function() canv:addView(parti) end) tpbbg=getHorizontalBG({控件颜色[1],控件颜色[2]},20) tops:setBackground(tpbbg) --luajava.getIdView("topb1"):setBackground(tpbbg) --luajava.getIdView("topb2"):setBackground(tpbbg) if _ENV["jm"..当前ui.."t"]~=nil then _ENV["jm"..当前ui.."t"]:setTextColor(0xffffffff) for i=1,#stab do slcta[i]=getVerticalBG({控件颜色[1],控件颜色[2]},15) end _ENV["jm"..当前ui.."t"]:setBackground(slcta[当前ui]) --_ENV["jm"..当前ui.."p"]:setColorFilter(控件颜色) end --luajava.getIdView("backv"):setColorFilter(控件颜色[1]) checkbg = getShape2(45,{控件颜色[1],控件颜色[2]},4,控件颜色[1]) radon=getVerticalBG({0xffffffff,0xffffffff},360,20,控件颜色[1]) for k,v in pairs(colorvs) do if v[1]==true then if v[2]=="switch" then luajava.getIdValue(k):setBackground(checkbg) elseif v[2]=="box" then boxpic[k]:setColorFilter(控件颜色[1]) elseif v[2]=="txt" then luajava.getIdValue(k):setTextColor(控件颜色[1]) elseif v[2]=="img" then luajava.getIdValue(k):setColorFilter(控件颜色[1]) elseif v[2]=="rad" then luajava.getIdValue(k):setBackground(radon) elseif v[2]=="seek" then luajava.getIdView(k):setProgressDrawable( getVerticalBG({控件颜色[1],控件颜色[2]},45)) end end if v[2]=="check" then swits[k][1]=getVerticalBG({控件颜色[1],控件颜色[2]},15,4,0xff232323) swits[k][2]=getVerticalBG({控件颜色[1],控件颜色[2]},15,4,0xff232323) if v[1]==true then luajava.getIdValue(k.."g"):setBackground(swits[k][1]) else luajava.getIdValue(k.."k"):setBackground(swits[k][2]) end end end end) end currentIndex = 1 function 预置颜色() local currentItem = 颜色表[currentIndex] changeColor(currentItem) currentIndex = currentIndex + 1 if currentIndex > #颜色表 then currentIndex = 1 end end ckbg=getVerticalBG({0xff3A3A3C,0xff3A3A3C},360) nowbg=1 swits={} checkbg1 = getRes("quarkcheckoff") checkbg2 = getRes("quarkcheckon") switchs={} function changan.intcheck(name,func1,func2) nid = name..guid() local func = 开关5(name,func1,func2,nid) if not name then name = "未设置" end switchs[nid] = { LinearLayout, layout_width = 'match_parent', layout_weight=1, layout_height = "wrap_content", layout_marginTop = "1dp", layout_marginBottom = "1dp", padding = "1dp", { LinearLayout, padding="3dp", onClick = function() luajava.newThread(function() func() end):start() end, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "center_vertical", --background=getVerticalBG({0xffFFFDF2,0xddffffff,0xffFFFDF2},15,8,0xffFFDA71), { FrameLayout, id = luajava.newId(nid), background = checkbg1, layout_width = '32dp', layout_height = '32dp', padding = "0dp", },{ TextView, id=luajava.newId(nid.."t"), gravity = "left", text = name, textColor='#000000', textSize = "14sp", --layout_marginLeft="8dp", layout_width = 'match_parent', layout_weight=1, }, } } return switchs[nid] end function 开关5(name,func1,func2,nid) local sname = nid local localname=name name = name..guid() _ENV[name] = "关" if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then vibra:vibrate(9) luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(checkbg2) luajava.getIdValue(nid.."t"):setTextColor(switch颜色) --changan.controlWater(switchs[nid],300) end) _ENV[name] = "开" pcall(func1) else vibra:vibrate(9) luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(checkbg1) luajava.getIdValue(nid.."t"):setTextColor(0xff232323) --changan.controlWater(switchs[nid],300) end) _ENV[name] = "关" pcall(func2) end end end end function changan.check(cklist) if #cklist==0 then return nil end local rest = { LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "center", orientation="vertical", } for i = 1, #cklist,2 do local tempTable = {LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "left", orientation="horizontal" } for j = 0, 1 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 luajava.loadlayout(rest) 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 界面宽度="349dp" 界面长度="349dp" 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) boxpic[tid]:setColorFilter(控件颜色[1]) colorvs[tid]={true,"box"} else tview : setVisibility (View.GONE) changan.controlWater (_ENV [tid.."6"] , 200) changan.controlRotation9(boxpic[tid],90,0) boxpic[tid]:setColorFilter(nil) colorvs[tid]={false,"box"} end end boxes = {} boxpic = {} function changan.box (views) local tid = "box"..guid () local vs={} boxpic[tid] = luajava.loadlayout { ImageView , src = 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 = "40dp" , gravity = "center_vertical" , layout_marginTop = "2dp" , layout_marginBottom = "4dp" , onClick = function () visi (tid , ttid) end , background = getButtonBG(), { TextView , text = views [1] , textSize = "13sp" , 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", 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 if type(views[i])=='table' then radios [# radios + 1] = views [i].view vs[#vs+1]=views [i] else radios [# radios + 1] = views [i] end end boxes[tid] = luajava.loadlayout(radios) firadio [# firadio + 1] = boxes[tid] _ENV [t1id] = luajava.loadlayout (firadio) return {view=_ENV [t1id], type='BOX', name=views[1], vs=vs } end buts={} heir=getRes("heir") function changan.Bigbutton(txt,func,txtc) if not txt then txt = "未设置" end if not txtc then txtc="#ffffff" end local tid="Cbutton"..guid() buts[tid]=luajava.loadlayout( { LinearLayout, layout_width = 'match_parent', layout_height = "wrap_content", { LinearLayout, layout_width = "fill_parent", gravity = "center_vertical", layout_marginTop = "5dp", layout_marginBottom = "5dp", background = getButtonBG(), padding="10dp", onClick = function() changan.controlWater(buts[tid],100) vibra:vibrate(10) luajava.newThread(func):start() end, { TextView, --id = luajava.newId(tid), textColor = txtc, text = txt, textSize = "13sp", layout_height = "wrap_content", layout_width = "fill_parent", layout_weight=1, },{ImageView, src=heir, layout_height="14dp", layout_width="14dp", } }}) return {view=buts[tid], name=txt, func=func, type='button' } end function getButtonBG() local selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, getVerticalBG({0x55000000,0x55000000},15)) selector:addState({ -android.R.attr.state_pressed }, getVerticalBG({0xaa1a1b1d,0xaa1a1b1d},15)) return selector end radiog={} function changan.radio (cklist) if not radoff then radon=getVerticalBG({0xffffffff,0xffffffff},360,20,控件颜色[1]) radoff=getVerticalBG({0x00ffffff,0x00ffffff},360,8,0xffaaaaaa) end local rid=guid() radiog[rid]={} rest = { LinearLayout , layout_width = 'match_parent' , layout_height = "wrap_content" , layout_marginTop = "10dp" , 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" , textColor = "#d7d7d7" , layout_width = 'fill_parent' , layout_height = 'wrap_content' , layout_marginLeft = "10dp" , layout_marginRight = "5dp" , layout_marginTop = "0dp" , layout_marginBottom = "0dp" , } else rds=1 end local restt={ LinearLayout , layout_width = 'match_parent' , layout_height = "wrap_content" , layout_marginTop = "10dp" , gravity = "top" , orientation = "vertical" , background=getVerticalBG({0xaa1a1b1d,0xaa1a1b1d},45), padding={"0dp","14dp","0dp","10dp"}, } for i = rds , # cklist do local name = cklist [i] [1] local func = cklist [i] [2] if not name then name = "未设置" end nid = name..guid () radiog[rid][nid]=false local func = radin(rid,nid,func) local tid = nid..guid () _ENV [tid] = luajava.loadlayout ( { LinearLayout , layout_width = '250dp' , layout_height = "30dp" , layout_marginTop = "5dp" , layout_marginBottom = "15dp" , layout_marginLeft = "4dp" , layout_marginRight = "10dp" , gravity = "center_vertical" , onClick = function () changan.controlWater (_ENV [tid] , 200) func() end , { ImageView , id = luajava.newId (nid) , layout_width = '20dp' , layout_height = "20dp" , layout_marginLeft = "5dp" , layout_marginRight = "0dp" , background =radoff , } , { TextView , gravity = "top" , text = name , textSize="13sp", textColor = "#d7d7d7" , layout_width = 'wrap_content' , layout_height = 'wrap_content' , layout_marginLeft = "10dp" , layout_marginRight = "5dp" , } }) restt [# restt + 1] = _ENV [tid] end rest [# rest + 1] = restt return {view=luajava.loadlayout(rest), type='radio', name='单选', } end function radin(rid,nid,func) return function() for k,v in pairs(radiog[rid]) do colorvs[k]={false,"rad"} luajava.getIdValue(k):setBackground(radoff) if k==nid and v~=true then luajava.getIdValue(k):setBackground(radon) colorvs[k]={true,"rad"} v=true luajava.newThread(func):start() end end end end 当前ui=1 function changan.text(text,color,size,isjz) if not color then color="#161616" end if isjz then rst= luajava.loadlayout( { TextView, text=text, textColor=color, textSize=size, gravity="center", layout_height="wrap_content", layout_width="match_parent", autoSizeTextType="uniform", }) else rst= luajava.loadlayout({ TextView, text=text, textColor=color, textSize=size, layout_height="wrap_content", layout_width="match_parent", autoSizeTextType="uniform", }) end return {view=rst, name=text, } end function getButtonBG() local selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, getVerticalBG({0x55d7d7d7,0x55d7d7d7},35)) selector:addState({ -android.R.attr.state_pressed }, getVerticalBG({按钮颜色,按钮颜色},35)) return selector end buts={} heir=getRes("heir") function changan.button(txt,func,txtc) if not txt then txt = "未设置" end if not txtc then txtc="#000000" end local tid="Cbutton"..guid() buts[tid]=luajava.loadlayout( { LinearLayout, layout_width = 'match_parent', layout_height = "wrap_content", { LinearLayout, layout_width = "fill_parent", gravity = "center_vertical", layout_marginTop = "5dp", layout_marginBottom = "5dp", background = getButtonBG(), padding="10dp", onClick = function() changan.controlWater(buts[tid],300) luajava.newThread(func):start() end, { TextView, --id = luajava.newId(tid), textColor = txtc, text = txt, textSize = "13sp", layout_height = "wrap_content", layout_width = "fill_parent", layout_weight=1, },{ImageView, src=heir, layout_height="14dp", layout_width="14dp", } }}) return buts[tid] end 按钮颜色=0xffffffff switch颜色=0xff006FFF 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 luajava.loadlayout({ LinearLayout, layout_height="wrap_content", layout_width="fill_parent", gravity="center", { ImageView, layout_height=height, layout_width=width, padding=pad, src=获取图片(img), onClick=function() luajava.newThread(func):start() end, }}) end function changan.edit (name , hint) _ENV [name] = name..guid () if not hint then hint = "点击输入文字" end rest = luajava.loadlayout ( { LinearLayout , layout_width = 'fill_parent' , { LinearLayout , layout_width = 'fill_parent' , layout_height = "40dp" , layout_marginTop = "5dp" , layout_marginBottom = "5dp" , layout_marginLeft = "0dp" , layout_marginRight = "0dp" , gravity = "center_vertical" , { EditText , background = getButtonBG(), gravity = "center" , hint = hint , textColor=check字体颜色, textSize = "13sp", layout_height = "40dp" , layout_marginBottom = "-2dp", id=luajava.newId(_ENV [name]), layout_width = 'fill' , } } }) luajava.getIdValue(_ENV [name]):setHintTextColor(0xff545454) return rest end 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 chazhi={} chajv={} function changan.seek(name,bian,smin,smax,nows) _ENV[bian] =nows local thum= getVerticalBG({0xffffffff,0xffffffff},4,10,switch颜色) thum:setSize(60, 60) smin=tonumber(smin) smax=tonumber(smax) chajv[bian]=smax-smin chazhi[bian]=1-smin if smin==nil then smin=1 smax=10 end truesmin=1 truesmax=truesmin+chajv[bian] if not nows then nows = smin tnows=(smin-nows) else tnows=(nows-smin)+1 end if _ENV[bian] == nil then _ENV[bian] = 1.0 end if not name then name = "未设置" end local names = name..guid() rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", { LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", gravity = "center_vertical", background = getVerticalBG({0xaa1a1b1d,0xaa1a1b1d},45), { TextView, padding={"5dp","10dp","0dp","10dp",}, gravity = "top", textColor="#ffffff", text = name..":"..nows, id = luajava.newId(names), layout_width = '100dp', --layout_marginLeft = "5dp", layout_marginRight = "0dp", }, { SeekBar, layout_width = 'fill_parent', layout_weight=1, id=luajava.newId(name.."seekbar"), min = truesmin, max = truesmax, progress=tnows, --paddingStart="0dp", --paddingEnd="0dp", progressDrawable={ getVerticalBG({控件颜色[1],控件颜色[2]},45)}, thumb=thum, progressHeight="10dp", onSeekBarChange = { onProgressChanged = function(SeekBar, var2, var3) if not var3 then return end local resultvar=tonumber(string.sub(var2,0,-3))-chazhi[bian] luajava.runUiThread(function() luajava.getIdValue(names):setText(name..":".. resultvar) end) _ENV[bian] = resultvar end }} }}) colorvs[name.."seekbar"]={true,"seek"} return {view=rest, name=name, type='拉条' } end xze2=getVerticalBG({0x00ffffff,0x00ffffff},15,3,0xff232323) xze=getVerticalBG({0x00ffffff,0x00ffffff},15,3,0xff232323) function xuanse(x) for i=1,#颜色表 do luajava.getIdValue("yans"..i):setBackground(empty) end luajava.getIdValue("yans"..x):setBackground(xze) changeColor(颜色表[x]) end function getlis(ys) local t={ LinearLayout, layout_marginLeft="6dp", layout_marginRight="6dp", background=getVerticalBG({0x55d7d7d7,0x55d7d7d7},20), padding="3dp", onClick=function() freshCl(ys) end, { LinearLayout, layout_height="20dp", layout_width="20dp", background=getVerticalBG({colorlis[ys],colorlis[ys]},15), } } return t end function tiaose() if 颜色表==nil then return 0 end local laylist1={ LinearLayout, gravity="center_horizontal", } local laylist2={ LinearLayout, layout_marginTop="6dp", gravity="center_horizontal", } for i=1,#颜色表 do laylist1[#laylist1+1]={ LinearLayout, layout_height="20dp", layout_width="20dp", gravity="center", id=luajava.newId("yans"..i), onClick=function() xuanse(i) end, {LinearLayout, layout_width="15dp", layout_height="15dp", background=getVerticalBG({颜色表[i][1],颜色表[i][2]},15) } } end return luajava.loadlayout({ LinearLayout, --background=getVerticalBG({0x55d7d7d7,0x55d7d7d7},25), layout_height="match_parent", layout_width="fill_parent", gravity="center", laylist1, }) end function CYC(ADD,TYPE,VALUE) local il2cpp_so=gg.getRangesList("il2cpp.so") if il2cpp_so[1]==nil then il2cpp_error() else gg.setValues({{address=il2cpp_so[1].start+ADD,flags=TYPE,value=VALUE}}) gg.processResume() end end function CYC(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end --ms配置 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 = 0x3000000 local GGNUMBER_6 = 0xFFFFFFFF 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 --基址配置2 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 end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) 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 readWrite(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] if (count > 0) then for i,v in ipairs(result) do v.isUseful=true end for k=2,#Search do local tmp={} local offset=Search[k][2] - base local num=Search[k][1] for i,v in ipairs(result) do tmp[#tmp+1]={} tmp[#tmp].address=v.address+offset tmp[#tmp].flags=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=tostring(num) then result[i].isUseful=false end end end for i,v in ipairs(result) do if (v.isUseful) then data[#data+1]=v.address end end if (#data > 0) then local t,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "\n已修改"..tg_.."条数据" or "" th=(th_) and "\n已获取"..th_.."条数据" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.alert("\n"..Name.."搜索成功!\n偏移到"..#data.."条数据"..tg..th) tg_,th_=nil,nil else gg.toast("\n"..Name.."开启失败",false) return false end else gg.toast(Name.."开启失败") return false end end --载入配置 function dy_wt (ry_wt ) local File = io.open ( '/sdcard/_wt' , 'w+' ) : write ( ry_wt ) gg.processResume ( ) gg.loadList ( "/sdcard/_wt" , gg.LOAD_VALUES ) os.remove ( "/sdcard/_wt" ) gg.clearList ( ) end --指针写法 function SearchWrite(Search, Write, Type, Name) local time=os.clock() gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast("搜索到"..#data.."条数据") local t = {} local base = Search[1][2] for i=1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) local time=string.sub(os.clock()-time,0,5) gg.toast("开启成功 已修改:"..#t.."条数据 本次启动耗时:"..time.."秒") gg.addListItems(t) else gg.toast("开启失败未搜索到任何数据", false) return false end else gg.toast("开启失败未搜索到任何数据") return false end end --XS写法配置 function xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Search[2].name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum for index=4,#Search do sum=0 for i=1,#Result do if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then Result[i].Usable=true sum=sum+1 end end if sum==#Result then gg.toast(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in ipairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true} if value.freeze then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end sum=sum+1 end end end gg.setValues(Data) gg.addListItems(Freeze) if Freezes==0 then gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据') else gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据') end gg.clearResults() 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 MR_MkPointer(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 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 for _,MR in pairs(PY_offsets) do gg.addListItems({{address = DZT+MR, flags = TYPE, value = VALUE, freeze = DJ}}) end local time=string.sub(os.clock()-time,0,5) gg.toast(NAME..'️开启成功\n当前进程名称:'..gg.getTargetInfo().label..'\n当前进程包名:'..gg.getTargetPackage()..'\n总共耗时:'..time..'秒') end end MR_MkPointer("libtersafe2.so","Cd",{0x38,0x74,0x58,0x44,0x32578,0x327D0,0x327E8,0x34690,0x346E0,0x348B0},4,0,"防2次",true) MR_MkPointer("libtersafe2.so","Cd",{0xA8},4,-1,"防闪",true) --初始颜色,填写十六进制RGB --可在功能按钮里调用changeColor()随时自定义切换 --例如:changeColor(0xffFF0023) 控件颜色={0xff33AF61,0xff5ADAD7} 颜色表={--切换颜色的列表 {0xff161616,0xff161616}, {0xffFFB94D,0xffFF854D}, {0xffFF0023,0xffAD3ACD}, {0xff008CFF,0xffFF8AFB}, {0xff00FF7B,0xff0049FF}, {0xffFF95F2,0xff514CFF}, {0xff946AFF,0xff1E8CFF}, {0xdd1C66FF,0xddB124FF}, {0xdd33CE5D,0xdd3282FF}, {0xddCE1D24,0xdd9100FF}, } 左上角标题='清沅科技.º' muby=650 --初始宽度 mubx=900 --初始高度 公告内容="123456" 悬浮窗图标="https://cccimg.com/view.php/384b11ffb94f9e2f4dacda7683d0d124.png" stab={ "公告", "防封", "刷号", "竞赛", "音乐", "设置", } loadingBox = getLoadingBox('正在启动清沅科技……') loadingBox['显示']() changan.menu ( { {--------------以下是列表一 changan.text("此版本为超人强版本" , "#000000" , "15sp") , changan.text("正在守护您的账号安全" , "#000000" , "15sp" ) , changan.button ("选择乐子进程" , function() string.toMusic ("请选择地铁跑酷进程") gg.setProcessX() end), changan.switch("💰使用指南💰", function() string.toMusic("道具赛使用指南1.无宝聚能在捡能量的时候不要开滑板否则会断网在没有捡能量的状态开即是稳定2.无视道具第一把是没有效果要完整的打完第一把之后才会有效果中途退出即是无效3.如果想稳定的话开无视道具和无宝聚能打的时候演一点即可") gg.alert("道具赛使用指南1.无宝聚能在捡能量的时候不要开滑板否则会断网在没有捡能量的状态开即是稳定2.无视道具第一把是没有效果要完整的打完第一把之后才会有效果中途退出即是无效3.如果想稳定的话开无视道具和无宝聚能打的时候演一点即可") end), changan.edit("自定义水印","自定义水印"), changan.button("开启水印[不可关闭]", function() draw.text(changan.getedit("自定义水印"),150,420) draw.setColor('#FF0000FF') end), changan.button("启动!地铁跑酷", function() gg.jumpAPP("com.kiloo.subwaysurf") end), changan.button("进入官方店铺", function() gg.intent("https://www.qtengc.com/links/FFABF286") end), changan.button("加入官方交流群", function() toMusic('1群满人') gg.alert('1群满人') gg.QQgroup("704417502") end), changan.button('生成小白号', function() gg.intent("https://4399.js.mcdds.cn/") end), } , {--------------以下是列表二 changan.check ( { { }, { "超级防闪 [进度条开]", function() MR_MkPointer("libtersafe2.so","Cd",{0xA8,0x38,0x74,0x58,0x44},4,0,"防闪",true) string.toMusic ( '修改成功' ) end } , { "防环境+独家指针[进度条开启]", function() dy_wt[[" 15686 Var #A9D2B0C0|a9d2b0c0|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libil2cpp.so:bss|bd0c0 Var #A9D317F8|a9d317f8|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libil2cpp.so:bss|c37f8 Var #BEA6984C|bea6984c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libtersafe2.so:bss|84c Var #BEA699C0|bea699c0|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libtersafe2.so:bss|9c0 Var #BEA6AB3C|bea6ab3c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libtersafe2.so:bss|1b3c Var #BEA6AB74|bea6ab74|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libtersafe2.so:bss|1b74 Var #BEA6E4C8|bea6e4c8|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libtersafe2.so:bss|54c8 Var #BEA6E4E4|bea6e4e4|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libtersafe2.so:bss|54e4 Var #BEA6E58C|bea6e58c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libtersafe2.so:bss|558c 14357 Var #C62C2F4C|c62c2f4c|4|0|1|0|0|0|r-xp|/data/app/com.kiloo.subwaysurf-PwZJH_gy_JUZ_XTXmpOEAg==/lib/arm/libtersafe2.so|377f4c Var #C631A84C|c631a84c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-PwZJH_gy_JUZ_XTXmpOEAg==/lib/arm/libtersafe2.so:bss|84c Var #C631F5A4|c631f5a4|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-PwZJH_gy_JUZ_XTXmpOEAg==/lib/arm/libtersafe2.so:bss|55a4 Var #C631F6D8|c631f6d8|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-PwZJH_gy_JUZ_XTXmpOEAg==/lib/arm/libtersafe2.so:bss|56d8 Var #C6322700|c6322700|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-PwZJH_gy_JUZ_XTXmpOEAg==/lib/arm/libtersafe2.so:bss|8700 Var #C6322718|c6322718|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-PwZJH_gy_JUZ_XTXmpOEAg==/lib/arm/libtersafe2.so:bss|8718 Var #C6322728|c6322728|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-PwZJH_gy_JUZ_XTXmpOEAg==/lib/arm/libtersafe2.so:bss|8728 Var #C6322730|c6322730|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-PwZJH_gy_JUZ_XTXmpOEAg==/lib/arm/libtersafe2.so:bss|8730 "]] toMusic('已为您过滤环境') end } , { "一键过检测", function() toMusic('执行较久请耐心等待执行完成的语音提示') MR_MkPointer("libtersafe2.so","Cd",{0x38,0x74,0x58,0x44,0x32578,0x327D0,0x327E8,0x34690,0x346E0,0x348B0},4,0,"防2次",true) MR_MkPointer("libtersafe2.so","Cd",{0xA8},4,-1,"防闪",true) MR_MkPointer("libtersafe2.so:bss","Cb",{0x14028,0x14004,0x56C0,0x5614,0x558C,0x54AC,0x5588,0x2204,0x2140,0x2134,0x2140,0x1CF4,0x1CE8,0xA4C,0x924,0x864,0x56B8,0x54DC,0x4298,0xA70,0xA6C,0x93C,0x86C,0x4354,0x1B74,0x9C0,0xA78,0x5740,0x1B80,0x1B70,0x54C8,0x54E4,0x9B4,0x9C0,0x9D4,0x9E0,0x9F8,0xAA4,0xB30,0x1B3C,0x1B48,0x1B6C,0x1BD0,0x5544,0x56A4,0x55B0,0x5690,0x1B8C,0x1B64,0x574,0x528,0x8730,0x873C,0x8728,0x54C,0x99C,0x4294,0x56D8,0x1B7C,0x9AC,0x14020,0x5620,0xA8C,0x9FC,0x1B50,0xA88,0x85C554C,0x8718,0xAB4},4,0,"全防",true) toMusic('一键过检测成功') end } , { "防行为[大厅防2]", function() function TT(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end TT(0x2aadab0 , 4, "~A MOVW R0, #0") TT(0x186d858 , 4, "~A MOVW R0, #0") TT(0x2ce160c ,4,"~A MOVW R0, #0")--设备ID检测 TT(0x2ce18cc ,4,"~A MOVW R0, #0")--钥匙作弊上传 TT(0xc074b0 ,4,"~A MOVW R0, #0")--金币作弊上传 TT(0xc0739c ,4,"~A MOVW R0, #0")--作弊次数检测 TT(0x2cd9c8c ,4,"~A MOVW R0, #0")--人物总数检测 TT(0x2ce155c ,4,"~A MOVW R0, #0")--金币数量检测 TT(0x1c51a1c ,4,"~A MOVW R0, #0")--货币作弊检测 TT(0xc07204 ,4,"~A MOV R0, #0")--速度异常检测 TT(0x2ce14ac ,4,"~A MOVW R0, #0")--关闭1分40秒检测 TT(0x2ce16bc ,4,"~A MOVT R0, #9999")--等级限制检测 TT(0x2ce1db0 ,4,"~A MOVT R0, #9999")--宝物钥匙数量检测 TT(0x2cd8538 ,4,"~A MOVT R0, #9999")--炫跑卡作弊检测 TT(0x2ce176c ,4,"~A MOVT R0, #9999")--钥匙数量检测 TT(0x2ce181c ,4,"~A MOVT R0, #9999")--硬币数量检测 gg.alert('开启成功') toMusic('开启成功') end }, { "独家全防 [进度条开启]", function() MR_MkPointer("libtersafe2.so","Cd",{0x38,0x74,0x58,0x44,0x32578,0x327D0,0x327E8,0x34690,0x346E0,0x348B0},4,0,"防2次",true) MR_MkPointer("libtersafe2.so","Cd",{0xA8},4,-1,"防闪",true) MR_MkPointer("libtersafe2.so:bss","Cb",{0x14028,0x14004,0x56C0,0x5614,0x558C,0x54AC,0x5588,0x2204,0x2140,0x2134,0x2140,0x1CF4,0x1CE8,0xA4C,0x924,0x864,0x56B8,0x54DC,0x4298,0xA70,0xA6C,0x93C,0x86C,0x4354,0x1B74,0x9C0,0xA78,0x5740,0x1B80,0x1B70,0x54C8,0x54E4,0x9B4,0x9C0,0x9D4,0x9E0,0x9F8,0xAA4,0xB30,0x1B3C,0x1B48,0x1B6C,0x1BD0,0x5544,0x56A4,0x55B0,0x5690,0x1B8C,0x1B64,0x574,0x528,0x8730,0x873C,0x8728,0x54C,0x99C,0x4294,0x56D8,0x1B7C,0x9AC,0x14020,0x5620,0xA8C,0x9FC,0x1B50,0xA88,0x85C,0x8718,0xAB4},4,0,"全防",true) gg.alert("全防开启成功") end } , { "防ACE [进度条开启]", function() MR_MkPointer("libtersafe2.so","Cd",{0x38,0x74,0x58,0x44,0x32578,0x327D0,0x327E8,0x34690,0x346E0,0x348B0},4,0,"防2次",true) MR_MkPointer("libtersafe2.so","Cd",{0xA8},4,-1,"防闪",true) MR_MkPointer("libtersafe2.so:bss","Cb",{0x14028,0x14004,0x56C0,0x5614,0x558C,0x54AC,0x5588,0x2204,0x2140,0x2134,0x2140,0x1CF4,0x1CE8,0xA4C,0x924,0x864,0x56B8,0x54DC,0x4298,0xA70,0xA6C,0x93C,0x86C,0x4354,0x1B74,0x9C0,0xA78,0x5740,0x1B80,0x1B70,0x54C8,0x54E4,0x9B4,0x9C0,0x9D4,0x9E0,0x9F8,0xAA4,0xB30,0x1B3C,0x1B48,0x1B6C,0x1BD0,0x5544,0x56A4,0x55B0,0x5690,0x1B8C,0x1B64,0x574,0x528,0x8730,0x873C,0x8728,0x54C,0x99C,0x4294,0x56D8,0x1B7C,0x9AC,0x14020,0x5620,0xA8C,0x9FC,0x1B50,0xA88,0x85C,0x8718,0xAB4},4,0,"全防",true) toMusic('防ace检测开启成功') end }, { "需要退游戏开", function() dy_wt[[" 12484 Var #B719C288|b719c288|4|0|1|0|0|0|r-xp|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so|59288 Var #B74130BC|b74130bc|4|0|1|0|0|0|r-xp|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so|2d00bc Var #B74130EC|b74130ec|4|0|1|0|0|0|r-xp|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so|2d00ec Var #B7414C94|b7414c94|4|0|1|0|0|0|r-xp|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so|2d1c94 Var #B7414DF8|b7414df8|4|0|1|0|0|0|r-xp|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so|2d1df8 Var #B7512864|b7512864|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|864 Var #B7512924|b7512924|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|924 Var #B7512A4C|b7512a4c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|a4c Var #B7513CE8|b7513ce8|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|1ce8 Var #B7513CF4|b7513cf4|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|1cf4 Var #B7514134|b7514134|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|2134 Var #B7514140|b7514140|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|2140 Var #B7514204|b7514204|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|2204 Var #B75174AC|b75174ac|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|54ac Var #B7517588|b7517588|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|5588 Var #B751758C|b751758c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|558c Var #B7517614|b7517614|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|5614 Var #B75176C0|b75176c0|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|56c0 Var #B7526004|b7526004|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|14004 Var #B7526028|b7526028|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|14028 15804 Var #B7D20E58|b7d20e58|4|0|1|0|0|0|r-xp|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so|249e58 Var #B7EA654C|b7ea654c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|54c Var #B7EA683C|b7ea683c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|83c Var #B7EA6864|b7ea6864|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|864 Var #B7EA686C|b7ea686c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|86c Var #B7EA689C|b7ea689c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|89c Var #B7EA693C|b7ea693c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|93c Var #B7EA69E0|b7ea69e0|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|9e0 Var #B7EA69F8|b7ea69f8|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|9f8 Var #B7EA6A6C|b7ea6a6c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|a6c Var #B7EA6A70|b7ea6a70|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|a70 Var #B7EA6AA4|b7ea6aa4|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|aa4 Var #B7EA6AB4|b7ea6ab4|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|ab4 Var #B7EA7B80|b7ea7b80|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|1b80 Var #B7EA7B84|b7ea7b84|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|1b84 Var #B7EA7B8C|b7ea7b8c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|1b8c Var #B7EA7BD0|b7ea7bd0|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|1bd0 Var #B7EAA298|b7eaa298|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|4298 Var #B7EAB4AC|b7eab4ac|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|54ac Var #B7EAB4C8|b7eab4c8|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|54c8 Var #B7EAB4DC|b7eab4dc|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|54dc Var #B7EAB588|b7eab588|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|5588 Var #B7EAB58C|b7eab58c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|558c Var #B7EAB5B0|b7eab5b0|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|55b0 Var #B7EAB614|b7eab614|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|5614 Var #B7EAB620|b7eab620|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|5620 Var #B7EAB67C|b7eab67c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|567c Var #B7EAB694|b7eab694|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|5694 Var #B7EAB6A4|b7eab6a4|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|56a4 Var #B7EAB6C0|b7eab6c0|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|56c0 Var #B7EAE718|b7eae718|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|8718 Var #B7EAE838|b7eae838|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|8838 Var #B7EBA028|b7eba028|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|14028"]] toMusic('开启成功可以退出游戏了已帮您过滤线下追封') end }, { "过新手教程" , function () CYC(0xbb8378,4,"~A MOVW R0, #1") toMusic('开启成功') end}, { "关闭封号弹窗", function() CYC(0x11DF5BC,4,"~A MOVW R0, #0")--某人 toMusic('关闭封号弹窗成功') end}, }),--check结尾 } , { --------------以下是列表三 changan.button('选择进程', function() gg.setProcessX() toMusic('请选择地铁跑酷进程') end), changan.button("备份数据", function() CYC(0xbeb02c,4,"~A MOVW R0, #1") CYC(0xc04ad4,4,"~A MOVW R0, #1") CYC(0x2ccefbc,4,"~A MOVW R0, #1") toMusic('开启成功') end), changan.text("\n\n") , changan.text("刷号区域" , "#000000" , "15sp") , changan.box({"装饰区",---box2示例 可以删掉 changan.switch("人物全解", function() CYC(0xbae350, 4, "~A MOVW R0, #1") string.toMusic("人物全解成功") end , function() end ), changan.switch("滑板全解", function() CYC(0xbaf354, 4, "~A MOVW R0, #1") string.toMusic("滑板全解成功") end , function() end ), changan.switch("背饰全解", function() CYC(0xbd9a64, 4, "~A MOVW R0, #1") string.toMusic("背饰成功") end ), changan.switch("背饰备份", function() CYC(0xbafb3c , 4, "~A MOVW R0, #1") string.toMusic('备份数据成功') end ), changan.switch("头像框全解", function() CYC(0x10d7678, 4, "~A MOVW R0, #1") string.toMusic("成功") end , function() end ), changan.switch("装扮全解", function() CYC(0xba0400, 4, "~A MOVW R0, #1") string.toMusic("成功") end , function() end ), changan.switch("滑板技能全解", function() CYC(0xd30068, 4, "~A MOVW R0, #1") string.toMusic("成功") end , function() end ), }), changan.box({"宝物区",---box2示例 可以删掉 changan.switch("十抽宝物【九游】", function() function C(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end C(0x1025b0c ,4,'~AB +0x1930') string.toMusic("十抽全宝物修改成功请前往宝物箱子界面进行十抽") end ), changan.switch("十抽半宝", function() function NY(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end NY(0x1025b0c ,4,"~AB +0x24CC")--某人 string.toMusic("十抽宝物备份修改成功请前往宝物箱子界面进行十抽") end), changan.switch("十抽保存【九游】", function() function Y(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end Y(0x1025b0c ,4,"~AB +0x1E48")--某人 string.toMusic("十抽宝物备份修改成功请前往宝物箱子界面进行十抽") end), changan.switch("十抽全饰", function() function MRY(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end MRY(0x1025b0c ,4,"~AB -0x476f4c")--某人 gg.toast("十抽全饰开启成功") string.toMusic("十抽全饰开启成功请去宝物箱子界面进行十抽") end ), changan.switch("十抽半饰", function() CYC(0x1025b0c ,4,"~AB -0x475B7C")--某人 gg.toast("十抽半饰开启成功") string.toMusic("十抽半饰开启成功请去宝物箱子界面进行十抽") end ), changan.switch("宝物自定义", function() CYC(0x1e1e510,4,'~A MOV R0, #'..gg.prompt({"等级<100即可"},{""},{"text"})[1]) string.toMusic('宝物自定义成功') end ) }), changan.box({"修改区",---box2示例 可以删掉 changan.switch("内购", function() function GH(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end GH(0x1997fac,4,'~AB +0x10E8C') toMusic('开启成功') end, function() end), changan.button("查询代码", function() loadYunLua('http://pan.rlyun.asia/api/v3/file/get/79154/%E9%87%8C%E7%BA%A6%E4%BB%A3%E7%A0%81.lua?sign=p9ZAwdwVKXuAEb4mDECqNvW8Cm3k-aIZDZfF5MNKtsg%3D%3A0') end), changan.switch("炫跑卡", function() CYC(0x153da5B,4,"~A MOVW R0, #6")--某人 gg.alert('开启成功') end), changan.switch('奖杯全部领取', function() CYC(0xc1c978, 4,"~A MOVW R0, #1") toMusic('开启成功') end), changan.switch("自定义段位", function() MR = gg.prompt({"\n某人制作\n\n1~6总段位\n6=王者","\n小段位1~5\n共五个阶段\n","\n\n星星数量","积分数量最大200"},{""},{"number","number","number","number"}) local qmnb= { {['memory']=32}, {['name']='自定义段位'}, {['value']=-993902336, ['type']=4}, {['lv']=148651115,['offset']=4, ['type']=4}, {['lv']=-753430528,['offset']=8, ['type']=4}, {['lv']=148657092,['offset']=12, ['type']=4}, } local qmxg= { {['value']=MR[1],['offset']=32,['type']=4,['freeze']=true}, {['value']=MR[2],['offset']=36,['type']=4,['freeze']=true}, {['value']=MR[3],['offset']=40,['type']=4,['freeze']=true}, {['value']=MR[4],['offset']=44,['type']=4,['freeze']=true}, } xqmnb(qmnb,qmxg) toMusic('开启成功') end), }), changan.box({"特权区",---box2示例 可以删掉 changan.switch("最高排名", function() CYC(0xbd15d0,4, "~A MOV R0, #1") toMusic('开启成功') end ), changan.switch("十倍得分", function() co = gg.prompt({"调出","解锁"}, {}, {'checkbox',"checkbox"}) if co == nil then Main() end if co[1] == true then MR(0x2cd8fec ,4,"~A MOVW R0, #1") end if co[2] == true then MR(0xe0cd28 ,4,"~A MOVW R0, #1") end toMusic('开启成功') end ), changan.switch("双倍金币", function() CYC(0xb83000 ,4,"~A MOVW R0, #1") string.toMusic("己为您开启双倍金币获取请前往主页查看") end, function() end), changan.switch("微博特权", function() CYC(0x17337fc ,4,"~A MOVW R0, #1") string.toMusic("己为您开启微博特权获取请前往主页查看") end, function() end), changan.switch("超长昵称", function() MR(0x1034a2c ,4,"~A B +0x148") string.toMusic("己为您开启超长名") toMusic('开启成功') end ), }), changan.box({ "替换区", changan.switch("替换奖杯", function() CYC(0x10d7084, 4, "~A MOVW R0, #25") string.toMusic("已成功为老板奖励替换奖杯") end ), changan.switch("替换人物", function() CYC(0x10d7084, 4, "~A MOV R0, #10") CYC(0x10D7238, 4, "~A MOVW R0, #" .. gg.prompt({ "请输入你要修改奖励的人物代码注:保安是190" }, {"190"}, {"text"})[1]) string.toMusic("已成功为老板奖励替换人物") end ), changan.switch("替换滑板", function() CYC(0x10d7084, 4, "~A MOV R0, #12") CYC(0x10D73EC, 4, "~A MOVW R0, #" .. gg.prompt({ "请输入你要修改奖励的滑板代码注:跑车是60" }, {"60"}, {"text"})[1]) string.toMusic("已成功为老板奖励替换滑板") end ), changan.switch("替换背饰", function() CYC(0x10d7084, 4, "~A MOV R0, #14") CYC(0x10D75A0, 4, "~A MOVW R0, #" .. gg.prompt({ "请输入你要修改奖励的背饰代码注:磁铁是22" }, {"22"}, {"text"})[1]) string.toMusic("已成功为老板奖励替换背饰") end ), changan.switch("替换像框", function() CYC(0x10d7084, 4, "~A MOV R0, #9") CYC(0x10d7678, 4, "~A MOVW R0, #" .. gg.prompt({ "请输入你要修改奖励的像框代码" }, {"22"}, {"text"})[1]) string.toMusic("已成功为老板奖励替换背饰") end ), changan.switch("替换跑币", function() CYC(0x10d7084, 4,"~A MOV R0, #26") toMusic('开启成功') end), }), } , { --------------以下是列表四 changan.switch("断网模式", function() function BB(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end gg.alert("使用方法:道具赛开局开,到跳秒结束后关闭,一局一开") BB(0x2abe98c,4,"~A MOVW R0, #1")--某人 gg.alert("断网状态开启成功") end, function() function BB(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end BB(0x2abe98c,4,"~A MOVW R0, #0")--某人 gg.alert("断网状态恢复成功") end), changan.switch("隐藏信息", function() CYC(0xbcca30 ,4,"~A MOV R0, #0") CYC(0x2b86770 ,4,"~A MOV R0, #0") CYC(0x2cd2e8c ,4,"~A MOV R0, #0") CYC(0x2b857a0 ,4,"~A MOV R0, #1") CYC(0x1c51a1c ,4,"~A MOV R0, #1")---全局离线 gg.alert(os.date'己为您开启隐藏信息,可预防MK查看跑号') string.toMusic('己为您开启隐藏信息,可预防MK查看跑号') end), changan.box({"实用功能", changan.button("全服排名", function() MR(0xe3dbf4 ,4,"~A MOVW R0, #"..gg.prompt({"请输入你想要的全服排名"},{"1"},{"text"})[1]) toMusic('开启成功') end), changan.button("省服排名", function() CYC(0xE3DC9C,4,"~A MOVW R0, #1")--某人 string.toMusic("全省排名开启成功") end), changan.button("观战比赛", function() CYC(0x12da6e0 ,4,"~A MOVW R0, #1") string.toMusic("赛事调出成功请前往道具赛界面查看") end), }), changan.box({"冲榜功能",---box2示例 可以删掉 changan.switch("自动开板", function() function BR(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end BR(0x1cc9d90 ,4,"~A B +0x223C") toMusic("开启成功") end, function() ACAT.BOOL_HF(0x1cc9d90,"恢复")---这里是查看原值[一定要放功能前面] A_MR(RecoveryList["恢复"][1],RecoveryList["恢复"][2],RecoveryList["恢复"][3])---这里是恢复 toMusic("恢复成功") end), changan.switch("无视能量", function() function R(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end R(0x1cc6d34, 4, '~A MOVW R0, #0')--无视能量 toMusic("开启成功") end), changan.switch("无宝聚能", function() function BY(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end BY(0x1cca238 ,4,"~A B +0x19EC") toMusic('开启成功') end, function() BY(0x1cca238,"F04F2DE9r","1CB08DE2r") toMusic("恢复成功") end), changan.switch("防道具", function() function TT(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end TT(0x1e1dc38,4,"~A MOVW R0, #1")--某人 TT(0x1e1dabc,4,"~A MOVW R0, #1")--某人 toMusic('开启成功') end, function() TT(0x1e1dc38,4,"~A MOVW R0, #0")--某人 TT(0x1e1dabc,4,"~A MOVW R0, #0")--某人 toMusic('恢复成功') end), changan.switch("无限时间滑板", function() search(1300,16,32) py1(1000,16,0x18) py1(6000,16,0x60) xg1(0,16,0x7C) xg1(0,16,0x6c) xg1(1744,16,0x68) search(300,16,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(0,4,0x1c) xg1(0,4,0xc) xg1(9999999,16,0x8) gg.alert('️滑板无限时长开启成功') end), changan.switch("一能量一滑板", function() function MJ(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end MJ(0xe94524 ,4,"~AB +0xE17DD0") gg.alert("开启成功") end, function() ACAT.BOOL_HF(0xe94524,"恢复")---这里是查看原值[一定要放功能前面] A_MR(RecoveryList["恢复"][1],RecoveryList["恢复"][2],RecoveryList["恢复"][3])---这里是恢复 gg.alert("恢复成功") end), changan.switch("能量倍增", function() gg.alert("多跳跃下滑几次后,捡拾的能量即可翻倍") HX_value(200)--自定义200条--防模糊 MR(0xec92e4 ,4,"~AB +0xE02940") MR(0xec94ac ,4,"~AB +0xE02778") gg.alert("己为您开启能量倍增") end), changan.switch("上下聚能", function() function BB(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end ftz(50,4,"~A MOVW R0, #0")--某人 BB(0x1abd014 ,4,"~A MOVW R0, #0") BB(0x1cca238 ,4,"~A B +0x19EC") gg.alert("开启成功") end), changan.switch("滑板聚能", function() MR(0x1cca818,4,"~AB +0x140C")--某人 gg.alert("成功") end), changan.switch("道具效果乌龟", function() MR(0x1cd2328,4,"~A MOVW R0, #1")--某人 toMusic('开启成功') end), changan.switch("道具效果恶魔", function() MR(0x1cd22fc,4,"~A MOVW R0, #1")--某人 toMusic('开启成功') end), changan.switch("道具效果磁铁", function() MR(0x1cd23e0,4,"~A MOVW R0, #1")--某人 toMusic('开启成功') end), changan.switch("下滑穿透", function() qmnb = { {["memory"] = 32}, {["name"] = "下滑瞬移"}, {["value"] = -8388608, ["type"] = 4}, {["lv"] = -1082130432, ["offset"] = -16, ["type"] = 4}, {["lv"] = 2139095040, ["offset"] = -8, ["type"] = 4}, } qmxg = { {["value"] = 99999, ["offset"] = -64, ["type"] = 16}, } xqmnb(qmnb) gg.toast("开启成功") end, function() qmnb = { {["memory"] = 32}, {["name"] = "恢复瞬移"}, {["value"] = -8388608, ["type"] = 4}, {["lv"] = -1082130432, ["offset"] = -16, ["type"] = 4}, {["lv"] = 2139095040, ["offset"] = -8, ["type"] = 4}, } qmxg = { {["value"] = 0, ["offset"] = -64, ["type"] = 16}, } xqmnb(qmnb) end), changan.switch("无视障碍", function() function RR(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end RR(0x1d7bfb4,4,"~A MOVW R0, #1")--某人 toMusic('开启成功') end, function() end), changan.switch("娱乐功能", function() gg.alert('功能\n跳高\n无敌\n翱翔\n无限跳\n瞬移') CYC(0x1d9ba40, 4,"~A MOVW R0, #1") gg.alert('等待两秒开启下一个功能') toMusic('等待两秒开启下一个功能') gg.sleep(1900) CYC(0x2b3173c, 4,"~A MOVW R0, #1") gg.alert('等待两秒开启下一个功能') toMusic('等待两秒开启下一个功能') gg.sleep(1900) CYC(0x1d9be20, 4,"~A MOVW R0, #1") gg.alert('等待两秒开启下一个功能') toMusic('等待两秒开启下一个功能') gg.sleep(1900) CYC(0x1ab9608, 4,"~A MOVW R0, #1") gg.alert('等待两秒开启下一个功能') toMusic('等待两秒开启下一个功能') CYC(0x1d9bf90, 4,"~A MOVW R0, #1") gg.alert('娱乐功能已完毕') toMusic('娱乐功能已完毕') end), changan.text("切记功能要在局内开启,否则失效" , "#000000" , "20sp" ) , changan.check ( { {"全局速度", function() gg.setRanges(32) local Name="全局速度" local dataType = 16 local tb1 = {{6000, 0x0}} local tb2 = {{0,-0x5C},{0,-0x6C},{1300,-0x70}} SearchWrite(tb1, tb2, dataType) gg.alert('成功') toMusic("开启成功") end, function() end}, {"穿透", function() search(4.5,16) py1(5.5,16,16) xg1(9191,16,0,true) xg1(9192,16,16,true) gg.alet('成功') end }, {"全局速度", function() function SearchWrite(Search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then local t = {} local base = Search[1][2] for i=1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) else return false end else return false end end gg.setRanges(32) local Name="全局速度" local dataType = 16 local tb1 = {{6000, 0x0}} local tb2 = {{0,-0x5C},{0,-0x6C},{1300,-0x70}} SearchWrite(tb1, tb2, dataType) gg.alert('成功') toMusic("开启成功") end, function() end}, {"滑板延长", function() 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 = 0x3000000 local GGNUMBER_6 = 0xFFFFFFFF 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 Name = "滑板延长" ms.ss ( "1300" , 16 , 32 ) ms.py ( 1000 , 0x18 , 16 ) ms.py ( 6000 , 0x60 , 16 ) ms.edit ( 0 , 0x7c , 16 ) ms.edit ( 0 , 0x6c , 16 ) ms.edit ( 2035 , 0x68 , 16 ) string.toMusic("滑板延长成功") end, function() end}, {"滑板速度", function() function SearchWrite(Search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then local t = {} local base = Search[1][2] for i=1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) else return false end else return false end end gg.setRanges(32) local Name="滑板加速" local dataType = 16 local tb1 = {{6000.0, 0x0}} local tb2 = {{0,0xC},{0,0x1C},{1876.0,0x8}} SearchWrite(tb1, tb2, dataType) string.toMusic('滑板加速开启成功') end, function() end}, {"加速带速度", function() function SearchWrite(Search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then local t = {} local base = Search[1][2] for i=1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) else return false end else return false end end gg.setRanges(32) local Name="加速带速度微加" local dataType = 16 local tb1 = {{6000, 0x0}} local tb2 = {{0,-0x44},{0,-0x54},{2500,-0x58}} SearchWrite(tb1, tb2, dataType) gg.alert('成功') toMusic("开启成功") end, function() end}, {"基础速度", function() function SearchWrite(Search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then local t = {} local base = Search[1][2] for i=1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) else return false end else return false end end gg.setRanges(32) local Name="基础速度微加" local dataType = 16 local tb1 = {{6000, 0x0}} local tb2 = {{0,0x34},{0,0x24},{1400,0x20}} SearchWrite(tb1, tb2, dataType) gg.alert('成功') toMusic("开启成功") end, function() end}, {"减速恢复", function() function SearchWrite(Search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then local t = {} local base = Search[1][2] for i=1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) else return false end else return false end end gg.setRanges(32) local Name="减速恢复微加" local dataType = 16 local tb1 = {{6000, 0x0}} local tb2 = {{0,0x3C},{0,0x4C},{10000,0x38}} SearchWrite(tb1, tb2, dataType) gg.alert('成功') toMusic("开启成功") end, function() end}, }) }), changan.box({"娱乐功能",---box2示例 可以删掉 changan.switch("好友赛防踢", function() MR(0x1e37880, 4,"~A MOVW R0, #1")--某人 end), changan.edit('lsdw1','修改道具赛历史段位全\n6=王者'), changan.edit('pvp1','道具赛匹配边框'), changan.button('执行修改', function() local lsdw=tonumber(changan.getedit('lsdw1')) if lsdw ~= nil and lsdw ~= "" then CYC(0xBD1E50 ,4 , "~A MOVW R0, #"..lsdw) toMusic('开启成功') end local pvpbk=tonumber(changan.getedit('pvp1')) if pvpbk ~= nil and pvpbk ~= "" then CYC(0x181A068 ,4 , "~A MOVW R0, #"..pvpbk) toMusic('开启成功') end end), changan.switch("开局道具转换", function() MR = gg.prompt({'简介:\n道具代码:\n1=恶魔\n2=乌龟\n3=颜料\n4=能量[1;4]'},{[1]=1},{[1]='number'})[1] if not MR then return end MR(0xb7caa0 ,4,"~A MOVW R0, #"..changan.."") string.toMusic("开启成功") end), changan.switch("锁显道具", function() MR(0x1cca818 ,4,'~A MOV R0, #'..gg.prompt({"道具类型\n无 = 0 导弹 = 1 蓝泡 = 2 护盾 = 4 香蕉 = 8\n章鱼 = 16 眩晕 = 32 绿泡 = 64 狗子 = 128 能量 = 256\n乌龟 = 272 云雾 = 288 净化 = 320 磁铁 = 384 加速 = 562"},{""},{"number"})[1]) toMusic('锁定显示道具成功') end), changan.switch("无视减速带", function() function MM(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end MM(0x1d87308,4,"~A MOVW R0, #1")--某人 end), changan.switch("无限护盾", function() MR(0x1cd1050, 4,"~A MOVW R0, #1")--某人 toMusic('开启成功') end), changan.switch("群体护盾", function() MR(0x1c51d00, 4,"~A MOVW R0, #1")--某人 toMusic('开启成功') end), changan.switch("宝物无CD", function() MR(0x101d4ac ,4,"~A MOV R0, #2") MR(0x101d66c ,4,"~A MOV R0, #1") MR(0x101dcbc ,4,"~A MOV R0, #0") string.toMusic("宝物无CD开启成功") end), }), changan.box({"分数赛",---box2示例 可以删掉 changan.switch("金币消失", function() CYC(0xeb3e54,4,"~A MOVW R0, #0")--某人 gg.alert('开启成功') end), changan.switch("速度起飞", function() changan = gg.prompt({'请输入需要修改的倍数,建议改60'},{[1]=60},{[1]='number'})[1] local t = {"libunity.so:bss", "Cb"} local tt = {0x831C, 0xEC} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = changan, freeze = true}}) string.toMusic("速度起飞开启成功") end, function () local t = {"libunity.so:bss", "Cb"} local tt = {0x831C, 0xEC} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = 1, freeze = true}}) string.toMusic("速度起飞恢复成功") end), changan.switch("无限跳跃", function() CYC(0x1ab9608, 4,"~A MOVW R0, #1") gg.alert('开启') end, function() end), changan.switch("人物无敌", function() CYC(0x2b3173c, 4,"~A MOVW R0, #1") gg.alert('开启成功') end, function() end), }), } , { --------------以下是列表五 changan.button("精选视频", function() gg.playVideo("http://pan.klf.icu/view.php/6b3292692c953b3fc481215772b3ba4c.mp4") end), changan.switch("动态人物", function () ---@type ui local ui = require('ui') ---@type windowManager local windowManager = require('windowManager') do local path = file.getCacheName('9b78f722.gif') -- 通过文件MD5判断是否有缓存文件 if not file.md5(path, '0fe37fb6ef265d527ba8ed9280efab27') then assert(downloadLanzou('https://lanzoux.com/iadwQ1io64ba', { passwd = 'a8go' }, path)) else -- print('缓存了') end -- GifImageView:android.widget.ImageView local gifImageView = luajava.loadlayout({ 'ui.GifImageView', src = path, }) viewManager=windowManager:bindView(gifImageView) viewManager:setMoveable(true) viewManager:show() viewManager:park() end end, function() viewManager:unpark() 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":"(.-)","') gg.toast('开始播放['..name..']') gg.playMusic(muchen) end), changan.button("停止播放", function() 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("播放已停止") gg.toast("无正在播放的音乐") end), changan.box({"随机区", changan.radio({ "随机排行榜音乐" , ---小标题 {"热歌榜",--小功能名 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":"(.-)","') gg.alert('开始播放['..name..']') gg.playMusic(muchen) end }, { "新歌榜", 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":"(.-)","') gg.alert('开始播放['..name..']') gg.playMusic(muchen) end }, { "飙升榜", 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":"(.-)","') gg.alert('开始播放['..name..']') gg.playMusic(muchen) end }, { "抖音榜", 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":"(.-)","') gg.alert('开始播放['..name..']') gg.playMusic(muchen) end }, { "电音榜", 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":"(.-)","') gg.alert('开始播放['..name..']') gg.playMusic(muchen) end }, }), }), changan.box({"音乐区",---box2示例 可以删掉 changan.switch("Walk", function() gg.playMusic('http://music.163.com/song/media/outer/url?id=1873321491.mp3') end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), changan.switch("catch", function() gg.playMusic('http://music.163.com/song/media/outer/url?id=26286214.mp3') end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), changan.switch("Me", function() gg.playMusic('https://music.163.com/song/media/outer/url?id=1990363532.mp3') end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), changan.switch("已魔怔求打压", function() gg.playMusic("https://tc.1haodh.com/view.php/81685e1fe940f87d9b03f5e831dfe5e2.mp3") end, function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end), changan.switch("魔怔了老弟🤓", function() gg.playMusic("https://tc.1haodh.com/view.php/be40342567bfef8d0a69056ca0cdddc0.mp3") end, function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end), changan.switch("烧酒歌", function() gg.playMusic("https://tc.1haodh.com/view.php/0f6ae6a555ad6e1869208e7b81ad9804.mp3") end, function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end), changan.switch("不是哥们你有啥实力", function() gg.playMusic("https://tc.1haodh.com/view.php/7a56ed4a29b425d731ea54c0e114fec4.mp3") end, function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end), changan.switch("心做", function() gg.playMusic("https://tc.1haodh.com/view.php/941841d6be10e0450d71a8af19d21cd0.mp3") end, function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end), changan.switch("心如止水", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1928002636.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), changan.switch("篝火旁", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=518725853.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), changan.switch( "凭什么觉得 I LOVE YOU", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2020310968.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), changan.switch( "月亮之矢", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=419375250.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), changan.switch("把美好的回忆拼给你", function() gg.playMusic("https://tc.1haodh.com/view.php/a05030257801c32066a5e9ba7b49f438.mp3") end, function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end), changan.switch("旧金山", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2024109979.mp3") end, function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end), changan.switch("你看到了我", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1377530437.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), changan.switch("可不可以", function() gg.playMusic("https://tc.1haodh.com/view.php/b62320eca1a8df9958fd26773d499105.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), changan.switch("Neeva", function() gg.playMusic("https://out.zxglife.top/view.php/16fa44c6165f5828dff9cfd7cecb84d9.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), }), }, { --------------以下是列表六 changan.button ("退出" , function () tuichu = 1 end), } })