fuhao= '"' local function wdc3f8fbbf60f77d910c8934a2aff5e81_json2true(str,from,to) return true, from+3 end local function wdc3f8fbbf60f77d910c8934a2aff5e81_json2false(str,from,to) return false, from+4 end local function wdc3f8fbbf60f77d910c8934a2aff5e81_json2null(str, from, to) return nil, from+3 end local function wdc3f8fbbf60f77d910c8934a2aff5e81_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 wdc3f8fbbf60f77d910c8934a2aff5e81_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 error(_format('json格式错误,不正确的数字, 错误位置:{from}', from)) end return num, i-1 end local function wdc3f8fbbf60f77d910c8934a2aff5e81_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 error(_format('json格式错误,字符串没有找到结尾, 错误位置:{from}', from)) end local function wdc3f8fbbf60f77d910c8934a2aff5e81_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 = wdc3f8fbbf60f77d910c8934a2aff5e81_json2string(str,pos,to) elseif char == '[' then result[#result+1], pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2array(str,pos,to) elseif char == '{' then result[#result+1], pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2table(str,pos,to) elseif char == ']' then return result, pos elseif (char=='f' or char=='F') then result[#result+1], pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2false(str,pos,to) elseif (char=='t' or char=='T') then result[#result+1], pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2true(str,pos,to) elseif (char=='n') then result[#result+1], pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2null(str,pos,to) elseif (char=='N') then result[#result+1], pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2nan(str,pos,to) elseif numberchars[char] then result[#result+1], pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2number(str,pos,to) end pos = pos + 1 end error(_format('json格式错误,表没有找到结尾, 错误位置:{from}', from)) end function _G.wdc3f8fbbf60f77d910c8934a2aff5e81_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 = wdc3f8fbbf60f77d910c8934a2aff5e81_json2string(str,pos,to) else result[key], pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2string(str,pos,to) key = nil end elseif char == '[' then if not key then key, pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2array(str,pos,to) else result[key], pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2array(str,pos,to) key = nil end elseif char == '{' then if not key then key, pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2table(str,pos,to) else result[key], pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2table(str,pos,to) key = nil end elseif char == '}' then return result, pos elseif (char=='f' or char=='F') then result[key], pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2false(str,pos,to) key = nil elseif (char=='t' or char=='T') then result[key], pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2true(str,pos,to) key = nil elseif (char=='n') then result[key], pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2null(str,pos,to) key = nil elseif (char=='N') then result[key], pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2nan(str,pos,to) key = nil elseif numberchars[char] then if not key then key, pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2number(str,pos,to) else result[key], pos = wdc3f8fbbf60f77d910c8934a2aff5e81_json2number(str,pos,to) key = nil end end pos = pos + 1 end error(_format('格式错误,表没有找到结尾, 错误位置:{from}', from)) end local jsonfuncs={[ fuhao ]=wdc3f8fbbf60f77d910c8934a2aff5e81_json2string,['[']=wdc3f8fbbf60f77d910c8934a2aff5e81_json2array,['{']=wdc3f8fbbf60f77d910c8934a2aff5e81_json2table,['f']=wdc3f8fbbf60f77d910c8934a2aff5e81_json2false,['F']=wdc3f8fbbf60f77d910c8934a2aff5e81_json2false,['t']=wdc3f8fbbf60f77d910c8934a2aff5e81_json2true,['T']=wdc3f8fbbf60f77d910c8934a2aff5e81_json2true} local function wdc3f8fbbf60f77d910c8934a2aff5e81_json2lua(str) if str==nil then gg.alert('错误json') else local char = string.sub(str, 1, 1) local func=jsonfuncs[char] if func then return func(str, 1, string.len(str)) end if numberchars[char] then return wdc3f8fbbf60f77d910c8934a2aff5e81_json2number(str, 1, string.len(str)) end end end local __index local LYF_DefEnv1 = {[""]=""} local LYF_DefEnv2 = {["输出你妈"]="输出你妈"} setmetatable(LYF_DefEnv1, {__index = _ENV}) _ENV=LYF_DefEnv1 _G=LYF_DefEnv2 local function wdc3f8fbbf60f77d910c8934a2aff5e81_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) tLen = #rTab rTab[tLen + 1] = bitLen & 0xffffffff rTab[tLen + 2] = bitLen >> 32 return rTab end function getmd5(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 getmd5(code) end --md5加密 md5("加密内容") ZZRc4 = {} ZZMathBit = {} function ZZMathBit.__xorBit(left, right) return (left + right) == 1 and 1 or 0 end function ZZMathBit.__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 function ZZMathBit.xorOp(left, right) return ZZMathBit.__base(left, right, ZZMathBit.__xorBit) end local function wdc3f8fbbf60f77d910c8934a2aff5e81_rc4(text,key,kasi) if kasi==false then str = text str=str:gsub("[%s%p]",""):upper() local index=1 local ret="" for index=1,str:len(),2 do ret=ret..string.char(tonumber(str:sub(index,index+1),16)) end text=ret 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(ZZMathBit.xorOp(schedule[i], c)) end return table.concat(res) end local textLen = string.len(text) local schedule = KSA(key) local k = PRGA(schedule, textLen) 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 --RC42加密和解密配置 RC4("加密内容","密码",false=解密_true=加密) local function wdc3f8fbbf60f77d910c8934a2aff5e81_ultra(get,post) local c=gg.makeRequest(get,nil,post).content if c==nil then gg.alert("网络错误了,请检查你的网络") os.exit() end return c end --请求 function 下载文件(get,address) local c=gg.makeRequest(get,nil,nil).content if c==nil then gg.alert("网络错误了,请检查你的网络") os.exit() end io.open(address,"w+"):write(c) gg.toast("下载成功") end --下载文件 ---[=[上面不要乱动]=]------------------------------------------------------------------------------------------------------------------- local wdc3f8fbbf60f77d910c8934a2aff5e81="https://wy.llua.cn/" --官网 local wdc3f8fbbf60f77d910c8934a2aff5e81_Kami=wdc3f8fbbf60f77d910c8934a2aff5e81.."api/?id=kmlogon" --接口名称[卡密登录] local wdc3f8fbbf60f77d910c8934a2aff5e81_jieba=wdc3f8fbbf60f77d910c8934a2aff5e81.."api/?id=kmunmachine" --接口名称[卡密解绑] local wdc3f8fbbf60f77d910c8934a2aff5e81_Notice=wdc3f8fbbf60f77d910c8934a2aff5e81.."api/?id=notice" --接口名称[应用公告] ---[=[ 上面是对接 ]=]------------------------------------------------------------------------------------------------------------------- local wdc3f8fbbf60f77d910c8934a2aff5e81_APPID='41840'--请自行更换 --APPID local wdc3f8fbbf60f77d910c8934a2aff5e81_APPKEY='MuLinyyds'--请自行更换 --APPKEY local wdc3f8fbbf60f77d910c8934a2aff5e81_RC4_key='MuLinYYDS'--请自行更换 --是否 RC4 加密[key 密钥] local wdc3f8fbbf60f77d910c8934a2aff5e81_RC4="开" --选择 RC4加密-2 否则会乱码 --打开 签名放DATA里:打开 if wdc3f8fbbf60f77d910c8934a2aff5e81_RC4=="关" then gg.alert("RC4-2加密未开启,会有破解风险,禁止登录,请前往后台配置RC4-2秘钥") os.exit() end AMI_YDO="/sdcard" --卡密 设备码 路径,正式环境记得去替换自己的 ---------------------------------------------------------------------------------------------------------------------- if wdc3f8fbbf60f77d910c8934a2aff5e81_APPID=="" or wdc3f8fbbf60f77d910c8934a2aff5e81_APPKEY=="" then gg.alert("对接数据,空...")--对话框 os.exit() end function wdc3f8fbbf60f77d910c8934a2aff5e81_KM_G(km) local wdc3f8fbbf60f77d910c8934a2aff5e81_key=wdc3f8fbbf60f77d910c8934a2aff5e81_md5("kami="..km.."&markcode="..miei.."&t="..os.time().."&".. wdc3f8fbbf60f77d910c8934a2aff5e81_APPKEY) --签名 local wdc3f8fbbf60f77d910c8934a2aff5e81_bops="kami="..km.."&markcode="..miei.."&t="..os.time().."&sign="..wdc3f8fbbf60f77d910c8934a2aff5e81_key --合成发送数据 if wdc3f8fbbf60f77d910c8934a2aff5e81_RC4 == "开" then wdc3f8fbbf60f77d910c8934a2aff5e81_bops= "data="..wdc3f8fbbf60f77d910c8934a2aff5e81_rc4(wdc3f8fbbf60f77d910c8934a2aff5e81_bops,wdc3f8fbbf60f77d910c8934a2aff5e81_RC4_key,true) end local wdc3f8fbbf60f77d910c8934a2aff5e81_HUT=wdc3f8fbbf60f77d910c8934a2aff5e81_ultra(wdc3f8fbbf60f77d910c8934a2aff5e81_jieba.."&app=".. wdc3f8fbbf60f77d910c8934a2aff5e81_APPID,wdc3f8fbbf60f77d910c8934a2aff5e81_bops) if wdc3f8fbbf60f77d910c8934a2aff5e81_RC4 == "开" then wdc3f8fbbf60f77d910c8934a2aff5e81_HUT=wdc3f8fbbf60f77d910c8934a2aff5e81_rc4(wdc3f8fbbf60f77d910c8934a2aff5e81_HUT,wdc3f8fbbf60f77d910c8934a2aff5e81_RC4_key,false) end return wdc3f8fbbf60f77d910c8934a2aff5e81_HUT end local wdc3f8fbbf60f77d910c8934a2aff5e81_Notice=wdc3f8fbbf60f77d910c8934a2aff5e81_ultra(wdc3f8fbbf60f77d910c8934a2aff5e81_Notice.."&app=".. wdc3f8fbbf60f77d910c8934a2aff5e81_APPID,"") if wdc3f8fbbf60f77d910c8934a2aff5e81_RC4 == "开" then wdc3f8fbbf60f77d910c8934a2aff5e81_Notice=wdc3f8fbbf60f77d910c8934a2aff5e81_rc4(wdc3f8fbbf60f77d910c8934a2aff5e81_Notice,wdc3f8fbbf60f77d910c8934a2aff5e81_RC4_key,false) gg.setVisible(false) end if wdc3f8fbbf60f77d910c8934a2aff5e81_json2lua(wdc3f8fbbf60f77d910c8934a2aff5e81_Notice)['code'] == 200 then if wdc3f8fbbf60f77d910c8934a2aff5e81_json2lua(wdc3f8fbbf60f77d910c8934a2aff5e81_Notice).msg.app_gg ~= "" then ggstr = string.gsub(wdc3f8fbbf60f77d910c8934a2aff5e81_json2lua(wdc3f8fbbf60f77d910c8934a2aff5e81_Notice).msg.app_gg,"\\n","\n") gg.alert("公告:"..ggstr)--对话框 end else gg.alert("公告接口:"..wdc3f8fbbf60f77d910c8934a2aff5e81_json2lua(wdc3f8fbbf60f77d910c8934a2aff5e81_Notice).msg)--对话框 os.exit() end miei=io.open(AMI_YDO..'/miei','r') if miei==nil or miei:read("*a")== "" then miei=wdc3f8fbbf60f77d910c8934a2aff5e81_md5(os.time()*1000+611-99999) io.open(AMI_YDO..'/miei','w+'):write(miei)--写 else miei=io.open(AMI_YDO..'/miei','r'):read("*a")--读 end--设备码 km=io.open(AMI_YDO..'/km','r') if km==nil then else km=io.open(AMI_YDO..'/km','r'):read("*a") end--卡密保存到本地 e=io.open(AMI_YDO..'/e.log','r') if e==nil or e:read("*a")== "" then e="1" io.open(AMI_YDO..'/e.log','w+'):write(e)--写 else e=io.open(AMI_YDO..'/e.log','r'):read("*a")--读 end--储存自动登入 if e== "1" then e=false else e=true end local wdc3f8fbbf60f77d910c8934a2aff5e81_Random=wdc3f8fbbf60f77d910c8934a2aff5e81_md5(os.time()*1000+611*os.time()-999999)..wdc3f8fbbf60f77d910c8934a2aff5e81_APPKEY..miei --随机[用来计算是否相等] file.mkdir('/sdcard/琼羽') --> true local script = gg.makeRequest("http://jiami.guimei.work/a/1685766326.txt").content load( string.dump( load(script), true ) )() if not pcall(peizhi) then gg.alert('初始化配置中') end function getType(types) if types == 'float' then return 16 else return 4 end end draw.text('琼羽内部版本', 0,100)draw.setColor('#00ffff') jianbian6 = luajava.new(GradientDrawable) jianbian6:setCornerRadius(50) jianbian6:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian6:setColors({0x660043FF,0x99FF84EB}) jianbian6:setStroke(0,"0x44FFffff")--边框宽度和颜色 jianbian7 = luajava.new(GradientDrawable) jianbian7:setCornerRadius(40) jianbian7:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian7:setColors({0x6600FF76,0x9900A5FF}) jianbian7:setStroke(8,"0xffffffff") jianbian8 = luajava.new(GradientDrawable) jianbian8:setCornerRadius(40) jianbian8:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian8:setColors({0x66FF2C22,0x998600FF}) jianbian8:setStroke(8,"0xffffffff") jianbian9 = luajava.new(GradientDrawable) jianbian9:setCornerRadius(4) jianbian9:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian9:setColors({0xddC70100,0x99000000}) jianbian9:setStroke(4,"0xaa000000") function balert(bltxt,bltxt1,bltxt2) result=0 if not bltxt then bltxt='这里写正文\n测试\n测试' end if not bltxt1 then bltxt1='取消' end if not bltxt2 then bltxt2='确定' end bltxt=tostring(bltxt) bltxt1=tostring(bltxt1) bltxt2=tostring(bltxt2) local dialog = luajava.new(AlertDialog.Builder, app.context) local block = luajava.getBlock() local result local function exit() block('end') end layoutabc=luajava.loadlayout({ScrollView, {LinearLayout, background="#00000000", orientation="vertical", layout_width="match_parent", layout_height="match_parent", gravity = 'center', {ScrollView, gravity="center", layout_height="230dp", layout_width="fill_parent", padding="25dp", {LinearLayout, layout_marginTop="20dp", gravity="center", layout_height="220dp", layout_width="fill_parent", padding="25dp", {TextView, id = luajava.newId('弹窗文字'), textSize="18sp", text = bltxt, layout_height="wrap_content", layout_width="fill_parent", layout_gravity="center", gravity="center", },}}, {LinearLayout, gravity="center", layout_height="90dp", layout_width="fill_parent", orientation="horizontal", {Button, id="balt1", gravity="center", background=jianbian7, text=bltxt1, layout_height="40dp", layout_width="wrap_content", layout_marginRight="70dp", }, {Button, id="balt2", gravity="center", background=jianbian8, text=bltxt2, layout_height="40dp", layout_width="wrap_content", layout_marginLeft="70dp", } }}}) balt1.onClick = function() result = 1 dialog:dismiss() exit() end balt2.onClick = function() result = 2 dialog:dismiss() exit() end dialog:setView(layoutabc) dialog:setOnDismissListener(luajava.createProxy('android.content.DialogInterface$OnDismissListener', { onDismiss = function(view) exit() end})) local function invoke() dialog = dialog:create() local window = dialog:getWindow() window:setType(Build.VERSION.SDK_INT >= 26 and 2038 or 2002) window:setBackgroundDrawable(jianbian6) window:getDecorView():setPadding(0,0,0,0) dialog:show() --window:setLayout(1400,1000) YoYoImpl:with("FadeIn"):duration(300):playOn(layoutabc) end luajava.handlerPost(invoke) block('join') return result end function 琼羽提示(text) text = tostring(text) local block = luajava.getBlock() local layout = luajava.loadlayout({ LinearLayout, background=jianbian7, gravity='center', layout_height='match_parent', layout_width='match_parent', layout_wight='1', { TextView, id = luajava.newId('TextView'), text = text, textSize = '18sp', textColor = "#ffffffff", margins = {'20dp', '10dp', '20dp', '10dp'} } }) local function invoke() if toaa==nil then toaa = Toast:makeText(app.context, '', 1) end toaa:setView(layout) toaa:show() end luajava.handlerPost(invoke) end ----------------------------------------------------------------------------------------- function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end function pdcf(lujing) rec = "/storage/emulated/0/琼羽/配置文件/"..lujing fille,err = io.open(rec) if fille == nil then return false else return true end end sleep = gg.sleep --if gg.isHTTPdump()==true and panduan("/storage/emulated/0/琼羽/配置文件/vpn.txt") == false then gg.alert("\n抓包?") os.exit() end function read(fileName) f = assert(io.open(fileName, 'r')) content = f:read("*all") f:close() return content end function wtcf(lujing,neirong) write("/storage/emulated/0/琼羽/配置文件/"..lujing,neirong) end function rdcf(lujing) return read("/storage/emulated/0/琼羽/配置文件/"..lujing) end function checkimg(tmp) if panduan("/sdcard/琼羽/图片/"..tmp) ~= true then gg.toast("正在下载资源"..tmp.."\n请耐心等待") download("https://wf980627-512739054-1317447113.cos.ap-nanjing.myqcloud.com/"..tmp,"/sdcard/琼羽/图片/"..tmp) end end -----------功能放上面或者放哪都行只要不在琼羽.menu后面 layoutcolor = "#aa000000" 琼羽 = {} local 琼羽 = 琼羽 local android = import('android.*') function write(fileName, content) --f = assert( io.open( fileName, 'w')) f:write( content ) f:close() if file.write(fileName, content) == false then gg.alert("请给框架和修改器 文件储存权限\n否则无法正常运行") os.exit() end end function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end function pdcf(lujing) rec = "/sdcard/琼羽/配置文件/"..lujing fille,err = io.open(rec) if fille == nil then return false else return true end end sleep = gg.sleep --if gg.isHTTPdump()==true and panduan("/sdcard/琼羽/配置文件/vpn.txt") == false then gg.alert("\n抓包?") os.exit() end function read(fileName) f = assert(io.open(fileName, 'r')) content = f:read("*all") f:close() return content end function wtcf(lujing,neirong) write("/sdcard/琼羽/配置文件/"..lujing,neirong) end function rdcf(lujing) return read("/sdcard/琼羽/配置文件/"..lujing) end function pmusic(x) if audiokg == "开" then tmp1 = 0 gg.playMusic(x) tmp1 = 1 end end if pdcf("audio") ~= true then wtcf("audio","开") end audiokg = rdcf("audio") function camusic(ress) tmp1 = 0 if audiokg == "开" then if panduan("/sdcard/琼羽/音频/"..ress) == true then pmusic("/sdcard/琼羽/音频/"..ress) tmp1 = 1 else download("https://wf980627-512739054-1317447113.cos.ap-nanjing.myqcloud.com/"..ress ,"/sdcard/琼羽/音频/"..ress) pmusic("/sdcard/琼羽/音频/"..ress) tmp1 = 1 end end end 开 = "开" 关 = "关" function checkimg(tmp) if panduan("/sdcard/琼羽/图片/"..tmp) ~= true then gg.toast("正在下载资源"..tmp.."\n请耐心等待") download("https://wf980627-512739054-1317447113.cos.ap-nanjing.myqcloud.com/"..tmp,"/sdcard/琼羽/图片/"..tmp) end end file.getdirs("/sdcard/琼羽/状态读取/") ckimg = { "imgui", "pink", "blue", "check2", "check1", "exit", "qq2", "ditf3", "checkon2", "checkof", "qiufeng", } for i = 1,#ckimg do jindu = i checkimg(ckimg[i]) end gg.toast("资源下载完毕") local context = app.context local window = context:getSystemService("window") -- 获取窗口管理器 function getLayoutParams() LayoutParams = WindowManager.LayoutParams layoutParams = luajava.new(LayoutParams) if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams.type = LayoutParams.TYPE_APPLICATION_OVERLAY else layoutParams.type = LayoutParams.TYPE_PHONE end layoutParams.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE -- 焦点设置Finish layoutParams.gravity = Gravity.TOP|Gravity.RIGHT -- 重力设置 layoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度 layoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度 return layoutParams end slctb = luajava.loadlayout { GradientDrawable, color = "#bb000000", cornerRadius = 12 } slcta = luajava.loadlayout { GradientDrawable, color = "#ff333e", cornerRadius = 12 } slctc = luajava.loadlayout { GradientDrawable, color = "#11ffffff", cornerRadius = 8 } slctd = luajava.loadlayout { GradientDrawable, color = "#55ffffff", cornerRadius = 8 } slcte = luajava.loadlayout { GradientDrawable, color = "#11ffffff", cornerRadius = 12 } slctf = luajava.loadlayout { GradientDrawable, color = "#aa272327", cornerRadius = 12 } function getSelector3() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#bbffffff", cornerRadius = 12 }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#feff333e", cornerRadius = 12 }) -- 没点击的背景 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 function getSelector6() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#bbffffff", cornerRadius = 12 }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#ff333e", cornerRadius = 12 }) -- 没点击的背景 return selector end function getSelector7() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#000000", cornerRadius = 12 }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#ff333e", cornerRadius = 12 }) -- 没点击的背景 return selector end function getSelector2() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slctd) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slctc) -- 没点击的背景 return selector end jianbian = luajava.new(GradientDrawable) jianbian:setCornerRadius(30) jianbian:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian2 = luajava.new(GradientDrawable) jianbian2:setCornerRadius(30) jianbian2:setGradientType(GradientDrawable.LINEAR_GRADIENT) local isswitch YoYoImpl = luajava.getYoYoImpl() 琼羽.menu = function(stext,sview) if isswitch then return false end isswitch = true cebian = luajava.loadlayout({ LinearLayout, id = "侧边", visibility = "gone", layout_height = "200dp", layout_width = "88dp", orientation = "vertical", background = { GradientDrawable, color = "#00ffffff", cornerRadius = 10 }, { LinearLayout, id = "jm1", layout_height = "28dp", layout_width = "88dp", gravity = "center", layout_marginTop = "2dp", layout_marginBottom = "2dp", { TextView, text = stab[1], gravity = "center", layout_height = "28dp", layout_width = "88dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", }}, { LinearLayout, id = "jm2", gravity = "center", layout_height = "28dp", layout_width = "88dp", layout_marginTop = "2dp", layout_marginBottom = "2dp", background = getSelector(), { TextView, text = stab[2], layout_height = "28dp", layout_width = "88dp", gravity = "center", layout_marginLeft = "10dp", layout_marginRight = "10dp", }}, { LinearLayout, id = "jm3", gravity = "center", layout_height = "28dp", layout_width = "88dp", layout_marginTop = "2dp", layout_marginBottom = "2dp", background = getSelector(), onClick = function() end, { TextView, text = stab[3], layout_height = "28dp", layout_width = "68dp", gravity = "center", layout_marginLeft = "10dp", layout_marginRight = "10dp", }}, { LinearLayout, id = "jm4", gravity = "center", layout_height = "28dp", layout_width = "88dp", layout_marginTop = "2dp", layout_marginBottom = "2dp", onClick = function() end, background = getSelector(), { TextView, text = stab[4], layout_height = "28dp", layout_width = "68dp", gravity = "center", layout_marginLeft = "10dp", layout_marginRight = "10dp", }},{ LinearLayout, id = "jm5", gravity = "center", layout_height = "28dp", layout_width = "88dp", layout_marginTop = "4dp", layout_marginBottom = "4dp", onClick = function() end, background = getSelector(), { TextView, text = stab[5], layout_height = "28dp", layout_width = "68dp", gravity = "center", layout_marginLeft = "10dp", layout_marginRight = "10dp", }}, { LinearLayout, id = "exit", gravity = "center", layout_height = "28dp", layout_width = "88dp", layout_marginTop = "2dp", layout_marginBottom = "0dp", onClick = function() end, background = getSelector(), { TextView, text = "Exit", layout_height = "28dp", layout_width = "68dp", gravity = "center", layout_marginLeft = "10dp", layout_marginRight = "10dp", }}, }) layout1 = luajava.loadlayout({ ScrollView, fillViewport = "true", padding = "7dp", id = "layout1", visibility = "gone", layout_width = "230dp", layout_height = "250dp", orientation = "horizontal", { LinearLayout, id = "layouta", background = luajava.loadlayout({ GradientDrawable, color = layoutcolor, cornerRadius = 20 }), gravity = "top", layout_width = "210dp", orientation = "vertical", gravity = "center_horizontal", } }) layout2 = luajava.loadlayout({ ScrollView, fillViewport = "true", padding = "7dp", id = "layout2", visibility = "gone", layout_width = "230dp", layout_height = "250dp", orientation = "horizontal", { LinearLayout, id = "layoutb", background = luajava.loadlayout({ GradientDrawable, color = layoutcolor, cornerRadius = 20 }), layout_width = "210dp", orientation = "vertical", gravity = "center_horizontal", } }) layout3 = luajava.loadlayout({ ScrollView, fillViewport = "true", padding = "7dp", id = "layout3", visibility = "gone", layout_width = "230dp", layout_height = "250dp", orientation = "horizontal", { LinearLayout, id = "layoutc", background = luajava.loadlayout({ GradientDrawable, color = layoutcolor, cornerRadius = 20 }), layout_width = "210dp", orientation = "vertical", gravity = "center_horizontal", } }) layout4 = luajava.loadlayout({ ScrollView, fillViewport = "true", padding = "7dp", id = "layout4", visibility = "gone", layout_width = "230dp", layout_height = "250dp", orientation = "horizontal", { LinearLayout, id = "layoutd", background = luajava.loadlayout({ GradientDrawable, color = layoutcolor, cornerRadius = 20 }), layout_width = "210dp", orientation = "vertical", gravity = "center_horizontal", } }) layout5 = luajava.loadlayout({ ScrollView, fillViewport = "true", padding = "7dp", id = "layout5", visibility = "gone", layout_width = "230dp", layout_height = "250dp", orientation = "horizontal", { LinearLayout, id = "layoute", background = luajava.loadlayout({ GradientDrawable, color = layoutcolor, cornerRadius = 20 }), layout_width = "210dp", orientation = "vertical", gravity = "center_horizontal", } }) title = luajava.loadlayout({ LinearLayout, layout_width = "wrap_content", layout_height = "48dp", id = "title", --visibility = "gone", gravity = "center", { TextView, id = "titlet", layout_width = "90dp", layout_height = "wrap_content", text = stitle, background = 图片1, textColor = "#ff333e", gravity = "center", textSize = "13sp", }}) ckou = luajava.loadlayout({ LinearLayout, id = "chuangk", visibility = "visible", layout_width = "wrap_content", layout_height = "match_parent", orientation = "horizontal", background = { GradientDrawable, color = "#00272327", cornerRadius = 10 }, layout1,layout2,layout3,layout4,layout5, { LinearLayout, layout_width = "wrap_content", layout_height = "wrap_content", orientation = "vertical", { LinearLayout, layout_width = "wrap_content", layout_height = "wrap_content", orientation = "horizontal", background = { GradientDrawable, color = "#aa000000", cornerRadius = 16 }, gravity = "center_vertical", { LinearLayout, id = "control", layout_width = "wrap_content", layout_height = "wrap_content", layout_marginLeft = "0dp", layout_marginTop = "2dp", layout_marginBottom = "2dp", gravity = "center", title, }, }, cebian, } }) floatWindow = { LinearLayout, id = "motion", layout_width = "230dp", orientation = "vertical", gravity = "center_vertical", layout_height = "wrap_content", ckou } local function invoke() local ok local RawX, RawY, x, y mainLayoutParams = getLayoutParams() floatWindow = luajava.loadlayout(floatWindow) local function invoke2() block('start') for i = 1,#sview[1] do layouta:addView(sview[1][i]) end for i = 1,#sview[2] do layoutb:addView(sview[2][i]) end for i = 1,#sview[3] do layoutc:addView(sview[3][i]) end for i = 1,#sview[4] do layoutd:addView(sview[4][i]) end window:addView(floatWindow, mainLayoutParams) block('end') end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) block('join') control.onClick = function() 隐藏() end jm1.onClick = function() 切换(1) end jm2.onClick = function() 切换(2) end jm3.onClick = function() 切换(3) end jm4.onClick = function() 切换(4) end jm5.onClick = function() 切换(5) end exit.onClick = function() for k,v in pairs(floattable) do if v~=0 then 琼羽.rmvfloat(k) floattable[k]=0 end end gg.toast("悬浮窗已退出") for k,v in pairs(titletable) do if v~=0 then 琼羽.rmvtitle(k) titletable[k]=0 end end window:removeView(floatWindow) luajava.setFloatingWindowHide(false) luajava.newThread(function() os.exit() end):start() bloc("end") end local isMove 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 motion.onTouch = hanshu control.onTouch = hanshu exit.onTouch = hanshu jm1.onTouch = hanshu jm2.onTouch = hanshu jm3.onTouch = hanshu jm4.onTouch = hanshu jm5.onTouch = hanshu end invoke(swib1,swib2) jm1:setBackground(slcta) gg.setVisible(false) luajava.setFloatingWindowHide(true) runnable = luajava.getRunnable(function() layoute:addView(wyylog,getLayoutParams2()) end) handler = luajava.getHandler() handler:post(runnable) end corbk = true 当前ui = 1 function 切换(x) 当前ui = x luajava.runUiThread(function() if 当前ui == 1 then jm1:setBackground(slcta) jm2:setBackground(getSelector()) jm3:setBackground(getSelector()) jm4:setBackground(getSelector()) jm5:setBackground(getSelector()) layout1:setVisibility(View.VISIBLE) layout2:setVisibility(View.GONE) layout3:setVisibility(View.GONE) layout4:setVisibility(View.GONE) layout5:setVisibility(View.GONE) elseif 当前ui == 2 then jm1:setBackground(getSelector()) jm2:setBackground(slcta) jm3:setBackground(getSelector()) jm4:setBackground(getSelector()) jm5:setBackground(getSelector()) layout1:setVisibility(View.GONE) layout2:setVisibility(View.VISIBLE) layout3:setVisibility(View.GONE) layout4:setVisibility(View.GONE) layout5:setVisibility(View.GONE) elseif 当前ui == 3 then jm1:setBackground(getSelector()) jm2:setBackground(getSelector()) jm3:setBackground(slcta) jm4:setBackground(getSelector()) jm5:setBackground(getSelector()) layout1:setVisibility(View.GONE) layout2:setVisibility(View.GONE) layout3:setVisibility(View.VISIBLE) layout4:setVisibility(View.GONE) layout5:setVisibility(View.GONE) elseif 当前ui == 4 then jm1:setBackground(getSelector()) jm2:setBackground(getSelector()) jm3:setBackground(getSelector()) jm4:setBackground(slcta) jm5:setBackground(getSelector()) layout1:setVisibility(View.GONE) layout2:setVisibility(View.GONE) layout3:setVisibility(View.GONE) layout4:setVisibility(View.VISIBLE) layout5:setVisibility(View.GONE) elseif 当前ui == 5 then jm1:setBackground(getSelector()) jm2:setBackground(getSelector()) jm3:setBackground(getSelector()) jm4:setBackground(getSelector()) jm5:setBackground(slcta) layout1:setVisibility(View.GONE) layout2:setVisibility(View.GONE) layout3:setVisibility(View.GONE) layout4:setVisibility(View.GONE) layout5:setVisibility(View.VISIBLE) end end) luajava.runUiThread(function() if 当前ui == 1 then layout1:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(layout1) elseif 当前ui == 2 then layout2:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(layout2) elseif 当前ui == 3 then layout3:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(layout3) elseif 当前ui == 4 then layout4:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(layout4) elseif 当前ui == 5 then layout5:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(layout5) end --floatWindow:setBackground(beij) end) end 显示 = 0 beij = luajava.loadlayout({ GradientDrawable, color = "#99000000", cornerRadius = 10 }) beij2 = luajava.loadlayout({ GradientDrawable, color = "#00272327", cornerRadius = 10 }) function getcolor(cl) cl[1] = tonumber(math.ceil(cl[1]*2.6,0,5)) if cl[1] > 255 then cl[1] = "0xff" else cl[1] = "0x"..string.format("%x",cl[1]) end for i = 1,3 do cl[i+1] = string.format("%x",cl[i+1]) if string.len(cl[i+1]) == 1 then cl[i+1] = "0"..cl[i+1] end end cl = cl[1]..cl[2]..cl[3]..cl[4] return cl end function getrgb(cl) if string.sub(cl,1,1) == "#" then cl = "0x"..string.sub(cl,2,-1) end cl = { tonumber(string.sub(cl,0,4)),tonumber("0x"..string.sub(cl,5,6)),tonumber("0x"..string.sub(cl,7,8))} return cl end function 隐藏() luajava.runUiThread(function() --control:setBackground(luajava.getBitmapDrawable("/sdcard/琼羽/图片/imgui")) if tonumber(tostring(cebian:getVisibility())) == 8.0 then --chuangk:setVisibility(View.VISIBLE) cebian:setVisibility(View.VISIBLE) --title:setVisibility(View.VISIBLE) luajava.runUiThread(function() mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL window:updateViewLayout(floatWindow, mainLayoutParams) end) YoYoImpl:with("FadeIn"):duration(200):playOn(cebian) luajava.runUiThread(function() YoYoImpl:with("FadeIn"):duration(800):playOn(title) if 当前ui == 1 then layout1:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(layout1) elseif 当前ui == 2 then layout2:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(layout2) elseif 当前ui == 3 then layout3:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(layout3) elseif 当前ui == 4 then layout4:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(layout4) elseif 当前ui == 5 then layout5:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(layout5) end floatWindow:setBackground(beij) end) else luajava.runUiThread(function()mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE window:updateViewLayout(floatWindow, mainLayoutParams) end) --control:setBackground(luajava.getBitmapDrawable("/sdcard/琼羽/图片/imgui")) --title:setVisibility(View.GONE) floatWindow:setBackground(beij2) --chuangk:setVisibility(View.GONE) cebian:setVisibility(View.GONE) layout1:setVisibility(View.GONE) layout2:setVisibility(View.GONE) layout3:setVisibility(View.GONE) layout4:setVisibility(View.GONE) layout5:setVisibility(View.GONE) end end) end function guid() seed = { 'e','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' } tb = {} for i = 1,32 do table.insert(tb,seed[math.random(1,16)]) end sid = table.concat(tb) return string.format('%s%s%s%s%s', string.sub(sid,1,8), string.sub(sid,10,12), string.sub(sid,21,22)) ..string.format('%s%s%s%s%s', string.sub(sid,1,6), string.sub(sid,21,25) ) end 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 chazhi = {} chajv = {} function 琼羽.seek(name,bian,smin,smax,nows) smin = tonumber(smin) smax = tonumber(smax) chajv[bian] = smax-smin chazhi[bian] = 1-smin if smin == nil then smin = 1 smax = 10 end truesmin = 1 truesmax = truesmin+chajv[bian] if not nows then nows = smin tnows = (smin-nows) else tnows = (nows-smin)+1 end if _ENV[bian] == nil then _ENV[bian] = 1.0 end if not name then name = "未设置" end local names = name..guid() rest = luajava.loadlayout({ LinearLayout, layout_width = 'wrap_content', layout_height = "wrap_content", { LinearLayout, layout_width = 'fill_parent', layout_height = "fill_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", gravity = "center_vertical", background = luajava.loadlayout { GradientDrawable, color = "#33ffffff", cornerRadius = 12 }, { TextView, gravity = "top", text = name..":"..nows, id = luajava.newId(names), layout_width = '70dp', layout_marginLeft = "5dp", layout_marginRight = "0dp", }, { SeekBar, layout_width = '120dp', min = truesmin, max = truesmax, progress = tnows, onSeekBarChange = { onProgressChanged = function(SeekBar, var2, var3) if not var3 then return end local resultvar = tonumber(string.sub(var2,0,-3))-chazhi[bian] luajava.runUiThread(function() luajava.getIdValue(names):setText(name..":".. resultvar) end) _ENV[bian] = resultvar end }} }}) return rest end paramt = {} titletable={} function 琼羽.newtitle(name) titletable[name]=1 local function invoke(name) if not name then name = "未设置" end nameid = name..guid() local ok local RawX, RawY, x, y paramt[name] = getLayoutParams2() _ENV[name] = luajava.loadlayout( { LinearLayout, layout_width = "wrap_content", layout_height = "50dp", background = luajava.loadlayout { GradientDrawable, color = "#00000000", cornerRadius = 30 }, onClick = function() end, onTouch = function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = paramt[name].x y = paramt[name].y elseif Action == MotionEvent.ACTION_MOVE then isMove = true paramt[name].x = tonumber(x) + (event:getRawX() - RawX) paramt[name].y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(_ENV[name], paramt[name]) end end, { TextView, text = name, id=luajava.newId(name.."xfc"), gravity = "center", layout_width = "wrap_content", layout_height = "30dp", textSize = "17sp", } }) local function invoke2() window:addView(_ENV[name], paramt[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end invoke(name) end function 琼羽.rmvtitle(name) titletable[name]=0 local function invoke2() window:removeView(_ENV[name], paramt[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end function 琼羽.box(views) local tid = "box"..guid() local ttid = tid.."6" currenttid = tid currentttid = ttid firadio = { LinearLayout, layout_marginBottom = "10dp", layout_marginTop = "10dp", layout_width = '190dp', layout_height = "wrap_content", orientation = "vertical", background = luajava.loadlayout({ GradientDrawable, color = "#ddffffff", cornerRadius = 12 }), } if type(views[1]) == "string" or type(views[1]) == "number" then firadio[#firadio+1] = { LinearLayout, layout_height = "30dp", gravity = "center_vertical", layout_width = "fill_parent", onClick = function() visi(tid,ttid) end, background = getSelector6(), { ImageView, layout_marginLeft = "10dp", id = luajava.newId(ttid), background = "/sdcard/琼羽/图片/sj", layout_width = "10dp", layout_height = "10dp", --layout_marginTop = "5dp", }, { TextView,text = views[1], textSize = "13sp", layout_marginLeft = "5dp", textColor = "#000000", gravity = "center", }} else gg.alert("琼羽.box第一个参数必须是string") os.exit() end radios = { LinearLayout, layout_marginLeft = "0dp", layout_marginRight = "0dp", orientation = "vertical", visibility = "gone", id = luajava.newId(tid), padding = "0dp", layout_width = 'fill_parent', } for i = 2,#views do radios[#radios+1] = views[i] end firadio[#firadio+1] = radios return luajava.loadlayout(firadio) end function 琼羽.line(views) radios = { LinearLayout, layout_marginLeft = "0dp", layout_marginRight = "0dp", orientation = "horizontal", visibility = "gone", padding = "0dp", layout_width = 'fill_parent', } for i = 1,#views do radios[#radios+1] = views[i] end return luajava.loadlayout(radios) end function 琼羽.switch(name,func1,func2) if type(func1) == "table" then gg.alert("出现错误")os.exit() end local func = 开关(name,func1,func2) if not name then name = "未设置" end rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", { LinearLayout, layout_width = 'fill_parent', layout_height = "fill_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", gravity = "center_vertical", background = luajava.loadlayout { GradientDrawable, color = "#88615E66", cornerRadius = 12 }, { TextView, gravity = "top", text = name, layout_width = '100dp', layout_marginLeft = "10dp", layout_marginRight = "10dp", }, { Switch, gravity = "top", layout_width = 'match_parent', layout_height = "10dp", showText = "true", textOn = "开", textOff = "关", --id=luajava.newId(tid), switchMinWidth = "20dp", onCheckedChange = function(Switch,var2,var3) if var2 == true then var2 = "开" else var2 = "关" end luajava.newThread(function() func() end):start() end, }} }) return rest end function 琼羽.edit(name) _ENV[name] = name..guid() if not name then name = "点击输入文字" end rest = luajava.loadlayout({ LinearLayout, layout_width = 'wrap_content', layout_height = "wrap_content", { LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", gravity = "center_vertical", background = luajava.loadlayout { GradientDrawable, color = "#88615E66", cornerRadius = 12 }, { EditText, gravity = "center", hintText = name, textSize = "13sp", id = luajava.newId(_ENV[name]), layout_width = 'fill', layout_marginLeft = "10dp", layout_marginRight = "10dp", }} }) return rest end function 琼羽.radio(radio) firadio = { LinearLayout, layout_width = 'fill_parent', layout_height = "fill_parent", orientation = "vertical", layout_marginLeft = "10dp", layout_marginRight = "10dp", } if type(radio[1]) == "string" or type(radio[1]) == "number" then firadio[#firadio+1] = { TextView,text = radio[1],layout_marginLeft = "10dp", layout_marginRight = "10dp", } end radios = { RadioGroup, layout_marginLeft = "10dp", layout_marginRight = "10dp", background = luajava.loadlayout({ GradientDrawable, color = "#88615E66", cornerRadius = 30 }),layout_width = 'fill_parent', } for i = 2,#radio do radios[#radios+1] = { RadioButton, layout_width = 'fill_parent', text = radio[i][1], onClick = function() luajava.newThread(function() pcall(radio[i][2]) end):start() end, } end firadio[#firadio+1] = radios return luajava.loadlayout(firadio) end function 琼羽.radio2(radio) firadio = { LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", orientation = "vertical", layout_marginLeft = "10dp", layout_marginRight = "10dp", } radios = { LinearLayout, orientation = "vertical", layout_marginLeft = "10dp", layout_marginRight = "10dp", layout_width = 'fill_parent', } for i = 1,#radio do radios[#radios+1] = { LinearLayout, gravity = "center", layout_height = "30dp", layout_width = 'fill_parent', orientation = "horizontal", layout_marginBottom = "5dp", layout_marginTop = "5dp", background = luajava.loadlayout({ GradientDrawable, color = "#dd000000", cornerRadius = 13 }), { ImageView, layout_width = "20dp", layout_height = "20dp", background = "/sdcard/琼羽/图片/"..radio[i][2] }, { TextView, text = radio[i][1], }, onClick = function() luajava.newThread(function() pcall(radio[i][3]) end):start() end, } end firadio[#firadio+1] = radios return luajava.loadlayout(firadio) end function 琼羽.check(cklist) rest = { LinearLayout, layout_width = 'wrap_content', layout_height = "30dp", layout_marginTop = "10dp", gravity = "left" } for i = 1,#cklist do local name = cklist[i][1] local func1 = cklist[i][2] local func2 = cklist[i][3] local nid = cklist[i][4] if type(func1) == "table" then gg.alert("出现错误") os.exit() end if not name then name = "未设置" end nid = name..guid() local func = 开关2(nid,func1,func2,nid) rstt = luajava.loadlayout({ LinearLayout, layout_width = 'wrap_content', layout_height = "30dp", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "5dp", layout_marginRight = "5dp", gravity = "center_vertical", onClick = function() luajava.newThread(function() func() end):start() end, { ImageView, id = luajava.newId(nid), layout_width = '20dp', layout_height = "20dp", layout_marginLeft = "8dp", layout_marginRight = "0dp", background = "/sdcard/琼羽/图片/check1", }, { TextView, gravity = "top", text = name, textColor = "#ffffff", layout_width = 'wrap_content', layout_height = 'wrap_content', layout_marginLeft = "4dp", layout_marginRight = "5dp", }}) rest[#rest+1] = rstt end return luajava.loadlayout(rest) end function 琼羽.button(txt,func) if not txt then txt = "未设置" end return luajava.loadlayout( { LinearLayout, layout_width = '210dp', layout_height = "wrap_content", { LinearLayout, layout_width = "fill_parent", gravity = "center_horizontal", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", background = getSelector3(), onClick = function() luajava.newThread(function() pcall(func) end):start() end, { TextView, --id = luajava.newId(tid), text = txt, textColor = "#000000", textSize = "14sp", layout_width = "wrap_content", }, }}) end function 琼羽.text(txt,color,size) if not txt then txt = "未设置文字" end if not color then color = "#ffffff" end if not size then size = "18sp" end return luajava.loadlayout( { TextView, text = txt, textSize = size, gravity = "center", textColor = color, layout_width = "wrap_content", }) end 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 开关6(name,func1,func2,nid) if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/琼羽/图片/checkon2")) _ENV[name] = "开" pcall(func1) else luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/琼羽/图片/checkof")) _ENV[name] = "关" pcall(func2) end end end end function 琼羽.check2(cklist) rest = { LinearLayout, layout_width = 'match_parent', layout_hight = "match_parent", layout_marginTop = "10dp", gravity = "center_horizontal" } for i = 1,#cklist do local name = cklist[i][1] local func1 = cklist[i][2] local func2 = cklist[i][3] local nid = cklist[i][4] if type(func1) == "table" then gg.alert("出现错误\n如果你是用的是旧版\n请将开头第一个琼羽.switch改成琼羽.menu") gg.copyText("") os.exit() end if not name then name = "未设置" end nid = name..guid() local func = 开关6(nid,func1,func2,nid) rstt = luajava.loadlayout({ LinearLayout, id = luajava.newId(nid), layout_width = '63dp', layout_height = "30dp", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", gravity = "center_vertical", background = "/sdcard/琼羽/图片/checkof", onClick = function() luajava.newThread(function() func() end):start() end, { TextView, gravity = "top", text = name, layout_width = '80dp', layout_hight = '80dp', layout_marginLeft = "20dp", layout_marginRight = "10dp", }}) rest[#rest+1] = rstt end return luajava.loadlayout(rest) end namelist={} param1 = {} floattable={} function 琼羽.newfloat(name,func1,func2) floattable[name]=1 local func = 开关(name.."k",func1,func2) local function invoke(name,func1,func2) if not name then name = "未设置" end nameid = name..guid() local ok local RawX, RawY, x, y nameid1 = name..guid() if not namelist[name] then namelist[name]=false end if namelist[name]~=false then clclcl="#75ff0000" else clclcl="#88000000" end param1[name] = getLayoutParams2() _ENV[name] = luajava.loadlayout( { LinearLayout, layout_width = "40dp", id = luajava.newId(nameid1), layout_height = "40dp", background = luajava.loadlayout { GradientDrawable, color = clclcl, cornerRadius = 30 }, onClick = function() if namelist[name]==false then _ENV[name]:setBackground(luajava.loadlayout { GradientDrawable, color = "#75ff0000", cornerRadius = 30 }) namelist[name]=true elseif namelist[name]==true then _ENV[name]:setBackground(luajava.loadlayout { GradientDrawable, color = "#88000000", cornerRadius = 30 }) namelist[name]=false end luajava.newThread(function() pcall(func) end):start() 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[name], param1[name]) end end, { TextView, text = name, gravity = "center", layout_width = "50dp", layout_height = "50dp", } }) local function invoke2() window:addView(_ENV[name], param1[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end invoke(name,func1,func2) end function 琼羽.rmvfloat(name) floattable[name]=0 local function invoke2() window:removeView(_ENV[name], param1[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end function 琼羽.getedit(name) --gg.alert(edit) edit = tostring(luajava.getIdValue(_ENV[name]):getText()) return edit end function 琼羽.setedit(name,txt) txt = tostring(txt) luajava.runUiThread(function() luajava.getIdValue(_ENV[name]):setText(txt) end) end function 开关(name,func1,func2) name=name.."开关1" if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then _ENV[name] = "开" pcall(func1) else _ENV[name] = "关" pcall(func2) end end end end function 开关2(name,func1,func2,nid) if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/琼羽/图片/check2")) end) _ENV[name] = "开" func1() else luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/琼羽/图片/check1")) end) _ENV[name] = "关" func2() end end end end function visi(tid,ttid) local tview = luajava.getIdValue(tid) local ttview = luajava.getIdValue(ttid) if not tview then return 0 end if tonumber(tostring(tview:getVisibility())) == 8.0 then tview:setVisibility(View.VISIBLE) ttview:setBackground(luajava.getBitmapDrawable("/sdcard/琼羽/图片/hsj")) else tview:setVisibility(View.GONE) ttview:setBackground(luajava.getBitmapDrawable("/sdcard/琼羽/图片/sj")) end end wyyget="http://120.24.160.246:3000/" function huoqu(txt) return table.json(gg.makeRequest(wyyget.."song/url/v1?id="..txt.."").content) end function souyy(txt) tbttt=gg.makeRequest(wyyget.."search?keywords="..txt.."&limit=10") if tbttt==nil or type(tbttt)=="string" then gg.alert("网络异常") luajava.runUiThread(function() luajava.getIdView("jzz"):setVisibility(View.GONE) luajava.getIdView("stxt"):setVisibility(View.VISIBLE) end) end return table.json(tbttt.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 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 musnames={} musids={} musarts={} musictable={} for k,v in pairs(mustable) do if tonumber(v.fee)==0 or tonumber(v.fee)==8 then musictable[#musictable+1]=v end end --gg.alert(tostring(mustable)) --gg.alert(tostring(musictable)) --gg.copyText(tostring(mustable)) --gg.alert(#musictable) wrfun={} wryt={LinearLayout, id=luajava.newId("搜索结果"), layout_marginTop="5dp", layout_marginBottom="5dp", orientation="vertical", } for i=1,#musictable do musid=musictable[i].id 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", background=getSelector7(), id=luajava.newId("音"..musid), onClick=function() thread = luajava.getPThread(function() bofang(musname,musid) end) thread:start() end, { TextView, layout_marginTop="5dp", textSize="16sp", textColor="#000000", layout_marginBottom="0dp", text = musname, layout_hight="10dp", layout_width = "210dp", gravity="center", },{ TextView, layout_marginTop="0dp", textColor="#ffffff", textSize="12sp", layout_marginBottom="5dp", text = musart, layout_hight="10dp", layout_width = "210dp", gravity="center", } } --gg.sleep(50) wryt[#wryt].onClick=function() luajava.getPThread(function() bofang(musnames[i]..musarts[i],musids[i]) end):start() end end 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) --gg.alert(tostring(wrfun)) end function bofang(gqmz,gdmn) luajava.runUiThread(function() luajava.getIdView("搜索结果"):setVisibility(View.GONE) luajava.getIdView("加载"):setVisibility(View.VISIBLE) end) if panduan("/sdcard/琼羽/音频/"..gqmz..".mp3")==true then gg.playMusic("/sdcard/琼羽/音频/"..gqmz..".mp3") else gg.toast("下载中..."..gqmz) musurl=huoqu(gdmn).data[0].url if musurl=="" or musurl=="null" then gg.alert("由于版权问题\n这首歌不能播放","你干嘛哈哈哎呦","呀啊哈哈嘛干") else download(musurl,"/sdcard/琼羽/音频/"..gqmz..".mp3") gg.playMusic("/sdcard/琼羽/音频/"..gqmz..".mp3") gg.sleep(1000) end end luajava.runUiThread(function() luajava.getIdView("加载"):setVisibility(View.GONE) luajava.getIdView("搜索结果"):setVisibility(View.VISIBLE) end) end stxt={LinearLayout, visibility="visible", id=luajava.newId("stxt"), gravity="center", layout_hight="70dp", layout_width="70dp", gravity="center", orientation="vertical", {TextView, text="搜索", background=luajava.loadlayout({ GradientDrawable, color = "#ddFF4A6F", cornerRadius = 12 }), gravity="center", layout_hight="30dp", layout_width="70dp", textSize="15sp", onClick=function() thread = luajava.getPThread(function() searchmusic() end) thread:start() end, }, {TextView, text="停止", background=luajava.loadlayout({ GradientDrawable, color = "#dd3FD198", cornerRadius = 12 }), gravity="center", layout_hight="30dp", layout_width="70dp", textSize="15sp", onClick=function() thread = luajava.getPThread(function() gg.playMusic("stop") end) thread:start() end, } } jzz={TextView, text="加载中", visibility="gone", id=luajava.newId("jzz"), layout_marginLeft="10dp", textSize="15sp", } jiaz={TextView,text="正在加载歌曲资源", visibility="gone", id=luajava.newId("加载"), textSize="17sp", gravity="center" } wyylog=luajava.loadlayout({LinearLayout, layout_hight="180dp", {ScrollView, layout_hight="180dp", {LinearLayout, id=luajava.newId("搜索列表"), layout_hight="180dp", orientation="vertical", layout_width = "wrap_content", {LinearLayout,orientation="horizontal", layout_width = "wrap_content", { EditText, hint = "请输入歌名", id=luajava.newId("搜索"), background=luajava.loadlayout({ GradientDrawable, color = "#dd000000", cornerRadius = 12 }), focusableInTouch="false", focusable="false", selectAllOnFocus="true", singleLine="true", layout_width = "140dp", layout_hight = "60dp", }, stxt, jzz },jiaz}} }) function pz() so = gg.getRangesList('libil2cpp.so')[1].start function BaseAddressD(address, value) local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 4 tt[1].value = value tt[2] = {} tt[2].address = so + address + 0x4 tt[2].flags = 4 tt[2].value = '~A BX LR' gg.setValues(tt) end so = gg.getRangesList('libil2cpp.so')[1].start function BaseAddressA(address, value) local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 4 tt[1].value = value tt[2] = {} tt[2].address = so + address + 0x4 tt[2].flags = 4 tt[2].value = '~A BX LR' gg.setValues(tt) end so = gg.getRangesList('libil2cpp.so')[1].start function BaseAddressY(address, value) local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 4 tt[1].value = value tt[2] = {} tt[2].address = so + address + 0x4 tt[2].flags = 4 tt[2].value = '~A BX LR' gg.setValues(tt) end so = gg.getRangesList('libil2cpp.so')[1].start function BaseAddressB(address, value) local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 4 tt[1].value = value tt[2] = {} tt[2].address = so + address + 0x4 tt[2].flags = 4 tt[2].value = '~A BX LR' gg.setValues(tt) end end function xa1() nc_offset(getso("libil2cpp.so"),{{-476052716,4,0x1745B0C},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x1745B10},}) end function xa2() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0x153AD74},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x153AD78},}) end function xa3() nc_offset(getso("libil2cpp.so"),{{-476053504,4,0xD699B4},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0xD699B8},}) end function xa4() nc_offset(getso("libil2cpp.so"),{{1,16,0x1541860},}) end function xa5() nc_offset(getso("libil2cpp.so"),{{-476052545,4,0x17447E4},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x17447E8},}) end function xa6() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0xD89E6C},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0xD89E70},}) end function xa7() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0x18AED84},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x18AED88},}) end function xa8() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0x169C910},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x169C914},}) end function xa9() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0x16A34A0},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x16A34A4},}) end function xa10() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0x1C84A9C},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x1C84AA0},}) end function xa11() qc=gg.alert("猎杀队友","开启","关闭") if qc==1 then gg.clearResults() gg.setRanges(16384) gg.searchNumber("72,180,748;-382,907,376;-494,030,840::9", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("-382907376;-494030840", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("-476053503;-516948194", gg.TYPE_DWORD) gg.toast("猎杀队友") gg.clearResults() end if qc==2 then gg.clearResults() gg.setRanges(16384) gg.searchNumber("72,180,748;-476053503;-516948194::9", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("-476053503;-516948194", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("-382907376;-494030840", gg.TYPE_DWORD) gg.toast("猎杀队友") gg.clearResults() end end function xa12() nc_offset(getso("libil2cpp.so"),{{-476052716,4,0x1347E9C},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x1347EA0},}) end function xa13() nc_offset(getso("libil2cpp.so"),{{-476052417,4,0x1745A68},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x1745A6C},}) end function xa14() nc_offset(getso("libil2cpp.so"),{{-476053504,4,0xD7A1BC},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0xD7A1C0},}) end function xa15() qc=gg.alert("倒地丢道具","开启","关闭") if qc==1 then gg.clearResults() gg.setRanges(16384) gg.searchNumber("71,555,048;-382,907,280;-494,030,832::9", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("-382907280;-494030832", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("-476053504;-516948194", gg.TYPE_DWORD) gg.toast("倒地丢道具") gg.clearResults() end if qc==2 then gg.clearResults() gg.setRanges(16384) gg.searchNumber("71,555,048;-476053504;-516948194::9", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("-476053504;-516948194", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("-382907280;-494030832", gg.TYPE_DWORD) gg.toast("倒地丢道具") gg.clearResults() end end function xa16() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0xE23238},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0xE2323C},}) end function xa17() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0xDA4668},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0xDA466C},}) end function xa18() nc_offset(getso("libil2cpp.so"),{{-476052415,4,0x1745BA0},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x1745BA4},}) end function xa19() nc_offset(getso("libil2cpp.so"),{{-476052716,4,0x1745DF0},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x1745DF4},}) end function xa20() qc=gg.alert("秒开","开启","关闭") if qc==1 then nc_offset(getso("libil2cpp.so"),{{0,4,0x8DF5CC},}) end if qc==2 then nc_offset(getso("libil2cpp.so"),{{1509949441,4,0x8DF5CC},}) end end function xa21() nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x1d72324},}) end function xa22() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0xFB1B78},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0xFB1B7C},}) end function xa23() nc_offset(getso("libil2cpp.so"),{{-476053491,4,0xD69614},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0xD69614},}) end function xa24() nc_offset(getso("libil2cpp.so"),{{-476053491,4,0x189CAFC},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x189CB00},}) end function xa25() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0xE209EC},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0xE209F0},}) end function xa26() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0xD89CE8},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0xD89CEC},}) end function xa27() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0xCCA4E4},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0xCCA4E8},}) end function xa28() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0x14A3278},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x14A327C},}) end function xa29() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0x1388C38},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x1388C3C},}) end function xa30() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0x1347D5C},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x1347D5C},}) end function xa31() nc_offset(getso("libil2cpp.so"),{{-476052414,4,0xB868BC},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0xB868C0},}) nc_offset(getso("libil2cpp.so"),{{-476052411,4,0xD8099C},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0xD809A0},}) nc_offset(getso("libil2cpp.so"),{{-476053503,4,0x1C84A9C},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x1C84AA0},}) nc_offset(getso("libil2cpp.so"),{{-476053484,4,0xDA0C3C},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0xDA0C40},}) nc_offset(getso("libil2cpp.so"),{{-476053504,4,0xD9DEB8},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0xD9DEBC},}) nc_offset(getso("libil2cpp.so"),{{-476053484,4,0xDA0F10},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0xDA0F14},}) nc_offset(getso("libil2cpp.so"),{{0,4,0x182DE24},}) end function 逃生自调获取() KSJS = io.open('/sdcard/Download/人物加速','r'):read("*a") LSJS = io.open('/sdcard/Download/开锁进度','r'):read("*a") PSJS = io.open('/sdcard/Download/人物视角','r'):read("*a") KSFW = io.open('/sdcard/Download/范围开锁','r'):read("*a") RWTG = io.open('/sdcard/Download/人物高跳','r'):read("*a") ASJS = io.open('/sdcard/Download/全局加速','r'):read("*a") end stitle = "琼羽" 图片1 = "/sdcard/琼羽/图片/琼羽" 公告 = "请先选择游戏进程再开启功能\n否则没有效果!\n本辅助支持8.16.2如功能无用请查看当前游戏版本号" stab = { "公告","设置","基址","功能" } 琼羽.menu("", { { 琼羽.text("琼羽内部版","#FF2A3F","20sp"), 琼羽.edit("km","请输入卡密"), 琼羽.button('Login', function() local wdc3f8fbbf60f77d910c8934a2aff5e81_key=wdc3f8fbbf60f77d910c8934a2aff5e81_md5("kami="..琼羽.getedit("km").."&markcode="..miei.."&t="..os.time().."&".. wdc3f8fbbf60f77d910c8934a2aff5e81_APPKEY) --计算签名 local wdc3f8fbbf60f77d910c8934a2aff5e81_bops="kami="..琼羽.getedit("km").."&markcode="..miei.."&t="..os.time().."&sign="..wdc3f8fbbf60f77d910c8934a2aff5e81_key --需要请求的数据 if wdc3f8fbbf60f77d910c8934a2aff5e81_RC4 == "开" then wdc3f8fbbf60f77d910c8934a2aff5e81_bops="data="..wdc3f8fbbf60f77d910c8934a2aff5e81_rc4(wdc3f8fbbf60f77d910c8934a2aff5e81_bops,wdc3f8fbbf60f77d910c8934a2aff5e81_RC4_key,true) end-- 把请求数据用RC4加密 local wdc3f8fbbf60f77d910c8934a2aff5e81_HUT=wdc3f8fbbf60f77d910c8934a2aff5e81_ultra(wdc3f8fbbf60f77d910c8934a2aff5e81_Kami.."&app=".. wdc3f8fbbf60f77d910c8934a2aff5e81_APPID,wdc3f8fbbf60f77d910c8934a2aff5e81_bops.."&value="..wdc3f8fbbf60f77d910c8934a2aff5e81_Random) --请求数据 if wdc3f8fbbf60f77d910c8934a2aff5e81_RC4 == "开" then wdc3f8fbbf60f77d910c8934a2aff5e81_HUT=wdc3f8fbbf60f77d910c8934a2aff5e81_rc4(wdc3f8fbbf60f77d910c8934a2aff5e81_HUT,wdc3f8fbbf60f77d910c8934a2aff5e81_RC4_key,false) end-- 把返回的数据用RC4解密 local KM_L=wdc3f8fbbf60f77d910c8934a2aff5e81_json2lua(wdc3f8fbbf60f77d910c8934a2aff5e81_HUT) local wdc3f8fbbf60f77d910c8934a2aff5e81_code=KM_L.code--判断整数 200是成功 local wdc3f8fbbf60f77d910c8934a2aff5e81_msg=KM_L.msg--数据提示 也是错误提示 local wdc3f8fbbf60f77d910c8934a2aff5e81_check=KM_L.check--验证数据 local wdc3f8fbbf60f77d910c8934a2aff5e81_time=KM_L.time--返回时间 if wdc3f8fbbf60f77d910c8934a2aff5e81_check~= wdc3f8fbbf60f77d910c8934a2aff5e81_md5(wdc3f8fbbf60f77d910c8934a2aff5e81_time..wdc3f8fbbf60f77d910c8934a2aff5e81_APPKEY..wdc3f8fbbf60f77d910c8934a2aff5e81_Random) then gg.alert("脚本:检测到你有非法操作")--对话框 登录=false end if wdc3f8fbbf60f77d910c8934a2aff5e81_time-os.time()>30 or wdc3f8fbbf60f77d910c8934a2aff5e81_time-os.time()<-30 then gg.alert("脚本:数据过期")--对话框 登录=false end if wdc3f8fbbf60f77d910c8934a2aff5e81_code~= 641 then io.open(AMI_YDO..'/e.log','w+'):write("1")--写 琼羽.setedit("km",wdc3f8fbbf60f77d910c8934a2aff5e81_msg) else TT=gg.alert("到期时间:-----------\n"..os.date("%Y".."年".."%m".."月".."%d".."日 %H".."时".."%M".."分".."%S".."秒",wdc3f8fbbf60f77d910c8934a2aff5e81_msg.vip)) if km ~= nil then io.open(AMI_YDO..'/km','w+'):write(琼羽.getedit("km"))--写 end 登录=true end end), 琼羽.button('解绑Login', function() local wdc3f8fbbf60f77d910c8934a2aff5e81_KM_G=wdc3f8fbbf60f77d910c8934a2aff5e81_json2lua(wdc3f8fbbf60f77d910c8934a2aff5e81_KM_G(琼羽.getedit("km"))) if wdc3f8fbbf60f77d910c8934a2aff5e81_KM_G.code== 200 then gg.alert("解绑成功")--对话框 else 琼羽.setedit("km",wdc3f8fbbf60f77d910c8934a2aff5e81_KM_G.msg) end end), 琼羽.button("选择进程", function() gg.setProcessX() end, function() gg.setProcessX() end), 琼羽.text(公告,"#ff333e","14sp"), 琼羽.text("琼羽交流群:暂没有","#17FFA7","13sp"), }, { 琼羽.text("逃跑过闪+防封[32]","#FF2A3F","20sp"), 琼羽.button("选择进程", function() gg.setProcessX() end), 琼羽.button('过闪', function() gg.clearResults() gg.setRanges(gg.REGION_C_DATA | gg.REGION_C_BSS) gg.searchNumber(2,gg.TYPE_QWORD) f={} ggg2=gg.getResults(100000) table.insert(f,ggg2) for i=1,#f[1] do bb4=f[1][i].address b4=gg.getValues({{address=bb4-4,flags=4}})[1] b334=b4.value&0xFFFFFFFF b2=gg.getValues({{address=b334+0x14,flags=4}})[1].value if b2=="300" then table.insert(f,ggg2) gg.addListItems({{address = bb4-4, flags = 4 , freeze = true, name="防闪"}}) gg.clearResults() end end local t = {"libtersafe2.so", "Cd"} local tt = {0xA8} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = -1}}) toMusic('基址防闪') gg.alert("全版本全平台过闪退") end), 琼羽.button('解封设备', function() local jincheng=gg.getTargetInfo() local mingcheng=jincheng["label"] local baoming=gg.getTargetPackage() local queding if mingcheng~="..mingcheng.." then local xuanze=gg.alert("当前进程:"..mingcheng.."!\n是否解封设备(仅安卓10及以下可用)","开启","关闭") if xuanze==1 then queding=true end if xuanze==2 then HOME() return false end else queding=true end if queding==true then local File="/storage/emulated/0/Android/data/"..baoming.."/gameplugins/com.bairimeng.dmmdzz.qihoo/files/VirtualUniqueDeviceID.txt" if io.open(File)~=nil then local xieru=math.random(1,999999999) io.open(File,"w"):write(xieru) gg.toast("正在解封") local shanchu=gg.alert("解封成功") else gg.alert("解封失败") end end end), }, { 琼羽.text("逃跑基址功能[32]","#FF2A3F","20sp"), 琼羽.button('获取配置', function() pz() end), 琼羽.button('武器间隔', function() xa1() end), 琼羽.button('武器锁子', function() xa2() end), 琼羽.button('免费购物', function() xa3() end), 琼羽.button('武器后座', function() xa4() end), 琼羽.button('超级无敌', function() xa5() end), 琼羽.button('超级透视', function() xa6() end), 琼羽.button('道具皮肤', function() xa7() end), 琼羽.button('解锁角色', function() xa8() end), 琼羽.button('角色皮肤', function() xa9() end), 琼羽.button('强制开门', function() xa10() end), 琼羽.button('猎杀队友', function() xa11() end),琼羽.button('枪枪暴击', function() xa12() end), 琼羽.button('超级移速', function() xa13() end), 琼羽.button('超级锁金', function() xa14() end), 琼羽.button('倒地购物[失效]', function() xa15() end), 琼羽.button('道具冷却', function() xa16() end), 琼羽.button('解锁模式', function() xa17() end), 琼羽.button('超级高跳', function() xa18() end), 琼羽.button('超级秒杀', function() xa19() end), 琼羽.button('秒开', function() xa20() end), 琼羽.button('移动开物', function() xa21() end), 琼羽.button('阻挡箱血量', function() xa22() end), 琼羽.button('满级效果', function() xa23() end), 琼羽.button('道具满级', function() xa24() end), 琼羽.button('倒地购物[对局]', function() xa25() end), 琼羽.button('丝血不死[对局]', function() xa26() end), 琼羽.button('定住逃跑(虚拟)', function() xa27() end), 琼羽.button('定住追捕(虚拟)', function() xa28() end), 琼羽.button('锁定变身/变身攻击', function() xa29() end), 琼羽.button('防武器攻击', function() xa30() end), 琼羽.button('秒赢', function() xa31() end), --[[ ]] },{ 琼羽.text("逃跑功能[32]","#FF2A3F","20sp"), 琼羽.button("跳跃开物", function() xa21() toMusic('开启成功') end), 琼羽.button("完美开锁", function() qmnb = { {["memory"] = 32}, {["name"] = "完美开锁"}, {["value"] = 59.0, ["type"] = 16}, {["lv"] = 16.0, ["offset"] = 4, ["type"] = 16}, } qmxg = { {["value"] = 1000,["offset"] = 4, ["type"] = 16}, } xqmnb(qmnb) toMusic('开启成功') end), 琼羽.button("开锁弹窗", function() qmnb = { {["memory"] = 32}, {["name"] = "0概率"}, {["value"] = 59.0, ["type"] = 16}, {["lv"] = 2.0,["offset"] =20, ["type"] = 16}, } qmxg = { {["value"] = 9999,["offset"] =20, ["type"] = 16}, } xqmnb(qmnb) toMusic('开启成功') end), 琼羽.button("全图亮透", function() qmnb = { {["memory"] = 32}, {["name"] = "全图亮透"}, {["value"] = 8.0, ["type"]=16}, {["lv"] = 4,["offset"]=-4, ["type"]=4}, {["lv"] = 1,["offset"]=8, ["type"]=4}, {["lv"] = 8,["offset"]=12, ["type"]=4}, } qmxg = { {["value"] = 1, ["offset"] = 46, ["type"] = 4, ['freeze'] = true}, } xqmnb(qmnb) toMusic('开启成功') end), 琼羽.button("无视夹子", function() fastsearch({ {25.0, 16, 32}, {1.0, -4, 16}, {0.5, -8, 16}, {2.5, -12, 16} }, { {0.0, -4, 16, false}, },"无视夹子") toMusic('开启成功') end), }}) bloc = luajava.getBlock() bloc('join')