local _o=_ENV function rc4_UTF_8(text,key,kasi) local function __xorBit(left, right) return (left + right) == 1 and 1 or 0 end local function __base(left, right, op) if left < right then left, right = right, left end local res = 0 local shift = 1 while left ~= 0 do local ra = left % 2 local rb = right % 2 res = shift * op(ra,rb) + res shift = shift * 2 left = math.modf( left / 2) right = math.modf( right / 2) end return res end local function xorOp(left, right) return __base(left, right, __xorBit) end local function KSA(key) local keyLen = string.len(key) local schedule = {} local keyByte = {} for i = 0, 255 do schedule[i] = i end for i = 1, keyLen do keyByte[i - 1] = string.byte(key, i, i) end local j = 0 for i = 0, 255 do j = (j + schedule[i] + keyByte[ i % keyLen]) % 256 schedule[i], schedule[j] = schedule[j], schedule[i] end return schedule end local function PRGA(schedule, textLen) local i = 0 local j = 0 local k = {} for n = 1, textLen do i = (i + 1) % 256 j = (j + schedule[i]) % 256 schedule[i], schedule[j] = schedule[j], schedule[i] k[n] = schedule[(schedule[i] + schedule[j]) % 256] end return k end local function output(schedule, text) local len = string.len(text) local c = nil local res = {} for i = 1, len do c = string.byte(text, i,i) res[i] = string.char(xorOp(schedule[i], c)) end return table.concat(res) end m=0 if kasi==false then str = text str=str:gsub('[%s%p]',''):upper() local index=1 local ret='' for index=1,str:len(),2 do if tonumber(str:sub(index,index+1))== nil then m=m+1 end ret=ret..string.char(tonumber(str:sub(index,index+1),16)) end text=ret end local textLen = string.len(text) local schedule = KSA(key) local k = PRGA(schedule, textLen) local str=output(k, text) if kasi==true then str = tostring(str) local index=1 local ret='' for index=1,str:len() do ret=ret..string.format('%02X',str:sub(index):byte()) end return string.lower(ret) else return str end end local function json2true(str,from,to) return true, from+3 end local function json2false(str,from,to) return false, from+4 end local function json2null(str, from, to) return nil, from+3 end local function json2nan(str, from, to) return nul, from+2 end local numberchars = { ['-'] = true, ['+'] = true, ['.'] = true, ['0'] = true, ['1'] = true, ['2'] = true, ['3'] = true, ['4'] = true, ['5'] = true, ['6'] = true, ['7'] = true, ['8'] = true, ['9'] = true} local function json2number(str,from,to) local i = from+1 while(i<=to) do local char = string.sub(str, i, i) if not numberchars[char] then break end i = i + 1 end local num = tonumber(string.sub(str, from, i-1)) if not num then gg.alert(string.gsub('json格式错误,不正确的数字, 错误位置:{from}', 'from',from)) end return num, i-1 end local function json2string(str,from,to) local ignor = false for i = from+1, to do local char = string.sub(str, i, i) if not ignor then if char == fuhao then return string.sub(str, from+1, i-1), i elseif char == '\\' then ignor = true end else ignor = false end end gg.alert(string.gsub('json格式错误,字符串没有找到结尾, 错误位置:{from}', 'from',from)) end local function json2array(str,from,to) local result = {} from = from or 1 local pos = from+1 local to = to or string.len(str) while(pos<=to) do local char = string.sub(str, pos, pos) if char == fuhao then result[#result+1], pos = json2string(str,pos,to) elseif char == '[' then result[#result+1], pos = json2array(str,pos,to) elseif char == '{' then result[#result+1], pos = json2table(str,pos,to) elseif char == ']' then return result, pos elseif (char=='f' or char=='F') then result[#result+1], pos = json2false(str,pos,to) elseif (char=='t' or char=='T') then result[#result+1], pos = json2true(str,pos,to) elseif (char=='n') then result[#result+1], pos = json2null(str,pos,to) elseif (char=='N') then result[#result+1], pos = json2nan(str,pos,to) elseif numberchars[char] then result[#result+1], pos = json2number(str,pos,to) end pos = pos + 1 end gg.alert( string.gsub('json格式错误,表没有找到结尾, 错误位置:{from}', 'from',from)) end function _G.json2table(str,from,to) local result = {} from = from or 1 local pos = from+1 local to = to or string.len(str) local key while(pos<=to) do local char = string.sub(str, pos, pos) if char == fuhao then if not key then key, pos = json2string(str,pos,to) else result[key], pos = json2string(str,pos,to) key = nil end elseif char == '[' then if not key then key, pos = json2array(str,pos,to) else result[key], pos = json2array(str,pos,to) key = nil end elseif char == '{' then if not key then key, pos = json2table(str,pos,to) else result[key], pos = json2table(str,pos,to) key = nil end elseif char == '}' then return result, pos elseif (char=='f' or char=='F') then result[key], pos = json2false(str,pos,to) key = nil elseif (char=='t' or char=='T') then result[key], pos = json2true(str,pos,to) key = nil elseif (char=='n') then result[key], pos = json2null(str,pos,to) key = nil elseif (char=='N') then result[key], pos = json2nan(str,pos,to) key = nil elseif numberchars[char] then if not key then key, pos = json2number(str,pos,to) else result[key], pos = json2number(str,pos,to) key = nil end end pos = pos + 1 end gg.alert(string.gsub('格式错误,表没有找到结尾, 错误位置:{from}','from',from)) end fuhao= '"' local jsonfuncs={ [fuhao]=json2string, ['[']=json2array, ['{']=json2table, ['f']=json2false, ['F']=json2false, ['t']=json2true, ['T']=json2true} function jsoooooooon(str) local char = string.sub(str, 1, 1) local func=jsonfuncs[char] if func == nil then gg.alert('json格式头错误 [ '..char..' ]') os.exit() end if func then return func(str,1, string.len(str)) end if numberchars[char] then return json2number(str, 1, string.len(str)) end end function md5(code) local code = tostring(code) local HexTable = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'} local A = 0x67452301 local B = 0xefcdab89 local C = 0x98badcfe local D = 0x10325476 local S11 = 7 local S12 = 12 local S13 = 17 local S14 = 22 local S21 = 5 local S22 = 9 local S23 = 14 local S24 = 20 local S31 = 4 local S32 = 11 local S33 = 16 local S34 = 23 local S41 = 6 local S42 = 10 local S43 = 15 local S44 = 21 local function F(x,y,z) return (x & y) | ((~x) & z) end local function G(x,y,z) return (x & z) | (y & (~z)) end local function H(x,y,z) return x ~ y ~ z end local function I(x,y,z) return y ~ (x | (~z)) end local function FF(a,b,c,d,x,s,ac) a = a + F(b,c,d) + x + ac a = (((a & 0xffffffff) << s) | ((a & 0xffffffff) >> 32 - s)) + b return a & 0xffffffff end local function GG(a,b,c,d,x,s,ac) a = a + G(b,c,d) + x + ac a = (((a & 0xffffffff) << s) | ((a & 0xffffffff) >> 32 - s)) + b return a & 0xffffffff end local function HH(a,b,c,d,x,s,ac) a = a + H(b,c,d) + x + ac a = (((a & 0xffffffff) << s) | ((a & 0xffffffff) >> 32 - s)) + b return a & 0xffffffff end local function II(a,b,c,d,x,s,ac) a = a + I(b,c,d) + x + ac a = (((a & 0xffffffff) << s) | ((a & 0xffffffff) >> 32 - s)) + b return a & 0xffffffff end local function MD5StringFill(s) local len = s:len() local mod512 = len * 8 % 512 local fillSize = (448 - mod512) // 8 if mod512 > 448 then fillSize = (960 - mod512) // 8 end local rTab = {} local byteIndex = 1 for i = 1,len do local index = (i - 1) // 4 + 1 rTab[index] = rTab[index] or 0 rTab[index] = rTab[index] | (s:byte(i) << (byteIndex - 1) * 8) byteIndex = byteIndex + 1 if byteIndex == 5 then byteIndex = 1 end end local b0x80 = false local tLen = #rTab if byteIndex ~= 1 then rTab[tLen] = rTab[tLen] | 0x80 << (byteIndex - 1) * 8 b0x80 = true end for i = 1,fillSize // 4 do if not b0x80 and i == 1 then rTab[tLen + i] = 0x80 else rTab[tLen + i] = 0x0 end end local bitLen = math.floor(len * 8) local tLen = #rTab rTab[tLen + 1] = bitLen & 0xffffffff rTab[tLen + 2] = bitLen >> 32 return rTab end function getmb5(s) local fillTab = MD5StringFill(s) local result = {A,B,C,D} for i = 1,#fillTab // 16 do local a = result[1] local b = result[2] local c = result[3] local d = result[4] local offset = (i - 1) * 16 + 1 a = FF(a, b, c, d, fillTab[offset + 0], S11, 0xd76aa478) d = FF(d, a, b, c, fillTab[offset + 1], S12, 0xe8c7b756) c = FF(c, d, a, b, fillTab[offset + 2], S13, 0x242070db) b = FF(b, c, d, a, fillTab[offset + 3], S14, 0xc1bdceee) a = FF(a, b, c, d, fillTab[offset + 4], S11, 0xf57c0faf) d = FF(d, a, b, c, fillTab[offset + 5], S12, 0x4787c62a) c = FF(c, d, a, b, fillTab[offset + 6], S13, 0xa8304613) b = FF(b, c, d, a, fillTab[offset + 7], S14, 0xfd469501) a = FF(a, b, c, d, fillTab[offset + 8], S11, 0x698098d8) d = FF(d, a, b, c, fillTab[offset + 9], S12, 0x8b44f7af) c = FF(c, d, a, b, fillTab[offset + 10], S13, 0xffff5bb1) b = FF(b, c, d, a, fillTab[offset + 11], S14, 0x895cd7be) a = FF(a, b, c, d, fillTab[offset + 12], S11, 0x6b901122) d = FF(d, a, b, c, fillTab[offset + 13], S12, 0xfd987193) c = FF(c, d, a, b, fillTab[offset + 14], S13, 0xa679438e) b = FF(b, c, d, a, fillTab[offset + 15], S14, 0x49b40821) a = GG(a, b, c, d, fillTab[offset + 1], S21, 0xf61e2562) d = GG(d, a, b, c, fillTab[offset + 6], S22, 0xc040b340) c = GG(c, d, a, b, fillTab[offset + 11], S23, 0x265e5a51) b = GG(b, c, d, a, fillTab[offset + 0], S24, 0xe9b6c7aa) a = GG(a, b, c, d, fillTab[offset + 5], S21, 0xd62f105d) d = GG(d, a, b, c, fillTab[offset + 10], S22, 0x2441453) c = GG(c, d, a, b, fillTab[offset + 15], S23, 0xd8a1e681) b = GG(b, c, d, a, fillTab[offset + 4], S24, 0xe7d3fbc8) a = GG(a, b, c, d, fillTab[offset + 9], S21, 0x21e1cde6) d = GG(d, a, b, c, fillTab[offset + 14], S22, 0xc33707d6) c = GG(c, d, a, b, fillTab[offset + 3], S23, 0xf4d50d87) b = GG(b, c, d, a, fillTab[offset + 8], S24, 0x455a14ed) a = GG(a, b, c, d, fillTab[offset + 13], S21, 0xa9e3e905) d = GG(d, a, b, c, fillTab[offset + 2], S22, 0xfcefa3f8) c = GG(c, d, a, b, fillTab[offset + 7], S23, 0x676f02d9) b = GG(b, c, d, a, fillTab[offset + 12], S24, 0x8d2a4c8a) a = HH(a, b, c, d, fillTab[offset + 5], S31, 0xfffa3942) d = HH(d, a, b, c, fillTab[offset + 8], S32, 0x8771f681) c = HH(c, d, a, b, fillTab[offset + 11], S33, 0x6d9d6122) b = HH(b, c, d, a, fillTab[offset + 14], S34, 0xfde5380c) a = HH(a, b, c, d, fillTab[offset + 1], S31, 0xa4beea44) d = HH(d, a, b, c, fillTab[offset + 4], S32, 0x4bdecfa9) c = HH(c, d, a, b, fillTab[offset + 7], S33, 0xf6bb4b60) b = HH(b, c, d, a, fillTab[offset + 10], S34, 0xbebfbc70) a = HH(a, b, c, d, fillTab[offset + 13], S31, 0x289b7ec6) d = HH(d, a, b, c, fillTab[offset + 0], S32, 0xeaa127fa) c = HH(c, d, a, b, fillTab[offset + 3], S33, 0xd4ef3085) b = HH(b, c, d, a, fillTab[offset + 6], S34, 0x4881d05) a = HH(a, b, c, d, fillTab[offset + 9], S31, 0xd9d4d039) d = HH(d, a, b, c, fillTab[offset + 12], S32, 0xe6db99e5) c = HH(c, d, a, b, fillTab[offset + 15], S33, 0x1fa27cf8) b = HH(b, c, d, a, fillTab[offset + 2], S34, 0xc4ac5665) a = II(a, b, c, d, fillTab[offset + 0], S41, 0xf4292244) d = II(d, a, b, c, fillTab[offset + 7], S42, 0x432aff97) c = II(c, d, a, b, fillTab[offset + 14], S43, 0xab9423a7) b = II(b, c, d, a, fillTab[offset + 5], S44, 0xfc93a039) a = II(a, b, c, d, fillTab[offset + 12], S41, 0x655b59c3) d = II(d, a, b, c, fillTab[offset + 3], S42, 0x8f0ccc92) c = II(c, d, a, b, fillTab[offset + 10], S43, 0xffeff47d) b = II(b, c, d, a, fillTab[offset + 1], S44, 0x85845dd1) a = II(a, b, c, d, fillTab[offset + 8], S41, 0x6fa87e4f) d = II(d, a, b, c, fillTab[offset + 15], S42, 0xfe2ce6e0) c = II(c, d, a, b, fillTab[offset + 6], S43, 0xa3014314) b = II(b, c, d, a, fillTab[offset + 13], S44, 0x4e0811a1) a = II(a, b, c, d, fillTab[offset + 4], S41, 0xf7537e82) d = II(d, a, b, c, fillTab[offset + 11], S42, 0xbd3af235) c = II(c, d, a, b, fillTab[offset + 2], S43, 0x2ad7d2bb) b = II(b, c, d, a, fillTab[offset + 9], S44, 0xeb86d391) result[1] = result[1] + a result[2] = result[2] + b result[3] = result[3] + c result[4] = result[4] + d result[1] = result[1] & 0xffffffff result[2] = result[2] & 0xffffffff result[3] = result[3] & 0xffffffff result[4] = result[4] & 0xffffffff end local retStr = '' for i = 1,4 do for _ = 1,4 do local temp = result[i] & 0x0F local str = HexTable[temp + 1] result[i] = result[i] >> 4 temp = result[i] & 0x0F retStr = retStr .. HexTable[temp + 1] .. str result[i] = result[i] >> 4 end end return string.lower(retStr) end return getmb5(code) end jm={['md5']=md5,['jsoooooooon']=jsoooooooon,['rc4']=rc4_UTF_8} jy_oj07989e46987cd2b8=jm.md5 jy_oj2f7989e46987cd2b=jm.jsoooooooon jy_oj17f7989e46987c=jm.rc4 local id_y0989e46987cd="10000" --APPID local key_y189e46987cd2="8nBV7L3SL75sUULS" --APPKEY local keys_y289e46987cd2b="btpb4ZiNXYS1" --是否 RC4 加密[key 密钥] local xxxbanb="1.0" --版本号 api_total=0 --查看人数 --------------------------------------------- local website_57f7989e4698='https://www.tlyyz.top' --官网 local km_89e46987cd2b85a4=website_57f7989e4698..'/api.php?api=kmlogon&app='..id_y0989e46987cd --接口名称[卡密登录] local jieba_7f7989e46987cd2b=website_57f7989e4698..'/api.php?api=kmunmachine&app='..id_y0989e46987cd --接口名称[卡密解绑] local to_configure_7989e46987cd2b8=website_57f7989e4698..'/api.php?api=ini&app='..id_y0989e46987cd --接口名称[应用配置] local Notice_7f7989e46987=website_57f7989e4698..'/api.php?api=notice&app='..id_y0989e46987cd --接口名称[应用公告] local AMI_km='/sdcard/km' --卡密 路径 I_km='' local AMI_miei='/sdcard/miei' --设备码 路径 I_miei='' local AMI_e='/sdcard/e' --自动登入 路径 I_e='' local d_a_n_kml57f7989e46987='开' if id_y0989e46987cd=='' or key_y189e46987cd2=='' then gg.alert('对接数据,空...') os.exit() end Notice=gg.makeRequest(Notice_7f7989e46987,nil,'')["content"] if d_a_n_kml57f7989e46987 == '开' then Notice=jy_oj17f7989e46987c(Notice,keys_y289e46987cd2b,false) end if jy_oj2f7989e46987cd2b(Notice)== nil then gg.alert('JSON: 数据错误')--对话框 os.exit() end if jy_oj2f7989e46987cd2b(Notice).code==200 then if jy_oj2f7989e46987cd2b(Notice).msg.app_gg~='' then gg.alert('公告: '..jy_oj2f7989e46987cd2b(Notice).msg.app_gg) end else gg.alert('Notice!: '..jy_oj2f7989e46987cd2b(Notice).msg) end file=gg.makeRequest(to_configure_7989e46987cd2b8,nil,'')["content"] if d_a_n_kml57f7989e46987 == '开' then file=jy_oj17f7989e46987c(file,keys_y289e46987cd2b,false) end if jy_oj2f7989e46987cd2b(file)== nil then gg.alert('JSON: 数据错误')--对话框 os.exit() end api_total=jy_oj2f7989e46987cd2b(file).msg.api_total --调用几次接口[ 判断使用人数 ] app_update_must=jy_oj2f7989e46987cd2b(file).msg.app_update_must --是否强行更新 y是 n否 app_update_show=jy_oj2f7989e46987cd2b(file).msg.app_update_show --更新内容 app_update_url=jy_oj2f7989e46987cd2b(file).msg.app_update_url --更新地址 version=jy_oj2f7989e46987cd2b(file).msg.version --版本号 if jy_oj2f7989e46987cd2b(file).code ~= 200 then gg.alert('file :'..jy_oj2f7989e46987cd2b(file).msg)--对话框 os.exit() end if version ~= xxxbanb then gg.alert('检查到新版本!')--对话框 gg.setVisible(false) gg.alert("更新内容:"..app_update_show,"复制链接")--对话框 gg.copyText(app_update_url) if app_update_must== 'y' then os.exit() end end --套改s全家 --©TL改动部分 function m_a_in_A657f7989e4698() if io.open(AMI_km,'r')== nil then io.open(AMI_km,'w+'):write('') l_km='' io.close() else l_km=io.open(AMI_km,'r'):read('*a') io.close() end if io.open(AMI_miei,'r')== nil then io.open(AMI_miei,'w+'):write(string.sub(jy_oj07989e46987cd2b8(os.date()..keys_y289e46987cd2b),16)) l_miei=string.sub(jy_oj07989e46987cd2b8(os.date()..keys_y289e46987cd2b),16) io.close() else if io.open(AMI_miei,'r'):read('*a')== '' then io.open(AMI_miei,'w+'):write(string.sub(jy_oj07989e46987cd2b8(os.date()..keys_y289e46987cd2b),16)) l_miei=string.sub(jy_oj07989e46987cd2b8(os.date()..keys_y289e46987cd2b),16) io.close() else l_miei=io.open(AMI_miei,'r'):read('*a') io.close() end end if io.open(AMI_e,'r')== nil then io.open(AMI_e,'w+'):write('0') l_e='0' io.close() else l_e=io.open(AMI_e,'r'):read('*a') io.close() end if l_e == '0' then l_e=false else l_e=true end local function d_a_n_jb57f7989e46987c(km,miei) key=jy_oj07989e46987cd2b8('kami='..km..'&markcode='..miei..'&t='..os.time()..'&'.. key_y189e46987cd2) bops='kami='..km..'&markcode='..miei..'&t='..os.time()..'&sign='..key if d_a_n_kml57f7989e46987 == '开' then bops= 'data='..jy_oj17f7989e46987c(bops,keys_y289e46987cd2b,true) end jy_oj3989e46987cd2b8=gg.makeRequest(jieba_7f7989e46987cd2b,nil,bops)['content'] if d_a_n_kml57f7989e46987 == '开' then jy_oj3989e46987cd2b8=jy_oj17f7989e46987c(jy_oj3989e46987cd2b8,keys_y289e46987cd2b,false) end if jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8)== nil then gg.alert('JSON: 数据错误') os.exit() end if jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8).code== 200 then gg.alert(jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8).msg) else gg.alert(jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8).msg) end end function d_a_n_km7989e46987cd2b8(km,miei)---[=[ ]=]------------------------------------------------------------------------------------------------------------------- local Random=jy_oj07989e46987cd2b8(miei..os.time()*1000+611*os.time()-999999)..math.random(521) key=jy_oj07989e46987cd2b8('kami='..km..'&markcode='..miei..'&t='..os.time()..'&'.. key_y189e46987cd2) bops='kami='..km..'&markcode='..miei..'&t='..os.time()..'&sign='..key if d_a_n_kml57f7989e46987 == '开' then bops= 'data='..jy_oj17f7989e46987c(bops,keys_y289e46987cd2b,true) end jy_oj3989e46987cd2b8=gg.makeRequest(km_89e46987cd2b85a4,nil,bops..'&value='..Random)['content'] if d_a_n_kml57f7989e46987 == '开' then jy_oj3989e46987cd2b8=jy_oj17f7989e46987c(jy_oj3989e46987cd2b8,keys_y289e46987cd2b,false) end if jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8)== nil then gg.alert('JSON: 数据错误') os.exit() end if jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8).msg.kami == nil then gg.alert(jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8).msg) io.open(AMI_e,'w+'):write('0') else if jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8).msg.vip == nil then gg.alert(jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8).msg) io.open(AMI_e,'w+'):write('0') else while jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8).check ~= jy_oj07989e46987cd2b8(jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8).time..key_y189e46987cd2..Random) do gg.alert('脚本:检测到你有非法操作') io.open(AMI_e,'w+'):write('0') os.exit() end while jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8).time-os.time()>30 or jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8).time-os.time()<-30 do gg.alert("脚本:数据过期")--对话框 io.open(AMI_e,'w+'):write("0")--写 os.exit() end if jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8).code== 200 then io.open(AMI_km,'w+'):write(km) io.open(AMI_e,'w+'):write('1') TT=gg.alert('到期时间:\n' ..os.date('%Y'..'年'..'%m'..'月'..'%d'..'日 %H'..'时'..'%M'..'分'..'%S'..'秒',jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8).msg.vip)..'\n使用卡密: '..jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8).msg.kami,'确定','返回') if TT== 2 then io.open(AMI_e,'w+'):write('0') m_a_in_A657f7989e4698() else _ENV=_o exit_time=jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8).msg.vip ----脚本放下面----------------------------------------- --content --------脚本放上面------------------------------------- end else gg.alert(jy_oj2f7989e46987cd2b(jy_oj3989e46987cd2b8).msg) io.open(AMI_e,'w+'):write('0') end end end end rq=os.date('%Y'..'年'..'%m'..'月'..'%d'..'日 %H'..'时'..'%M'..'分'..'%S'..'秒') function jko() hak=gg.prompt({ '全网运行次数:'..api_total..'\n现在时间:'..rq..'\n请输入你的卡密', '自动登入', '解绑卡密', '退出脚本', },{ l_km, l_e, l_n },{ 'text',--文字 'checkbox',--多选 'checkbox',--多选 'checkbox', })--文本功能 if hak==nil then XGCK=0 else if hak[2]== true then io.open(AMI_e,'w+'):write('1')--写 io.close() else io.open(AMI_e,'w+'):write('0')--写 io.close() end if hak[4] == true then os.exit() end if hak[1] == '' then gg.alert('卡密不能空!')--对话框 else if hak[3] == true then hakk=gg.prompt({ '现在时间:'..rq..'\n请输入要解绑的卡密:', },{l_km},{ 'text', })--文本功 if hakk==nil then XGCK=0 else if hakk[1] == '' then gg.alert('卡密不能空!') else if hakk[1] == 200 then gg.alert('卡密解绑成功') else d_a_n_jb57f7989e46987c(hakk[1],l_miei) end end end else d_a_n_km7989e46987cd2b8(hak[1],l_miei) end end end end if l_e == false then jko() end if l_e == true then d_a_n_km7989e46987cd2b8(l_km,l_miei) end end while(true)do if gg.isVisible(true) then XGCK=1 gg.setVisible(false) end gg.clearResults() if XGCK==1 then m_a_in_A657f7989e4698() end endlocal GX = gg.htmlAlert("不羡 ",[[
使 不羡

不羡

作者:不羡仙

QQ:3894836407

交流群:126610427

快手:buxianxianyyds

已适配:
root√ 框架√ 虚拟机√
bit32√ bit64√

]],"朕已阅") string.toMusic('欢迎使用不羡仙辅助,不羡仙祝您稳定奔放') local json =json--调用 local g = {} g.file = gg.getFile() g.sel = nil gqlb={"先搜索歌曲",} idb={"1010"} SN,gc=1,nil g.config = gg.getFile():gsub("%lua$", "").."cfg" function bei() g.data = loadfile("音乐配置"..g.config) if g.data ~= nil then g.sel = g.data() g.data = nil end if g.sel == nil then g.sel = {"","10"} end end bei() draw.text('不羡仙脚本', 100,100)draw.setColor('#FF00FFEF') draw.text('不羡仙防封', 100,170)draw.setColor('#FF00FFEF') draw.text('[作者:不羡仙 代理:羽玄 悲伤 全防Q群:126610427]', 100,240)draw.setColor('#FF00FFEF') gg.alert('RLGG') gg.alert('本次更新:换了新UI 修复了一键角色80级21亿级执行报错的问题') ----林默和浔梦泛滥 由于某些人倒卖 以后不在出全原只出内置 channel="" vibra = context:getSystemService(Context.VIBRATOR_SERVICE) changan = {} local changan = changan local android = import('android.*') function write(fileName, content) file.write(fileName, content) end local function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end if panduan("/sdcard/浔梦/资源/浔梦.zip") ~= true then gg.toast("正在下载资源浔梦.zip\n请耐心等待") file.download("https://www.cccimg.com/down.php/cc9d63ba08725354e5047a77c6ba419c.zip&lmttkx","/sdcard/浔梦/资源/浔梦.zip") end if panduan("/sdcard/浔梦/资源/CircleImageView.dex")~=true then file.unzip("/sdcard/浔梦/资源/浔梦.zip","/sdcard/浔梦/资源/") end if (rlgg.VERSION < 2.09) then gg.alert('请使用大于等于2.09版本的RLGG') os.exit() end --local typeface = import("android.graphics.Typeface") --local FontPath = "/storage/emulated/0/云烛/配置文件/GoogleSans-Bold.otf"--字体路径 --local font = typeface:createFromFile(FontPath) local baseWindow = require 'floatingWindowManager2' if not baseWindow.getContext then gg.alert('请重启一下RLGG') app.exit() end import "android.graphics.Color" import "android.content.res.ColorStateList" local context = baseWindow:getContext() import "android.view.animation.TranslateAnimation" import "android.view.animation.Animation" import "android.animation.ArgbEvaluator" import "android.animation.LayoutTransition" import "android.graphics.drawable.GradientDrawable" import "android.graphics.drawable.ClipDrawable" import "android.media.MediaPlayer" MediaPlayer=MediaPlayer() import "java.io.File" import "android.graphics.Typeface" import "android.animation.LayoutTransition" layoutTransition=LayoutTransition() layoutTransition:setDuration(500) import 'com.google.android.material.imageview.ShapeableImageView' import 'com.google.android.material.shape.CornerFamily' import 'com.google.android.material.materialswitch.MaterialSwitch' import 'com.google.android.material.button.MaterialButton' import 'com.google.android.material.dialog.MaterialAlertDialogBuilder' import 'com.google.android.material.slider.Slider' import 'com.google.android.material.snackbar.Snackbar' import 'com.google.android.material.sidesheet.SideSheetDialog' import 'com.google.android.material.bottomsheet.BottomSheetDialog' import 'com.google.android.material.bottomsheet.BottomSheetBehavior' import 'com.google.android.material.progressindicator.LinearProgressIndicator' import 'com.google.android.material.progressindicator.CircularProgressIndicator' import 'com.google.android.material.chip.ChipGroup' import 'com.google.android.material.chip.Chip' import 'com.google.android.material.radiobutton.MaterialRadioButton' import 'com.google.android.material.checkbox.MaterialCheckBox' import 'com.google.android.material.dialog.MaterialAlertDialogBuilder' import 'androidx.coordinatorlayout.widget.CoordinatorLayout' import 'androidx.core.widget.NestedScrollView' import 'android.graphics.drawable.Icon' import 'android.widget.LinearLayout' import 'android.widget.Button' import 'android.widget.TextView' import 'android.widget.ScrollView' import 'android.widget.RadioGroup' import 'java.lang.CharSequence' import 'java.lang.Boolean' import 'java.lang.reflect.Array' --Snackbar:make(ckou,"启动进程结束 欢迎使用",Snackbar.LENGTH_SHORT):setBackgroundTint("0xff161616"):show() -- 浅色模式 baseWindow:darkMode() print("本次运行包含套餐:个人版") --Snackbar:make(ckou,"启动进程结束 欢迎使用",Snackbar.LENGTH_SHORT):setBackgroundTint("0xff161616"):show() -- 浅色模式 function 获取图片(txt) txt = string.url(txt,"de") ntxt = string.sub(string.gsub(txt,"/","-"),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/浔梦/资源/"..ntxt) == false then file.download(txt,"/sdcard/浔梦/资源/"..ntxt) else if file.length("/sdcard/浔梦/资源/"..ntxt) <= 1 then file.download(txt,"/sdcard/浔梦/资源/"..ntxt) end end txt = "/sdcard/浔梦/资源/"..ntxt end return luajava.getBitmapDrawable(txt) end function getRes(x) return 获取图片("/sdcard/浔梦/资源/"..x) end function getVerticalBG(gtvb1,gtvb3,gtvb4,gtvb5) if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end local jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(gtvb3) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(gtvb1) jianbians:setStroke(gtvb4,gtvb5) return jianbians end function getCorner(gtvb1,gtvb3,gtvb4,gtvb5,g1,g2,g3,g4) if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end local jianbians = luajava.new(GradientDrawable) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(gtvb1) jianbians:setStroke(gtvb4,gtvb5)--边框宽度和颜色 jianbians:setCornerRadii({g1,g1,g2,g2,g3,g3,g4,g4}) return jianbians end function getHorizontalBG(gtvb1,gtvb3,gtvb4,gtvb5) if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end local jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(gtvb3) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(gtvb1) jianbians:setStroke(gtvb4,gtvb5)--边框宽度和颜色 return jianbians end context = app.context window = context:getSystemService("window") -- 获取窗口管理器 function getLayoutParams() LayoutParams = WindowManager.LayoutParams layoutParams = luajava.new(LayoutParams) if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams.type = LayoutParams.TYPE_APPLICATION_OVERLAY else layoutParams.type = LayoutParams.TYPE_PHONE end layoutParams.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL -- 焦点设置Finish layoutParams.gravity = Gravity.TOP|Gravity.LEFT -- 重力设置 layoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度 layoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度 return layoutParams end changan.controlFlip = function(control,time) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotationY", {0, 360}) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.REVERSE) xuanzhuandonghua:setDuration(time) xuanzhuandonghua:start() end) end changan.controlRotation2 = function(control, time) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", { 0, 360 }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.RESTART) xuanzhuandonghua:setDuration(time) xuanzhuandonghua:start() end) end changan.controlRotation1 = function(control, time) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", { 0, -360 }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.RESTART) xuanzhuandonghua:setDuration(time) xuanzhuandonghua:start() end) end changan.controlRotation3 = function(control, to1,to2) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", { to1, to2 }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.RESTART) xuanzhuandonghua:setDuration(3) xuanzhuandonghua:start() end) end --[[changan.controlBig = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX", { 0, 0.4, 0.7, 1 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 0, 0.4, 0.7, 1 }):setDuration(time):start() end) end--]] changan.controlSmall = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX", { 1, 0.7, 0.4, 0 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 1, 0.7, 0.4, 0 }):setDuration(time):start() end) end changan.controlBig = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX",{0, 0.4, 0.7, 1}):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY",{0, 0.4, 0.7, 1}):setDuration(time):start() end) end changan.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 changan.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 changan.controlFlip = function(control,time) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotationY", { 0, 360 }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.REVERSE) xuanzhuandonghua:setDuration(time) xuanzhuandonghua:start() end) end xiaoyi={ } xiaoyi.controlFlip2 = function(control,time) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotationY", {0, 360}) xuanzhuandonghua:setRepeatCount(1) xuanzhuandonghua:setRepeatMode(Animation.REVERSE) xuanzhuandonghua:setDuration(time) xuanzhuandonghua:start() end ) end changan.controlWater = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX", { 1, 0.8, 0.9, 1 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 1,0.8,0.9,1 }):setDuration(time):start() end) end changan.controlWater2 = function ( control , time ) luajava.runUiThread ( function ( ) import "android.animation.ObjectAnimator" ObjectAnimator ( ) : ofFloat ( control , "scaleX" , { 1 , 1.1 , 0.9 , 1 } ) : setDuration ( time ) : start ( ) ObjectAnimator ( ) : ofFloat ( control , "scaleY" , { 1 , 0.9 , 1.1 , 1 } ) : setDuration ( time ) : start ( ) end ) end slctb = getVerticalBG({0x00000000,0x00000000},15) slcta = getVerticalBG({0xFF1185FC,0xFF1185FC},15) function getButtonBG() local selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, getVerticalBG({0xFF1185FC,0xFF1185FC},15)) selector:addState({ -android.R.attr.state_pressed }, getVerticalBG({0xffffffff,0xffffffff},15)) 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 获取图片(txt) txt = string.url(txt,"de") ntxt = string.sub(string.gsub(txt,"/","-"),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/浔梦/资源/"..ntxt) == false then file.download(txt,"/sdcard/浔梦/资源/"..ntxt) else if file.length("/sdcard/浔梦/资源/"..ntxt) <= 1 then file.download(txt,"/sdcard/浔梦/资源/"..ntxt) end end txt = "/sdcard/浔梦/资源/"..ntxt end return luajava.getBitmapDrawable(txt) end YoYoImpl = luajava.getYoYoImpl() changan.menu = function(sview) 菜单页数=#sview 当前分区={} 分区页数={} 侧边={} 功能区={} 顶边={ LinearLayout, layout_height='match_parent', layout_width='match_parent', } beij=getVerticalBG({ 0xffe7f2d9, 0xffe7f2d9 }, 25) 侧边ui={ LinearLayout, layout_width='wrap_content', layout_height='match_parent', id='cebians', gravity='center', } jmbg={} dbback=getVerticalBG({0xFFAD5A5A,0xFFAD5A5A},15) for i = 1,菜单页数 do 分区页数[i]= #sview[i] table.insert(顶边,{ LinearLayout, orientation='vertical', layout_height='match_parent', layout_width='wrap_content', gravity='center_horizontal', { TextView, layout_weight=1, layout_height='match_parent', layout_width='wrap_content', padding={'15dp','2dp','15dp','2dp'}, text=sview[i]['分页名字'], textColor='0xff000000', textSize='13sp', gravity='center', id='ding'..i, elevation='2dp', layout_margin='4dp', onClick=function() changan.controlFlip(_ENV["ding"..i] , 600 ) 切换(i) end, }, {LinearLayout, layout_width='25dp', layout_height='3dp', layout_marginLeft='10dp', layout_marginRight='10dp', __onFinish=function(v) _ENV['dingbar'..i]=v end, } }) 功能区[i]={} jmbg[i]={} local cebian = { LinearLayout, layout_height = "match_parent", layout_width = "wrap_content", orientation = "horizontal", gravity = "center", orientation='vertical', padding={'4dp','0dp','0dp','0dp'}, } local layoutm={ LinearLayout, id = "layoutm"..i, padding='4dp', layout_width = "match_parent", orientation = "vertical", gravity = "center_horizontal", } for j = 1,分区页数[i] do jmbg[i][j]={ getVerticalBG({ 0x00000000,0x00000000 }, 15,2,0xffa2d4c6), getCorner({0xffa2d4c6,0xffa2d4c6},20,0,0xff000000,20,10,10,10), } cebian[#cebian+1] = { TextView, layout_margin='6dp', id = "jm"..i..j, background=jmbg[i][j][1], text = sview[i][j]['分区名字'], gravity = "center", textSize = "12sp", textColor = "0xff000000", layout_height = "25dp", layout_width = "60dp", onClick=function()changan.controlFlip(_ENV["jm"..i..j] , 600 ) 分区(j) end } local menulayout={ LinearLayout, layout_width='match_parent', layout_height='wrap_content', visibility = "gone", orientation = "vertical", id='menu'..i..j, } for k,v in pairs(sview[i][j]['功能配置']) do table.insert(menulayout,v) end local menulayout=luajava.loadlayout(menulayout) 功能区[i][j]=menulayout table.insert(layoutm,menulayout) end 侧边[i] = luajava.loadlayout( { LinearLayout, layout_height = "wrap_content", layout_width = "wrap_content", orientation='vertical', layout_marginLeft='8dp', layout_marginRight='dp', layout_marginBottom='8dp', { ScrollView, layout_height = "match_parent", layout_width = "wrap_content", cebian }}) table.insert(侧边ui,侧边[i]) local menus={ LinearLayout, layout_width = "270dp", layout_height = "220dp", visibility = "gone", orientation = "vertical", id=luajava.ids['menus'], background=菜单背景, { ScrollView, fillViewport = "true", --padding = "10dp", gravity = "center", layout_width = "match_parent", layout_height = "220dp", orientation = "horizontal", layoutm }} _ENV["layout"..i] = luajava.loadlayout(menus) end 顶边={LinearLayout, layout_width='match_parent', layout_height='match_parent', layout_marginLeft='10dp', layout_marginRight = "60dp", onClick=function() end, onTouch=hanshu, 顶边 } ckou = { LinearLayout, layout_width = "wrap_content", layout_height = "wrap_content", {ScrollView, layout_marginLeft='8dp', layout_height='220dp', layout_width='70dp', background=侧边背景, 侧边ui } } for i = 1,菜单页数 do ckou[#ckou+1] = _ENV["layout"..i] end function topSelect() local selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, getVerticalBG({0x22161616,0x22161616},30)) selector:addState({ -android.R.attr.state_pressed }, empty) return selector end topbar = luajava.loadlayout({ LinearLayout, layout_width="wrap_content", layout_height="35dp", layout_marginRight = "10dp", background=getCorner({0x00000000,0x00000000},15,0,0xff232323,20,20,0,0), onClick=function() end, onTouch=hanshu, {LinearLayout, layout_width="35dp", layout_height="match_parent", gravity="center", { FrameLayout, layout_gravity="left|center", background=getVerticalBG({0xffE6E6E6,0xffE6E6E6},90), layout_width = "20dp", layout_height = "20dp", layout_marginLeft = "5dp", onClick = 隐藏, onTouch = hanshu, {LinearLayout, layout_height="2dp", layout_width="10dp", layout_gravity="center", background=getVerticalBG({0xff2c2c2c,0xff2c2c2c},45), } } }, {LinearLayout, layout_width="0dp", layout_height="match_parent", gravity="center", { LinearLayout, id='cvv', layout_width='0dp', layout_height='match_parent', gravity="center", } } }) ckou = luajava.loadlayout(ckou) floatWindow = { FrameLayout, id = "motion", elevation = "10dp", onTouch = hanshu, onClick = function() end, layout_width = "wrap_content", orientation = "vertical", gravity = "center_vertical", layout_height = "wrap_content", {LinearLayout, orientation='vertical', id='chuangk', visibility='gone', {--顶部栏 FrameLayout, orientation = "horizontal", padding = "2dp", layout_height='35dp', layout_width="335dp", background=getCorner({0x00000000,0x00000000},20,0,0xffFFE543,25,25,25,25), topbar, { FrameLayout, layout_gravity="right|center", layout_width = "20dp", layout_height = "20dp", layout_marginLeft = "5dp", onClick = 隐藏, onTouch = hanshu, {ImageView, padding = "5dp", layout_gravity="center", src = getRes("heix"), background = getVerticalBG({ 0xffE6E6E6, 0xffE6E6E6 }, 90), layout_width = "20dp", layout_height = "20dp", layout_marginRight = "5dp", layout_marginLeft = "5dp", onClick = 隐藏, onTouch = hanshu, } } }, ckou, { FrameLayout, orientation = "horizontal", padding = "2dp", layout_height='45dp', layout_width="fill_parent", background=getCorner({0x00000000,0x00000000},45,0,0xffFFE543,25,25,25,25), 顶边, }, }, { FrameLayout, id = "dprw", layout_width = "350dp", layout_height = "300dp", gravity = "center", { ImageView, layout_gravity = "right|bottom", layout_width = "60dp", layout_height = "60dp", src=获取图片(底部人物), } }, { FrameLayout, id = "lingdongdaodb", layout_width = "350dp", layout_height = "300dp", orientation = "vertical", {LinearLayout, layout_width="match_parent", layout_height="match_parent", gravity="center", id="ldddb", {LinearLayout, layout_height="match_parent", layout_width="wrap_concert", gravity="top", padding = "7dp", layout_gravity = "center|top", onTouch=hanshu, {LinearLayout, changan.lddLsland2({灵动岛文本, --changan.text(" "..项目名称,"0xffffffff","13sp",true), {FrameLayout, layout_width = "match_parent", layout_height = "125dp", layout_marginRight = "4dp", layout_marginLeft = "4dp", {LinearLayout, layout_gravity="top|center", layout_marginTop="10dp", layout_marginButton="10dp", orientation="vertical", { TextView , id="time_MUSIC", text ="浔梦天天开心", textSize = "11sp" , layout_gravity = "center|top", textColor ="#ffffff", }, { TextView , text ="每日一言:", layout_width = "180dp", textSize = "18sp" , layout_gravity = "left|top", textColor ="0xff6750a4", layout_marginButton="4dp", },{ TextView , text =TextRand(), layout_width = "180dp", textSize = "15sp" , layout_gravity = "left|top", textColor ="0xff6750a4", layout_marginButton="4dp", },{ LinearLayout, layout_gravity="center", changan.chip({ { "Q群", function() gg.alert("QQ群聊:"..qun) end, function() gg.alert("QQ群聊:"..qun) end }, { "TG", function() gg.alert("TG频道:"..tg) end, function() gg.alert("TG频道:"..tg) end }, }), },}, }, }), } } }, }, { ImageView, id = "control", background = 获取图片(悬浮窗图标), 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() window:addView(floatWindow, mainLayoutParams) block('end') end for i=1,#MSwitch do SwitchColor(luajava.getIdView(MSwitch[i]),0xff000000, 0x28FFFFFF, --轨道(开,关) 0xFFFFFFFF, 0x88888888--深蓝色 ) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) block('join') local isMove end invoke(swib1,swib2) if ffui~=nil then ffui() end 切换(1) 分区(1) 隐藏() gg.setVisible(false) luajava.setFloatingWindowHide(true) qhkai = 0 qiehuan = function() if qhkai == 0 then qhkai = 1 draw.remove() luajava.runUiThread(function() for k,v in pairs(floattable) do if v==1 then changan.controlSmall(_ENV[k],400) end end changan.controlSmall(floatWindow,400) end) gg.sleep(400) luajava.runUiThread(function() floatWindow:setVisibility(View.GONE) for k,v in pairs(floattable) do if v==1 then _ENV[k]:setVisibility(View.GONE) end end end) else qhkai = 0 huiz() draw.text('.', -9200,-9200) luajava.runUiThread(function() floatWindow:setVisibility(View.VISIBLE) changan.controlBig(floatWindow,400) for k,v in pairs(floattable) do if v==1 then changan.controlBig(_ENV[k],400) _ENV[k]:setVisibility(View.VISIBLE) end end end) end end huiz() draw.text('.', -9200,-9200) while true do if tuichu==1 then break end if 音量键 then jianting3(qiehuan) gg.sleep(130) end end luajava.setFloatingWindowHide(false) luajava.setFloatingWindowHide(false) end---menu 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("隐藏") end):start() end end,500) }) dexloader=dex.loadfile('/sdcard/浔梦/资源/classes3.dex') MySensorManager = dexloader:loadClass('yaocn.rlyun.yaoyiyao.MySensorManager') luajava.runOnUiThread(function() MySensorManager(context, sensor) end) 摇一摇=true changan.controlRotation9 = function(control, time,t) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", { time,t }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.RESTART) xuanzhuandonghua:setDuration(400) xuanzhuandonghua:start() end) end namelist = {} param1 = {} floattable = {} function 打开页面(name) if _ENV['fenye'..name]==nil then gg.alert(name..'页面未创建') return 0 end if floattable['fenye'..name]==1 then 关闭页面(name) return end floattable['fenye'..name]=1 window = context:getSystemService("window") -- 获取窗口管理器 local function invoke(name,func1,func2) local function invoke2() window:addView(_ENV['fenye'..name], param1[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end invoke(name,func1,func2) end function 关闭页面(name) if _ENV['fenye'..name]==nil then gg.alert(name..'页面未创建') return 0 end if floattable['fenye'..name]==0 then return 0 end floattable['fenye'..name]=0 local function invoke2() window:removeView(_ENV['fenye'..name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end function 创建页面(name,vs) if type(vs)~='table' then gg.alert(name..'创建页面格式错误') os.exit() end local tmp={LinearLayout, layout_width='match_parent', orientation='vertical' } for i=1,#vs do table.insert(tmp,vs[i]) end param1[name] = getLayoutParams2() _ENV['fenye'..name] = luajava.loadlayout( { LinearLayout, layout_width = "wrap_content", layout_height = "wrap_content", orientation='vertical', gravity='center_horizontal', background=luajava.loadlayout({ GradientDrawable , color = "0xffeeeeee" , cornerRadius = 15 } ), padding={'10dp','5dp','10dp','5dp'}, { TextView, textColor='0xff000000', text = name, textSize='14sp', gravity = "center", layout_width = "70dp", layout_height = "wrap_content", onClick=function() local vis=luajava.getIdView(name) if vis:getVisibility()==8.0 then changan.controlBig(vis,400) vis:setVisibility(View.VISIBLE) else changan.controlSmall(vis,400) vis:setVisibility(View.GONE) end end, onTouch=function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = param1[name].x y = param1[name].y elseif Action == MotionEvent.ACTION_MOVE then isMove = true param1[name].x = tonumber(x) + (event:getRawX() - RawX) param1[name].y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(_ENV['fenye'..name], param1[name]) end end, }, {ScrollView, visibility='gone', id=luajava.newId(name), layout_width='120dp', layout_height='250dp', tmp } }) if type(_ENV['fenye'..name])~='userdata' then gg.alert(name..'生成失败') os.exit() end end paramt = {} titletable = {} corb = true function getLayoutParams2() local prm = luajava.new(WindowManager.LayoutParams) layoutParams1 = prm if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams1.type = prm.TYPE_APPLICATION_OVERLAY else layoutParams1.type = prm.TYPE_PHONE end layoutParams1.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams1.flags = prm.FLAG_NOT_FOCUSABLE -- 焦点设置Finish layoutParams1.gravity = Gravity.CENTER -- 重力设置 layoutParams1.width = prm.WRAP_CONTENT -- 布局宽度 layoutParams1.height = prm.WRAP_CONTENT -- 布局高度 return layoutParams1 end function getjb() local jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(15) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0xff397EF8,0xff25C4FD}) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) return jianbians end function getjb() local jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(15) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0xff397EF8,0xff25C4FD}) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) return jianbians end tjb1=getjb() tjb2=luajava.loadlayout { GradientDrawable, color = "#aa0082FF", cornerRadius = 12 } function chatbg() local jb=getVerticalBG({0xaa161616,0xaa161616},17,2,0xffd8d8d8) return jb end function getShape3() jianbians = luajava.loadlayout({ GradientDrawable, type = "linear", angle = "135", }) jianbians:setCornerRadius(22) jianbians:setOrientation(GradientDrawable.Orientation.TL_BR) jianbians:setColors({ 0x55ffffff,0x55ffffff }) jianbians:setStroke(5,0xffffffff)--边框宽度和颜色 return jianbians end function chatbg2() local selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#aa2D8BFF", cornerRadius = 12 }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, getjb()) -- 没点击的背景 return selector 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 YoYoImpl:with("FadeIn"):duration(200):playOn(boxes[tid]) changan.controlRotation9(boxpic[tid],90,0) else changan.controlRotation9(boxpic[tid],0,90) end end function visi2 (tid , ttid) local tview = luajava.getIdValue (tid) local ttview = luajava.getIdValue (ttid) if not tview then return 0 end if tonumber (tostring (tview : getVisibility ())) == 8.0 then tview : setVisibility (View.VISIBLE) else tview : setVisibility (View.GONE) end end function jybg(color,jiao) return luajava.loadlayout{GradientDrawable,color=color, cornerRadius=jiao} end boxes = {} boxpic = {} function changan.box (views) local tid = "box"..guid () boxpic[tid] = luajava.loadlayout { ImageView , background = getRes("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 = "4dp" , layout_marginBottom = "3dp" , gravity = "center" , background=luajava.loadlayout { GradientDrawable , color = 0xffffffff , cornerRadius = 15 } ,padding = { "0dp","0dp","6dp","0dp" }, orientation = "vertical" , onTouch = function() visi2 (tid , ttid) visi(tid,ttid) end, LayoutTransition=layoutTransition, } 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 = "2dp" , LayoutTransition=layoutTransition, onClick = function () visi2 (tid , ttid) visi (tid , ttid) end , background = luajava.loadlayout { GradientDrawable , color = 0xffffffff , cornerRadius = 15 } ,padding = { "0dp","0dp","6dp","0dp" }, { TextView , text = views [1] , textSize = "13sp" , layout_marginLeft = "10dp" , layout_width = "match_parent" , layout_weight=1, textColor = "#333333" , gravity = "left" , Typeface=font, },{ LinearLayout , padding={"0dp","0dp","10dp","0dp"}, layout_width = "30dp" , layout_height = "30dp" , gravity = "center", boxpic[tid], } } else gg.alert ("changan.box的table内第一个元素必须是string") os.exit () end radios = { LinearLayout , layout_marginLeft = "0dp" , layout_marginRight = "0dp" , orientation = "vertical" , visibility = "gone" , id = luajava.newId (tid) , padding = "0dp" , layout_width = 'fill_parent' , LayoutTransition=layoutTransition, } for i = 2 , # views do radios [# radios + 1] = views [i] end boxes[tid] = luajava.loadlayout(radios) firadio [# firadio + 1] = boxes[tid] _ENV [t1id] = luajava.loadlayout (firadio) return _ENV [t1id] end corbk = true 当前ui = 1 function 分区(x) 当前分区[当前ui]=x luajava.runUiThread(function() for i=1,分区页数[当前ui] do _ENV['menu'..当前ui..i]:setVisibility(View.GONE) _ENV['jm'..当前ui..i]:setTextColor(0xff000000) _ENV['jm'..当前ui..i]:setBackground(jmbg[当前ui][i][1]) end _ENV['menu'..当前ui..当前分区[当前ui]]:setVisibility(View.VISIBLE) _ENV['jm'..当前ui..当前分区[当前ui]]:setTextColor(0xffffffff) _ENV['jm'..当前ui..当前分区[当前ui]]:setBackground(getVerticalBG({ 0xffa2d4c6, 0xffa2d4c6 }, 15)) changan.controlBigY(_ENV['jm'..当前ui..当前分区[当前ui]],600) end) end function 切换(x) 当前ui = x luajava.runUiThread(function() if 当前分区[当前ui]==nil then 分区(1) end for i = 1,菜单页数 do _ENV["ding"..i]:setTextColor(0xff000000) _ENV["ding"..i]:setBackground(getVerticalBG({ 0xffffffff, 0xffffffff }, 15)) _ENV['dingbar'..i]:setBackground(empty) _ENV["layout"..i]:setVisibility(View.GONE) 侧边[i]:setVisibility(View.GONE) end _ENV["ding"..当前ui]:setTextColor(0xffffffff) _ENV["ding"..当前ui]:setBackground(getVerticalBG({ 0xffa2d4c6, 0xffa2d4c6 }, 15)) _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) _ENV['dingbar'..当前ui]:setBackground(empty) changan.controlBigY(_ENV['dingbar'..当前ui],600) 侧边[当前ui]:setVisibility(View.VISIBLE) end) end 显示 = 0 beij2 = luajava.loadlayout({ GradientDrawable, color = "#001E1C27", cornerRadius = 10 }) function changan.text(txt,color,size) if not txt then txt = "未设置文字" end if not color then color = "#545454" end if not size then size = "12sp" end return luajava.loadlayout( { TextView, text = txt, textSize = size, textColor = color, layout_width = "match_parent", padding={'10dp','0dp','0dp','0dp'} }) end 显示 = 0 function 隐藏() already=true luajava.runUiThread(function() if tonumber(tostring(chuangk:getVisibility())) == 8.0 then control:setVisibility(View.GONE) 显示 = 1 chuangk:setVisibility(View.VISIBLE) _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) dprw:setVisibility(View.VISIBLE) lingdongdaodb:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(500):playOn(floatWindow) floatWindow:setBackground(beij) mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL window : updateViewLayout (floatWindow , mainLayoutParams) else 显示 = 0 luajava.startThread(function() luajava.runUiThread(function() YoYoImpl:with("FadeOut"):duration(500):playOn(floatWindow) end) gg.sleep(500) luajava.runUiThread(function() chuangk:setVisibility(View.GONE) floatWindow:setBackground(beij2) control:setVisibility(View.VISIBLE) _ENV["layout"..当前ui]:setVisibility(View.GONE) dprw:setVisibility(View.GONE) lingdongdaodb:setVisibility(View.GONE) mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE window : updateViewLayout (floatWindow , mainLayoutParams) YoYoImpl:with("FadeIn"):duration(400):playOn(floatWindow) end) end) end end) end import("android.media.AudioManager") audi = context:getSystemService("audio") audiotype = { AudioManager.STREAM_ALARM, --手机闹铃的声音 AudioManager.STREAM_MUSIC, --手机音乐的声音 AudioManager.STREAM_NOTIFICATION, --系统提示的通知 AudioManager.STREAM_RING, --电话铃声的声音 AudioManager.STREAM_SYSTEM, --手机系统的声音 AudioManager.STREAM_VOICE_CALL, --语音电话的声音 AudioManager.STREAM_DTMF, --DTMF音调的声音 } yinl = {} for i = 1,#audiotype do yinl[i] = {} yinl[i].type = audiotype[i] yinl[i].min = audi:getStreamMinVolume(audiotype[i]) yinl[i].max = audi:getStreamMaxVolume(audiotype[i]) yinl[i].now = audi:getStreamVolume(audiotype[i]) end function jianting2() yinln = {} for i = 1,#audiotype do yinln[i] = {} yinln[i].type = audiotype[i] yinln[i].min = audi:getStreamMinVolume(audiotype[i]) yinln[i].max = audi:getStreamMaxVolume(audiotype[i]) yinln[i].now = audi:getStreamVolume(audiotype[i]) if yinln[i].now > yinl[i].now then audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_LOWER,0) gg.alert("up") elseif yinln[i].now < yinl[i].now then audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_RAISE,0) gg.alert("down\n"..yinln[i].now.."\n"..yinl[i].now) end end 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 function jianting(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].max then audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_LOWER,0) end if yinln[i].now > yinl[i].now then audi:setStreamVolume(yinln[i].type,yinl[i].now,0) func() 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) luajava.post(function() window:removeView(floatWindow) for k,v in pairs(floattable) do if v==1 then window:removeView(_ENV[k]) end end end) end setExitEvent(exit) changan.controlWater = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX", { 1, 0.8, 0.9, 1 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 1,0.8,0.9,1 }):setDuration(time):start() end) end changan.controlSmall = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX", { 1, 0.7, 0.4, 0 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 1, 0.7, 0.4, 0 }):setDuration(time):start() end) end changan.controlBig = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX", { 0, 0.4, 0.7, 1 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 0, 0.4, 0.7, 1 }):setDuration(time):start() end) end changan.controlBigY = 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 function Island开关(name,func1,func2,nid) 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() luajava.getIdValue(nid.."k"):setBackground(getHorizontalBG({0x00C24C38,0x00F78F5C},5)) luajava.getIdValue(nid.."g"):setBackground(getHorizontalBG({"0xffff0000","0xffff0000","0xffff0000"},5,3,"0xffff0000")) end) _ENV[name] = "开" vibra:vibrate(6) pcall(func1) else luajava.runUiThread(function() luajava.getIdValue(nid.."g"):setBackground(getHorizontalBG({0x00C24C38,0x00F78F5C},5)) luajava.getIdValue(nid.."k"):setBackground(getHorizontalBG({"0xffff0000","0xffff0000","0xffff0000"},5,3,"0xffff0000")) end) _ENV[name] = "关" vibra:vibrate(6) pcall(func2) end end end end function visi3(tid, ttid) local tview = luajava.getIdValue(tid) local ttview = luajava.getIdValue(ttid) if not tview then return 0 end if tonumber(tostring(tview:getVisibility())) == 8.0 then tview:setVisibility(View.VISIBLE) -- 设置文本视图不可见 top_music:setVisibility(View.GONE) else tview:setVisibility(View.GONE) -- 设置文本视图可见 top_music:setVisibility(View.VISIBLE) end end boxes = {} boxpic = {} function changan.lddLsland2(views) local tid = "LDDS"..guid () local ttid = tid.."6" local t1id = guid () kgid = views[1].."关" id = views[1].."id" local func = Island开关(views[1],func1,func2) ID = views[1].."id"..guid() boxpic[tid] = luajava.loadlayout { ImageView , } firadio = { LinearLayout, layout_width="match_parent", layout_height = "wrap_content" , gravity = "center", orientation = "vertical", LayoutTransition=layoutTransition, onTouch = function() visi3 (tid , ttid) end } if type (views [1]) == "string" or type (views [1]) == "number" then firadio [# firadio + 1] = { LinearLayout, layout_width = 'match_parent', layout_height = "25dp", gravity = "center", elevation = "2dp", layout_marginRight = "4dp", layout_marginLeft = "4dp", gravity = "center_vertical", LayoutTransition=layoutTransition, { LinearLayout , layout_width = 'fill_parent' , layout_height = "60dp", gravity = "center_vertical" , background =灵动岛, { TextView , id="top_music", text =views[1], textSize = "9sp" , layout_width = "90dp" , layout_weight=1, textColor = "#ffffff" , Typeface=font, gravity = "center" , }, } }else os.exit () end radios = { LinearLayout , orientation = "vertical" , visibility = "gone" , id = luajava.newId (tid) , layout_width = 'fill_parent' , elevation = "3dp", } 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 ({ LinearLayout, layout_width="match_parent", layout_height = "wrap_content", gravity = "center", { LinearLayout, layout_width = 'match_parent', layout_height = "wrap_content", gravity = "center", elevation = "2dp", layout_marginRight = "4dp", layout_marginLeft = "4dp", background = luajava.loadlayout{GradientDrawable,color=灵动岛,cornerRadius=40}, firadio } }) return _ENV [t1id] end MSwitch = {} function changan.switch(name,func1,func2) ID = name..guid() MSwitch[#MSwitch+1] = ID Checked = false if name=="音量键隐藏UI" then 音量键 = true Checked = true end if name=="摇一摇隐藏UI" then 摇一摇 = true Checked = true end rest = luajava.loadlayout({ LinearLayout, layout_width="fill_parent", layout_height = "47dp", gravity = "center", { LinearLayout, layout_width = 'fill_parent', layout_height = "40dp", gravity = "center", elevation = "2dp", layout_marginRight = "4dp", layout_marginLeft = "4dp", background = luajava.loadlayout { GradientDrawable , color = 0xffffffff , cornerRadius = 15 } ,padding = { "0dp","0dp","6dp","0dp" }, { TextView, Typeface=font, gravity = "top", text = name, textColor = "0xff000000", textSize = "13sp", layout_weight = 1, layout_width = 'fill_parent', layout_marginLeft = "10dp", layout_marginRight = "20dp", }, { MaterialSwitch, id = luajava.newId(ID), layout_weight = 1, checked = Checked, layout_width = 'fill_parent', layout_height = 'wrap_content', onCheckedChange = function(compoundButton, isChecked) luajava.newThread(function() if isChecked then pcall(func1) else pcall(func2) end end):start() end } } }) return rest end import "android.graphics.Color" import "android.content.res.ColorStateList" function SliderColor(id,color1,color2,color3) id:setTrackActiveTintList(ColorStateList({{}},{color1})) id:setTrackInactiveTintList(ColorStateList({{}},{color2})) id:setThumbTintList(ColorStateList({{}},{color3})) end function SwitchColor(id,color1,color2,color3,color4) id:setTrackTintList(ColorStateList({{android.R.attr.state_checked},{}},{color1,color2})) id:setThumbTintList(ColorStateList({{android.R.attr.state_checked},{-android.R.attr.state_checked}},{color3,color4})) end changan.controlRotation9 = function(control, time,t) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", { time,t }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.RESTART) xuanzhuandonghua:setDuration(400) xuanzhuandonghua:start() end) end buts={} function changan.button(txt,func,txtc) if not txt then txt = "未设置" end if not txtc then txtc="0xff000000" end local tid="Cbutton"..guid() buts[tid]=luajava.loadlayout({ LinearLayout, layout_width = 'match_parent', layout_height = "40dp", gravity = "center", { LinearLayout, layout_width = 'match_parent', layout_height = "35dp", gravity = "center", elevation = "2dp", layout_marginRight = "4dp", layout_marginLeft = "4dp", background = getButtonBG(), padding = { "0dp","0dp","6dp","0dp" }, onClick = function() changan.controlWater(buts[tid],300) luajava.newThread(func):start() end, { TextView, Typeface=font, gravity = "top", text = txt, textColor = txtc, textSize = "13sp", layout_weight = 1, layout_width = 'fill_parent', layout_marginLeft = "10dp", layout_marginRight = "20dp", }, { ImageView, layout_weight = 1, src=getRes("heir"), ColorFilter = "0xffeeeeee", layout_marginRight = "4dp", layout_height="30dp", layout_gravity = "center", layout_width="30dp", } } }) return buts[tid] end function getButtonBG() local selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, getVerticalBG({0x34000400,0x34000400},17)) selector:addState({ -android.R.attr.state_pressed }, getVerticalBG({0xffffffff,0xffffffff},17)) return selector end function changan.intcheck(name,func1,func2) nid = name..guid() swits[nid]={ getVerticalBG({0xff0091FF,0xff4F82FF},18), getVerticalBG({0x88161616,0x88161616},18), false, } local func = 开关5(name,func1,func2,nid) if not name then name = "未设置" end _ENV[nid.."k"]=luajava.loadlayout({ TextView, id = luajava.newId(nid.."k"), background = swits[nid][2], layout_width = 'wrap_content', layout_height = 'wrap_content', padding={"13dp","3dp","13dp","3dp"}, gravity="center", text="关", textColor="#ffffff", textSize="13sp", }) _ENV[nid.."g"]=luajava.loadlayout({LinearLayout, { TextView, layout_marginLeft="7dp", id = luajava.newId(nid.."g"), background = empty, layout_width = 'wrap_content', layout_height = 'wrap_content', padding={"13dp","3dp","13dp","3dp"}, gravity="center", text="开", textColor="#ffffff", textSize="13sp", }}) local rest = luajava.loadlayout({ FrameLayout, layout_width = 'wrap_content', layout_height = "wrap_content", layout_marginTop = "1dp", layout_marginBottom = "1dp", padding={"0dp","0dp","0dp","0dp"}, { LinearLayout, layout_marginLeft="8dp", layout_marginTop="3dp", layout_marginBottom="3dp", layout_marginRight="6dp", onClick = function() luajava.newThread(function() func() end):start() end, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "center_vertical", layout_gravity="center", --background = randbg2(), orientation="vertical", { TextView, gravity = "left", text = name, textColor="#000000", textSize = "11sp", layout_height="wrap_content", layout_width = '100dp', }, { LinearLayout, id = luajava.newId(nid), background = getVerticalBG({0xe84B7CFF,0x88974BFF},18,4,0xff69C2FF), layout_width = 'wrap_content', layout_height = 'wrap_content', padding = "5dp", _ENV[nid.."k"], _ENV[nid.."g"] }}, {LinearLayout, layout_height="15dp", layout_width="15dp", layout_marginLeft="4dp", layout_marginTop="14dp", },{LinearLayout, layout_height="20dp", layout_width="30dp", layout_gravity="right|bottom" } }) return rest end function 开关5(name,func1,func2,nid) local sname = nid local localname=name name = nid..guid() _ENV[name] = "关" if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then swits[sname][3]=true vibra:vibrate(14) luajava.runUiThread(function() luajava.getIdValue(sname.."k"):setBackground(empty) luajava.getIdValue(sname.."g"):setBackground(swits[sname][1]) YoYoImpl:with("FadeInLeft"):duration(400):playOn(_ENV[nid.."g"]) end) _ENV[name] = "开" pcall(func1) else swits[sname][3]=false vibra:vibrate(14) luajava.runUiThread(function() luajava.getIdValue(sname.."k"):setBackground(swits[sname][2]) luajava.getIdValue(sname.."g"):setBackground(empty) YoYoImpl:with("FadeInRight"):duration(400):playOn(_ENV[nid.."k"]) end) _ENV[name] = "关" pcall(func2) end end end end import "android.graphics.Color" import "android.content.res.ColorStateList" function changan.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 = changan.intcheck(name,func1,func2) table.insert(tempTable, rstt) else table.insert(tempTable, {LinearLayout, layout_width = 'match_parent', layout_weight=1,}) end end table.insert(rest, tempTable) end return luajava.loadlayout(rest) end 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] = "开" pcall(func1) else _ENV[name] = "关" pcall(func2) end end end end function changan.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}},{0xFf000000,0xff000000},{0xff000000,0xff000000}), onClick=function() luajava.newThread(function() pcall(func) end):start() end }, { TextView, text=name, textSize = "13sp", textColor="0xff000000", layout_width = "match_parent", --layout_weight=1, } } } return rest end radiog={} function changan.radio (cklist) if not radoff then radon=getVerticalBG({0xffffffff,0xffffffff},360,20,0xFF000000) radoff=getVerticalBG({0x00ffffff,0x00ffffff},360,8,0xffaaaaaa) end local rid=guid() radiog[rid]={} rest = { LinearLayout , layout_width = 'match_parent' , layout_height = "wrap_content" , layout_marginTop = "10dp" , gravity = "top" , orientation = "vertical" , } if type (cklist [1]) == "string" then rds=2 rest [# rest + 1] = { TextView , gravity = "left" , padding="5dp", text = cklist [1] , textSize = "13sp" , textColor = "#000000" , layout_width = 'fill_parent' , layout_height = 'wrap_content' , layout_marginLeft = "10dp" , layout_marginRight = "5dp" , layout_marginTop = "0dp" , layout_marginBottom = "0dp" , } else rds=1 end local restt={ LinearLayout , layout_width = 'match_parent' , layout_height = "wrap_content" , layout_marginTop = "10dp" , gravity = "top" , orientation = "vertical" , background = getButtonBG(), padding = { "0dp","0dp","6dp","0dp" },} for i = rds , # cklist do local name = cklist [i] [1] local func = cklist [i] [2] if not name then name = "未设置" end nid = name..guid () radiog[rid][nid]=false local func = radin(rid,nid,func) local tid = nid..guid () _ENV [tid] = luajava.loadlayout ( { LinearLayout , layout_width = '250dp' , layout_height = "30dp" , layout_marginTop = "5dp" , layout_marginBottom = "15dp" , layout_marginLeft = "4dp" , layout_marginRight = "10dp" , gravity = "center_vertical" , onClick = function () changan.controlWater (_ENV [tid] , 200) func() end , { ImageView , id = luajava.newId (nid) , layout_width = '20dp' , layout_height = "20dp" , layout_marginLeft = "5dp" , layout_marginRight = "0dp" , background =radoff , } , { TextView , gravity = "top" , text = name , textSize="13sp", textColor = "#000000" , layout_width = 'wrap_content' , layout_height = 'wrap_content' , layout_marginLeft = "10dp" , layout_marginRight = "5dp" , } }) restt [# restt + 1] = _ENV [tid] end rest [# rest + 1] = restt return luajava.loadlayout (rest) end function radin(rid,nid,func) return function() for k,v in pairs(radiog[rid]) do colorvs[k]={false,"rad"} luajava.getIdValue(k):setBackground(radoff) if k==nid and v~=true then luajava.getIdValue(k):setBackground(radon) colorvs[k]={true,"rad"} v=true luajava.newThread(func):start() end end end end colorvs={} 当前ui=1 function changeColor(co) 控件颜色=co luajava.runUiThread(function() _ENV["jm"..当前ui.."t"]:setTextColor(控件颜色) _ENV["jm"..当前ui.."p"]:setColorFilter(控件颜色) luajava.getIdView("backv"):setColorFilter(控件颜色) checkbg = getShape2(45,{控件颜色,控件颜色},4,控件颜色) radon=getVerticalBG({0xffffffff,0xffffffff},360,20,控件颜色) for k,v in pairs(colorvs) do if v[1]==true then if v[2]=="switch" then luajava.getIdValue(k):setBackground(checkbg) elseif v[2]=="box" then boxpic[k]:setColorFilter(控件颜色) elseif v[2]=="txt" then luajava.getIdValue(k):setTextColor(控件颜色) elseif v[2]=="img" then luajava.getIdValue(k):setColorFilter(控件颜色) elseif v[2]=="rad" then luajava.getIdValue(k):setBackground(radon) elseif v[2]=="seek" then luajava.getIdView(k):setProgressDrawable( getVerticalBG({控件颜色,控件颜色},45)) end end end end) end currentIndex = 1 -- 定义一个函数来打印当前遍历到的table项,并更新索引位置 function 预置颜色() -- 获取当前遍历到的项 local currentItem = 颜色表[currentIndex] -- 打印当前项 changeColor(currentItem) -- 更新索引位置 currentIndex = currentIndex + 1 -- 如果索引已经达到最大值,则重置为1,回到第一项 if currentIndex > #颜色表 then currentIndex = 1 end end function changan.image(img,height,width,pad,func) if not func then func=function() end end if not pad then pad="0dp" end if not height then height="80dp" end if not width then width="80dp" end return luajava.loadlayout({ LinearLayout, layout_height="wrap_content", layout_width="fill_parent", gravity="center", { ImageView, layout_height=height, layout_width=width, padding=pad, src=获取图片(img), onClick=function() luajava.newThread(func):start() end, }}) end function changan.edit (name , hint) _ENV [name] = name..guid () if not hint then hint = name end rest = luajava.loadlayout ( { LinearLayout , layout_width = 'fill_parent' , { LinearLayout , layout_width = 'fill_parent' , layout_height = "40dp" , layout_marginTop = "5dp" , layout_marginBottom = "5dp" , layout_marginLeft = "0dp" , layout_marginRight = "0dp" , gravity = "center_vertical" , { EditText , background = luajava.loadlayout { GradientDrawable , color = 0xffffffff , cornerRadius = 15 } ,padding = { "0dp","0dp","6dp","0dp" }, gravity = "center" , hint = hint , textColor=0xff000000, textSize = "13sp", layout_height = "40dp" , layout_marginBottom = "-2dp", id=luajava.newId(_ENV [name]), layout_width = 'fill' , } } }) luajava.getIdValue(_ENV [name]):setHintTextColor(0xff545454) return rest end function changan.getedit (name) edit = tostring (luajava.getIdValue (_ENV [name]) : getText ()) return edit end function changan.setedit (name , txt) txt = tostring (txt) luajava.runUiThread (function () luajava.getIdValue (_ENV [name]) : setText (txt) end ) end chazhi={} chajv={} function changan.seek(name,bian,smin,smax,nows) _ENV[bian] =nows smin=tonumber(smin) smax=tonumber(smax) if _ENV[bian] == nil then _ENV[bian] = 1.0 end if not name then name = "未设置" end local names = name..guid() kid=guid().."sk" rest = luajava.loadlayout({ LinearLayout, layout_width = 'match_parent', layout_hight = "match_parent", { LinearLayout, id=luajava.newId(kid), layout_width = 'match_parent', layout_hight = "match_parent", layout_marginTop = "3dp", layout_marginBottom = "3dp", layout_marginLeft = "5dp" , layout_marginRight = "5dp" , gravity = "center_vertical", elevation='3dp', background = luajava.loadlayout { GradientDrawable , color = 0xffffffff , cornerRadius = 15 } ,padding = { "0dp","0dp","6dp","0dp" }, { TextView, padding={"5dp","10dp","0dp","10dp",}, gravity = "top", textColor='0xff000000', text = name, id = luajava.newId(names), layout_width = '100dp', --layout_marginLeft = "5dp", layout_marginRight = "0dp", }, { Slider, thumbHeight='23dp', trackHeight='15dp', trackStopIndicatorSize='0dp', tickVisible=false, __onFinish=function(v) v:setTrackActiveTintList(ColorStateList({{},},{0xff000000})) v:setTrackInactiveTintList(ColorStateList({{},},{0xff000000})) v:setThumbTintList(ColorStateList({{},},{0xff000000})) luajava.setInterface(v, 'addOnChangeListener', function(SeekBar, var2, var3) _ENV[bian] = var2 end) end, layout_width = 'match_parent', id=luajava.newId(name.."seekbar"), valueFrom=smin, valueTo=smax, value=nows, stepSize=1.0, } }}) luajava.getIdView(name..'seekbar'):setHaloRadius(10)--拖动时背景阴影大小 return rest end import('android.content.res.ColorStateList') local swfuncs={} swcDraw=ColorStateList({ {android.R.attr.state_checked}, {-android.R.attr.state_checked}, }, { 0xff0062ff, 0x33d7d7d7, }) swcThumb=ColorStateList({ {android.R.attr.state_checked}, {android.R.attr.state_pressed}, {-android.R.attr.state_pressed}, }, { 0xffffffff, 0xff000000, 0xff000000 }) swfuncs={} function changan.text(text,color,size,isjz) if not color then color="#161616" end if isjz then return luajava.loadlayout( { TextView, text=text, textColor=color, textSize=size, gravity="center", layout_height="wrap_content", layout_width="match_parent", autoSizeTextType="uniform", }) else return luajava.loadlayout({ TextView, text=text, textColor=color, textSize=size, layout_height="wrap_content", layout_width="match_parent", autoSizeTextType="uniform", }) end end function getShape8() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0xff000000,0xffffffff, }) jianbians:setOrientation(GradientDrawable.Orientation.BL_TR) return jianbians end pe0 = getShape8() function changan.line() return luajava.loadlayout({ LinearLayout, layout_width = "fill_parent", layout_height = "2dp", background = pe0, }) end 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(5) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0xFFFFFFFF, 0xFFFFFFFF }) jianbians:setStroke(2, "0x11000000") --边框宽度和颜色 --elevation='3dp', selector = luajava.getStateListDrawable() selector:addState( { android.R.attr.state_pressed, }, luajava.loadlayout({ GradientDrawable, color = "#0x11000000", cornerRadius = 10, }) ) -- 点击时候的背景 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 mustxt = luajava.getIdView("搜索"):getText() if string.len(tostring(mustxt)) <= 2 or tostring(mustxt) == nil then gg.alert("至少输入2个字符") return 0 end mustxt = tostring(mustxt) luajava.runUiThread(function() luajava.getIdView("jzz"):setVisibility(View.VISIBLE) luajava.getIdView("stxt"):setVisibility(View.GONE) end) 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_width = "match_parent", layout_marginBottom = "5dp", orientation = "vertical", } for i = 1, #musictable do musid = musictable[i].id 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_marginBottom = "2dp", layout_marginLeft = "5dp", layout_marginRight = "5dp", layout_width = "match_parent", background = getbg(), id = luajava.newId("音" .. musid), onClick = function() thread = luajava.getThread(function() bofang(musname, musid) end) thread:start() end, { TextView, layout_marginTop = "5dp", textSize = "13sp", textColor = "#5C6BC0", layout_marginBottom = "0dp", text = musname, layout_hight = "10dp", layout_width = "match_parent", gravity = "center", }, { TextView, layout_marginTop = "0dp", textColor = "#FF7F7F7F", textSize = "11sp", layout_marginBottom = "5dp", text = musart, layout_hight = "10dp", layout_width = "match_parent", gravity = "center", }, } wryt[#wryt].onClick = function() -- (function() -- bofang(musnames[i] .. musarts[i], musids[i]) -- end):start() luajava.startThread(function() bofang(musnames[i] .. musarts[i], musids[i]) time_MUSIC:setText(musnames[i]) top_music:setText(musnames[i]) end) end end wyr = luajava.loadlayout(wryt) wyr = luajava.loadlayout(wryt) runnable = luajava.getRunnable(function() luajava.getIdView("搜索列表"):addView(wyr) end) handler = luajava.getHandler() handler:post(runnable) luajava.runUiThread(function() luajava.getIdView("jzz"):setVisibility(View.GONE) luajava.getIdView("stxt"):setVisibility(View.VISIBLE) end) 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) gg.sleep(2000) luajava.runUiThread(function() luajava.getIdView("加载"):setVisibility(View.GONE) luajava.getIdView("搜索结果"):setVisibility(View.VISIBLE) end) end stxt = { TextView, text = "搜索", textColor = "#FF000000", background = getbg(), layout_height = "match_parent", visibility = "visible", gravity = "center", layout_marginRight = "5dp", id = luajava.newId("stxt"), layout_marginLeft = "3dp", textSize = "13sp", padding = { "13.5dp", "0dp", "13.5dp", "0dp" }, onClick = function() thread = luajava.getThread(function() searchmusic() end) thread:start() end, } jzz = { TextView, text = "加载中", visibility = "gone", id = luajava.newId("jzz"), layout_marginLeft = "10dp", textSize = "12sp", textColor = "#000000", } jiaz = { LinearLayout, orientation = "vertical", visibility = "gone", id = luajava.newId("加载"), { TextView, text = "正在加载歌曲资源", textSize = "15sp", gravity = "center", textColor = "#000000", }, } wyylog = luajava.loadlayout({ LinearLayout, orientation = "vertical", layout_width = "match_parent", { ScrollView, layout_hight = "match_parent", gravity = "center_horizontal", layout_width = "match_parent", { LinearLayout, layout_width = "match_parent", { LinearLayout, padding = "4dp", gravity = "center", orientation = "vertical", id = luajava.newId("固定音乐"), }, id = luajava.newId("搜索列表"), orientation = "vertical", layout_width = "match_parent", gravity = "center_horizontal", { LinearLayout, orientation = "horizontal", layout_width = "match_parent", { EditText, hint = "搜索歌曲名称", textColor = "#000000", id = luajava.newId("搜索"), background = getbg(), layout_marginLeft = "5dp", focusable = true, focusableInTouchMode = true, textSize = "13sp", singleLine = "true", layout_weight = 1, gravity = "center", layout_width = "match_parent", __onFinish = function(v) v:setHintTextColor(0xff646464) v:requestFocus() end, }, stxt, jzz, }, jiaz, }, }, }) function changan.chip(cklist) if #cklist==0 then return nil end local rest = { LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "center", orientation="vertical", } for i = 1, #cklist,2 do local tempTable = {LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "left", orientation="horizontal" } for j = 0, 1 do if cklist[i + j] ~= nil then local name = cklist[i + j][1] local func1 = cklist[i + j][2] local func2 = cklist[i + j][3] if not name then name = "未设置" end rstt = changan.intchip(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 开关(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] = "开" pcall(func1) else _ENV[name] = "关" pcall(func2) end end end end chips={} function changan.intchip(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", { ChipGroup, padding="3dp", layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "center_vertical", { Chip, layout_width = 'wrap_content', layout_height = '40dp', checked="true", text=name, setCheckable = true, setChipIconVisible = true, --显示icon setChipIcon = luajava.getBitmapDrawable(chip图片), onClick=function() luajava.newThread(function() pcall(func) end):start() end } }} return rest end function changan.tup(sview) local layout={ GridLayout, columnCount='4', layout_width='match_parent', layout_height="wrap_content", } for i=1,#sview do local nid=sview[i]["名字"]..string.randomUUID(true) layout[#layout+1]={ LinearLayout, layout_width='85dp', layout_height="85dp", onClick=function() luajava.newThread(function() if _ENV["状态"..nid] ~= true then luajava.runOnUiThread(function() luajava.getIdView(nid.."1"):setVisibility(View.GONE) luajava.getIdView(nid.."2"):setVisibility(View.VISIBLE) end) pcall(sview[i]["功能开"]) _ENV["状态"..nid]=true else luajava.runOnUiThread(function() luajava.getIdView(nid.."1"):setVisibility(View.VISIBLE) luajava.getIdView(nid.."2"):setVisibility(View.GONE) end) pcall(sview[i]["功能关"]) _ENV["状态"..nid]=false end end):start() end, { FrameLayout, layout_width='match_parent', layout_height="match_parent", layout_margin="7dp", elevation="3dp", background={GradientDrawable,color=0xffffffff,cornerRadius=20}, { ImageView, padding="10dp", layout_margin="2dp", layout_width='match_parent', layout_height="match_parent", src=sview[i]["图片"], }, { TextView, textSize="11sp", textColor="#161616", text=sview[i]["名字"], layout_marginRight="2dp", layout_marginBottom="2dp", layout_gravity="right|bottom", }, { LinearLayout, id=luajava.newId(nid.."1"), layout_margin="10dp", layout_width='7dp', layout_height="7dp", background={GradientDrawable,color=0xffFFC0CB,cornerRadius=90}, }, { ImageView, id=luajava.newId(nid.."2"), visibility="gone", gravity="center|bottom", layout_margin="2dp", layout_width='20dp', layout_height="20dp", src="https://www.cccimg.com/down.php/d56c283c98b3e594658424e0165438b0.", }, } } end return layout end local _Text = {} local text=[=[ [七月初七 淮水竹亭.] [若能转世续缘 是妖又如何?] [愿人间白首 与你共同偕老.] [满庭的芬芳 不及你一人.] [我的意中人啊 本就是个盖世英雄.] [王权无暮,再无暮年.] [我可以怀着剑心来找你了.] [天各一方 不可葬一地.] [再次戴上面具 又仿佛回到了那时.] [我最幸运的是 上天让我遇见了你.] [鞘笛相依 却无续缘.] [痴情的妖怪啊 请再等一世吧.] [苦情巨树啊 你听见了吗.] [万水千山 你愿意陪我去看吗.] [竹亭换院亭,君在心不在.] [世界就一个你 我当然要好好珍惜.] [每次有人问我幸福是什么 我脑海里总是第一个想到你.] [好想抱抱你 而不是对着手机说想你.] [心里温柔是你 目光所至是你.] [我不要很久 我要一生一世.] [或许我一个人走 更浪漫些.] [睡在梦里 醒在梦境.] [天在将黑未黑时最美 情在欲语未语时最真.] [你的出现 早就胜过了所有人 你能不能一直陪着我.] [我曾亲自埋葬我的梦想.] [是花自然香 是爱自然长.] [你若是珍惜我 这条路再累我都陪你走.] [祝好 在数不尽的明天.] [上言长相思 下言久离别.] [本是清灯不归客 却因浊酒恋红尘.] [我是木纳的树 你是自由的风.] [人生本过客 何必千千结.] [你不是他们所谓的枯枝败叶 你是我永远的春.] [花在风中摇摆不定 就像我对你的爱一样波荡起伏.] [我不是胡图图 但我只图你在我身边.] [我特别希望 和我走到最后的是你.] [讲真的 我太想和你有以后了.] [没人能代替你 即使我们好久不见.] [你走后 我的世界只有我了.] [在无数个睡不着的夜里 我都反复问自己 我真的不好吗.] [我也想往前走 但是回忆压的我频繁回头.] [不要因为遇见不对的人 而否定自己.] [或许我真的不好 就像你说的那样.] [我始终猜不透你 又或许你从未在乎过我.] [一句备注 你我的故事开始.] [有你的地方 我停留了好久.] [命好 遇见了你 谢谢你包容我的不完美.] [世界情情爱爱 何必苦苦思念.] [送妻茉莉 愿妻莫离.] [妻若不离 何需茉莉.] [我有个朋友很开朗 可她爱起人来总流泪.] [如果阴雨绵绵 那我做你的晴天.] [向来缘浅 奈何情深.] [择人先择路 爱人先爱己.] [比起失去 我更害怕别人拥有你] [爱是独特的滤镜 你在我心里最好] [那些我不肯忘的回忆 你说忘就忘.] [迷途未远 循蝴蝶之踪可抵春天.] [观我往旧 同我仰春.] [永恒的春 不朽的诗.] [最美好的年华 与你携手共度.] [愿你像晴天一样明媚 然后 好好吃饭.] [如果是你 一万遍也回头.] [喜欢晴天 喜欢今天 也喜欢有你的每一天.] [我要你风光旖旎 向春山不计苦难.] [枯木逢春 我逢你.] [你在的每一个瞬间 我都想说有你真好.] [愿多年以后感情不变 你也常在身边.] [相逢如骤雨初晴 离别恰乌云埋天.] [花落下瞬间是我和你的开始.] [即使天各一方 依然爱你如初.] [雨里的海棠真的好绝 该用什么理由分享给你.] [思恋诉予海棠 情丝化作微雨.] [海棠花开春意浓 思念随风入梦中.] [海棠无香 意为暗恋.] [你逢人就炫耀的玫瑰 枯菱时该怎么收场.] [迟早要分开的话 那相遇的意义又是什么.] [我要你风光旖旎 向春山不计苦难.] [在杂草中生长美丽的花 连杂草都是陪衬.] [ 把玫瑰藏于盛夏 把海棠藏于深秋.] [海棠花开的热烈 爱恨情仇也终于有了归属.] [海棠花未眠 城南花已开 故人已不在.] [凌晨四点我看见海棠花未眠 总觉得这时你应该在我身边.] [折枝念晚宁 海棠赠微雨.] [晚夜微雨问海棠暗香蚀骨话离殇.] [海棠不惜胭脂色 独立蒙蒙细雨中.] [与其让孤木逢春 不如成为春天让孤木永恒.] [我心永远偏向你 从你我相识那天起.] [不希望你心存烦恼 希望你天天开心.] ]=] for x in string.gmatch(text,'%[(.-)%]') do _Text[#_Text+1]=x end function TextRand() return _Text[math.random(1,#_Text)] end 灵动岛文本="不羡仙辅助" tg="114514" qun="114514" 灵动岛=0xff000000 chip图片="/sdcard/浔梦/资源/1df543.png" 底部人物="https://pan.jl8.top/view.php/cdad514dc2dc70ec912cb7c9121df543.png" 侧边背景=getVerticalBG({0xffffffff,0xffffffff},15,2,0xffa2d4c6) 菜单背景=getVerticalBG({0xffffffff,0xffffffff},0) 悬浮窗图标 = "https://pan.jl8.top/view.php/5e036f2451d7c2bd6bb1d8fc173d7231.jpg" function huiz()---绘制必须放在这里面 end 创建页面('防封', { changan.switch( "功能", function() end, function() end), changan.switch( "功能", function() end, function() end), changan.switch( "功能", function() end, function() end), }) 第一页 = {--创建分页,结尾调用 ['分页名字']="首页", [1]={--第一分区 ['分区名字']="公告", ['功能配置']={ changan.line(), changan.button("选择进程", function() gg.setProcessX() end), }}, [2]={--第二分区 ['分区名字']="防封区", ['功能配置']={ changan.box({ "防封菜单", changan.check({ { "超级防封(账号登录开)", function() gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber('131072',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber('131072',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.getResults(1000) gg.editAll('0',gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber('49152',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber('49152',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.getResults(1000) gg.editAll('0',gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber('16384',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber('16384',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.getResults(1000) gg.editAll('0',gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber('98304',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber('98304',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.getResults(1000) gg.editAll('0',gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber('262144',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber('262144',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.getResults(1000) gg.editAll('0',gg.TYPE_DWORD) gg.alert("超级防封开启成功") end }, { "通杀所有弹窗(账号登录开)", function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("-113,222,359;-1,862,254,304;-352,320,865;-1,442,839,564;1,426,062,785;-1,455,271,948;-1,455,335,434;-129,824,770;-698,416,192;-1,442,315,296;-1,447,143,426::50", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.refineNumber("-1,447,143,426", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(999) gg.editAll("-698,416,192", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(16384) gg.searchNumber("-1,447,270,402;-1,459,527,688;-1,459,464,202;-1,459,400,716;-1,442,511,885;-1,442,577,419;-1,442,642,954;-1,442,708,489;-1,442,774,024;-1,442,839,564;922,747,272::50", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.refineNumber("-1,447,270,402", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(999) gg.editAll("402652230", gg.TYPE_DWORD) gg.toast("通杀所有弹窗开启成功") end, function() end }, { "过2025(账号登录开)", function() if gg.getRangesList("libil2cpp.so")[1] then local t = {} t[1] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x1276588; -- 数值地址:0x6F5B289588 t[2] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x127A040; -- 数值地址:0x6F5B28D040 t[3] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x127A058; -- 数值地址:0x6F5B28D058 t[4] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x127A0C8; -- 数值地址:0x6F5B28D0C8 t[5] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x127A1A4; -- 数值地址:0x6F5B28D1A4 gg.addListItems({ [1] = { address = t[1], flags = 4, value = -698416192, freeze = true, }, [2] = { address = t[2], flags = 4, value = -698416192, freeze = true, }, [3] = { address = t[3], flags = 4, value = -698416192, freeze = true, }, [4] = { address = t[4], flags = 4, value = -698416192, freeze = true, }, [5] = { address = t[5], flags = 4, value = -698416192, freeze = true, }, }) gg.toast("过2025开启成功") end end, function() end }, }), changan.tup({ { ["图片"]=悬浮窗图标, ["名字"]="无功能", ["功能开"]=function() gg.alert("开") end, ["功能关"]=function() gg.alert("关") end },{ ["图片"]=悬浮窗图标, ["名字"]="无功能", ["功能开"]=function() end, ["功能关"]=function() end },{ ["图片"]=悬浮窗图标, ["名字"]="无功能", ["功能开"]=function() end, ["功能关"]=function() end },{ ["图片"]=悬浮窗图标, ["名字"]="无功能", ["功能开"]=function() end, ["功能关"]=function() end } }), changan.switch( "防追封(大厅开)", function() if gg.getRangesList("libil2cpp.so")[1] then local t = {} t[1] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2CE78; -- 数值地址:0x6FE9644E78 t[2] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2D000; -- 数值地址:0x6FE9645000 t[3] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2D004; -- 数值地址:0x6FE9645004 t[4] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2D008; -- 数值地址:0x6FE9645008 t[5] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2D0C4; -- 数值地址:0x6FE96450C4 t[6] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2D164; -- 数值地址:0x6FE9645164 t[7] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2D168; -- 数值地址:0x6FE9645168 t[8] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2D16C; -- 数值地址:0x6FE964516C t[9] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2D888; -- 数值地址:0x6FE9645888 t[10] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2DA24; -- 数值地址:0x6FE9645A24 t[11] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2DE40; -- 数值地址:0x6FE9645E40 t[12] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2DF28; -- 数值地址:0x6FE9645F28 t[13] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2DF2C; -- 数值地址:0x6FE9645F2C t[14] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2DF30; -- 数值地址:0x6FE9645F30 t[15] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2DF34; -- 数值地址:0x6FE9645F34 t[16] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2DF38; -- 数值地址:0x6FE9645F38 t[17] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2DF3C; -- 数值地址:0x6FE9645F3C t[18] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0xF2DF40; -- 数值地址:0x6FE9645F40 gg.addListItems({ [1] = { address = t[1], flags = 4, value = 0, freeze = true, }, [2] = { address = t[2], flags = 4, value = 0, freeze = true, }, [3] = { address = t[3], flags = 4, value = 0, freeze = true, }, [4] = { address = t[4], flags = 4, value = 0, freeze = true, }, [5] = { address = t[5], flags = 4, value = 0, freeze = true, }, [6] = { address = t[6], flags = 4, value = 0, freeze = true, }, [7] = { address = t[7], flags = 4, value = 0, freeze = true, }, [8] = { address = t[8], flags = 4, value = 0, freeze = true, }, [9] = { address = t[9], flags = 4, value = 0, freeze = true, }, [10] = { address = t[10], flags = 4, value = 0, freeze = true, }, [11] = { address = t[11], flags = 4, value = 0, freeze = true, }, [12] = { address = t[12], flags = 4, value = 0, freeze = true, }, [13] = { address = t[13], flags = 4, value = 0, freeze = true, }, [14] = { address = t[14], flags = 4, value = 0, freeze = true, }, [15] = { address = t[15], flags = 4, value = 0, freeze = true, }, [16] = { address = t[16], flags = 4, value = 0, freeze = true, }, [17] = { address = t[17], flags = 4, value = 0, freeze = true, }, [18] = { address = t[18], flags = 4, value = 0, freeze = true, }, }) gg.alert("防追封开启成功") end end, function() end ), changan.switch( "杀32位检测(大厅开)", function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("-1,358,711,312", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(99999, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("1,198,530,560", gg.TYPE_DWORD) gg.clearResults() if gg.getRangesList("libunity.so:bss")[1] then local t = {} t[1] = gg.getRangesList("libunity.so:bss")[1]["start"] + 0x110BC; -- 数值地址:0x6FE3A4A0BC t[2] = gg.getRangesList("libunity.so:bss")[1]["start"] + 0x112AC; -- 数值地址:0x6FE3A4A2AC t[3] = gg.getRangesList("libunity.so:bss")[1]["start"] + 0x112FC; -- 数值地址:0x6FE3A4A2FC gg.addListItems({ [1] = { address = t[1], flags = 4, value = -2147483648, freeze = true, }, [2] = { address = t[2], flags = 4, value = -2147483648, freeze = true, }, [3] = { address = t[3], flags = 4, value = -2147483648, freeze = true, }, }) end if gg.getRangesList("libunity.so:bss")[1] then local t = {} t[1] = gg.getRangesList("libunity.so:bss")[1]["start"] + 0x110BC; -- 数值地址:0x701DEC10BC t[2] = gg.getRangesList("libunity.so:bss")[1]["start"] + 0x112AC; -- 数值地址:0x701DEC12AC t[3] = gg.getRangesList("libunity.so:bss")[1]["start"] + 0x112FC; -- 数值地址:0x701DEC12FC t[4] = gg.getRangesList("libunity.so:bss")[1]["start"] + 0x11548; -- 数值地址:0x701DEC1548 gg.addListItems({ [1] = { address = t[1], flags = 4, value = -1, freeze = true, }, [2] = { address = t[2], flags = 4, value = -1, freeze = true, }, [3] = { address = t[3], flags = 4, value = -1, freeze = true, }, [4] = { address = t[4], flags = 4, value = -1, freeze = true, }, }) end if gg.getRangesList("libttmplayer_lite.so")[1] then local t = {} t[1] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x145870; -- 数值地址:0x6E54385870 t[2] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x145874; -- 数值地址:0x6E54385874 t[3] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x145878; -- 数值地址:0x6E54385878 t[4] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x14587C; -- 数值地址:0x6E5438587C t[5] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x145880; -- 数值地址:0x6E54385880 t[6] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x14588C; -- 数值地址:0x6E5438588C t[7] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x145894; -- 数值地址:0x6E54385894 t[8] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x14589C; -- 数值地址:0x6E5438589C t[9] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x1458A0; -- 数值地址:0x6E543858A0 t[10] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x1458A4; -- 数值地址:0x6E543858A4 t[11] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x1458A8; -- 数值地址:0x6E543858A8 t[12] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x1458AC; -- 数值地址:0x6E543858AC t[13] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x1458C4; -- 数值地址:0x6E543858C4 t[14] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x1458C8; -- 数值地址:0x6E543858C8 t[15] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x1458D0; -- 数值地址:0x6E543858D0 t[16] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x1458DC; -- 数值地址:0x6E543858DC t[17] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x1458E8; -- 数值地址:0x6E543858E8 t[18] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x1458EC; -- 数值地址:0x6E543858EC t[19] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x1458F8; -- 数值地址:0x6E543858F8 t[20] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x145900; -- 数值地址:0x6E54385900 t[21] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x145908; -- 数值地址:0x6E54385908 t[22] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x14590C; -- 数值地址:0x6E5438590C t[23] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x145910; -- 数值地址:0x6E54385910 t[24] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x145914; -- 数值地址:0x6E54385914 t[25] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x145918; -- 数值地址:0x6E54385918 gg.addListItems({ [1] = { address = t[1], flags = 4, value = 0, freeze = true, }, [2] = { address = t[2], flags = 4, value = 0, freeze = true, }, [3] = { address = t[3], flags = 4, value = 0, freeze = true, }, [4] = { address = t[4], flags = 4, value = 0, freeze = true, }, [5] = { address = t[5], flags = 4, value = 0, freeze = true, }, [6] = { address = t[6], flags = 4, value = 0, freeze = true, }, [7] = { address = t[7], flags = 4, value = 0, freeze = true, }, [8] = { address = t[8], flags = 4, value = 0, freeze = true, }, [9] = { address = t[9], flags = 4, value = 0, freeze = true, }, [10] = { address = t[10], flags = 4, value = 0, freeze = true, }, [11] = { address = t[11], flags = 4, value = 0, freeze = true, }, [12] = { address = t[12], flags = 4, value = 0, freeze = true, }, [13] = { address = t[13], flags = 4, value = 0, freeze = true, }, [14] = { address = t[14], flags = 4, value = 0, freeze = true, }, [15] = { address = t[15], flags = 4, value = 0, freeze = true, }, [16] = { address = t[16], flags = 4, value = 0, freeze = true, }, [17] = { address = t[17], flags = 4, value = 0, freeze = true, }, [18] = { address = t[18], flags = 4, value = 0, freeze = true, }, [19] = { address = t[19], flags = 4, value = 0, freeze = true, }, [20] = { address = t[20], flags = 4, value = 0, freeze = true, }, [21] = { address = t[21], flags = 4, value = 0, freeze = true, }, [22] = { address = t[22], flags = 4, value = 0, freeze = true, }, [23] = { address = t[23], flags = 4, value = 0, freeze = true, }, [24] = { address = t[24], flags = 4, value = 0, freeze = true, }, [25] = { address = t[25], flags = 4, value = 0, freeze = true, }, }) end if gg.getRangesList("libunity.so:bss")[1] then local t = {} t[1] = gg.getRangesList("libunity.so:bss")[1]["start"] + 0x24EC; -- 数值地址:0x6E900694EC t[2] = gg.getRangesList("libunity.so:bss")[1]["start"] + 0x4D3C; -- 数值地址:0x6E9006BD3C t[3] = gg.getRangesList("libunity.so:bss")[1]["start"] + 0x110BC; -- 数值地址:0x6E900780BC gg.addListItems({ [1] = { address = t[1], flags = 4, value = 0, freeze = true, }, [2] = { address = t[2], flags = 4, value = 0, freeze = true, }, [3] = { address = t[3], flags = 4, value = 0, freeze = true, }, }) end if gg.getRangesList("libil2cpp.so")[1] then local t = {} t[1] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x5D77A84; -- 数值地址:0x7119CF0A84 t[2] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x5D77EC4; -- 数值地址:0x7119CF0EC4 t[3] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x5D7815C; -- 数值地址:0x7119CF115C gg.addListItems({ [1] = { address = t[1], flags = 4, value = 0, freeze = true, }, [2] = { address = t[2], flags = 4, value = 0, freeze = true, }, [3] = { address = t[3], flags = 4, value = 0, freeze = true, }, }) end if gg.getRangesList("libttmplayer_lite.so")[1] then local t = {} t[1] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x12E28C; -- 数值地址:0x6C399AE28C t[2] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x12E7D0; -- 数值地址:0x6C399AE7D0 t[3] = gg.getRangesList("libttmplayer_lite.so")[1]["start"] + 0x12EAD4; -- 数值地址:0x6C399AEAD4 gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, [2] = { address = t[2], flags = 4, value = -698416192, }, [3] = { address = t[3], flags = 4, value = -698416192, }, }) end if gg.getRangesList("libkeva.so")[1] then local t = {} t[1] = gg.getRangesList("libkeva.so")[1]["start"] + 0x5BC6C; -- 数值地址:0x6D63AA1C6C gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, }) end if gg.getRangesList("libmaparmor.so")[1] then local t = {} t[1] = gg.getRangesList("libmaparmor.so")[1]["start"] + 0x4A7F4; -- 数值地址:0x6D6288F7F4 gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, }) end if gg.getRangesList("libNetHTProtect.so")[1] then local t = {} t[1] = gg.getRangesList("libNetHTProtect.so")[1]["start"] + 0x3A1F14; -- 数值地址:0x6D4413DF14 gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, }) end if gg.getRangesList("libxt_a64.so")[1] then local t = {} t[1] = gg.getRangesList("libxt_a64.so")[1]["start"] + 0x33238; -- 数值地址:0x6D67B0C238 gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, }) end if gg.getRangesList("libnesec.so")[1] then local t = {} t[1] = gg.getRangesList("libnesec.so")[1]["start"] + 0x16DBC; -- 数值地址:0x6DE5316DBC t[2] = gg.getRangesList("libnesec.so")[1]["start"] + 0x171F0; -- 数值地址:0x6DE53171F0 t[3] = gg.getRangesList("libnesec.so")[1]["start"] + 0x17994; -- 数值地址:0x6DE5317994 t[4] = gg.getRangesList("libnesec.so")[1]["start"] + 0x179E8; -- 数值地址:0x6DE53179E8 gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, [2] = { address = t[2], flags = 4, value = -698416192, }, [3] = { address = t[3], flags = 4, value = -698416192, }, [4] = { address = t[4], flags = 4, value = -698416192, }, }) end gg.alert("杀32位检测开启成功") end, function() end ), changan.switch( "无功能", function() end, function() end ), changan.switch( "无功能", function() end, function() end ), }), }}, [3]={--第三分区 ['分区名字']="功能区", ['功能配置']={ changan.line(), changan.radio({ { "强制上阵", function() local qzdl=gg.alert("强制上阵","开","关") if qzdl ==1 then gg.clearResults() gg.setRanges(16384) gg.searchNumber("-113,245,560;-1,275,065,176;961,466,632;872,416,072;-1,186,906,527;1,384,120,360::21", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.refineNumber("961,466,632", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(999) gg.editAll('-721,215,457', gg.TYPE_DWORD) gg.toast('开启成功') gg.clearResults() elseif qzdl==2 then gg.clearResults() gg.setRanges(16384) gg.searchNumber("-113,245,560;-1,275,065,176;-721,215,457;872,416,072;-1,186,906,527;1,384,120,360::21", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.refineNumber("-721,215,457", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(999) gg.editAll('961,466,632', gg.TYPE_DWORD) gg.toast('关闭成功') end end, function() end,"[logo图标开]"},{ "添加物品", function() function GetLibAddress(name) local t = gg.getRangesList(name) for k, v in pairs(t) do if v['state'] == 'Xa' then return v['start'] end end end il2cpp = GetLibAddress("libil2cpp.so") local t = {} t[1] = il2cpp + 0x6A4730; t[2] = il2cpp + 0x30A284; hook_mem = gg.allocatePage(gg. PROT_READ | gg. PROT_WRITE| gg. PROT_EXEC) gg.addListItems({{address = hook_mem, flags = gg.TYPE_DWORD}}) up = { {["address"] = t[1], ["flags"] = 4}, {["address"] = t[1] + 4, ["flags"] = 4}, {["address"] = t[1] + 8, ["flags"] = 4}, {["address"] = t[1] + 12, ["flags"] = 4} } up = gg.getValues(up) hook = { {["value"] = "~A8 LDR X10, [PC,#0x100]", ["address"] = hook_mem, ["flags"] = 4}, {["value"] = "~A8 LDR X11, [PC,#0x104]", ["address"] = hook_mem + 4, ["flags"] = 4}, {["value"] = "~A8 LDR X12, [PC,#0x108]", ["address"] = hook_mem + 8, ["flags"] = 4}, {["value"] = "~A8 LDR W1, [PC,#0x110]", ["address"] = hook_mem + 12, ["flags"] = 4}, {["value"] = "~A8 LDR W2, [PC,#0x110]", ["address"] = hook_mem + 16, ["flags"] = 4}, {["value"] = "~A8 LDR W4, [PC,#0x110]", ["address"] = hook_mem + 20, ["flags"] = 4}, {["value"] = "~A8 LDR W13, [X12]", ["address"] = hook_mem + 24, ["flags"] = 4}, {["value"] = "~A8 CMP W13, #0x1", ["address"] = hook_mem + 28, ["flags"] = 4}, {["value"] = "~A8 B.EQ [PC,#0x18]", ["address"] = hook_mem + 32, ["flags"] = 4}, {["value"] = up[1]["value"], ["address"] = hook_mem + 36, ["flags"] = 4}, {["value"] = up[2]["value"], ["address"] = hook_mem + 40, ["flags"] = 4}, {["value"] = up[3]["value"], ["address"] = hook_mem + 44, ["flags"] = 4}, {["value"] = up[4]["value"], ["address"] = hook_mem + 48, ["flags"] = 4}, {["value"] = "~A8 BR X10", ["address"] = hook_mem + 52, ["flags"] = 4}, {["value"] = "~A8 SUB W13, W13, #0x1", ["address"] = hook_mem + 56, ["flags"] = 4}, {["value"] = "~A8 STR W13, [X12]", ["address"] = hook_mem + 60, ["flags"] = 4}, {["value"] = "~A8 BR X11", ["address"] = hook_mem + 64, ["flags"] = 4} } 地址指针 = { {["value"] = t[1] + 0x10, ["address"] = hook_mem + 0x100, ["flags"] = 32}, {["value"] = t[2], ["address"] = hook_mem + 0x108, ["flags"] = 32}, {["value"] = hook_mem + 0x300, ["address"] = hook_mem + 0x110, ["flags"] = 32} } 钩 = { {["value"] = "~A8 LDR X9, [PC,#0x8]", ["address"] = t[1], ["flags"] = 4}, {["value"] = "~A8 BR X9", ["address"] = t[1] + 4, ["flags"] = 4}, {["value"] = hook_mem, ["address"] = t[1] + 8, ["flags"] = 32} } is = hook_mem + 0x300 gg.setValues(hook) gg.setValues(地址指针) gg.setValues(钩) while(true)do if gg.isVisible(true) then XGCK=1 gg.setVisible(false) end gg.clearResults() if XGCK==1 then XGCK=-1 qzdl=gg.prompt({"请输入物品id","请输入物品数量","请输入物品质量"},{"","",""},{"number","number","number"}) gg.setValues({ {["value"] = (qzdl[1] == "") and 0 or qzdl[1], ["address"] = hook_mem + 0x11C, ["flags"] = 4}, {["value"] = (qzdl[2] == "") and 0 or qzdl[2], ["address"] = hook_mem + 0x120, ["flags"] = 4}, {["value"] = (qzdl[3] == "") and 0 or qzdl[3], ["address"] = hook_mem + 0x124, ["flags"] = 4}, {["value"] = 1, ["address"] = is, ["flags"] = 4} }) end end 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 a = gg.prompt({"请输入要修改的数值(原速为1)"},{[1]=0},{[1]="number"})[1] local t = {"libunity.so:bss", "Cb"} local tt = {0x1C780, 0xFC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = a, freeze = true}}) gg.toast("变速开启成功") end, function() end,"[logo图标开]"},{ "直接胜利", function() gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("-788,347,905;-50,318,360;-1,459,132,418;-1,459,068,936;-1,459,005,450;-1,458,941,964;-1,442,839,565;922,748,424::50", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.refineNumber("-788,347,905", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(999) gg.editAll('335,545,060', gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("335,545,060;-50,318,360;-1,459,132,418;-1,459,068,936;-1,459,005,450;-1,458,941,964;-1,442,839,565;922,748,424::50", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.refineNumber("335,545,060", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(999) gg.editAll('-788,347,905', gg.TYPE_DWORD) gg.toast("开启成功") end, function() end,"[测试]" },{ "一键角色21亿级", function() gg.clearResults() gg.setRanges(32) gg.searchNumber("1~80X4",4,false) gg.refineNumber("1000000000", gg.TYPE_DWORD, false, gg.SIGN_GREATER_OR_EQUAL, 0, -1, 0) local t = gg.getResults(1000000, nil, nil, nil, nil, nil, nil, nil, nil) gg.addListItems(t) t = nil local copy = false local t = gg.getListItems() if not copy then gg.removeListItems(t) end for i, v in ipairs(t) do v.address = v.address + 0x28 end gg.addListItems(t) local t = gg.getListItems() gg.loadResults(t) gg.refineNumber("1000000000", gg.TYPE_DWORD, false, gg.SIGN_GREATER_OR_EQUAL, 0, -1, 0) gg.clearList()--清空保存列表 local t = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.addListItems(t) t = nil local copy = false local t = gg.getListItems() if not copy then gg.removeListItems(t) end for i, v in ipairs(t) do v.address = v.address + 0x18 end gg.addListItems(t) local t = gg.getListItems() gg.loadResults(t) gg.refineNumber("1000000000", gg.TYPE_DWORD, false, gg.SIGN_GREATER_OR_EQUAL, 0, -1, 0) gg.clearList()--清空保存列表 local t = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.addListItems(t) t = nil local copy = false local t = gg.getListItems() if not copy then gg.removeListItems(t) end for i, v in ipairs(t) do v.address = v.address - 0x64 end gg.addListItems(t) local t = gg.getListItems() gg.loadResults(t) gg.refineNumber("100~150", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.clearList()--清空保存列表 local t = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.addListItems(t) t = nil local copy = false local t = gg.getListItems() if not copy then gg.removeListItems(t) end for i, v in ipairs(t) do v.address = v.address - 0x18 end gg.addListItems(t) local t = gg.getListItems() gg.loadResults(t) gg.refineNumber("1000000000", gg.TYPE_DWORD, false, gg.SIGN_GREATER_OR_EQUAL, 0, -1, 0) gg.clearList()--清空保存列表 local t = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.addListItems(t) t = nil local copy = false local t = gg.getListItems() if not copy then gg.removeListItems(t) end for i, v in ipairs(t) do v.address = v.address + 0x38 end gg.addListItems(t) local t = gg.getListItems() gg.loadResults(t) gg.refineNumber("1000000000", gg.TYPE_DWORD, false, gg.SIGN_GREATER_OR_EQUAL, 0, -1, 0) gg.clearList()--清空保存列表 local t = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.addListItems(t) t = nil local copy = true local t = gg.getListItems() if not copy then gg.removeListItems(t) end for i, v in ipairs(t) do v.address = v.address + 0x4 end gg.addListItems(t) local t = gg.getListItems() gg.loadResults(t) gg.refineNumber("1000000000", gg.TYPE_DWORD, false, gg.SIGN_GREATER_OR_EQUAL, 0, -1, 0) gg.clearList()--清空保存列表 gg.addListItems(t) local t = gg.getListItems() gg.loadResults(t) gg.getResults(50000, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("2147483647;0", gg.TYPE_DWORD) gg.toast("开启成功") end, function() end,"[logo图标开]"},{ "一键角色80级", function() gg.clearResults() gg.setRanges(32) gg.searchNumber("1~80X4",4,false) gg.refineNumber("1000000000", gg.TYPE_DWORD, false, gg.SIGN_GREATER_OR_EQUAL, 0, -1, 0) local t = gg.getResults(1000000, nil, nil, nil, nil, nil, nil, nil, nil) gg.addListItems(t) t = nil local copy = false local t = gg.getListItems() if not copy then gg.removeListItems(t) end for i, v in ipairs(t) do v.address = v.address + 0x28 end gg.addListItems(t) local t = gg.getListItems() gg.loadResults(t) gg.refineNumber("1000000000", gg.TYPE_DWORD, false, gg.SIGN_GREATER_OR_EQUAL, 0, -1, 0) gg.clearList()--清空保存列表 local t = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.addListItems(t) t = nil local copy = false local t = gg.getListItems() if not copy then gg.removeListItems(t) end for i, v in ipairs(t) do v.address = v.address + 0x18 end gg.addListItems(t) local t = gg.getListItems() gg.loadResults(t) gg.refineNumber("1000000000", gg.TYPE_DWORD, false, gg.SIGN_GREATER_OR_EQUAL, 0, -1, 0) gg.clearList()--清空保存列表 local t = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.addListItems(t) t = nil local copy = false local t = gg.getListItems() if not copy then gg.removeListItems(t) end for i, v in ipairs(t) do v.address = v.address - 0x64 end gg.addListItems(t) local t = gg.getListItems() gg.loadResults(t) gg.refineNumber("100~150", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.clearList()--清空保存列表 local t = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.addListItems(t) t = nil local copy = false local t = gg.getListItems() if not copy then gg.removeListItems(t) end for i, v in ipairs(t) do v.address = v.address - 0x18 end gg.addListItems(t) local t = gg.getListItems() gg.loadResults(t) gg.refineNumber("1000000000", gg.TYPE_DWORD, false, gg.SIGN_GREATER_OR_EQUAL, 0, -1, 0) gg.clearList()--清空保存列表 local t = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.addListItems(t) t = nil local copy = false local t = gg.getListItems() if not copy then gg.removeListItems(t) end for i, v in ipairs(t) do v.address = v.address + 0x38 end gg.addListItems(t) local t = gg.getListItems() gg.loadResults(t) gg.refineNumber("1000000000", gg.TYPE_DWORD, false, gg.SIGN_GREATER_OR_EQUAL, 0, -1, 0) gg.clearList()--清空保存列表 local t = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.addListItems(t) t = nil local copy = true local t = gg.getListItems() if not copy then gg.removeListItems(t) end for i, v in ipairs(t) do v.address = v.address + 0x4 end gg.addListItems(t) local t = gg.getListItems() gg.loadResults(t) gg.refineNumber("1000000000", gg.TYPE_DWORD, false, gg.SIGN_GREATER_OR_EQUAL, 0, -1, 0) gg.clearList()--清空保存列表 gg.addListItems(t) local t = gg.getListItems() gg.loadResults(t) gg.getResults(50000, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("80;0", gg.TYPE_DWORD) gg.toast("开启成功") end, function() end,"[退出时必开]" }, }) }}, [4]={--第四分区 ['分区名字']="无", ['功能配置']={ changan.seek("拉条演示","ltxx",1,20,1),--“ltxx”为此拉条变量名字,使用时每个拉条不可重复 changan.button( "调用拉条", function() gg.alert(ltxx) end), }}, [5]={--第五分区 ['分区名字']="无", ['功能配置']={ changan.check({ { "例子", function() end }, { "例子", function() end, function() end }, { "测试1", function() end, function() end }, }), }}, [6]={--第六分区 ['分区名字']="无", ['功能配置']={ },} } 第二页 = { ['分页名字']="音乐", [1]={--第一分区 ['分区名字']="搜索音乐", ['功能配置']={ changan.button("暂停", function() toMusic("已暂停") end), wyylog, },}, [2]={--第二分区 ['分区名字']="推荐音乐", ['功能配置']={ },} } 第三页={ ['分页名字']="反馈", [1]={ ['分区名字']="反馈", ['功能配置']={ },} } 第四页 = { ['分页名字']="设置", [1]={--第一分区 ['分区名字']="UI设置", ['功能配置']={ changan.switch("音量键隐藏UI", function() 音量键=true end, function() 音量键=false end), changan.switch("摇一摇隐藏UI", function() 摇一摇=true end, function() 摇一摇=false end), changan.button( "跑马灯", function() local rgb_time = 0 -- 定义一个函数来生成动态 RGB 颜色 function get_dynamic_rgb() rgb_time = rgb_time + 0.016 -- 假设每帧时间间隔为 16ms (60 FPS) local r = (math.sin(rgb_time * 2.0) + 1.0) / 2.0 local g = (math.sin(rgb_time * 2.0 + 2.0 * math.pi / 3.0) + 1.0) / 2.0 local b = (math.sin(rgb_time * 2.0 + 4.0 * math.pi / 3.0) + 1.0) / 2.0 return r, g, b end -- 将 RGB 分量转换为十六进制颜色值 function rgb_to_hex(r, g, b) return string.format("0xff%02x%02x%02x", math.floor(r * 255), math.floor(g * 255), math.floor(b * 255)) end -- 主循环 while true do -- 获取动态 RGB 颜色 local r, g, b = get_dynamic_rgb() -- 将 RGB 分量转换为十六进制颜色值 local hex_color = rgb_to_hex(r, g, b) -- 将动态颜色设置到对象上 time_MUSIC:setTextColor(hex_color) top_music:setTextColor(hex_color) -- 等待一段时间 gg.sleep(16) -- 假设每帧时间间隔为 16ms (60 FPS) end end), changan.button("加入总群", function() gg.QQgroup("") end), changan.button( "退出", function() tuichu=1 end), },} } changan.menu({ 第一页,--调用上边的分页配置 第二页, 第三页, 第四页 })