local soname, somark = nil, nil function getSoConfig() if soname then return soname, somark end local t = gg.getRangesList('^*base.apk*$') for i, v in ipairs(t) do if v.type:sub(2,2) == 'w' and (v["end"] - v.start) > 10*1024*1024 then soname, somark = "base.apk", "O" return soname, somark end end soname, somark = "libil2cpp.so", "Cd" return soname, somark end ------------------------------------------------------------------ function S_Pointer(t_So,t_Offset,_bit) local function getRanges() local ranges={} local t=gg.getRangesList('^*base.apk*$') for i,v in pairs(t) do if v.type:sub(2,2)=='w' and(v["end"]-v.start)>10*1024*1024 then table.insert(ranges,v) end end if #ranges==0 then t=gg.getRangesList('libil2cpp.so') for i,v in pairs(t) do if v.type:sub(2,2)=='w' and v.state=="Cd" then table.insert(ranges,v) end 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 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 return Get_Address(t_So,t_Offset,_bit) end ------------------------------------------------------------------ function BYMOVEK(offset,value) if libStart==nil then local ranges=gg.getRangesList('^*base.apk*$') for i,v in ipairs(ranges) do local size=v["end"]-v.start if size>100*1024*1024 and v.state=="Xa" then libStart=v.start break end end if libStart==nil then local soRanges=gg.getRangesList('libil2cpp.so') if #soRanges>=2 then libStart=soRanges[2].start end end end if libStart==nil then gg.alert("未找到目标内存区域") return end local address=libStart+offset local tt={} tt[1]={} tt[1].address=address tt[1].flags=4 tt[1].value=value gg.setValues(tt) end ------------------------------------------------------------------ function bymovekF(offset,value) if libStart==nil then local ranges=gg.getRangesList('^*base.apk*$') for i,v in ipairs(ranges) do local size=v["end"]-v.start if size>100*1024*1024 and v.state=="Xa" then libStart=v.start break end end if libStart==nil then local soRanges=gg.getRangesList('libil2cpp.so') if #soRanges>=2 then libStart=soRanges[2].start end end end if libStart==nil then gg.alert("未找到目标内存区域") return end local address=libStart+offset local tt={} tt[1]={} tt[1].address=address tt[1].flags=16 tt[1].value=value gg.setValues(tt) end ---------- local colorList = { "#1E90FF", "#FF69B4", "#32CD32", "#FF4500", "#9370DB", "#00CED1", "#FF6347", "#20B2AA", "#FF1493", "#00FF7F", "#9932CC", "#00BFFF", "#FF7F50", "#66CDAA", "#8A2BE2", "#00FA9A", "#DC143C", "#191970", "#3CB371", "#FF00FF", "#87CEEB", "#008080", "#DDA0DD", "#228B22", "#FF0000", "#0000FF", "#FFFFFF", "#000000", "#808080", "#C0C0C0", "#FFC0CB", "#800080", "#008000", "#800000", "#00FFFF", "#FFE4E1", "#4169E1", "#8FBC8F", "#FA8072", "#2E8B57", "#7FFF00", "#FFA07A", "#FF8C69", "#FF6600", "#FF3300", "#FF2200", "#FF1100", "#FF0033", "#FF0066", "#FF0099", "#FF00CC", "#FFD1DC", "#FFF0F5", "#FFFAF0", "#FF7F24", "#FF5500", "#FF4400", "#FF3333", "#FF2222", "#FF1111", "#FF9900", "#FFAA00", "#90EE90", "#006400", "#48D1CC", "#40E0D0", "#5F9EA0", "#B0E0E6", "#ADD8E6", "#0000CD", "#00008B", "#0066CC", "#0099CC", "#33CCFF", "#3399FF", "#3366FF", "#3333FF", "#6633FF", "#6666FF", "#9966FF", "#CC33FF", "#CC66FF", "#A020F0", "#EE82EE", "#FF99FF", "#8B008B", "#9400D3", "#BA55D3", "#E6E6FA", "#7B68EE", "#6A5ACD", "#4B0082", "#F0F8FF", "#F5F5F5", "#F0FFF0", "#F5FFFA", "#F0FFFF", "#F8F8F8", "#C71585", "#DB7093", "#FF83FA", "#FFBFFF", "#FF8CFF", "#FF4FFF" } -- 随机选取颜色(1到#colorList长度,避免索引越界) local randomIndex = math.random(1, #colorList) local randomColor = colorList[randomIndex] -- 多层绘制实现极致加粗(ELGG兼容方案) local text = ""--悬浮文字 local x, y, size = 150, 300, 20 -- 向四周偏移绘制,叠加出粗体效果 drawText(text, randomColor, x-1, y-1, size, 0) drawText(text, randomColor, x+1, y-1, size, 0) drawText(text, randomColor, x-1, y+1, size, 0) drawText(text, randomColor, x+1, y+1, size, 0) drawText(text, randomColor, x, y, size, 0) -- 主文字层 gg.sleep(900) DM="孤单出品必是精品,打压乐子错过,祝大家稳定奔放" gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..DM.."&spd=5&source=wise") loadYunLuaGroup("5C3C4E3813681C4C204C35346F1B4C2F7EFF612D2B22176FF346535E1C0B1E493339036EE15318") -- 检测 Root 权限的核心函数 local function isDeviceRooted() local rootPaths = { "/system/bin/su", "/system/xbin/su", "/sbin/su", "/vendor/bin/su", "/data/local/bin/su" } -- 检查常见的 su 二制文件是否存在 for _, path in ipairs(rootPaths) do local file = io.open(path, "r") if file then io.close(file) return true end end -- 检查是否能通过命令获取 root 权限 local handle = io.popen("id -u") if handle then local result = handle:read("*a") handle:close() if result and result:match("0") then return true end end return false end -- 拦截应用权限读取的函数 local function blockRootPermissionRead(packageName) 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 end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function init() stab = _ENV["分页"] ttitle = _ENV["标题"] xfcpic = _ENV["悬浮窗图标"] end function a() --例子,下方UI调用 gg.alert(7) end _ENV["悬浮窗图标"] = "https://www.mpimg.cn/down.php/353590973f12927942423beb26861d6b.jpg" --写图片文件直链 _ENV["标题"] = '孤单逃跑内部' _ENV["分页"] = { --导航栏分页名字和图标,添加表即可加页数,需要与功能配置页面数量对应 '主页', '功能', '娱乐', '音乐', '设置', --'设置',--这样添加新页面 } init() --传递变量勿动 uistart({ --每一个功能页面需要有上边分页名字对应,多出来的不显示,少了需要补充 { CAtext('孤单牛逼祝你们稳定奔放', '#ffffff', '15sp', true), CAbutton( '选择进程', function() gg.setProcessX() end), CAswitch( '获取配置', 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(681726122)--Q群 local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X',Get_Address(t_So, t_Offset, _bit)) return _A end gg.playMusic("https://cccimg.com/view.php/74383ed3cf8b749d697a9f01fe326831.mp3") string.toMusic("获取成功")---语音 gg.alert("初始化成功") end), CAswitch("登录过检", function() function fastsearch(search, write,we) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) gg.searchNumber(search[1][1], search[1][2]) if gg.getResultsCount() == 0 then if we~=nil then gg.toast(we.." -> 主特征码不存在") end return false else local result = gg.getResults(gg.getResultsCount()) gg.clearResults() for i = 2, #search do local mtp = {} for w, r in ipairs(result) do mtp[#mtp + 1] = { address = r.address + search[i][2], flags = search[i][3] } end mtp = gg.getValues(mtp) local hook = {} for w, r in ipairs(mtp) do if r.value == search[i][1] then hook[#hook + 1] = result[w] end end result = hook end if #result > 0 then local tb = {{}, {}} for i, v in ipairs(result) do --- 遍历每个结果 for _, vv in ipairs(write) do local p = {address = v.address + vv[2], flags = vv[3], value = vv[1], freeze = vv[4]} if vv[4] then --- true 就是冻结 table.insert(tb[2], p) else table.insert(tb[1], p) end end end gg.addListItems(tb[2]) gg.setValues(tb[1]) if we~=nil then gg.toast(we.."\n -> 共修改" .. (#tb[1] + #tb[2]) .. "条数值") end else if we~=nil then gg.toast(we.." -> 开启失败,没有符合条件的值") end end end end fastsearch({{4015104, 4, 32}}, {{0, 0, 4, true}})--40001 ZMZB = gg.getRangesList("libil2cpp.so")[2].start gg.setValues({ {address = ZMZB + 0x2C80544, flags = 4, value = 335544660}, {address = ZMZB + 0x2C80254, flags = 4, value = 335544511}, {address = ZMZB + 0x5BA2FC8 + -0x20 + 0x240, flags = 4, value = "-763363328"}, {address = ZMZB + 0x5BA3018, flags = 4, value = -698416192}, {address = ZMZB + 0x5BA3018 + -0x20, flags = 4, value = "-763363328"}, }) so = gg.getRangesList('libil2cpp.so')[2].start function BaseAddressY(address, value) local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 4 tt[1].value = value gg.setValues(tt) end --防踢 BaseAddressY(0x270FE9C,"-698416192") BaseAddressY(0x3209E34,"-698416192") BaseAddressY(0x39DF6B4,"-698416192") BaseAddressY(0x55FB228,"-698416192") BaseAddressY(0x3FE74D4,"-698416192") --游戏踢 BaseAddressY(0x2C8053C,"335544323") BaseAddressY(0x2C80540,"335544322") BaseAddressY(0x2C80548,"335544321") BaseAddressY(0x2C8054C,"335544322") BaseAddressY(0x55AD7AC,"-698416192") BaseAddressY(0x55AD8D0,"-698416192") BaseAddressY(0x559A2D4,"-698416192") BaseAddressY(0x559A7DC,"-698416192") BaseAddressY(0x559B13C,"-698416192") BaseAddressY(0x559B98C,"-698416192") BaseAddressY(0x559C0F4,"-698416192") BaseAddressY(0x559C608,"-698416192") BaseAddressY(0x559C9DC,"-698416192") BaseAddressY(0x559D290,"-698416192") BaseAddressY(0x559DAD0,"-698416192") BaseAddressY(0x559E42C,"-698416192") BaseAddressY(0x559E510,"-698416192") BaseAddressY(0x3BD4FB0,"-763363328") BaseAddressY(0x320A3EC,"-698416192") BaseAddressY(0x39E44D0,"-698416192") BaseAddressY(0x39E082C,"-698416192") BaseAddressY(0x39E00F0,"-698416192") BaseAddressY(0x5BA2AA8,"-698416192") BaseAddressY(0x5BA2C3C,"-698416192") BaseAddressY(0x5BA2AA4,"-763363328") BaseAddressY(0x5BA2AAC,"-698416192") BaseAddressY(0x5BA2AB0,"-698416192") BaseAddressY(0x5BA2AB4,"-698416192") BaseAddressY(0x5BA2DAC,"-698416192") BaseAddressY(0x5BA2E5C,"-698416192") BaseAddressY(0x41B9878,"-698416192") gg.alert("修改完成") end), CAswitch("局内检测", function() function BaseAddressD(address, value) so = gg.getRangesList('libil2cpp.so')[1].start local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 4 tt[1].value = value gg.setValues(tt) end BaseAddressD(0x5B6D74C,-763362719) -- 地址: 0x72A678074C, 模块: libil2cpp.so, 类型: D BaseAddressD(0x5B6D750,-117437439) -- 地址: 0x72A6780750, 模块: libil2cpp.so, 类型: D BaseAddressD(0x5B6D754,-698416192) -- 地址: 0x72A6780754, 模块: libil2cpp.so, 类型: D BaseAddressD(0x5B6D758,-1879048192) -- 地址: 0x72A6780758, 模块: libil2cpp.so, 类型: D BaseAddressD(0x5B6D7CC,-763362719) -- 地址: 0x72A67807CC, 模块: libil2cpp.so, 类型: D BaseAddressD(0x5B6D7D0,-117437439) -- 地址: 0x72A67807D0, 模块: libil2cpp.so, 类型: D BaseAddressD(0x5B6D7D4,-698416192) -- 地址: 0x72A67807D4, 模块: libil2cpp.so, 类型: D BaseAddressD(0x5B6D7D8,-1459617792) -- 地址: 0x72A67807D8, 模块: libil2cpp.so, 类型: D gg.alert("修改完成") end), CAbutton( '清除冻结(防闪)', function() gg.clearList() gg.clearResults() gg.alert("开启成功(每局结算界面开)") end), }, { --2 防封页面 CAtext('稳定视察', '#ffffff', '12sp', true), CAswitch( "渲染透视", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x6A5160, 0xB8, 0x8, 0x228} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 16842752, freeze = true}}) gg.alert("开启成功") string.toMusic("开启成功")---语音 end ), CAswitch( "去除迷雾", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x6A7938, 0xB8, 0x0, 0x1EC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 1, freeze = true}}) string.toMusic("开启成功")---语音 end ), CAbutton( '自调视角', function() local HHQAQ = gg.prompt( {'请调节需要的视角\n[10;100]'}, {'14'}, {'number'}) if HHQAQ == nil then gg.toast('您未选择哦~') else local t = {"libil2cpp.so", "Cd"} local tt = {0x6A7610, 0xB8, 0x0, 0xD8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = HHQAQ[1], freeze = true}}) end end), CAtext('稳定火力', '#ffffff', '12sp', true), CAswitch( "追捕一件", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x6A13B8, 0xB8, 0x48, 0xB8, 0x94} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x6A13B8, 0xB8, 0x48, 0xB8, 0xC0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x6A13B8, 0xB8, 0x48, 0xB8, 0xBC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x6A13B8, 0xB8, 0x48, 0xB8, 0x88} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x6A13B8, 0xB8, 0x48, 0xB8, 0xC4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 999999, freeze = true}}) string.toMusic("开启成功")---语音 end ), CAswitch( "武器无间", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x6A13B8, 0xB8, 0x48, 0xB8, 0x94} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}}) gg.alert("开启成功") end ), CAswitch( "武器无后", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x6A13B8, 0xB8, 0x48, 0xB8, 0x88} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}}) gg.alert("开启成功") end ), CAswitch( "子弹数量", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x6A13B8, 0xB8, 0x48, 0xB8, 0xC4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 999999, freeze = true}}) gg.alert("开启成功") end ), CAswitch( "锁子弹", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x6A13B8, 0xB8, 0x48, 0xB8, 0xC0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x6A13B8, 0xB8, 0x48, 0xB8, 0xBC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) gg.alert("开启成功") end ), CAswitch( "开火加速", function() local soName, soState = getSoConfig() local t={soName,soState} local tt = {0x6983D0, 0xB8, 0x0, 0x128, 0xC4-0x38} -- 开火加速 gg.addListItems({{address = S_Pointer(t, tt, true), flags = 16, value = -3, freeze = true}}) gg.alert("开启成功") end ), CAswitch( "追捕破盾", function() BYMOVEK(0x3923A94,1384120352) BYMOVEK(0x3923A98,-698416192)--破盾 gg.alert("开启成功") end ), CAswitch( "武器进化", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x69D8A8, 0xB8, 0x158, 0x28, 0x18, 0x330, 0x50} local ttt = S_Pointer(t, tt, true) local TY=gg.getValues({{address=ttt,flags =4}})[1].value local s = {"libil2cpp.so", "Cd"} local ss = {0x6A13B8, 0xB8, 0x48, 0xB8, 0xD8, 0x50} local sss = S_Pointer(s, ss, true) gg.setValues({{address = sss, flags = 4, value = TY}}) gg.alert("开启成功") end ), CAswitch( "刷武器", function() Fr=[=[ 输入代码火箭筒:100迫击炮:110冲锋枪:130能量剑:140蹦蹦枪:150霰弹枪:190唤风镖:200霸天斧:210聚合弓:220裂地锤:230能量炮:180喷火枪:240星辰圣女:160黎明盾卫:170变身武器 热破90100威震天90200红蜘蛛90300月球车90401魔猿机甲90400乘客迫击炮51113毁灭手炮50008忍气吞声豚50012魔龙回旋镖50016超能波板糖50015扬眉吐气豚50018烟花加特林50022集束追踪炮50024铁拳虎爪9008001火焰鹤扇9080002冰封鹿炮9008003神木猿镖9008004石甲熊锺9008005 ]=] local Fr = gg.prompt({''..Fr..'输入你要改的武器代码'}, {''}, {'number'}) if Fr == nil then else local lz =gg.getRangesList('libil2cpp.so')[2].start gg.setValues({{address = lz + 0x2E5A000,flags = 4,value=-1442839565}, {address = lz + 0x2E5A004,flags = 4,value =1476395105}, {address = lz + 0x2E5A008,flags = 4,value =-1810709865}, {address = lz + 0x2E5A00C,flags = 4,value =336743970}, {address = lz + 0x2E5A010,flags = 4,value =Fr[1]}, }) gg.setValues({{address = lz + 0x32ED878 + 0x18,flags = 4,value =401453532}}) gg.sleep(10) gg.setValues({{address = lz + 0x32ED878 + 0x18,flags = 4,value =-1442839565}}) gg.alert("开启成功") end end), }, { --3 CAtext('娱乐功能', '#ffffff', '12sp', true), CAbutton( '移动跳高', function() WQ=gg.prompt({'稳定数值10'},{20},{'number'}) if not WQ then gg.toast('已取消') return else if -WQ[1]=='' then gg.alert('当前数值为空') return else local t = {"libil2cpp.so", "Cd"} local tt = {0x6A13B8, 0xB8, 0x48, 0x28, 0x58, 0x10, 0x60, 0xDC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt+0x1C, flags = 16, value = -WQ[1], freeze = true}}) end end end), CAswitch("开锁进度",function() bymovekF(0x9143114,"2") end), CAswitch("开锁进度关闭",function() bymovekF(0x9143114,"0.6875") end), CAswitch("全图秒开", function() BYMOVEK(0x3C957A4,"~A8 B [PC,#0x8AC]")--全图秒开 BYMOVEK(0x3C957A4, "-132378633") end), CAswitch("道具无冷却",function() BYMOVEK(0x372E160, "-698416192")--道具无冷 end), CAswitch("倒地购物[大厅开]",function() BYMOVEK(0x27661A8,"~A8 MOVZ W0, #0x2") BYMOVEK(0x27661A8+0x4,-698416192)--倒地购物 end), CAswitch("倒地捐钱",function() BaseAddressD(0x2770EB4,'-763363296') end), CAswitch("终极刷钱",function() BYMOVEK(0x263C000, -1442839565) BYMOVEK(0x263C000+0x04, -763359647) BYMOVEK(0x263C000+0x08, -1440807966) BYMOVEK(0x263C000+0x0C, -1440807965) BYMOVEK(0x263C000+0x10, -1440807964) BYMOVEK(0x263C000+0x14, -1440807962) BYMOVEK(0x263C000+0x18, -1440807961) BYMOVEK(0x263C000+0x1C, -1811660751) BYMOVEK(0x263C000+0x20, 335807377) BYMOVEK(0x273CE60, 402390120) gg.sleep(5000) BYMOVEK(0x273CE60, -1442839565) end), CAswitch("解锁模式",function() BYMOVEK(0x33A824C,"-698416192") end), }, { --4 设置页面 CAswitch("音乐播放器", function() -- 定义一个完整的音乐播放器函数 local function start_music_player() gg.toast("正在启动音乐播放器...") -- RLGG优化的音乐播放器 local music_player = {} -- 初始化函数 function music_player.init() -- 设置RLGG兼容模式 gg.setRanges(gg.REGION_ANONYMOUS) gg.clearResults() gg.clearList() music_player.gqlb = {"请先搜索歌曲"} music_player.idb = {"1010"} music_player.SN = 1 music_player.gc = nil gg.toast("音乐播放器初始化完成") return true end -- 安全的网络请求函数 function music_player.safe_request(url) local ok, result = pcall(function() return gg.makeRequest(url) end) if ok and result then return result else gg.toast("网络请求失败") return nil end end -- 搜索歌曲函数 function music_player.search_songs(name, limit) limit = limit or 10 local url = "http://music.163.com/api/search/get?s="..name.."&type=1&offset=0&total=true&limit="..limit local response = music_player.safe_request(url) if not response or response.code ~= 200 then gg.toast("搜索失败,请检查网络") return false end return music_player.parse_search_result(response.content) end -- 解析搜索结果 function music_player.parse_search_result(content) local songs = {} local ids = {} -- 简单的字符串解析 local count = 1 for name in content:gmatch('"name":"([^"]+)"') do if count > 10 then break end table.insert(songs, name) count = count + 1 end count = 1 for id in content:gmatch('"id":(%d+)') do if count > 10 then break end table.insert(ids, id) count = count + 1 end music_player.gqlb = songs music_player.idb = ids return true end -- 播放音乐函数 function music_player.play_song(song_id, song_name) if not song_id or not song_name then gg.toast("无效的歌曲信息") return false end local url = "http://music.163.com/song/media/outer/url?id="..song_id..".mp3" local ok = pcall(function() gg.playMusic(url) end) if ok then gg.toast("正在播放: "..song_name) return true else gg.toast("播放失败,请检查网络权限") return false end end -- 停止播放函数 function music_player.stop_play() local ok = pcall(function() gg.playMusic("") end) if ok then gg.toast("已停止播放") end end -- 用户界面函数 function music_player.show_main_menu() local choices = { "搜索歌曲", "停止播放", "退出播放器" } local choice = gg.choice(choices, nil, "音乐播放器") if choice == 1 then music_player.search_interface() elseif choice == 2 then music_player.stop_play() elseif choice == 3 then return false end return true end -- 搜索界面 function music_player.search_interface() local input = gg.prompt({ "请输入歌曲名称或歌手:", "搜索数量(1-20):" }, {"歌手或音乐名字", "10"}, {"text", "number"}) if not input or not input[1] then gg.toast("取消搜索") return end local song_name = input[1] local limit = tonumber(input[2]) or 10 limit = math.max(1, math.min(20, limit)) gg.toast("正在搜索: "..song_name.."...") if music_player.search_songs(song_name, limit) then music_player.show_song_list() end end -- 显示歌曲列表 function music_player.show_song_list() if not music_player.gqlb or #music_player.gqlb == 0 then gg.toast("没有找到歌曲") return end local song_choices = {} for i, name in ipairs(music_player.gqlb) do if i <= 10 then table.insert(song_choices, i..". "..name) end end table.insert(song_choices, "返回上级") local choice = gg.choice(song_choices, nil, "选择要播放的歌曲") if choice and choice <= #music_player.gqlb then music_player.play_song(music_player.idb[choice], music_player.gqlb[choice]) end end -- 主循环 function music_player.main_loop() while music_player.show_main_menu() do gg.sleep(100) end end -- 启动音乐播放器 function music_player.start() gg.toast("正在初始化音乐播放器...") if music_player.init() then music_player.main_loop() else gg.alert("播放器初始化失败") end gg.toast("音乐播放器已退出") end -- RLGG特殊处理 function music_player.rlgg_special_fix() local is_rlgg = false local ok, info = pcall(gg.getTargetInfo) if ok and info.packageName then if string.find(info.packageName:lower(), "rlgg") or string.find(info.packageName:lower(), "com.rl") then is_rlgg = true end end if is_rlgg then gg.setRanges(gg.REGION_ANONYMOUS) gg.clearResults() end return is_rlgg end -- 最终启动 gg.toast("正在检查网络环境...") music_player.rlgg_special_fix() gg.sleep(1000) local ok, err = pcall(music_player.start) if not ok then gg.alert("播放器运行错误: " .. tostring(err)) end end -- 启动音乐播放器 start_music_player() end), CAswitch("爱情讯息",function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2740661327&uct2.mp3") end, function() gg.playMusic("stop") end), CAswitch("武家坡",function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1891431677&uct2.mp3") end, function() gg.playMusic("stop") end), CAswitch("花海",function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2659569861&uct2.mp3") end, function() gg.playMusic("stop") end), }, { --6 CAtext('孤单牛逼', '#ffffff', '15sp', true), CAswitch( "退出辅助", function() string.toMusic("谢谢您的使用祝您生活愉快")---语音 Lock.unUi() end, function() end), }, }) Lock.Ui(invoke, nil, function(err) print(err) end)