huiz = function()--这里是绘制 end ---@kkaz110 gg.alert('本辅助代理为『情话』') string.toMusic('本辅助代理为『情话』') --卡密验证放这☝️☝️☝️ draw.setSize(60) draw.setStyle("描边") draw3 = require("draw3") draw.text("神秘代码@WASHNB", 250, 400) draw.setColor("#00ffff") draw.setSize(50) draw.setStyle("描边并填充") DM = "欢迎使用晚安内部 神秘代码@WASHNB ," vibra = context:getSystemService(Context.VIBRATOR_SERVICE) YH = {} local YH = YH local android = import('android.*') function write(fileName, content) file.write(fileName, content) end function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end function pdcf(lujing) rec = "/sdcard/karo/配置文件/"..lujing fille,err = io.open(rec) if fille == nil then return false else return true end end sleep = gg.sleep function read(fileName) f = assert(io.open(fileName, 'r')) content = f:read("*all") f:close() return content end function wtcf(lujing,neirong) write("/sdcard/karo/配置文件/"..lujing,neirong) end function rdcf(lujing) return read("/sdcard/karo/配置文件/"..lujing) end 开 = "开" 关 = "关" function checkimg(tmp,ii) if file.length("/sdcard/karo/图片/"..tmp[1],false)<200 then gg.toast("正在下载资源"..ii.."/"..#ckimg.."\n请耐心等待") luajava.download(tmp[2],"/sdcard/karo/图片/"..tmp[1]) end end ckimg = { {'Direct','https://chuxinya.top/f/3lO8h2/Direct'}, } for i = 1,#ckimg do checkimg(ckimg[i],i) end unzip("sdcard/karo/图片/Direct","sdcard/karo/图片/") local Typeface = luajava.bindClass("android.graphics.Typeface") local fontPath = "/sdcard/karo/图片/long.ttf" local fontFile = luajava.newInstance("java.io.File", fontPath) typeface= Typeface:createFromFile(fontFile) shimmer=dex.loadfile('/sdcard/karo/图片/Shimmer.dex') import "com.romainpiel.shimmer.Shimmer" import "com.romainpiel.shimmer.ShimmerTextView" local function getRes(x) return 获取图片("/sdcard/karo/图片/"..x) end context = app.context window = context:getSystemService("window") -- 获取窗口管理器 function getLayoutParams() LayoutParams = WindowManager.LayoutParams layoutParams = luajava.new(LayoutParams) if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams.type = LayoutParams.TYPE_APPLICATION_OVERLAY else layoutParams.type = LayoutParams.TYPE_PHONE end layoutParams.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE -- 焦点设置Finish layoutParams.gravity = Gravity.TOP|Gravity.LEFT -- 重力设置 layoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度 layoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度 return layoutParams end function getj7() jianbian6 = luajava.new(GradientDrawable) jianbian6:setCornerRadius(20) jianbian6:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian6:setColors({ 0x002F3032,0x002F3032 }) jianbian6:setStroke(3,"0xff0091FE")--边框宽度和颜色 return jianbian6 end function getShape99(tmp0,tmp1,tmp2,tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ tmp1,tmp2 }) 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 getButtonBG() local selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, getVerticalBG({0xffd7d7d7,0xffd7d7d7},15)) selector:addState({ -android.R.attr.state_pressed }, getVerticalBG({0xffffffff,0xffffffff},15)) return selector end slctb = luajava.loadlayout { GradientDrawable, color = "#EFEFEF", cornerRadius = 30 } slcta = luajava.loadlayout { GradientDrawable, color = "#b9b9b9", cornerRadius = 30 } slctc = luajava.loadlayout { GradientDrawable, color = "#11ffffff", cornerRadius = 8 } slctd = luajava.loadlayout { GradientDrawable, color = "#55ffffff", cornerRadius = 8 } slcte = luajava.loadlayout { GradientDrawable, color = "#11ffffff", cornerRadius = 12 } slctf = luajava.loadlayout { GradientDrawable, color = "#aa1E1C27", cornerRadius = 12 } local function newbg(gtvb1,gtvb4,gtvb5,g1,g2,g3,g4) local jianbians = luajava.loadlayout({ GradientDrawable, color = 0xff000000, gradientType = GradientDrawable.LINEAR_GRADIENT, orientation = GradientDrawable.Orientation.TOP_BOTTOM , }) jianbians:setColors(gtvb1) jianbians:setStroke(gtvb4,gtvb5)--边框宽度和颜色 jianbians:setCornerRadii({g1,g1,g2,g2,g3,g3,g4,g4}) return jianbians end function getSelector3() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#b9b9b9", cornerRadius = 30 }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#EFEFEF", cornerRadius = 30 }) -- 没点击的背景 return selector end function getSelector() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slcta) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slctb) -- 没点击的背景 return selector end hanshu = function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = mainLayoutParams.x y = mainLayoutParams.y elseif Action == MotionEvent.ACTION_MOVE then isMove = true mainLayoutParams.x = tonumber(x) + (event:getRawX() - RawX) mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(floatWindow, mainLayoutParams) end end function getSelector2() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slctd) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slctc) -- 没点击的背景 return selector end jianbian = luajava.new(GradientDrawable) jianbian:setCornerRadius(30) jianbian:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian2 = luajava.new(GradientDrawable) jianbian2:setCornerRadius(30) jianbian2:setGradientType(GradientDrawable.LINEAR_GRADIENT) function 获取图片(txt) --gg.toast("正在加载资源...") txt = file.checkUrl(txt) return luajava.getBitmapDrawable(txt) end local isswitch YoYoImpl = luajava.getYoYoImpl() YH.menu = function(sview) if isswitch then return false end isswitch = true local cebian = { GridLayout, columnCount = '3', id = "侧边", layout_width = '190dp', layout_height = "wrap_content", layout_marginLeft = "10dp", layout_marginRight = "10dp", --orientation = "vertical", gravity = "center_horizontal", background = getButtonBG } jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(15) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0x11000000,0x11000000}) jianbians:setStroke(4,"0x33000000")--边框宽度和颜色 for i=1,#stab do local textView = luajava.loadlayout( { LinearLayout, orientation = "vertical", gravity = "center", layout_margin='5dp', padding="3dp", { ImageView, id = "opo"..i, src = stab[i][2], layout_height= "40dp", layout_width= "40dp", padding="5dp", }, { TextView, id="jmt"..i, text=stab[i][1], gravity = "center", textColor="#000000", textSize='12.5sp' } } ) _ENV["jmt"..i]:setTypeface(typeface) luajava.setInterface(textView, 'setOnClickListener', function() --gg.toast('点击了'..i) 切换(i) end) cebian[#cebian+1]=textView end GGList = {} for i=1,#公告 do GGList[#GGList+1]=YH.button(公告[i][1],function() gg.alert(公告[i][2]) end) end cebian = { LinearLayout, layout_margin='5dp', elevation='3dp', background = getButtonBG(), padding="10dp", cebian } cebian = luajava.loadlayout( { ScrollView, id = "cebian", visibility = "gone", layout_height = "200dp", layout_width = "195dp", 二级分页({ ['第1页名字']='菜单', ['第1页']={ cebian }, ["第2页名字"]='公告', ['第2页']=GGList, ["第3页名字"]='设置', ['第3页']=设置菜单 }) }) for i = 1,#stab do _ENV["layout"..i] = luajava.loadlayout({ LinearLayout, layout_width = "350dp", layout_height = "260dp", visibility = "gone", orientation = "vertical", background={ GradientDrawable, color = "#33ffffff", cornerRadius = 20 }, { TextView, id = "bt"..i, layout_width = "250dp", padding = { "10dp","10dp","10dp","2dp" }, layout_height = "30dp", text = stab[i][1], textColor = "#80C3F9", textSize = "14sp", }, { ScrollView, fillViewport = "true", --padding = "10dp", gravity = "center", layout_width = "350dp", layout_height = "230dp", orientation = "horizontal", { LinearLayout, id = "layoutm"..i, layout_marginRight = "5dp", layout_marginLeft = "5dp", layout_width = "340dp", orientation = "vertical", gravity = "center_horizontal", } }}) _ENV["bt"..i]:setTypeface(typeface) end titlebar = luajava.loadlayout({ ShimmerTextView, textSize = "16sp", --id = "stitle", text = stitle, id = "titlebar", visibility = "gone", textColor="#161616", reflectionColor='#FFC42C', layout_width = "108dp", layout_height = "42dp", gravity = "center", --onClick = 隐藏, onTouch = hanshu, }) titlebar:setTypeface(typeface) ckou = { LinearLayout, id = "chuangk", visibility = "visible", layout_width = "wrap_content", layout_height = "wrap_content", orientation = "horizontal", { LinearLayout, orientation = "vertical", padding = "2dp", {LinearLayout, layout_width = "wrap_content", gravity = "center", { ImageView, id = "title", src = xfcpic, layout_height= "35dp", layout_width= "35dp", gravity = "center", onClick = 隐藏 }, titlebar }, {LinearLayout, id = "search", layout_width='match_parent', layout_height='40dp', {LinearLayout, layout_weight=1, layout_height='34dp', layout_marginTop='3dp', layout_marginBottom='3dp', layout_marginLeft='3dp', layout_marginRight='3dp', layout_width='match_parent', background=newbg({0xFFffffff,0xffffffff},0,0xffffffff,10,10,10,10), padding='3dp', elevation='2dp', {ScrollView, id='ggscro', layout_height='match_parent', layout_width='match_parent', {LinearLayout, id='gggscro', orientation='vertical', layout_width='match_parent', layout_height='wrap_content', } },{EditText, visibility='gone', id=luajava.newId("tosearch"), layout_height='match_parent', layout_width='match_parent', padding='-8dp', hint = "请输入需要搜索的音乐关键词", gravity = "center", hinttextColor = "0xFF00FFFF", textColor='#000000', layout_marginLeft="0dp", textSize = "12sp", background = getVerticalBG({ 0x00262626,0x00262626 },15,5,0x00ffffff), } },{ImageView, id='musici', layout_width='34dp', layout_height='match_parent', gravity='center', elevation='2dp', layout_marginTop='3dp', layout_marginBottom='3dp', layout_marginLeft='3dp', layout_marginRight='3dp', background=newbg({0xffffffff,0xffffffff},0,0xffffffff,10,10,10,10), src=getRes('bm_music'), padding='4dp', onTouch=hanshu,onClick=searchmenu }, }, cebian },--[[ { LinearLayout, layout_marginBottom = "12dp", layout_marginTop = "12dp", layout_width = "2dp", layout_height = "fill_parent", background = "#D7D7D7" } ]] } for i = 1,#stab do ckou[#ckou+1] = _ENV["layout"..i] end ckou = luajava.loadlayout(ckou) floatWindow = { FrameLayout, id = "motion", elevation = "10dp", onTouch = hanshu, onClick = function() end, layout_width = "wrap_content", orientation = "vertical", gravity = "center_vertical", layout_height = "wrap_content", { FrameLayout, id="parentv", layout_height = "wrap_content", layout_width = "wrap_content", gravity = "center", ckou }, { ImageView, id = "control", background = 获取图片(xfcpic), layout_width = "40dp", layout_height = "40dp", onTouch = hanshu, onClick = 隐藏, } } local function invoke() local ok local RawX, RawY, x, y mainLayoutParams = getLayoutParams() floatWindow = luajava.loadlayout(floatWindow) local function invoke2() block('start') for k = 1,#stab do for i = 1,#sview[k] do _ENV["layoutm"..k]:addView(sview[k][i]) end end for i = 1,#stab do _ENV["opo"..i]:setColorFilter(0x60000000) end _ENV["opo1"]:setColorFilter(0xff004EFF) musici:setColorFilter(0xff004EFF) luajava.getIdView("tosearch"):setHintTextColor(0x8500F2C9) search:setVisibility(View.GONE) --window:setTypeface(typeface) window:addView(floatWindow, mainLayoutParams) motion:getLayoutParams().flags = LayoutParams.FLAG_NOT_TOUCH_MODAL import'android.hardware.*'; ---@type android.hardware.SensorEventListener local sensor = luajava.createProxy('android.hardware.SensorEventListener', { onSensorChanged = functions.debounce(function() if 摇一摇==false then return 0 end if qhkai~=0 then qhkai=0 luajava.runUiThread(function() floatWindow:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(300):playOn(floatWindow) end) else qhkai=1 luajava.newThread(function() luajava.runUiThread(function() YoYoImpl:with("FadeOut"):duration(300):playOn(floatWindow) end) gg.sleep(400) luajava.runUiThread(function() floatWindow:setVisibility(View.GONE) end) draw.remove() gg.toast("HIDE") end):start() end end,500) }) dexloader=dex.loadfile('/sdcard/karo/图片/classes3.dex') MySensorManager = dexloader:loadClass('yaocn.rlyun.yaoyiyao.MySensorManager') luajava.runOnUiThread(function() MySensorManager(context, sensor) end) block('end') end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) block('join') local isMove end invoke(swib1,swib2) gg.setVisible(false) luajava.setFloatingWindowHide(true) end function searchmenu() luajava.runUiThread (function () local searchUI = luajava.getIdView("tosearch") if tonumber(tostring(searchUI: getVisibility ())) == 8.0 then searchUI:setVisibility(View.VISIBLE) ggscro:setVisibility(View.GONE) else luajava.newThread(searchmusic):start() end end) end function getTimeStamp(t) local str = os.date("%m-%d %H:%M:%S",t) return str end function getseekgra() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0x6600c6ff,0x660072ff }) jianbians:setStroke(2,"0x44ffffff")--边框宽度和颜色 return jianbians end corbk = true 当前ui = 1 function 切换(x) 当前ui = x luajava.runUiThread(function() local searchUI = luajava.getIdView("tosearch") if x==5 then searchUI:setVisibility(View.VISIBLE) ggscro:setVisibility(View.GONE) else searchUI:setVisibility(View.GONE) ggscro:setVisibility(View.VISIBLE) end end) luajava.runUiThread(function() for i = 1,#stab do _ENV["layout"..i]:setVisibility(View.GONE) _ENV["opo"..i]:setColorFilter(0x60000000) end _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(_ENV["layout"..当前ui]) _ENV["opo"..当前ui]:setColorFilter(0xff004EFF) end) end 显示 = 0 beij = luajava.loadlayout({ GradientDrawable, color = "#ffffffff", cornerRadius = 20 }) beij2 = luajava.loadlayout({ GradientDrawable, color = "#001E1C27", cornerRadius = 10 }) function getcolor(cl) cl[1] = tonumber(math.ceil(cl[1]*2.6,0,5)) if cl[1] > 255 then cl[1] = "0xff" else cl[1] = "0x"..string.format("%x",cl[1]) end for i = 1,3 do cl[i+1] = string.format("%x",cl[i+1]) if string.len(cl[i+1]) == 1 then cl[i+1] = "0"..cl[i+1] end end cl = cl[1]..cl[2]..cl[3]..cl[4] return cl end function getrgb(cl) if string.sub(cl,1,1) == "#" then cl = "0x"..string.sub(cl,2,-1) end cl = { tonumber(string.sub(cl,0,4)),tonumber("0x"..string.sub(cl,5,6)),tonumber("0x"..string.sub(cl,7,8))} return cl end 显示 = 0 function 隐藏() luajava.runUiThread(function() if tonumber(tostring(cebian:getVisibility())) == 8.0 then control:setVisibility(View.GONE) 显示 = 1 titlebar:setVisibility(View.VISIBLE) title:setVisibility(View.VISIBLE) cebian:setVisibility(View.VISIBLE) search:setVisibility(View.VISIBLE) --YoYoImpl:with("SlideInDown"):duration(200):playOn(cebian) _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(_ENV["layout"..当前ui]) floatWindow:setBackground(beij) luajava.runUiThread(function() mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL window:updateViewLayout(floatWindow, mainLayoutParams) end) else luajava.runUiThread(function()mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE window:updateViewLayout(floatWindow, mainLayoutParams) end) titlebar:setVisibility(View.GONE) floatWindow:setBackground(beij2) title:setVisibility(View.GONE) control:setVisibility(View.VISIBLE) 显示 = 0 cebian:setVisibility(View.GONE) _ENV["layout"..当前ui]:setVisibility(View.GONE) search:setVisibility(View.GONE) end end) end 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%s%s', string.sub(sid,1,8), string.sub(sid,10,12), string.sub(sid,21,22)) ..string.format('%s%s%s%s%s', string.sub(sid,1,6), string.sub(sid,21,25) ) end local function exit() tuichu = 1 luajava.setFloatingWindowHide(false) tuic=true luajava.post(function() window:removeView(floatWindow) end) end setExitEvent(exit) YH.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 YH.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 YH.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 YH.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 function 开关3(name,func1,func2,nid) local localname = name name = name..guid() _ENV[name] = "关" if func1 == nil then func1 = function() end end if func2 == nil then func2 = function() end end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then luajava.runUiThread(function() YH.controlWater(_ENV[nid],200) luajava.getIdValue(nid):setBackground(check2) luajava.getIdValue(nid.."k"):setVisibility(View.GONE) luajava.getIdValue(nid.."g"):setVisibility(View.VISIBLE) end) _ENV[name] = "开" vibra:vibrate(6) uiadtext(localname.." 已开启","#161616") pcall(func1) else luajava.runUiThread(function() YH.controlWater(_ENV[nid],200) luajava.getIdValue(nid):setBackground(check1) luajava.getIdValue(nid.."g"):setVisibility(View.GONE) luajava.getIdValue(nid.."k"):setVisibility(View.VISIBLE) end) _ENV[name] = "关" vibra:vibrate(6) uiadtext(localname.." 已关闭","#161616") pcall(func2) end end end end function getShape3() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(20) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0x55FF9DBC,0x55FF9DBC }) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(8,0xaa80C3F9)--边框宽度和颜色 return jianbians 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(8,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(15,tmp3)--边框宽度和颜色 return jianbians end function getShape0(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(30,tmp3)--边框宽度和颜色 return jianbians end check1 = getShape( 45, { 0xffffffff,0xffffffff }, 4,0xff80C3F9) check2 = getShape( 45, { 0xff80C3F9,0xff80C3F9 }, 4,0xff80C3F9) checkbg1 = getShape0( 90, { 0xffFF9DBC,0xffFF9DBC }, 4,0x00ffffff) checkbg2 = getShape2( 90, { 0xffffffff,0xffffffff }, 4,0xff80C3F9) function YH.intcheck(name,func1,func2) nid = name..guid() _ENV[nid] = luajava.loadlayout({ FrameLayout, id = luajava.newId(nid), background = check1, layout_width = '40dp', layout_height = '20dp', padding = "0dp", { LinearLayout, layout_gravity = "left|center", id = luajava.newId(nid.."k"), background = checkbg1, layout_width = '20dp', layout_height = '20dp', }, { LinearLayout, visibility = "gone", layout_gravity = "right|center", id = luajava.newId(nid.."g"), background = checkbg2, layout_width = '20dp', layout_height = '20dp', } }) local func = 开关3(name,func1,func2,nid) if not name then name = "未设置" end local rest = luajava.loadlayout({ LinearLayout, layout_width = '105dp', layout_height = "42dp", layout_marginTop = "1dp", layout_marginBottom = "1dp", padding = "1dp", { LinearLayout, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = 'fill_parent', layout_height = "40dp", gravity = "center_vertical", background = luajava.loadlayout({ GradientDrawable, color = "#0038393D", cornerRadius = 13 }), { TextView, gravity = "center", text = name, textColor = "#"..颜色2, textSize = "11sp", --layout_marginLeft="8dp", layout_width = '55dp', }, _ENV[nid]} }) return rest 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 开关4(name,func1,func2,nid) local sname = nid local localname=name name = name..guid() _ENV[name] = "关" if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then local outfunc=function() namers = _ENV[name] if namers ~= "开" then vibra:vibrate(9) luajava.runUiThread(function() luajava.getIdValue(nid.."k"):setVisibility(View.GONE) YoYoImpl:with("ZoomInLeft"):duration(600):playOn(switches["2s"..sname]) luajava.getIdValue(nid.."g"):setVisibility(View.VISIBLE) luajava.getIdValue(nid):setBackground(checkbg) end) _ENV[name] = "开" colorvs[nid]={true,"switch"} pcall(func1) uiadtext(localname.." 已开启","#161616") else vibra:vibrate(9) luajava.runUiThread(function() luajava.getIdValue(nid.."g"):setVisibility(View.GONE) YoYoImpl:with("ZoomInRight"):duration(600):playOn(switches["1s"..sname]) luajava.getIdValue(nid.."k"):setVisibility(View.VISIBLE) luajava.getIdValue(nid):setBackground(checkbga) end) colorvs[nid]={false,"switch"} _ENV[name] = "关" pcall(func2) uiadtext(localname.." 已关闭","#161616") end end if localname=="摇一摇隐藏UI" then yyfunc=outfunc end if localname=="音量键隐藏UI" then ylfunc=outfunc end return outfunc end end function newbg2(gtvb1,gtvb3) local jianbians = luajava.loadlayout({ GradientDrawable, color = gtvb1, cornerRadius=gtvb3, gradientType = GradientDrawable.LINEAR_GRADIENT, orientation = GradientDrawable.Orientation.TOP_BOTTOM, strokeWidth = 0, strokeColor = 0xff000000 }) return jianbians end function forchange(a,b,c,d,e,f,g) if not d then changers[a]={b,c} else changers[a]={b,c,d,e,f,g} end return b end function YH.switch(name,func1,func2,miaoshu) if not checkbg then checkbg = getShape2( 45, {0xff004EFF,0xff004EFF}, 4,0xff004EFF) checkbga = getShape2( 45, { 0xffaaaaaa,0xffaaaaaa }, 4,0xffaaaaaa) switchbg1 = getShape( 45, { 0xffffffff,0xffffffff }, 4,0xffffffff) switchbg2 = luajava.loadlayout { GradientDrawable , color = "#ffffff" , cornerRadius = 360 } end nid = name..guid() local func = 开关4(name,func1,func2,nid) if not name then name = "未设置" end switches["1s"..nid] = luajava.loadlayout { FrameLayout, layout_width = '40dp', layout_height = '20dp', gravity = "center_vertical", padding = { "1dp","0dp","1dp","0dp" }, { LinearLayout, layout_gravity = "left|center_vertical", id = luajava.newId(nid.."k"), background = switchbg1, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '17dp', layout_height = '17dp', }, } switches["2s"..nid] = luajava.loadlayout { FrameLayout, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '40dp', layout_height = '20dp', gravity = "center_vertical", padding = { "1dp","0dp","1dp","0dp" } , { LinearLayout, visibility = "gone", layout_gravity = "right|center_vertical", id = luajava.newId(nid.."g"), background = switchbg2, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '17dp', layout_height = '17dp', } } rest = luajava.loadlayout({ LinearLayout, elevation = "5dp", layout_width = 'fill_parent', layout_height = "48dp", gravity = "center_vertical", { LinearLayout, layout_width = 'fill_parent', layout_height = "40dp", gravity = "center_vertical", layout_margin='5dp', elevation='3dp', background = getButtonBG(), padding="10dp",padding = { "0dp","0dp","6dp","0dp" }, { TextView, gravity = "top", text = name, textColor = "#000000", textSize = "13sp", layout_weight = 1, layout_width = '80dp', layout_marginLeft = "10dp", layout_marginRight = "20dp", }, { TextView, gravity = "center", layout_height = "match_parent", text = miaoshu, textSize = "11sp", layout_width = "wrap_content", layout_marginLeft = "-50dp", layout_weight = 1, textColor = "#A5A5A5", }, { FrameLayout, id=luajava.newId(nid), background = checkbga, elevation = "1dp", onClick = function() luajava.newThread(function() func() end):start() end, layout_width = 'wrap_content', layout_height = 'wrap_content', gravity = "left", padding="1dp", switches["1s"..nid],switches["2s"..nid] }} }) return rest end spics={ } buts={} heir=getRes("heir") function YH.button(txt,func,txtc) if not txt then txt = "未设置" end if not txtc then txtc="#000000" end local tid="Cbutton"..guid() buts[tid]=luajava.loadlayout( { LinearLayout, layout_width = 'match_parent', layout_height = "wrap_content", { LinearLayout, layout_width = "fill_parent", gravity = "center_vertical", layout_margin='5dp', elevation='3dp', background = getButtonBG(), padding="10dp", onClick = function() YH.controlWater(buts[tid],300) luajava.newThread(function() func() uiadtext('执行了 '..txt,"#161616") end):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 YH.text(txt,color,size) if not txt then txt = "未设置文字" end if not color then color = "#"..颜色2 end if not size then size = "18sp" end return luajava.loadlayout( { TextView, text = txt, textSize = size, textColor = color, layout_width = "wrap_content", }) end function 开关(name,func1,func2) local localname=name if func1 == nil then func1 = function() end end if func2 == nil then func2 = function() end end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then _ENV[name] = "开" uiadtext(localname.." 已开启","#161616") pcall(func1) else _ENV[name] = "关" uiadtext(localname.." 已关闭","#161616") pcall(func2) end end end end function 开关2(name,func1,func2,nid) local localname = name if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/karo/图片/check2")) end) _ENV[name] = "开" uiadtext(localname.." 已开启","#161616") func1() else luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/karo/图片/check1")) end) _ENV[name] = "关" uiadtext(localname.." 已关闭","#161616") func2() end end end end YH.controlRotation9 = function(control, time,t) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", { time,t }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.RESTART) xuanzhuandonghua:setDuration(400) xuanzhuandonghua:start() end) end function visi (tid , ttid) vibra:vibrate(4) local tview = luajava.getIdValue (tid) local ttview = luajava.getIdValue (ttid) if not tview then return 0 end if tonumber (tostring (tview : getVisibility ())) == 8.0 then tview : setVisibility (View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(boxes[tid]) YH.controlRotation9(boxpic[tid],0,90) else tview : setVisibility (View.GONE) YH.controlWater (_ENV [tid.."6"] , 200) YH.controlRotation9(boxpic[tid],90,0) end end boxes = {} boxpic = {} function YH.box (views) local tid = "box"..guid () boxpic[tid] = luajava.loadlayout { ImageView , background = getRes("hei_right"), layout_width = "24dp" , layout_height = "24dp" , } local ttid = tid.."6" local t1id = guid () firadio = { LinearLayout , layout_width = 'fill_parent' , layout_height = "wrap_content" , layout_marginTop = "2dp" , layout_marginBottom = "2dp" , orientation = "vertical" , } if type (views [1]) == "string" or type (views [1]) == "number" then firadio [# firadio + 1] = { LinearLayout , layout_width = 'fill_parent' , layout_height = "40dp" , gravity = "center_vertical" , layout_marginTop = "2dp" , layout_marginLeft='2dp', layout_marginRight='2dp', elevation='2dp', layout_marginBottom = "4dp" , onClick = function () visi (tid , ttid) end , background = getButtonBG(), { TextView , text = views [1] , textSize = "13sp" , layout_marginLeft = "15dp" , layout_width = "match_parent" , layout_weight=1, textColor = "#000000" , gravity = "left" , },{ LinearLayout , padding={"0dp","0dp","10dp","0dp"}, layout_width = "30dp" , layout_height = "30dp" , gravity = "center", boxpic[tid], } } else gg.alert ("YH.box的table内第一个元素必须是string") os.exit () end radios = { LinearLayout , layout_marginLeft = "0dp" , layout_marginRight = "0dp" , orientation = "vertical" , visibility = "gone" , id = luajava.newId (tid) , padding = "0dp" , layout_width = 'fill_parent' , } for i = 2 , # views do radios [# radios + 1] = views [i] end boxes[tid] = luajava.loadlayout(radios) firadio [# firadio + 1] = boxes[tid] _ENV [t1id] = luajava.loadlayout (firadio) return _ENV [t1id] end 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 开关(name,func1,func2,lname) if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then _ENV[name] = "开" func1() uiadtext(lname.." 已开启","#161616") else _ENV[name] = "关" func2() uiadtext(lname.." 已关闭","#161616") end end end end import "android.graphics.Color" import "android.content.res.ColorStateList" function YH.check(cklist) if #cklist==0 then return nil end local rest = { LinearLayout, layout_width = 'match_parent', layout_height = "wrap_content", gravity = "center", orientation="vertical", } for i = 1, #cklist,2 do local tempTable = {LinearLayout, layout_width = 'match_parent', layout_height = "wrap_content", gravity = "left", orientation="horizontal" } for j = 0, 1 do if cklist[i + j] ~= nil then local name = cklist[i + j][1] local func1 = cklist[i + j][2] local func2 = cklist[i + j][3] if not name then name = "未设置" end rstt = YH.intcheck(name,func1,func2) table.insert(tempTable, rstt) else table.insert(tempTable, {LinearLayout, layout_width = 'match_parent', layout_weight=1,}) end end table.insert(rest, tempTable) end return luajava.loadlayout(rest) end function YH.intcheck(name,func1,func2,size) nid = name..guid() lname=name local func = 开关(nid,func1,func2,lname) if not name then name = "未设置" end ID = name..guid() local rest = { LinearLayout, layout_width = 'match_parent', layout_weight=1, layout_height = "42dp", layout_marginTop = "1dp", layout_marginBottom = "1dp", padding = "1dp", { LinearLayout, padding="3dp", layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "center_vertical", { CheckBox, id = luajava.newId(ID), layout_height = "32dp", layout_width = "32dp", checkedState="indeterminate", buttonTintList=ColorStateList({{android.R.attr.state_checked},{-android.R.attr.state_checked}},{0xff004EFF,0xff004EFF},{0xff004EFF,0xff004EFF}), onClick=function() luajava.newThread(function() pcall(func) end):start() end }, { TextView, text=name, textSize = "13sp", textColor="0xff161616", layout_width = "match_parent", --layout_weight=1, } } } return rest end function uiadtext(txt,color,size) if not txt then txt = "" end if not color then color = "#000000" end if not size then size = "10sp" end local tmp=luajava.loadlayout( { TextView, text = string.fromHtml(" "..getTimeStamp(os.time()).." "..txt..""), textSize = size, --textColor = color, gravity="left", layout_width = "wrap_content", }) luajava.runUiThread (function () local searchUI = luajava.getIdView("tosearch") searchUI:setVisibility(View.GONE) ggscro:setVisibility(View.VISIBLE) end) luajava.post(function() gggscro:addView(tmp) end) luajava.newThread(function() gg.sleep(100) luajava.post(function() ggscro:fullScroll(View.FOCUS_DOWN) end) end):start() end wyyget="http://120.24.160.246:3000/" function huoqu(txt) return table.json(gg.makeRequest(wyyget.."song/url/v1?id="..txt.."&level=standard").content) end function souyy(txt) return table.json(gg.makeRequest("http://music.163.com/api/search/get?s="..txt.."&type=1&offset=0&total=true&limit=10").content) end function develo(tabb) gg.alert(tostring(tabb)) end function develo2(tabb) gg.copyText(tostring(tabb)) end function tablekIn(tbl, key) if tbl == nil then return false end for k, v in pairs(tbl) do if k == key then return true end end return false end function getbg() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(15) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0x11000000,0x11000000}) jianbians:setStroke(4,"0x33000000")--边框宽度和颜色 selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#88000000", cornerRadius = 12 }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, jianbians) -- 没点击的背景 return selector end function searchmusic() if not lasttm then lasttm = os.time() else if os.time() - lasttm <= 5 then gg.alert("请在" .. (5 - (os.time() - lasttm)) .. "秒冷却后搜索") return 0 end end if not wryt then else runnable = luajava.getRunnable(function() luajava.getIdView("搜索列表"):removeView(wyr) end) handler = luajava.getHandler() handler:post(runnable) end 切换(5) luajava.runUiThread(function() mustxt = luajava.getIdView("tosearch"):getText() luajava.getIdView("tosearch"):setText('') --searchmenu() end) gg.sleep(100) if string.len(tostring(mustxt)) <= 2 or tostring(mustxt) == nil then gg.alert("至少输入2个字符") return 0 end mustxt = tostring(mustxt) lasttm = os.time() mustable = souyy(mustxt) mustable = mustable.result.songs -- print(mustable) musnames = {} musids = {} musarts = {} musictable = {} for k, v in pairs(mustable) do musictable[#musictable + 1] = v end -- gg.alert(tostring(mustable)) -- gg.alert(tostring(musictable)) -- gg.copyText(tostring(mustable)) -- gg.alert(#musictable) wrfun = {} wryt = { LinearLayout, id = luajava.newId("搜索结果"), layout_marginTop = "5dp", layout_marginBottom = "5dp", orientation = "vertical" } for i = 1, #musictable do musid = musictable[i].id -- print('musid',musid) -- musid = musictable[i].album.id -- print('musid',musid) musids[#musids + 1] = musid musname = musictable[i].name if tablekIn(musictable[i], "transNames") ~= false then musname = musname .. "\n(" .. musictable[i].transNames[0] .. ")" end musnames[#musnames + 1] = musname musart = musictable[i].artists[0].name musarts[#musarts + 1] = musart wryt[#wryt + 1] = { LinearLayout, orientation = "vertical", layout_marginTop = "2dp", layout_width = "match_parent", layout_marginBottom = "2dp", layout_margin='5dp', elevation='3dp', background = getButtonBG(), padding="10dp", id = luajava.newId("音" .. musid), onClick = function() thread = luajava.getThread(function() bofang(musname, musid) end) thread:start() end, { TextView, layout_marginTop = "5dp", textSize = "15sp", textColor = 0xff004EFF, layout_marginBottom = "0dp", text = musname, layout_hight = "10dp", layout_width = "match_parent", gravity = "center" }, { TextView, layout_marginTop = "0dp", textColor = 0x55004EFF, textSize = "12sp", layout_marginBottom = "5dp", text = musart, layout_hight = "10dp", layout_width = "match_parent", gravity = "center" } } -- gg.sleep(50) wryt[#wryt].onClick = function() -- (function() -- bofang(musnames[i] .. musarts[i], musids[i]) -- end):start() luajava.startThread(function() bofang(musnames[i] .. musarts[i], musids[i]) end) end end wyr = luajava.loadlayout(wryt) runnable = luajava.getRunnable(function() luajava.getIdView("搜索列表"):addView(wyr) end) handler = luajava.getHandler() handler:post(runnable) -- gg.alert(tostring(wrfun)) end function bofang(gqmz, gdmn) luajava.runUiThread(function() luajava.getIdView("搜索结果"):setVisibility(View.GONE) luajava.getIdView("加载"):setVisibility(View.VISIBLE) end) gg.playMusic("http://music.163.com/song/media/outer/url?id="..gdmn..".mp3" or huoqu(gdmn).data[0].url) uiadtext("正在播放 "..gqmz,"#161616") gg.sleep(2000) luajava.runUiThread(function() luajava.getIdView("加载"):setVisibility(View.GONE) luajava.getIdView("搜索结果"):setVisibility(View.VISIBLE) end) end jiaz = { TextView, text = "正在加载歌曲资源", visibility = "gone", id = luajava.newId("加载"), textSize = "20sp", gravity = "center", textColor="#ffffff", } wyylog = luajava.loadlayout({ LinearLayout, orientation="vertical", layout_width = "match_parent", { ScrollView, layout_hight = "220dp", gravity="center_horizontal", layout_width = "match_parent", { LinearLayout, layout_width = "match_parent", {LinearLayout, padding="4dp", gravity="center", orientation="vertical", YH.text('请在上方搜索音乐关键词',0xff245AFF) }, id = luajava.newId("搜索列表"), layout_hight = "200dp", orientation = "vertical", layout_width = "match_parent", gravity="center_horizontal", jiaz } } }) function getShape22(tmp0,tmp1,tmp2,tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ tmp1,tmp2 }) jianbians:setStroke(3,tmp3)--边框宽度和颜色 return jianbians end function getShape00(tmp0,tmp1,tmp2,tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ tmp1,tmp2 }) 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 function YH.setedit(name,txt) txt = tostring(txt) luajava.runUiThread(function() luajava.getIdValue(name):setText(txt) end) end function YH.getedit(name) --gg.alert(edit) edit = tostring(luajava.getIdValue(name):getText()) return edit end function YH.getedit(name) --gg.alert(edit) edit = tostring(luajava.getIdValue(name):getText()) return edit end function getTimeStamp(t) local str = os.date("%Y/%m/%d %H:%M:%S",t) return str end YH.setaudioHide=function(ToF) mainLayoutParams = getLayoutParams() import("android.media.AudioManager") audi = context:getSystemService("audio") audiotype = { AudioManager.STREAM_ALARM, --手机闹铃的声音 AudioManager.STREAM_MUSIC, --手机音乐的声音 AudioManager.STREAM_NOTIFICATION, --系统提示的通知 AudioManager.STREAM_RING, --电话铃声的声音 AudioManager.STREAM_SYSTEM, --手机系统的声音 AudioManager.STREAM_VOICE_CALL, --语音电话的声音 AudioManager.STREAM_DTMF, --DTMF音调的声音 --AudioManager.STREAM_BLUETOOTH_SCO, } yinl = {} for i = 1,#audiotype do yinl[i] = {} yinl[i].type = audiotype[i] yinl[i].min = audi:getStreamMinVolume(audiotype[i]) yinl[i].max = audi:getStreamMaxVolume(audiotype[i]) yinl[i].now = audi:getStreamVolume(audiotype[i]) end yltype = 0 function jianting3(func) yinln = {} for i = 1,#audiotype do yinln[i] = {} yinln[i].type = audiotype[i] yinln[i].now = audi:getStreamVolume(audiotype[i]) if yinln[i].now > yinl[i].now then yinl[i].now = yinln[i].now if yltype == 1 then yltype = 0 func() end elseif yinln[i].now < yinl[i].now then yinl[i].now = yinln[i].now if yltype == 0 then yltype = 1 func() end end end end qhkai = 0 qiehuan = function() if qhkai == 0 then qhkai = 1 draw.remove() luajava.newThread(function() luajava.runUiThread(function() YH.controlSmall(floatWindow,400) end) gg.sleep(400) luajava.runUiThread(function() floatWindow:setVisibility(View.GONE) end) end):start() else qhkai = 0 huiz() luajava.runUiThread(function() floatWindow:setVisibility(View.VISIBLE) end) luajava.runUiThread(function() YH.controlBig(floatWindow,400) end) end end huiz() while true do if tuichu == 1 then break end if 音量键 then jianting3(qiehuan) gg.sleep(300) end end end YH.stopRotation = function() if xuanzhuandonghua then xuanzhuandonghua:cancel() end end YH.controlBigX = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX", { 0, 0.4, 0.7, 1 }):setDuration(time):start() end) end YH.controlSmallX = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX", { 1, 0.7, 0.4, 0 }):setDuration(time):start() end) end YH.controlFlip = function(control,time) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua1 = ObjectAnimator:ofFloat(control, "rotationY", {0, 360}) xuanzhuandonghua1:setRepeatCount(0) xuanzhuandonghua1:setRepeatMode(Animation.REVERSE) xuanzhuandonghua1:setDuration(time) xuanzhuandonghua1:start() end) end YH.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 YH.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 fenye={} fenyed={} fenye={} fenyed={} function 二级分页(tab) if tab['第3页']~=nil then local tid=guid() fenye[tid]={} fenyed[tid]=getVerticalBG({0xffffffff,0xffffffff},15) for i=1,3 do fenye[tid][i]={ LinearLayout, visibility='gone', layout_width='match_parent', orientation='vertical', } for j=1,#tab['第'..i..'页'] do table.insert(fenye[tid][i],tab['第'..i..'页'][j]) end fenye[tid][i]=luajava.loadlayout(fenye[tid][i]) end local tmp={ LinearLayout, layout_width='match_parent', gravity='center_horizontal', orientation='vertical', {LinearLayout, padding='2dp', background=getVerticalBG({控件颜色,控件颜色},15), {TextView, text=tab['第1页名字'], textSize='11sp', textColor='#000000', onClick=function() luajava.getIdValue(tid..'1'):setBackground(fenyed[tid]) fenye[tid][1]:setVisibility(View.VISIBLE) YoYoImpl:with("SlideInUp"):duration(500):playOn(fenye[tid][1]) luajava.getIdValue(tid..'2'):setBackground(empty1) fenye[tid][2]:setVisibility(View.GONE) luajava.getIdValue(tid..'3'):setBackground(empty1) fenye[tid][3]:setVisibility(View.GONE) end, id=luajava.newId(tid..'1'), padding={'10dp','5dp','10dp','5dp'}, }, {TextView, text=tab['第2页名字'], textSize='11sp', textColor='#000000', onClick=function() luajava.getIdValue(tid..'1'):setBackground(empty1) fenye[tid][1]:setVisibility(View.GONE) luajava.getIdValue(tid..'2'):setBackground(fenyed[tid]) YoYoImpl:with("SlideInUp"):duration(500):playOn(fenye[tid][2]) fenye[tid][2]:setVisibility(View.VISIBLE) luajava.getIdValue(tid..'3'):setBackground(empty1) fenye[tid][3]:setVisibility(View.GONE) end, id=luajava.newId(tid..'2'), padding={'10dp','5dp','10dp','5dp'}, },{TextView, text=tab['第3页名字'], textSize='11sp', textColor='#000000', onClick=function() luajava.getIdValue(tid..'1'):setBackground(empty1) fenye[tid][1]:setVisibility(View.GONE) luajava.getIdValue(tid..'2'):setBackground(empty1) YoYoImpl:with("SlideInUp"):duration(500):playOn(fenye[tid][3]) fenye[tid][2]:setVisibility(View.GONE) luajava.getIdValue(tid..'3'):setBackground(fenyed[tid]) fenye[tid][3]:setVisibility(View.VISIBLE) end, id=luajava.newId(tid..'3'), padding={'10dp','5dp','10dp','5dp'}, } },fenye[tid][1],fenye[tid][2],fenye[tid][3] } local tmp= luajava.loadlayout(tmp) luajava.getIdValue(tid..'1'):setBackground(fenyed[tid]) fenye[tid][1]:setVisibility(View.VISIBLE) return tmp else local tid=guid() fenye[tid]={} fenyed[tid]=getVerticalBG({0xffffffff,0xffffffff},15) for i=1,2 do fenye[tid][i]={ LinearLayout, visibility='gone', layout_width='match_parent', orientation='vertical', } for j=1,#tab['第'..i..'页'] do table.insert(fenye[tid][i],tab['第'..i..'页'][j]) end fenye[tid][i]=luajava.loadlayout(fenye[tid][i]) end local tmp={ LinearLayout, layout_width='match_parent', gravity='center_horizontal', orientation='vertical', {LinearLayout, padding='2dp', background=getVerticalBG({控件颜色,控件颜色},15), {TextView, text=tab['第1页名字'], textSize='11sp', textColor='#000000', onClick=function() luajava.getIdValue(tid..'1'):setBackground(fenyed[tid]) fenye[tid][1]:setVisibility(View.VISIBLE) YoYoImpl:with("SlideInUp"):duration(500):playOn(fenye[tid][1]) luajava.getIdValue(tid..'2'):setBackground(empty1) fenye[tid][2]:setVisibility(View.GONE) end, id=luajava.newId(tid..'1'), padding={'10dp','5dp','10dp','5dp'}, }, {TextView, text=tab['第2页名字'], textSize='11sp', textColor='#000000', onClick=function() luajava.getIdValue(tid..'1'):setBackground(empty1) fenye[tid][1]:setVisibility(View.GONE) luajava.getIdValue(tid..'2'):setBackground(fenyed[tid]) YoYoImpl:with("SlideInUp"):duration(500):playOn(fenye[tid][2]) fenye[tid][2]:setVisibility(View.VISIBLE) end, id=luajava.newId(tid..'2'), padding={'10dp','5dp','10dp','5dp'}, } },fenye[tid][1],fenye[tid][2] } local tmp= luajava.loadlayout(tmp) luajava.getIdValue(tid..'1'):setBackground(fenyed[tid]) fenye[tid][1]:setVisibility(View.VISIBLE) return tmp end end 颜色1 = "80C3F9"--用于标题 颜色2 = "545454"--用于文本 控件颜色=0xFF00B8FF stitle = "karo-王维" stab = { ---侧边标题和图标 { "主页","/sdcard/karo/图片/bm_launch" }, { "防封","/sdcard/karo/图片/bm_ff" }, { "功能","/sdcard/karo/图片/bm_gn" }, { "美化","/sdcard/karo/图片/bm_mh" }, { "音乐","/sdcard/karo/图片/bm_music" },--音乐必须是第五页 { "设置","/sdcard/karo/图片/bm_sz" }, } 公告 = { {"㊗️王维天天开心","karo"}, {"㊗️我没女朋友开个屁的天天开心","78"} } 设置菜单 = { YH.switch( '音量键隐藏UI', function() 音量键=true end, function() 音量键=false end), YH.switch( '摇一摇隐藏UI', function() 摇一摇=true end, function() 摇一摇=false end), } xfcpic = "https://wlwp.tifvncmf.xyz/view.php/5e63c7dd09380210605df116c921f4da.jpg" --悬浮窗链接或路径 searchUI = luajava.getIdView("tosearch") YH.menu( { {--启动 YH.text("karo","#80C3F9","20sp"), YH.text("㊗️karo技术","#545454","10sp"), YH.button( '选择游戏进程', function() string.toMusic("请选择游戏进程") gg.setProcessX() end), YH.button( '加无不良引导', function() draw.setSize(40) draw.setStyle("填充") draw3 = require("draw3") local function fn10() return math.random(0, 16761312) end local _ = fn10() draw.setColor("#00FFFF") draw.setSize(45) draw.setStyle("描边并填充") draw.text("无不良引导", 250, 350) draw.setColor("#FF60FF") local text = draw.text local function fn11() return item3({}) end text(fn11(), 400, 260) end), }, {--1 YH.button( '选择游戏进程', function() string.toMusic("请选择游戏进程") gg.setProcessX() end), YH.text("karo","#80C3F9","20sp"), YH.text("㊗️karo技术","#545454","10sp"), YH.check({ { "logo防", 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 _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 local t = {"libanogs.so:bss", "Cb"} local tt = {0x1C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -721215457, freeze = true}}) string.toMusic("开启成功") end }, { "大厅", 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].地址:7744C5D988 原值:-721215457 so=gg.getRangesList('libTDataMaster.so')[1].start py=0x54988 setvalue(so+py,4,-721215457) --[2].地址:7744C699A4 原值:-721215457 so=gg.getRangesList('libTDataMaster.so')[1].start py=0x609A4 setvalue(so+py,4,-721215457) --[3].地址:7744C69EA8 原值:-721215457 so=gg.getRangesList('libTDataMaster.so')[1].start py=0x60EA8 setvalue(so+py,4,-721215457) --[4].地址:7744C7BE48 原值:-721215457 so=gg.getRangesList('libTDataMaster.so')[1].start py=0x72E48 setvalue(so+py,4,-721215457) --[5].地址:7744ECEBB8 原值:-721215457 so=gg.getRangesList('libTDataMaster.so')[1].start py=0x2C5BB8 setvalue(so+py,4,-721215457) --[6].地址:7744ECF7E0 原值:-721215457 so=gg.getRangesList('libTDataMaster.so')[1].start py=0x2C67E0 setvalue(so+py,4,-721215457) --[7].地址:7744ECF830 原值:-721215457 so=gg.getRangesList('libTDataMaster.so')[1].start py=0x2C6830 setvalue(so+py,4,-721215457) string.toMusic("开启成功") end, function() end }, { "离线(关闭离线把该功能关闭)", function() local Ranges=gg.getRangesList('/') local function Read(module,type) for k,v in pairs(Ranges) do if v['internalName']:match('[^/]*$')==module and v['type']==type then return v['start'] end end end local Table={} local function Modify(address,value,flags) Table[#Table+1]={address=address,value=value,flags=flags} end Modify(Read('libgcloud.so','r-xp')+0x4873F4,-698416192,4) gg.setValues(Table)Modify(Read('libgcloud.so','r-xp')+0x4886D8,-698416192,4) gg.setValues(Table)Modify(Read('libgcloud.so','r-xp')+0x507184,-698416192,4) gg.setValues(Table)Modify(Read('libgcloud.so','r-xp')+0x508468,-698416192,4) gg.setValues(Table) gg.toast("开启成功") string.toMusic("开启成功") end, function() local Ranges=gg.getRangesList('/') local function Read(module,type) for k,v in pairs(Ranges) do if v['internalName']:match('[^/]*$')==module and v['type']==type then return v['start'] end end end local Table={} local function Modify(address,value,flags) Table[#Table+1]={address=address,value=value,flags=flags} end Modify(Read('libgcloud.so','r-xp')+0x4873F4,100860677,4) gg.setValues(Table)Modify(Read('libgcloud.so','r-xp')+0x4886D8,328671808,4) gg.setValues(Table)Modify(Read('libgcloud.so','r-xp')+0x507184,100860677,4) gg.setValues(Table)Modify(Read('libgcloud.so','r-xp')+0x508468,328671808,4) gg.setValues(Table) gg.toast("关闭成功") string.toMusic("关闭成功") end, function() end }, { "框架防闪", 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 _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 local t = {"libanogs.so:bss", "Cb"} local tt = {0x5D8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}})--卡屏在LOGO第二个界面开或删掉这条 local t = {"libanogs.so:bss", "Cb"} local tt = {0x430} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x550} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) gg.toast("开启成功") string.toMusic("开启成功") end, function() end } }), YH.text("辅助功能","#80C3F9","20sp"), YH.text("㊗️你天天开心","#545454","10sp"), YH.check({ { "无", function() DM = "欢迎使用!" -- 音乐相关 menu_music = {} name_music = {} song_id = 0 play_music = false current_song = {} -- 视频相关 menu_video = {} name_video = {} vid = 0 play_video = false current_video = {} -- API SEARCH_MUSIC = "https://api.vkeys.cn/v2/music/netease?word=%s" DETAIL_MUSIC = "https://api.vkeys.cn/v2/music/netease?id=%s" SEARCH_VIDEO = "https://api.vkeys.cn/v2/video/search?word=%s" DETAIL_VIDEO = "https://api.vkeys.cn/v2/video/url?id=%s" MAX_RETRY = 5 --============== 音乐功能 ============== local function searchMusic() local ret = gg.prompt({"歌曲名/歌手","数量(1-20)"},{"","10"},{"text","text"}) if not ret then return end if ret[1]=="" then gg.alert("请输入内容") return searchMusic() end local n = math.max(1,math.min(20,tonumber(ret[2])or 10)) local key = ret[1]:gsub("([^%w ])",function(c)return string.format("%%%02X",c:byte())end) gg.toast("搜索中…") local res = gg.makeRequest(string.format(SEARCH_MUSIC,key)) if not res or res.code~=200 then gg.alert("网络异常") return end local data = json.decode(res.content) if not data or data.code~=200 then gg.alert("搜索失败") return end menu_music,name_music={},{} local list = type(data.data)=="table"and data.data or {data.data} for i,v in ipairs(list)do if i>n then break end local item={id=v.id,name=v.song,singer=v.singer} table.insert(menu_music,item) table.insert(name_music,item.name.." - "..item.singer) end return #menu_music>0 end local function showMusicList() local c={} for i,v in ipairs(name_music)do table.insert(c,i.."."..v)end table.insert(c,"返回") local sel=gg.choice(c,nil,"音乐列表("..#menu_music..")") if not sel or sel==#c then return "back" end current_song=menu_music[sel] song_id=current_song.id return true end local function playMusic() if not current_song.id then gg.alert("未选择歌曲")return end local u=string.format(DETAIL_MUSIC,current_song.id) gg.toast("获取链接…") local ok,data for i=1,MAX_RETRY do local r=gg.makeRequest(u) if r and r.code==200 then data=json.decode(r.content) if data and data.code==200 and data.data.url then ok=true break end end gg.sleep(800) end if ok then gg.playMusic(data.data.url) play_music=true gg.toast("播放:"..current_song.name) else gg.alert("播放失败") end end local function stopMusic() if play_music then gg.playMusic("stop") play_music=false gg.toast("已停止") else gg.toast("未播放") end end --============== 视频功能 ============== local function searchVideo() local ret=gg.prompt({"视频关键词","数量(1-20)"},{"","10"},{"text","text"}) if not ret then return end if ret[1]=="" then gg.alert("请输入内容") return searchVideo() end local n=math.max(1,math.min(20,tonumber(ret[2])or 10)) local key=ret[1]:gsub("([^%w ])",function(c)return string.format("%%%02X",c:byte())end) gg.toast("搜索视频…") local res=gg.makeRequest(string.format(SEARCH_VIDEO,key)) if not res or res.code~=200 then gg.alert("网络异常") return end local data=json.decode(res.content) if not data or data.code~=200 then gg.alert("搜索失败") return end menu_video,name_video={},{} local list=type(data.data)=="table"and data.data or {data.data} for i,v in ipairs(list)do if i>n then break end local item={id=v.id,title=v.title,author=v.author} table.insert(menu_video,item) table.insert(name_video,item.title.." - "..item.author) end return #menu_video>0 end local function showVideoList() local c={} for i,v in ipairs(name_video)do table.insert(c,i.."."..v)end table.insert(c,"返回") local sel=gg.choice(c,nil,"视频列表("..#menu_video..")") if not sel or sel==#c then return "back" end current_video=menu_video[sel] vid=current_video.id return true end local function playVideo() if not current_video.id then gg.alert("未选择视频")return end local u=string.format(DETAIL_VIDEO,current_video.id) gg.toast("获取视频…") local ok,data for i=1,MAX_RETRY do local r=gg.makeRequest(u) if r and r.code==200 then data=json.decode(r.content) if data and data.code==200 and data.data.url then ok=true break end end gg.sleep(800) end if ok then gg.openUrl(data.data.url) play_video=true gg.toast("正在播放:"..current_video.title) else gg.alert("播放失败") end end local function stopVideo() play_video=false gg.toast("视频已停止") end --============== 主菜单 ============== repeat local m=gg.choice({ "🎵 在线音乐播放", "📺 在线视频播放", "⏹️ 停止音乐", "⏹️ 停止视频", "❌ 退出" },nil,DM) if not m then break end if m==1 then if searchMusic() then local s=showMusicList() if s==true then playMusic() end end elseif m==2 then if searchVideo() then local s=showVideoList() if s==true then playVideo() end end elseif m==3 then stopMusic() elseif m==4 then stopVideo() elseif m==5 then break end until false gg.toast("开启成功") string.toMusic("开启成功") end, function() end }, { "无", function() string.toMusic("开启成功") end, function() end }, }), }, { --3 YH.button( '静态广角', 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('libUE4.so')[1].start--静态广角 py=0x3594978 setvalue(so+py,16,1.3) gg.addListItems({{address = ttt, flags = 4, value = -721215457, freeze = true}}) string.toMusic("开启成功") end), YH.button( '动态广角', 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 _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 local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x1D50,0x39C}--伤害显示 local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 100, freeze = true}}) gg.addListItems({{address = ttt, flags = 4, value = -721215457, freeze = true}}) string.toMusic("开启成功") end), YH.button( '锁针', 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].地址:7511C86238 原值:120.0 so=gg.getRangesList('')[1].start py=0x74FF086238 setvalue(so+py,16,120.0) gg.addListItems({{address = ttt, flags = 4, value = -721215457, freeze = true}}) string.toMusic("开启成功") end), YH.button( '伤害显示', 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 _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 local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0xA1C}--伤害显示 local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 2, freeze = true}}) gg.addListItems({{address = ttt, flags = 4, value = -721215457, freeze = true}}) string.toMusic("开启成功") end), YH.button( '聚点', 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].地址:72B4ECB3EC 原值:505425152 so=gg.getRangesList('libUE4.so')[1].start py=0x5EC53EC setvalue(so+py,4,505425152) gg.addListItems({{address = ttt, flags = 4, value = -721215457, freeze = true}}) string.toMusic("开启成功") end), YH.button( '防抖', 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].地址:72BDF3840C 原值:-0.048694610595703125 so=gg.getRangesList('libUE4.so')[1].start py=0x633140C setvalue(so+py,16,-0.048694610595703125) gg.addListItems({{address = ttt, flags = 4, value = -721215457, freeze = true}}) string.toMusic("开启成功") end), YH.button( '微加速', 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 _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 local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x1168}--伤害显示 local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 3, freeze = true}}) gg.addListItems({{address = ttt, flags = 4, value = -721215457, freeze = true}}) string.toMusic("开启成功") end), YH.button( '自动攀爬', 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 _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 local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x518,0x218} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 99999, freeze = true}}) gg.addListItems({{address = ttt, flags = 4, value = -721215457, freeze = true}}) string.toMusic("开启成功") end), YH.button( '除雾', 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].地址:72C0AB845C 原值:-9010873892864.0 so=gg.getRangesList('libUE4.so')[1].start py=0x8EB145C setvalue(so+py,16,-9010873892864.0) gg.addListItems({{address = ttt, flags = 4, value = -721215457, freeze = true}}) string.toMusic("开启成功") end), YH.button( '越南静态广角', 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].地址:764C1E6BF8 原值:1.0 so=gg.getRangesList('libUE4.so')[1].start py=0x359EBF8 setvalue(so+py,16,1.3) gg.addListItems({{address = ttt, flags = 4, value = -721215457, freeze = true}}) string.toMusic("开启成功") end), YH.button( '越南锁针', 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].地址:7511C86238 原值:120.0 so=gg.getRangesList('')[1].start py=0x74FF086238 setvalue(so+py,16,120.0) gg.addListItems({{address = ttt, flags = 4, value = -721215457, freeze = true}}) string.toMusic("开启成功") end), YH.button( '越南聚点', 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].地址:7655FA43F4 原值:8.479635254434225E-21 so=gg.getRangesList('libUE4.so')[1].start py=0x5EFF3F4 setvalue(so+py,16,8.479635254434225E-21) gg.addListItems({{address = ttt, flags = 4, value = -721215457, freeze = true}}) string.toMusic("开启成功") end), YH.button( '越南防抖', 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].地址:7656410414 原值:-0.048694610595703125 so=gg.getRangesList('libUE4.so')[1].start py=0x636B414 setvalue(so+py,16,-0.048694610595703125) gg.addListItems({{address = ttt, flags = 4, value = -721215457, freeze = true}}) string.toMusic("开启成功") end), YH.button( '越南除雾', 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].地址:7658F8EB28 原值:-9010873892864.0 so=gg.getRangesList('libUE4.so')[1].start py=0x8EE9B28 setvalue(so+py,16,-9010873892864.0) gg.addListItems({{address = ttt, flags = 4, value = -721215457, freeze = true}}) string.toMusic("开启成功") end), }, { --第四页 YH.button( '选择游戏进程', function() string.toMusic("请选择游戏进程") gg.setProcessX() end), YH.button( '清除冻结', function() gg.clearList() string.toMusic('清除成功') end), YH.box({"自改美化", YH.check({ { "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end } }), }), YH.box({"自选衣服", YH.check({ { "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end },{ "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end },{ "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end },{ "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end } }), }), YH.box({"自选背包", YH.check({ { "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end },{ "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end },{ "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end },{ "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end } }), }), YH.box({"自选头盔", YH.check({ { "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end },{ "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end },{ "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end },{ "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end } }), }), YH.box({"自选枪械", YH.check({ { "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end },{ "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end },{ "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end },{ "衣服自改", function() end, function() end }, { "枪械自改", function() end, function() end }, { "背包自改", function() end, function() end }, { "头盔自改", function() end, function() end } }), }), }, { --第五页,没有写菜单标题所以不显示 YH.button("暂停", function() toMusic("已暂停") end), wyylog },{ YH.button("退出",function() tuichu = 1 end) } }) --配置表添加表即可加页数,需要与上边菜单标题数对应 shimmer = Shimmer(); luajava.runUiThread(function() shimmer:setDuration(2000) shimmer:setStartDelay(50) --shimmer:start(stit) shimmer:start(titlebar) end) 隐藏() YH.setaudioHide(true,xfcpic)--这个千万不要删