if tonumber(device.width)==nil then
dwidth=1340
dheight=2300
else
dwidth=device.width
dheight=device.height
end
function getTimeStamp(t)
local str = os.date("%m/%d-%H:%M:%S",t)
return str
end
sviews={} for i=1,15 do sviews['第'..i..'页']={} end
function particle(co1,co2,cor)
local webView = luajava.webView(function(webView)
webView:loadData([[
]], 'text/html', 'UTF-8')
webView:setBackgroundColor(0x0)
end)
return webView
end
parti=particle(
"rgba(0,0,0,0.1)",
"rgba(0,0,0,1)",
"#909090")
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
colorvs={}
changan = {} huiz = function() end
window = context:getSystemService("window") -- 获取窗口管理器
function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end
function checkimg(tmp,ii)
if panduan("/sdcard/长安/图片/"..tmp) ~= true then
gg.toast("正在下载资源"..ii.."/"..#ckimg.."\n请耐心等待")
luajava.download("https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/"..tmp,"/sdcard/长安/图片/"..tmp)
else
if file.length("/sdcard/长安/图片/"..tmp) <= 1 then
gg.toast("正在下载资源"..ii.."/"..#ckimg.."\n请耐心等待")
luajava.download("https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/"..tmp,"/sdcard/长安/图片/"..tmp)
end
end
if panduan("/sdcard/长安/图片/"..tmp) ~= true then
gg.toast("正在下载资源"..ii.."/"..#ckimg.."\n请耐心等待")
luajava.download("https://rl-1303126286.cos.ap-beijing-fsi.myqcloud.com/"..tmp,"/sdcard/长安/图片/"..tmp)
else
if file.length("/sdcard/长安/图片/"..tmp) <= 1 then
gg.toast("正在下载资源"..ii.."/"..#ckimg.."\n请耐心等待")
luajava.download("https://rl-1303126286.cos.ap-beijing-fsi.myqcloud.com/"..tmp,"/sdcard/长安/图片/"..tmp)
end
end
end
ckimg = {
"heir",
"hei_right",
"heir",
"heic",
'heis','heisuo',
'quarkcheckoff','quarkcheckon',
'sscoR','Shimmer2.dex'
}
for i = 1,#ckimg do
jindu = i
checkimg(ckimg[i],i)
gg.toast("正在开启")
end
shimmer=dex.loadfile('/sdcard/长安/图片/Shimmer2.dex')
import "com.romainpiel.shimmer.Shimmer"
import "com.romainpiel.shimmer.ShimmerTextView"
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
isLocked=false
inlock=getRes("heisuo")
uiunlock=getRes("heis")
function uiLock()
vibra:vibrate(15)
if isLocked==false then
isLocked=true
luajava.newThread(function()
gg.toast("UI缩放已锁定")
end):start()
lockui:setImageDrawable(inlock)
else
isLocked=false
luajava.newThread(function()
gg.toast("UI缩放已解锁")
end):start()
lockui:setImageDrawable(uiunlock)
end
end
YoYoImpl = luajava.getYoYoImpl()
vibra = context:getSystemService(Context.VIBRATOR_SERVICE)
function getLayoutParams2()
LayoutParams2 = WindowManager.LayoutParams
layoutParams2 = luajava.new(LayoutParams2)
if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式
layoutParams2.type = LayoutParams2.TYPE_APPLICATION_OVERLAY
else
layoutParams2.type = LayoutParams2.TYPE_PHONE
end
layoutParams2.format = PixelFormat.RGBA_8888 -- 设置背景
layoutParams2.flags = LayoutParams2.FLAG_NOT_TOUCH_MODAL -- 焦点设置Finish
layoutParams2.gravity = Gravity.CENTER -- 重力设置
layoutParams2.width = LayoutParams2.MATCH_PARENT -- 布局宽度
layoutParams2.height = LayoutParams2.MATCH_PARENT -- 布局高度
return layoutParams2
end
function changan.line()
return luajava.loadlayout ( {
LinearLayout ,
layout_width = 'fill_parent' ,
layout_height = "3dp" ,
background = pe0,
})
end
function getShape8()
jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(10)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors({
0xff000000,0xddffffff,
})
jianbians:setOrientation(GradientDrawable.Orientation.BL_TR)
return jianbians
end
searchlist={}
pe0 = getShape8()
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
hanshu = function(v, event)
local Action = event:getAction()
if Action == MotionEvent.ACTION_DOWN then
isMove = false
RawX = event:getRawX()
RawY = event:getRawY()
x = mainLayoutParams.x
y = mainLayoutParams.y
elseif Action == MotionEvent.ACTION_MOVE then
isMove = true
mainLayoutParams.x = tonumber(x) + (event:getRawX() - RawX)
if mainLayoutParams.x<=0 then
mainLayoutParams.x=0
end
mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY)
window:updateViewLayout(floatWindow, mainLayoutParams)
elseif Action == MotionEvent.ACTION_UP then
mainLayoutParams.x = tonumber(x) + (event:getRawX() - RawX)
mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY)
window:updateViewLayout(floatWindow, mainLayoutParams)
end
end
function getCorner(gtvb1,gtvb3,gtvb4,gtvb5,g1,g2,g3,g4)
if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end
local jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(gtvb3)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(gtvb1)
jianbians:setStroke(gtvb4,gtvb5)--边框宽度和颜色
jianbians:setCornerRadii({g1,g1,g2,g2,g3,g3,g4,g4})
return jianbians
end
function getVerticalBG(gtvb1,gtvb3,gtvb4,gtvb5)
if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end
local jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(gtvb3)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(gtvb1)
jianbians:setStroke(gtvb4,gtvb5)--边框宽度和颜色
return jianbians
end
mainLayoutParams = getLayoutParams()
import("android.media.AudioManager")
audi = context:getSystemService("audio")
audiotype = {
AudioManager.STREAM_ALARM, --手机闹铃的声音
AudioManager.STREAM_MUSIC, --手机音乐的声音
AudioManager.STREAM_NOTIFICATION, --系统提示的通知
AudioManager.STREAM_RING, --电话铃声的声音
AudioManager.STREAM_SYSTEM, --手机系统的声音
AudioManager.STREAM_VOICE_CALL, --语音电话的声音
AudioManager.STREAM_DTMF, --DTMF音调的声音
--AudioManager.STREAM_BLUETOOTH_SCO,
}
yinl = {}
for i = 1,#audiotype do
yinl[i] = {}
yinl[i].type = audiotype[i]
yinl[i].min = audi:getStreamMinVolume(audiotype[i])
yinl[i].max = audi:getStreamMaxVolume(audiotype[i])
yinl[i].now = audi:getStreamVolume(audiotype[i])
end
yltype = 0
function jianting3(func)
yinln = {}
for i = 1,#audiotype do
yinln[i] = {}
yinln[i].type = audiotype[i]
yinln[i].now = audi:getStreamVolume(audiotype[i])
if yinln[i].now > yinl[i].now then
yinl[i].now = yinln[i].now
if yltype == 1 then
yltype = 0
func()
end
elseif yinln[i].now < yinl[i].now then
yinl[i].now = yinln[i].now
if yltype == 0 then
yltype = 1
func()
end
end
end
end
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
gg.setVisible(false)
function guid()
seed = {
'e','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'
}
tb = {}
for i = 1,32 do
table.insert(tb,seed[math.random(1,16)])
end
sid = table.concat(tb)
return string.format('%s%s%s',
string.sub(sid,1,8),
string.sub(sid,10,12),
string.sub(sid,21,22))
end
local ui = require('ui')
suofang = function(v, event)
if isLocked then hanshu(v,event) return 0 end
local Action = event:getAction()
if Action == MotionEvent.ACTION_DOWN then
isMove = false
RawX = event:getRawX()
RawY = event:getRawY()
hx = mainLayoutParams.height
hy = mainLayoutParams.width
if hx == 0 or hx==-2 then hx = 810 hy = 1150 end
elseif Action == MotionEvent.ACTION_MOVE then
isMove = true
mubx = tonumber(hx) + (event:getRawY() - RawY)
if mubx >= 250 and mubx <= 11100 then
mainLayoutParams.height = mubx
end
muby = tonumber(hy) + (event:getRawX() - RawX)
if muby >= 250 and muby <= 24500 then
mainLayoutParams.width = muby
end
if muby<=250 and mubx<=250 then muby=250 mubx=250
--隐藏()
return 0 end
window:updateViewLayout(floatWindow, mainLayoutParams)
end
end
changan.menu = function(sviews)
if isswitch then
return false
end
isswitch = true
local layout = {
'ui.ViewPager',
layout_height ="match_parent",
layout_width='match_parent',
focusable="false",
focusableInTouchMode="false",
}
cebian={
LinearLayout,
layout_height="50dp",
layout_width="wrap_content",
orientation="horizontal",
gravity="center_horizontal",
}
slcta={} slctb={}
for i=1,#stab do
slcta[i]=getVerticalBG({0xff161616,0xff161616},15)
slctb[i]=getVerticalBG({0xffffffff,0xffffffff},15)
_ENV["jm"..i]=luajava.loadlayout({
LinearLayout,
layout_height="50dp",
layout_width="58.4dp",
gravity="center",
orientation="vertical",
onClick=function() 切换(i) end,
{TextView,
id="jm"..i.."t",
text=stab[i],
textSize="11sp",
textColor="#161616",
background=slctb[i],
padding={"10dp","6dp","10dp","6dp"},
}
})
cebian[#cebian+1]=_ENV["jm"..i]
tmp1={
LinearLayout,
layout_height="wrap_content",
layout_width="match_parent",
orientation="vertical",
}
tmp2={
LinearLayout,
layout_height="wrap_content",
layout_width="match_parent",
orientation="vertical",
}
for h=1,#sviews[i] do
local t=sviews[i][h]
if type(t)=='userdata' then
tmp1[#tmp1 +1]=t
else
tmp1[#tmp1+1]=t.view
end
end
tmp1={
LinearLayout,
layout_height="match_parent",
layout_width="match_parent",
layout_weight=1,
orientation="vertical",
{ScrollView,
layout_height='match_parent',
layout_width='match_parent',
tmp1
}
}
_ENV["layout"..i]={
LinearLayout,
--orientation="vertical",
layout_height="match_parent",
layout_width="match_parent",
orientation='horizontal',
{LinearLayout,
layout_height="match_parent",
layout_width="match_parent",
layout_weight=1,
padding={'8dp','10dp','8dp','10dp'},
background=getCorner({0x00ffffff,0x00ffffff},20,0,0xaa161616,20,0,0,20),
tmp1},
--onTouch=Gundong,
padding={"8dp","3dp","8dp","3dp"},
}
layout[#layout + 1] =_ENV["layout"..i]
end
当前ui=1
jm1t:setTextColor(0xffffffff)
jm1t:setBackground(slcta[1])
ViewPager = ui.ViewPager(layout)
luajava.setInterface(ViewPager, 'addOnPageChangeListener',
{onPageSelected=function(view)
view=tonumber(string.sub(view,1,1))
for i=1,#stab do
_ENV["jm"..i .."t"]:setTextColor(0xff161616)
_ENV["jm"..i .."t"]:setBackground(slctb[i])
end
当前ui=view+1
--滚(当前ui)
_ENV["jm"..view+1 .."t"]:setTextColor(0xffffffff)
_ENV["jm"..view+1 .."t"]:setBackground(slcta[view+1])
end})
_ENV['tosearch']='tosearch'
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="fill_parent",
layout_height="35dp",
background=getCorner({0xffffffff,0xffffffff},15,0,0xff232323,20,20,0,0),
onClick=function() end,
onTouch=hanshu,
{LinearLayout,
layout_width="35dp",
layout_height="match_parent",
gravity="center",
{
ImageView,
padding = "5dp",
id="lockui",
src = getRes("heis"),
background=getVerticalBG({0xffE6E6E6,0xffE6E6E6},90),
layout_width = "20dp",
layout_height = "20dp",
layout_marginRight = "5dp",
onClick = uiLock,
onTouch = hanshu,
}
},
{LinearLayout,
layout_width="wrap_content",
layout_height="match_parent",
gravity="center",
{
LinearLayout,
id='cvv',
layout_width='70dp',
layout_height='match_parent',
gravity="center",
}
},
{LinearLayout,
layout_width="fill_parent",
layout_marginLeft='-80dp',
layout_weight=1,
layout_height="match_parent",
gravity="center",
{LinearLayout,
layout_height="match_parent",
layout_width="80dp",
background=topSelect(),
onClick=function() end,
gravity="center",
onTouch=hanshu,
{LinearLayout,
layout_height="5dp",
layout_width="60dp",
id='tops',
background=getVerticalBG({颜色表[1][1],颜色表[1][2]},20)
}
}
},
{LinearLayout,
layout_width="35dp",
layout_height="match_parent",
gravity="center",
{
ImageView,
padding = "5dp",
src = getRes("heix"),
background=getVerticalBG({0xffE6E6E6,0xffE6E6E6},90),
layout_width = "20dp",
layout_height = "20dp",
layout_marginRight = "5dp",
onClick = 隐藏,
onTouch = hanshu,
}
}
})
stit=luajava.loadlayout({ShimmerTextView,
textSize="18sp",
gravity='center_horizontal',
layout_width='match_parent',
shimmerEnable='true',
reflectionColor="#FFDD60";
textColor="#151515",
text=左上角标题,
})
ckou={
FrameLayout,
layout_height="match_parent",
layout_width="match_parent",
orientation="vertical",
id='chuangkou',
background=getVerticalBG({0xffeeeeee,0xffeeeeee},15,0,0xff01CBFF,25,25,25,25),
{LinearLayout,
id="canv",
layout_height="match_parent",
layout_width="match_parent",
gravity="bottom",
orientation='vertical',
{LinearLayout,
layout_height='150dp',
}
},
topbar,
{LinearLayout,--top
layout_marginTop="40dp",
orientation='vertical',
{LinearLayout,
layout_width='match_parent',
layout_height='50dp',
padding='4dp',
{LinearLayout,
layout_height='match_parent',
layout_width='match_parent',
background=getHorizontalBG({0xffffffff,0xffffffff},10),
gravity='center_vertical',
{LinearLayout,
layout_height="match_parent",
layout_width="100dp",
orientation="vertical",
gravity="center",
onClick=隐藏,
onTouch=hanshu,
{LinearLayout,
onClick=function() end,
onTouch=hanshu,
layout_height="fill_parent",
layout_width="fill_parent",
gravity="center",
stit
}
},
{HorizontalScrollView,
layout_height='match_parent',
layout_width='match_parent',
layout_weight=1,
padding='4dp',
{LinearLayout,
layout_height='match_parent',
layout_width='match_parent',
background=getVerticalBG({0x44ffffff,0x44ffffff},10),
padding='3dp',
tiaose()
},
},
}
},
{LinearLayout,layout_height='match_parent',layout_width='match_parent',layout_weight=1,ViewPager,},
{HorizontalScrollView,
layout_width='match_parent',
layout_height='wrap_content',
background=getCorner({0x11232323,0x11232323},10,0,0xff0097FF,0,0,20,20),
{LinearLayout,
layout_width='wrap_content',
layout_height='wrap_content',
padding={'0dp','0dp','20dp','0dp'},
cebian}}},
}
ckou = {
LinearLayout,
id = "chuangk",
layout_width = "match_parent",
layout_height = "match_parent",
orientation = "vertical",
ckou
}
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",
ckou,
{
ImageView,
id = "control2",
background = 获取图片(悬浮窗图标),
layout_width = "40dp",
layout_height = "40dp",
onTouch = hanshu,
onClick = 隐藏,
},{LinearLayout,
id="smallc",
visibility="gone",
onClick=显示2,
onTouch=hanshu,
layout_height="56dp",
layout_width="20dp",
gravity="center",
background=getCorner({0x88161616,0x88161616},12,0,0xff232323,0,35,35,0),
},{FrameLayout,
id='reme',
layout_height='match_parent',
layout_width='match_parent',
elevation='3dp',
{
ImageView,
id="sf",
padding = "2dp",
src = getRes("sscoR"),
layout_width = "30dp",
layout_height = "30dp",
layout_marginRight = "0dp",
layout_marginBottom = "0dp",
layout_gravity = "right|bottom",
onClick = function() end,
onTouch = suofang,
}}
}
local function invoke()
local ok
local RawX, RawY, x, y
mainLayoutParams = getLayoutParams()
mainLayoutParams.x = 10
mainLayoutParams.y = dheight/4
param2=getLayoutParams2()
floatWindow = luajava.loadlayout(floatWindow)
local function invoke2()
window:addView(floatWindow, mainLayoutParams)
canv:addView(parti)
end
if loadingBox~=nil then
loadingBox['关闭']()
end
local runnable = luajava.getRunnable(invoke2)
local handler = luajava.getHandler()
handler:post(runnable)
local isMove
end
invoke(swib1,swib2)
shimmer = Shimmer();
luajava.runUiThread(function()
shimmer:setDuration(2000)
shimmer:setStartDelay(50)
shimmer:start(stit)
end)
gg.setVisible(false)
隐藏()
setOnExitListener(function()
luajava.post(function()
window:removeView(floatWindow)
end)
tuichu=1
luajava.setFloatingWindowHide(false)
end)
luajava.setFloatingWindowHide(true)
qhkai = 0
qiehuan = function()
if qhkai == 0 then
qhkai = 1
draw.remove()
luajava.runUiThread(function()
changan.controlSmall(floatWindow,400)
end)
gg.sleep(400)
luajava.runUiThread(function()
floatWindow:setVisibility(View.GONE)
end)
else
qhkai = 0
huiz()
luajava.runUiThread(function() floatWindow:setVisibility(View.VISIBLE) end)
luajava.runUiThread(function()
changan.controlBig(floatWindow,400)
end)
end
end
huiz()
while true do
if tuichu == 1 then break end
jianting3(qiehuan)
gg.sleep(300)
end
luajava.setFloatingWindowHide(false)
end
function 滚(x)
luajava.runUiThread(function()
local cbsc=luajava.getIdView("cbscro")
local targetLeft = _ENV["jm"..x]:getLeft()/2
cbsc:smoothScrollTo(targetLeft, 0);
end)
end
function 切换(x)
窗口=false
x=x-1
luajava.runUiThread(function()
当前ui=x
ViewPager:setCurrentItem(x)
end)
end
显示=0
function 隐藏()
luajava.runUiThread(function()
if 显示 == 0 then
control2:setVisibility(View.GONE)
显示 = 1
YoYoImpl:with("ZoomIn"):duration(300):playOn(floatWindow)
canv:setVisibility(View.VISIBLE)
mainLayoutParams.height = mubx
mainLayoutParams.width = muby
mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
window : updateViewLayout (floatWindow , mainLayoutParams)
reme:setVisibility(View.VISIBLE)
ckou:setVisibility(View.VISIBLE)
else
canv:setVisibility(View.GONE)
if tuichuing then return 0 end
tuichuing=true
luajava.newThread(function()
luajava.runUiThread(function()
YoYoImpl:with("FadeOut"):duration(200):playOn(floatWindow)
end)
gg.sleep(200)
luajava.runUiThread(function()
ckou:setVisibility(View.GONE)
reme:setVisibility(View.GONE)
YoYoImpl:with("FadeIn"):duration(200):playOn(floatWindow)
mainLayoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度
mainLayoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度
control2:setVisibility(View.VISIBLE) 显示 = 0
mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE
window : updateViewLayout (floatWindow , mainLayoutParams)
end)
tuichuing=false
end):start()
end
end)
end
switches = {}
function 开关3(name,func1,func2,nid)
local sname = nid
local localname=name
name = name..guid()
_ENV[name] = "关"
if func1 == nil then func1 = "" end
if func2 == nil then func2 = "" end
if type(func1) == "function" then
local outfunc=function()
namers = _ENV[name]
if namers ~= "开" then
vibra:vibrate(9)
luajava.runUiThread(function()
luajava.getIdValue(nid.."k"):setVisibility(View.GONE)
YoYoImpl:with("ZoomInLeft"):duration(600):playOn(switches["2s"..sname])
luajava.getIdValue(nid.."g"):setVisibility(View.VISIBLE)
luajava.getIdValue(nid):setBackground(checkbg)
end)
_ENV[name] = "开"
colorvs[nid]={true,"switch"}
pcall(func1)
else
vibra:vibrate(9)
luajava.runUiThread(function()
luajava.getIdValue(nid.."g"):setVisibility(View.GONE)
YoYoImpl:with("ZoomInRight"):duration(600):playOn(switches["1s"..sname])
luajava.getIdValue(nid.."k"):setVisibility(View.VISIBLE)
luajava.getIdValue(nid):setBackground(checkbga)
end)
colorvs[nid]={false,"switch"}
_ENV[name] = "关"
pcall(func2)
end
end
return outfunc
end
end
function getShape(tmp0,tmp1,tmp2,tmp3)
jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(tmp0)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(tmp1)
jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
jianbians:setStroke(7,tmp3)--边框宽度和颜色
return jianbians
end
function getShape2(tmp0,tmp1,tmp2,tmp3)
jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(tmp0)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(tmp1)
jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
jianbians:setStroke(26,tmp3)--边框宽度和颜色
return jianbians
end
function changan.switch(name,func1,func2,miaoshu)
if not checkbg then
checkbg = getShape2(
45,
{控件颜色[1],控件颜色[2]},
4,控件颜色[1])
checkbga = getShape2(
45,
{
0xffaaaaaa,0xffaaaaaa
},
4,0xffaaaaaa)
switchbg1 = getShape(
45,
{
0xffffffff,0xffffffff
},
4,0xffffffff)
switchbg2 = luajava.loadlayout {
GradientDrawable ,
color = "#ffffff" ,
cornerRadius = 360
}
end
nid = name..guid()
local func = 开关3(name,func1,func2,nid)
if not name then name = "未设置" end
switches["1s"..nid] = luajava.loadlayout {
FrameLayout,
layout_width = '40dp',
layout_height = '20dp',
gravity = "center_vertical",
padding = {
"1dp","0dp","1dp","0dp"
},
{
LinearLayout,
layout_gravity = "left|center_vertical",
id = luajava.newId(nid.."k"),
background = switchbg1,
onClick = function() luajava.newThread(function() func() end):start() end,
layout_width = '17dp',
layout_height = '17dp',
},
}
switches["2s"..nid] = luajava.loadlayout {
FrameLayout,
onClick = function() luajava.newThread(function() func() end):start() end,
layout_width = '40dp',
layout_height = '20dp',
gravity = "center_vertical",
padding = {
"1dp","0dp","1dp","0dp"
}
, {
LinearLayout,
visibility = "gone",
layout_gravity = "right|center_vertical",
id = luajava.newId(nid.."g"),
background = switchbg2,
onClick = function() luajava.newThread(function() func() end):start() end,
layout_width = '17dp',
layout_height = '17dp',
}
}
rest = luajava.loadlayout({
LinearLayout,
elevation = "5dp",
layout_width = 'fill_parent',
layout_height = "48dp",
gravity = "center_vertical",
{
LinearLayout,
layout_width = 'fill_parent',
layout_height = "40dp",
gravity = "center_vertical",
background = luajava.loadlayout {
GradientDrawable ,
color = 0xffffffff ,
cornerRadius = 30
} ,padding = {
"0dp","0dp","6dp","0dp"
},
{
TextView,
gravity = "top",
text = name,
textColor = "#000000",
textSize = "13sp",
layout_weight = 1,
layout_width = '80dp',
layout_marginLeft = "10dp",
layout_marginRight = "20dp",
},
{
TextView,
gravity = "center",
layout_height = "match_parent",
text = miaoshu,
textSize = "11sp",
layout_width = "wrap_content",
layout_marginLeft = "-50dp",
layout_weight = 1,
textColor = "#A5A5A5",
},
{
FrameLayout,
id=luajava.newId(nid),
background = checkbga,
elevation = "1dp",
onClick = function() luajava.newThread(function() func() end):start() end,
layout_width = 'wrap_content',
layout_height = 'wrap_content',
gravity = "left",
padding="1dp",
switches["1s"..nid],switches["2s"..nid]
}}
})
return {view=rest,
type='switch',
name=name,
func1=func1,func2=func2
}
end
switchs={}
tcheck=10
function changan.intcard(name,name2,func1,func2,ii,gid)
if tcheck==56 then
tcheck=1
else
tcheck=tcheck+1
end
tocheck=spics[tcheck]
local func = 开关6(name,func1,func2,gid..ii)
if not name then name = "未设置" end
if not name2 then name2="" end
switchs[gid..ii] = {
LinearLayout,
id = luajava.newId(gid..ii),
layout_width = 'wrap_content',
layout_height = "wrap_content",
layout_marginTop="5dp",
layout_marginBottom="5dp",
layout_marginLeft="3dp",
layout_marginRight="3dp",
{
LinearLayout,
padding="3dp",
onClick = function() luajava.newThread(function() func() end):start() end,
layout_width = ( (tonumber(string.replace(界面宽度,"dp","")) -30)/2).."dp",
layout_height = "wrap_content",
gravity = "left",
background=getVerticalBG({0xaa1a1b1d,0xaa1a1b1d},10),
orientation="vertical",
padding="5dp",
--background=getVerticalBG({0xffFFFDF2,0xddffffff,0xffFFFDF2},15,8,0xffFFDA71),
{
ImageView,
id = luajava.newId(gid..ii.."p"),
src = getRes(tocheck),
gravity="left",
layout_width = '30dp',
layout_height = '30dp',
padding = "3dp",
},{
TextView,
id=luajava.newId(gid..ii.."t"),
gravity = "left",
text = name,
textColor="#ffffff",
textSize = "12sp",
layout_width = 'match_parent',
layout_weight=1,
},{
TextView,
id=luajava.newId(gid..ii.."t2"),
gravity = "left",
text = name2,
textColor="#aaaaaa",
textSize = "9sp",
layout_width = 'match_parent',
layout_weight=1,
}
}
}
colorvs[gid..ii.."p"]={false,"img"}
colorvs[gid..ii.."t"]={false,"txt"}
return {view=switchs[gid..ii],
type='card',
name=name,
func1=func1,
func2=func2,
}
end
shous={}
function 收起ck(gid,ii)
if shous[gid] ==false then
shous[gid]=true
luajava.getIdView(gid..ii.."p"):setRotation(0)
for i=1,ii-1 do
if i>=9 then
luajava.post(function()
luajava.getIdView(gid):removeView(luajava.getIdView(gid..i))
end)
end
end
else
shous[gid]=false
luajava.post(function()
luajava.getIdView(gid):removeView(luajava.getIdView(gid..ii))
for i=1,ii-1 do
if i>=9 then
luajava.getIdView(gid):addView(luajava.getIdView(gid..i))
end
end
luajava.getIdView(gid):addView(luajava.getIdView(gid..ii))
end)
luajava.getIdView(gid..ii.."p"):setRotation(180)
end
end
function 开关6(name,func1,func2,nid)
local sname = nid
local localname=name
name = name..guid()
_ENV[name] = "关"
if func1 == nil then func1 = "" end
if func2 == nil then func2 = "" end
if type(func1) == "function" then
return function()
namers = _ENV[name]
if namers ~= "开" then
vibra:vibrate(9)
luajava.runUiThread(function()
luajava.getIdValue(nid.."t"):setTextColor(控件颜色[1])
luajava.getIdValue(nid.."t2"):setTextColor(控件颜色[1])
luajava.getIdValue(nid.."p"):setColorFilter(控件颜色[1])
colorvs[nid.."p"]={true,"img"}
colorvs[nid.."t"]={true,"txt"}
colorvs[nid.."t2"]={true,"txt"}
--changan.controlWater(switchs[nid],100)
end)
_ENV[name] = "开"
pcall(func1)
else
vibra:vibrate(9)
luajava.runUiThread(function()
luajava.getIdValue(nid.."t"):setTextColor(0xffffffff)
luajava.getIdValue(nid.."p"):setColorFilter(0xffd7d7d7)
luajava.getIdValue(nid.."t2"):setTextColor(0xffaaaaaa)
colorvs[nid.."p"]={false,"img"}
colorvs[nid.."t"]={false,"txt"}
colorvs[nid.."t2"]={false,"txt"}
--changan.controlWater(switchs[nid],100)
end)
_ENV[name] = "关"
pcall(func2)
end
end
end
end
function hexTo255(rgbHex)
local rgbHex = string.format("%x", rgbHex)
local red = tonumber(rgbHex:sub(3, 4), 16)
local green = tonumber(rgbHex:sub(5, 6), 16)
local blue = tonumber(rgbHex:sub(7, 8), 16)
return {red,green,blue}
end
function changeColor(co)
控件颜色=co
luajava.runUiThread(function()
luajava.post(function() canv:removeView(parti) end)
parti:destroy()
parti=nil
local t=hexTo255(控件颜色[1])
local a,b,c=t[1],t[2],t[3]
parti=particle(
"rgba("..a..","..b..","..c..",0.1)",
"rgba("..a..","..b..","..c..",1)",
"#"..string.sub(string.format("%x", 控件颜色[2]),3,-1))
luajava.post(function() canv:addView(parti) end)
tpbbg=getHorizontalBG({控件颜色[1],控件颜色[2]},20)
tops:setBackground(tpbbg)
--luajava.getIdView("topb1"):setBackground(tpbbg)
--luajava.getIdView("topb2"):setBackground(tpbbg)
if _ENV["jm"..当前ui.."t"]~=nil then
_ENV["jm"..当前ui.."t"]:setTextColor(0xffffffff)
for i=1,#stab do
slcta[i]=getVerticalBG({控件颜色[1],控件颜色[2]},15)
end
_ENV["jm"..当前ui.."t"]:setBackground(slcta[当前ui])
--_ENV["jm"..当前ui.."p"]:setColorFilter(控件颜色)
end
--luajava.getIdView("backv"):setColorFilter(控件颜色[1])
checkbg = getShape2(45,{控件颜色[1],控件颜色[2]},4,控件颜色[1])
radon=getVerticalBG({0xffffffff,0xffffffff},360,20,控件颜色[1])
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(控件颜色[1])
elseif v[2]=="txt" then
luajava.getIdValue(k):setTextColor(控件颜色[1])
elseif v[2]=="img" then
luajava.getIdValue(k):setColorFilter(控件颜色[1])
elseif v[2]=="rad" then
luajava.getIdValue(k):setBackground(radon)
elseif v[2]=="seek" then
luajava.getIdView(k):setProgressDrawable( getVerticalBG({控件颜色[1],控件颜色[2]},45))
end
end
if v[2]=="check" then
swits[k][1]=getVerticalBG({控件颜色[1],控件颜色[2]},15,4,0xff232323)
swits[k][2]=getVerticalBG({控件颜色[1],控件颜色[2]},15,4,0xff232323)
if v[1]==true then
luajava.getIdValue(k.."g"):setBackground(swits[k][1])
else
luajava.getIdValue(k.."k"):setBackground(swits[k][2])
end
end
end
end)
end
currentIndex = 1
function 预置颜色()
local currentItem = 颜色表[currentIndex]
changeColor(currentItem)
currentIndex = currentIndex + 1
if currentIndex > #颜色表 then
currentIndex = 1
end
end
ckbg=getVerticalBG({0xff3A3A3C,0xff3A3A3C},360)
nowbg=1
swits={}
checkbg1 = getRes("quarkcheckoff")
checkbg2 = getRes("quarkcheckon")
switchs={}
function changan.intcheck(name,func1,func2)
nid = name..guid()
local func = 开关5(name,func1,func2,nid)
if not name then name = "未设置" end
switchs[nid] = {
LinearLayout,
layout_width = 'match_parent',
layout_weight=1,
layout_height = "wrap_content",
layout_marginTop = "1dp",
layout_marginBottom = "1dp",
padding = "1dp",
{
LinearLayout,
padding="3dp",
onClick = function() luajava.newThread(function() func() end):start() end,
layout_width = 'fill_parent',
layout_height = "wrap_content",
gravity = "center_vertical",
--background=getVerticalBG({0xffFFFDF2,0xddffffff,0xffFFFDF2},15,8,0xffFFDA71),
{
FrameLayout,
id = luajava.newId(nid),
background = checkbg1,
layout_width = '32dp',
layout_height = '32dp',
padding = "0dp",
},{
TextView,
id=luajava.newId(nid.."t"),
gravity = "left",
text = name,
textColor='#000000',
textSize = "14sp",
--layout_marginLeft="8dp",
layout_width = 'match_parent',
layout_weight=1,
},
}
}
return switchs[nid]
end
function 开关5(name,func1,func2,nid)
local sname = nid
local localname=name
name = name..guid()
_ENV[name] = "关"
if func1 == nil then func1 = "" end
if func2 == nil then func2 = "" end
if type(func1) == "function" then
return function()
namers = _ENV[name]
if namers ~= "开" then
vibra:vibrate(9)
luajava.runUiThread(function()
luajava.getIdValue(nid):setBackground(checkbg2)
luajava.getIdValue(nid.."t"):setTextColor(switch颜色)
--changan.controlWater(switchs[nid],300)
end)
_ENV[name] = "开"
pcall(func1)
else
vibra:vibrate(9)
luajava.runUiThread(function()
luajava.getIdValue(nid):setBackground(checkbg1)
luajava.getIdValue(nid.."t"):setTextColor(0xff232323)
--changan.controlWater(switchs[nid],300)
end)
_ENV[name] = "关"
pcall(func2)
end
end
end
end
function changan.check(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.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
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
界面宽度="349dp"
界面长度="349dp"
function visi (tid , ttid)
vibra:vibrate(4)
local tview = luajava.getIdValue (tid)
local ttview = luajava.getIdValue (ttid)
if not tview then
return 0
end
if tonumber (tostring (tview : getVisibility ())) == 8.0 then
tview : setVisibility (View.VISIBLE)
YoYoImpl:with("FadeIn"):duration(200):playOn(boxes[tid])
changan.controlRotation9(boxpic[tid],0,90)
boxpic[tid]:setColorFilter(控件颜色[1])
colorvs[tid]={true,"box"}
else
tview : setVisibility (View.GONE)
changan.controlWater (_ENV [tid.."6"] , 200)
changan.controlRotation9(boxpic[tid],90,0)
boxpic[tid]:setColorFilter(nil)
colorvs[tid]={false,"box"}
end
end
boxes = {} boxpic = {}
function changan.box (views)
local tid = "box"..guid ()
local vs={}
boxpic[tid] = luajava.loadlayout {
ImageView ,
src = getRes("hei_right"),
layout_width = "24dp" ,
layout_height = "24dp" ,
}
local ttid = tid.."6"
local t1id = guid ()
firadio = {
LinearLayout ,
layout_width = 'fill_parent' ,
layout_height = "wrap_content" ,
layout_marginTop = "2dp" ,
layout_marginBottom = "2dp" ,
orientation = "vertical" ,
}
if type (views [1]) == "string" or type (views [1]) == "number" then
firadio [# firadio + 1] = {
LinearLayout ,
layout_width = 'fill_parent' ,
layout_height = "40dp" ,
gravity = "center_vertical" ,
layout_marginTop = "2dp" ,
layout_marginBottom = "4dp" ,
onClick = function ()
visi (tid , ttid)
end
,
background = getButtonBG(),
{
TextView , text = views [1] ,
textSize = "13sp" ,
layout_marginLeft = "15dp" ,
layout_width = "match_parent" ,
layout_weight=1,
textColor = "#000000" ,
gravity = "left" ,
},{
LinearLayout ,
padding={"0dp","0dp","10dp","0dp"},
layout_width = "30dp" ,
layout_height = "30dp" ,
gravity = "center",
boxpic[tid],
}
} else
gg.alert ("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' ,
}
for i = 2 , # views do
if type(views[i])=='table' then
radios [# radios + 1] = views [i].view
vs[#vs+1]=views [i]
else
radios [# radios + 1] = views [i]
end
end
boxes[tid] = luajava.loadlayout(radios)
firadio [# firadio + 1] = boxes[tid]
_ENV [t1id] = luajava.loadlayout (firadio)
return {view=_ENV [t1id],
type='BOX',
name=views[1],
vs=vs
}
end
buts={}
heir=getRes("heir")
function changan.Bigbutton(txt,func,txtc)
if not txt then txt = "未设置" end
if not txtc then txtc="#ffffff" end
local tid="Cbutton"..guid()
buts[tid]=luajava.loadlayout(
{
LinearLayout,
layout_width = 'match_parent',
layout_height = "wrap_content", {
LinearLayout,
layout_width = "fill_parent",
gravity = "center_vertical",
layout_marginTop = "5dp",
layout_marginBottom = "5dp",
background = getButtonBG(),
padding="10dp",
onClick = function()
changan.controlWater(buts[tid],100)
vibra:vibrate(10)
luajava.newThread(func):start() end,
{
TextView,
--id = luajava.newId(tid),
textColor = txtc,
text = txt,
textSize = "13sp",
layout_height = "wrap_content",
layout_width = "fill_parent",
layout_weight=1,
},{ImageView,
src=heir,
layout_height="14dp",
layout_width="14dp",
}
}})
return {view=buts[tid],
name=txt,
func=func,
type='button'
}
end
function getButtonBG()
local selector = luajava.getStateListDrawable()
selector:addState({
android.R.attr.state_pressed
}, getVerticalBG({0x55000000,0x55000000},15))
selector:addState({
-android.R.attr.state_pressed
}, getVerticalBG({0xaa1a1b1d,0xaa1a1b1d},15))
return selector
end
radiog={}
function changan.radio (cklist)
if not radoff then
radon=getVerticalBG({0xffffffff,0xffffffff},360,20,控件颜色[1])
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 = "#d7d7d7" ,
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=getVerticalBG({0xaa1a1b1d,0xaa1a1b1d},45),
padding={"0dp","14dp","0dp","10dp"},
}
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 = "#d7d7d7" ,
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 {view=luajava.loadlayout(rest),
type='radio',
name='单选',
}
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
当前ui=1
function changan.text(text,color,size,isjz)
if not color then color="#161616" end
if isjz then
rst= luajava.loadlayout(
{
TextView,
text=text,
textColor=color,
textSize=size,
gravity="center",
layout_height="wrap_content",
layout_width="match_parent",
autoSizeTextType="uniform",
})
else
rst= luajava.loadlayout({
TextView,
text=text,
textColor=color,
textSize=size,
layout_height="wrap_content",
layout_width="match_parent",
autoSizeTextType="uniform",
})
end
return {view=rst,
name=text,
}
end
function getButtonBG()
local selector = luajava.getStateListDrawable()
selector:addState({
android.R.attr.state_pressed
}, getVerticalBG({0x55d7d7d7,0x55d7d7d7},35))
selector:addState({
-android.R.attr.state_pressed
}, getVerticalBG({按钮颜色,按钮颜色},35))
return selector
end
buts={}
heir=getRes("heir")
function changan.button(txt,func,txtc)
if not txt then txt = "未设置" end
if not txtc then txtc="#000000" end
local tid="Cbutton"..guid()
buts[tid]=luajava.loadlayout(
{
LinearLayout,
layout_width = 'match_parent',
layout_height = "wrap_content", {
LinearLayout,
layout_width = "fill_parent",
gravity = "center_vertical",
layout_marginTop = "5dp",
layout_marginBottom = "5dp",
background = getButtonBG(),
padding="10dp",
onClick = function()
changan.controlWater(buts[tid],300)
luajava.newThread(func):start() end,
{
TextView,
--id = luajava.newId(tid),
textColor = txtc,
text = txt,
textSize = "13sp",
layout_height = "wrap_content",
layout_width = "fill_parent",
layout_weight=1,
},{ImageView,
src=heir,
layout_height="14dp",
layout_width="14dp",
}
}})
return buts[tid]
end
按钮颜色=0xffffffff
switch颜色=0xff006FFF
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 = "点击输入文字"
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 = getButtonBG(),
gravity = "center" ,
hint = hint ,
textColor=check字体颜色,
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
local thum= getVerticalBG({0xffffffff,0xffffffff},4,10,switch颜色)
thum:setSize(60, 60)
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 = 'fill_parent',
layout_hight = "fill_parent",
{
LinearLayout,
layout_width = 'fill_parent',
layout_hight = "fill_parent",
layout_marginTop = "5dp",
layout_marginBottom = "5dp",
gravity = "center_vertical",
background = getVerticalBG({0xaa1a1b1d,0xaa1a1b1d},45),
{
TextView,
padding={"5dp","10dp","0dp","10dp",},
gravity = "top",
textColor="#ffffff",
text = name..":"..nows,
id = luajava.newId(names),
layout_width = '100dp',
--layout_marginLeft = "5dp",
layout_marginRight = "0dp",
},
{
SeekBar,
layout_width = 'fill_parent',
layout_weight=1,
id=luajava.newId(name.."seekbar"),
min = truesmin,
max = truesmax,
progress=tnows,
--paddingStart="0dp",
--paddingEnd="0dp",
progressDrawable={ getVerticalBG({控件颜色[1],控件颜色[2]},45)},
thumb=thum,
progressHeight="10dp",
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
}}
}})
colorvs[name.."seekbar"]={true,"seek"}
return {view=rest,
name=name,
type='拉条'
}
end
xze2=getVerticalBG({0x00ffffff,0x00ffffff},15,3,0xff232323)
xze=getVerticalBG({0x00ffffff,0x00ffffff},15,3,0xff232323)
function xuanse(x)
for i=1,#颜色表 do
luajava.getIdValue("yans"..i):setBackground(empty)
end
luajava.getIdValue("yans"..x):setBackground(xze)
changeColor(颜色表[x])
end
function getlis(ys)
local t={
LinearLayout,
layout_marginLeft="6dp",
layout_marginRight="6dp",
background=getVerticalBG({0x55d7d7d7,0x55d7d7d7},20),
padding="3dp",
onClick=function() freshCl(ys) end,
{
LinearLayout,
layout_height="20dp",
layout_width="20dp",
background=getVerticalBG({colorlis[ys],colorlis[ys]},15),
}
}
return t
end
function tiaose()
if 颜色表==nil then return 0 end
local laylist1={
LinearLayout,
gravity="center_horizontal",
}
local laylist2={
LinearLayout,
layout_marginTop="6dp",
gravity="center_horizontal",
}
for i=1,#颜色表 do
laylist1[#laylist1+1]={
LinearLayout,
layout_height="20dp",
layout_width="20dp",
gravity="center",
id=luajava.newId("yans"..i),
onClick=function() xuanse(i) end,
{LinearLayout,
layout_width="15dp",
layout_height="15dp",
background=getVerticalBG({颜色表[i][1],颜色表[i][2]},15)
}
}
end
return luajava.loadlayout({
LinearLayout,
--background=getVerticalBG({0x55d7d7d7,0x55d7d7d7},25),
layout_height="match_parent",
layout_width="fill_parent",
gravity="center",
laylist1,
})
end
function CYC(ADD,TYPE,VALUE)
local il2cpp_so=gg.getRangesList("il2cpp.so")
if il2cpp_so[1]==nil then il2cpp_error() else
gg.setValues({{address=il2cpp_so[1].start+ADD,flags=TYPE,value=VALUE}})
gg.processResume()
end
end
function CYC(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
--ms配置
function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end
ms = { }
function setvalue ( add , value , falgs , dj )
local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
if dj == true then
WY [ 1 ].freeze = true gg.addListItems ( WY )
else
gg.setValues ( WY )
end
end
function ms.ss ( num , ty , nc )
local GGNUMBER_1 = num
local GGNUMBER_2 = ty
local GGNUMBER_3 = false
local GGNUMBER_4 = gg.SIGN_EQUAL
local GGNUMBER_5 = 0x3000000
local GGNUMBER_6 = 0xFFFFFFFF
local GGNUMBER_7 = 0
gg.clearResults ( )
gg.setRanges ( nc )
gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
Result = gg.getResults ( gg.getResultCount ( ) )
end
function ms.py ( num , py , ty )
if ( Result and # Result ~= 0 ) then
t = { }
for i , v in ipairs ( Result ) do
t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
end
t = gg.getValues ( t )
for i , v in ipairs ( t ) do
if v.value ~= num then
Result [ i ] = nil
end
end
local MS = { }
for i , v in pairs ( Result ) do
MS [ # MS + 1 ] = v
end
Result = MS
end
end
function ms.bc ( )
data = { }
if Result == nil or # Result == 0 then
gg.alert ( "开启失败" )
else
for i , v in pairs ( Result ) do
data [ # data + 1 ] = v.address
end
end
Result = nil
end
function ms.edit ( nn , off , ty , dj )
if ( Result ) then
ms.bc ( )
end
if # data > 0 then
for i , v in ipairs ( data ) do
setvalue ( v + off , nn , ty , dj or false )
end
gg.toast ( Name.."成功" )
end
end
--基址配置2
function readPointer(name, offset, i)
local re = gg.getRangesList(name)
local x64 = gg.getTargetInfo().x64
local va = {[true] = 32, [false] = 4}
if re[i or 1] then
local addr = re[i or 1].start + offset[1]
for i = 2, #offset do
addr = gg.getValues({{address = addr, flags = va[x64]}})
if not x64 then
addr[1].value = addr[1].value & 0xFFFFFFFF
end
addr = addr[1].value + offset[i]
end
return addr
end
end
function gg.edits(addr, Table, name)
local Table1 = {{}, {}}
for k, v in ipairs(Table) do
local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]}
if v[4] then
Table1[2][#Table1[2] + 1] = value
else
Table1[1][#Table1[1] + 1] = value
end
end
gg.addListItems(Table1[2])
gg.setValues(Table1[1])
gg.toast((name or "") .. "开启成功, 共修改" .. #Table .. "个值")
end
--指针
function readWrite(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] if (count > 0) then for i,v in ipairs(result) do v.isUseful=true end for k=2,#Search do local tmp={} local offset=Search[k][2] - base local num=Search[k][1] for i,v in ipairs(result) do tmp[#tmp+1]={} tmp[#tmp].address=v.address+offset tmp[#tmp].flags=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=tostring(num) then result[i].isUseful=false end end end for i,v in ipairs(result) do if (v.isUseful) then data[#data+1]=v.address end end if (#data > 0) then local t,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "\n已修改"..tg_.."条数据" or "" th=(th_) and "\n已获取"..th_.."条数据" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.alert("\n"..Name.."搜索成功!\n偏移到"..#data.."条数据"..tg..th) tg_,th_=nil,nil else gg.toast("\n"..Name.."开启失败",false) return false end else gg.toast(Name.."开启失败") return false end end
--载入配置
function dy_wt (ry_wt )
local File = io.open ( '/sdcard/_wt' , 'w+' ) : write ( ry_wt )
gg.processResume ( )
gg.loadList ( "/sdcard/_wt" , gg.LOAD_VALUES )
os.remove ( "/sdcard/_wt" )
gg.clearList ( )
end
--指针写法
function SearchWrite(Search, Write, Type, Name)
local time=os.clock()
gg.clearResults()
gg.setVisible(false)
gg.searchNumber(Search[1][1], Type)
local count = gg.getResultCount()
local result = gg.getResults(count)
gg.clearResults()
local data = {}
local base = Search[1][2]
if (count > 0) then
for i, v in ipairs(result) do
v.isUseful = true
end
for k=2, #Search do
local tmp = {}
local offset = Search[k][2] - base
local num = Search[k][1]
for i, v in ipairs(result) do
tmp[#tmp+1] = {}
tmp[#tmp].address = v.address + offset
tmp[#tmp].flags = v.flags
end
tmp = gg.getValues(tmp)
for i, v in ipairs(tmp) do
if ( tostring(v.value) ~= tostring(num) ) then
result[i].isUseful = false
end
end
end
for i, v in ipairs(result) do
if (v.isUseful) then
data[#data+1] = v.address
end
end
if (#data > 0) then
gg.toast("搜索到"..#data.."条数据")
local t = {}
local base = Search[1][2]
for i=1, #data do
for k, w in ipairs(Write) do
offset = w[2] - base
t[#t+1] = {}
t[#t].address = data[i] + offset
t[#t].flags = Type
t[#t].value = w[1]
if (w[3] == true) then
local item = {}
item[#item+1] = t[#t]
item[#item].freeze = true
gg.addListItems(item)
end
end
end
gg.setValues(t)
local time=string.sub(os.clock()-time,0,5)
gg.toast("开启成功 已修改:"..#t.."条数据 本次启动耗时:"..time.."秒")
gg.addListItems(t)
else
gg.toast("开启失败未搜索到任何数据", false)
return false
end
else
gg.toast("开启失败未搜索到任何数据")
return false
end
end
--XS写法配置
function xqmnb(Search,Modification)
gg.clearResults()
gg.setRanges(Search[1].memory)
gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1)
if gg.getResultCount()==0 then
gg.toast(Search[2].name..'开启失败')
return
end
local Result=gg.getResults(gg.getResultCount())
local sum
for index=4,#Search do
sum=0
for i=1,#Result do
if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then
Result[i].Usable=true
sum=sum+1
end
end
if sum==#Result then
gg.toast(Search[2].name..'开启失败')
return
end
end
local Data,Freeze,Freezes={},{},0
sum=0
for index,value in ipairs(Modification)do
for index=1,#Result do
if not Result[index].Usable then
local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true}
if value.freeze then
Freeze[#Freeze+1]=Value
Freezes=Freezes+1
else
Data[#Data+1]=Value
end
sum=sum+1
end
end
end
gg.setValues(Data)
gg.addListItems(Freeze)
if Freezes==0 then
gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据')
else
gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据')
end
gg.clearResults()
end
--普通基址
function S_Pointer(t_So, t_Offset, _bit)
local function getRanges()
local ranges = {}
local t = gg.getRangesList('^/data/*.so*$')
for i, v in pairs(t) do
if v.type:sub(2, 2) == 'w' then
table.insert(ranges, v)
end
end
return ranges
end
local function Get_Address(N_So, Offset, ti_bit)
local ti = gg.getTargetInfo()
local S_list = getRanges()
local t = {}
local _t
local _S = nil
if ti_bit then
_t = 32
else
_t = 4
end
for i in pairs(S_list) do
local _N = S_list[i].internalName:gsub('^.*/', '')
if N_So[1] == _N and N_So[2] == S_list[i].state then
_S = S_list[i]
break
end
end
if _S then
t[#t + 1] = {}
t[#t].address = _S.start + Offset[1]
t[#t].flags = _t
if #Offset ~= 1 then
for i = 2, #Offset do
local S = gg.getValues(t)
t = {}
for _ in pairs(S) do
if not ti.x64 then
S[_].value = S[_].value & 0xFFFFFFFF
end
t[#t + 1] = {}
t[#t].address = S[_].value + Offset[i]
t[#t].flags = _t
end
end
end
_S = t[#t].address
end
return _S
end
local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit))
return _A
end
----秒开基址模块
function MR_MkPointer(SONC,NCFW,PYL,TYPE,VALUE,NAME,DJ)
local Somod=gg.getRangesList(SONC)[1]
if Somod==nil then
gg.alert(NAME..'开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━')
else
function S_Pointer(t_So, t_Offset, _bit)
local function getRanges()
local ranges = {}
local t = gg.getRangesList('^/data/*.so*$')
for i, v in pairs(t) do
if v.type:sub(2, 2) == 'w' then
table.insert(ranges, v)
end
end
return ranges
end
local function Get_Address(N_So, Offset, ti_bit)
local ti = gg.getTargetInfo()
local S_list = getRanges()
local t = {}
local _t
local _S = nil
if ti_bit then
_t = 32
else
_t = 4
end
for i in pairs(S_list) do
local _N = S_list[i].internalName:gsub('^.*/', '')
if N_So[1] == _N and N_So[2] == S_list[i].state then
_S = S_list[i]
break
end
end
if _S then
t[#t + 1] = {}
t[#t].address = _S.start + Offset[1]
t[#t].flags = _t
if #Offset ~= 1 then
for i = 2, #Offset do
local S = gg.getValues(t)
t = {}
for _ in pairs(S) do
if not ti.x64 then
S[_].value = S[_].value & 0xFFFFFFFF
end
t[#t + 1] = {}
t[#t].address = S[_].value + Offset[i]
t[#t].flags = _t
end
end
end
_S = t[#t].address
end
return _S
end
local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit))
return _A
end
time=os.clock()
local DZT = S_Pointer({SONC, NCFW},{0x0})
local PY_offsets = PYL
for _,MR in pairs(PY_offsets) do
gg.addListItems({{address = DZT+MR, flags = TYPE, value = VALUE, freeze = DJ}})
end
local time=string.sub(os.clock()-time,0,5)
gg.toast(NAME..'️开启成功\n当前进程名称:'..gg.getTargetInfo().label..'\n当前进程包名:'..gg.getTargetPackage()..'\n总共耗时:'..time..'秒')
end
end
--初始颜色,填写十六进制RGB
--可在功能按钮里调用changeColor()随时自定义切换
--例如:changeColor(0xffFF0023)
控件颜色={0xff33AF61,0xff5ADAD7}
颜色表={--切换颜色的列表
{0xff161616,0xff161616},
{0xffFFB94D,0xffFF854D},
{0xffFF0023,0xffAD3ACD},
{0xff008CFF,0xffFF8AFB},
{0xff00FF7B,0xff0049FF},
{0xffFF95F2,0xff514CFF},
{0xff946AFF,0xff1E8CFF},
{0xdd1C66FF,0xddB124FF},
{0xdd33CE5D,0xdd3282FF},
{0xddCE1D24,0xdd9100FF},
}
左上角标题='QlipYight'
muby=650
--初始宽度
mubx=900
--初始高度
公告内容="123456"
悬浮窗图标="https://tc.24ly.cn/view.php/aef642a66d6e6ea17330c72590564155.jpg"
stab={
"公告",
"防封",
"刷号",
"竞赛",
"音乐",
"设置",
}
loadingBox = getLoadingBox('正在启动...')
loadingBox['显示']()
changan.menu (
{
{--------------以下是列表一
changan.text("此版本为猪猪侠版本" , "#000000" , "15sp") ,
changan.text("正在守护您的账号安全" , "#000000" , "15sp" ) ,
changan.button ("选择进程" ,
function()
string.toMusic ("请选择地铁跑酷进程")
gg.setProcessX()
end),
changan.switch("💰使用指南💰",
function()
string.toMusic("道具赛使用指南1.无宝聚能在捡能量的时候不要开滑板否则会断网在没有捡能量的状态开即是稳定2.无视道具第一把是没有效果要完整的打完第一把之后才会有效果中途退出即是无效3.如果想稳定的话开无视道具和无宝聚能打的时候演一点即可")
gg.alert("道具赛使用指南1.无宝聚能在捡能量的时候不要开滑板否则会断网在没有捡能量的状态开即是稳定2.无视道具第一把是没有效果要完整的打完第一把之后才会有效果中途退出即是无效3.如果想稳定的话开无视道具和无宝聚能打的时候演一点即可")
end),
changan.edit("群号608645322 稳定","QlipYight科技"),
changan.button("开启水印[不可关闭]",
function()
draw.text(changan.getedit("清沅制作"),150,420)
draw.setColor('#FF0000FF')
end),
changan.button("启动!地铁跑酷",
function()
gg.jumpAPP("com.kiloo.subwaysurf")
end),
changan.button("进入官方店铺",
function()
gg.intent("https://www.qtengc.com/links/FFABF286")
end),
changan.button("加入官方交流群",
function()
toMusic('1群满人')
gg.alert('1群满人')
gg.QQgroup("608645322")
end),
changan.button('生成小白号',
function()
gg.intent("https://4399.js.mcdds.cn/")
end),
} , {--------------以下是列表二
changan.check ( {
{
},
{
"超级防闪 [进度条开]",
function()
MR_MkPointer("libtersafe2.so","Cd",{0xA8,0x38,0x74,0x58,0x44},4,0,"防闪",true)
string.toMusic ( '修改成功' )
end
} , {
"防环境+独家指针[进度条开启]",
function()
dy_wt[["
15686
Var #A9D2B0C0|a9d2b0c0|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libil2cpp.so:bss|bd0c0
Var #A9D317F8|a9d317f8|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libil2cpp.so:bss|c37f8
Var #BEA6984C|bea6984c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libtersafe2.so:bss|84c
Var #BEA699C0|bea699c0|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libtersafe2.so:bss|9c0
Var #BEA6AB3C|bea6ab3c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libtersafe2.so:bss|1b3c
Var #BEA6AB74|bea6ab74|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libtersafe2.so:bss|1b74
Var #BEA6E4C8|bea6e4c8|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libtersafe2.so:bss|54c8
Var #BEA6E4E4|bea6e4e4|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libtersafe2.so:bss|54e4
Var #BEA6E58C|bea6e58c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-8MdN5Bahj5UH0z3ub50tGg==/lib/arm/libtersafe2.so:bss|558c
14357
Var #C62C2F4C|c62c2f4c|4|0|1|0|0|0|r-xp|/data/app/com.kiloo.subwaysurf-PwZJH_gy_JUZ_XTXmpOEAg==/lib/arm/libtersafe2.so|377f4c
Var #C631A84C|c631a84c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-PwZJH_gy_JUZ_XTXmpOEAg==/lib/arm/libtersafe2.so:bss|84c
Var #C631F5A4|c631f5a4|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-PwZJH_gy_JUZ_XTXmpOEAg==/lib/arm/libtersafe2.so:bss|55a4
Var #C631F6D8|c631f6d8|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-PwZJH_gy_JUZ_XTXmpOEAg==/lib/arm/libtersafe2.so:bss|56d8
Var #C6322700|c6322700|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-PwZJH_gy_JUZ_XTXmpOEAg==/lib/arm/libtersafe2.so:bss|8700
Var #C6322718|c6322718|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-PwZJH_gy_JUZ_XTXmpOEAg==/lib/arm/libtersafe2.so:bss|8718
Var #C6322728|c6322728|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-PwZJH_gy_JUZ_XTXmpOEAg==/lib/arm/libtersafe2.so:bss|8728
Var #C6322730|c6322730|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-PwZJH_gy_JUZ_XTXmpOEAg==/lib/arm/libtersafe2.so:bss|8730
"]]
toMusic('已为您过滤环境')
end
} ,
{
"一键过检测",
function()
toMusic('执行较久请耐心等待执行完成的语音提示')
MR_MkPointer("libtersafe2.so","Cd",{0x38,0x74,0x58,0x44,0x32578,0x327D0,0x327E8,0x34690,0x346E0,0x348B0},4,0,"防2次",true)
MR_MkPointer("libtersafe2.so","Cd",{0xA8},4,-1,"防闪",true)
MR_MkPointer("libtersafe2.so:bss","Cb",{0x14028,0x14004,0x56C0,0x5614,0x558C,0x54AC,0x5588,0x2204,0x2140,0x2134,0x2140,0x1CF4,0x1CE8,0xA4C,0x924,0x864,0x56B8,0x54DC,0x4298,0xA70,0xA6C,0x93C,0x86C,0x4354,0x1B74,0x9C0,0xA78,0x5740,0x1B80,0x1B70,0x54C8,0x54E4,0x9B4,0x9C0,0x9D4,0x9E0,0x9F8,0xAA4,0xB30,0x1B3C,0x1B48,0x1B6C,0x1BD0,0x5544,0x56A4,0x55B0,0x5690,0x1B8C,0x1B64,0x574,0x528,0x8730,0x873C,0x8728,0x54C,0x99C,0x4294,0x56D8,0x1B7C,0x9AC,0x14020,0x5620,0xA8C,0x9FC,0x1B50,0xA88,0x85C554C,0x8718,0xAB4},4,0,"全防",true)
toMusic('一键过检测成功')
end
} ,
{
"防行为[大厅防2]",
function()
function TT(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
TT(0x2aadab0 , 4, "~A MOVW R0, #0")
TT(0x186d858 , 4, "~A MOVW R0, #0")
TT(0x2ce160c ,4,"~A MOVW R0, #0")--设备ID检测
TT(0x2ce18cc ,4,"~A MOVW R0, #0")--钥匙作弊上传
TT(0xc074b0 ,4,"~A MOVW R0, #0")--金币作弊上传
TT(0xc0739c ,4,"~A MOVW R0, #0")--作弊次数检测
TT(0x2cd9c8c ,4,"~A MOVW R0, #0")--人物总数检测
TT(0x2ce155c ,4,"~A MOVW R0, #0")--金币数量检测
TT(0x1c51a1c ,4,"~A MOVW R0, #0")--货币作弊检测
TT(0xc07204 ,4,"~A MOV R0, #0")--速度异常检测
TT(0x2ce14ac ,4,"~A MOVW R0, #0")--关闭1分40秒检测
TT(0x2ce16bc ,4,"~A MOVT R0, #9999")--等级限制检测
TT(0x2ce1db0 ,4,"~A MOVT R0, #9999")--宝物钥匙数量检测
TT(0x2cd8538 ,4,"~A MOVT R0, #9999")--炫跑卡作弊检测
TT(0x2ce176c ,4,"~A MOVT R0, #9999")--钥匙数量检测
TT(0x2ce181c ,4,"~A MOVT R0, #9999")--硬币数量检测
gg.alert('开启成功')
toMusic('开启成功')
end
},
{
"独家全防 [进度条开启]",
function()
MR_MkPointer("libtersafe2.so","Cd",{0x38,0x74,0x58,0x44,0x32578,0x327D0,0x327E8,0x34690,0x346E0,0x348B0},4,0,"防2次",true)
MR_MkPointer("libtersafe2.so","Cd",{0xA8},4,-1,"防闪",true)
MR_MkPointer("libtersafe2.so:bss","Cb",{0x14028,0x14004,0x56C0,0x5614,0x558C,0x54AC,0x5588,0x2204,0x2140,0x2134,0x2140,0x1CF4,0x1CE8,0xA4C,0x924,0x864,0x56B8,0x54DC,0x4298,0xA70,0xA6C,0x93C,0x86C,0x4354,0x1B74,0x9C0,0xA78,0x5740,0x1B80,0x1B70,0x54C8,0x54E4,0x9B4,0x9C0,0x9D4,0x9E0,0x9F8,0xAA4,0xB30,0x1B3C,0x1B48,0x1B6C,0x1BD0,0x5544,0x56A4,0x55B0,0x5690,0x1B8C,0x1B64,0x574,0x528,0x8730,0x873C,0x8728,0x54C,0x99C,0x4294,0x56D8,0x1B7C,0x9AC,0x14020,0x5620,0xA8C,0x9FC,0x1B50,0xA88,0x85C,0x8718,0xAB4},4,0,"全防",true)
gg.alert("全防开启成功")
end
} ,
{
"防ACE [进度条开启]",
function()
MR_MkPointer("libtersafe2.so","Cd",{0x38,0x74,0x58,0x44,0x32578,0x327D0,0x327E8,0x34690,0x346E0,0x348B0},4,0,"防2次",true)
MR_MkPointer("libtersafe2.so","Cd",{0xA8},4,-1,"防闪",true)
MR_MkPointer("libtersafe2.so:bss","Cb",{0x14028,0x14004,0x56C0,0x5614,0x558C,0x54AC,0x5588,0x2204,0x2140,0x2134,0x2140,0x1CF4,0x1CE8,0xA4C,0x924,0x864,0x56B8,0x54DC,0x4298,0xA70,0xA6C,0x93C,0x86C,0x4354,0x1B74,0x9C0,0xA78,0x5740,0x1B80,0x1B70,0x54C8,0x54E4,0x9B4,0x9C0,0x9D4,0x9E0,0x9F8,0xAA4,0xB30,0x1B3C,0x1B48,0x1B6C,0x1BD0,0x5544,0x56A4,0x55B0,0x5690,0x1B8C,0x1B64,0x574,0x528,0x8730,0x873C,0x8728,0x54C,0x99C,0x4294,0x56D8,0x1B7C,0x9AC,0x14020,0x5620,0xA8C,0x9FC,0x1B50,0xA88,0x85C,0x8718,0xAB4},4,0,"全防",true)
toMusic('防ace检测开启成功')
end
},
{
"需要退游戏开",
function()
dy_wt[["
12484
Var #B719C288|b719c288|4|0|1|0|0|0|r-xp|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so|59288
Var #B74130BC|b74130bc|4|0|1|0|0|0|r-xp|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so|2d00bc
Var #B74130EC|b74130ec|4|0|1|0|0|0|r-xp|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so|2d00ec
Var #B7414C94|b7414c94|4|0|1|0|0|0|r-xp|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so|2d1c94
Var #B7414DF8|b7414df8|4|0|1|0|0|0|r-xp|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so|2d1df8
Var #B7512864|b7512864|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|864
Var #B7512924|b7512924|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|924
Var #B7512A4C|b7512a4c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|a4c
Var #B7513CE8|b7513ce8|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|1ce8
Var #B7513CF4|b7513cf4|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|1cf4
Var #B7514134|b7514134|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|2134
Var #B7514140|b7514140|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|2140
Var #B7514204|b7514204|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|2204
Var #B75174AC|b75174ac|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|54ac
Var #B7517588|b7517588|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|5588
Var #B751758C|b751758c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|558c
Var #B7517614|b7517614|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|5614
Var #B75176C0|b75176c0|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|56c0
Var #B7526004|b7526004|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|14004
Var #B7526028|b7526028|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|14028
15804
Var #B7D20E58|b7d20e58|4|0|1|0|0|0|r-xp|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so|249e58
Var #B7EA654C|b7ea654c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|54c
Var #B7EA683C|b7ea683c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|83c
Var #B7EA6864|b7ea6864|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|864
Var #B7EA686C|b7ea686c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|86c
Var #B7EA689C|b7ea689c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|89c
Var #B7EA693C|b7ea693c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|93c
Var #B7EA69E0|b7ea69e0|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|9e0
Var #B7EA69F8|b7ea69f8|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|9f8
Var #B7EA6A6C|b7ea6a6c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|a6c
Var #B7EA6A70|b7ea6a70|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|a70
Var #B7EA6AA4|b7ea6aa4|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|aa4
Var #B7EA6AB4|b7ea6ab4|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|ab4
Var #B7EA7B80|b7ea7b80|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|1b80
Var #B7EA7B84|b7ea7b84|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|1b84
Var #B7EA7B8C|b7ea7b8c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|1b8c
Var #B7EA7BD0|b7ea7bd0|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|1bd0
Var #B7EAA298|b7eaa298|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|4298
Var #B7EAB4AC|b7eab4ac|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|54ac
Var #B7EAB4C8|b7eab4c8|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|54c8
Var #B7EAB4DC|b7eab4dc|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|54dc
Var #B7EAB588|b7eab588|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|5588
Var #B7EAB58C|b7eab58c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|558c
Var #B7EAB5B0|b7eab5b0|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|55b0
Var #B7EAB614|b7eab614|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|5614
Var #B7EAB620|b7eab620|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|5620
Var #B7EAB67C|b7eab67c|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|567c
Var #B7EAB694|b7eab694|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|5694
Var #B7EAB6A4|b7eab6a4|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|56a4
Var #B7EAB6C0|b7eab6c0|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|56c0
Var #B7EAE718|b7eae718|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|8718
Var #B7EAE838|b7eae838|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|8838
Var #B7EBA028|b7eba028|4|0|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-YsXYEo4gPwG3tJ9whWL0oQ==/lib/arm/libtersafe2.so:bss|14028"]]
toMusic('开启成功可以退出游戏了已帮您过滤线下追封')
end
},
{
"过新手教程" ,
function ()
CYC(0xbb8378,4,"~A MOVW R0, #1")
toMusic('开启成功')
end},
{ "关闭封号弹窗",
function()
CYC(0x11DF5BC,4,"~A MOVW R0, #0")--某人
toMusic('关闭封号弹窗成功')
end},
}),--check结尾
} , {
--------------以下是列表三
changan.button('选择进程',
function()
gg.setProcessX()
toMusic('请选择地铁跑酷进程')
end),
changan.button("备份数据",
function()
CYC(0xbeb02c,4,"~A MOVW R0, #1")
CYC(0xc04ad4,4,"~A MOVW R0, #1")
CYC(0x2ccefbc,4,"~A MOVW R0, #1")
toMusic('开启成功')
end),
changan.text("\n\n") ,
changan.text("刷号区域" , "#000000" , "15sp") ,
changan.box({"装饰区",---box2示例 可以删掉
changan.switch("人物全解", function()
CYC(0xbae350, 4, "~A MOVW R0, #1")
string.toMusic("人物全解成功")
end
, function()
end
),
changan.switch("滑板全解", function()
CYC(0xbaf354, 4, "~A MOVW R0, #1")
string.toMusic("滑板全解成功")
end
, function()
end
),
changan.switch("背饰全解", function()
CYC(0xbd9a64, 4, "~A MOVW R0, #1")
string.toMusic("背饰成功")
end
),
changan.switch("背饰备份", function()
CYC(0xbafb3c , 4, "~A MOVW R0, #1")
string.toMusic('备份数据成功') end
),
changan.switch("头像框全解", function()
CYC(0x10d7678, 4, "~A MOVW R0, #1")
string.toMusic("成功")
end
, function()
end
),
changan.switch("装扮全解", function()
CYC(0xba0400, 4, "~A MOVW R0, #1")
string.toMusic("成功")
end
, function()
end
),
changan.switch("滑板技能全解", function()
CYC(0xd30068, 4, "~A MOVW R0, #1")
string.toMusic("成功")
end
, function()
end
),
}),
changan.box({"宝物区",---box2示例 可以删掉
changan.switch("十抽宝物【九游】", function()
function C(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
C(0x1025b0c ,4,'~AB +0x1930')
string.toMusic("十抽全宝物修改成功请前往宝物箱子界面进行十抽")
end
),
changan.switch("十抽半宝",
function()
function NY(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
NY(0x1025b0c ,4,"~AB +0x24CC")--某人
string.toMusic("十抽宝物备份修改成功请前往宝物箱子界面进行十抽")
end),
changan.switch("十抽保存【九游】", function()
function Y(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
Y(0x1025b0c ,4,"~AB +0x1E48")--某人
string.toMusic("十抽宝物备份修改成功请前往宝物箱子界面进行十抽")
end),
changan.switch("十抽全饰", function()
function MRY(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
MRY(0x1025b0c ,4,"~AB -0x476f4c")--某人
gg.toast("十抽全饰开启成功")
string.toMusic("十抽全饰开启成功请去宝物箱子界面进行十抽")
end
),
changan.switch("十抽半饰", function()
CYC(0x1025b0c ,4,"~AB -0x475B7C")--某人
gg.toast("十抽半饰开启成功")
string.toMusic("十抽半饰开启成功请去宝物箱子界面进行十抽")
end
),
changan.switch("宝物自定义", function()
CYC(0x1e1e510,4,'~A MOV R0, #'..gg.prompt({"等级<100即可"},{""},{"text"})[1])
string.toMusic('宝物自定义成功')
end
)
}),
changan.box({"修改区",---box2示例 可以删掉
changan.switch("内购",
function()
function GH(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
GH(0x1997fac,4,'~AB +0x10E8C')
toMusic('开启成功')
end,
function()
end),
changan.button("查询代码", function()
loadYunLua('http://pan.rlyun.asia/api/v3/file/get/79154/%E9%87%8C%E7%BA%A6%E4%BB%A3%E7%A0%81.lua?sign=p9ZAwdwVKXuAEb4mDECqNvW8Cm3k-aIZDZfF5MNKtsg%3D%3A0')
end),
changan.switch("炫跑卡",
function()
CYC(0x153da5B,4,"~A MOVW R0, #6")--某人
gg.alert('开启成功')
end),
changan.switch('奖杯全部领取',
function()
CYC(0xc1c978, 4,"~A MOVW R0, #1")
toMusic('开启成功')
end),
changan.switch("自定义段位",
function()
MR = gg.prompt({"\n某人制作\n\n1~6总段位\n6=王者","\n小段位1~5\n共五个阶段\n","\n\n星星数量","积分数量最大200"},{""},{"number","number","number","number"})
local qmnb=
{
{['memory']=32},
{['name']='自定义段位'},
{['value']=-993902336, ['type']=4},
{['lv']=148651115,['offset']=4, ['type']=4},
{['lv']=-753430528,['offset']=8, ['type']=4},
{['lv']=148657092,['offset']=12, ['type']=4},
}
local qmxg=
{
{['value']=MR[1],['offset']=32,['type']=4,['freeze']=true},
{['value']=MR[2],['offset']=36,['type']=4,['freeze']=true},
{['value']=MR[3],['offset']=40,['type']=4,['freeze']=true},
{['value']=MR[4],['offset']=44,['type']=4,['freeze']=true},
}
xqmnb(qmnb,qmxg)
toMusic('开启成功')
end),
}),
changan.box({"特权区",---box2示例 可以删掉
changan.switch("最高排名", function()
CYC(0xbd15d0,4, "~A MOV R0, #1")
toMusic('开启成功')
end
),
changan.switch("十倍得分", function()
co = gg.prompt({"调出","解锁"}, {}, {'checkbox',"checkbox"})
if co == nil then Main() end
if co[1] == true then
MR(0x2cd8fec ,4,"~A MOVW R0, #1")
end
if co[2] == true then
MR(0xe0cd28 ,4,"~A MOVW R0, #1")
end
toMusic('开启成功')
end
),
changan.switch("双倍金币",
function()
CYC(0xb83000 ,4,"~A MOVW R0, #1")
string.toMusic("己为您开启双倍金币获取请前往主页查看")
end,
function()
end),
changan.switch("微博特权",
function()
CYC(0x17337fc ,4,"~A MOVW R0, #1")
string.toMusic("己为您开启微博特权获取请前往主页查看")
end,
function()
end),
changan.switch("超长昵称", function()
MR(0x1034a2c ,4,"~A B +0x148")
string.toMusic("己为您开启超长名")
toMusic('开启成功')
end
),
}),
changan.box({
"替换区",
changan.switch("替换奖杯", function()
CYC(0x10d7084, 4, "~A MOVW R0, #25")
string.toMusic("已成功为老板奖励替换奖杯")
end
),
changan.switch("替换人物", function()
CYC(0x10d7084, 4, "~A MOV R0, #10")
CYC(0x10D7238, 4, "~A MOVW R0, #" .. gg.prompt({
"请输入你要修改奖励的人物代码注:保安是190"
}, {"190"}, {"text"})[1])
string.toMusic("已成功为老板奖励替换人物")
end
),
changan.switch("替换滑板", function()
CYC(0x10d7084, 4, "~A MOV R0, #12")
CYC(0x10D73EC, 4, "~A MOVW R0, #" .. gg.prompt({
"请输入你要修改奖励的滑板代码注:跑车是60"
}, {"60"}, {"text"})[1])
string.toMusic("已成功为老板奖励替换滑板")
end
),
changan.switch("替换背饰", function()
CYC(0x10d7084, 4, "~A MOV R0, #14")
CYC(0x10D75A0, 4, "~A MOVW R0, #" .. gg.prompt({
"请输入你要修改奖励的背饰代码注:磁铁是22"
}, {"22"}, {"text"})[1])
string.toMusic("已成功为老板奖励替换背饰")
end
),
changan.switch("替换像框", function()
CYC(0x10d7084, 4, "~A MOV R0, #9")
CYC(0x10d7678, 4, "~A MOVW R0, #" .. gg.prompt({
"请输入你要修改奖励的像框代码"
}, {"22"}, {"text"})[1])
string.toMusic("已成功为老板奖励替换背饰")
end
),
changan.switch("替换跑币", function()
CYC(0x10d7084, 4,"~A MOV R0, #26")
toMusic('开启成功')
end),
}),
} , {
--------------以下是列表四
changan.switch("断网模式",
function()
function BB(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
gg.alert("使用方法:道具赛开局开,到跳秒结束后关闭,一局一开")
BB(0x2abe98c,4,"~A MOVW R0, #1")--某人
gg.alert("断网状态开启成功")
end,
function()
function BB(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
BB(0x2abe98c,4,"~A MOVW R0, #0")--某人
gg.alert("断网状态恢复成功")
end),
changan.switch("隐藏信息",
function()
CYC(0xbcca30 ,4,"~A MOV R0, #0")
CYC(0x2b86770 ,4,"~A MOV R0, #0")
CYC(0x2cd2e8c ,4,"~A MOV R0, #0")
CYC(0x2b857a0 ,4,"~A MOV R0, #1")
CYC(0x1c51a1c ,4,"~A MOV R0, #1")---全局离线
gg.alert(os.date'己为您开启隐藏信息,可预防MK查看跑号')
string.toMusic('己为您开启隐藏信息,可预防MK查看跑号')
end),
changan.box({"实用功能",
changan.button("全服排名",
function()
MR(0xe3dbf4 ,4,"~A MOVW R0, #"..gg.prompt({"请输入你想要的全服排名"},{"1"},{"text"})[1])
toMusic('开启成功')
end),
changan.button("省服排名",
function()
CYC(0xE3DC9C,4,"~A MOVW R0, #1")--某人
string.toMusic("全省排名开启成功")
end),
changan.button("观战比赛",
function()
CYC(0x12da6e0 ,4,"~A MOVW R0, #1")
string.toMusic("赛事调出成功请前往道具赛界面查看")
end),
}),
changan.box({"冲榜功能",---box2示例 可以删掉
changan.switch("自动开板",
function()
function BR(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
BR(0x1cc9d90 ,4,"~A B +0x223C")
toMusic("开启成功")
end,
function()
ACAT.BOOL_HF(0x1cc9d90,"恢复")---这里是查看原值[一定要放功能前面]
A_MR(RecoveryList["恢复"][1],RecoveryList["恢复"][2],RecoveryList["恢复"][3])---这里是恢复
toMusic("恢复成功")
end),
changan.switch("无视能量",
function()
function R(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
R(0x1cc6d34, 4, '~A MOVW R0, #0')--无视能量
toMusic("开启成功")
end),
changan.switch("无宝聚能",
function()
function BY(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
BY(0x1cca238 ,4,"~A B +0x19EC")
toMusic('开启成功')
end,
function()
BY(0x1cca238,"F04F2DE9r","1CB08DE2r")
toMusic("恢复成功")
end),
changan.switch("防道具",
function()
function TT(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
TT(0x1e1dc38,4,"~A MOVW R0, #1")--某人
TT(0x1e1dabc,4,"~A MOVW R0, #1")--某人
toMusic('开启成功')
end,
function()
TT(0x1e1dc38,4,"~A MOVW R0, #0")--某人
TT(0x1e1dabc,4,"~A MOVW R0, #0")--某人
toMusic('恢复成功')
end),
changan.switch("无限时间滑板",
function()
search(1300,16,32)
py1(1000,16,0x18)
py1(6000,16,0x60)
xg1(0,16,0x7C)
xg1(0,16,0x6c)
xg1(1744,16,0x68)
search(300,16,32)
py1(1,4,0x4)
py1(1,4,-0x4)
xg1(0,4,0x1c)
xg1(0,4,0xc)
xg1(9999999,16,0x8)
gg.alert('️滑板无限时长开启成功')
end),
changan.switch("一能量一滑板",
function()
function MJ(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
MJ(0xe94524 ,4,"~AB +0xE17DD0")
gg.alert("开启成功")
end,
function()
ACAT.BOOL_HF(0xe94524,"恢复")---这里是查看原值[一定要放功能前面]
A_MR(RecoveryList["恢复"][1],RecoveryList["恢复"][2],RecoveryList["恢复"][3])---这里是恢复
gg.alert("恢复成功")
end),
changan.switch("能量倍增",
function()
gg.alert("多跳跃下滑几次后,捡拾的能量即可翻倍")
HX_value(200)--自定义200条--防模糊
MR(0xec92e4 ,4,"~AB +0xE02940")
MR(0xec94ac ,4,"~AB +0xE02778")
gg.alert("己为您开启能量倍增")
end),
changan.switch("上下聚能",
function()
function BB(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
ftz(50,4,"~A MOVW R0, #0")--某人
BB(0x1abd014 ,4,"~A MOVW R0, #0")
BB(0x1cca238 ,4,"~A B +0x19EC")
gg.alert("开启成功")
end),
changan.switch("滑板聚能",
function()
MR(0x1cca818,4,"~AB +0x140C")--某人
gg.alert("成功")
end),
changan.switch("道具效果乌龟",
function()
MR(0x1cd2328,4,"~A MOVW R0, #1")--某人
toMusic('开启成功')
end),
changan.switch("道具效果恶魔",
function()
MR(0x1cd22fc,4,"~A MOVW R0, #1")--某人
toMusic('开启成功')
end),
changan.switch("道具效果磁铁",
function()
MR(0x1cd23e0,4,"~A MOVW R0, #1")--某人
toMusic('开启成功')
end),
changan.switch("下滑穿透",
function()
qmnb = {
{["memory"] = 32},
{["name"] = "下滑瞬移"},
{["value"] = -8388608, ["type"] = 4},
{["lv"] = -1082130432, ["offset"] = -16, ["type"] = 4},
{["lv"] = 2139095040, ["offset"] = -8, ["type"] = 4},
}
qmxg = {
{["value"] = 99999, ["offset"] = -64, ["type"] = 16},
}
xqmnb(qmnb)
gg.toast("开启成功")
end,
function()
qmnb = {
{["memory"] = 32},
{["name"] = "恢复瞬移"},
{["value"] = -8388608, ["type"] = 4},
{["lv"] = -1082130432, ["offset"] = -16, ["type"] = 4},
{["lv"] = 2139095040, ["offset"] = -8, ["type"] = 4},
}
qmxg = {
{["value"] = 0, ["offset"] = -64, ["type"] = 16},
}
xqmnb(qmnb)
end),
changan.switch("无视障碍",
function()
function RR(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
RR(0x1d7bfb4,4,"~A MOVW R0, #1")--某人
toMusic('开启成功')
end,
function()
end),
changan.switch("娱乐功能",
function()
gg.alert('功能\n跳高\n无敌\n翱翔\n无限跳\n瞬移')
CYC(0x1d9ba40, 4,"~A MOVW R0, #1")
gg.alert('等待两秒开启下一个功能')
toMusic('等待两秒开启下一个功能')
gg.sleep(1900)
CYC(0x2b3173c, 4,"~A MOVW R0, #1")
gg.alert('等待两秒开启下一个功能')
toMusic('等待两秒开启下一个功能')
gg.sleep(1900)
CYC(0x1d9be20, 4,"~A MOVW R0, #1")
gg.alert('等待两秒开启下一个功能')
toMusic('等待两秒开启下一个功能')
gg.sleep(1900)
CYC(0x1ab9608, 4,"~A MOVW R0, #1")
gg.alert('等待两秒开启下一个功能')
toMusic('等待两秒开启下一个功能')
CYC(0x1d9bf90, 4,"~A MOVW R0, #1")
gg.alert('娱乐功能已完毕')
toMusic('娱乐功能已完毕')
end),
changan.text("切记功能要在局内开启,否则失效" , "#000000" , "20sp" ) ,
changan.check ( {
{"全局速度",
function()
gg.setRanges(32)
local Name="全局速度"
local dataType = 16
local tb1 = {{6000, 0x0}}
local tb2 = {{0,-0x5C},{0,-0x6C},{1300,-0x70}}
SearchWrite(tb1, tb2, dataType)
gg.alert('成功')
toMusic("开启成功")
end,
function()
end},
{"穿透",
function()
search(4.5,16)
py1(5.5,16,16)
xg1(9191,16,0,true)
xg1(9192,16,16,true)
gg.alet('成功')
end
},
{"全局速度",
function()
function SearchWrite(Search, Write, Type)
gg.clearResults()
gg.setVisible(false)
gg.searchNumber(Search[1][1], Type)
local count = gg.getResultCount()
local result = gg.getResults(count)
gg.clearResults()
local data = {}
local base = Search[1][2]
if (count > 0) then
for i, v in ipairs(result) do
v.isUseful = true
end
for k=2, #Search do
local tmp = {}
local offset = Search[k][2] - base
local num = Search[k][1]
for i, v in ipairs(result) do
tmp[#tmp+1] = {}
tmp[#tmp].address = v.address + offset
tmp[#tmp].flags = v.flags
end
tmp = gg.getValues(tmp)
for i, v in ipairs(tmp) do
if ( tostring(v.value) ~= tostring(num) ) then
result[i].isUseful = false
end
end
end
for i, v in ipairs(result) do
if (v.isUseful) then
data[#data+1] = v.address
end
end
if (#data > 0) then
local t = {}
local base = Search[1][2]
for i=1, #data do
for k, w in ipairs(Write) do
offset = w[2] - base
t[#t+1] = {}
t[#t].address = data[i] + offset
t[#t].flags = Type
t[#t].value = w[1]
if (w[3] == true) then
local item = {}
item[#item+1] = t[#t]
item[#item].freeze = true
gg.addListItems(item)
end
end
end
gg.setValues(t)
else
return false
end
else
return false
end
end
gg.setRanges(32)
local Name="全局速度"
local dataType = 16
local tb1 = {{6000, 0x0}}
local tb2 = {{0,-0x5C},{0,-0x6C},{1300,-0x70}}
SearchWrite(tb1, tb2, dataType)
gg.alert('成功')
toMusic("开启成功")
end,
function()
end},
{"滑板延长",
function()
ms = { }
function setvalue ( add , value , falgs , dj )
local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
if dj == true then
WY [ 1 ].freeze = true gg.addListItems ( WY )
else
gg.setValues ( WY )
end
end
function ms.ss ( num , ty , nc )
local GGNUMBER_1 = num
local GGNUMBER_2 = ty
local GGNUMBER_3 = false
local GGNUMBER_4 = gg.SIGN_EQUAL
local GGNUMBER_5 = 0x3000000
local GGNUMBER_6 = 0xFFFFFFFF
local GGNUMBER_7 = 0
gg.clearResults ( )
gg.setRanges ( nc )
gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
Result = gg.getResults ( gg.getResultCount ( ) )
end
function ms.py ( num , py , ty )
if ( Result and # Result ~= 0 ) then
t = { }
for i , v in ipairs ( Result ) do
t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
end
t = gg.getValues ( t )
for i , v in ipairs ( t ) do
if v.value ~= num then
Result [ i ] = nil
end
end
local MS = { }
for i , v in pairs ( Result ) do
MS [ # MS + 1 ] = v
end
Result = MS
end
end
function ms.bc ( )
data = { }
if Result == nil or # Result == 0 then
gg.alert ( "开启失败" )
else
for i , v in pairs ( Result ) do
data [ # data + 1 ] = v.address
end
end
Result = nil
end
function ms.edit ( nn , off , ty , dj )
if ( Result ) then
ms.bc ( )
end
if # data > 0 then
for i , v in ipairs ( data ) do
setvalue ( v + off , nn , ty , dj or false )
end
gg.toast ( Name.."成功" )
end
end
Name = "滑板延长"
ms.ss ( "1300" , 16 , 32 )
ms.py ( 1000 , 0x18 , 16 )
ms.py ( 6000 , 0x60 , 16 )
ms.edit ( 0 , 0x7c , 16 )
ms.edit ( 0 , 0x6c , 16 )
ms.edit ( 2035 , 0x68 , 16 )
string.toMusic("滑板延长成功")
end,
function()
end},
{"滑板速度",
function()
function SearchWrite(Search, Write, Type)
gg.clearResults()
gg.setVisible(false)
gg.searchNumber(Search[1][1], Type)
local count = gg.getResultCount()
local result = gg.getResults(count)
gg.clearResults()
local data = {}
local base = Search[1][2]
if (count > 0) then
for i, v in ipairs(result) do
v.isUseful = true
end
for k=2, #Search do
local tmp = {}
local offset = Search[k][2] - base
local num = Search[k][1]
for i, v in ipairs(result) do
tmp[#tmp+1] = {}
tmp[#tmp].address = v.address + offset
tmp[#tmp].flags = v.flags
end
tmp = gg.getValues(tmp)
for i, v in ipairs(tmp) do
if ( tostring(v.value) ~= tostring(num) ) then
result[i].isUseful = false
end
end
end
for i, v in ipairs(result) do
if (v.isUseful) then
data[#data+1] = v.address
end
end
if (#data > 0) then
local t = {}
local base = Search[1][2]
for i=1, #data do
for k, w in ipairs(Write) do
offset = w[2] - base
t[#t+1] = {}
t[#t].address = data[i] + offset
t[#t].flags = Type
t[#t].value = w[1]
if (w[3] == true) then
local item = {}
item[#item+1] = t[#t]
item[#item].freeze = true
gg.addListItems(item)
end
end
end
gg.setValues(t)
else
return false
end
else
return false
end
end
gg.setRanges(32)
local Name="滑板加速"
local dataType = 16
local tb1 = {{6000.0, 0x0}}
local tb2 = {{0,0xC},{0,0x1C},{1876.0,0x8}}
SearchWrite(tb1, tb2, dataType)
string.toMusic('滑板加速开启成功')
end,
function()
end},
{"加速带速度",
function()
function SearchWrite(Search, Write, Type)
gg.clearResults()
gg.setVisible(false)
gg.searchNumber(Search[1][1], Type)
local count = gg.getResultCount()
local result = gg.getResults(count)
gg.clearResults()
local data = {}
local base = Search[1][2]
if (count > 0) then
for i, v in ipairs(result) do
v.isUseful = true
end
for k=2, #Search do
local tmp = {}
local offset = Search[k][2] - base
local num = Search[k][1]
for i, v in ipairs(result) do
tmp[#tmp+1] = {}
tmp[#tmp].address = v.address + offset
tmp[#tmp].flags = v.flags
end
tmp = gg.getValues(tmp)
for i, v in ipairs(tmp) do
if ( tostring(v.value) ~= tostring(num) ) then
result[i].isUseful = false
end
end
end
for i, v in ipairs(result) do
if (v.isUseful) then
data[#data+1] = v.address
end
end
if (#data > 0) then
local t = {}
local base = Search[1][2]
for i=1, #data do
for k, w in ipairs(Write) do
offset = w[2] - base
t[#t+1] = {}
t[#t].address = data[i] + offset
t[#t].flags = Type
t[#t].value = w[1]
if (w[3] == true) then
local item = {}
item[#item+1] = t[#t]
item[#item].freeze = true
gg.addListItems(item)
end
end
end
gg.setValues(t)
else
return false
end
else
return false
end
end
gg.setRanges(32)
local Name="加速带速度微加"
local dataType = 16
local tb1 = {{6000, 0x0}}
local tb2 = {{0,-0x44},{0,-0x54},{2500,-0x58}}
SearchWrite(tb1, tb2, dataType)
gg.alert('成功')
toMusic("开启成功")
end,
function()
end},
{"基础速度",
function()
function SearchWrite(Search, Write, Type)
gg.clearResults()
gg.setVisible(false)
gg.searchNumber(Search[1][1], Type)
local count = gg.getResultCount()
local result = gg.getResults(count)
gg.clearResults()
local data = {}
local base = Search[1][2]
if (count > 0) then
for i, v in ipairs(result) do
v.isUseful = true
end
for k=2, #Search do
local tmp = {}
local offset = Search[k][2] - base
local num = Search[k][1]
for i, v in ipairs(result) do
tmp[#tmp+1] = {}
tmp[#tmp].address = v.address + offset
tmp[#tmp].flags = v.flags
end
tmp = gg.getValues(tmp)
for i, v in ipairs(tmp) do
if ( tostring(v.value) ~= tostring(num) ) then
result[i].isUseful = false
end
end
end
for i, v in ipairs(result) do
if (v.isUseful) then
data[#data+1] = v.address
end
end
if (#data > 0) then
local t = {}
local base = Search[1][2]
for i=1, #data do
for k, w in ipairs(Write) do
offset = w[2] - base
t[#t+1] = {}
t[#t].address = data[i] + offset
t[#t].flags = Type
t[#t].value = w[1]
if (w[3] == true) then
local item = {}
item[#item+1] = t[#t]
item[#item].freeze = true
gg.addListItems(item)
end
end
end
gg.setValues(t)
else
return false
end
else
return false
end
end
gg.setRanges(32)
local Name="基础速度微加"
local dataType = 16
local tb1 = {{6000, 0x0}}
local tb2 = {{0,0x34},{0,0x24},{1400,0x20}}
SearchWrite(tb1, tb2, dataType)
gg.alert('成功')
toMusic("开启成功")
end,
function()
end},
{"减速恢复",
function()
function SearchWrite(Search, Write, Type)
gg.clearResults()
gg.setVisible(false)
gg.searchNumber(Search[1][1], Type)
local count = gg.getResultCount()
local result = gg.getResults(count)
gg.clearResults()
local data = {}
local base = Search[1][2]
if (count > 0) then
for i, v in ipairs(result) do
v.isUseful = true
end
for k=2, #Search do
local tmp = {}
local offset = Search[k][2] - base
local num = Search[k][1]
for i, v in ipairs(result) do
tmp[#tmp+1] = {}
tmp[#tmp].address = v.address + offset
tmp[#tmp].flags = v.flags
end
tmp = gg.getValues(tmp)
for i, v in ipairs(tmp) do
if ( tostring(v.value) ~= tostring(num) ) then
result[i].isUseful = false
end
end
end
for i, v in ipairs(result) do
if (v.isUseful) then
data[#data+1] = v.address
end
end
if (#data > 0) then
local t = {}
local base = Search[1][2]
for i=1, #data do
for k, w in ipairs(Write) do
offset = w[2] - base
t[#t+1] = {}
t[#t].address = data[i] + offset
t[#t].flags = Type
t[#t].value = w[1]
if (w[3] == true) then
local item = {}
item[#item+1] = t[#t]
item[#item].freeze = true
gg.addListItems(item)
end
end
end
gg.setValues(t)
else
return false
end
else
return false
end
end
gg.setRanges(32)
local Name="减速恢复微加"
local dataType = 16
local tb1 = {{6000, 0x0}}
local tb2 = {{0,0x3C},{0,0x4C},{10000,0x38}}
SearchWrite(tb1, tb2, dataType)
gg.alert('成功')
toMusic("开启成功")
end,
function()
end},
})
}),
changan.box({"娱乐功能",---box2示例 可以删掉
changan.switch("好友赛防踢",
function()
MR(0x1e37880, 4,"~A MOVW R0, #1")--某人
end),
changan.edit('lsdw1','修改道具赛历史段位全\n6=王者'),
changan.edit('pvp1','道具赛匹配边框'),
changan.button('执行修改', function()
local lsdw=tonumber(changan.getedit('lsdw1'))
if lsdw ~= nil and lsdw ~= "" then
CYC(0xBD1E50 ,4 , "~A MOVW R0, #"..lsdw)
toMusic('开启成功')
end
local pvpbk=tonumber(changan.getedit('pvp1'))
if pvpbk ~= nil and pvpbk ~= "" then
CYC(0x181A068 ,4 , "~A MOVW R0, #"..pvpbk)
toMusic('开启成功')
end
end),
changan.switch("开局道具转换",
function()
MR = gg.prompt({'简介:\n道具代码:\n1=恶魔\n2=乌龟\n3=颜料\n4=能量[1;4]'},{[1]=1},{[1]='number'})[1]
if not MR then return end
MR(0xb7caa0 ,4,"~A MOVW R0, #"..changan.."")
string.toMusic("开启成功")
end),
changan.switch("锁显道具",
function()
MR(0x1cca818 ,4,'~A MOV R0, #'..gg.prompt({"道具类型\n无 = 0 导弹 = 1 蓝泡 = 2 护盾 = 4 香蕉 = 8\n章鱼 = 16 眩晕 = 32 绿泡 = 64 狗子 = 128 能量 = 256\n乌龟 = 272 云雾 = 288 净化 = 320 磁铁 = 384 加速 = 562"},{""},{"number"})[1])
toMusic('锁定显示道具成功')
end),
changan.switch("无视减速带",
function()
function MM(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
开启失败
失败原因:进程存储太小!
解决方案:刷新进程后重启开启
]])
end
MM(0x1d87308,4,"~A MOVW R0, #1")--某人
end),
changan.switch("无限护盾",
function()
MR(0x1cd1050, 4,"~A MOVW R0, #1")--某人
toMusic('开启成功')
end),
changan.switch("群体护盾",
function()
MR(0x1c51d00, 4,"~A MOVW R0, #1")--某人
toMusic('开启成功')
end),
changan.switch("宝物无CD",
function()
MR(0x101d4ac ,4,"~A MOV R0, #2")
MR(0x101d66c ,4,"~A MOV R0, #1")
MR(0x101dcbc ,4,"~A MOV R0, #0")
string.toMusic("宝物无CD开启成功")
end),
}),
changan.box({"分数赛",---box2示例 可以删掉
changan.switch("金币消失",
function()
CYC(0xeb3e54,4,"~A MOVW R0, #0")--某人
gg.alert('开启成功')
end),
changan.switch("速度起飞",
function()
changan = gg.prompt({'请输入需要修改的倍数,建议改60'},{[1]=60},{[1]='number'})[1]
local t = {"libunity.so:bss", "Cb"}
local tt = {0x831C, 0xEC}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = changan, freeze = true}})
string.toMusic("速度起飞开启成功")
end,
function ()
local t = {"libunity.so:bss", "Cb"}
local tt = {0x831C, 0xEC}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = 1, freeze = true}})
string.toMusic("速度起飞恢复成功")
end),
changan.switch("无限跳跃",
function()
CYC(0x1ab9608, 4,"~A MOVW R0, #1")
gg.alert('开启')
end,
function()
end),
changan.switch("人物无敌",
function()
CYC(0x2b3173c, 4,"~A MOVW R0, #1")
gg.alert('开启成功')
end,
function()
end),
}), } ,
{
--------------以下是列表五
changan.button("精选视频",
function()
gg.playVideo("http://pan.klf.icu/view.php/6b3292692c953b3fc481215772b3ba4c.mp4")
end),
changan.switch("动态人物",
function ()
---@type ui
local ui = require('ui')
---@type windowManager
local windowManager = require('windowManager')
do
local path = file.getCacheName('9b78f722.gif')
-- 通过文件MD5判断是否有缓存文件
if not file.md5(path, '0fe37fb6ef265d527ba8ed9280efab27') then
assert(downloadLanzou('https://lanzoux.com/iadwQ1io64ba', {
passwd = 'a8go'
}, path))
else
-- print('缓存了')
end
-- GifImageView:android.widget.ImageView
local gifImageView = luajava.loadlayout({
'ui.GifImageView',
src = path,
})
viewManager=windowManager:bindView(gifImageView)
viewManager:setMoveable(true)
viewManager:show()
viewManager:park() end end,
function()
viewManager:unpark() end),
changan.button("随机播放",
function()
A="https://api.uomg.com/api/rand.music?sort=热歌榜&format=json"
Obtain=gg.makeRequest(A).content
muchen=Obtain:match('url":"(.-)","picurl')
name=Obtain:match('name":"(.-)","')
gg.toast('开始播放['..name..']')
gg.playMusic(muchen)
end),
changan.button("停止播放",
function()
gg.toast("正在停止播放...")
for i=1,100 do
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end
gg.toast("播放已停止")
gg.toast("无正在播放的音乐")
end),
changan.box({"随机区",
changan.radio({
"随机排行榜音乐" , ---小标题
{"热歌榜",--小功能名
function()
A="https://api.uomg.com/api/rand.music?sort=热歌榜&format=json"
Obtain=gg.makeRequest(A).content
muchen=Obtain:match('url":"(.-)","picurl')
name=Obtain:match('name":"(.-)","')
gg.alert('开始播放['..name..']')
gg.playMusic(muchen)
end
},
{
"新歌榜",
function()
A="https://api.uomg.com/api/rand.music?sort=新歌榜&format=json"
Obtain=gg.makeRequest(A).content
muchen=Obtain:match('url":"(.-)","picurl')
name=Obtain:match('name":"(.-)","')
gg.alert('开始播放['..name..']')
gg.playMusic(muchen)
end
},
{ "飙升榜",
function()
A="https://api.uomg.com/api/rand.music?sort=飙升榜&format=json"
Obtain=gg.makeRequest(A).content
muchen=Obtain:match('url":"(.-)","picurl')
name=Obtain:match('name":"(.-)","')
gg.alert('开始播放['..name..']')
gg.playMusic(muchen)
end
},
{
"抖音榜",
function()
A="https://api.uomg.com/api/rand.music?sort=抖音榜&format=json"
Obtain=gg.makeRequest(A).content
muchen=Obtain:match('url":"(.-)","picurl')
name=Obtain:match('name":"(.-)","')
gg.alert('开始播放['..name..']')
gg.playMusic(muchen)
end
},
{
"电音榜",
function()
A="https://api.uomg.com/api/rand.music?sort=电音榜&format=json"
Obtain=gg.makeRequest(A).content
muchen=Obtain:match('url":"(.-)","picurl')
name=Obtain:match('name":"(.-)","')
gg.alert('开始播放['..name..']')
gg.playMusic(muchen)
end
},
}),
}),
changan.box({"音乐区",---box2示例 可以删掉
changan.switch("Walk",
function()
gg.playMusic('http://music.163.com/song/media/outer/url?id=1873321491.mp3')
end,
function()
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end),
changan.switch("catch",
function()
gg.playMusic('http://music.163.com/song/media/outer/url?id=26286214.mp3')
end,
function()
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end),
changan.switch("Me",
function()
gg.playMusic('https://music.163.com/song/media/outer/url?id=1990363532.mp3')
end,
function()
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end),
changan.switch("已魔怔求打压",
function()
gg.playMusic("https://tc.1haodh.com/view.php/81685e1fe940f87d9b03f5e831dfe5e2.mp3")
end,
function()
for i=1,100 do
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end
end),
changan.switch("魔怔了老弟🤓",
function()
gg.playMusic("https://tc.1haodh.com/view.php/be40342567bfef8d0a69056ca0cdddc0.mp3")
end,
function()
for i=1,100 do
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end
end),
changan.switch("烧酒歌",
function()
gg.playMusic("https://tc.1haodh.com/view.php/0f6ae6a555ad6e1869208e7b81ad9804.mp3")
end,
function()
for i=1,100 do
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end
end),
changan.switch("不是哥们你有啥实力",
function()
gg.playMusic("https://tc.1haodh.com/view.php/7a56ed4a29b425d731ea54c0e114fec4.mp3")
end,
function()
for i=1,100 do
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end
end),
changan.switch("心做",
function()
gg.playMusic("https://tc.1haodh.com/view.php/941841d6be10e0450d71a8af19d21cd0.mp3")
end,
function()
for i=1,100 do
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end
end),
changan.switch("心如止水",
function()
gg.playMusic("http://music.163.com/song/media/outer/url?id=1928002636.mp3")
end,
function()
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end),
changan.switch("篝火旁",
function()
gg.playMusic("http://music.163.com/song/media/outer/url?id=518725853.mp3")
end,
function()
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end),
changan.switch( "凭什么觉得 I LOVE YOU",
function()
gg.playMusic("http://music.163.com/song/media/outer/url?id=2020310968.mp3")
end,
function()
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end),
changan.switch( "月亮之矢",
function()
gg.playMusic("http://music.163.com/song/media/outer/url?id=419375250.mp3")
end,
function()
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end),
changan.switch("把美好的回忆拼给你",
function()
gg.playMusic("https://tc.1haodh.com/view.php/a05030257801c32066a5e9ba7b49f438.mp3")
end,
function()
for i=1,100 do
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end
end),
changan.switch("旧金山",
function()
gg.playMusic("http://music.163.com/song/media/outer/url?id=2024109979.mp3")
end,
function()
for i=1,100 do
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end
end),
changan.switch("你看到了我",
function()
gg.playMusic("http://music.163.com/song/media/outer/url?id=1377530437.mp3")
end,
function()
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end),
changan.switch("可不可以",
function()
gg.playMusic("https://tc.1haodh.com/view.php/b62320eca1a8df9958fd26773d499105.mp3")
end,
function()
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end),
changan.switch("Neeva",
function()
gg.playMusic("https://out.zxglife.top/view.php/16fa44c6165f5828dff9cfd7cecb84d9.mp3")
end,
function()
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end),
}),
},
{
--------------以下是列表六
changan.button ("退出" ,
function ()
tuichu = 1
end),
}
})