string.toMusic(os.date("欢迎老板使用泪水全防")) gg.setVisible(false) luajava.setFloatingWindowHide(true) ---配置自动下载 function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end file.mkdir("/sdcard/灰太狼配置") if not io.open("/sdcard/灰太狼配置.zip") then local f=io.open("/sdcard/灰太狼配置.zip",'a') local url = "https://mpimg.cn/down.php/657cf3637440ab22e5d54de0f2901012.zip" local resp = gg.makeRequest(url) if resp and resp.content then local f = io.open("/storage/emulated/0/download.zip", "wb") if f then f:write(resp.content) f:close() gg.toast("下载成功") else gg.toast("文件打开失败") end else gg.toast("网络请求失败") end unzip("/sdcard/灰太狼配置.zip","/sdcard/") end function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end os.remove("/sdcard/灰太狼配置.zip") IslandPicMain = luajava.loadlayout ({ layout_marginRight = "27dp", ImageView, id="IslandPic", src="http://vip.okig.top/view.php/9db1754dca43c1038def6e2b41391ba7.png", layout_gravity="center", background={GradientDrawable,color=0xff,cornerRadius=20}, layout_width="53dp", layout_height="53dp", clipToOutline=true, }) local typeface = import("android.graphics.Typeface") -- 使用系统默认字体,移除外部字体文件依赖 local font = typeface.defaultFromStyle(1) local baseWindow = require 'floatingWindowManager2' if not baseWindow.getContext then gg.alert('请重启一下RLGG') app.exit() end import "android.graphics.Color" import "android.content.res.ColorStateList" local material3 = require 'material3' local context=material3:getContext() context = app.context baseWindow=require('floatingWindowManager2') import("android.content.res.ColorStateList") import("androidx.drawerlayout.widget.DrawerLayout") import("com.google.android.material.card.MaterialCardView") import("com.google.android.material.snackbar.Snackbar") import("com.google.android.material.appbar.AppBarLayout") import("com.google.android.material.appbar.MaterialToolbar") import("android.animation.LayoutTransition") import("androidx.coordinatorlayout.widget.CoordinatorLayout") import("androidx.recyclerview.widget.RecyclerView") import("android.view.animation.LayoutAnimationController") import("com.google.android.material.bottomsheet.BottomSheetDialog") import("com.google.android.material.bottomsheet.BottomSheetBehavior") import("com.google.android.material.bottomsheet.BottomSheetDragHandleView") import("android.ext.*") import("android.media.MediaPlayer") MediaPlayer=MediaPlayer() import "java.io.File" import "android.graphics.Typeface" import "android.animation.LayoutTransition" layoutTransition=LayoutTransition() layoutTransition:setDuration(500) import 'com.google.android.material.imageview.ShapeableImageView' import 'com.google.android.material.shape.CornerFamily' import 'com.google.android.material.materialswitch.MaterialSwitch' import 'com.google.android.material.button.MaterialButton' import 'com.google.android.material.dialog.MaterialAlertDialogBuilder' import 'com.google.android.material.slider.Slider' import 'com.google.android.material.snackbar.Snackbar' import 'com.google.android.material.sidesheet.SideSheetDialog' import 'com.google.android.material.bottomsheet.BottomSheetDialog' import 'com.google.android.material.bottomsheet.BottomSheetBehavior' import 'com.google.android.material.progressindicator.LinearProgressIndicator' import 'com.google.android.material.progressindicator.CircularProgressIndicator' import 'com.google.android.material.chip.ChipGroup' import 'com.google.android.material.chip.Chip' import 'com.google.android.material.radiobutton.MaterialRadioButton' import 'com.google.android.material.checkbox.MaterialCheckBox' import 'com.google.android.material.dialog.MaterialAlertDialogBuilder' import 'androidx.coordinatorlayout.widget.CoordinatorLayout' import 'androidx.core.widget.NestedScrollView' import 'android.graphics.drawable.Icon' import 'android.widget.LinearLayout' import 'android.widget.Button' import 'android.widget.TextView' import 'android.widget.ScrollView' import 'android.widget.RadioGroup' function typetext(path) local Typeface = luajava.bindClass("android.graphics.Typeface") local fontFile = luajava.newInstance("java.io.File", path) return Typeface:createFromFile(fontFile) end import 'java.lang.CharSequence' import 'java.lang.Boolean' import 'java.lang.reflect.Array' baseWindow:darkMode() baseWindow:lightMode() import "android.animation.LayoutTransition" file.checkFile("/storage/emulated/0/灰太狼配置/收藏歌单") local musiclist = file.read("/storage/emulated/0/灰太狼配置/收藏歌单") or "" local musicTable = {} if musiclist ~= "" then local f = load("return " .. musiclist) if f then musicTable = f() or {} end end musiclist = {} -- 给变量赋值 local nowMusic = #musiclist -- 设定当前歌曲序号 import("android.media.MediaPlayer") mediaPlayer=MediaPlayer() -- 音乐播放器 import("android.view.animation.ScaleAnimation") import("android.view.animation.Animation") import("android.content.res.ColorStateList") --gg.setVisible(false) --luajava.setFloatingWindowHide(true) local material3 = require "material3" local context=material3:getContext() import "android.graphics.Bitmap" import "android.renderscript.Allocation" import "android.renderscript.Element" import "android.renderscript.RenderScript" import "android.renderscript.ScriptIntrinsicBlur" import "android.graphics.Canvas" import "android.graphics.Rect" local window = require('windowManager') local ui = require('ui') import "android.animation.ObjectAnimator" import "android.view.animation.Animation" local colorvs = {} --控件颜色 local threshold = 5 -- 设定拖动阈值 local canSwipeUp = false -- 设定第一次上拖动是否触发 local canSwipeDown = true -- 设定第一次下拖动是否触发 local isPlaying = false --设定歌曲播放状态 local 音量键 = true --设定歌曲播放状态 local isReady = false --歌曲是否准备完毕 import "android.animation.ArgbEvaluator" import "android.animation.ValueAnimator" import "android.graphics.Color" import "android.content.res.ColorStateList" local LayoutParams = luajava.bindClass("android.view.WindowManager$LayoutParams") local context = baseWindow:getContext() import "android.view.animation.TranslateAnimation" import "android.view.animation.Animation" import "android.animation.ArgbEvaluator" import "android.animation.LayoutTransition" import "android.graphics.drawable.GradientDrawable" import "android.graphics.drawable.ClipDrawable" import "android.media.MediaPlayer" MediaPlayer=MediaPlayer() import "java.io.File" import "android.graphics.Typeface" import "android.animation.LayoutTransition" layoutTransition=LayoutTransition() layoutTransition:setDuration(500) local LottieDex=dex.loadfile('/storage/emulated/0/灰太狼配置/Lottie.dex') local LottieAnimationView=LottieDex:loadClass("com.airbnb.lottie.LottieAnimationView") dex.loadfile("/storage/emulated/0/灰太狼配置/Lottie.dex") import "com.airbnb.lottie.*" import 'android.graphics.Bitmap' import 'android.renderscript.Allocation' import 'android.renderscript.Element' import 'android.renderscript.RenderScript' import 'android.renderscript.ScriptIntrinsicBlur' import 'android.graphics.Canvas' import 'android.graphics.Rect' context:setTheme(0xff98C6D5) local BlurUtils = {} local RenderScript = luajava.bindClass("android.renderscript.RenderScript") local ScriptIntrinsicBlur = luajava.bindClass("android.renderscript.ScriptIntrinsicBlur") local Element = luajava.bindClass("android.renderscript.Element") local Allocation = luajava.bindClass("android.renderscript.Allocation") local MotionEvent = luajava.bindClass("android.view.MotionEvent") local Dialog = luajava.bindClass("android.app.Dialog") local Context = luajava.bindClass("android.content.Context") local WindowManager = luajava.bindClass("android.view.WindowManager") local Bitmap = luajava.bindClass("android.graphics.Bitmap") rs=context:getResources():getDisplayMetrics() rs=tostring(rs) rs=string.gsub(rs,',',';') rs=string.gsub(rs,'DisplayMetrics','') load('rs='..rs)() dheight=rs.height dwidth=rs.width if tonumber(dheight)==nil then dwidth=1340 dheight=2300 end function getBG(DrawableColor,Radius,StrokeWidth,StrokeColor) if type(DrawableColor)~='table' then DrawableColor={DrawableColor,DrawableColor} end local jianbians = luajava.loadlayout({ GradientDrawable, color = 0xffffffff, gradientType = GradientDrawable.LINEAR_GRADIENT, orientation = GradientDrawable.Orientation.TOP_BOTTOM , }) jianbians:setColors(DrawableColor) jianbians:setStroke(StrokeWidth or 0,StrokeColor or 0xffffffff) if type(Radius)=='table' then jianbians:setCornerRadii({Radius[1],Radius[1],Radius[2],Radius[2],Radius[3],Radius[3],Radius[4],Radius[4]}) else jianbians:setCornerRadius(Radius or 0) end return jianbians end local rs=RenderScript:create(app.context) local blur=ScriptIntrinsicBlur:create(rs, Element:U8_4(rs)) blur:setRadius(20) local RenderScript = import("android.renderscript.RenderScript") local Allocation = import("android.renderscript.Allocation") local BitmapFactory = import("android.graphics.BitmapFactory") ---------------------------------- 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 YoYoImpl = luajava.getYoYoImpl() vibra = context:getSystemService(Context.VIBRATOR_SERVICE) import'android.hardware.*'; function getTimeStamp(t) local str = os.date("%Y年%m月%d日%H:%M:%S",t) return str end function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end function 获取图片(txt) txt = string.url(txt,"de") ntxt = string.sub(string.gsub(txt,"/","-"),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/storage/emulated/0/灰太狼配置/"..ntxt) == false then file.download(txt,"/storage/emulated/0/灰太狼配置/"..ntxt) else if file.length("/storage/emulated/0/灰太狼配置/"..ntxt) <= 1 then file.download(txt,"/storage/emulated/0/灰太狼配置/"..ntxt) end end txt = "/storage/emulated/0/灰太狼配置/"..ntxt end return luajava.getBitmapDrawable(txt) end function getRes(x) return 获取图片("/storage/emulated/0/灰太狼配置/"..x) 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) if mainLayoutParams.x<=0 then mainLayoutParams.x=0 if 显示==0 and 显2==false then 隐藏2() end end if mainLayoutParams.x>=20 then if 显2==true then 显示2() end end mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(floatWindow, mainLayoutParams) end end window = context:getSystemService("window") -- 获取窗口管理器 if tonumber(device.width)==nil then dwidth=1340 dheight=2300 else dwidth=device.width dheight=device.height end luajava.setFloatingWindowHide(true) 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 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 function newbg(gtvb1,gtvb3,gtvb4,gtvb5) if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end local jianbians = luajava.loadlayout({ GradientDrawable, color = {背景颜色}, cornerRadius=45, gradientType = GradientDrawable.LINEAR_GRADIENT, orientation = GradientDrawable.Orientation.TOP_BOTTOM , strokeWidth = 10, strokeColor = gtvb5 }) return jianbians end function getHorizontalBG(gtvb1,gtvb3,gtvb4,gtvb5) if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end local jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(gtvb3) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(gtvb1) jianbians:setStroke(gtvb4,gtvb5)--边框宽度和颜色 return jianbians end changan.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 changan.controlFlip = function(control,time) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotationY", { 0, 360 }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.REVERSE) xuanzhuandonghua:setDuration(time) xuanzhuandonghua:start() end) end 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 mainLayoutParams = getLayoutParams() gg.setVisible(false) function guid() seed = { 'e','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' } tb = {} for i = 1,32 do table.insert(tb,seed[math.random(1,16)]) end sid = table.concat(tb) return string.format('%s%s%s', string.sub(sid,1,8), string.sub(sid,10,12), string.sub(sid,21,22)) end import("android.media.AudioManager") audi = context:getSystemService("audio") audiotype = { AudioManager.STREAM_ALARM, --手机闹铃的声音 AudioManager.STREAM_MUSIC, --手机音乐的声音 AudioManager.STREAM_NOTIFICATION, --系统提示的通知 AudioManager.STREAM_RING, --电话铃声的声音 AudioManager.STREAM_SYSTEM, --手机系统的声音 AudioManager.STREAM_VOICE_CALL, --语音电话的声音 AudioManager.STREAM_DTMF, --DTMF音调的声音 --AudioManager.STREAM_BLUETOOTH_SCO, } yinl = {} for i = 1,#audiotype do yinl[i] = {} yinl[i].type = audiotype[i] yinl[i].min = audi:getStreamMinVolume(audiotype[i]) yinl[i].max = audi:getStreamMaxVolume(audiotype[i]) yinl[i].now = audi:getStreamVolume(audiotype[i]) end yltype = 0 function jianting3(func) yinln = {} for i = 1,#audiotype do yinln[i] = {} yinln[i].type = audiotype[i] yinln[i].now = audi:getStreamVolume(audiotype[i]) if yinln[i].now > yinl[i].now then yinl[i].now = yinln[i].now if yltype == 1 then yltype = 0 func() end elseif yinln[i].now < yinl[i].now then yinl[i].now = yinln[i].now if yltype == 0 then yltype = 1 func() end end end end setOnExitListener(function() luajava.post(function() return window:removeView(floatWindow) end)mediaPlayer:reset() mediaPlayer:release() tuichu=1 luajava.setFloatingWindowHide(false) end) function changan.menu(sview) sview=sview huiz() cebian={LinearLayout, layout_height="wrap_content", layout_width="wrap_content", gravity="center_vertical", layout_marginTop = "40dp", orientation="vertical", elevation='3dp', } jmbg={} local ui = require('ui') local layout = { 'ui.ViewPager', layout_height = 'match_parent', layout_width='match_parent', focusable="false", focusableInTouchMode="false", } for i=1,#stab do _ENV["jm"..i]=luajava.loadlayout({ LinearLayout, layout_height="50dp", layout_width="100dp", orientation="vertical", onClick=function() 切换(i) end, { LinearLayout, id="jm"..i.."g", layout_width = "match_parent", layout_height = "wrap_content", orientation = "horizontal", gravity = "center_vertical", { LottieAnimationView, id = "jmp" .. i, layout_width = "24dp", layout_height = "24dp", layout_marginLeft = "8dp", __onFinish = function(v) v:setAnimationFromJson(file.read("/storage/emulated/0/灰太狼配置/" .. stab[i][2])) end, }, { TextView, text = stab[i][1], id="jmt"..i, Typeface=font, gravity = "center", textSize = "14sp", padding={"2dp","5dp","2dp","5dp"}, textColor = "0xFF464646", layout_height = "wrap_content", layout_width = "match_parent", elevation="2dp", layout_margin="2dp", }}}) cebian[#cebian+1]=_ENV["jm"..i] _ENV["layout"..i]={ ScrollView, layout_width="match_parent", layout_height="wrap_content", { LinearLayout, id=luajava.newId("layoutm"..i), orientation="vertical", layout_width="match_parent", layout_height="wrap_content", }} layout[#layout+1]=_ENV["layout"..i] end 侧边={ LinearLayout, layout_width="fill_parent", layout_height="wrap_content", padding="4dp", {ScrollView, layout_width="46dp", layout_weight=1, cebian}, } 顶边={ LinearLayout, layout_width="fill_parent", layout_height="46dp", { ImageView, layout_marginTop = "9dp" , layout_marginLeft='9dp', background = 获取图片(悬浮窗图标), layout_width = "25dp", layout_height = "25dp", onTouch = hanshu, onClick = 隐藏, }, {LinearLayout, layout_width="55dp", layout_height="match_parent", orientation="vertical", layout_marginTop = "9dp" , layout_marginLeft='8dp', { TextView, layout_width='wrap_content', layout_height='wrap_content', gravity='center', textSize='10sp', textColor='0xffffffff', text='泪水全防', }, { TextView, layout_width='wrap_content', layout_height='wrap_content', textSize='8sp', textColor='#787878', text='by 恨自己以前', }, }, {LinearLayout, layout_width="fill_parent", layout_weight=1, layout_height="match_parent", gravity="center", {LinearLayout, layout_height="match_parent", layout_width="80dp", onClick=function() end, gravity="center", onTouch=hanshu, {LinearLayout, layout_height="5dp", layout_width="60dp", } } }, { LinearLayout, layout_gravity = "center", layout_width = "20dp", layout_height = "20dp", layout_marginLeft = "5dp", layout_marginTop = "9dp" , onClick = 隐藏, onTouch = hanshu, {LinearLayout, layout_height="2dp", layout_width="12dp", background=getVerticalBG({0xffffffff,0xffffffff},45), layout_marginLeft='dp', } }, {LinearLayout, layout_width="35dp", layout_height="match_parent", gravity="center", { ImageView, padding = "5dp", src = getRes("heix"), layout_width = "20dp", layout_height = "20dp", layout_marginRight = "5dp", onClick = 隐藏, onTouch = hanshu, ColorFilter=0xffffffff, } } } ViewPager = ui.ViewPager(layout) luajava.setInterface(ViewPager, 'addOnPageChangeListener', {onPageSelected=function(view) view=tonumber(string.sub(view,1,1)) for i=1,#stab do _ENV["jmt"..i]:setTextColor(0xFF464646) _ENV["jmt"..i]:setBackground(jmbg[i]) end 当前ui=view+1 _ENV["jmt"..view+1]:setTextColor(0xffffffff) _ENV["jmt"..view+1]:setBackground(slcta) _ENV["jmp"..view+1]:playAnimation() _ENV["jmp"..view+1]:setSpeed(1) end}) menui=luajava.loadlayout({ LinearLayout,--菜单 orientation="vertical", layout_height = "fill_parent", layout_width = "fill_parent", gravity = "center_horizontal", onClick = function() end, onTouch = hanshu, 顶边, { LinearLayout,---顶边线 layout_height="1dp", layout_width="fill_parent", backgroundColor="0xE83C3C3C", }, {LinearLayout, layout_height = "fill_parent", layout_width = "fill_parent", orientation="horizontal", {LinearLayout, layout_height = "fill_parent", layout_width = "112dp", layout_marginTop = "2dp", orientation="vertical", layout_gravity = "center", 侧边, }, { LinearLayout,---侧边线 layout_height="fill_parent", layout_width="1dp", backgroundColor="0xE83C3C3C", }, {LinearLayout, id="menubar", layout_height = "fill_parent", layout_width = "fill_parent", elevation='3dp', ViewPager-----菜单 }, }, }) ckou=luajava.loadlayout({ FrameLayout, id = "ckou", layout_height = 'match_parent', layout_width = 'match_parent', gravity="top", menui,---菜单 }) control2=luajava.loadlayout{ ImageView, visibility="gone", background = 获取图片(悬浮窗图标), layout_width = "40dp", layout_height = "40dp", onTouch = hanshu, onClick = 隐藏, } floatWindow = { FrameLayout, visibility="gone", fillViewPort=true, elevation = "10dp", background=beij, onClick = function() end, onTouch = hanshu, ckou, control2, {LinearLayout, id="smallc", visibility="gone", onClick=显示2, onTouch=hanshu, layout_height="36dp", layout_width="22dp", gravity="center", background=getCorner({0x88161616,0x88161616},12,0,0xff232323,0,25,25,0), {TextView, text="»", textSize="18sp", } },{FrameLayout, id='reme', layout_height='match_parent', layout_width='match_parent', elevation='3dp', { LinearLayout, id="shadow", layout_width="match_parent", visibility="gone", layout_height='match_parent', onClick=function() 灵动岛() canSwipeUp=false canSwipeDown=true end }, { FrameLayout, layout_marginTop="5dp", layout_marginLeft="20dp", layout_marginRight="20dp", layout_gravity="center|top", layout_width="wrap_content", layout_height='wrap_content', elevation="8dp", background=getVerticalBG({0xff161616,0xff161616},45,5,0xFF414141), LayoutTransition=layoutTransition, { LinearLayout, gravity="center", id=luajava.newId("SmallIsland"), layout_height="25dp", layout_width="100dp", onTouch=function(view, event) local action = event:getAction() if action == MotionEvent.ACTION_DOWN then initialY = event:getY() elseif action == MotionEvent.ACTION_MOVE then local currentY = event:getY() local deltaY = currentY - initialY if deltaY < -threshold and canSwipeUp then 灵动岛() canSwipeUp = false canSwipeDown = true elseif deltaY > threshold and canSwipeDown then 灵动岛() canSwipeDown = false canSwipeUp = true end end return true end, { LinearLayout, id=luajava.newId("Smalldisplay"), layout_height="25dp", layout_width="100dp", { ImageView, layout_gravity="center", layout_width="17dp", layout_height="17dp", layout_marginLeft="5dp", src="/storage/emulated/0/灰太狼配置/headset", ColorFilter="#FAFAFA", }, { TextView, id="IslandText", Typeface=font, layout_weight=0, gravity="center", layout_width="match_parent", layout_height="match_parent", text="上下滑动长按双击交互", ellipsize="marquee", singleLine=true, selected=true, textColor="#FAFAFA", textSize="8dp", } } }, { LinearLayout, id="Island", layout_height="147dp", visibility="gone", layout_width="fill_parent", onClick=function() end, onTouch=function(view, event) local action = event:getAction() if action == MotionEvent.ACTION_DOWN then initialY = event:getY() elseif action == MotionEvent.ACTION_MOVE then local currentY = event:getY() local deltaY = currentY - initialY if deltaY < -threshold and canSwipeUp then 灵动岛() canSwipeUp = false canSwipeDown = true elseif deltaY > threshold and canSwipeDown then 灵动岛() canSwipeDown = false canSwipeUp = true end end return true end, { LinearLayout, id=luajava.newId("music"), layout_height="fill_parent", layout_width="fill_parent", orientation="vertical", ------歌词 { LinearLayout, layout_width='match_parent', layout_marginTop="4dp", layout_height='59dp', orientation="horizontal", layout_marginLeft="7dp", layout_marginRight="7dp", { LinearLayout, gravity="center", layout_width='55dp', layout_height='54dp', layout_marginLeft="8dp", layout_marginTop="4dp", IslandPicMain, }, { LinearLayout, gravity="center", layout_width='130dp', layout_height='49dp', orientation="vertical", layout_marginLeft="5dp", layout_marginTop="5dp", { TextView, id="Mname", Typeface=font, text=timeA, ellipsize="marquee", singleLine=true, selected=true, textColor="#FAFAFA", textSize="12dp", layout_marginRight="34dp", }, { TextView, id="GSname", layout_marginRight="33dp", layout_marginTop="2dp", text="", Typeface=font, ellipsize="marquee", singleLine=true, selected=true, textColor="#787878", textSize="8dp", }, }, }, { luajava.post(LinearProgressIndicator,baseWindow:getContext()), id="DownloadProgress", visibility = "gone", layout_width = 'match_parent', layout_height = 'wrap_content', indeterminate = true, layout_marginTop="15dp", layout_marginBottom="5dp", }, { LinearLayout, gravity="center", layout_width='match_parent', layout_height='wrap_content', { TextView, id="ntime", Typeface=font, gravity="center|right", layout_width="45dp", layout_height="wrap_control", text="0:00", textColor="#FAFAFA", textSize="12dp", }, { Slider, id="hkuai", trackStopIndicatorSize="0dp", layout_weight=1, stepSize=1, valueTo=100, valueFrom=0, trackHeight="10dp", ThumbHeight="17dp", tickVisible=false, thumbWidth="4dp", layout_width='match_parent', layout_height='wrap_content', labelFormatter=function(seconds) if isPlaying then return ctime(seconds) else return "0:00" end end, addOnChangeListener=function(slider, value, fromUser) if fromUser and isPlaying and isReady then mediaPlayer:seekTo(value*1000) end end }, { TextView, id="atime", Typeface=font, gravity="center|left", layout_width="45dp", layout_height="wrap_control", text="0:00", textColor="#FAFAFA", textSize="12dp", }, }, { LinearLayout, layout_width='match_parent', layout_height='wrap_content', layout_marginLeft="20dp", layout_marginRight="20dp", { LinearLayout, id=luajava.newId("Collection"), layout_weight=1, layout_width="match_parent", layout_height="match_parent", gravity="center", { ImageView, id="souc", src="/storage/emulated/0/灰太狼配置/unlove", layout_width="20dp", layout_height="20dp", onClick=function() changan.controlWater(luajava.getIdView("Collection"),200) 收藏() end, ColorFilter="#FAFAFA", }, }, { LinearLayout, id=luajava.newId("PreviousAong"), layout_weight=1, layout_width="match_parent", layout_height="match_parent", gravity="center", { ImageView, src="/storage/emulated/0/灰太狼配置/last", layout_width="25dp", layout_height="25dp", onClick=function() changan.controlWater(luajava.getIdView("PreviousAong"),200) 上一首() end, ColorFilter="#FAFAFA", }, }, { LinearLayout, layout_weight=1, id=luajava.newId("PauseLayout"), layout_width="match_parent", layout_height="match_parent", gravity="center", { LottieAnimationView, id="ztkq", layout_width="25dp", layout_height="25dp", onClick=function() 暂停() end, __onFinish = function(v) v:setAnimationFromJson(file.read("/storage/emulated/0/灰太狼配置/Play-Pause")) end, }, }, { LinearLayout, id=luajava.newId("NextSong"), layout_weight=1, layout_width="match_parent", layout_height="match_parent", gravity="center", { ImageView, src="/storage/emulated/0/灰太狼配置/next", layout_width="25dp", layout_height="25dp", onClick=function() changan.controlWater(luajava.getIdView("NextSong"),200) 下一首() end, ColorFilter="#FAFAFA", }, }, { LinearLayout, layout_weight=1, id=luajava.newId("LoopSetting"), layout_width="match_parent", layout_height="match_parent", gravity="center", { ImageView, id="bfsz", src="/storage/emulated/0/灰太狼配置/setPlay", layout_width="20dp", layout_height="20dp", onClick=function() 播放设置() end, ColorFilter="#FAFAFA", }, }, } } }, }, { ImageView, id="sf", padding = "2dp", src = getRes("sscoR"), layout_width = "23dp", layout_height = "23dp", layout_marginRight = "0dp", layout_marginBottom = "0dp", layout_gravity = "right|bottom", onClick = function() end, onTouch = suofang, }} } _ENV["卡密"]="卡密" local function invoke() mainLayoutParams.x = dwidth/4-150 mainLayoutParams.y = dheight/8 切换(0) floatWindow=luajava.loadlayout(floatWindow) mainLayoutParams.height = mubx mainLayoutParams.width = muby window:addView(floatWindow,mainLayoutParams) end luajava.post(invoke) luajava.runUiThread(function() sf:setVisibility(View.VISIBLE) reme:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(floatWindow) floatWindow:setVisibility(View.VISIBLE) end) setOnExitListener(function() tuichu = 1 luajava.setFloatingWindowHide(false) end) luajava.post(function() for i=1,#stab do for k=1,#sview[i] do luajava.getIdValue("layoutm"..i):addView(sview[i][k]) end end end) qhkai = 0 显示 = 1 qiehuan = function() if qhkai == 0 then yinll = 0 qhkai = 1 draw.remove() gg.toast("HIDE") luajava.runUiThread(function() YoYoImpl:with("FadeOut"):duration(600):playOn(floatWindow) end) gg.sleep(700) luajava.runUiThread(function() floatWindow:setVisibility(View.GONE) end) else qhkai = 0 yinll = 1 huiz() luajava.runUiThread(function() floatWindow:setVisibility(View.VISIBLE) YoYoImpl:with("SlideInDown"):duration(1400):playOn(floatWindow) YoYoImpl:with("FadeIn"):duration(1600):playOn(floatWindow) end) end end if ylfunc~=nil then ylfunc() end function SliderColor(id,color1,color2,color3) id:setTrackActiveTintList(ColorStateList({{}},{"0xff"..color1}))--- 渐变 id:setTrackInactiveTintList(ColorStateList({{}},{"0xff"..color2}))---未显示 id:setThumbTintList(ColorStateList({{}},{"0xff"..color3}))----中间拉条 end SearchProgress:setIndicatorColor({0xFF1700FF}) SearchProgress:setTrackColor(0xFF000000) import"android.graphics.Paint" import("android.media.AudioManager") function SwitchColor(id,color) id:setTrackTintList(ColorStateList({{android.R.attr.state_checked}},{color})) end SliderColor(hkuai,"F41C26FF","FFC1DDF8","FFFFFF") while true do if tuichu == 1 then break end if 音量键==true then jianting3(qiehuan) if isPlaying and isReady and #musiclist ~= 0 then luajava.runOnUiThread(function() ntime:setText(ctime(math.floor(mediaPlayer:getCurrentPosition()/1000))) hkuai:setValue(math.floor(mediaPlayer:getCurrentPosition()/1000)) end) end end gg.sleep(300) end draw.text("",0,0) gg.setVisible(false) luajava.setFloatingWindowHide(false) end local hourStr=os.date("%H") local hour=tonumber(hourStr) -- 获取当前小时 if hour >=0 and hour < 3 then timeA="夜深了,早点休息" elseif hour >=3 and hour < 5 then timeA="凌晨了,注意身体" elseif hour >=5 and hour < 12 then timeA="上午好☁️" elseif hour >=12 and hour < 14 then timeA="中午好🎱" elseif hour >=14 and hour < 19 then timeA="下午好☕️" elseif hour >=19 and hour < 24 then timeA="晚上好🌙" end import"android.graphics.Paint" function souyy(txt) return table.json(gg.makeRequest("http://music.163.com/api/search/get?s="..txt.."&type=1&offset=0&total=true&limit=20").content) end function searchmusic() mustxt=luajava.getIdView("搜索"):getText() mustxt=tostring(mustxt) luajava.runOnUiThread(function() luajava.getIdView("搜索"):setText("") luajava.getIdView("musicWindow"):setVisibility(View.GONE) SearchProgress:setVisibility(View.VISIBLE) end) if string.trim(mustxt)~="" then musictable={} mustable=souyy(mustxt) mustable=mustable.result.songs for k,v in pairs(mustable) do musictable[#musictable + 1]=v end Sortsong(20) end luajava.runOnUiThread(function() luajava.getIdView("musicWindow"):setVisibility(View.VISIBLE) SearchProgress:setVisibility(View.GONE) gg.sleep(1900) YoYoImpl:with("FadeIn"):duration(2000):playOn(luajava.getIdView("musicWindow")) end) end function Sortsong(formath) musiccheck={} for i=1,formath do musid=musictable[#musictable+1-i].id musname=musictable[#musictable+1-i].name musart=musictable[#musictable+1-i].artists[0].name musvip=musictable[#musictable+1-i].fee musiccheck[#musiccheck+1]={musid,musname,musart,musvip} end musicadapter=ui.BaseAdapter({ getCount = function() return table.getn(musiccheck) -- 使用 table.getn 获取表中元素的数量 end, getItem = function(position) return musiccheck[position + 1] end, getItemId = function(position) return position end, getView=function(position, convertView, parent) local SwitchView local info=musicadapter:getItem(position) if not convertView then SwitchView=luajava.loadlayout({ MaterialCardView, background={GradientDrawable,color=0x89242424,cornerRadius=20}, layout_width="match_parent", strokeWidth=0, { LinearLayout, orientation="vertical", padding="3dp", gravity="center", layout_width="match_parent", { TextView, Typeface=font, textSize="14sp", textColor="#91c8ff", layout_hight="10dp", layout_width="wrap_content", gravity="center" }, { TextView, Typeface=font, textColor="#545454", textSize="10sp", layout_hight="10dp", layout_width="wrap_content", gravity="center" } } }) else SwitchView=convertView end SwitchView:getChildAt(0):getChildAt(0):setText(info[2]) SwitchView:getChildAt(0):getChildAt(1):setText(info[3]) SwitchView:setOnClickListener(function() bofang(info[1],info[2],info[3]) if info[4] == 1 then MaterialAlert("当前为付费VIP歌曲,可能只支持部试听") end end) return SwitchView end }) luajava.runOnUiThread(function() musiclistview:setAdapter(musicadapter) end) end lastClickTime1=0 function bofang(musicid, musicname, musicstart) local currentTime1=os.time() if currentTime1 - lastClickTime1 < 1 then return 0 end lastClickTime1=currentTime1 isExist=false for i, _ in ipairs(musiclist) do if musiclist[i][1] == musicid then nowMusic = i 播放歌曲(musiclist[i][1]) isExist=true end end if not isExist then table.insert(musiclist, {musicid, musicname, musicstart, false}) nowMusic = #musiclist 播放歌曲(musicid) end end function 写入() lovemusic = {} for _, v in pairs(musiclist) do if v[4] then table.insert(lovemusic, v) end end file.write("/storage/emulated/0/灰太狼配置/收藏歌单",lovemusic) end function 灵动岛() luajava.getIdView("Smalldisplay"):setVisibility(View.GONE) luajava.getIdView("music"):setVisibility(View.INVISIBLE) if 灵动 then luajava.startThread(function() luajava.runOnUiThread(function() shadow:setVisibility(View.GONE) luajava.getIdView("SmallIsland"):setVisibility(View.VISIBLE) Island:setVisibility(View.GONE) end) 灵动=false gg.sleep(500) luajava.runOnUiThread(function() luajava.getIdView("Smalldisplay"):setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(400):playOn(luajava.getIdView("Smalldisplay")) end) end) else luajava.startThread(function() luajava.runOnUiThread(function() shadow:setVisibility(View.VISIBLE) luajava.getIdView("SmallIsland"):setVisibility(View.GONE) Island:setVisibility(View.VISIBLE) end) 灵动=true gg.sleep(500) luajava.runOnUiThread(function() luajava.getIdView("music"):setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(400):playOn(luajava.getIdView("music")) end) end) end end function ctime(value) local minutes=math.floor(value / 60) local seconds=value % 60 return string.format("%d:%02d",minutes,seconds) end function setTime(value) local minutes=math.floor(value/1000) luajava.runOnUiThread(function() hkuai:setValueTo(minutes) atime:setText(ctime(minutes)) end) end function getMusicPictures(id) local briefIntroduction = table.json(file.read("/storage/emulated/0/灰太狼配置/音乐缓存/pic".. id)) if briefIntroduction.code == 200 then picUrl = briefIntroduction.songs[0].album.picUrl else picUrl = 'http://s4.music.126.net/style/web2/img/default/default_list.jpg' end return picUrl end function playMusic(id) pcall(function() mediaPlayer:reset() mediaPlayer:setDataSource("/storage/emulated/0/灰太狼配置/音乐缓存/"..id) mediaPlayer:prepare() IslandPic:setImageDrawable(获取图片("/storage/emulated/0/灰太狼配置/音乐缓存/Pic2"..id)) if isRotate ~= true then isRotate = true luajava.newThread(function()--更新逻辑 while true do gg.sleep(5500) end end):start() end end) end function 播放歌曲(id) isReady=false if #musiclist == 0 then return end if isPlaying==false then ztkq:setSpeed(1) ztkq:playAnimation() IslandText:setVisibility(View.VISIBLE) GSname:setVisibility(View.VISIBLE) IslandPic:setVisibility(View.VISIBLE) isPlaying=true end if file.length("/storage/emulated/0/灰太狼配置/音乐缓存/"..id) ~= 0 or file.length("/storage/emulated/0/灰太狼配置/音乐缓存/Pic2"..id) ~= 0 then playMusic(id) else luajava.startThread(function() luajava.runOnUiThread(function() DownloadProgress:setVisibility(View.VISIBLE) end) local co = coroutine.create(function() local success = file.download("http://music.163.com/song/media/outer/url?id=".. id.. ".mp3","/storage/emulated/0/灰太狼配置/音乐缓存/".. id) file.download('http://music.163.com/api/song/detail/?id='..id..'&ids=['..id..']',"/storage/emulated/0/灰太狼配置/音乐缓存/pic".. id) file.download(getMusicPictures(id),"/storage/emulated/0/灰太狼配置/音乐缓存/Pic2"..id) return success end) local status, result = coroutine.resume(co) if status and result then luajava.runOnUiThread(function() DownloadProgress:setVisibility(View.GONE) end) playMusic(id) else print("下载出现问题,无法播放音乐") end end) end end luajava.setInterface(mediaPlayer, 'setOnPreparedListener',--资源准备完毕监听 {onPrepared=function(media) isReady=true mediaTime=media:getDuration() media:start() setTime(mediaTime) luajava.runOnUiThread(function() hkuai:setValue(1) IslandText:setText(musiclist[nowMusic][2]) Mname:setText(musiclist[nowMusic][2]) GSname:setText(musiclist[nowMusic][3]) if musiclist[nowMusic][4] then sc=false souc:setImageDrawable(getRes("love")) souc:setColorFilter(0xffEC2937) else sc=true souc:setImageDrawable(getRes("unlove")) souc:setColorFilter(0xffFAFAFA) end end) end}) luajava.setInterface(mediaPlayer, 'setOnCompletionListener',--播放完毕监听 {onCompletion=function(media) 换一首()--问题 end}) function MaterialAlert(text) MaterialAlertDialog=MaterialAlertDialogBuilder(baseWindow:getContext()) :setTitle(项目名字) -- 设置标题 :setMessage(text) :setPositiveButton('确定') luajava.showAlert(MaterialAlertDialog) end BSZ=0 function 换一首() if BSZ==0 then--列表循环 下一首() elseif BSZ==1 then--随机播放 local randomnowMusic=math.random(1,#musiclist) local selectedNumber=musiclist[randomnowMusic] nowMusic=randomnowMusic 播放歌曲(selectedNumber[1]) elseif BSZ==2 then--单曲循环 播放歌曲(musiclist[nowMusic][1]) elseif BSZ==3 then--停止循环 luajava.newThread(function() 播放歌曲(musiclist[nowMusic][1]) gg.sleep(110) isPlaying=false mediaPlayer:pause() luajava.runOnUiThread(function() ztkq:setSpeed(-1) ztkq:playAnimation() end) end):start() end end function 播放设置() changan.controlWater(luajava.getIdView("LoopSetting"),200) if BSZ==0 then--随机播放 BSZ=BSZ+1 bfsz:setImageDrawable(getRes("repeatone")) elseif BSZ==1 then--单曲循环 BSZ=BSZ+1 bfsz:setImageDrawable(getRes("stoploop")) elseif BSZ==2 then--停止循环 BSZ=BSZ+1 bfsz:setImageDrawable(getRes("listloop")) elseif BSZ==3 then--列表循环 BSZ=0 bfsz:setImageDrawable(getRes("setPlay")) end end function 暂停() if #musiclist == 0 then MaterialAlert("您还没有收藏歌曲\n请搜索想听的歌曲添加到播放列表\n点击左侧爱心可以收藏,每次重新启动时只会保留收藏的歌曲") luajava.runOnUiThread(function() Page:setCurrentItem(#stab-2) end) return end if isPlaying then ztkq:setSpeed(-1)--暂停 ztkq:playAnimation() if isReady then mediaPlayer:pause() end isPlaying=false else if isReady then mediaPlayer:start() else nowMusic = 1 播放歌曲(musiclist[1][1]) end ztkq:setSpeed(1) ztkq:playAnimation() IslandText:setVisibility(View.VISIBLE) IslandText:setVisibility(View.VISIBLE) GSname:setVisibility(View.VISIBLE) IslandPic:setVisibility(View.VISIBLE) isPlaying=true end end function 下一首() if #musiclist == 0 then MaterialAlert("您还没有收藏歌曲\n请搜索想听的歌曲添加到播放列表\n点击左侧爱心可以收藏,每次重新启动时只会保留收藏的歌曲") luajava.runOnUiThread(function() Page:setCurrentItem(#stab-2) end) return end nowMusic=nowMusic + 1 if nowMusic > #musiclist then nowMusic=1 end ztkq:setSpeed(1) ztkq:playAnimation() IslandPic:setVisibility(View.VISIBLE) musicInfo=musiclist[nowMusic] 播放歌曲(musicInfo[1]) end function 上一首() if #musiclist == 0 then MaterialAlert("您还没有收藏歌曲\n请搜索想听的歌曲添加到播放列表\n点击左侧爱心可以收藏,每次重新启动时只会保留收藏的歌曲") luajava.runOnUiThread(function() Page:setCurrentItem(#stab-2) end) return end nowMusic=nowMusic - 1 if nowMusic < 1 then nowMusic=#musiclist end musicInfo=musiclist[nowMusic] 播放歌曲(musicInfo[1]) IslandPic:setVisibility(View.VISIBLE) end sc=true function 收藏() if isReady then if sc then sc=false musiclist[nowMusic][4]=true souc:setImageDrawable(getRes("love")) souc:setColorFilter(0xffEC2937) else sc=true musiclist[nowMusic][4]=false souc:setImageDrawable(getRes("unlove")) souc:setColorFilter(0xffFAFAFA) end 写入() end end function 刷新列表() playadapter=ui.BaseAdapter({ getCount = function() return #musiclist end, getItem = function(position) return musiclist[position + 1] end, getItemId = function(position) return position end, getView=function(position, convertView, parent) local SwitchView local info=playadapter:getItem(position) if info[4] then MTP=getRes("love") MTPC=0xffEC2937 else MTP=getRes("unlove") MTPC=0xff4B484F end if not convertView then SwitchView=luajava.loadlayout( { FrameLayout, layout_width="match_parent", layout_height="30dp", paddingLeft="5dp", paddingRight="5dp", { ImageView, id="Playlike", src=MTP, layout_gravity="center|left", ColorFilter=MTPC, layout_width="22dp", layout_height="22dp", }, { TextView, id="playname", layout_marginLeft="25dp", layout_marginRight="25dp", layout_width="match_parent", layout_height="wrap_content", layout_gravity="center", gravity="center", textColor="#27253A", }, { ImageView, id="songremove", src="/storage/emulated/0/灰太狼配置/heix", ColorFilter="#4B484F", layout_gravity="center|right", layout_width="18dp", layout_height="18dp", }, }) else SwitchView=convertView end Playlike:setOnClickListener(function() if info[4] then info[4]=false musiclist[position+1][4]=false 写入() 刷新列表() luajava.runOnUiThread(function() if nowMusic==position+1 then sc=true souc:setImageDrawable(getRes("unlove")) souc:setColorFilter(0xffFAFAFA) end end) else info[4]=true musiclist[position+1][4]=true 写入() 刷新列表() luajava.runOnUiThread(function() if nowMusic==position+1 then sc=false souc:setImageDrawable(getRes("love")) souc:setColorFilter(0xffEC2937) end end) end end) playname:setOnClickListener(function() 播放歌曲(info[1],info[2],info[3],info[4]) nowMusic=position+1 end) playname:setText(info[2]) songremove:setOnClickListener(function() luajava.startThread(function() if gg.alert('确定删除['..info[2]..']吗?','确定','点错了')==1 then table.remove(musiclist,position+1) 刷新列表() 写入() if nowMusic==position+1 then 下一首() end end end) end) return SwitchView end }) luajava.runOnUiThread(function() songlistview:setAdapter(playadapter) end) end songlist={ LinearLayout, orientation="vertical", layout_width="match_parent", layout_height="wrap_content", { ListView,--列表适配器 id="songlistview", layout_width='match_parent', layout_height='match_parent', dividerHeight=3, } } function 播放列表() dialogBuilder=MaterialAlertDialogBuilder(baseWindow:getContext()) -- 创建对话框构造器 :setTitle('待播放列表') -- 设置标题 :setView(luajava.loadlayout(songlist)) :setPositiveButton('确定') luajava.showAlert(dialogBuilder) 刷新列表() end 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 function 切换(x) x=x-1 luajava.runUiThread(function() 当前ui=x ViewPager:setCurrentItem(x) end) end function 隐藏() if 显2==true then return 0 end vibra:vibrate(6) luajava.runUiThread (function () if tonumber (tostring (ckou: getVisibility ())) == 8.0 then 显示 = 1 sf:setVisibility(View.VISIBLE) reme:setVisibility(View.VISIBLE) control2:setVisibility(View.GONE) mainLayoutParams.height = mubx mainLayoutParams.width = muby mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL window : updateViewLayout (floatWindow , mainLayoutParams) luajava.newThread(function() end):start() ckou:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(1400):playOn(ckou) YoYoImpl:with("SlideInDown"):duration(1000):playOn(floatWindow) floatWindow:setBackground(beij) else reme:setVisibility(View.GONE) sf:setVisibility(View.GONE) 显示=0 luajava.newThread(function() luajava.runUiThread(function() YoYoImpl:with("FadeOut"):duration(200):playOn(floatWindow) end) gg.sleep(210) luajava.runUiThread(function() YoYoImpl:with("FadeIn"):duration(200):playOn(floatWindow) control2:setVisibility(View.VISIBLE) mainLayoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度 mainLayoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度 ckou:setVisibility(View.GONE) mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE mainLayoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度 mainLayoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度 window : updateViewLayout (floatWindow , mainLayoutParams) floatWindow:setBackground(empty) end) end):start() end end) end 显2=false function 隐藏2() 显2=true ckou:setVisibility(View.GONE) control2:setVisibility(View.GONE) smallc:setVisibility(View.VISIBLE) end function 显示2() 显2=false mainLayoutParams.x=20 window:updateViewLayout(floatWindow, mainLayoutParams) if 显示==1 then ckou:setVisibility(View.VISIBLE) smallc:setVisibility(View.GONE) else control2:setVisibility(View.VISIBLE) smallc:setVisibility(View.GONE) 隐藏() end end function changan.setedit(name,txt) txt = tostring(txt) luajava.runUiThread(function() luajava.getIdValue(_ENV[name]):setText(txt) end) end function changan.getedit(name) --gg.alert(edit) edit = tostring(luajava.getIdValue(_ENV[name]):getText()) return edit end function changan.text(text,color,size,isjz) if not color then color="#161616" end if isjz then return luajava.loadlayout( { TextView, text=text, textColor=color, textSize=size, gravity="center", layout_height="wrap_content", layout_width="match_parent", autoSizeTextType="uniform", }) else return luajava.loadlayout({ TextView, text=text, textColor=color, textSize=size, layout_height="wrap_content", layout_width="match_parent", autoSizeTextType="uniform", }) end end checkbg1 = getRes("quarkcheckoff") checkbg2 = getRes("quarkcheckon") switchs={} function visi (tid , ttid) vibra:vibrate(4) local tview = luajava.getIdValue (tid) local ttview = luajava.getIdValue (ttid) if not tview then return 0 end if tonumber (tostring (tview : getVisibility ())) == 8.0 then tview : setVisibility (View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(boxes[tid]) changan.controlRotation9(boxpic[tid],0,90) else tview : setVisibility (View.GONE) changan.controlWater (_ENV [tid.."6"] , 200) changan.controlRotation9(boxpic[tid],90,0) end end 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(24,tmp3)--边框宽度和颜色 return jianbians end switches = {} function 语音(txt) string.toMusic(txt) end function 开关3(name,func1,func2,nid) localname = name 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] = "开" pcall(func1) 语音(localname.."开启成功!") changan.toast2s({"泪水UI",0xFF55AAFF},{localname.."开启成功!",0xff161616},0xFF55FFAA,0xaaffffff) 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) _ENV[name] = "关" pcall(func2) 语音(localname.."关闭成功!") changan.toast2s({"泪水UI",0xFF55AAFF},{localname.."关闭成功!",0xff161616},0xFF55FFAA,0xaaffffff) end end if localname=="音量键隐藏UI" then ylfunc=outfunc end return outfunc end end -- dp转px函数 local function dpToPx(dp) local resources = luajava.bindClass("android.content.res.Resources").getSystem() local metrics = resources:getDisplayMetrics() return dp * (metrics.densityDpi / 160) end -- 动画相关函数 import "android.view.animation.AlphaAnimation" import "android.view.animation.Animation" -- Toast 窗口参数设置函数 function changan.toastspar() local prm = luajava.new(WindowManager.LayoutParams) layoutParams1 = prm if (Build.VERSION.SDK_INT >= 26) then layoutParams1.type = prm.TYPE_APPLICATION_OVERLAY else layoutParams1.type = prm.TYPE_PHONE end layoutParams1.format = PixelFormat.RGBA_8888 layoutParams1.flags = prm.FLAG_NOT_FOCUSABLE | prm.FLAG_NOT_TOUCHABLE layoutParams1.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL layoutParams1.width = dpToPx(260) layoutParams1.height = dpToPx(70) layoutParams1.x = 0 layoutParams1.y = 0 return layoutParams1 end function changan.toastspar2() local prm = luajava.new(WindowManager.LayoutParams) layoutParams1 = prm if (Build.VERSION.SDK_INT >= 26) then layoutParams1.type = prm.TYPE_APPLICATION_OVERLAY else layoutParams1.type = prm.TYPE_PHONE end layoutParams1.format = PixelFormat.RGBA_8888 layoutParams1.flags = prm.FLAG_NOT_FOCUSABLE | prm.FLAG_NOT_TOUCHABLE layoutParams1.gravity = Gravity.BOTTOM | Gravity.RIGHT layoutParams1.width = prm.WRAP_CONTENT layoutParams1.height = prm.WRAP_CONTENT layoutParams1.x = dpToPx(16) layoutParams1.y = dpToPx(10) return layoutParams1 end -- 窗口管理器 window = context:getSystemService("window") -- 全局Toast容器(在invoke函数中初始化) _ENV['changan.toast'] = luajava.loadlayout({ FrameLayout, id = "toastlay", layout_height = "wrap_content", layout_width = "wrap_content", }) _ENV['changan.toast2'] = luajava.loadlayout({ LinearLayout, id = "toast2lay", orientation = 'vertical', layout_height = "wrap_content", layout_width = "wrap_content", }) -- 1. 初始化Toast窗口参数 changan.toastpar = changan.toastspar() changan.toastpar2 = changan.toastspar2() -- 2. 创建Toast容器视图 _ENV['changan.toast'] = luajava.loadlayout({ FrameLayout, id = "toastlay", layout_height = "wrap_content", layout_width = "wrap_content", }) _ENV['changan.toast2'] = luajava.loadlayout({ LinearLayout, id = "toast2lay", orientation = 'vertical', layout_height = "wrap_content", layout_width = "wrap_content", }) -- 3. 将Toast容器添加到窗口 local function invoke() window:addView(_ENV['changan.toast'], changan.toastpar) window:addView(_ENV['changan.toast2'], changan.toastpar2) end local runnable = luajava.getRunnable(invoke) local handler = luajava.getHandler() handler:post(runnable) function changan.toasts(title,neir,qiucolor,bgcolor) if qiucolor == nil then qiucolor=0xFF55FFAA end if bgcolor == nil then bgcolor=0xFFFFFEFE end if title[2] == nil then title[2]=0xff55AAFF end if neir[2] == nil then neir[2]=0xff00FFFF end local toastid="toast"..title[1]..string.randomUUID(true) _ENV[toastid] = luajava.loadlayout({ LinearLayout, visibility = "gone", layout_height = "70dp", layout_width = "260dp", orientation = 'vertical', gravity = 'center_horizontal', background = luajava.loadlayout({ GradientDrawable, color = bgcolor, cornerRadius = 15 }), { LinearLayout, layout_height = "wrap_content", layout_width="match_parent", { LinearLayout, background=luajava.loadlayout { GradientDrawable, color = qiucolor, cornerRadius = 360 }, layout_width = "20dp", layout_height = "20dp", layout_marginRight="8dp", layout_marginLeft="8dp", layout_marginTop="8dp", layout_marginBottom="8dp", }, { TextView, text = title[1], textColor=title[2], textSize = "15sp", layout_width = "match_parent", layout_height = "wrap_content", layout_marginTop="8dp", layout_marginBottom="8dp", } }, { LinearLayout, layout_width="match_parent", layout_height = "fill_parent", { View, layout_width="30dp", layout_height = "fill_parent", }, { TextView, text = neir[1], textSize = "13sp", textColor=neir[2], layout_width = "wrap_content", layout_height = "wrap_content", layout_gravity="center|left" }, } }) luajava.newThread(function() luajava.runUiThread(function() toastlay:addView(_ENV[toastid]) _ENV[toastid]:setVisibility(View.VISIBLE) _ENV[toastid]:measure(0, 0) local height = _ENV[toastid]:getMeasuredHeight() _ENV[toastid]:setTranslationY(-height) _ENV[toastid]:animate():translationY(0):setDuration(1000):start() end) gg.sleep(2000) luajava.runUiThread(function() _ENV[toastid]:animate():translationY(-_ENV[toastid]:getHeight()):setDuration(1000):withEndAction(function() local function invoke() toastlay:removeView(_ENV[toastid]) end luajava.post(invoke) end):start() end) end):start() end function changan.toast2s(title,neir,qiucolor,bgcolor) if qiucolor == nil then qiucolor=0xFF55FFAA end if bgcolor == nil then bgcolor=0xFFFFFEFE end if title[2] == nil then title[2]=0xff55AAFF end if neir[2] == nil then neir[2]=0xffffFFFF end local toast2id="toast2"..title[1]..string.randomUUID(true) _ENV[toast2id] = luajava.loadlayout({ LinearLayout, visibility = "gone", layout_height = "wrap_content", layout_width = "wrap_content", { LinearLayout, layout_height = "40dp", layout_width = "140dp", gravity = 'center', background = luajava.loadlayout({ GradientDrawable, color = bgcolor, cornerRadius = 20, }), layout_marginTop="5dp", layout_marginBottom="5dp", { LinearLayout, layout_height = "match_parent", layout_width="wrap_content", { LinearLayout, background=luajava.loadlayout { GradientDrawable, color = qiucolor, cornerRadius = 360, gravity = "bottom|end", }, layout_width = "15dp", layout_height = "15dp", layout_marginRight="8dp", layout_marginLeft="8dp", layout_marginTop="8dp", layout_marginBottom="8dp", layout_gravity="center", }, { LinearLayout, layout_width="fill_parent", layout_height = "match_parent", orientation = 'vertical', { TextView, text = title[1], textColor=title[2], textSize = "13sp", layout_width = "match_parent", layout_height = "wrap_content", layout_marginTop="5dp", layout_marginBottom="2dp", }, { TextView, text = neir[1], textSize = "10sp", textColor=neir[2], layout_width = "match_parent", layout_height = "wrap_content", }, }, } } }) luajava.newThread(function() luajava.runUiThread(function() toast2lay:addView(_ENV[toast2id]) _ENV[toast2id]:setVisibility(View.VISIBLE) _ENV[toast2id]:setAlpha(0) _ENV[toast2id]:animate():alpha(1):setDuration(1000):start() end) gg.sleep(2000) luajava.runUiThread(function() _ENV[toast2id]:animate() :alpha(0) :setDuration(1000) :withEndAction(function() local function invoke() toast2lay:removeView(_ENV[toast2id]) end luajava.post(invoke) end) :start() end) end):start() end function changan.switch(name,func1,func2,miaoshu) if not checkbg then checkbg = getShape2( 45, { switch颜色,switch颜色 }, 4,switch颜色) checkbg0 = getShape2( 45, { 0xff232323,0xff232323 }, 4,0x00ffffff) checkbga = getShape2( 45, { 0xffE6E6E6,0xffE6E6E6 }, 4,0xffE6E6E6) switchbg1 = getShape( 45, { 0xFF464646,0xFF464646 }, 4,0xFF464646) switchbg2 = luajava.loadlayout { GradientDrawable , color = "0xFF464646" , 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', } } if not miaoshu then rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "center_vertical", { LinearLayout, layout_width = 'fill_parent', layout_height = "40dp", gravity = "center_vertical", layout_marginLeft='2dp', layout_marginRight='2dp', layout_marginTop='2dp', layout_marginBottom='2dp', elevation='2dp', background=getVerticalBG({0x91282828,0x91282828},17,3,0x19FFFFFF),padding = { "0dp","0dp","6dp","0dp" }, { TextView, gravity = "top", text = name, textColor = "0xffffffff", textSize = "13sp", layout_weight = 1, layout_width = '80dp', layout_marginLeft = "10dp", layout_marginRight = "20dp", }, { 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] }} }) else rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "center_vertical", { LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "center_vertical", layout_marginLeft='2dp', layout_marginRight='2dp', layout_marginTop='2dp', layout_marginBottom='2dp', elevation='2dp', background = luajava.loadlayout { GradientDrawable , color = 按钮颜色 , cornerRadius = 35 } ,padding = { "0dp","0dp","6dp","0dp" } , {LinearLayout, orientation='vertical', layout_width='match_parent', layout_weight=1, layout_height='wrap_content', { TextView, gravity = "left", text = name, textColor = "#000000", textSize = "13sp", layout_weight = 1, layout_width = 'match_parent', layout_marginLeft = "10dp", layout_marginRight = "20dp", }, { TextView, gravity = "left", layout_height = "wrap_content", text = miaoshu, textSize = "11sp", layout_width = "match_parent", layout_weight = 1, textColor = "#A5A5A5", layout_marginLeft = "10dp", layout_marginRight = "20dp", }}, { 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] }} }) end return rest 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="0xffffffff" 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", layout_marginLeft='3dp', layout_marginRight='3dp', elevation='2dp', background=getVerticalBG({0x91282828,0x91282828},17,3,0x19FFFFFF), 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 function changan.lk(txt,func,txtc) if not txt then txt = "未设置" end if not txtc then txtc="0xFFDFDFDF" 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", layout_marginLeft='10dp', layout_marginRight='10dp', elevation='2dp', background=getVerticalBG({0x91282828,0x91282828},17,3,0x19FFFFFF), padding="10dp", onClick = function() changan.controlWater(buts[tid],300) luajava.newThread(func):start() end, {ImageView, src="/storage/emulated/0/林默/资源/opo19", layout_height="17dp", layout_width="17dp", layout_marginLeft='5dp', layout_marginRight='5dp', }, { TextView, --id = luajava.newId(tid), textColor = txtc, text = txt, textSize = "13sp", layout_height = "wrap_content", layout_width = "fill_parent", layout_weight=1, }, { TextView, --id = luajava.newId(tid), textColor = "#787878", text = "公告\n886", textSize = "13sp", layout_height = "wrap_content", layout_width = "fill_parent", layout_weight=1, }, }}) return buts[tid] end wyylog=luajava.loadlayout{ LinearLayout, layout_hight="match_parent", layout_width="match_parent", elevation="888dp", { luajava.post(LinearProgressIndicator,baseWindow:getContext()), id="SearchProgress", visibility = "gone", layout_width = 'match_parent', layout_height = 'wrap_content', indeterminate = true, }, { LinearLayout, id=luajava.newId("musicWindow"), orientation="vertical", layout_height="444dp", layout_width="match_parent", onTouch=hanshu, { LinearLayout, layout_hight="wrap_content", layout_width="match_parent", layout_margin="5dp", Elevation="3dp", background={GradientDrawable,color=0x89242424,cornerRadius=20}, { EditText, id=luajava.newId("搜索"), background={GradientDrawable,color=0x89242424,cornerRadius=20}, gravity="center", hint="请输入关键词", textSize="13sp", layout_weight="1", HintTextColor="0xffffffff", layout_width="match_parent", textColor="#201E1E", OnKeyListener={ onKey=function(v,keyCode,event) if (KeyEvent.KEYCODE_ENTER == keyCode and KeyEvent.ACTION_DOWN == event:getAction()) then thread=luajava.getThread(function() searchmusic() end) thread:start() return true; else return false; end end } }, { LinearLayout, layout_height="match_parent", layout_width="1dp", backgroundColor="#787878", }, { TextView, text="搜索", gravity="center", id=luajava.newId("stxt"), textSize="15sp", TextColor="#000000", layout_height="match_parent", layout_width="50dp", onClick=function() thread=luajava.getThread(function() searchmusic() end) thread:start() end }, }, { ListView, id="musiclistview", layout_width='match_parent', layout_height='match_parent', onTouch=hanshu, elevation="888dp", dividerHeight=3, }, }, } muby=655 mubx=655 beij=getVerticalBG({0x89242424,0x89242424},17,5,0x19FFFFFF) switch颜色=0xffffffff function huiz() end 悬浮窗图标="https://pan.szfx.top/view.php/b821549b9cc0668ae0f4ba96f472430d.png" function visi(tid , ttid ) 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 ) ttview : setBackground(luajava.getBitmapDrawable("/storage/emulated/0/灰太狼配置/sj" ) ) else tview : setVisibility(View.GONE ) ttview : setBackground(luajava.getBitmapDrawable("/storage/emulated/0/灰太狼配置/hsj" ) ) end end function changan.box(views ) local tid = "box"..guid() 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" , background = getVerticalBG({0x89242424,0x89242424},17,5,0x19FFFFFF), } 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() changan.controlWater(_ENV[t1id],200) visi(tid , ttid ) end , { TextView , text = views [ 1 ] , textSize = "13sp" , layout_marginLeft = "15dp" , layout_width = "100dp" , textColor = "#ffffff" , gravity = "left" , }, { ImageView , gravity = "center_vertical" , id = luajava.newId(ttid ) , background = "/storage/emulated/0/灰太狼配置/hsj" , layout_width = "20dp" , layout_height = "20dp" , layout_marginTop = "5dp" , } , } else balert("changan.box第一个参数必须是string" ) os.exit() end radios = { LinearLayout , layout_marginLeft = "0dp" , layout_marginRight = "0dp" , orientation = "vertical" , visibility = "gone" , id = luajava.newId(tid ) , padding = "0dp" , layout_width = 'fill_parent' , } for i = 2 , # views do radios [ # radios + 1 ] = views [ i ] end firadio [ # firadio + 1 ] = radios _ENV[t1id]=luajava.loadlayout(firadio ) return _ENV[t1id] end function changan.text(txt,color,size) if not txt then txt = "未设置文字" end if not color then color = "#d9d9d9" end if not size then size = "14sp" end return luajava.loadlayout( { TextView, text = txt, textSize = size, textColor = color, gravity="center", layout_width = "fill_parent", --padding={"10dp","0dp","10dp","0dp",}, }) end swits={} function changan.edit (name , hint) if not hint then local hint = "" end _ENV [name] = name..guid () if not name then name = "点击输入文字" end rest = luajava.loadlayout ( { LinearLayout , layout_width = 'fill_parent' , { LinearLayout , layout_width = 'fill_parent' , layout_height = "30dp" , layout_marginTop = "5dp" , layout_marginBottom = "5dp" , layout_marginLeft = "0dp" , layout_marginRight = "0dp" , gravity = "center_vertical" , background = getVerticalBG({0x89242424,0x89242424},17,5,0x19FFFFFF), { EditText , gravity = "top" , hint = hint , textSize = "15sp", layout_height = "45dp" , layout_marginBottom = "-2dp", id = luajava.newId (_ENV [name]) , layout_width = 'fill' , layout_marginLeft = "10dp" , layout_marginRight = "10dp" , } } }) 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 function changan.check (cklist) rest = { LinearLayout , layout_width = 'match_parent' , layout_height = "wrap_content" , layout_marginTop = "10dp" , gravity = "top" , orientation = "vertical" , } if type (cklist [1]) == "string" then rest [# rest + 1] = { TextView , gravity = "left" , text = cklist [1] , textSize = "16sp" , textColor = "#000000" , layout_width = 'wrap_content' , layout_height = 'wrap_content' , layout_marginLeft = "4dp" , layout_marginRight = "5dp" , layout_marginTop = "0dp" , layout_marginBottom = "0dp" , } end for i = 2 , # cklist do local name = cklist [i] [1] local func1 = cklist [i] [2] local func2 = cklist [i] [3] local nid = cklist [i] [4] if type (func1) == "table" then os.exit () end if not name then name = "未设置" end nid = name..guid () local func = 开关4 (nid , func1 , func2 , nid) 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) luajava.newThread (function () func () end ) : start () end , { ImageView , id = luajava.newId (nid) , layout_width = '30dp' , layout_height = "30dp" , layout_marginLeft = "10dp" , layout_marginRight = "10dp" , background = "/storage/emulated/0/灰太狼配置/quarkcheckoff" , } , { TextView , gravity = "top" , text = name , textColor = "#000000" , layout_width = 'wrap_content' , layout_height = 'wrap_content' , layout_marginLeft = "4dp" , layout_marginRight = "5dp" , } }) rest [# rest + 1] = _ENV [tid] end return luajava.loadlayout (rest) end function 开关4(name , func1 , func2 , nid) _ENV [name] = "关" if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type (func1) == "function" then return function () vibra:vibrate(4) namers = _ENV [name] if namers ~= "开" then luajava.runUiThread (function () luajava.getIdValue (nid) : setBackground (luajava.getBitmapDrawable ("/storage/emulated/0/灰太狼配置/quarkcheckon")) end ) _ENV [name] = "开" pcall (func1) else luajava.runUiThread (function () luajava.getIdValue (nid) : setBackground (luajava.getBitmapDrawable ("/storage/emulated/0/灰太狼配置/quarkcheckoff")) end ) _ENV [name] = "关" pcall (func2) end end end end -------------------配置------------------ 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 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) else gg.toast(":搜索0条数据.修改失败", false) return false end else gg.toast("搜索0条数据.修改失败") return false end end function search(ss,lx,nc,dz1,dz2) gg.setVisible(false) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,536870912,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("搜索到 "..sl.." 个结果") gg.clearResults() else gg.toast("未搜索到结果") end else gg.toast("无搜索值类型") end else gg.toast("无需搜索值") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function TL_TL(a,b,c,d,e) local time = os.clock() kv = {} ks={} if a == "libil2cpp.so" then local aa = gg.getRangesList(a)[2].start if aa == nil then toMusic("模块未加载\n或选错游戏进程") return end for i, k in ipairs(b) do local v = aa + k kv[#kv+1] = {address = v, flags = c, value = d, freeze = true} ks[#ks+1] = {address = v+4, flags = c, value = "~A8 RET", freeze = true} end else local aa = gg.getRangesList(a) if aa[1] == nil then toMusic("模块未加载\n或选错游戏进程") end local l = gg.getRangesList(a)[1].start for i, k in ipairs (b) do local v = l + k kv[#kv+1] = {address = v, flags = c, value = d, freeze = true} end end gg.addListItems(kv) gg.addListItems(ks) gg.toast(e.."开启成功\n共耗时"..os.clock() - time.."秒\n共修改"..#b.."条值") end function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end ms = { } function setvalue ( add , value , falgs , dj ) local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs if dj == true then WY [ 1 ].freeze = true gg.addListItems ( WY ) else gg.setValues ( WY ) end end function ms.ss ( num , ty , nc ) local GGNUMBER_1 = num local GGNUMBER_2 = ty local GGNUMBER_3 = false local GGNUMBER_4 = gg.SIGN_EQUAL local GGNUMBER_5 = 0x3000000000 local GGNUMBER_6 = 0xFFFFFFFFFF local GGNUMBER_7 = 0 gg.clearResults ( ) gg.setRanges ( nc ) gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 ) Result = gg.getResults ( gg.getResultCount ( ) ) end function ms.py ( num , py , ty ) if ( Result and # Result ~= 0 ) then t = { } for i , v in ipairs ( Result ) do t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty end t = gg.getValues ( t ) for i , v in ipairs ( t ) do if v.value ~= num then Result [ i ] = nil end end local MS = { } for i , v in pairs ( Result ) do MS [ # MS + 1 ] = v end Result = MS end end function ms.bc ( ) data = { } if Result == nil or # Result == 0 then toMusic ( "开启失败" ) else for i , v in pairs ( Result ) do data [ # data + 1 ] = v.address end end Result = nil end function ms.edit ( nn , off , ty , dj ) if ( Result ) then ms.bc ( ) end if # data > 0 then for i , v in ipairs ( data ) do setvalue ( v + off , nn , ty , dj or false ) end gg.toast ( Name.."成功" ) end end function editData(qmnb,qmxg)gg.setVisible(false)gg.clearResults()qmnbv=qmnb[3]["value"]or qmnb[3][1]qmnbt=qmnb[3]["type"]or qmnb[3][2]qmnbn=qmnb[2]["name"]or qmnb[2][1]gg.setRanges(qmnb[1]["memory"]or qmnb[1][1])gg.searchNumber(qmnbv,qmnbt)gg.refineNumber(qmnbv,qmnbt)sz=gg.getResultCount()if sz==0 then gg.toast(qmnbn.."开启失败")else sl=gg.getResults(999999)for i=1,sz do pdsz=true for v=4,#qmnb do if pdsz==true then pysz={{}}pysz[1].address=sl[i].address+(qmnb[v]["offset"]or qmnb[v][2])pysz[1].flags=qmnb[v]["type"]or qmnb[v][3]szpy=gg.getValues(pysz)tzszpd=tostring(qmnb[v]["lv"]or qmnb[v][1]):gsub(",","")pyszpd=tostring(szpy[1].value):gsub(",","")if tzszpd==pyszpd then pdjg=true pdsz=true else pdjg=false pdsz=false end end end if pdjg==true then szpy=sl[i].address for x=1,#qmxg do xgsz=qmxg[x]["value"]or qmxg[x][1]xgpy=szpy+(qmxg[x]["offset"]or qmxg[x][2])xglx=qmxg[x]["type"]or qmxg[x][3]xgdj=qmxg[x]["freeze"]or qmxg[x][4]xg={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xg[1].freeze=xgdj gg.addListItems(xg)else gg.setValues(xg)end end xgjg=true end end if xgjg==true then gg.toast(qmnbn.."开启成功")else gg.toast(qmnbn.."开启失败")end end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) if gg.searchNumber(qmnb[3]["value"],qmnb[3]["type"],false,gg.SIGN_EQUAL,0,-1)~=true then gg.searchAddress(qmnb[3]["value"],-1,qmnb[3]["type"]) end if gg.getResultCount()==0 then gg.toast(qmnb[2]["name"].."开启失败")return end szxx=gg.getResults(gg.getResultCount()) szpd={} a=0 for i=4,#qmnb do for s=1,#szxx do if szpd[s]~="false" then if gg.getValues({{address=szxx[s].address+qmnb[i]["offset"],flags=qmnb[i]["type"]}})[1].value+0~=qmnb[i]["lv"]then szpd[s]="false" a=a+1 end end end end if a==#szxx then gg.toast(qmnb[2]["name"].."开启失败")return end b=0 t={} for x=1,#qmxg do if qmxg[x]["freeze"]==true then a=1 end for i=1,#szxx do if szpd[i]==nil then b=b+1 table.insert(t,{address=szxx[i].address+qmxg[x]["offset"],flags=qmxg[x]["type"],freeze=qmxg[x]["freeze"],value=qmxg[x]["value"]}) end end end gg.setValues(t) gg.addListItems(t) gg.clearResults() if a~=1 then gg.clearList()else a=nil end gg.toast(qmnb[2]["name"].."开启成功,共修改了"..b.."条数据") end qmnb = function(daarr) local array = {} for i = 1, #daarr["搜索数组"] do local data = {["lv"] =daarr["搜索数组"][i][1], ["offset"] = daarr["搜索数组"][i][2], ["type"] = daarr["搜索类型"]} table.insert(array, i, data) end local isok, data = app.memorysearch(daarr["搜索内存"], array) if isok then for i = 1, #data do for x = 1, #daarr["修改数组"] do app.memorywrite(data[i] + daarr["修改数组"][x][2], daarr["搜索类型"], daarr["修改数组"][x][1]) end end gg.toast(daarr["功能名称"] .. "共修改" .. #data * #daarr["修改数组"] .. "条数据") else gg.toast(daarr["功能名称"] .. "开启失败") end end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function SOGSPY_ST(HDZ,DYZ) if HDZ >= DYZ then py=string.format("0x%X",HDZ-DYZ) return tostring(string.format("-0x%X",py)) else py=string.format("0x%X",DYZ-HDZ) return tostring(string.format("0x%X",py)) end end function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = { [true] = 32, [false] = 4 } if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({ { address = addr, flags = va[x64] } }) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF else -- addr[1].value = addr[1].value & 0xFFFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) if not addr then gg.toast('修改失败, 可能是模块不存在') return end local Table1 = { {}, {} } for k, v in ipairs(Table) do local value = { address = addr + v[3], value = v[1], flags = v[2], freeze = v[4] } if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改" .. #Table .. "个值") end function SO_PT(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[2]==nil then toMusic("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else gg.setValues({{address=SOMOD[2].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+4,flags=TYPE,value="~A8 RET"}}) end end --[[ 解析成功! 缺少0条值 作者为A 共解析出540条值 以下为解析的内容 ]] --作者QQ:945255514 local SO = {} SO['新手'] = 0x25a024c SO['封号'] = 0x22a7a88 SO['作弊1'] = 0x233155c SO['作弊2'] = 0x23314b0 SO['作弊3'] = 0x25623d4 SO['作弊4'] = 0x256246c SO['作弊5'] = 0x25637b0 SO['作弊6'] = 0x256a170 SO['作弊7'] = 0x256a298 SO['作弊8'] = 0x256a32c SO['作弊9'] = 0x256a3c0 SO['作弊10'] = 0x256a454 SO['作弊11'] = 0x256a4e8 SO['作弊12'] = 0x256a57c SO['作弊13'] = 0x25df1c0 SO['作弊14'] = 0x25df2c4 SO['作弊15'] = 0x25df3a4 SO['作弊16'] = 0x13450c4 SO['行为1'] = 0x256a4e8 SO['行为2'] = 0x256a57c SO['行为3'] = 0x256a32c SO['行为4'] = 0x25637b0 SO['行为5'] = 0x256a204 SO['行为6'] = 0x256a204 SO['行为7'] = 0x233155c SO['行为8'] = 0x22045cc SO['行为9'] = 0x25df3a4 SO['行为10'] = 0x25df2c4 SO['行为11'] = 0x255d15c SO['行为12'] = 0x24b26d0 SO['行为13'] = 0x25df1c0 SO['行为14'] = 0x25dec10 SO['行为15'] = 0x2330e18 SO['行为16'] = 0x2331338 SO['行为17'] = 0x23314b0 SO['行为18'] = 0x27b7c80 SO['行为19'] = 0x1358880 SO['行为20'] = 0x1f23498 SO['行为21'] = 0x1f25430 SO['行为22'] = 0x1376b04 SO['行为23'] = 0x1f27188 SO['行为24'] = 0x1f2dfb4 SO['行为25'] = 0x1f2e060 SO['行为26'] = 0x3b79740 SO['行为27'] = 0x25623d4 SO['行为28'] = 0x256a298 SO['行为29'] = 0x256a3c0 SO['行为30'] = 0x256a454 SO['行为31'] = 0x1f2dc34 SO['行为32'] = 0x1f2dce0 SO['行为33'] = 0x1f2dd8c SO['行为34'] = 0x1f2de30 SO['行为35'] = 0x1f2e060 SO['行为36'] = 0x1f2dc34 SO['货币检测'] = 0x13450c4 SO['防举报1'] = 0x1b59f6c SO['防举报2'] = 0x1b59e54 SO['防举报3'] = 0x207b868 SO['防举报4'] = 0x27bb774 SO['人物'] = 0x2598dd8 SO['滑板'] = 0x259ab50 SO['背饰'] = 0x25bd044 SO['背饰保存'] = 0x25bd124 SO['像框'] = 0x2608654 SO['装扮'] = 0x258d460 SO['技能'] = 0x254b150 SO['技能勾选'] = 0x254b414 SO['名称'] = 0x13da8d0 SO['获取十倍'] = 0x2562cf0 SO['解锁十倍'] = 0x1082504 SO['内购'] = 0x24e7c58 SO['内购成功'] = 0x24f4040 SO['领奖'] = 0x25f1800 SO['十抽'] = 0x26af8d4 SO['宝物备份'] = 0x26ad4ac SO['奖励替换'] = 0x2607ec4 SO['人物奖励'] = 0x2608074 SO['滑板奖励'] = 0x2608224 SO['背饰奖励'] = 0x2608584 SO['像框奖励'] = 0x2608654 SO['赛事'] = 0x283df0c SO['备份1'] = 0x2559fec SO['备份2'] = 0x25c99c8 SO['备份3'] = 0x2559fec SO['备份4'] = 0x1f75208 SO['双倍'] = 0x25a6d28 SO['微博'] = 0x15ed684 SO['金币'] = 0x2586bb8 SO['钥匙'] = 0x2586ef8 SO['紫币'] = 0x25f37a0 SO['宝物钥匙'] = 0x25c26bc SO['开发者'] = 0x255ebdc SO['抓娃娃'] = 0x25633e4 SO['重生'] = 0x23235b0 SO['邮箱'] = 0x2666304 SO['炫跑卡'] = 0x25be8e4 SO['历史分数1'] = 0x2587404 SO['历史分数2'] = 0x258761c SO['历史排名'] = 0x25b5c94 SO['等级'] = 0x258a3e8 SO['全服'] = 0x27f4abc SO['省标'] = 0x27f4b34 SO['地区'] = 0x27f4bac SO['隐藏1'] = 0x23cfd98 SO['隐藏2'] = 0x255d15c SO['隐藏3'] = 0x23d0c2c SO['隐藏4'] = 0x25b1ba0 SO['隐藏5'] = 0x1b564ac SO['防止卡屏1'] = 0x27b7b9c SO['防止卡屏2'] = 0x27b7ab4 SO['受到攻击'] = 0x2461580 SO['攻击拾取'] = 0x245bc4c SO['局内金币'] = 0x253c944 SO['获取能量'] = 0x245b1ec SO['获取能量2'] = 0x2456ac8 SO['跳跃'] = 0x2541b74 SO['下滑'] = 0x25420d8 SO['滑板跳高'] = 0x1053d90 SO['滑板滑翔'] = 0x105413c SO['滑板瞬移'] = 0x105428c SO['无尽装死'] = 0x105d3b4 SO['无限跳跃'] = 0x207ebe8 SO['金币消失'] = 0x20c2924 SO['无尽死亡'] = 0x1066100 SO['道具图标'] = 0x245a0d8 SO['道具图标2'] = 0x245a168 SO['反弹道具1'] = 0x2491630 SO['反弹道具2'] = 0x2491718 SO['释放能量'] = 0x245b368 SO['释放'] = 0x245b474 SO['无视道具1'] = 0x24928f4 SO['无视道具2'] = 0x2492e0c SO['无视障碍'] = 0x243f4ac SO['无视侧撞'] = 0x243ffc0 SO['开局道具'] = 0x2586458 SO['能量穿透'] = 0x24564f4 SO['忙碌状态'] = 0x245a660 SO['无限能量'] = 0x2459f6c SO['Buff模式'] = 0x2460994 SO['派对聚能'] = 0x27c41d8 SO['得到分数'] = 0x253e598 SO['结束游戏'] = 0x27b7ab4 SO['锁定人机'] = 0x27baafc SO['派对新手'] = 0x255ffcc SO['派对省份'] = 0x26f3c0c SO['派对省排'] = 0x26f3b98 SO['派对全服'] = 0x26f3b24 SO['滑板消失'] = 0x2441e38 SO['三倍金币'] = 0x2412498 SO['得分倍增'] = 0x258b640 SO['宝物等级'] = 0x26a9398 SO['段位'] = 0x27f8058 SO['星数'] = 0x2803204 SO['道具满级'] = 0x1eaaecc SO['道具等级'] = 0x1eaad2c SO['退出登录'] = 0x2566c54 SO['超级跑者'] = 0x25ee7cc SO['使用技能'] = 0x1dcc034 SO['观战对手'] = 0x208a3d4 SO['替换人物'] = 0x1dca508 SO['替换滑板'] = 0x1dcb5dc SO['替换背饰'] = 0x1dccac8 SO['替换装扮'] = 0x1dcad94 SO['点击表情'] = 0x1edb1e8 SO['宝抽次数'] = 0x25c3560 SO['铁轨金币'] = 0x20c2924 SO['房间防踢'] = 0x244c570 SO['时间'] = 0x207c054 SO['异常弹窗'] = 0x24b2408 SO['HFX目标'] = 0x243b988 SO['HP目标'] = 0x2491718 SO['HP使用人'] = 0x2491630 SO['PVP定人'] = 0x27baafc SO['全宝'] = 0x26b1028 SO['半宝'] = 0x26b1ab0 SO['强制下线'] = 0x23bbb84 SO['时间检测'] = 0x256a170 SO['行为弹窗'] = 0x24b26d0 SO['升级金币'] = 0x26a9874 SO['升级材料'] = 0x26a96e4 SO['道具无限时长'] = 0x25fd794 SO['人物购买按钮'] = 0x1db8cf4 SO['人物购买成功'] = 0x1dbde64 SO['滑板购买按钮'] = 0x1dd5ec8 SO['屏蔽时间检1'] = 0x27f8eb8 SO['屏蔽时间检2'] = 0x27f8e3c SO['屏蔽时间检3'] = 0x27f896c SO['屏蔽时间检4'] = 0x27f896c SO['屏蔽时间检5'] = 0x27f881c SO['屏蔽时间检6'] = 0x27f8738 SO['屏蔽时间检7'] = 0x27f8738 SO['屏蔽时间检8'] = 0x256a170 SO['屏蔽时间检9'] = 0x27f83e8 SO['屏蔽时间检10'] = 0xe42be0 SO['一分40秒1'] = 0x1b564ac SO['一分40秒2'] = 0x1b564ac SO['一分40秒3'] = 0x27f8e3c SO['一分40秒4'] = 0x27f881c SO['一分40秒5'] = 0x2803818 SO['一分40秒6'] = 0x27f8738 SO['一分40秒7'] = 0x256a170 SO['一分40秒8'] = 0x1b59f6c SO['一分40秒9'] = 0x1b59e54 SO['一分40秒10'] = 0x27bb774 SO['表情退出'] = 0x284e8cc SO['无视敏感词'] = 0x280027c SO['分数全服'] = 0x2779ca8 SO['分数全省'] = 0x2779dac SO['改字复活'] = 0x284e9f0 SO['好友踢人'] = 0x282ca38 SO['派对房间1'] = 0x1b059c8 SO['派对房间2'] = 0x2730b64 SO['宝藏等级'] = 0x26a9398 SO['结算检测1'] = 0x27f881c SO['结算检测2'] = 0x256201c SO['结算检测3'] = 0x256a170 SO['结算检测4'] = 0x1b564ac SO['灵魂出窍'] = 0x13e3e90 SO['玩家离线'] = 0x1b58df0 SO['断开连接1'] = 0x277d7b0 SO['断开连接2'] = 0x1a29c54 SO['服务器1'] = 0x256201c SO['服务器2'] = 0x2569a50 SO['服务器3'] = 0x2569b00 SO['服务器4'] = 0xf8fd0c SO['API检值'] = 0xf52588 SO['PVP获胜者'] = 0x26f6f4c SO['离线形式'] = 0x1b564ac SO['胜利时间'] = 0x27f8450 SO['能量消失'] = 0x2457700 SO['新时刻'] = 0x27f881c SO['离线模式'] = 0x1b564ac SO['获取服务器'] = 0x256201c SO['最佳时间'] = 0x2803818 SO['作弊时间'] = 0x256a170 SO['自定义分数'] = 0x253e598 SO['倍数自定义'] = 0x258b640 SO['金币分数'] = 0x2587ae8 SO['踢人'] = 0x282ca38 SO['分数赛过检'] = 0x253e8fc SO['表情退出'] = 0x284e8cc SO['按钮复制房间'] = 0x1eaa564 SO['无视敏感词'] = 0x27ffd6c SO['房间防踢1'] = 0x2483864 SO['分数全服'] = 0x2779ca8 SO['分数全省'] = 0x2779dac SO['改字复活'] = 0x284e9f0 SO['好友踢人'] = 0x282ca38 SO['派对房间1'] = 0x1b059c8 SO['派对房间2'] = 0x2730b64 SO['人物速度'] = 0x207b9e0 SO['滑板时长'] = 0x2442390 SO['宝藏等级'] = 0x26a9398 SO['目标地图1'] = 0x20284a8 SO['目标地图2'] = 0x2029428 SO['目标路线'] = 0x1b05a50 SO['结算检测1'] = 0x27f881c SO['结算检测2'] = 0x256201c SO['结算检测3'] = 0x256a170 SO['结算检测4'] = 0x1b564ac SO['结算退出'] = 0x13f4328 SO['退出界面'] = 0x13f2570 SO['灵魂出窍'] = 0x13e3e90 SO['玩家离线'] = 0x1b58df0 SO['断开连接1'] = 0x277d7b0 SO['断开连接2'] = 0x1a29c54 SO['服务器1'] = 0x256201c SO['服务器2'] = 0x2569a50 SO['服务器3'] = 0x2569b00 SO['服务器4'] = 0xf8fd0c SO['人物全显'] = 0x1cd3ad4 SO['滑板全显'] = 0x1cd3fcc SO['API检值'] = 0xf52588 SO['拖尾'] = 0x207d858 SO['弹窗'] = 0x1413208 SO['PVP获胜者'] = 0x26f6f4c SO['离线形式'] = 0x1b564ac SO['胜利时间'] = 0x27f8450 SO['能量吸附'] = 0x24564f4 SO['能量吸附2'] = 0x24574b4 SO['撑杆'] = 0x106400c SO['能量消失'] = 0x2457700 SO['更新时刻'] = 0x3a123e8 SO['更新程序'] = 0x1be4424 SO['获取奖励'] = 0x14a0080 SO['滑板提速'] = 0x2440d20 SO['翻滚动作'] = 0x207f3e0 SO['翻滚更新'] = 0x208afc0 SO['三倍金币'] = 0x2412498 SO['星星数量'] = 0x2803204 SO['等级检测'] = 0x256a910 SO['硬币检测'] = 0x25623d4 SO['宝物钥匙检测'] = 0x256a3c0 SO['宝抽次数'] = 0x25c3560 SO['铁轨金币'] = 0x20c2924 SO['房间防踢'] = 0x244c570 SO['派对聚能'] = 0x27c41d8 SO['得到分数'] = 0x253e598 SO['结束游戏'] = 0x27b7ab4 SO['锁定人机'] = 0x27baafc SO['派对新手'] = 0x255ffcc SO['得分倍增'] = 0x258b640 SO['宝物等级'] = 0x26a9398 SO['段位'] = 0x27f8058 SO['星数'] = 0x2803204 SO['道具满级'] = 0x1eaaecc SO['道具等级'] = 0x1eaad2c SO['退出登录'] = 0x2566c54 SO['超级跑者'] = 0x25ee7cc SO['使用技能'] = 0x1dcc034 SO['观战对手'] = 0x208a3d4 SO['宝抽次数'] = 0x25c3560 SO['铁轨金币'] = 0x20c2924 SO['秒结算'] = 0x27b7a4c SO['结算页面'] = 0x13f4328 SO['轨道位置'] = 0x207cf80 SO['充满能量'] = 0x27f8450 SO['竞赛滑板'] = 0x207cf80 SO['减速带'] = 0x2455860 SO['加速带'] = 0x24546cc SO['单次抽取广告'] = 0x26b1800 SO['金币左道'] = 0x253d0a0 SO['金币右道'] = 0x253d318 SO['金币中道'] = 0x253d1dc SO['倒计时'] = 0x1b566b0 SO['单人道具赛'] = 0x1b568e8 SO['双人道具赛'] = 0x1b56534 SO['加速带失效'] = 0x2444660 SO['防止断网'] = 0x10687dc SO['分数赛检测'] = 0x24b26d0 SO['派对房间1'] = 0x1b059c8 SO['派对房间2'] = 0x2730b64 SO['宝藏等级'] = 0x26a9398 SO['结算检测1'] = 0x27f881c SO['结算检测2'] = 0x256201c SO['结算检测3'] = 0x256a170 SO['结算检测4'] = 0x1b564ac SO['灵魂出窍'] = 0x13e3e90 SO['玩家离线'] = 0x1b58df0 SO['断开连接1'] = 0x277d7b0 SO['断开连接2'] = 0x1a29c54 SO['服务器1'] = 0x256201c SO['服务器2'] = 0x2569a50 SO['服务器3'] = 0x2569b00 SO['服务器4'] = 0xf8fd0c SO['API检值'] = 0xf52588 SO['PVP获胜者'] = 0x26f6f4c SO['离线形式'] = 0x1b564ac SO['胜利时间'] = 0x27f8450 SO['能量消失'] = 0x2457700 SO['新时刻'] = 0x27f881c SO['离线模式'] = 0x1b564ac SO['获取服务器'] = 0x256201c SO['最佳时间'] = 0x2803818 SO['作弊时间'] = 0x256a170 SO['自定义分数'] = 0x253e598 SO['倍数自定义'] = 0x258b640 SO['金币分数'] = 0x2587ae8 SO['踢人'] = 0x282ca38 SO['按钮复制房间'] = 0x1eaa564 SO['派对房间1'] = 0x1b059c8 SO['派对房间2'] = 0x2730b64 SO['人物速度'] = 0x207b9e0 SO['滑板时长'] = 0x2442390 SO['宝藏等级'] = 0x26a9398 SO['目标地图1'] = 0x20284a8 SO['目标地图2'] = 0x2029428 SO['目标路线'] = 0x1b05a50 SO['结算检测1'] = 0x27f881c SO['结算检测2'] = 0x256201c SO['结算检测3'] = 0x256a170 SO['结算检测4'] = 0x1b564ac SO['结算退出'] = 0x13f4328 SO['退出界面'] = 0x13f2570 SO['灵魂出窍'] = 0x13e3e90 SO['玩家离线'] = 0x1b58df0 SO['断开连接1'] = 0x277d7b0 SO['断开连接2'] = 0x1a29c54 SO['服务器1'] = 0x256201c SO['服务器2'] = 0x2569a50 SO['服务器3'] = 0x2569b00 SO['服务器4'] = 0xf8fd0c SO['人物全显'] = 0x1cd3ad4 SO['滑板全显'] = 0x1cd3fcc SO['API检值'] = 0xf52588 SO['拖尾'] = 0x207d858 SO['弹窗'] = 0x1413208 SO['PVP获胜者'] = 0x26f6f4c SO['离线形式'] = 0x1b564ac SO['胜利时间'] = 0x27f8450 SO['能量吸附'] = 0x24564f4 SO['能量吸附2'] = 0x24574b4 SO['撑杆'] = 0x106400c SO['能量消失'] = 0x2457700 SO['更新时刻'] = 0x3a123e8 SO['更新程序'] = 0x1be4424 SO['获取奖励'] = 0x14a0080 SO['滑板提速'] = 0x2440d20 SO['翻滚动作'] = 0x207f3e0 SO['翻滚更新'] = 0x208afc0 SO['三倍金币'] = 0x2412498 SO['星星数量'] = 0x2803204 SO['等级检测'] = 0x256a910 SO['硬币检测'] = 0x25623d4 SO['宝物钥匙检测'] = 0x256a3c0 SO['宝抽次数'] = 0x25c3560 SO['铁轨金币'] = 0x20c2924 SO['房间防踢'] = 0x244c570 SO['派对聚能'] = 0x27c41d8 SO['得到分数'] = 0x253e598 SO['结束游戏'] = 0x27b7ab4 SO['锁定人机'] = 0x27baafc SO['派对新手'] = 0x255ffcc SO['得分倍增'] = 0x258b640 SO['宝物等级'] = 0x26a9398 SO['段位'] = 0x27f8058 SO['星数'] = 0x2803204 SO['道具满级'] = 0x1eaaecc SO['道具等级'] = 0x1eaad2c SO['退出登录'] = 0x2566c54 SO['超级跑者'] = 0x25ee7cc SO['使用技能'] = 0x1dcc034 SO['观战对手'] = 0x208a3d4 SO['宝抽次数'] = 0x25c3560 SO['铁轨金币'] = 0x20c2924 SO['秒结算'] = 0x27b7a4c SO['结算页面'] = 0x13f4328 SO['轨道位置'] = 0x207cf80 SO['充满能量'] = 0x27f8450 SO['竞赛滑板'] = 0x207cf80 SO['减速带'] = 0x2455860 SO['加速带'] = 0x24546cc SO['单次抽取广告'] = 0x26b1800 SO['金币左道'] = 0x253d0a0 SO['金币右道'] = 0x253d318 SO['金币中道'] = 0x253d1dc SO['倒计时'] = 0x1b566b0 SO['单人道具赛'] = 0x1b568e8 SO['双人道具赛'] = 0x1b56534 SO['加速带失效'] = 0x2444660 SO['防止断网'] = 0x10687dc SO['分数赛检测'] = 0x24b26d0 SO['派对房间1'] = 0x1b059c8 SO['派对房间2'] = 0x2730b64 SO['宝藏等级'] = 0x26a9398 SO['结算检测1'] = 0x27f881c SO['结算检测2'] = 0x256201c SO['结算检测3'] = 0x256a170 SO['结算检测4'] = 0x1b564ac SO['灵魂出窍'] = 0x13e3e90 SO['玩家离线'] = 0x1b58df0 SO['断开连接1'] = 0x277d7b0 SO['断开连接2'] = 0x1a29c54 SO['服务器1'] = 0x256201c SO['服务器2'] = 0x2569a50 SO['服务器3'] = 0x2569b00 SO['服务器4'] = 0xf8fd0c SO['API检值'] = 0xf52588 SO['PVP获胜者'] = 0x26f6f4c SO['离线形式'] = 0x1b564ac SO['胜利时间'] = 0x27f8450 SO['能量消失'] = 0x2457700 SO['新时刻'] = 0x27f881c SO['离线模式'] = 0x1b564ac SO['获取服务器'] = 0x256201c SO['最佳时间'] = 0x2803818 SO['作弊时间'] = 0x256a170 SO['自定义分数'] = 0x253e598 SO['倍数自定义'] = 0x258b640 SO['金币分数'] = 0x2587ae8 SO['踢人'] = 0x282ca38 SO['按钮复制房间'] = 0x1eaa564 SO['改字复活'] = 0x284e9f0 SO['好友踢人'] = 0x282ca38 SO['目标地图1'] = 0x20284a8 SO['目标地图2'] = 0x2029428 SO['目标路线'] = 0x1b05a50 SO['灵魂出窍'] = 0x13e3e90 SO['玩家离线'] = 0x1b58df0 SO['断开连接1'] = 0x277d7b0 SO['断开连接2'] = 0x1a29c54 SO['拖尾'] = 0x207d858 SO['弹窗'] = 0x1413208 SO['PVP获胜者'] = 0x26f6f4c SO['离线形式'] = 0x1b564ac SO['胜利时间'] = 0x27f8450 SO['能量吸附'] = 0x24564f4 SO['能量吸附2'] = 0x24574b4 SO['滑板提速'] = 0x2440d20 SO['修改对抗赛'] = 0x222a668 SO['对抗赛好友匹配'] = 0x2483018 SO['观察者室'] = 0x127a02c SO['自救'] = 0x2227c08 SO['复活结算'] = 0x27a76dc SO['最佳时间'] = 0x2803818 SO['作弊时间'] = 0x256a170 SO['点击道具'] = 0x245c064 SO['新时刻'] = 0x27f881c SO['忙碌状态'] = 0x245a660 SO['获取服务器'] = 0x256201c SO['无视香蕉'] = 0x245f564 SO['竞赛滑板'] = 0x207cf80 SO['减速带'] = 0x2455860 SO['加速带'] = 0x24546cc SO['单次抽取广告'] = 0x26b1800 SO['金币左道'] = 0x253d0a0 SO['金币右道'] = 0x253d318 SO['金币中道'] = 0x253d1dc SO['倒计时'] = 0x1b566b0 SO['单人道具赛'] = 0x1b568e8 SO['双人道具赛'] = 0x1b56534 SO['加速带失效'] = 0x2444660 SO['防止断网'] = 0x10687dc SO['分数赛检测'] = 0x24b26d0 SO['派对房间1'] = 0x1b059c8 SO['竞赛滑板'] = 0x207cf80 SO['减速带'] = 0x2455860 SO['加速带'] = 0x24546cc SO['单次抽取广告'] = 0x26b1800 SO['金币左道'] = 0x253d0a0 SO['金币右道'] = 0x253d318 SO['金币中道'] = 0x253d1dc SO['倒计时'] = 0x1b566b0 SO['单人道具赛'] = 0x1b568e8 SO['双人道具赛'] = 0x1b56534 SO['加速带失效'] = 0x2444660 SO['防止断网'] = 0x10687dc SO['分数赛检测'] = 0x24b26d0 SO['派对房间1'] = 0x1b059c8 SO['观察者室'] = 0x127a02c SO['自救'] = 0x2227c08 SO['复活结算'] = 0x27a76dc SO['最佳时间'] = 0x2803818 SO['作弊时间'] = 0x256a170 SO['点击道具'] = 0x245c064 SO['新时刻'] = 0x27f881c SO['忙碌状态'] = 0x245a660 SO['获取服务器'] = 0x256201c SO['无视香蕉'] = 0x245f564 SO['调出赛事'] = 0x283df0c function txl(zhi,lx,xg,dj) if dj == true then gg.addListItems({{address=zhi,flags=lx,value=xg,freeze=true}}) else gg.setValues({{address=zhi,flags=lx,value=xg}}) end end function SO_PT(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[2]==nil then toMusic("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else gg.setValues({{address=SOMOD[2].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+4,flags=TYPE,value="~A8 RET"}}) end end function setvalue(address, flags, value) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = flags tt[1].value = value gg.setValues(tt) end -------------------配置------------------ stab={ {"防封",'home.json'}, {"刷号功能",'Download.json'}, {"竞赛功能",'trolley.json'}, {"音乐界面",'recording.json'}, {"设置功能",'error.json'}, } changan.menu({ { changan.text("泪水UI","#161616","18sp"), changan.text('负责人:恨自己以前','#018CF0','15sp',true), changan.text('当前版本:7.03.0','#018CF0','15sp',true), changan.text('适配海底世界版本','#018CF0','15sp',true), changan.text('总群:1041721990','#018CF0','15sp',true), changan.text('支持地铁跑酷海底世界×64','#018CF0','15sp',true), changan.button("选择进程", function() gg.setProcessX() end), changan.button("过新手教程", function() SO_PT(SO['新手'],4,"~A8 MOV W0, #1") end), changan.switch("去除封号弹窗", function() SO_PT(SO['封号'],4,"~A8 MOV W0, WZR") gg.toast("去除封号弹窗开启成功") end, function() SO_PT(SO['封号'],4,"~A8 MOV W0, #1") gg.toast("去除封号弹窗关闭成功") end), changan.switch("打开水印", function() draw.text("泪", 60, 215) draw.setColor("#EE311B") draw.circle(80, 200, 50) draw.setColor("#EE311B") draw.circle(80, 200, 60) draw.setColor("#EE311B") draw.text("水", 150, 215) draw.setColor("#EE311B") draw.circle(180, 200, 50) draw.setColor("#EE311B") draw.circle(180, 200, 60) draw.setColor("#EE311B") draw.text("官方群1041721990", 10, 350) draw.text("泪水UI稳定奔放", 10, 400) draw.text("测试员:暂无后续还在招募", 10, 450) end), changan.box({"防封", changan.switch("防闪[登录]", function () --防环境 function setvalue(address, flags, value) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = flags tt[1].value = value gg.setValues(tt) end --[1].楠业地址:717830C6BC 楠业数值:-698416192 so=gg.getRangesList('libtersafe2.so')[1].start py=0x4FD6BC setvalue(so+py,4,-698416192) --[2].楠业地址:717830C6DC 楠业数值:-698416192 so=gg.getRangesList('libtersafe2.so')[1].start py=0x4FD6DC setvalue(so+py,4,-698416192) --防封号 function setvalue(address, flags, value) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = flags tt[1].value = value gg.setValues(tt) end --[1].楠业地址:717830C78C 楠业数值:-698416192 so=gg.getRangesList('libtersafe2.so')[1].start py=0x4FD78C setvalue(so+py,4,-698416192) --[2].楠业地址:717830C80C 楠业数值:-698416192 so=gg.getRangesList('libtersafe2.so')[1].start py=0x4FD80C setvalue(so+py,4,-698416192) --防上传 function setvalue(address, flags, value) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = flags tt[1].value = value gg.setValues(tt) end --[1].楠业地址:717830C69C 楠业数值:-698416192 so=gg.getRangesList('libtersafe2.so')[1].start py=0x4FD69C setvalue(so+py,4,-698416192) --[2].楠业地址:717830C73C 楠业数值:-698416192 so=gg.getRangesList('libtersafe2.so')[1].start py=0x4FD73C setvalue(so+py,4,-698416192) --防追封 local start_time = os.clock() local ggr = gg.getRangesList local libList = ggr('libtersafe2.so') if not libList or not libList[1] then gg.alert('模块 libtersafe2.so 未加载') os.exit() end local so = libList[1].start local mem_table = { {address = so + 0x4FD690, flags = 4, value = -698416192}, {address = so + 0x4FD6D0, flags = 4, value = -698416192}, {address = so + 0x4FD730, flags = 4, value = -698416192}, {address = so + 0x4FDF40, flags = 4, value = -698416192}} gg.setValues(mem_table) end), changan.switch("防环境[登陆]", function() local safe = gg.getRangesList("libtersafe2.so")[1].start local setvalue = { {address = safe + 0x4FD6BC, flags = 4, value = "~A8 RET"}, {address = safe + 0x4FD6DC, flags = 4, value = "~A8 RET"}, {address = safe + 0x4FD6FC, flags = 4, value = "~A8 RET"}, {address = safe + 0x4FD80C, flags = 4, value = "~A8 RET"}, } gg.processPause() gg.setValues(setvalue) gg.processResume() --gg.toast("开启成功") string.toMusic("开启成功") end), changan.switch("大厅防行为[大厅开启]", function() function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end so=gg.getRangesList('libil2cpp.so')[1].start py=0x31300e0 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x31300e4 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x373e45c setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x373e460 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x37438ec setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x37438f0 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x3743984 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x3743988 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x3743a20 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x3743a24 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x3744d78 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x3744d7c setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x374b850 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x374b854 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x374b8e8 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x374b8ec setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x374b980 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x374b984 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x374ba18 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x374ba1c setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x374bab0 setvalue(so+py,4,-698416192) function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end so=gg.getRangesList('libil2cpp.so')[1].start py=0x271f070 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x271f074 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x271f284 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x271f288 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x2a1cf30 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x2a1cf34 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x2a1d038 setvalue(so+py,4,-698416192) so=gg.getRangesList('libil2cpp.so')[1].start py=0x2a1d03c setvalue(so+py,4,-698416192) so=gg.getRangesList('libtersafe2.so')[1].start py=0x2bec setvalue(so+py,4,-698416192) so=gg.getRangesList('libtersafe2.so')[1].start py=0x2c44 setvalue(so+py,4,-698416192) so=gg.getRangesList('libtersafe2.so')[1].start py=0x2c9c setvalue(so+py,4,-698416192) so=gg.getRangesList('libtersafe2.so')[1].start py=0x2ce8 setvalue(so+py,4,-698416192) so=gg.getRangesList('libtersafe2.so')[1].start py=0x2d14 setvalue(so+py,4,-698416192) so=gg.getRangesList('libtersafe2.so')[1].start py=0x2d5c setvalue(so+py,4,-698416192) so=gg.getRangesList('libtersafe2.so')[1].start py=0x2ddc setvalue(so+py,4,-698416192) so=gg.getRangesList('libtersafe2.so')[1].start py=0x2e98 setvalue(so+py,4,-698416192) so=gg.getRangesList('libtersafe2.so')[1].start py=0x2ed8 setvalue(so+py,4,-698416192) so=gg.getRangesList('libtersafe2.so')[1].start py=0x2f2c setvalue(so+py,4,-698416192) --竞赛防御 SO_PT(SO['隐藏1'] ,4,"~A8 MOV W0, WZR") SO_PT(SO['隐藏2'] ,4,"~A8 MOV W0, WZR") SO_PT(SO['隐藏3'] ,4,"~A8 MOV W0, WZR") SO_PT(SO['隐藏4'] ,4,"~A8 MOV W0, WZR") SO_PT(SO['隐藏5'] ,4,"~A8 MOV W0, #1")--隐藏数据 SO_PT(SO['屏蔽时间检10'],4,"~A8 MOV W0, #1") SO_PT(SO['时间检测'],4,"~A8 MOV W0, WZR") SO_PT(SO['屏蔽时间检9'],4,"~A8 MOV W0, #1") SO_PT(SO['隐藏5'],4,"~A8 MOV W0, #1") SO_PT(SO['屏蔽时间检1'],4,"~A8 MOV W0, #1") SO_PT(SO['屏蔽时间检5'],4,"~A8 MOV W0, #1") SO_PT(SO['屏蔽时间检6'],4,"~A8 MOV W0, #1") SO_PT(SO['防举报1'], 4, "~A8 MOV W0, WZR") SO_PT(SO['防举报2'], 4, "~A8 MOV W0, WZR")--过140检测 end), }) },{ changan.text("泪水全防","#161616","18sp"), changan.text("一键解锁","#161616","18sp"), changan.switch("人物全解", function() SO_PT(SO['人物'] ,4,"~A8 MOV W0, #1") end, function() SO_PT(SO['人物'] ,4,"~A8 MOV W0, #1") end ), changan.switch("滑板全解", function() SO_PT(SO['滑板'],4,"~A8 MOV W0, #1") end, function() SO_PT(SO['滑板'],4,"~A8 MOV W0, #1") end ), changan.switch("背饰全解", function() SO_PT(SO['背饰'] ,4,"~A8 MOV W0, #1") SO_PT(SO['背饰保存'] ,4,"~A8 MOV W0, #1")---背饰保存 end, function() SO_PT(SO['背饰'] ,4,"~A8 MOV W0, #1") end ), changan.switch("装扮全解", function() SO_PT(SO["装扮"], 4, "~A8 MOV\t W0, #1", "~A8 RET") --gg.toast("装扮全解开启成功") gg.playMusic("https://pan.jl8.top/view.php/b61f87c69137cac3d56221cc2fae2b2c.mp3") end ), changan.switch("像框全解", function() SO_PT(SO["像框"], 4, "~A8 MOV\t W0, #1", "~A8 RET") --gg.toast("像框全解开启成功") gg.playMusic("https://pan.jl8.top/view.php/b61f87c69137cac3d56221cc2fae2b2c.mp3") end ), changan.switch("技能全解", function() SO_PT(SO["技能"], 4, "~A8 MOV\t W0, #1", "~A8 RET") --gg.toast("技能全解开启成功") gg.playMusic("https://pan.jl8.top/view.php/b61f87c69137cac3d56221cc2fae2b2c.mp3") end ), changan.text("奖励替换","#161616","18sp"), changan.button("查看奖励代码", function() local list = { "搜索代码","1导弹","2蓝色魔鬼炸弹","4护盾","8香蕉皮","16颜料炸弹","32恶魔","64粘液罐子","128小狗","256滑板","225云雾","272减速乌龟","320净化饮料","384磁铁","1小丑面具","2露西耳环","3紫色花球","4金属发条","5火焰纹章","6星星项链","7机械手表","8金色耳环","9黄金皇冠","10摩托头盔","11狼牙项链","12纯金手表","13金箍","14乾坤圈","15水手猫","16积木","17灵符","18黄金盔甲","19令牌","20龙蛋","21南瓜","22月兔","23舞狮头","24甜心项链","25圣诞帽","26夹克","27红色战衣","28火红灯笼","29美人折扇","30卫衣","31校服","32相机","33耳机","34眼镜","2019年春节限定头像框1","情人节限定头像框2","角色达人头像框3","滑板达人头像框4","愚人节限定头像框5","毅力达人限定头像框6","劳动节限定头像框7","端午节限定头像框8","夏日清凉头像框9","钻石璀璨头像框10","七夕限定头像框11","中秋节限定头像框12","飞天头像框13","万圣节头像框14","万圣霓虹头像框15","秋日头像框代码16","6周年头像框代码17","冰雪节头像框代码18","2020春节限定头像框代码19","我爱饺子头像框代码20","我爱汤圆头像框代码21","去春游吧头像框代码22","中国加油头像框代码23","愚乐一下头像框代码24","纯真记忆头像框代码25","爱心传递头像框代码26","7周年头像框代码27","圣诞迎新头像框代码28","许愿神龙头像框代码29","2021年春节限定头像框代码30","春日芳华头像框代码31","愚人节恶搞头像框代码32","2021劳动节头像框代码33","牛津头像框代码34","2021端午头像框代码35","2021暑假头像框代码36","2021巴厘岛像框代码37","2021中秋头像框代码38","长安限定头像框代码39","一起来捣蛋头像框代码40","8周年限定头像框代码41","创作达人头像框代码42","大神头像框代码43","双旦快乐头像框代码44","2022春节头像框代码45","春意盎然头像框代码46","愚你同乐头像框代码47","劳动快乐头像框代码48","端午快乐头像框代码49","摩纳哥限定头像框代码50","暑假快乐头像框代码51","冰岛限定头像框代码52","武汉限定头像框代码53","社团S1赛季冠军头像框代码54","社团S1赛季亚军头像框代码55","社团S1赛季季军头像框代码56","社团S1赛季精英头像框代码57","社团S1赛季勇者头像框代码58","万圣节限定头像框59","9周年限定头像框60","深圳限定头像框61","社团S2赛季冠军头像框代码62","社团S2赛季亚军头像框代码63","社团S2赛季季军头像框代码64","社团S2赛季精英头像框代码65","社团S2赛季勇者头像框代码66","新城洛阳头像框67","奥特曼限定68","微博专属头像框69","Fanbook头像框70","哥本哈根专属头像框71","社团S3赛季冠军头像框代码72","社团S3赛季亚军头像框代码73","社团S3赛季季军头像框代码74","社团S3赛季精英头像框代码75","社团S3赛季勇者头像框代码76","跑神杯S3冠军社团头像框77","跑神杯S3亚军社团头像框78","跑神杯S3季军社团头像框79","跑神杯S3纪念头像框80","呼和浩特版本头像框81","劳动最光荣头像框82","大神作者头像框83","人气作者头像框84","新秀作者头像框85","欧布头像框86","大朋友头像框87","小朋友头像框88","电玩番薯仔头像框89","校园时光头像框90","幸运星背包1","圣诞雪人2","机械之翼3","天使之翼4","绿野风车5","愚乐气球6","迷蝶之翼7","甜心花环8","时光之翼9","玲珑秋月10","星辰11","圣诞树12","许愿神龙背饰13","元气书包14","帆布克15","琵琶16","神光棒17","狗狗背饰18","大眼泡泡19","超能氧气瓶20","闪电篮球21","吸铁石22","欧布之光23","游戏机24","小兔书包25","默认滑板0","大跳板1","卧板2","街头滑板3","滑浪板4","超级英雄5","星星6","迈阿密7","怪兽8","火焰9","自由女神10","风之子11","犀鸟12","木板13","小鸡14","机车15","足球16","腹地17","大白鲨18","樱花19","猫咪20","狂热21","弗拉明戈22","玫瑰23","熊猫24","龙25","泰迪26","南瓜27","铃铛28","雪花29","孟加拉30","泡泡糖31","仙人掌32","麋鹿33","香蕉34","逐风35","传送器36","巡逻车37","鳄鱼38","乌龟39","红鼻子40","劳莱斯41","狮王42","提基43","飞毯44","龙舟45","贡多拉46","风火轮47","飞羽48","浪花49","雷电50","筋斗云51","玛塔塔52","影子53","圣诞火车54","花朵55","独角兽56","变色龙57","魔鬼鱼58","图米59","超级跑车60","狮子61","金牌62","奥尼63","鲸鱼64","合金跑车65","灵符66","雄鹰67","冰川68","赤兔69","踏板70","秘宝71","疯狂赛车72","尤克里里73","纪念日74","音槌75","黄包车76","眼镜蛇77","太空飞船78","桂花扇79","骷髅80","招魂幡81","南瓜扫帚82","竹简83","风韵84","水晶雪橇85","海盗船86","圣甲虫87","羊88","羞花89","哮天犬90","热狗91","浪漫甜心92","竹筏93","琉璃94","喷射飞行器95","多彩云96","蓝莓滑板97","低音炮98","冲浪滑板99","平底锅100","黄色的士101","帆船滑板102","音符103","魔毯104","锦鲤105","龙王炮106","金猪107","烟花火箭108","唱片109","像素爱心110","黄色闪电111","发条112","蓝色风暴113","油纸伞114","梦幻蝴蝶115","海蛇116","青铜战马117","莲台118","落叶119","皇家战马120","七色彩虹121","极速光轮122","电音风暴123","TapTAp滑板124","小米滑板125","星际巡洋舰126","时光涡轮127","无人机128","飞影129","朋克滑板130","老爷车131","旅行者一号132","马头琴133","电音熊134","自由涂鸦135","迷你兔136","维京战船137","旋风138","秘密139","开拓者140","幻影141","调色板142","樱之花143","神龙144","海浪145","骆驼146","海滩板147","冰雪奥义148","姜饼149","红桃皇后150","原子瓦151","星盘152","向阳153","测速仪154","括普155","月羽156","浮夸157","萌妹飞车158","液体159","番薯电动车160","小鹿板161","磁铁162","超级冲浪板163","高音号滑板164","雪云滑板165","寅虎滑板166","狐狸滑板167","胜利飞燕168","电测仪169","夜琵琶170","彩虹炸弹171","微博滑板172","兔兔气垫船173","盾牌飞行器174","年年有余175","赛博摩托176","枫叶177","战斗机178","鸡动机179","0金币","1钥匙","2滑板","3得分倍增","4喷射起跑","5迷你宝箱","6宝箱","7超级宝箱","8收集物宝箱","9头像框","10人物","11杰克","12滑板","13未知","14背饰","15秘典宝箱","16高级秘典宝箱","17杰克的喷雾器","18抽奖券","19秘典收集物","20空白千万不要领取","21宝物","22宝物钥匙","23鲜花","24社团贡献","25荣耀之路奖杯","26跑酷币","27金钥匙","杰克0","琪琪1","小黑2","钉子3","青青4","弗兰克5","卷卷6","小胖7","露西8","忍者9","机器人10","莎莎11","祖伊12","波迪13","K王子14","僵尸杰克15","精灵琪琪16","17托尼","卡门18","罗伯特19","金20","浅浅21","尼克22","可可23","孙悟空24","阿丽25","艾迪26","杰米27","跑跑28","美美29","福喜杰克30","米娜31","罗莎32","奥莉薇亚33","爱迪生34","洛奇35","韦恩36","欢欢37","茉莉38","鬼鬼39","宝拉40","小丫仔41","邦邦42","雷克斯43","小武哥44","伊奇45","艾美46","哪吒47","马可48","希腊-尼科斯49","哈库50","科罗娜51","麦克52","白小嫦53","旧金山-詹妮54","春节-小春55","雅罗56","玉依57","马达加斯加-爱娜58","秘鲁-卡洛斯59","新加坡-佳佳60","龙宝宝61","小宁62","嫦娥63","亚奇64","拉蒙娜65","劳伦66","马利克67","吕小布68","左利尔69","菲利普70","芙蕾雅71","小李72","邬童73","班小松74","伊柯75","陶西76","萨尔玛77","安谧78","嘟嘟79","曼尼80","少年嬴政81","小乔82","尼古拉83","十三妹84","貂蝉85","杨戬86","伊泽87","刘三姐88","索菲亚89","威尼斯-迪伦90","三亚-海音91","街舞机器人92","阿一93","阿龙94","安琪95","斯嘉丽96","冰冰97","小虎98","艾丽西娅99","麦娅100","鸿仔101","阿莹102","苏黎世-雨果103","哇!兔子机器人104","卡里姆105","素贞106","糖心107","梅108","淮安109","飞天110","迪戈111","圣诞小黑112","铁甲武僧113","鼠小易114","阿尔巴115","未来杰克116<","时光少年117","蓝骑士118","艾波索119","甜心少女120","卡勒姆121","小石城-洛克122","太空人123","冰雪杰克124","冰雪弗兰克125","冰雪钉子126","冰雪琪琪127","冰雪青青128","许愿神龙-129","穿越华夏-小雅130","穿越华夏-牛犇犇131","穿越华夏-鼠萌萌132","开学季-元气少年133","柏林-妮娜134","柏林-泽恩135","纽约-达瑞尔136","纽约-拉娜137","小狐狸138","牛津-邦妮139","哥本哈根版本-维京人140","空间站版本-机械弗兰克141","空间站版本-电音机器人142","艾嘉桦143","柠檬妹妹144","米娅145","武田146","环儿147","科拉尔148","杰森149","塔哈150","菲尼克斯151","艾斯152","福气琪琪153","克莱门汀154","姜博155","克莱奥156","哈西娜157","查理158","雅美159","假面机器人160","夜莺161","玛雅162","超级琪琪163","超级小黑164","超级杰克165","喵千金166","幻觉167","番薯仔168","鹿少爷169","超级青青170","精灵杰克171","精灵小黑172","精灵青青173","虎冲冲174","妲己175","迪迦杰克176","巴尔坦杰克177","超级费尔难多178","宋毅179","梦幻花园奥斯丁180","大眼仔181","乔治182","骑士183","兔跳跳184","隐秘小子185","机械图186","假面机器人187","乌兰188","巴兹189","保安190","欧布小黑191","哥莫拉青青192","电玩番薯仔193","隐秘女孩194","喷雾机器人195","兔小萌196","诺埃尔197","卡特琳198","比络檬199","赛罗奥特曼200","水母宝宝201","魔法兔小萌202","章鱼水手203","章鱼船长204","泽塔杰森205","赛文加琪琪206","阿尔非207","跑神番薯仔208","侦探多戈209","绅士多戈210","路障僵尸青青211","豌豆射手弗兰克212","燃跑杰克213","燃跑琪琪214","燃跑弗兰克215","江户川柯南216","怪盗基德217","超级番薯仔218","少女雅典娜219","神圣雅典娜220","燃跑青青221","燃跑小黑222","列车长小胖223","方圆224","灵素225","墨韵226","塔伊纳227","布鲁诺228","柳兰229","寻梦柳兰230","米拉231","磨术师杰克232","安室透233","赤井秀一234","灰原哀235","楼恒236","战神楼恒237","阿莉亚238","燃跑兔239","燃跑番薯仔240","摇滚维维尼241","摇滚扎克242","燃跑杰森243","莱卡244","雨林青青245","冰灵246","冰蓝247","摩羯座卡普248","工藤新一249","毛利兰250","小黑251","龙焱252","小龙女253","汤圆圆254","春阳255","雷256","糖雪球257","劳伦斯258","发条约翰尼259","魔王吕小布260","火舞貂蝉261","曹植262","龙达达263","织樱264","圣剑机甲265","猪猪侠266","菲菲公主267","薇薇安268","闪电队长269","超人强270","小呆呆271","波比272","爱丽丝273","梅根274","果冻275","金陵上仙276","狸猫小管家277","粉小嘶278","艾呦喂279","海莉280","白雀281","阿布282","艾达公主283","阿轮284","阿组拉285","海伦娜286","悟空287","小鱼288","蓝星289","阿呆290","星戴拉291","阿丽塔292","星妹293","萌乐奶龙294","炫酷奶龙295","银壶296","法伊扎297","坦克机器人298","斯外普299","冷酷暴暴龙300","拽萌暴暴龙301","雨蒙302","星期四303","莉莉304","里奥305","小骨306","金蝉307","猪悟能308","沙悟净309","小胖保安310","芭蕾琪琪311","哈米312","小红帽313","匹诺曹314","青蛙王子315","中通小哥316","奥黛丽317","比利豆318","凯蒂319","哈士奇杰克320","冰淇灵321","233娘322","奥兹323","朱娜324","迪杰325","好好鸭琪琪326","小红孤小胖327","针线娃娃328","地铁跑酷3月27日星期四更新地铁跑酷海底世界的主要更新内容代码大全↓","角色:","罗根329","咖小吒330","海星妹妹331","苍灵332","幸运星333","浮游精灵334","芬恩335","滑板:","风火轮Z-11 313","深蓝飞鲂314","灵动花海315","三叶草316","水母滑板317","黄色潜艇318","好运锦鲤319","背饰:","乾坤圈Z-II 97","海洋之星98","苍灵之翼99","蝶梦之翼100","头像框:","2025海底世界头像框228","沧灵头像框229","哪小吒头像框230","社团联赛S29赛季头像框231","纸鸢呜春头像框232", } local Name = {} --- 功能函数表 local Choice = gg.choice(list, nil, "查询代码") if Choice then if Choice == 1 then local prompt = gg.prompt({"请输入关键词进行搜索"},{""}, {"text"}) if prompt then local str = prompt[1] local t = {} local t1 = {} for i = 2, #list - 1 do if string.find(list[i], str) then table.insert(t, list[i]) table.insert(t1, Name[i - 1]) end end if #t == 0 then gg.toast("无搜索结果") else local c = gg.choice(t, nil, "关键词:[".. str .. "],共搜索到" .. #t .. "条结果") if c then end end end else end if Choice == 2 then os.exit() end end end), changan.switch("替换背饰", function() a = gg.prompt({"磁铁代码22"},{""},{"text"})[1] if not a then return end SO_PT(SO['替换背饰'],4,"~A8 MOV X0, #" .. a .. "") end), changan.switch ("替换滑板", function() a = gg.prompt({"跑车代码60"},{""},{"text"})[1] if not a then return end SO_PT(SO['替换滑板'],4,"~A8 MOV X0, #" .. a .. "") end, function() SO_PT(SO['替换滑板'],4,"~A8 MOV X0, #" .. a .. "") end), changan.switch ("替换人物", function() a = gg.prompt({"保安代码190"},{""},{"text"})[1] if not a then return end SO_PT(SO['替换人物'],4,"~A8 MOV X0, #" .. a .. "") end, function() SO_PT(SO['替换人物'],4,"~A8 MOV X0, #" .. a .. "") end), changan.text("宝物盒子","#161616","18sp"), changan.switch("十抽宝物", function() SO_PT(SO["十抽"], 4, "~A8 B [PC,#" .. SOGSPY_ST(SO["十抽"], SO["全宝"]) .. "]") gg.playMusic("https://pan.jl8.top/view.php/b61f87c69137cac3d56221cc2fae2b2c.mp3") end ), changan.switch("十抽备份", function() SO_PT(SO["十抽"], 4, "~A8 B [PC,#" .. SOGSPY_ST(SO["十抽"], SO["宝物备份"]) .. "]") gg.playMusic("https://pan.jl8.top/view.php/b61f87c69137cac3d56221cc2fae2b2c.mp3") end ), changan.switch("十抽全饰", function() SO_PT(SO["十抽"], 4, "~A8 B [PC,#" .. SOGSPY_ST(SO["十抽"], SO["三满"]) .. "]") toast("开启成功") end ), changan.switch("十抽半饰", function() SO_PT(SO["十抽"], 4, "~A8 B [PC,#" .. SOGSPY_ST(SO["十抽"], SO["半满"]) .. "]") gg.playMusic("https://pan.jl8.top/view.php/b61f87c69137cac3d56221cc2fae2b2c.mp3") end ), changan.text("保存解锁","#161616","18sp"), changan.switch("滑板直接购买", function() SO_PT(SO['滑板购买按钮'],4,"~A8 B [PC,#"..SOGSPY_ST(SO['滑板购买按钮'],SO['滑板购买成功']).."]") --gg.toast("成功") end, function() SO_PT(SO['滑板购买按钮'],4,"~A8 B [PC,#"..SOGSPY_ST(SO['滑板购买按钮'],SO['滑板购买成功']).."]") end ), changan.switch("金币人物", function() local Character = {} time = os.clock() ms.ss(10299, 4, 32) ms.py(291, 4, 4) ms.py(-1, 8, 4) ms.bc() gg.clearResults() do do for _FORV_4_, _FORV_5_ in ipairs(data) do _FORV_5_ = _FORV_5_ - 67512 do for _FORV_9_ = 0, 305 do Character[#Character + 1] = { value = 2, address = _FORV_5_ + 44 + 232 * _FORV_9_, flags = 4 } Character[#Character + 1] = { value = 0, address = _FORV_5_ + 48 + 232 * _FORV_9_, flags = 4 } Character[#Character + 1] = { value = 0, address = _FORV_5_ + 60 + 232 * _FORV_9_, flags = 4 } Character[#Character + 1] = { value = 2, address = _FORV_5_ + 68 + 232 * _FORV_9_, flags = 4 } Character[#Character + 1] = { value = 0, address = _FORV_5_ + 100 + 232 * _FORV_9_, flags = 4 } end end end end end gg.setValues(Character) local time = string.sub(os.clock() - time, 0, 5) gg.alert("开启成功") gg.playMusic("https://pan.jl8.top/view.php/b61f87c69137cac3d56221cc2fae2b2c.mp3") end ), changan.switch("金币滑板", function() local Board = {} time = os.clock() ms.ss(20263, 4, 32) ms.py(254, 4, 4) ms.py(-1, 8, 4) ms.bc() gg.clearResults() do do for _FORV_4_, _FORV_5_ in ipairs(data) do _FORV_5_ = _FORV_5_ - 48768 do for _FORV_9_ = 0, 290 do Board[#Board + 1] = { value = 2, address = _FORV_5_ + 36 + 192 * _FORV_9_, flags = 4 } Board[#Board + 1] = { value = 0, address = _FORV_5_ + 40 + 192 * _FORV_9_, flags = 4 } Board[#Board + 1] = { value = 0, address = _FORV_5_ + 52 + 192 * _FORV_9_, flags = 4 } Board[#Board + 1] = { value = 2, address = _FORV_5_ + 76 + 192 * _FORV_9_, flags = 4 } Board[#Board + 1] = { value = 0, address = _FORV_5_ + 100 + 192 * _FORV_9_, flags = 4 } end end end end end gg.setValues(Board) local time = string.sub(os.clock() - time, 0, 5) gg.alert("开启成功") gg.playMusic("https://pan.jl8.top/view.php/b61f87c69137cac3d56221cc2fae2b2c.mp3") end ), changan.switch("金币背饰", function() local Ornament = {} time = os.clock() ms.ss(50061, 4, 32) ms.py(63, 4, 4) ms.py(-1, 8, 4) ms.bc() gg.clearResults() do do for _FORV_4_, _FORV_5_ in ipairs(data) do _FORV_5_ = _FORV_5_ - 6552 do for _FORV_9_ = 0, 83 do Ornament[#Ornament + 1] = { value = 2, address = _FORV_5_ + 36 + 104 * _FORV_9_, flags = 4 } Ornament[#Ornament + 1] = { value = 1, address = _FORV_5_ + 40 + 104 * _FORV_9_, flags = 4 } Ornament[#Ornament + 1] = { value = 0, address = _FORV_5_ + 48 + 104 * _FORV_9_, flags = 4 } end end end end end gg.setValues(Ornament) local time = string.sub(os.clock() - time, 0, 5) gg.alert("开启成功") gg.playMusic("https://pan.jl8.top/view.php/b61f87c69137cac3d56221cc2fae2b2c.mp3") end ), changan.text("游戏特权","#161616","18sp"), changan.switch("改超长名", function() local nc={} local so=gg.getRangesList("il2cpp.so") for i=1,#so do nc[i]=so[i].state if nc[i]=="Xa" then nc=i break end end local so=so[nc].start local py=SO['改超长名'] gg.setValues({{address=so+py,flags=4,value='~A8 B [PC,#0x100]'}}) gg.setValues({{address=so+py+4,flags=4,value='~A8 RET'}}) gg.toast("改超长名开启成功") end, function() end), changan.switch("修改点赞数量", function() local a = gg.prompt({"请输入你要修改的点赞数"},{"99"},{"text"})[1] if not a then return end SO_PT(SO['点赞数'],4,"~A8 MOV W0, #"..a.."") gg.toast("点赞数修改成功") end, function() SO_PT(SO['点赞数'],4,"~A8 MOV W0, WZR") gg.toast("点赞数恢复成功") end), changan.switch("十倍得分", function() SO_PT(SO["获取十倍"], 4, "~A8 MOV\t W0, #1", "~A8 RET") SO_PT(SO["解锁十倍"], 4, "~A8 MOV\t W0, #1", "~A8 RET") --gg.toast("十倍得分开启成功") gg.playMusic("https://pan.jl8.top/view.php/b61f87c69137cac3d56221cc2fae2b2c.mp3") end ), changan.switch("微博特权", function() SO_PT(SO["微博"], 4, "~A8 MOV\t W0, #1", "~A8 RET") --gg.toast("微博特权开启成功") gg.playMusic("https://pan.jl8.top/view.php/b61f87c69137cac3d56221cc2fae2b2c.mp3") end ), changan.switch("双倍金币", function() SO_PT(SO["双倍"], 4, "~A8 MOV\t W0, #1", "~A8 RET") --gg.toast("双倍金币开启成功") gg.playMusic("https://pan.jl8.top/view.php/b61f87c69137cac3d56221cc2fae2b2c.mp3") end ), changan.switch("满级跑卡", function() SO_PT(SO["炫跑卡"], 4, "~A8 MOV\t W0, #6", "~A8 RET") --gg.toast("开启成功") gg.playMusic("https://pan.jl8.top/view.php/b61f87c69137cac3d56221cc2fae2b2c.mp3") end ), changan.edit("普通金币数量","普通金币数量"), changan.edit("普通钥匙数量","普通钥匙数量"), changan.edit("宝物钥匙数量","宝物钥匙数量"), changan.edit("赛季硬币数量","赛季硬币数量"), changan.edit("燃跑炫卡等级","燃跑炫卡等级"), changan.edit("无尽历史分数","无尽历史分数"), changan.edit("无尽历史排名","无尽历史排名"), changan.edit("账号当前等级","账号当前等级"), changan.edit("道赛显示全服","道赛显示全服"), changan.edit("道赛显示省标","道赛显示省标"), changan.button( "确认更改", function() local table={ changan.getedit("普通金币数量"), changan.getedit("普通钥匙数量"), changan.getedit("宝物钥匙数量"), changan.getedit("赛季硬币数量"), changan.getedit("燃跑炫卡等级"), changan.getedit("无尽历史分数"), changan.getedit("无尽历史排名"), changan.getedit("账号当前等级"), changan.getedit("道赛显示全服"), changan.getedit("道赛显示省标"), } for Key,value in pairs(table)do if(Key==1 and value ~="")then local num_1 = changan.getedit("普通金币数量") local num_1 = tonumber(num_1) SO_Deposit(SO['金币'] ,4,num_1,"~A8 RET") elseif(Key==2 and value ~="")then local num_1 = changan.getedit("普通钥匙数量") local num_1 = tonumber(num_1) SO_Deposit(SO['钥匙'] ,4,num_1,"~A8 RET") elseif(Key==3 and value ~="")then local num_1 = changan.getedit("宝物钥匙数量") local num_1 = tonumber(num_1) SO_Deposit(SO['宝物钥匙'] ,4,num_1,"~A8 RET") elseif(Key==4 and value ~="")then local num_1 = changan.getedit("赛季硬币数量") local num_1 = tonumber(num_1) SO_Deposit(SO['紫币'] ,4,num_1,"~A8 RET") elseif(Key==5 and value ~="")then SO_Deposit(SO['炫跑卡'] ,4,"~A8 MOV W0, #"..changan.getedit("燃跑炫卡等级"),"~A8 RET") elseif(Key==6 and value ~="")then local num_1 = changan.getedit("无尽历史分数") local num_1 = tonumber(num_1) SO_Deposit(SO['历史分数1'] ,4,num_1,"~A8 RET") SO_Deposit(SO['历史分数2'] ,4,num_1,"~A8 RET") gg.toast("数据修改成功 重启即可") elseif(Key==7 and value ~="")then local num_1 = changan.getedit("无尽历史排名") local num_1 = tonumber(num_1) SO_Deposit(SO['历史排名'] ,4,num_1,"~A8 RET") elseif(Key==8 and value ~="")then local num_1 = changan.getedit("账号当前等级") local num_1 = tonumber(num_1) SO_Deposit(SO['等级'] ,4,num_1,"~A8 RET") elseif(Key==9 and value ~="")then SO_Deposit(SO['全服'] ,4,"~A8 MOV W0, #"..changan.getedit("道赛显示全服"),"~A8 RET") elseif(Key==10 and value ~="")then SO_Deposit(SO['省标'] ,4,"~A8 MOV W0, #"..changan.getedit("道赛显示省标"),"~A8 RET") end end end), },{ changan.text("泪水全防","#161616","18sp"), changan.text("道具赛过检测","#161616","18sp"), changan.switch("道具赛过检", function() SO_PT(SO['上报'],4,"~A8 MOV W0, WZR") SO_PT(SO['速度检测1'],4,"~A8 MOV W0, WZR") SO_PT(SO['速度检测2'],4,"~A8 MOV W0, WZR") SO_PT(SO['速度检测3'],4,"~A8 MOV W0, WZR") SO_PT(SO['速度检测4'],4,"~A8 MOV W0, WZR") SO_PT(SO['结算检测1'],4,"~A8 MOV W0, WZR") SO_PT(SO['结算检测2'],4,"~A8 MOV W0, WZR") SO_PT(SO['结算检测3'],4,"~A8 MOV W0, WZR") SO_PT(SO['结算检测4'],4,"~A8 MOV W0, WZR") end), changan.switch("关闭断网弹窗", function() so=gg.getRangesList('libil2cpp.so')[2].start LNB={ {address = so+SO['弹窗'], flags = 4, value = "~A8 MOV W0, #0x1"}, {address = so+SO['弹窗']+4, flags = 4, value = "~A8 RET"}, } gg.setValues(LNB) end), changan.text("道具赛","#161616","18sp"), changan.switch("道具赛指南[必看]", function() gg.alert('道具赛指南:使用能量倍增时1分45秒以后到终点或者1分45秒到1分44秒以前的会检测无限滑板先用不了只能用能量倍增如果有什么问题的话就尽快来找我如果我把无限滑板修好的话就搭配时间检测不搭配时间检测会直接弹作弊行为如果能量倍增用不了的话,那就重新选择一遍进程然后再重新选择一下如果想找我测试的话那就加qq3206972903我不在的话可以找管理员') string.toMusic("道具赛指南:使用能量倍增时1分45秒以后到终点或者1分45秒到1分44秒以前的会检测无限滑板已经修复好了能量倍增也修复好了如果有什么问题的话就尽快来找我如果我把无限滑板搭配时间检测不搭配时间检测会直接弹作弊行为如果能量倍增用不了的话,那就重新选择一遍进程然后再重新选择一下如果想找我测试的话那就加qq2146811883我不在的话可以找管理员") end), changan.switch("一键稳定功能" , function() SO_PT(SO['跳跃'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['跳跃'] ,SO['获取能量2']).."]") SO_PT(SO['下滑'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑'] ,SO['获取能量2']).."]") SO_PT(SO['无视道具1'],4,"~A8 MOV W0, #1") SO_PT(SO['无视道具2'],4,"~A8 MOV W0, #1")--无视道具 SO_PT(SO['无视障碍'],4,"~A8 MOV W0, #1")--无视障碍 SO_PT(SO["炫跑卡"], 4, "~A8 MOV\t W0, #5", "~A8 RET") SO_PT(SO['反弹道具1'] ,4,"~A8 MOV W0, #1","~A8 RET") SO_PT(SO['反弹道具2'] ,4,"~A8 MOV W0, WZR","~A8 RET") gg.alert("1.能量倍增2.无视道具3.无视障碍 4.炫跑卡 5.反弹道具") --gg.toast("开启成功") end), changan.switch("调出赛事房间", function() SO_PT(SO['赛事'] ,4,"~A8 MOV X0, #1") end), changan.switch("匹配人机", function() gg.alert("开启成功之后点击左上角的创建房间进入局内后直接退铂金及以上不能用") SO_PT(SO['匹配机制3'],4,"~A8 B [PC,#"..SOGSPY_ST(SO['匹配机制3'],SO['竞赛模式1']).."]") SO_PT(SO['匹配机制2'],4,"~A8 MOV W0, #1") function huitiao(a , b) pyl = b - a if string.find(pyl, "-") then gsub = string.gsub(pyl, "-", "") format = string.format("-0x%X", gsub) else format = string.format("0x%X", pyl) end format = '~A8 B [PC,#'..format..']' return format end il2cpp = gg.getRangesList('il2cpp.so')[2].start Values = { {address = il2cpp + SO['获取玩家ID_1'] , flags = 4 , value = huitiao(SO['获取玩家ID_1'],SO['获取玩家ID_4'])}, {address = il2cpp + SO['获取玩家ID_2'] , flags = 4 , value = '~A8 MOV X0, XZR'}, {address = il2cpp + SO['获取玩家ID_2'] + 4, flags = 4 , value = '~A8 RET'}, {address = il2cpp + SO['获取玩家ID_3'] , flags = 4 , value = '~A8 MOV X0, XZR'}, {address = il2cpp + SO['获取玩家ID_3'] + 4, flags = 4 , value = '~A8 RET'}, {address = il2cpp + SO['真人进不去游戏'] , flags = 4 , value = '~A8 MOV X0, XZR'}, {address = il2cpp + SO['真人进不去游戏'] + 4, flags = 4 , value = '~A8 RET'}, } gg.setValues(Values) gg.alert('开启成功\n铂金以下有效果\n进游戏直接退出即可加星') end), changan.switch("开关加速", function() SO['速度检测2'] = 0x1e5f194 SO['速度检测'] = 0x1e5f110 SO_FPT(SO['人物全局速度'],4,"0") end, function() SO_FPT(SO['人物全局速度'],4,"99999") end), changan.switch("buff聚能", function() SO_PT(SO['Buff模式'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['Buff模式'] ,SO['获取能量2']).."]") end), changan.switch("无限滑板" , function() function _lib(libs, state) local lib = gg.getRangesList(libs) for seed in ipairs(lib) do if lib[seed].state == state then return lib[seed].start end end end function zhix() local il2cpp_start = _lib('il2cpp', 'Xa') local targetOffset = il2cpp_start +SO['点击'] local getClass = il2cpp_start +SO['结尾'] local destinationOffset = il2cpp_start +SO['状态'] local ReleaseEnergyOffset = il2cpp_start +SO['释放能量'] local CollectPropOffset = il2cpp_start +SO['攻击拾取'] local register = { [0] = {0xB8, 32, 0}; [1] = {0x208, 4, 5}; [2] = {0x20C, 16, 80}; [3] = {0x210, 4, 0}; [4] = {0x214, 4, 1}; [5] = {0x218, 32, destinationOffset}; } local mmap = gg.allocatePage(1 | 2 | 4) + 8 local table_correct = { { address = mmap + ( #register + 1) * 4, flags = 4, value = '~A8 BR X5' }, {address = ReleaseEnergyOffset, flags = 4, value = '~A8 MOV W0, #1'}, {address = ReleaseEnergyOffset + 4, flags = 4, value = '~A8 RET'}, {address = CollectPropOffset, flags = 4, value = '~A8 RET'}, {address = targetOffset, flags = 4, value = '~A8 LDR X1, [PC,#0x8]'}, {address = targetOffset + 4, flags = 4, value = '~A8 BR X1'}, {address = targetOffset + 8, flags = 32, value = mmap}, {address = getClass, flags = 4, value = '~A8 LDR X2, [PC,#0x8]'}, {address = getClass + 4, flags = 4, value = '~A8 BR X2'}, { address = getClass + 8, flags = 32, value = (mmap - 8) }, { address = (mmap - 8), flags = 4, value = '~A8 STR X0, [X2,#0xC0]' }, { address = (mmap - 4), flags = 4, value = '~A8 RET' }, } for search = 0,#register do table_correct[ #table_correct + 1], table_correct[ #table_correct + 2] = { address = mmap + search * 4, flags = 4, value = '~A8 LDR X' .. search .. ', [PC,#' .. string.format('0x%X', register[search][1]) .. ']' }, { address = mmap + (search * 4) + register[search][1], flags = register[search][2], value = register[search][3] } end return gg.setValues(table_correct) end zhix() end, function() end), changan.switch("敌人概率进不去游戏" , function() local so = gg.getRangesList("libil2cpp.so")[2].start local py = 0x319468C local set = { {address = so + 0x2ea9800, flags = 4, value = "~A8 B [PC,#0xF1740]"}, } gg.setValues(set) gg.addListItems(set) -- 将表添加到保存列表 print(set) -- 将表给打印出来 gg.alert("开启成功") gg.alert("开启成功") end), changan.switch("改测试服", function() local lib = gg.getRangesList() for _ in ipairs(lib) do if string.find(lib[_].name, 'libil2cpp.so') and lib[_].state == 'Xa' and lib[_].type == 'r-xp' then module = lib[_].start break end end local page = module + SO['服务器4'] --分配内存页 local mmap = gg.allocatePage(gg.PROT_READ | gg.PROT_WRITE | gg.PROT_EXEC) gg.setValues({ {address = page, flags = 4, value = "~A8 LDR X1, [PC,#0x8]"}, {address = page + 0x4, flags = 4, value = "~A8 BR X1"}, {address = page + 0x8, flags = 32, value = mmap}, {address = mmap, flags = 4, value = "~A8 LDR X0, [PC,#0x10]"}, {address = mmap + 0x4, flags = 4, value = "~A8 BR X30"}, {address = mmap + 0x10, flags = 4, value = -1}, }) end), changan.switch("无限道具(先开测试服)", function() local lib = gg.getRangesList() for _ in ipairs(lib) do if string.find(lib[_].name, 'libil2cpp.so') and lib[_].state == 'Xa' and lib[_].type == 'r-xp' then module = lib[_].start break end end a = gg.prompt({'请输入你想改的道具代码\n导弹 = 1\n护盾 = 4\n香蕉 = 8\n颜料 = 16\n恶魔 = 32\n绿泡泡 = 64\n狗子 = 128\n能量 = 256\n乌龟 = 272\n云雾 = 288\n净化饮料 = 320\n磁铁 = 384\n羽毛 = 563\n砝码 = 564\nUFO = 565\n充满能量 = 566\n龙卷风 = 567\n刺激剂 = 568'},{[1]=1},{[1]='number'})[1] if not a then return end local page = module + SO['忙碌状态'] --分配内存页 local mmap = gg.allocatePage(gg.PROT_READ | gg.PROT_WRITE | gg.PROT_EXEC) gg.setValues({ {address = page, flags = 4, value = "~A8 LDR X1, [PC,#0x8]"}, {address = page + 0x4, flags = 4, value = "~A8 B [PC,#0x1344]"}, {address = page + 0x8, flags = 32, value = a}, {address = page + 0xC, flags = 4, value = "~A8 RET"}, {address = mmap, flags = 4, value = "~A8 LDR X1, [PC,#0x8]"}, {address = mmap + 0x4, flags = 4, value = "~A8 B [PC,#0x1344]"}, {address = mmap + 0x8, flags = 4, value = a}, {address = mmap + 0xC, flags = 4, value = "~A8 RET"}, }) end), changan.switch("能量倍增[已修复]" , function() SO_PT(SO['跳跃'],4,"~A8 B [PC,#"..SOGSPY_ST(SO['跳跃'],SO['获取能量1']).."]") SO_PT(SO['下滑1'],4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑1'],SO['获取能量1']).."]") end, function() SO_PT(SO['跳跃'],4,"~A8 B [PC,#"..SOGSPY_ST(SO['跳跃'],SO['获取能量1']).."]") SO_PT(SO['下滑1'],4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑1'],SO['获取能量1']).."]") end), changan.switch("道具赛改段位", function() a = gg.prompt({'1=青铜\n2=白银\n3=黄金\n4=铂金\n5=钻石\n6=王者[1;6]'},{[1]=6},{[1]='number'})[1] if not a then return end so_mc(SO['段位'],4,"~A8 MOV W0, #"..a.."","~A8 RET") end, function() end), changan.switch("修改星数", function() a = gg.prompt({'道具赛自定义星数[1;9999]'},{[1]=200},{[1]='number'})[1] if not a then return end so_mc(SO['星数'],4,"~A8 MOV W0, #"..a.."","~A8 RET") end, function() end), changan.switch("能量倍增pro" , function() SO_PT(SO['跳跃'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['跳跃'] ,SO['获取能量2']).."]") SO_PT(SO['下滑1'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑1'] ,SO['获取能量2']).."]") SO_PT(SO['下滑'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑'] ,SO['获取能量2']).."]") SO_PT(SO['下滑中'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑中'] ,SO['获取能量2']).."]") SO_PT(SO['跳跃'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['跳跃'] ,SO['获取能量2']).."]") SO_PT(SO['下滑1'] ,4,"~A8 B [PC,#"..SOGSPY_ST(SO['下滑1'] ,SO['获取能量2']).."]") end), changan.switch("能量翻倍", function() io.open("/sdcard/.ida","w+"):write([[ 11246 Var #6FDAEBEAA0|6fdaebeaa0|4|1e281000|0|0|0|0|r-xp|/data/app/~~rfm6cnyHTZVKE6wUzsrztQ==/com.kiloo.subwaysurf-BrNOhiutBxXTD2MpAp-ZlA==/lib/arm64/libil2cpp.so|2e2eaa0 Var #6FDAEC3C84|6fdaec3c84|4|d65f03c0|0|0|0|0|r-xp|/data/app/~~rfm6cnyHTZVKE6wUzsrztQ==/com.kiloo.subwaysurf-BrNOhiutBxXTD2MpAp-ZlA==/lib/arm64/libil2cpp.so|2e33c84 Var #6FDAEC3DF8|6fdaec3df8|4|d65f03c0|0|0|0|0|r-xp|/data/app/~~rfm6cnyHTZVKE6wUzsrztQ==/com.kiloo.subwaysurf-BrNOhiutBxXTD2MpAp-ZlA==/lib/arm64/libil2cpp.so|2e33df8 ]]) gg.loadList("/sdcard/.ida", gg.LOAD_VALUES) os.remove("/sdcard/.ida") gg.alert("开启成功") end, function() end), changan.switch("过滤10秒" , function() SO_PT( 0x2a56c48,4, "~A8 MOV W0, #1") gg.alert('过滤10秒开启成功') end, function() end), changan.button("退出比赛 [局内开启]", function() local lib = gg.getRangesList() do do for _FORV_4_ in ipairs(lib) do if string.find(lib[_FORV_4_].name, "libil2cpp.so") and lib[_FORV_4_].state == "Xa" and lib[_FORV_4_].type == "r-xp" then module = lib[_FORV_4_].start break end end end end hook = {StaticUpdater = SO['更新时刻']} function HookCall(set) local action = module + set.hook local recover = gg.getValues({ {address = action, flags = 4} })[1].value local offset = function(a, b) if b <= a then return string.format("-0x%X", a - b) else return string.format("0x%X", b - a) end return 0 end local original = {} do do for _FORV_8_, _FORV_9_ in pairs(set.method) do original[#original + 1] = { address = action, flags = 4, value = "~A8 B [PC,#" .. offset(action, module + _FORV_9_) .. "]" } end end end original[#original + 1] = { address = action, flags = 4, value = recover } do do for _FORV_8_ in ipairs(original) do gg.setValues({ original[_FORV_8_] }) gg.sleep(math.random(28, 35)) end end end return true end HookCall({ method = {SO['弹窗']}, -- RealPVPDisconnectPopup,Open hook = hook.StaticUpdater }) gg.alert('断网成功') end), changan.switch("半自动上分", function() function SO_PT(FUNCTIONADD, TYPE, VALUE) local SOMOD = gg.getRangesList("il2cpp.so") if SOMOD[2] == nil then gg.alert("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else gg.setValues({ { address = SOMOD[2].start + FUNCTIONADD, flags = TYPE, value = VALUE } }) gg.setValues({ { address = SOMOD[2].start + FUNCTIONADD + 4, flags = TYPE, value = "~A8 RET" } }) gg.setValues({ { address = SOMOD[2].start + FUNCTIONADD + 8, flags = 16, value = "1740" } }) end end SO_PT(SO['反弹道具1'] ,4,"~A8 MOV W0, #1") SO_PT(SO['反弹道具2'] ,4,"~A8 MOV W0, WZR") SO_PT(SO['微加速'],4,"~A8 LDR S0, [PC,#0x8]") SO_PT(SO['无视障碍'] ,4,"~A8 MOV W0, #1") SO_PT(SO['能量穿透'], 4, "~A8 MOV W0, #1") SO_PT( 0x2a56c48,4, "~A8 MOV W0, #1") SO_PT(SO['减速带'],4,"~A8 MOV W0, WZR") SO_PT(SO['无视侧撞'] ,4,"~A8 MOV W0, #1") SO_PT( 0x2a56c48,4, "~A8 MOV W0, #1") lmr=gg.alert([[ 半自动上分功能 微加速 反弹道具 无视障碍 能量穿透 无视减速带 无视侧撞 过滤十秒 ]],"")-------公告 end), changan.switch("自动上分", function() SO['速度检测2'] = 0x1e5f194 SO['速度检测'] = 0x1e5f110 SO['自动速度'] = 0x2616fe4 function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = Get_Address(t_So, t_Offset, _bit) return _A end function setvalue(address, flags, value) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = flags tt[1].value = value gg.setValues(tt) end setvalue(gg.getRangesList('libil2cpp.so')[2].start+SO['速度检测'] ,4,"~A8 RET") setvalue(gg.getRangesList('libil2cpp.so')[2].start+SO['速度检测2'] ,4,"~A8 RET") local t = {"libunity.so:bss", "Cb"} local tt = {0xF83B8,0x698,0x668,0x688,0x218,0x3F4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 9191, freeze = true}}) local t = {"libunity.so:bss", "Cb"} local tt = {0xF83B8,0x698,0x668,0x688,0x218,0x3F4+0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 9191, freeze = true}}) -- 下滑穿透 local mk=gg.getRangesList('libil2cpp.so')[2].start local pyl=SO['自动速度'] local xg={ {address = mk+pyl, flags = 4, value = "~A8 RET"}, {address = mk+pyl+4, flags = 4, value = "~A8 LDR S17, [PC,#0x90000]"}, {address = mk+pyl+4+0x90000, flags = 16, value = 104.0}, {address = mk+pyl+8, flags = 4, value = "~A8 FCMP S16, S17"}, {address = mk+pyl+12, flags = 4, value = "~A8 B.GT [PC,#0xC]"}, {address = mk+pyl+12+0xC, flags = 4, value = "~A8 LDR S0, [PC,#0x90000]"}, {address = mk+pyl+12+0xC+4, flags = 4, value = "~A8 RET"}, {address = mk+pyl+12+0xC+0x90000, flags = 16, value = 50000.0}, {address = mk+pyl+16, flags = 4, value = "~A8 LDR S0, [PC,#0x90000]"}, {address = mk+pyl+16+0x90000, flags = 16, value = 0.0}, {address = mk+pyl+20, flags = 4, value = "~A8 RET"}, {address = mk+pyl, flags = 4, value = "~A8 LDR S16, [X0,#0xF4]"}, } gg.setValues(xg) end), changan.switch("无视道具", function () SO_PT(SO['无视道具1'],4,"~A8 MOV W0, #1")--无视道具 SO_PT(SO['无视道具2'],4,"~A8 MOV W0, #1")--无视道具 end, function () end), changan.switch("反弹道具", function () SO_PT(SO['反弹道具1'] ,4,"~A8 MOV W0, #1","~A8 RET") SO_PT(SO['反弹道具2'] ,4,"~A8 MOV W0, WZR","~A8 RET") end, function () end), changan.switch("无视障碍", function () SO_PT(SO['无视障碍'],4,"~A8 MOV W0, #1") end, function () end), changan.switch("开局道具", function() a = gg.prompt({'道具代码:\n1=恶魔 2=乌龟 3=颜料 4=能量10%[1;4]'},{[1]=2},{[1]='number'})[1] if not a then return end SO_PT(SO['开局道具'],4,"~A8 MOV W0, #"..a.."","~A8 RET") end, function() end), changan.switch("滑板瞬移", function () SO_PT(SO['滑板瞬移'],4,"~A8 MOV W0, #1") end, function () end), changan.switch("滑板滑翔", function () SO_PT(SO['滑板滑翔'],4,"~A8 MOV W0, #1") end, function () end), changan.switch("滑板跳高", function () SO_PT(SO['滑板跳高'],4,"~A8 MOV W0, #1") end ), changan.text("分数赛","#161616","18sp"), changan.switch("分数过检", function() SO_PT(SO['分数赛过检'] ,4,"~A8 MOV W0, #1") --gg.toast("开启成功") end), changan.switch("自动上分", function() local mmap = gg.allocatePage(gg.PROT_READ | gg.PROT_WRITE | gg.PROT_EXEC) local addr = gg.getRangesList('il2cpp.so')[2].start + SO['得到分数'] gg.setValues({ {address = mmap, flags = 4, value = '~A8 LDR X14, [X16,#0x200]'}, {address = mmap + 4, flags = 4, value = '~A8 LDR S17, [X14,#0xE4]'}, {address = mmap + 8, flags = 4, value = '~A8 LDR S14, [X16,#0x208]'}, {address = mmap + 12, flags = 4, value = '~A8 FCMP S17, S14'}, {address = mmap + 16, flags = 4, value = '~A8 B.GE [PC,#0xC]'}, {address = mmap + 20, flags = 4, value = '~A8 LDR W0, [X16,#0x210]'}, {address = mmap + 24, flags = 4, value = '~A8 RET'}, {address = mmap + 28, flags = 4, value = '~A8 LDR W0, [X16,#0x218]'}, {address = mmap + 32, flags = 4, value = '~A8 RET'}, {address = mmap + 0x200, flags = 4, value = def.Character}, {address = mmap + 0x208, flags = 16, value = 165}, {address = mmap + 0x210, flags = 4, value = 0}, {address = mmap + 0x218, flags = 4, value = 888888}, {address = addr, flags = 4, value = '~A8 LDR X16, [PC,#0x8]'}, {address = addr + 4, flags = 4, value = '~A8 BR X16'}, {address = addr + 8, flags = 4, value = mmap} }) gg.toast("自动上分开启成功") end, function() end), changan.switch("局内分数", function() a = gg.prompt({"输入要修改的分数"},{""},{"text"})[1] a= tonumber(a) SO_Deposit(SO['得到分数'],4,a,"~A8 RET") --gg.toast("开启成功") end), changan.switch("修改倍数[30/107]", function() SO_PT(SO['得分倍增'],4,"~A8 MOV W0, #107") --gg.toast("倍数修改107级成功") end, function() SO_PT(SO['得分倍增'],4,"~A8 MOV W0, #30") --gg.toast("倍数修改30级成功") end), changan.switch("修改速度", function() local lib = gg.getRangesList() for _ in ipairs(lib) do if string.find(lib[_].name, 'libil2cpp.so') and lib[_].state == 'Xa' and lib[_].type == 'r-xp' then module = lib[_].start break end end function returnValue(set) local inputRegister local page = module + set[1] local mmap = set[4] local setva = { {address = mmap + 0x4, flags = 4, value = '~A8 BR X30'}, {address = mmap + set[2], flags = 16, value = set[3]}, {address = page, flags = 4, value = '~A8 LDR X0, [PC,#0x8]'}, {address = page + 0x4, flags = 4, value = '~A8 BR X0'}, {address = page + 0x8, flags = 32, value = mmap}, } if set[3] % 1 == 0 then inputRegister = 'X0' else inputRegister = 'S0' end table.insert(setva, {address = mmap, flags = 4, value = '~A8 LDR '..inputRegister..', [PC,#'..string.format('0x%X', set[2])..']'}) return gg.setValues(setva) end returnValue{ SO['人物速度'], 0x3BC, 417.5, gg.allocatePage(gg.PROT_READ | gg.PROT_WRITE | gg.PROT_EXEC), } gg.alert("开启成功") end), changan.switch("下滑穿透", function() function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = Get_Address(t_So, t_Offset, _bit) return _A end function setvalue(address, flags, value) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = flags tt[1].value = value gg.setValues(tt) end setvalue(gg.getRangesList('libil2cpp.so')[2].start+SO['速度检测'] ,4,"~A8 RET") setvalue(gg.getRangesList('libil2cpp.so')[2].start+SO['速度检测2'] ,4,"~A8 RET") local t = {"libunity.so:bss", "Cb"} local tt = {0xF83B8,0x698,0x668,0x688,0x218,0x3F4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 9191, freeze = true}}) local t = {"libunity.so:bss", "Cb"} local tt = {0xF83B8,0x698,0x668,0x688,0x218,0x3F4+0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 9191, freeze = true}}) --gg.toast("开启成功") gg.alert("开启成功") end ), },{ wyylog, },{ changan.switch( "音量键隐藏UI",--改名会导致不能自动开启 function() 音量键=true end, function() 音量键=false end ), changan.button( "退出", function() tuichu=1 end), },{---第六页 },{---第六页 }, })