-- 定义公告内容
local announcement = [[
✨公告✨
时间是一双眼睛 见喜 见忧 见离别
tg@CJYNB66
此作品仅供个人交流学习使用
请勿用于非法犯罪用途
如有侵权请联系删除
]]
-- 检查是否需要显示公告
local function shouldShowAnnouncement()
-- 检查是否存在标志文件
local file = io.open("/storage/emulated/0/announcement_huio.txt", "r")
if file then
file:close()
return false
else
return true
end
end
-- 保存标志文件,避免再次显示公告
local function saveAnnouncementShown()
local file = io.open("/storage/emulated/0/announcement_huio.txt", "w")
if file then
file:close()
end
end
-- 显示公告
local function showAnnouncement()
local result = gg.alert(announcement, "确定", "不再提示")
if result == 2 then -- 用户点击了“不再提示”
saveAnnouncementShown()
end
end
-- 主逻辑
if shouldShowAnnouncement() then
showAnnouncement()
end
--[[
os.remove ("/storage/emulated/0/announcement_shoy.txt")
os.remove ("/storage/emulated/0/announcement_shob.txt")
os.remove ("/storage/emulated/0/announcement_shou.txt")
os.remove ("/storage/emulated/0/announcement_show.txt")
os.remove ("/storage/emulated/0/announcement_shuw.txt")
--]]
lmttkx="340dp"
lmttk="200dp"
local lmnb = gg.alert('请根据机型选择大小模式', '平板模式', '手机模式')
if lmnb == 1 then
lmttkx="430dp"
lmttk="400dp"
gg.toast("您选择了平板模式")
elseif lmnb == 2 then
lmttkx="340dp"
lmttk="200dp"
gg.toast("您选择了手机模式")
end
params={}
floattable={}
local material3 = elgg.import('material3')
context=material3:getContext()
M3context=context
context.setTheme(0x7f090069)
import('android.content.res.ColorStateList')
RadTint=ColorStateList({
{android.R.attr.state_checked},
{-android.R.attr.state_checked},
{},
}, {
0xffffffff,
0xffffffff,
0xffffffff
})
swctrack=ColorStateList({
{android.R.attr.state_checked},
{-android.R.attr.state_checked},
},
{
'0xffffffff',
'0x55ffffff',
})
swcDraw=ColorStateList({
{android.R.attr.state_checked},
{-android.R.attr.state_checked},
},
{
0xffaaaaaa ,
0xffe5e5e5,
})
swcThumb=ColorStateList({
{android.R.attr.state_checked},
{android.R.attr.state_pressed},
{-android.R.attr.state_pressed},
},
{
0xffffffff,
0xffffffff,
0x99999999
})
import 'android.graphics.Bitmap'
import 'android.renderscript.Allocation'
import 'android.renderscript.Element'
import 'android.renderscript.RenderScript'
import 'android.renderscript.ScriptIntrinsicBlur'
import 'android.graphics.Canvas'
import 'android.graphics.Rect'
import "android.animation.ObjectAnimator"
import "android.view.animation.Animation"
import "android.animation.ArgbEvaluator"
import "android.animation.ValueAnimator"
import "android.graphics.Color"
import'com.google.android.material.divider.MaterialDivider'
import'com.google.android.material.progressindicator.*'
import'com.google.android.material.dialog.MaterialAlertDialogBuilder'
import'com.google.android.material.tabs.TabItem'
import'androidx.coordinatorlayout.widget.CoordinatorLayout'
import'com.google.android.material.button.MaterialButton'
import'androidx.appcompat.widget.LinearLayoutCompat'
import'com.google.android.material.slider.Slider'
import'com.google.android.material.materialswitch.MaterialSwitch'
import'com.google.android.material.card.MaterialCardView'
import'androidx.transition.Transition'
import'androidx.transition.Scene'
import'androidx.transition.TransitionManager'
import'androidx.transition.TransitionSet'
import'androidx.transition.ChangeBounds'
import'androidx.transition.Fade'
import'androidx.constraintlayout.motion.widget.MotionLayout'
import"android.view.animation.AccelerateInterpolator"
import"android.view.animation.DecelerateInterpolator"
import"androidx.interpolator.view.animation.FastOutLinearInInterpolator"
import"androidx.interpolator.view.animation.LinearOutSlowInInterpolator"
import"android.view.animation.OvershootInterpolator"
import 'android.animation.ValueAnimator$AnimatorUpdateListener'
import 'android.animation.TypeEvaluator'
import 'android.graphics.PorterDuff'
import 'android.graphics.PorterDuffColorFilter'
import "android.app.*"
import "android.os.*"
import "android.widget.*"
import "android.view.*"
import "android.content.*"
import "java.util.*"
import "java.lang.*"
import "android.*"
import "android.graphics.drawable.*"
import "android.graphics.PixelFormat"
import "android.view.animation.Animation"
import "android.view.animation.RotateAnimation"
import "android.animation.ObjectAnimator"
import "android.view.animation.DecelerateInterpolator"
import "android.ext.*"
import "android.ext.MainService"
import "android.graphics.drawable.GradientDrawable"
import "android.graphics.Typeface"
import "java.io.File"
import "luaj.lib.ModLib"
import "android.ext.Tools"
import 'android.graphics.RectF'
import "android.app.*"
import "android.os.*"
import "android.widget.*"
import "android.view.*"
import "android.content.*"
import "java.util.*"
import "java.lang.*"
import "android.*"
import "android.graphics.drawable.*"
import "android.graphics.PixelFormat"
import "android.view.animation.Animation"
import "android.view.animation.RotateAnimation"
import "android.animation.ObjectAnimator"
import "android.view.animation.DecelerateInterpolator"
import "android.ext.*"
import "android.ext.MainService"
import "android.graphics.drawable.GradientDrawable"
import "android.graphics.Typeface"
import "java.io.File"
import "luaj.lib.ModLib"
import "android.ext.Tools"
context = activity
function getBG(colors, radiu, bk1, bk2)
local GradientDrawable = luajava.bindClass("android.graphics.drawable.GradientDrawable")
local drawable = GradientDrawable.new()
drawable.setGradientType(GradientDrawable.LINEAR_GRADIENT)
if type(colors)=="table" then
drawable.setColors(luajava.toArray(colors,'int'))
else
drawable.setColors(luajava.toArray({colors,colors},'int'))
end
if type(radiu)=='table' then
drawable.setCornerRadii({radiu[1],radiu[1],radiu[2],radiu[2],radiu[3],radiu[3],radiu[4],radiu[4]})
else
drawable.setCornerRadii({radiu,radiu,radiu,radiu,radiu,radiu,radiu,radiu})
end
if bk1 ~= nil and bk2 ~= nil then drawable.setStroke(bk1, bk2) end
return drawable
end
file.checkDir('/sdcard/长安')
file.checkDir('/sdcard/长安/图片/')
luajava.runUiThread=luajava.runOnUiThread
local dpi=context.getResources().getDisplayMetrics().density
window = context.getSystemService("window") -- 获取窗口管理器
vibra = context.getSystemService(Context.VIBRATOR_SERVICE)
audi = context.getSystemService("audio")
context=M3context
function getpx(x)
if type(x)=='string' then
if string.find(x,'dp') then
x=string.gsub(x,'dp','')
x=tonumber(x)
end
return x*dpi
else
return x
end
end
function getdp(x)
if type(x)=='number' then
return x/dpi..'dp'
else
return x
end
end
function guid()
seed = {
'e','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'
}
tb = {}
for i = 1,32 do
table.insert(tb,seed[math.random(1,16)])
end
sid = table.concat(tb)
return string.format('%s%s%s',
string.sub(sid,1,8),
string.sub(sid,10,16))
end
local mObjectAnimator
local dObjectAnimator
ljids={}
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[1], false) ~=true then
gg.toast("正在下载资源" .. ii .. "/" .. #ckimg .. "\n请耐心等待")
file.download(tmp[2], "/sdcard/长安/图片/" .. tmp[1])
end
end
ckimg = {
{'dex.dex','http://wss.wigwy.xyz/api/get/yjb/707'},
}
for i = 1,#ckimg do
jindu = i
checkimg(ckimg[i],i)
end
if panduan("/sdcard/长安/图片/dex.dex") then
compile "/sdcard/长安/图片/dex.dex"
import 'com.changan.CACore.SwitchButton'
else
gg.alert('UI资源下载异常') os.exit()
end
hanshu=function(v, event) --悬浮球移动事件
local Action = event.getAction()
if Action == MotionEvent.ACTION_DOWN then
isMove = false
-- 点击时的XY坐标
RawX = event.getRawX() -- 获取X坐标
RawY = event.getRawY() -- 获取Y坐标
x = mainLayoutParams.x -- 申明变量xmX为原X坐标
y = mainLayoutParams.y -- 申明变量xmY为原Y坐标
elseif Action == MotionEvent.ACTION_MOVE then
isMove = true
-- 移动时的XY坐标
mainLayoutParams.x = tonumber(x) + (event.getRawX() - RawX)
mainLayoutParams.y = tonumber(y) + (event.getRawY() - RawY)
window.updateViewLayout(xfc, mainLayoutParams)
end
end
luajava.newThread=function(fc)
return {start=function() callAsyncTask(fc) end}
end
newThread=callAsyncTask
function 获取图片(txt)
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.read("/sdcard/长安/图片/"..ntxt) <= 200 then
file.download(txt,"/sdcard/长安/图片/"..ntxt)
end
end
txt = "/sdcard/长安/图片/"..ntxt
end
return txt
end
function getRes(x)
return 获取图片("/sdcard/长安/图片/"..x)
end
luajava.getBitmapDrawable=function(x) bitmapDrawable(x) end
tuifunc=function(v) --退出点击事件
luajava.runOnUiThread(function()
window.removeView(xfc) --移除窗口
suof_animation(suspended_ball,600)
window.addView(xfq, mainLayoutParams)
end)
end
luajava.getIdValue=luajava.getIdView
function sparkle_animation(view,time) -- 闪耀动画
local mObjectAnimator = ObjectAnimator.ofFloat(view, "alpha", 0, 1)
mObjectAnimator.setDuration(time)--动画时间
mObjectAnimator.setInterpolator(DecelerateInterpolator())--动画插值器,减速
mObjectAnimator.start()
end
controlRotation9= function(view, time,t)
local mObjectAnimator = ObjectAnimator.ofFloat(view, "rotation", time,t)
mObjectAnimator.setDuration(400)
mObjectAnimator.start()
end
function zoom_animation(view,time) --缩放动画
local dObjectAnimator = ObjectAnimator.ofFloat(view, "scaleX", 0, 1)
dObjectAnimator.setDuration(time)--动画时间
dObjectAnimator.setInterpolator(DecelerateInterpolator())--动画插值器,减速
dObjectAnimator.start()
end
import("android.media.AudioManager")
audiotype = {
AudioManager.STREAM_ALARM, --手机闹铃的声音
AudioManager.STREAM_MUSIC, --手机音乐的声音
AudioManager.STREAM_NOTIFICATION, --系统提示的通知
AudioManager.STREAM_RING, --电话铃声的声音
AudioManager.STREAM_SYSTEM, --手机系统的声音
AudioManager.STREAM_VOICE_CALL, --语音电话的声音
AudioManager.STREAM_DTMF, --DTMF音调的声音
--AudioManager.STREAM_BLUETOOTH_SCO,
}
yinl = {}
for i = 1,#audiotype do
yinl[i] = {}
yinl[i].type = audiotype[i]
yinl[i].min = audi.getStreamMinVolume(audiotype[i])
yinl[i].max = audi.getStreamMaxVolume(audiotype[i])
yinl[i].now = audi.getStreamVolume(audiotype[i])
end
yltype = 0
function jianting3(func)
yinln = {}
for i = 1,#audiotype do
yinln[i] = {}
yinln[i].type = audiotype[i]
yinln[i].now = audi.getStreamVolume(audiotype[i])
if yinln[i].now > yinl[i].now then
yinl[i].now = yinln[i].now
if yltype == 1 then
yltype = 0
func()
end
elseif yinln[i].now < yinl[i].now then
yinl[i].now = yinln[i].now
if yltype == 0 then
yltype = 1
func()
end
end
end
end
qhkai = 0
qiehuan = function()
if qhkai == 0 then
yinll = 0
qhkai = 1
luajava.runUiThread(function()
fadeout(xfq,500)
fadeout(xfc,500)
end)
gg.sleep(500)
luajava.runUiThread(function()
xfc.setVisibility(View.GONE)
xfq.setVisibility(View.GONE)
end)
else
qhkai = 0
yinll = 1
luajava.runUiThread(function()
xfq.setVisibility(View.VISIBLE)
fadein(xfq,500)
xfc.setVisibility(View.VISIBLE)
fadein(xfc,500)
end)
end
end
function fadein(view,time) -- 闪耀动画
local mObjectAnimator = ObjectAnimator.ofFloat(view, "alpha", 0, 1)
mObjectAnimator.setDuration(time)--动画时间
mObjectAnimator.setInterpolator(DecelerateInterpolator())--动画插值器,减速
mObjectAnimator.start()
end
function fadeout(view,time) -- 闪耀动画
local mObjectAnimator = ObjectAnimator.ofFloat(view, "alpha", 1, 0)
mObjectAnimator.setDuration(time)--动画时间
mObjectAnimator.setInterpolator(DecelerateInterpolator())--动画插值器,减速
mObjectAnimator.start()
end
function sparkle_animation(view,time) -- 闪耀动画
local mObjectAnimator = ObjectAnimator.ofFloat(view, "alpha", 0, 1)
mObjectAnimator.setDuration(time)--动画时间
mObjectAnimator.setInterpolator(DecelerateInterpolator())--动画插值器,减速
mObjectAnimator.start()
end
function zoom_animation(view,time) --缩放动画
local dObjectAnimator = ObjectAnimator.ofFloat(view, "scaleX", 0, 1)
dObjectAnimator.setDuration(time)--动画时间
dObjectAnimator.setInterpolator(DecelerateInterpolator())--动画插值器,减速
dObjectAnimator.start()
end
function suof_animation(view,time) --缩放动画
local dObjectAnimator = ObjectAnimator.ofFloat(view, "scaleX", 0, 1)
dObjectAnimator.setDuration(time)--动画时间
dObjectAnimator.setInterpolator(DecelerateInterpolator())--动画插值器,减速
dObjectAnimator.start()
local ydObjectAnimator = ObjectAnimator.ofFloat(view, "scaleY", 0, 1)
ydObjectAnimator.setDuration(time)--动画时间
ydObjectAnimator.setInterpolator(DecelerateInterpolator())--动画插值器,减速
ydObjectAnimator.start()
end
function slideinleft_animation(view, time) -- 从左边滑入动画
view.setTranslationX(-view.getWidth()) -- 设置起始位置在左侧屏幕外
local mObjectAnimator = ObjectAnimator.ofFloat(view, "translationX", 0)
mObjectAnimator.setDuration(time) -- 动画时间
mObjectAnimator.setInterpolator(DecelerateInterpolator()) -- 动画插值器,减速
mObjectAnimator.start()
end
function slideinright_animation(view, time) -- 从右边滑入动画
view.setTranslationX(view.getWidth()) -- 设置起始位置在右侧屏幕外
local mObjectAnimator = ObjectAnimator.ofFloat(view, "translationX", 0)
mObjectAnimator.setDuration(time) -- 动画时间
mObjectAnimator.setInterpolator(DecelerateInterpolator()) -- 动画插值器,减速
mObjectAnimator.start()
end
function getLayoutParams2()
local LayoutParams = WindowManager.LayoutParams
local layoutParams = luajava.new(LayoutParams)
if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式
layoutParams.type = LayoutParams.TYPE_APPLICATION_OVERLAY
else
layoutParams.type = LayoutParams.TYPE_PHONE
end
layoutParams.format = PixelFormat.RGBA_8888 -- 设置背景
layoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE -- 焦点设置Finish
layoutParams.gravity = Gravity.CENTER -- 重力设置
layoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度
layoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度
return layoutParams
end
function getLayoutParams()
local LayoutParams = WindowManager.LayoutParams
local layoutParams = luajava.new(LayoutParams)
if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式
layoutParams.type = LayoutParams.TYPE_APPLICATION_OVERLAY
else
layoutParams.type = LayoutParams.TYPE_PHONE
end
layoutParams.format = PixelFormat.RGBA_8888 -- 设置背景
layoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE -- 焦点设置Finish
layoutParams.gravity = Gravity.LEFT | Gravity.TOP -- 重力设置
layoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度
layoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度
return layoutParams
end
hansh=function(v, event) --悬浮窗移动事件
local Action = event.getAction()
if Action == MotionEvent.ACTION_DOWN then
isMove = false
-- 点击时的XY坐标
RawX = event.getRawX() -- 获取X坐标
RawY = event.getRawY() -- 获取Y坐标
x = mainLayoutParams.x -- 申明变量xmX为原X坐标
y = mainLayoutParams.y -- 申明变量xmY为原Y坐标
elseif Action == MotionEvent.ACTION_MOVE then
isMove = true
-- 移动时的XY坐标
mainLayoutParams.x = tonumber(x) + (event.getRawX() - RawX)
mainLayoutParams.y = tonumber(y) + (event.getRawY() - RawY)
window.updateViewLayout(xfc, mainLayoutParams)
end
end
function getShepeBackground(color,radiu,bk1,bk2) --设置背景函数
local drawable = luajava.new(GradientDrawable)
drawable.setShape(GradientDrawable.RECTANGLE)
drawable.setColor(color)
drawable.setCornerRadii({radiu,radiu,radiu,radiu,radiu,radiu,radiu,radiu})
if bk1~=nil and bk2~=nil then drawable.setStroke(bk1,bk2) end
return drawable
end
function getCorner(color,radiu1,radiu2,radiu3,radiu4) --设置背景函数
local drawable = luajava.new(GradientDrawable)
drawable.setShape(GradientDrawable.RECTANGLE)
drawable.setColor(color)
drawable.setCornerRadii({radiu1,radiu1,radiu2,radiu2,radiu3,radiu3,radiu4,radiu4})
return drawable
end
function uistart(sview)
if not xfc_height then xfc_height="360dp" end
if xfcpic=='https://rl-1303126286.cos.ap-beijing-fsi.myqcloud.com/changan' then xfcpic='https://rl-1303126286.cos.ap-beijing-fsi.myqcloud.com/12.png' end
if type(stab[1])=='table' then
for i=1,#stab do
stab[i]=stab[i][1]
end
end
gg.hide(true)
if #sview<#stab then gg.alert('菜单功能配置页数少于stab数,请检查\nstab有'..#stab..'个,配置了'..#sview..'页功能') os.exit() end
--悬浮窗菜单
pages={}
bottomBar={
LinearLayout;
onClick=function() end,
layout_height="match_parent";
orientation="vertical";
layout_width="108dp";
gravity='center'
}
for i=1,#stab do
local pag={
LinearLayout;
layout_height="wrap_content";
orientation="vertical";
layout_width="match_parent";
id='page'..i;
}
for j=1,#sview[i] do
if sview[i][j]~=nil then
pag[#pag+1]=sview[i][j]
end
end
pages[i]= {
LinearLayout;
layout_width="match_parent";
layout_height="match_parent";
{
LinearLayout;
layout_height="match_parent";
layout_width="match_parent";
{
ScrollView;
layout_width="match_parent";
VerticalScrollBarEnabled=false;
fillViewport=true,
layout_height="match_parent";
padding='4dp',
pag
};
};
}
bottomBar[#bottomBar+1]={
LinearLayout,
gravity="center",
layout_height = "30dp",
layout_width = "88dp",
layout_marginTop = "3dp",
layout_marginBottom = "3dp",
layout_marginRight = "10dp",
layout_marginLeft = "10dp",
background=getBG(0x75161616,10),
onClick=function() page_main.setCurrentItem(i-1) end,
__onFinish=function(v)
_ENV["jm"..i]=v
end,
{
TextView,
id="jm"..i.."t",
text=stab[i],
gravity = "center",
textSize = "12sp",
textColor = 0xeee6e6e6,
layout_height = "30dp",
layout_width = "88dp",
}
}
end
xfc = {
LinearLayout;
layout_height="fill";
orientation="vertical";
id="touch";
layout_width="fill";
elevation='5dp',
background = getBG(0x75161616, 50);
{
LinearLayout;
layout_height=lmttk;
orientation="horizontal";
id="ooo";
layout_width=lmttkx;
onClick=function() end,
{
LinearLayout;
layout_height="match_parent";
orientation="vertical";
layout_width="wrap_content";
{
TextView,
layout_marginTop='5dp',
layout_width='match_parent',
layout_height='wrap_content',
textSize='13sp',
text=ttitle,
textColor=0xffffffff,
gravity='center',
onClick=function ()
end,
onTouch=hanshu,
},
{
LinearLayout;
layout_weight=1,
layout_height="match_parent";
layout_width="wrap_content";
orientation='vertical',
padding='2dp',
id='jms',
onClick=function() end,
onTouch=hanshu,
{
LinearLayout,
layout_width='wrap_content',
layout_height='match_parent',
orientation='horizontal',
gravity='left',
layout_margin='4dp',
elevation='3dp',
background=getBG(0x44444444,17),
{
ScrollView;
layout_width="wrap_content";
VerticalScrollBarEnabled=false;
layout_height="match_parent";
bottomBar;
};
},
};
},
{
LinearLayout;
layout_height="match_parent";
layout_weight=1,
orientation="vertical";
layout_width="match_parent";
{
LinearLayout;
layout_height="match_parent";
layout_width="match_parent";
orientation='vertical',
{
FrameLayout,
layout_height='30dp',
layout_width='match_parent',
{
LinearLayout,
layout_width='60dp',
layout_height='5dp',
background=getBG(0x75eeeeee, 50),
onClick=function() end,
onTouch=hanshu,
layout_gravity='center',
layout_marginLeft='30dp',
layout_marginTop='10dp',
},
{
TextView,
layout_width='30dp',
layout_height='30dp',
text='<',
textSize='16sp',
textColor=0xffffffff,
gravity='center',
layout_gravity='right',
onClick=tuifunc,
onTouch=hanshu,
},
},
{
PageView;
layout_weight=1,
layout_width="match_parent";
id="page_main";
layout_height="match_parent";
pages=pages;
};
};
};
};
}
xfq = {
LinearLayout;
layout_height="fill";
layout_width="fill";
id="suspended_ball";
{
LinearLayout;
layout_width="wrap_content";
gravity='center_vertical',
background=getBG(0x44444444,18,3,0xffffffff),
{
ImageView;
layout_width="40dp";
src=获取图片(xfcpic);
layout_height="40dp";
padding='2dp',
};
{
TextView,
layout_width='wrap_content',
layout_height='wrap_content',
layout_marginRight='4dp',
gravity='center',
textSize='13sp',
textColor='#ffffff',
text=悬浮窗文字,
},
};
}; --悬浮球
mainLayoutParams = getLayoutParams()
luajava.runOnUiThread(invoke)
while true do
gg.sleep(200)
if Listening then jianting3(qiehuan) end
if UIQuit==1 then break end
end
luajava.runOnUiThread(function()
for k,v in pairs(floattable) do
window.removeView(v)
end
if xfq.isAttachedToWindow() then
window.removeView(xfq,mainLayoutParams)
else
window.removeView(xfc,mainLayoutParams)
end
end)
end
function invoke()
--Looper.prepare()
xfq = loadlayout(xfq)
xfc = loadlayout(xfc)
function longc(v) --退出长摁事件
-- print(luajava.ids)
window.removeView(xfc) --移除窗口
UIQuit=1 -- 同步锁
os.exit()
end
function suspended_ball.onClick(v) --悬浮球点击事件
window.removeView(xfq)
controlBig(xfc,600)
window.addView(xfc,mainLayoutParams)
end
function suspended_ball.onTouch(v, event) --悬浮球移动事件
local Action = event.getAction()
if Action == MotionEvent.ACTION_DOWN then
isMove = false
-- 点击时的XY坐标
RawX = event.getRawX() -- 获取X坐标
RawY = event.getRawY() -- 获取Y坐标
x = mainLayoutParams.x -- 申明变量xmX为原X坐标
y = mainLayoutParams.y -- 申明变量xmY为原Y坐标
elseif Action == MotionEvent.ACTION_MOVE then
isMove = true
-- 移动时的XY坐标
mainLayoutParams.x = tonumber(x) + (event.getRawX() - RawX)
mainLayoutParams.y = tonumber(y) + (event.getRawY() - RawY)
window.updateViewLayout(xfq, mainLayoutParams)
end
end
ooo.onTouch=hanshu
jms.onTouch=hanshu
function Tips()
gg.toast("测试")
end
--子列表点击事件
--设置page页面滑动事件
page_main.setOnPageChangeListener(PageView.OnPageChangeListener{
onPageSelected = function(view)
view=tonumber(string.sub(view,1,1))
当前ui=view+1
end
}
)
luajava.runOnUiThread(function()
xfc.setVisibility(View.GONE)
end)
window.addView(xfc, mainLayoutParams) --添加窗口事件
sparkle_animation(xfc,600)
luajava.runOnUiThread(function()
xfc.setVisibility(View.VISIBLE)
end)
end
switches = {}
local ver = luajava.bindClass("android.os.Build").VERSION.SDK_INT;
function setBackground(view,bg)
if ver<16 then
view.setBackgroundDrawable(bg)
else
view.setBackground(bg)
end
end
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.runOnUiThread(function()
luajava.getIdValue(nid.."k").setVisibility(View.GONE)
luajava.getIdValue(nid.."g").setVisibility(View.VISIBLE)
slideinleft_animation(luajava.getIdValue(nid.."g1"),400)
end)
_ENV[name] = "开"
pcall(func1)
else
vibra.vibrate(9)
luajava.runOnUiThread(function()
luajava.getIdValue(nid.."g").setVisibility(View.GONE)
luajava.getIdValue(nid.."k").setVisibility(View.VISIBLE)
slideinright_animation(luajava.getIdValue(nid.."k1"),400)
end)
_ENV[name] = "关"
pcall(func2)
end
end
return outfunc
end
end
function CALoadV2(func1,func2)
func1= func1 or nothing
func2= func2 or nothing
local v=MaterialSwitch(M3context)
v.setOnCheckedChangeListener({
onCheckedChanged=function(view,isc)
if isc then
callAsyncTask(func1)
else
callAsyncTask(func2)
end
end
})
v.setChecked(false)
v.setTextOn('')
v.setTextOff('')
v.setThumbIconSize(getpx('12dp'))
v.setTrackDecorationTintList(swctrack)
v.setTrackTintList(swcDraw)
v.setThumbTintList(swcThumb)
v.setText('')
v.setLayoutParams(LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
getpx('30dp')
))
return v
end
function CAswitch(name,func1,func2,miaoshu)
local nid = name..guid()
if not name then name = "未设置" end
local rest = {
LinearLayout,
layout_width = 'fill_parent',
layout_height = "47dp",
gravity = "center_vertical",
{
LinearLayout,
layout_width = 'fill_parent',
background = getBG(0x33333333,20),
layout_height = "40dp",
gravity = "center",
elevation = "2dp",
layout_marginRight = "4dp",
layout_marginLeft = "4dp",
{
TextView,
gravity = "top",
text = name,
textColor = "#ffffff",
textSize = "13sp",
layout_width = "80dp",
layout_marginLeft = "10dp",
layout_marginRight = "20dp",
},
{
TextView,
gravity = "center",
layout_height = "match_parent",
text = miaoshu,
textSize = "11sp",
layout_width = "match_parent",
layout_marginLeft = "-30dp",
layout_weight = 1,
textColor = "#A5A5A5",
},
{
SwitchButton,
checked = name=='音量键隐藏UI' and true or false,
layout_width = 'wrap_content',
layout_height = 'wrap_content',
layout_marginRight='8dp',
__onFinish=function(v)
if name=="音量键隐藏UI" then
音量键=true
v.setChecked(true)
end
v.setBackRadius(getpx('3dp'))
v.setThumbColor(swcThumb)
v.setBackColor(swcDraw)
v.setThumbRadius(getpx('2.5dp'))
v.setThumbRangeRatio(2)
v.setThumbMargin(RectF(10,10,10,10))
v.setOnCheckedChangeListener({
onCheckedChanged=function(view,isc)
vibra.vibrate(7)
if isc then
callAsyncTask(func1)
else
callAsyncTask(func2)
end
end
})
end,
}
}
}
return rest
end
function controlWater(view,time) --缩放动画
local dObjectAnimator = ObjectAnimator.ofFloat(view, "scaleX",1, 0.95 ,1)
dObjectAnimator.setDuration(time)--动画时间
dObjectAnimator.setInterpolator(DecelerateInterpolator())--动画插值器,减速
dObjectAnimator.start()
local dObjectAnimator = ObjectAnimator.ofFloat(view, "scaleY", 1, 0.95, 1)
dObjectAnimator.setDuration(time)--动画时间
dObjectAnimator.setInterpolator(DecelerateInterpolator())--动画插值器,减速
dObjectAnimator.start()
end
controlBig = function(view,time)
local dObjectAnimator = ObjectAnimator.ofFloat(view, "scaleX",0, 0.4, 0.7, 1)
dObjectAnimator.setDuration(time)--动画时间
dObjectAnimator.setInterpolator(DecelerateInterpolator())--动画插值器,减速
dObjectAnimator.start()
local dObjectAnimator = ObjectAnimator.ofFloat(view, "scaleY", 0, 0.4, 0.7, 1)
dObjectAnimator.setDuration(time)--动画时间
dObjectAnimator.setInterpolator(DecelerateInterpolator())--动画插值器,减速
dObjectAnimator.start()
end
nothing=function() end
function CAseek(name,bian,smin,smax,nows,steps,lev,func)
func=func or nothing
lev=lev or '倍'
_ENV[bian] =nows or 1
local smin=tonumber(smin)
local smax=tonumber(smax)
steps=steps or 1
if not name then name = "未设置" end
local names = name..guid()
kid=guid().."sk"
local rest={
LinearLayout,
id=luajava.newId(kid),
layout_width = 'match_parent',
layout_marginTop = "3dp",
layout_marginBottom = "3dp",
layout_marginLeft = "5dp" ,
layout_marginRight = "5dp" ,
gravity = "center_vertical",
elevation='3dp',
background = getBG(0x33333333,10),
{
TextView,
padding={"5dp","10dp","0dp","10dp",},
gravity = "top",
textColor='#eeeeee',
text = name,
id = luajava.newId(names),
layout_width = '100dp',
},
{
Slider,
thumbHeight='23dp',
trackHeight='15dp',
trackStopIndicatorSize='0dp',
tickVisible=false,
__onFinish=function(v)
if func then
v.addOnSliderTouchListener({
onStopTrackingTouch=function(v)
callAsyncTask(function()
func(v.getValue())
end)
end
})
end
v.setTrackActiveTintList(ColorStateList({{},},{0xffffffff}))
v.setTrackInactiveTintList(ColorStateList({{},},{0x55ffffff}))
v.setThumbTintList(ColorStateList({{},},{0xffffffff}))
v.addOnChangeListener(function(SeekBar, var2, var3)
_ENV[bian] = steps>=1 and string.format('%d',var2) or string.format('%.1f',var2)
luajava.getIdView(names).setText(name..':'.._ENV[bian]..lev)
end)
end,
layout_width = 'match_parent',
id=luajava.newId(name.."seekbar"),
layout_weight=1,
valueFrom=smin,
valueTo=smax,
value=nows,
stepSize=steps,
}
}
return rest
end
function CAbutton(name,func,color)
if not name then name = "未设置" end
if not func then func=function() end end
if not color or type(color)~='string' then color='0xffeeeeee' end
local rest = {
LinearLayout,
layout_width = 'match_parent',
layout_height = "wrap_content",
gravity = "center_vertical",
{
LinearLayout,
layout_width = 'match_parent',
layout_height='30dp',
gravity = "center_vertical",
background = getBG(0x33333333,10),
elevation='2dp',
layout_marginTop='2dp',
layout_marginBottom='2dp',
layout_marginLeft='6dp',
layout_marginRight='6dp',
onClick=function(v) controlWater(v,400) vibra.vibrate(8) callAsyncTask(func) end,
padding ='3dp',
{
TextView,
layout_height = "wrap_content",
text = name,
textSize = "13sp",
layout_width = "match_parent",
layout_weight = 1,
textColor = color,
gravity='center',
}}
}
return rest
end
function CAtext(txt,color,size,isjz)
local txt=txt or '未设置'
local color=color or '#eeeeee'
local size=size or '13sp'
return {
TextView,
layout_marginLeft='22dp',
layout_marginRight='22dp',
textSize=size,
textColor=color,
text=txt,
layout_height='wrap_content',
layout_width='match_parent',
gravity= isjz and 'center' or 'left',
}
end
gg.setVisible(false)
function CAline(txt)
local tmp={
FrameLayout,
layout_width="match_parent",
layout_height="wrap_content",
padding={'14dp','2dp','14dp','2dp'},
{
TextView,
layout_marginTop="3dp",
layout_width="wrap_content",
layout_height="wrap_content",
padding="0dp",
textColor="#545454",
textSize="12sp",
text=txt,
}
}
return tmp
end
switchs={}
function 开关(name , func1 , func2 )
local localname=name
local tname=name..guid()
if func1 == nil then
func1 = ""
end
if func2 == nil then
func2 = ""
end
if type(func1 ) == "function" then
return function()
namers = _ENV [ tname ]
if namers ~= "开" then
_ENV [ tname ] = "开"
pcall(func1 )
else
_ENV [ tname ] = "关"
pcall(func2 )
end
end
end
end
function CAintcheck(name,func1,func2)
nid = name..guid()
local func = 开关(name,func1,func2,nid)
if not name then name = "未设置" end
local rstt={
LinearLayout,
layout_width = 'match_parent',
layout_height = "wrap_content",
gravity = "center_vertical",
layout_weight=1,
{
LinearLayout,
layout_width = 'match_parent',
layout_height = "wrap_content",
gravity = "center_vertical",
onClick = function() callAsyncTask(func) end,
--elevation='2dp',
layout_marginTop='2dp',
layout_marginBottom='2dp',
layout_marginLeft='2dp',
layout_marginRight='2dp',
padding = {
"6dp","4dp","2dp","4dp"
},
{
TextView,
gravity = "top",
text = name,
textColor = "#ffffff",
textSize = "13sp",
layout_width = 'match_parent',
layout_weight=1,
layout_marginRight = "0dp",
},
{
CheckBox,
__onFinish=function(v)
v.setButtonTintList(RadTint)
end,
onClick=function(v)
vibra.vibrate(7)
callAsyncTask(func)
end,
},}
}
return rstt
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.runOnUiThread(function()
luajava.getIdValue(nid).setBackgroundDrawable(checkbg2)
luajava.getIdValue(nid.."t").setTextColor(0xffffffff)
end)
_ENV[name] = "开"
pcall(func1)
else
vibra.vibrate(9)
luajava.runOnUiThread(function()
luajava.getIdValue(nid).setBackgroundDrawable(checkbg1)
luajava.getIdValue(nid.."t").setTextColor(0xff232323)
end)
_ENV[name] = "关"
pcall(func2)
end
end
end
end
function CAcheck(cklist)
if #cklist==0 then return nil end
local rest = {
LinearLayout,
layout_width = 'fill_parent',
layout_height = "wrap_content",
layout_marginLeft='6dp',
layout_marginRight='6dp',
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 = CAintcheck(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 rest
end
function init() stab=分页 ttitle=标题 xfcpic=悬浮窗图标 end
function visi (tid)
local tview = luajava.getIdView(tid)
if not tview then
return 0
end
if tonumber (tostring (tview . getVisibility ())) == 8.0 then
tview . setVisibility (View.VISIBLE)
controlRotation9(boxpic[tid],0,90)
else
tview . setVisibility (View.GONE)
controlRotation9(boxpic[tid],90,0)
end
end
import "android.animation.LayoutTransition"
layoutTransition=LayoutTransition()
layoutTransition.setDuration(400)
boxes = {}
boxpic = {}
function CAbox(views)
local tid = "box" .. guid()
local t1id = guid()
firadio = {
LinearLayout,
layout_width = 'match_parent',
layout_height = "wrap_content",
orientation = "vertical",
layout_margin='4dp',
layout_marginLeft='2dp',
layout_marginRight='2dp',
elevation='2dp',
background = getBG(0x33333333, 10),
layoutTransition = layoutTransition
}
-- context = contextP
-- context = M3context
if type(views[1]) == "string" or type(views[1]) == "number" then
firadio[# firadio + 1] = {
LinearLayout,
layout_width = 'match_parent',
layout_height = "40dp",
gravity = "center_vertical",
onClick=function(v)
visi(tid)
end,
{
TextView,
text = views[1],
textSize = "13sp",
layout_marginLeft = "10dp",
layout_width = "match_parent",
layout_weight = 1,
textColor = "#eeeeee",
gravity = "left",
},
{
LinearLayout,
padding = { "0dp", "0dp", "10dp", "0dp" },
layout_width = "wrap_content",
layout_height = "wrap_content",
gravity = "center",
{
ImageView ,
src = 获取图片("https://www.cccimg.com/down.php/dfcc155180c66711a66a1c6540db5e03.png"),
layout_width = "24dp" ,
layout_height = "24dp" ,
colorFilter="0xffffffff",
__onFinish=function(v)
boxpic[tid]=v
end,
}
}
}
end
radios = {
LinearLayout,
layout_marginLeft = "0dp",
layout_marginRight = "0dp",
orientation = "vertical",
visibility = "gone",
id = luajava.newId(tid),
padding = "0dp",
layout_width = 'match_parent',
}
for i = 2, # views do
radios[# radios + 1] = views[i]
end
boxes[tid] = loadlayout(radios)
firadio[# firadio + 1] = boxes[tid]
_ENV[t1id] = loadlayout(
{
LinearLayout,
layout_width = 'match_parent',
layout_height = 'wrap_content',
firadio
}
)
return _ENV[t1id]
end
function CAradio(cklist)
local rest = {
LinearLayout ,
layout_width = 'match_parent' ,
layout_height = "wrap_content" ,
orientation = "vertical" ,
}
if type (cklist [1]) == "string" then
rds=2
rest [# rest + 1] = {
TextView ,
gravity = "left" ,
padding="5dp",
text = cklist [1] ,
textSize = "13sp" ,
textColor = 0xffeeeeee,
layout_width = 'match_parent' ,
layout_height = 'wrap_content' ,
layout_marginLeft = "10dp" ,
layout_marginRight = "5dp" ,
layout_marginTop = "0dp" ,
layout_marginBottom = "0dp" ,
}
else
rds=1
end
local restt={
RadioGroup ,
layout_width = 'match_parent' ,
layout_height = "wrap_content" ,
layout_margin = "4dp" ,
gravity = "top" ,
orientation = "vertical" ,
elevation='2dp',
background=getBG({0x33333333,0x33333333},10),
}
for i = rds , # cklist do
local name = cklist [i] [1]
local func = cklist [i] [2]
if not name then
name = "未设置"
end
local nid = name..guid ()
restt [# restt + 1] = {
RadioButton ,
text = name ,
textSize="13sp",
gravity='center_vertical',
textColor = 0xffeeeeee,
layout_width = 'match_parent' ,
layout_height = 'wrap_content' ,
layout_marginLeft = "2dp" ,
layout_marginRight = "2dp" ,
__onFinish=function(v)
v.setButtonTintList(RadTint)
end,
onClick=function()
callAsyncTask(func)
end
}
end
rest [# rest + 1] = restt
return rest
end
namelist = {}
param1 = {}
floattable = {}
function 打开页面(name)
if _ENV['fenye' .. name] == nil then
gg.alert(name .. '页面未创建')
return 0
end
if floattable['fenye' .. name] == 1 then
关闭页面(name)
return
end
floattable['fenye' .. name] = 1
luajava.runOnUiThread(function()
window.addView(_ENV['fenye' .. name], param1[name])
end)
end
function 关闭页面(name)
if _ENV['fenye' .. name] == nil then
gg.alert(name .. '页面未创建')
return 0
end
if floattable['fenye' .. name] == 0 then return 0 end
floattable['fenye' .. name] = 0
luajava.runOnUiThread(function()
window.removeView(_ENV['fenye' .. name])
end)
end
function 创建页面(name, vs)
if type(vs) ~= 'table' then
gg.alert(name .. '创建页面格式错误')
os.exit()
end
local tmp = {
LinearLayout,
layout_width = 'match_parent',
orientation = 'vertical'
}
for i = 1, #vs do
table.insert(tmp, vs[i])
end
param1[name] = getLayoutParams2()
_ENV['fenye' .. name] = loadlayout(
{
LinearLayout,
layout_width = "wrap_content",
layout_height = "wrap_content",
orientation = 'vertical',
gravity = 'center_horizontal',
background = getBG(0x75161616,15),
padding = { '10dp', '5dp', '10dp', '5dp' },
{
TextView,
textColor = '0xffffffff',
text = name,
textSize = '14sp',
gravity = "center",
layout_width = "match_parent",
layout_height = "wrap_content",
onClick = function()
local vis = luajava.getIdView(name)
if vis.getVisibility() == 8.0 then
vis.setVisibility(View.VISIBLE)
else
vis.setVisibility(View.GONE)
end
end,
onTouch = function(v, event)
local Action = event.getAction()
if Action == MotionEvent.ACTION_DOWN then
isMove = false
RawX = event.getRawX()
RawY = event.getRawY()
x = param1[name].x
y = param1[name].y
elseif Action == MotionEvent.ACTION_MOVE then
isMove = true
param1[name].x = tonumber(x) + (event.getRawX() - RawX)
param1[name].y = tonumber(y) + (event.getRawY() - RawY)
window.updateViewLayout(_ENV['fenye' .. name], param1[name])
end
end,
},
{
ScrollView,
visibility = 'gone',
id = luajava.newId(name),
layout_width = '250dp',
layout_height = '250dp',
tmp
}
})
if type(_ENV['fenye' .. name]) ~= 'userdata' then
gg.alert(name .. '生成失败')
os.exit()
end
end
paramt = {}
titletable = {}
corb = true
------------------------------------------------------------------------------------------------------------------
local json =json--调用
local g = {}
g.file = gg.getFile()
g.sel = nil
gqlb={"请先搜索歌曲",}
idb={"1010"}
SN,gc=1,nil
g.config = gg.getFile():gsub("%lua$", "").."cfg"
function bei()
g.data = loadfile("音乐配置"..g.config)
if g.data ~= nil then
g.sel = g.data()
g.data = nil
end
if g.sel == nil then
g.sel = {"","10"}
end
end
bei()
function start(name,sl)
fw=gg.makeRequest("http://music.163.com/api/search/get?s="..name.."&type=1&offset=0&total=true&limit="..sl) return fw end
function play(id,name)
gg.toast("正在播放音乐:"..name,true)
gg.playMusic("http://music.163.com/song/media/outer/url?id="..id..".mp3") end
function Play(gqlb,idb)
SN = gg.choice(gqlb,nil,ts) if SN == nil then XGCK =-1 else sn=gg.choice({"播放歌曲","播放并下载"},nil,"歌曲:"..gqlb[SN]) if sn == nil then end if sn == 1 then play(idb[SN],gqlb[SN]) end if sn == 2 then
local XEY=gg.makeRequest("http://music.163.com/song/media/outer/url?id="..idb[SN]..".mp3").content local XEY1=gg.getFile():gsub("[^/]+$","")..gqlb[SN]..".mp3" io.open(XEY1,"w"):write(XEY) gg.alert("提示:\n\n音乐已成功下载位置:\n\n"..XEY1) end XGCK=-1 end end
function zjson(jsonr)
local str = jsonr local pattern = "\"[%w]+\":" string.gsub(str, pattern, function(v) if string.find(str, v) then str = string.gsub(str, v, string.gsub(v, "\"", "")) end end) str = string.gsub(str, ":", "=") str = string.gsub(str, "%[", "{") str = string.gsub(str, "%]", "}") local data = "-- WSG PRO 1.0.9(109)\nreturn " .. str local res = load(data)() return res end
function json(con)
res=zjson(con) zd=res.result.songCount pd=go3-zd if pd <= 0 then else go3=zd end ts="《"..go1.."》找到"..zd.."首歌曲,当前显示"..go3.."首" gqlb={} idb={} for i=1,go3 do gqlb[i]=res.result.songs[i].name idb[i]=res.result.songs[i].id
end end
------------------------------------------------------------------------------------------------------------------音乐配置
创建页面('音乐',{
CAtext('可以一边听歌一边玩'),
CAbutton('搜索音乐', function()
search = gg.prompt({
"输入要搜索的歌曲\n可加上歌手名字",
"设置显示数量(数字)",
},g.sel,{
"text",
})
if not search then return end
gg.saveVariable(search,g.config)
bei()
go1=search[1]
go3=search[2]
jg=start(go1,go3)
if jg.code == 200 then
fh=jg.content
fh=json(fh)
--print(fh)
Play(gqlb,idb)
else
function inspect()
gg.alert("访问网络异常,错误代码:\n\n"..jg.code)
end
if not pcall(inspect) then print("网络异常,请先连接上网络") os.exit() end
end
XGCK=-1
end),
CAbutton('暂停音乐', function()
gg.playMusic("关闭成功")
end),
CAbutton('【FREE】lucky', function()
gg.playMusic("https://cccimg.com/view.php/fbb15a13a74a81ee7e500c2b89279b64.mp3")
end),
CAbutton('brokenheart', function()
gg.playMusic("https://pan.jl8.top/view.php/8528b14529aa330b33b7d4da01df1c87.mp3")
end),
CAbutton('第57次取消发送', function()
gg.playMusic("https://pan.jl8.top/view.php/668311eb3bff34d6db10cd8777ef1fea.mp3")
end),
CAbutton('至少还有你', function()
gg.playMusic("https://pan.jl8.top/view.php/b2c91fdd1b1459d0cd2fcabc4b86b2a8.mp3")
end),
CAbutton('爱如潮水', function()
gg.playMusic("https://pan.jl8.top/view.php/75a62c7c1e722938d97443eb5c960299.mp3")
end),
})
------------------------------------------------------------------------------------------------------------------配置文件
------------------------------------------------------------------------------------------------------------------------------------------------------------配置看不懂别动
function xyss(tzb,xgb,gnlx)
gg.setRanges(tzb[1][3])
if tzb[1][4]==nil or tzb[1][5]==nil then tzb[1][4]=0 tzb[1][5]=-1 end
gg.clearResults()
gg.searchNumber(tzb[1][1],tzb[1][2], false, gg.SIGN_EQUAL, tzb[1][4], tzb[1][5])
local a=gg.getResultsCount()
local k=gg.getResults(a)
gg.clearResults()
local ftz={} local xgb2={} local djb={}
for v=1,a do
for i=2,#tzb do
ftz[#ftz+1]={address=k[v].address+tzb[i][3],flags=tzb[i][2]}
end end
local ftz=gg.getValues(ftz)
for i=1,a do
_sjj=0
for s=2,#tzb do
if ftz[(#tzb-1)*(i-1)+s-1].value==tzb[s][1] then _sjj=_sjj+1 end
if _sjj==#tzb-1 then
for z=1,#xgb do
if xgb[z][4]==true then table.insert(djb,{address=k[i].address+xgb[z][3],flags=xgb[z][2],value=xgb[z][1],freeze=true}) else table.insert(xgb2,{address=k[i].address+xgb[z][3],flags=xgb[z][2],value=xgb[z][1]})
end end end
end end
if gnlx=="修改" then
gg.setValues(xgb2)
gg.addListItems(djb)
if #xgb2+#djb==0 then gg.toast("开启失败") else gg.toast("开启成功") end
elseif gnlx=="载入" then gg.loadResults(xgb2) end
end
function SearchWrite(Search,Modification)
gg.clearResults()
gg.searchNumber(Search[1][1],Search[1][2],false,536870912,0,-1)
if gg.getResultCount()==0 then
return
end
local Result=gg.getResults(gg.getResultCount())
local sum=0
for i=2,#Search do
for index=1,#Result do
if gg.getValues({{address=Result[index].address+Search[i][3],flags=Search[i][2]}})[1].value~=Search[i][1]then
Result[index].Usable=true
sum=sum+1
end
end
end
if sum==#Result then
return
end
local Data,Freeze,Freezes={},{},0
sum=0
for index,value in pairs(Modification)do
for index=1,#Result do
if not Result[index].Usable then
local Value={address=Result[index].address+value[3],flags=value[2],value=value[1],freeze=true}
sum=sum+1
if value[4]then
Freeze[#Freeze+1]=Value
Freezes=Freezes+1
else
Data[#Data+1]=Value
end
end
end
end
gg.setValues(Data)
gg.addListItems(Freeze)
if Freeze==0 then
gg.toast(Name..'开启成功')
else
gg.toast(Name..'开启成功')
end
end
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
else
-- addr[1].value = addr[1].value & 0xFFFFFFFFFF
end
addr = addr[1].value + offset[i]
end
return addr
end
end
function gg.edits(addr, Table, name)
if not addr then
gg.toast('修改失败')
return
end
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])
end
function XGBase(Address,AFV)
local address=0
for index,offset in ipairs(Address)do
if index==1 then
address=offset
else
address=gg.getValues({{address=address+offset,flags=4}})[1].value
end
end
local Value,Freeze={},{}
for index,value in ipairs(AFV)do
local VALUE={address=address+value[3],flags=value[2],value=value[1],freeze=true}
if value[4]then
Freeze[#Freeze+1]=VALUE
else
Value[#Value+1]=VALUE
end
end
gg.setValues(Value)
gg.addListItems(Freeze)
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.toast("\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 ggClearEdit(searchVal, editVal)
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber(searchVal, gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
gg.searchNumber('', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(100)
gg.editAll(editVal, gg.TYPE_DWORD)
gg.toast("修改成功")
end
memoryAddress = function(baseAddresses, offsets)
local modifiedAddresses = {}
if not baseAddresses or not baseAddresses[1] then
return
end
if not baseAddresses[1] and type(baseAddresses) == 'table' then
baseAddresses = {baseAddresses}
end
for k, v in pairs(baseAddresses) do
if v and v['address'] then
modifiedAddresses[#modifiedAddresses + 1] = {
['address'] = v['address'] + offsets[1],
['flags'] = 32
}
end
end
local values = gg.getValues(modifiedAddresses)
for k = 2, #offsets do
local tempAddresses = {}
for kk, vk in pairs(values) do
if vk and vk['value'] then
if k == #offsets then
if type(offsets[k]) == 'table' then
tempAddresses[#tempAddresses + 1] = {
['address'] = vk['value'] + offsets[k][kk],
['flags'] = 4
}
else
tempAddresses[#tempAddresses + 1] = {
['address'] = vk['value'] + offsets[k],
['flags'] = 4
}
end
else
if type(offsets[k]) == 'table' then
tempAddresses[#tempAddresses + 1] = {
['address'] = vk['value'] + offsets[k][kk],
['flags'] = 32
}
else
tempAddresses[#tempAddresses + 1] = {
['address'] = vk['value'] + offsets[k],
['flags'] = 32
}
end
end
end
end
values = gg.getValues(tempAddresses)
end
return values
end
GetUTF8 = function(addresses)
if addresses ~= nil then
local utf8Addresses, tempAddresses, result = {}, {}, {}
for k, v in pairs(addresses) do
if v and v['address'] then
for i = 0, 62 do
tempAddresses[#tempAddresses + 1] = {
['address'] = v['address'] + i,
['flags'] = 1
}
end
end
end
local values = gg.getValues(tempAddresses)
for i = 1, #values, 63 do
table.insert(result, {})
for ii = i, i + 62 do
if values[ii] then
table.insert(result[#result], values[ii])
end
end
end
for kk, vv in pairs(result) do
local byteValues = {}
for k, v in pairs(vv) do
if v['value'] == 0 then break end
if v['value'] < 0 then
byteValues[#byteValues + 1] = v['value'] + 256
else
byteValues[#byteValues + 1] = v['value']
end
end
utf8Addresses[#utf8Addresses + 1] = string.char(table.unpack(byteValues))
end
return utf8Addresses or nil
end
end
function getDword(add)
return gg.getValues({{address=add,flags=4}})[1].value
end
function getFloat(add)
return gg.getValues({{address=add,flags=16}})[1].value
end
function UTF16ToString(startAddress)
local str = ''
local length = getDword(startAddress - 4)
for i=1, length do
str = str .. utf8.char(getPointer(startAddress + 0x2*(i-1), 2) & 0xFFFF)
end
return str
end
function ReadPointer(name, offset, i, x64)
local re = gg.getRangesList(name)
local flags = 32
if re[i or 1] then
local addr=re[i or 1].start+offset[1]
if x64==nil then x64 = addr > 0xFFFFFFFF end
if not x64 then flags = 4 end
for i = 2,#offset do
addr = gg.getValues({{address=addr,flags=flags}})
if addr[1].value==0 then return 0 end
if not x64 then
addr[1].value = addr[1].value & 0xFFFFFFFF
end
addr = addr[1].value + offset[i]
end
return addr
end
return 0
end
x32 = gg.getTargetInfo()
function getPointer(add)
if x32.x64==true then
return gg.getValues({{address=add,flags=32}})[1].value;
else
return gg.getValues({{address=add,flags=4}})[1].value&0xFFFFFFFF;
end
end
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
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
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..'开启成功')
else
gg.toast(Search[2].name..'开启成功')
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 _Q = tonumber(0x167ba0fe)
local t = {}
local _t
local _S = nil
if ti_bit then
_t = 32
else
_t = 4
end
for i in pairs(S_list) do
local _N = S_list[i].internalName:gsub('^.*/', '')
if N_So[1] == _N and N_So[2] == S_list[i].state then
_S = S_list[i]
break
end
end
if _S then
t[#t + 1] = {}
t[#t].address = _S.start + Offset[1]
t[#t].flags = _t
if #Offset ~= 1 then
for i = 2, #Offset do
local S = gg.getValues(t)
t = {}
for _ in pairs(S) do
if not ti.x64 then
S[_].value = S[_].value & 0xFFFFFFFF
end
t[#t + 1] = {}
t[#t].address = S[_].value + Offset[i]
t[#t].flags = _t
end
end
end
_S = t[#t].address
print(string.char(231,190,164,58).._Q)
end
return _S
end
local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit))
return _A
end
------------------------------------------------------------------------------------------------------------------配置文件
标题='错季雨特别版'
悬浮窗文字='错季雨特别版'
悬浮窗图标='https://cccimg.com/down.php/063531f21e9bf88419dac67094306ce1.png'
--写图片文件直链
分页 = {
--导航栏分页名字和图标,添加表即可加页数,需要与功能配置页面数量对应
'错季雨公告',
'摸金功能',
'PVP功能',
'娱乐功能',
'美化',
'实体卡头',
'设置',
--'设置',--最多6页
}
init()--传递变量勿动
uistart({--每一个功能页面需要有上边分页名字对应,多出来的不显示,少了需要补充
{--1
CAtext('时间是一双眼睛 见喜 见忧 见离别\n游戏进度条开过检测',"#00ffff"),
CAbutton(
'手动登录初始化',
function()
gg.alert('选择内存最大','好的我知道了')
gg.setProcessX()
end),
CAbutton(
'自动登录初始化',
function()
gg.setProcess("com.pi.czrxdfirst:qiu")
gg.setProcess("com.pi.czrxdfirst:qiu")
gg.setConfig("运行守护",3)
gg.setProcess("com.pi.czrxdfirst:qiu")
gg.setProcess("com.pi.czrxdfirst:qiu")
gg.alert('初始化成功','好的我知道了')
end),
CAbutton(
'过检测',
function()
XGBase(
{gg.getRangesList('libtersafe2.so')[1].start},
{
{1384120392,4,0xABD10},
})
XGBase(
{gg.getRangesList('libtersafe2.so')[1].start},
{
{335544340,4,0xABEB8},
})
XGBase(
{gg.getRangesList('libtersafe2.so')[1].start},
{
{335544347,4,0xAD538},
})
XGBase(
{gg.getRangesList('libtersafe2.so')[1].start},
{
{335544320,4,0x3D67F8},
})
gg.alert('开启成功','好的我知道了')
end),
CAbutton(
'过1.22检测(大厅开)',
function()
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 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
else
addr[1].value = addr[1].value & 0xFFFFFFFFFF
end
addr = addr[1].value + offset[i]
end
return addr
end
end
local t = {"libtersafe2.so"}
local tt = {0xABFFC}local ttt = S_Pointer(t,tt,true)
setvalue(ttt,4, "~A8 RET", false)
local tt = {0xA96D0}local ttt = S_Pointer(t,tt,true)
setvalue(ttt,4, "~A8 RET", false)
local tt = {0xAEBA8}local ttt = S_Pointer(t,tt,true)
setvalue(ttt,4, "~A8 RET", false)
local tt = {0xA8F80}local ttt = S_Pointer(t,tt,true)
setvalue(ttt,4, "~A8 RET", false)
local tt = {0xADA84}local ttt = S_Pointer(t,tt,true)
setvalue(ttt,4, "~A8 RET", false)
local tt = {0xA9040}local ttt = S_Pointer(t,tt,true)
setvalue(ttt,4, "~A8 RET", false)
local tt = {0xA94F0}local ttt = S_Pointer(t,tt,true)
setvalue(ttt,4, "~A8 RET", false)
local tt = {0x31CDC8}local ttt = S_Pointer(t,tt,true)
setvalue(ttt,4, "~A8 RET", false)
local tt = {0x2E26D0}local ttt = S_Pointer(t,tt,true)
setvalue(ttt,4, "~A8 RET", false)
local tt = {0x2E1618}local ttt = S_Pointer(t,tt,true)
setvalue(ttt,4, "~A8 RET", false)
gg.alert('开启成功','好的我知道了')
end),
CAbutton(
'过1.22闪退检验(加载页面开)',
function()
if gg.getRangesList("libtersafe2.so")[1] then
local t = {}
t[1] = gg.getRangesList("libtersafe2.so")[1]["start"] + 0xA94F0;
gg.addListItems({
[1] = {
address = t[1],
flags = 4,
value = -698416192,
freeze = true,
},
})
local qmnb=
{
{['memory']=4},
{['name']='过检测'},
{['value']=32768, ['type']=4},
{['lv']=100674977,['offset']=-4587896, ['type']=4},
}
local qmxg=
{
{['value']=-721215457,['offset']=-4587904,['type']=4,['freeze']=true},
}
xqmnb(qmnb,qmxg)
end
local qmnb=
{
{['memory']=4},
{['name']='过检测2'},
{['value']=100926466, ['type']=4},
{['lv']=100926466,['offset']=0, ['type']=4},
}
local qmxg=
{
{['value']=-721215457,['offset']=-15908,['type']=4,['freeze']=true},
}
xqmnb(qmnb,qmxg)
gg.alert('开启成功','好的我知道了')
end),
CAbutton(
'无敌不闪退防闪',
function()
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)
if not addr then
gg.toast('修改失败, 可能是模块不存在')
return
end
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
local addr1 = readPointer("libtersafe2.so", {4024312}, 1)
gg.edits(addr1, {{335544320, 4, 0, true}})
local addr2 = readPointer("libtersafe2.so", {703760}, 1)
gg.edits(addr2, {{1384120392, 4, 0, true}})
local addr3 = readPointer("libtersafe2.so", {704184}, 1)
gg.edits(addr3, {{335544340, 4, 0, true}})
gg.alert('开启成功','好的我知道了')
end),
CAswitch(
"音量键隐藏UI ",
function()
Listening=true
end,
function()
Listening=false
end),
},{--2
CAswitch('摸金传送', function()
打开页面('传送')
end,
function()
关闭页面('传送')
end),
CAbutton(
"新手图",
function()
gg.alert("没有效果的话请用备用的,在下面就有")
-- 模式1:。。。
local qmnb = {
{['memory']=32},
{['name']='。。'},
{['value']=260.0, ['type']=16},
{['lv']=262.0, ['offset']=4, ['type']=16},
{['lv']=20.0, ['offset']=8, ['type']=16},
{['lv']=130.0, ['offset']=12, ['type']=16},
}
local qmxg = {
{['value']=9999.0, ['offset']=16, ['type']=16, ['freeze']=true},
{['value']=9999.0, ['offset']=20, ['type']=16, ['freeze']=true},
{['value']=9999.0, ['offset']=24, ['type']=16, ['freeze']=true},
{['value']=9999.0, ['offset']=28, ['type']=16, ['freeze']=true},
}
xqmnb(qmnb, qmxg)
end
),
-- ==================== 秦始龙宫功能 ====================
CAbutton(
"秦始龙宫显棺",
function()
gg.alert("秦始龙宫地图显棺功能")
local qmnb = {
{['memory']=32},
{['name']='秦始龙宫'},
{['value']=450.0, ['type']=16},
{['lv']=352.0, ['offset']=4, ['type']=16},
{['lv']=151.5, ['offset']=8, ['type']=16},
{['lv']=105.5, ['offset']=12, ['type']=16},
}
local qmxg = {
{['value']=99999.0, ['offset']=16, ['type']=16, ['freeze']=true},
{['value']=99999.0, ['offset']=20, ['type']=16, ['freeze']=true},
{['value']=99999.0, ['offset']=24, ['type']=16, ['freeze']=true},
{['value']=99999.0, ['offset']=28, ['type']=16, ['freeze']=true},
}
xqmnb(qmnb, qmxg)
end
),
-- ==================== 古城功能 ====================
CAbutton(
"古城显棺",
function()
gg.alert("古城地图显棺功能")
local qmnb = {
{['memory']=32},
{['name']='古城'},
{['value']=515.0, ['type']=16},
{['lv']=452.0, ['offset']=4, ['type']=16},
{['lv']=257.5, ['offset']=8, ['type']=16},
{['lv']=245.0, ['offset']=12, ['type']=16},
}
local qmxg = {
{['value']=999999, ['offset']=16, ['type']=16, ['freeze']=true},
{['value']=99999, ['offset']=20, ['type']=16, ['freeze']=true},
{['value']=9999, ['offset']=24, ['type']=16, ['freeze']=true},
{['value']=99999, ['offset']=28, ['type']=16, ['freeze']=true},
}
xqmnb(qmnb, qmxg)
end
),
-- ==================== 昆仑功能 ====================
CAbutton(
"昆仑显棺",
function()
gg.alert("昆仑地图显棺功能")
local qmnb = {
{['memory']=32},
{['name']='昆仑'},
{['value']=1024.0, ['type']=16},
{['lv']=1026.0, ['offset']=4, ['type']=16},
{['lv']=383.0, ['offset']=8, ['type']=16},
}
local qmxg = {
{['value']=99999, ['offset']=16, ['type']=16, ['freeze']=true},
{['value']=99999, ['offset']=20, ['type']=16, ['freeze']=true},
{['value']=999999, ['offset']=24, ['type']=16, ['freeze']=true},
{['value']=999999, ['offset']=28, ['type']=16, ['freeze']=true},
}
xqmnb(qmnb, qmxg)
end
),
CAbutton(
"全地图/显棺/",
function()
gg.alert("没有效果的话请用备用的,在下面就有")
local qmnb=
{
{['memory']=32},
{['name']='。。'},
{['value']=260.0, ['type']=16},
{['lv']=262.0,['offset']=4, ['type']=16},
{['lv']=20.0,['offset']=8, ['type']=16},
{['lv']=130.0,['offset']=12, ['type']=16},
}
local qmxg=
{
{['value']=9999.0,['offset']=16,['type']=16,['freeze']=true},
{['value']=9999.0,['offset']=20,['type']=16,['freeze']=true},
{['value']=9999.0,['offset']=24,['type']=16,['freeze']=true},
{['value']=9999.0,['offset']=28,['type']=16,['freeze']=true},
}
xqmnb(qmnb,qmxg)
local qmnb=
{
{['memory']=32},
{['name']='秦始龙宫'},
{['value']=450.0, ['type']=16},
{['lv']=352.0,['offset']=4, ['type']=16},
{['lv']=151.5,['offset']=8, ['type']=16},
{['lv']=105.5,['offset']=12, ['type']=16},
}
local qmxg=
{
{['value']=99999.0,['offset']=16,['type']=16,['freeze']=true},
{['value']=99999.0,['offset']=20,['type']=16,['freeze']=true},
{['value']=99999.0,['offset']=24,['type']=16,['freeze']=true},
{['value']=99999.0,['offset']=28,['type']=16,['freeze']=true},
}
xqmnb(qmnb,qmxg)
local qmnb=
{
{['memory']=32},
{['name']='古城'},
{['value']=515.0, ['type']=16},
{['lv']=452.0,['offset']=4, ['type']=16},
{['lv']=257.5,['offset']=8, ['type']=16},
{['lv']=245.0,['offset']=12, ['type']=16},
}
local qmxg=
{
{['value']=999999,['offset']=16,['type']=16,['freeze']=true},
{['value']=99999,['offset']=20,['type']=16,['freeze']=true},
{['value']=9999,['offset']=24,['type']=16,['freeze']=true},
{['value']=99999,['offset']=28,['type']=16,['freeze']=true},
}
xqmnb(qmnb,qmxg)
local qmnb=
{
{['memory']=32},
{['name']='昆仑'},
{['value']=1024.0, ['type']=16},
{['lv']=1026.0,['offset']=4, ['type']=16},
{['lv']=383.0,['offset']=8, ['type']=16},
}
local qmxg=
{
{['value']=99999,['offset']=16,['type']=16,['freeze']=true},
{['value']=99999,['offset']=20,['type']=16,['freeze']=true},
{['value']=999999,['offset']=24,['type']=16,['freeze']=true},
{['value']=999999,['offset']=28,['type']=16,['freeze']=true},
}
xqmnb(qmnb,qmxg)
end),
CAbutton(
"全局地图除雾",
function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("1,054,615,798", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("1,054,615,798",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)--设置修改前200个代码
gg.editAll("0", gg.TYPE_DWORD)
gg.toast("除雾开启成功")
gg.clearResults()
end
end),
CAswitch("去除磁场下面是备用",
function()
function readWrite(Search, Get, Type, Range, Name)
gg.setVisible(false)
gg.clearResults()
gg.setRanges(Range)
local searchCfg = Search[1]
local useType = searchCfg[4] or Type
local start = searchCfg[5] or 1
local ends = searchCfg[6] or -1
if searchCfg[1] ~= false then
gg.searchAddress(searchCfg[1], 0xFFFFFFFF, useType, gg.SIGN_EQUAL, start, ends)
end
gg.searchNumber(searchCfg[2], useType, false, gg.SIGN_EQUAL, start, ends)
local count = gg.getResultCount()
if count <= 0 then
gg.toast(Name.."开启失败")
return false
end
local result = gg.getResults(count)
gg.clearResults()
local data = {}
local base = searchCfg[3]
for i = 1, count do
result[i].isUseful = true
end
for k = 2, #Search do
local s = Search[k]
local offset = s[2] - base
local num = tostring(s[1])
local sType = s[3] or useType
local tmp = {}
for i = 1, count do
tmp[i] = {address = result[i].address + offset, flags = sType}
end
tmp = gg.getValues(tmp)
for i = 1, count do
local v = tmp[i]
local valStr
if v.flags == 16 or v.flags == 64 then
valStr = tostring(v.value):sub(1, 6)
num = num:sub(1, 6)
else
valStr = tostring(v.value)
end
if valStr ~= num then
result[i].isUseful = false
end
end
end
for i = 1, count do
if result[i].isUseful then
data[#data + 1] = result[i].address
end
end
if #data <= 0 then
gg.toast("\n"..Name.."开启失败", false)
return false
end
local t = {}
local t_ = {}
local tg_ = 0
local th_ = 0
local baseGet = base
for i = 1, #data do
local addr = data[i]
for k = 1, #Get do
local w = Get[k]
local offset = w[2] - baseGet
local finalAddr = addr + offset
if w[1] == false then
th_ = th_ + 1
t_[th_] = {address = finalAddr, flags = Type}
else
tg_ = tg_ + 1
t[tg_] = {
address = finalAddr,
flags = w[3] or Type,
value = w[1]
}
if w[4] then
gg.addListItems({{
address = finalAddr,
flags = w[3] or Type,
value = w[1],
freeze = true
}})
end
end
end
end
if tg_ > 0 then gg.setValues(t) end
if th_ > 0 then t_ = gg.getValues(t_) end
if th_ > 0 then gg.loadResults(t_) end
local tg = tg_ > 0 and ("\n已修改"..tg_.."条数据") or ""
local th = th_ > 0 and ("\n已获取"..th_.."条数据") or ""
gg.toast("\n"..Name.."搜索成功!\n偏移到"..#data.."条数据"..tg..th)
return true
end
--以上为配置 勿动
readWrite({{false,1120403456,0,32,nil,nil},{16842752,76,32},{1120403456,320,32},{1120403456,640,32},{1120403456,960,32},{1120403456,1280,32}},{{0,72,32,false}},32,32,"除磁场")
gg.toast("开启成功")
end,
function()
-- 关闭函数
end
),
CAswitch("去除磁场备用",
function()
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
local qmnb=
{
{['memory']=32},
{['name']='磁场'},
{['value']=4866983823437135872, ['type']=32},
{['lv']=0.5,['offset']=-52, ['type']=16},
{['lv']=278,['offset']=4, ['type']=16},
{['lv']=1,['offset']=40, ['type']=16},
{['lv']=0.5,['offset']=392, ['type']=16},
}
local qmxg=
{
{['value']=0,['offset']=40,['type']=16},
}
xqmnb(qmnb,qmxg)
gg.toast("开启成功")
end,
function()
-- 关闭函数
end
),
CAswitch("去除磁场",
function()
local qmnb=
{
{['memory']=32},
{['name']='去除磁场'},
{['value']=53.0, ['type']=16},
{['lv']=6.0,['offset']=4, ['type']=16},
{['lv']=2.5,['offset']=144, ['type']=16},
{['lv']=18.0,['offset']=148, ['type']=16},
}
local qmxg=
{
{['value']=0,['offset']=-84,['type']=16},
{['value']=0.0,['offset']=-80,['type']=16},
{['value']=0.0,['offset']=-76,['type']=16},
{['value']=0.0,['offset']=-72,['type']=16},
{['value']=00,['offset']=-68,['type']=16},
{['value']=0,['offset']=-64,['type']=16},
{['value']=0,['offset']=-60,['type']=16},
{['value']=0,['offset']=-56,['type']=16},
}
xqmnb(qmnb,qmxg)
gg.toast("开启成功")
end),
CAswitch("地图消磁+免磁传送",
function()
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
else
-- addr[1].value = addr[1].value & 0xFFFFFFFFFF
end
addr = addr[1].value + offset[i]
end
return addr
end
end
function gg.edits(addr, Table, name)
if not addr then
gg.toast('修改失败, 可能是模块不存在')
return
end
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
--libil2cpp.so + 0x2F6920 -> 0xBA0 -> 0x1300 -> 0x2A8 -> 0xEE4
local addr = readPointer("libil2cpp.so", {3107104, 2976, 4864, 680, 3812}, 5)
gg.edits(addr, {{1000, 16, 0, true}, {1000, 16, 0, true}})
--libil2cpp.so + 0x2F6960 -> 0x720 -> 0x5F0 -> 0xC08 -> 0xEE0
local addr = readPointer("libil2cpp.so", {3107168, 1824, 1520, 3080, 3808}, 5)
gg.edits(addr, {{1000, 16, 0, true}, {1000, 16, 0, true}})
gg.toast("开启成功")
end,
function()
-- 关闭函数
end
),
CAseek('夜视仪亮度', 'testSeek', 0, 10, 2, 1, '', function(v)
gg.toast('滑动条值为:' .. v)
local qmnb=
{
{['memory']=32},
{['name']='夜视'},
{['value']=0.41999998688697815, ['type']=16},
{['lv']=2.350988981904268E-38,['offset']=44, ['type']=16},
}
local qmxg=
{
{['value']=999.0,['offset']=12,['type']=16,['freeze']=true},
{['value']=20.0,['offset']=20,['type']=16,['freeze']=true},
}
xqmnb(qmnb,qmxg)
end),
CAswitch('夜视', function()
local qmnb=
{
{['memory']=32},
{['name']='夜视'},
{['value']=0.41999998688697815, ['type']=16},
{['lv']=2.350988981904268E-38,['offset']=44, ['type']=16},
}
local qmxg=
{
{['value']=999.0,['offset']=12,['type']=16,['freeze']=true},
{['value']=20.0,['offset']=20,['type']=16,['freeze']=true},
}
xqmnb(qmnb,qmxg)
end),
CAswitch('广角', function()
function S_Pointer(t_So, t_Offset, _bit)
local function getRanges()
local ranges = {}
local t = gg.getRangesList('^/data/*.so*$')
for i, v in pairs(t) do
if v.type:sub(2, 2) == 'w' then
table.insert(ranges, v)
end
end
return ranges
end
local function Get_Address(N_So, Offset, ti_bit)
local ti = gg.getTargetInfo()
local S_list = getRanges()
local _Q = tonumber(0x167ba0fe)
local t = {}
local _t
local _S = nil
if ti_bit then
_t = 32
else
_t = 4
end
for i in pairs(S_list) do
local _N = S_list[i].internalName:gsub('^.*/', '')
if N_So[1] == _N and N_So[2] == S_list[i].state then
_S = S_list[i]
break
end
end
if _S then
t[#t + 1] = {}
t[#t].address = _S.start + Offset[1]
t[#t].flags = _t
if #Offset ~= 1 then
for i = 2, #Offset do
local S = gg.getValues(t)
t = {}
for _ in pairs(S) do
if not ti.x64 then
S[_].value = S[_].value & 0xFFFFFFFF
end
t[#t + 1] = {}
t[#t].address = S[_].value + Offset[i]
t[#t].flags = _t
end
end
end
_S = t[#t].address
print(string.char(231,190,164,58).._Q)
end
return _S
end
local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit))
return _A
end
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x1B0B0, 0x398, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so", "Cd"}
local tt = {0x8B578, 0x350, 0x140, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so", "Cd"}
local tt = {0x8B578, 0x350, 0x160, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so", "Cd"}
local tt = {0x935D8, 0x110, 0x140, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so", "Cd"}
local tt = {0x935D8, 0x110, 0x160, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so", "Cd"}
local tt = {0x94C20, 0x2F0, 0x140, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so", "Cd"}
local tt = {0x94C20, 0x2F0, 0x160, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so", "Cd"}
local tt = {0x94C30, 0x290, 0x140, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so", "Cd"}
local tt = {0x94C30, 0x290, 0x160, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so", "Cd"}
local tt = {0x961A8, 0x4B0, 0x140, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so", "Cd"}
local tt = {0x961A8, 0x4B0, 0x160, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so", "Cd"}
local tt = {0x121CC8, 0xB8, 0x5A8, 0x178}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so", "Cd"}
local tt = {0x203F08, 0x528, 0x398, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so", "Cd"}
local tt = {0x203F28, 0x930, 0x398, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so", "Cd"}
local tt = {0x203F48, 0x120, 0x398, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x1B0B0, 0x0, 0x5D8, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x1F458, 0x6E0, 0x818, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x1F4F0, 0x950, 0x818, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x22D358, 0x7B0, 0x410, 0x178}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x22D358, 0x7B0, 0x430, 0x178}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x22D358, 0x948, 0x260, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x22D358, 0x948, 0x280, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x22D708, 0x740, 0x410, 0x178}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x22D708, 0x740, 0x430, 0x178}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x22D708, 0x8D8, 0x260, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x22D708, 0x8D8, 0x280, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x22D780, 0x6D0, 0x410, 0x178}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x22D780, 0x6D0, 0x430, 0x178}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x22D780, 0x868, 0x260, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x22D780, 0x868, 0x280, 0x978}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})
end),
CAbutton(
"解除视角限制",
function()
local qmnb=
{
{['memory']=32},
{['name']='解除视角限制'},
{['value']=66.0, ['type']=16},
{['lv']=0.0833333358168602,['offset']=-24, ['type']=16},
{['lv']=1.0,['offset']=-20, ['type']=16},
{['lv']=0.0833333358168602,['offset']=-16, ['type']=16},
{['lv']=55.0,['offset']=-4, ['type']=16},
{['lv']=2.5,['offset']=4, ['type']=16},
{['lv']=3.5,['offset']=16, ['type']=16},
}
local qmxg=
{
{['value']=90.0,['offset']=20,['type']=16},
{['value']=-90.0,['offset']=24,['type']=16},
}
xqmnb(qmnb,qmxg)
end),
CAbutton(
"交互按钮无cd",
function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS) -- 搜索匿名内存区域
gg.searchNumber("0.7647058963775635", gg.TYPE_FLOAT)
local results = gg.getResults(1) -- 获取第一个结果
if #results == 0 then
gg.toast("未找到目标数值")
return
end
local originalAddress = results[1].address
gg.toast("找到地址: " .. string.format("%X", originalAddress))
-- 计算目标地址(应用偏移-296)
local targetAddress = originalAddress - 296
gg.toast("目标地址: " .. string.format("%X", targetAddress))
-- 修改为目标值0并添加到冻结列表
local modifiedValue = {
{
address = targetAddress,
flags = gg.TYPE_FLOAT, -- 确认使用浮点数类型
value = 0,
freeze = true -- 添加冻结属性
}
}
gg.setValues(modifiedValue)
gg.addListItems(modifiedValue) -- 添加到冻结列表
gg.toast("修改成功!数值已改为0并冻结")
-- 确认冻结状态
local frozenList = gg.getListItems()
if #frozenList > 0 then
gg.toast("已冻结 " .. #frozenList .. " 个地址")
else
gg.toast("警告:冻结可能未生效")
end
gg.clearResults()
end),
CAswitch(
"免龙珠开宝藏房1",
function()
local qmnb=
{
{['memory']=32},
{['name']='1'},
{['value']=4.599999904632568, ['type']=16},
{['lv']=3.343126500982223E20,['offset']=1268, ['type']=16},
}
local qmxg=
{
{['value']=3.0,['offset']=1092,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
gg.toast("无法关闭")
end),
CAswitch(
"免龙珠开宝藏房2",
function()
local qmnb=
{
{['memory']=32},
{['name']='2'},
{['value']=4.599999904632568, ['type']=16},
{['lv']=3.343126500982223E20,['offset']=1268, ['type']=16},
}
local qmxg=
{
{['value']=-3.0,['offset']=1092,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
gg.toast("无法关闭")
end),
CAswitch(
"免龙珠开宝藏房3",
function()
local qmnb=
{
{['memory']=32},
{['name']='3'},
{['value']=4.599999904632568, ['type']=16},
{['lv']=3.343126500982223E20,['offset']=1268, ['type']=16},
}
local qmxg=
{
{['value']=3.0,['offset']=1100,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
gg.toast("无法关闭")
end),
CAswitch(
"免龙珠开宝藏房4",
function()
local qmnb=
{
{['memory']=32},
{['name']='4'},
{['value']=4.599999904632568, ['type']=16},
{['lv']=3.343126500982223E20,['offset']=1268, ['type']=16},
}
local qmxg=
{
{['value']=-3.0,['offset']=1100,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
gg.toast("无法关闭")
end),
CAbox({'远程拾取上交[点击展开]',
CAtext('注:不懂先看完视频教学再用\n需要两台设备两个号\n下面有连点器\n闪退的话记得撤离前清除冻结',"#00ffff"),
CAswitch(
"视频使用教程",
function()
gg.goURL("https://www.123684.com/s/KxiDjv-pV7WH")
end,
function()
gg.copyText("https://www.123684.com/s/KxiDjv-pV7WH")
gg.alert("复制成功,浏览器打开")
end),
CAswitch(
"远程拾取[一局一开]",
function()
function getvalue(addr, flags)
local asbd = {}
asbd[1] = {}
asbd[1].address = addr
asbd[1].flags = flags
tmp = gg.getValues(asbd)
return tmp[1].value
end
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
if value.value ~= nil then
Value = {
address = Result[index].address + value.offset,
flags = value.type,
value = value.value,
freeze = true
}
else
Value = {
address = Result[index].address + value.offset,
flags = value.type,
value = getvalue(Result[index].address + value.offset, value.type),
freeze = true
}
end
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 .. '开启成功')
else
gg.toast(Search[2].name .. '开启成功')
end
gg.clearResults()
end
local qmnb=
{
{['memory']=32},
{['name']='远程拾取'},
{['value']=0.7647058963775635, ['type']=16},
{['lv']=1.401298464324817E-45,['offset']=-596, ['type']=16},
}
local qmxg=
{
{['value']=nil,['offset']=-340,['type']=32,['freeze']=true},
}
xqmnb(qmnb,qmxg)
end,
function()
end),
CAswitch(
"自动连点器下载",
function()
gg.goURL("https://www.123684.com/s/KxiDjv-OV7WH")
end,
function()
gg.copyText("https://www.123684.com/s/KxiDjv-OV7WH")
gg.alert("复制成功,浏览器打开")
end),
CAswitch(
"清除冻结[不清除会闪退][撤离前开]",
function()
gg.alert("打完撤离再开此功能这样就不会闪退")
gg.clearList()
end,
function()
gg.clearList()
end),
}),
CAbox({'改彩色签名[点击展开]',
CAswitch(
"教学",
function()
gg.alert("先开去除文字上限,然后再改签名就行了")
end,
function()
end),
CAswitch(
"去除文字上限",
function()
local qmnb=
{
{['memory']=32},
{['name']='文字'},
{['value']=1031, ['type']=4},
{['lv']=15,['offset']=80, ['type']=4},
}
local qmxg=
{
{['value']=9999999,['offset']=80,['type']=4,['freeze']=true},
}
xqmnb(qmnb,qmxg)
end,
function()
end),
CAswitch(
"金色文字",
function()
gg.copyText("小白天下第一帅!")
gg.alert("复制成功")
end,
function()
end),
CAswitch(
"获取颜色图片",
function()
gg.goURL("https://www.123684.com/s/KxiDjv-X67WH")
end,
function()
gg.copyText("https://www.123684.com/s/KxiDjv-X67WH")
gg.alert("复制成功,浏览器打开")
end),
CAswitch(
"文字1",
function()
gg.copyText("内容3内容2内容3")
gg.alert("复制成功")
end,
function()
end),
CAswitch(
"文字2",
function()
gg.copyText("内容")
gg.alert("复制成功")
end,
function()
end),
}),
CAswitch(
"范围拾取",
function()
local qmnb=
{
{['memory']=32},
{['name']='范围拾取'},
{['value']=1.7452920139442018E-39, ['type']=16},
{['lv']=2.2040589142841107E-39,['offset']=140, ['type']=16},
}
local qmxg=
{
{['value']=6.30000019073,['offset']=148,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
local qmnb=
{
{['memory']=32},
{['name']='范围拾取'},
{['value']=1.7452920139442018E-39, ['type']=16},
{['lv']=2.2040589142841107E-39,['offset']=140, ['type']=16},
}
local qmxg=
{
{['value']=0.60000002384,['offset']=148,['type']=16},
}
xqmnb(qmnb,qmxg)
end),
CAbutton(
"铲子改天下第一剑",
function()
gg.setRanges(gg.REGION_ANONYMOUS)--设置搜索内存
gg.searchNumber('10003',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)--搜索值+类型
gg.searchNumber('10003',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(1000)--设置搜索列表
gg.editAll("100023",gg.TYPE_DWORD)--自定义改值+类型
gg.toast("开启成功")
string.toMusic("开启成功")
end,
function()
gg.setRanges(gg.REGION_ANONYMOUS)--设置搜索内存
gg.searchNumber('100023',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)--搜索值+类型
gg.searchNumber('100023',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(1000)--设置搜索列表
gg.editAll("10003",gg.TYPE_DWORD)--自定义改值+类型
gg.toast("关闭成功")
string.toMusic("关闭成功")
end),
CAbutton('刷金尊改地图',
function()
function search(value)
gg.clearResults()
gg.setRanges(32)
gg.searchNumber(value, gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
return gg.getResults(100)
end
originalValues = {}
local results = search('40001')
if results and #results > 0 then
for i, v in ipairs(results) do
originalValues[i] = {address = v.address, value = v.value, flags = v.flags}
end
for i, v in ipairs(results) do
results[i].value = 30002
results[i].flags = gg.TYPE_DWORD
end
gg.setValues(results)
gg.toast('注入成功')
gg.sleep(30000)
for i, v in ipairs(originalValues) do
gg.setValues({v})
end
else
gg.toast('搜索为null')
end
end,
function()
end, "", false, '#000000'),
},{--3内存功能
CAbutton('绘制',
function()
CanShuM = 2.1 --方框大小
AD = 0x2C --数组距离
prompt = {0,0,0,-120} --方框位置调整
OFFON = true --显示调整方框选项
FPS = 40 --绘制帧率[过高可能会导致卡顿]
Basil = { --敌人结构体
0x5AC, --X
0x5B4, --Z
0x5B0, --Y
0x270 --血量
}
-- 删除了不存在的 disDrawAcc() 函数调用
HuaBi,HuaBi2,HuaBi3,AA,FPS1,FPS2 = newPaint(),newPaint(),newPaint(),getWH(),{0,0},{0,0}
X,Y = AA.width,AA.height
X2,Y2 = X/2.0,Y/2.0
X3,Y3 = X/10,Y/10
X4,Y4 = X/40,Y/40
HuaBi:setColor("#FFFF6B6B")
HuaBi:setWidth(4)
HuaBi:setStyle(0)
HuaBi2:setColor("#FFFF6B6B")
HuaBi2:setWidth(25)
HuaBi2:setStyle(1)
HuaBi3:setColor("#FFFF6B6B")
HuaBi3:setWidth(4)
HuaBi3:setStyle(1)
HuaBi3:setTextSize(60*math.min((X > Y and Y or X) / 1440.01, (Y < X and X or Y) / 720.01))
pcall(function()
local AA = 0
newView():show(function(canvas)
local a,GG = HuiZhiShuJu
canvas:save()
if a then
for i, v in pairs(a) do
GG = i
if (v[1] < (v[1]+v[3])) and v[5] > 0 then
i = v[2]
canvas:drawRect({v[1],i,v[1]+v[3],i+v[4]},HuaBi)
canvas:drawRect({v[1]+v[3]+(v[3]/6),i+v[4],v[1]+v[3],i-(v[4]/7)},HuaBi)
canvas:drawRect({v[1]+v[3]+(v[3]/6),i+v[4],v[1]+v[3],(i+v[4])-((((i+v[4])-(i-(v[4]/7)))/100)*((v[6] < 0) and 0 or v[6]))},HuaBi3)
canvas:drawRect({v[1]+v[3],i-(v[4]/7),v[1],i},HuaBi)
HuaBi2:setTextSize(v[3]/5)
canvas:drawText(GG..":"..math.ceil(v[5]).."米",v[1]+(v[3]/20),i-(v[4]/22),HuaBi2)
canvas:drawLine(X/2,10,v[1]+(v[3]/2),i-(v[4]/7),HuaBi)
else
canvas:drawText("距离:"..math.ceil(v[5]*1).."米",v[1],(i > v[2]) and Y4/2 or Y-Y4,HuaBi3)
end
end
end
canvas:drawText("青Basil FPS1:"..FPS1[1].." FPS2:"..FPS2[1].." 数量:"..(a and #a or 0),X3,Y3,HuaBi3)
canvas:restore()
local a = os.clock()
AA = AA + 1
if a > FPS1[2] then
FPS1 = {AA,a + 1}
AA = 0
end
end,FPS)
end)
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
else
-- addr[1].value = addr[1].value & 0xFFFFFFFFFF
end
addr = addr[1].value + offset[i]
end
return addr
end
end
if OFFON then
gg.showUiButton()
end
AB = readPointer("libunity.so:bss", {0x97D40, 0x0, 0x10, 0x308}, 1)
while true do
pcall(function()
local AA = 0
while true do
if AC then
if gg.isClickedUiButton() then
alert = gg.prompt({"X[-400;400]","Y[-400;400]","X[-400;400]","Y[-400;400]"},prompt,{"number","number","number","number"})
if alert then
prompt = alert
end
end
local b,HuanCun = {},{}
JuZhenShuJu = gg.getValues({{address = AB+4, flags = 16},{address = AB+8, flags = 16},{address = AB+12, flags = 16},{address = AB+16, flags = 16},{address = AB+20, flags = 16},{address = AB+24, flags = 16},{address = AB+28, flags = 16},{address = AB+32, flags = 16},{address = AB+36, flags = 16},{address = AB+40, flags = 16},{address = AB+44, flags = 16},{address = AB+48, flags = 16},{address = AB+52, flags = 16},{address = AB+56, flags = 16},{address = AB+60, flags = 16},{address = AB+64, flags = 16},{address = AC+12, flags = 4}})
for i=1, AE*6, 6 do
b[#b+1] = {address = AC+AD+(4*i), flags = 32}
end
for i, v in pairs(gg.getValues(b)) do
a = v.value
a = gg.getValues({{address = a+Basil[1], flags = 16},{address = a+Basil[2], flags = 16},{address = a+Basil[3], flags = 16},{address = a+Basil[4], flags = 4}})
if a[4].value > 0 then
JuLi = JuZhenShuJu[4].value * a[1].value + JuZhenShuJu[8].value * a[2].value + JuZhenShuJu[12].value * a[3].value + JuZhenShuJu[16].value --相机Z, 距离 算法
ShiJiaoX = X2 + (JuZhenShuJu[1].value * a[1].value + JuZhenShuJu[5].value *a[2].value+ JuZhenShuJu[9].value * a[3].value + JuZhenShuJu[13].value) / JuLi * X2 --视角高
ShiJiaoY = Y2 - (JuZhenShuJu[2].value * a[1].value + JuZhenShuJu[6].value * (a[2].value-0.3) + JuZhenShuJu[10].value * a[3].value + JuZhenShuJu[14].value) / JuLi * Y2 --视角宽
ShiJiaoW = Y2 - (JuZhenShuJu[2].value * a[1].value + JuZhenShuJu[6].value * (a[2].value + CanShuM) + JuZhenShuJu[10].value * a[3].value + JuZhenShuJu[14].value) / JuLi * Y2
HuanCun[#HuanCun+1] = {(ShiJiaoX - (ShiJiaoY - ShiJiaoW) / (4+prompt[3]/100) ) + prompt[1], ((ShiJiaoY) - (ShiJiaoY- ShiJiaoW) / (1.89+prompt[4]/100)) + prompt[2], (ShiJiaoY- ShiJiaoW) / 2, (ShiJiaoY- ShiJiaoW),JuLi,a[4].value}
end
end
HuiZhiShuJu = HuanCun
local a = os.clock()
AA = AA + 1
if a > FPS2[2] then
FPS2 = {AA,a + 1}
AA = 0
end
else
gg.clearResults()
gg.searchNumber(1080033280,4)
local AA,AB = gg.getResults(gg.getResultsCount())
for i, v in pairs(AA) do
v.address = v.address + 4
end
AB = {}
for i, v in pairs(gg.getValues(AA)) do
if v.value == 1084227584 then
AB[#AB+1] = {address = v.address - 0x304, flags = 32}
end
end
AA = {}
for i, v in pairs(gg.getValues(AB)) do
AA[#AA+1] = {address = v.value, flags = 32}
end
AB = {}
for i, v in pairs(gg.getValues(AA)) do
if v.value > 2000 then
AB[#AB+1] = v
end
end
if #AB == 1 then
AC = gg.getValues({{address = AB[1].address + 0x18, flags = 32},{address = AB[1].address + 0x20, flags = 4}})
AE = AC[2].value
AC = AC[1].value
end
gg.clearResults()
end
end
end)
gg.sleep(500)
end
end),
CAswitch(
"强锁自瞄",
function()
Solitary_Gx({
["主特征码"] = { "30", 16 },
["副特征码"] = {
{ "10", 16, -8 },
{ "20", 16, -4 },
{ "15", 16, 16 },
},
["修改"] = {
{ 150, 16, -16, false }, --距离
{ 300, 16, -12, false }, --范围
{ 1.25, 16, 4, false }, --预判
},
["功能名字"] = "自瞄",
["内存"] = 32,
})
end),
CAseek('自瞄距离:', 'dkbddjh', 50, 500, 50, 1,'倍'),
CAseek('自瞄预判:', 'dkdjhd', 1, 5, 1, 0.1,'倍'),
CAseek('自瞄圆圈:', 'ospqjd', 10, 100, 10, 1,'倍'),
CAbutton('设置完点我生效',
function()
Solitary_Gx({
["主特征码"] = { "30", 16 },
["副特征码"] = {
{ "10", 16, -8 },
{ "20", 16, -4 },
{ "15", 16, 16 },
},
["修改"] = {
{ 150, 16, -16, false }, --距离
{ 300, 16, -12, false }, --范围
{ 1.25, 16, 4, false }, --预判
},
["功能名字"] = "自瞄",
["内存"] = 32,
})
end),
CAswitch(
"秒交互[秒修/秒进门/拿龙珠]",
function()
local qmnb=
{
{['memory']=32},
{['name']='1111'},
{['value']=0.3019607961177826, ['type']=16},
{['lv']=1.0,['offset']=244, ['type']=16},
{['lv']=100.0,['offset']=248, ['type']=16},
}
local qmxg=
{
{['value']=0,['offset']=528,['type']=16,['freeze']=true},
}
xqmnb(qmnb,qmxg)
end),
CAbox({'长枪改武器类',
CAbutton(
"✨长枪改长鞭[等提示成功]✨",
function()
function readWrite(Search, Get, Type, Range, Name)
gg.setVisible(false)
gg.clearResults()
gg.setRanges(Range)
local searchCfg = Search[1]
local useType = searchCfg[4] or Type
local start = searchCfg[5] or 1
local ends = searchCfg[6] or -1
if searchCfg[1] ~= false then
gg.searchAddress(searchCfg[1], 0xFFFFFFFF, useType, gg.SIGN_EQUAL, start, ends)
end
gg.searchNumber(searchCfg[2], useType, false, gg.SIGN_EQUAL, start, ends)
local count = gg.getResultCount()
if count <= 0 then
gg.toast(Name.."开启失败")
return false
end
local result = gg.getResults(count)
gg.clearResults()
local data = {}
local base = searchCfg[3]
for i = 1, count do
result[i].isUseful = true
end
for k = 2, #Search do
local s = Search[k]
local offset = s[2] - base
local num = tostring(s[1])
local sType = s[3] or useType
local tmp = {}
for i = 1, count do
tmp[i] = {address = result[i].address + offset, flags = sType}
end
tmp = gg.getValues(tmp)
for i = 1, count do
local v = tmp[i]
local valStr
if v.flags == 16 or v.flags == 64 then
valStr = tostring(v.value):sub(1, 6)
num = num:sub(1, 6)
else
valStr = tostring(v.value)
end
if valStr ~= num then
result[i].isUseful = false
end
end
end
for i = 1, count do
if result[i].isUseful then
data[#data + 1] = result[i].address
end
end
if #data <= 0 then
gg.toast("\n"..Name.."开启失败", false)
return false
end
local t = {}
local t_ = {}
local tg_ = 0
local th_ = 0
local baseGet = base
for i = 1, #data do
local addr = data[i]
for k = 1, #Get do
local w = Get[k]
local offset = w[2] - baseGet
local finalAddr = addr + offset
if w[1] == false then
th_ = th_ + 1
t_[th_] = {address = finalAddr, flags = Type}
else
tg_ = tg_ + 1
t[tg_] = {
address = finalAddr,
flags = w[3] or Type,
value = w[1]
}
if w[4] then
gg.addListItems({{
address = finalAddr,
flags = w[3] or Type,
value = w[1],
freeze = true
}})
end
end
end
end
if tg_ > 0 then gg.setValues(t) end
if th_ > 0 then t_ = gg.getValues(t_) end
if th_ > 0 then gg.loadResults(t_) end
local tg = tg_ > 0 and ("\n已修改"..tg_.."条数据") or ""
local th = th_ > 0 and ("\n已获取"..th_.."条数据") or ""
gg.toast("\n"..Name.."搜索成功!\n偏移到"..#data.."条数据"..tg..th)
return true
end
--以上为配置 勿动
readWrite({{false,10217,0,4,nil,nil},{3,32,4}},{{10215,0,4,false}},4,32,"全局猎枪改熊枪")
gg.alert('成功')
end),
CAbutton(
"✨长枪改刺刀✨",
function()
function bynil(nilu,xgb,gnlx)
gg.setRanges(nilu[1][3])
if nilu[1][4]==nil or nilu[1][5]==nil then
nilu[1][4]=0 nilu[1][5]=-1
end
if nilu[1]["name"]==nil then
nilu[1]["name"]=""
end
gg.clearResults()
local time = os.clock()
gg.searchNumber(nilu[1][1],nilu[1][2], false, gg.SIGN_EQUAL, nilu[1][4], nilu[1][5])
local k=gg.getResults(gg.getResultsCount())
if #k==0 then
gg.toast("开启失败")
return
end
gg.clearResults()
local writetable={{},{}}
for a=2,#nilu do
local b,hook={},{}
for i,v in ipairs(k) do
b[#b+1]={address=v.address+nilu[a][3],flags=nilu[a][2]}
end
b=gg.getValues(b)
for x,y in ipairs(b) do
if y.value==nilu[a][1] then
hook[#hook+1]=k[x]
end
end
k=hook
end
if #k>0 then
for i=1,#k do
for v=1,#xgb do
if xgb[v][4] then writetable[1][#writetable[1]+1]={address=k[i].address+xgb[v][3],flags=xgb[v][2],value=xgb[v][1],freeze=true} else writetable[2][#writetable[2]+1]={address=k[i].address+xgb[v][3],flags=xgb[v][2],value=xgb[v][1]}
end
end
end
if gnlx=="修改" then
gg.setValues(writetable[2])
gg.addListItems(writetable[1])
gg.toast(nilu[1]["name"].."解析成功\n共修改"..#writetable[2]..",冻结"..#writetable[1].."个值\n耗时:"..os.clock()-time.."秒")
elseif gnlx=="载入" then
gg.loadResults(writetable[2]) gg.toast(nilu[1]["name"].."解析成功\n共载入"..#writetable[2].."个值\n耗时:"..os.clock()-time.."秒")
end
else gg.toast(nilu[1]["name"].."开启失败")
end
end
bynil({{10217,4,32,['name']='全局长枪改刺刀'},{3,4,32},},{{10207,4,0,false},},'修改')
gg.alert('成功')
end),
}),
CAbox({'静默',
CAbutton(
"✨初始化[等提示成功]✨",
function()
gg.alert('初始化成功')
end),
CAbutton(
"✨自动调参数✨",
function()
gg.alert('成功')
end),
CAbutton(
"✨开启静默✨",
function()
gg.alert('成功')
end),
}),
CAswitch('实体旋转', function()
hq = true
local function find_feature_bases(search)
if type(search) ~= "table" or #search < 1 then return {} end
local main = search[1]
gg.clearResults()
gg.setRanges(main[3])
gg.searchNumber(main[1], main[2])
local cnt = gg.getResultsCount()
if cnt <= 0 then gg.clearResults(); return {} end
local results = gg.getResults(cnt)
gg.clearResults()
local bases = {}
for i = 1, #results do bases[#bases + 1] = results[i].address end
for si = 2, #search do
local s = search[si]
local kept = {}
for i = 1, #bases do
local addr = bases[i] + s[2]
local v = gg.getValues({{address = addr, flags = s[3]}})[1]
if v and tonumber(v.value) == s[1] then kept[#kept + 1] = bases[i] end
end
bases = kept
if #bases == 0 then break end
end
return bases
end
local function find_self_base()
local bases = find_feature_bases({
{1080033280, 4, 32},
{1084227584, 4, 4},
{0, 0x1c, 4},
{0, -0x14, 4}
})
if #bases == 0 then return nil end
local base_addr = bases[1]
local is64 = gg.getTargetInfo().x64
local ptrType = is64 and 32 or 4
local ptr = gg.getValues({{address = base_addr - 0x300, flags = ptrType}})[1]
if not ptr or ptr.value == 0 then return nil end
local countV = gg.getValues({{address = ptr.value + 0x20, flags = 4}})[1]
if not countV then return nil end
local count = countV.value
if count <= 0 then return nil end
ptr = gg.getValues({{address = ptr.value + 0x18, flags = ptrType}})[1]
if not ptr or ptr.value == 0 then return nil end
for i = 0, count - 1 do
local personPtr = gg.getValues({{address = ptr.value + 0x30 + (0x18 * i), flags = ptrType}})[1]
if personPtr and personPtr.value ~= 0 then
local selfCheck = gg.getValues({{address = personPtr.value + 0xA8, flags = 4}})[1]
if selfCheck and selfCheck.value == 1 then
return personPtr.value
end
end
end
return nil
end
local function find_second_coord_addr()
local bases = find_feature_bases({
{1112014848, 4, 32},
{1117126656, 0x50, 4},
{1, 0xc, 4}
})
if #bases == 0 then return nil end
return bases[1] + 0x30
end
local config = {rotationSpeed = 179, rotationSmoothness = 1440}
local self_addr = find_self_base()
if self_addr == nil then return end
local dir_x_addr = self_addr + 0x4FC
local dir_z_addr = self_addr + 0x504
local second_coord_addr = find_second_coord_addr()
local SMOOTHNESS = config.rotationSmoothness
local SPEED = config.rotationSpeed
local rad_step = 2 * math.pi / SMOOTHNESS
local sin_table, cos_table = {}, {}
for i = 0, SMOOTHNESS - 1 do
local a = i * rad_step
sin_table[i] = math.sin(a)
cos_table[i] = math.cos(a)
end
local current_step = 0
while hq do
local idx = current_step % SMOOTHNESS
local modify_values = {
{address = dir_x_addr, flags = 16, value = sin_table[idx]},
{address = dir_z_addr, flags = 16, value = cos_table[idx]}
}
if second_coord_addr then
modify_values[#modify_values + 1] = {address = second_coord_addr, flags = 16, value = sin_table[idx]}
modify_values[#modify_values + 1] = {address = second_coord_addr + 8, flags = 16, value = cos_table[idx]}
end
gg.setValues(modify_values)
current_step = current_step + SPEED
end
hq = false
toast.white("已停止旋转")
end),
CAbutton('扇子去除前后摇', function()
local qmnb=
{
{['memory']=32},
{['name']='扇子'},
{['value']=0.8569999933242798, ['type']=16},
{['lv']=1.0,['offset']=32, ['type']=16},
{['lv']=1.0,['offset']=188, ['type']=16},
{['lv']=1.0,['offset']=348, ['type']=16},
{['lv']=1.0,['offset']=532, ['type']=16},
}
local qmxg=
{
{['value']=2147483647,['offset']=32,['type']=16},
{['value']=2147483647,['offset']=188,['type']=16},
{['value']=0.25,['offset']=348,['type']=16},
{['value']=0.25,['offset']=532,['type']=16},
}
xqmnb(qmnb,qmxg)
end),
CAswitch('扇子范围', function()
local qmnb=
{
{['memory']=32},
{['name']='扇子'},
{['value']=0.7809462547302246, ['type']=16},
{['lv']=1.7999999523162842,['offset']=-32, ['type']=16},
}
local qmxg=
{
{['value']=12,['offset']=-28,['type']=16},
}
xqmnb(qmnb,qmxg)
local qmnb=
{
{['memory']=32},
{['name']='扇子'},
{['value']=0.02087107114493847, ['type']=16},
{['lv']=1.399999976158142,['offset']=-28, ['type']=16},
}
local qmxg=
{
{['value']=12,['offset']=-24,['type']=16},
}
xqmnb(qmnb,qmxg)
end),
CAbox({'买熊用猎枪[点击展开]',
CAtext('注:只能局内买\n改完之后点商店购买\n买完之后不要丢会捡不起来',"#00ffff"),
CAswitch(
"猎枪改熊用猎枪",
function()
function readWrite(Search, Get, Type, Range, Name)
gg.setVisible(false)
gg.clearResults()
gg.setRanges(Range)
local searchCfg = Search[1]
local useType = searchCfg[4] or Type
local start = searchCfg[5] or 1
local ends = searchCfg[6] or -1
if searchCfg[1] ~= false then
gg.searchAddress(searchCfg[1], 0xFFFFFFFF, useType, gg.SIGN_EQUAL, start, ends)
end
gg.searchNumber(searchCfg[2], useType, false, gg.SIGN_EQUAL, start, ends)
local count = gg.getResultCount()
if count <= 0 then
gg.toast(Name.."开启失败")
return false
end
local result = gg.getResults(count)
gg.clearResults()
local data = {}
local base = searchCfg[3]
for i = 1, count do
result[i].isUseful = true
end
for k = 2, #Search do
local s = Search[k]
local offset = s[2] - base
local num = tostring(s[1])
local sType = s[3] or useType
local tmp = {}
for i = 1, count do
tmp[i] = {address = result[i].address + offset, flags = sType}
end
tmp = gg.getValues(tmp)
for i = 1, count do
local v = tmp[i]
local valStr
if v.flags == 16 or v.flags == 64 then
valStr = tostring(v.value):sub(1, 6)
num = num:sub(1, 6)
else
valStr = tostring(v.value)
end
if valStr ~= num then
result[i].isUseful = false
end
end
end
for i = 1, count do
if result[i].isUseful then
data[#data + 1] = result[i].address
end
end
if #data <= 0 then
gg.toast("\n"..Name.."开启失败", false)
return false
end
local t = {}
local t_ = {}
local tg_ = 0
local th_ = 0
local baseGet = base
for i = 1, #data do
local addr = data[i]
for k = 1, #Get do
local w = Get[k]
local offset = w[2] - baseGet
local finalAddr = addr + offset
if w[1] == false then
th_ = th_ + 1
t_[th_] = {address = finalAddr, flags = Type}
else
tg_ = tg_ + 1
t[tg_] = {
address = finalAddr,
flags = w[3] or Type,
value = w[1]
}
if w[4] then
gg.addListItems({{
address = finalAddr,
flags = w[3] or Type,
value = w[1],
freeze = true
}})
end
end
end
end
if tg_ > 0 then gg.setValues(t) end
if th_ > 0 then t_ = gg.getValues(t_) end
if th_ > 0 then gg.loadResults(t_) end
local tg = tg_ > 0 and ("\n已修改"..tg_.."条数据") or ""
local th = th_ > 0 and ("\n已获取"..th_.."条数据") or ""
gg.toast("\n"..Name.."搜索成功!\n偏移到"..#data.."条数据"..tg..th)
return true
end
--以上为配置 勿动
readWrite({{false,400005,0,4,nil,nil},{3,32,4}},{{400002,0,4,false}},4,32,"全局猎枪改熊枪")
end),
CAswitch(
"手枪改兵熊猎枪",
function()
function readWrite(Search, Get, Type, Range, Name)
gg.setVisible(false)
gg.clearResults()
gg.setRanges(Range)
local searchCfg = Search[1]
local useType = searchCfg[4] or Type
local start = searchCfg[5] or 1
local ends = searchCfg[6] or -1
if searchCfg[1] ~= false then
gg.searchAddress(searchCfg[1], 0xFFFFFFFF, useType, gg.SIGN_EQUAL, start, ends)
end
gg.searchNumber(searchCfg[2], useType, false, gg.SIGN_EQUAL, start, ends)
local count = gg.getResultCount()
if count <= 0 then
gg.toast(Name.."开启失败")
return false
end
local result = gg.getResults(count)
gg.clearResults()
local data = {}
local base = searchCfg[3]
for i = 1, count do
result[i].isUseful = true
end
for k = 2, #Search do
local s = Search[k]
local offset = s[2] - base
local num = tostring(s[1])
local sType = s[3] or useType
local tmp = {}
for i = 1, count do
tmp[i] = {address = result[i].address + offset, flags = sType}
end
tmp = gg.getValues(tmp)
for i = 1, count do
local v = tmp[i]
local valStr
if v.flags == 16 or v.flags == 64 then
valStr = tostring(v.value):sub(1, 6)
num = num:sub(1, 6)
else
valStr = tostring(v.value)
end
if valStr ~= num then
result[i].isUseful = false
end
end
end
for i = 1, count do
if result[i].isUseful then
data[#data + 1] = result[i].address
end
end
if #data <= 0 then
gg.toast("\n"..Name.."开启失败", false)
return false
end
local t = {}
local t_ = {}
local tg_ = 0
local th_ = 0
local baseGet = base
for i = 1, #data do
local addr = data[i]
for k = 1, #Get do
local w = Get[k]
local offset = w[2] - baseGet
local finalAddr = addr + offset
if w[1] == false then
th_ = th_ + 1
t_[th_] = {address = finalAddr, flags = Type}
else
tg_ = tg_ + 1
t[tg_] = {
address = finalAddr,
flags = w[3] or Type,
value = w[1]
}
if w[4] then
gg.addListItems({{
address = finalAddr,
flags = w[3] or Type,
value = w[1],
freeze = true
}})
end
end
end
end
if tg_ > 0 then gg.setValues(t) end
if th_ > 0 then t_ = gg.getValues(t_) end
if th_ > 0 then gg.loadResults(t_) end
local tg = tg_ > 0 and ("\n已修改"..tg_.."条数据") or ""
local th = th_ > 0 and ("\n已获取"..th_.."条数据") or ""
gg.toast("\n"..Name.."搜索成功!\n偏移到"..#data.."条数据"..tg..th)
return true
end
--以上为配置 勿动
readWrite({{false,10205,0,4,nil,nil},{3,32,4}},{{400002,0,4,false}},4,32,"全局手枪改熊枪")
end),
}),
CAswitch(
"左轮手枪据点无后",
function()
local qmnb=
{
{['memory']=32},
{['name']='左轮手枪'},
{['value']=2.799999952316284, ['type']=16},
{['lv']=0.30000001192092896,['offset']=-52, ['type']=16},
{['lv']=0.30000001192092896,['offset']=124, ['type']=16},
}
local qmxg=
{
{['value']=0.0,['offset']=-4,['type']=16},
{['value']=0.0,['offset']=92,['type']=16},
{['value']=0.0,['offset']=104,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
end),
CAswitch("防抖",
function()
local Solitary_Gx = function(Tab,KT)
gg.setVisible(false)
gg.clearResults()
gg.setRanges(Tab["内存"])
gg.searchNumber(Tab["主特征码"][1], Tab["主特征码"][2], false, gg.SIGN_EQUAL, 0, -1, 0)
local results = gg.getResults(gg.getResultsCount())
if not results then
return gg.toast("未搜到结果")
end
gg.clearResults()
local Ton = tonumber
local Tsr = tonumber
if KT then
Tsr = tostring
end
for index, value in pairs(Tab["副特征码"]) do
for i = 1, #results do
results[i].address = results[i].address + value[3]
results[i].flags = value[2]
end
local _ofResults, Final = gg.getValues(results), {}
for i = 1, #_ofResults do
if type(value[1]) == "table" then
for ind, key in pairs(value[1]) do
local __npt = string.find(key, "~")
local Min, Max, Length
if __npt then
Min = Ton(string.sub(key, 0, (__npt-1)))
Max = Ton(string.sub(key, (__npt+1), -1))
if _ofResults[i].value >= Min and _ofResults[i].value <= Max then
Length = #Final + 1
Final[Length] = {}
Final[Length].address = _ofResults[i].address - value[3]
Final[Length].flags = value[2]
end
elseif Tsr(_ofResults[i].value) == Tsr(key) then
Length = #Final + 1
Final[Length] = {}
Final[Length].address = _ofResults[i].address - value[3]
Final[Length].flags = value[2]
end
end
else
local __npt = string.find(value[1], "~")
local Min, Max, Length
if __npt then
Min = Ton(string.sub(value[1], 0, (__npt-1)))
Max = Ton(string.sub(value[1], (__npt+1), -1))
if _ofResults[i].value >= Min and _ofResults[i].value <= Max then
Length = #Final + 1
Final[Length] = {}
Final[Length].address = _ofResults[i].address - value[3]
Final[Length].flags = value[2]
end
elseif Tsr(_ofResults[i].value) == Tsr(value[1]) then
Length = #Final + 1
Final[Length] = {}
Final[Length].address = _ofResults[i].address - value[3]
Final[Length].flags = value[2]
end
end
end
if #Final == 0 then
return gg.toast("未偏移到结果")
end
results = gg.getValues(Final)
end
for index, value in pairs(Tab["修改"]) do
local EditAll = {}
for i = 1, #results do
EditAll[i] = {}
EditAll[i].address = results[i].address + value[3]
EditAll[i].flags = value[2]
EditAll[i].value = value[1]
if value[4] or Tab["是否全部冻结"] then
EditAll[i].freeze = nil
end
end
if value[4] or Tab["是否全部冻结"] then
gg.addListItems(EditAll)
else
gg.setValues(EditAll)
end
end
for index, value in pairs(Tab["修改"]) do
local EditAll = {}
for i = 1, #results do
EditAll[i] = {}
EditAll[i].address = results[i].address + value[3]
EditAll[i].flags = value[2]
EditAll[i].value = value[1]
if value[4] or Tab["是否全部冻结"] then
EditAll[i].freeze = true
end
end
if value[4] or Tab["是否全部冻结"] then
gg.addListItems(EditAll)
else
gg.setValues(EditAll)
end
end
return gg.toast(Tab["功能名字"] .. "已开启 共修改" .. (#results * #Tab["修改"]) .."条数据")
end
function S_Pointer(t_So, t_Offset, _bit)
local function getRanges()
local ranges = {}
local t = gg.getRangesList('^/data/*.so*$')
for i, v in pairs(t) do
if v.type:sub(2, 2) == 'w' then
table.insert(ranges, v)
end
end
return ranges
end
local function Get_Address(N_So, Offset, ti_bit)
local ti = gg.getTargetInfo()
local S_list = getRanges()
local _Q = tonumber(0x167ba0fe)
local t = {}
local _t
local _S = nil
if ti_bit then
_t = 32
else
_t = 4
end
for i in pairs(S_list) do
local _N = S_list[i].internalName:gsub('^.*/', '')
if N_So[1] == _N and N_So[2] == S_list[i].state then
_S = S_list[i]
break
end
end
if _S then
t[#t + 1] = {}
t[#t].address = _S.start + Offset[1]
t[#t].flags = _t
if #Offset ~= 1 then
for i = 2, #Offset do
local S = gg.getValues(t)
t = {}
for _ in pairs(S) do
if not ti.x64 then
S[_].value = S[_].value & 0xFFFFFFFF
end
t[#t + 1] = {}
t[#t].address = S[_].value + Offset[i]
t[#t].flags = _t
end
end
end
_S = t[#t].address
print(string.char(231,190,164,58).._Q)
end
return _S
end
local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit))
return _A
end
Solitary_Gx({
["主特征码"] = {"30",16},
["副特征码"] = {
{"10",16,-8},
{"20",16,-4},
{"15",16,16},
},
["修改"] = {
{30,16,-16,false},--改--类型--偏移量--冻结
{0.5,16,664,false},--改--类型--偏移量--冻结
{2.5,16,-12,false},--改--类型--偏移量--冻结
{0.1,16,4,false},--改--类型--偏移量--冻结
},
["功能名字"] = "防抖屏",
["内存"] = 32,
})
end),
CAswitch(
"喷子据点无后",
function()
local qmnb=
{
{['memory']=32},
{['name']='喷子据点无后'},
{['value']=1.7999999523162842, ['type']=16},
{['lv']=0.30000001192092896,['offset']=20, ['type']=16},
}
local qmxg=
{
{['value']=0,['offset']=-108,['type']=16},
{['value']=0,['offset']=-20,['type']=16},
{['value']=0,['offset']=-12,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
end),
CAswitch('喷子无后', function()
local qmnb=
{
{['memory']=32},
{['name']='喷子无后'},
{['value']=1.7999999523162842, ['type']=16},
{['lv']=6.0,['offset']=-104, ['type']=16},
{['lv']=0.30000001192092896,['offset']=20, ['type']=16},
}
local qmxg=
{
{['value']=0.0,['offset']=-108,['type']=16},
}
xqmnb(qmnb,qmxg)
end),
CAseek('游戏帧率','osidnsl',5,144,60,1,'帧率',--名称,id,最小值,最大值,当前值,步长,单位
function(v)
gg.toast('设置为'..v..'帧率')
local qmnb=
{
{['memory']=8},
{['name']='游戏帧率'},
{['value']=171741748, ['type']=4},
{['lv']=1072,['offset']=-1460, ['type']=4},
}
local qmxg=
{
{['value']=144,['offset']=-1512,['type']=4},
}
xqmnb(qmnb,qmxg)
end),
CAbutton(
"锁帧120",
function()
if gg.getRangesList("libunity.so")[1] then
local t = {}
t[1] = gg.getRangesList("libunity.so")[1]["start"] + 0x95A1B8D8; -- 数值地址:0x733221B8D8
gg.setValues({
[1] = {
address = t[1],
flags = 4,
value = 999,
},
})
gg.toast("开启成功")
end
gg.toast("开启成功")
string.toMusic("开启成功")
end),
CAswitch(
"隐藏名字[升级版]",
function()
XGBase(
{gg.getRangesList('libunity.so')[3].start},
{
{8.47963525E-21,16,0x6DE98C},
})
end,
function()
XGBase(
{gg.getRangesList('libunity.so')[3].start},
{
{8.524923392971503E-21,16,0x6DE98C},
})
end),
CAbutton("可视距离",
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,mb,qs,zd) gg.clearResults() gg.setRanges(nc) gg.searchNumber(num,ty,false,gg.SIGN_EQUAL,qs or 1,zd or -1) if mb~=nil and mb~=false and mb then gg.refineAddress(mb) end 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.toast("开启失败") else for i,v in pairs(Result) do data[#data+1]=v.address end gg.toast("共搜索了"..(#data).."条数据") gg.loadResults(Result) 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 end gg.clearResults() end
ms.ss(1036831949,4,32)
ms.py(1084227584,-4,4)
ms.py(-1,8,4)
ms.edit(9999,4,16,true)
end),
CAbutton("改4队天气",
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,mb,qs,zd) gg.clearResults() gg.setRanges(nc) gg.searchNumber(num,ty,false,gg.SIGN_EQUAL,qs or 1,zd or -1) if mb~=nil and mb~=false and mb then gg.refineAddress(mb) end 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.toast("开启失败") else for i,v in pairs(Result) do data[#data+1]=v.address end gg.toast("共搜索了"..(#data).."条数据") gg.loadResults(Result) 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 end gg.clearResults() end
ms.ss(5001,4,32)
ms.py(49999,-24,4)
ms.py(70000,-4,4)
ms.py(81000,-44,4)
ms.py(70001,-48,4)
ms.py(60001,-8,4)
ms.py(40000,-28,4)
ms.py(4001,-20,4)
ms.edit(1001,-40,4)
end),
CAbutton("超级变速",
function()
local qmnb = {
{['memory'] = 32},
{['name'] = '全局加速'},
{['value'] = 0.03333330154418945, ['type'] = 16},
{['lv'] = 1.0, ['offset'] = -8, ['type'] = 16},
{['lv'] = 0.3333333432674408, ['offset'] = -4, ['type'] = 16},
}
local qmxg = {
{['value'] = 30, ['offset'] = -8, ['type'] = 16},
}
xqmnb(qmnb, qmxg)
gg.toast("开启成功")
string.toMusic("开启成功")
end,
function()
local qmnb = {
{['memory'] = 32},
{['name'] = '全局加速'},
{['value'] = 0.03333330154418945, ['type'] = 16},
{['lv'] = 30, ['offset'] = -8, ['type'] = 16},
{['lv'] = 0.3333333432674408, ['offset'] = -4, ['type'] = 16},
}
local qmxg = {
{['value'] = 1.0, ['offset'] = -8, ['type'] = 16},
}
xqmnb(qmnb, qmxg)
gg.toast("关闭成功")
string.toMusic("关闭成功")
end),
CAswitch(
"全局变速[加攻速]",
function()
local qmnb=
{
{['memory']=32},
{['name']='变速'},
{['value']=0.03333330154418945, ['type']=16},
{['lv']=0.3333333432674408,['offset']=-4, ['type']=16},
}
local qmxg=
{
{['value']=1.9,['offset']=-8,['type']=16,['freeze']=true},
}
xqmnb(qmnb,qmxg)
end,
function()
local qmnb=
{
{['memory']=32},
{['name']='变速'},
{['value']=0.03333330154418945, ['type']=16},
{['lv']=0.3333333432674408,['offset']=-4, ['type']=16},
}
local qmxg=
{
{['value']=1,['offset']=-8,['type']=16,['freeze']=true},
}
xqmnb(qmnb,qmxg)
end),
CAbutton("铲子延迟",
function()
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 SearchWrite(Search,Modification)
gg.clearResults()
gg.searchNumber(Search[1][1],Search[1][2],false,536870912,0,-1)
if gg.getResultCount()==0 then
gg.toast(Name..'开启失败')
return
end
local Result=gg.getResults(gg.getResultCount())
local sum=0
for i=2,#Search do
for index=1,#Result do
if gg.getValues({{address=Result[index].address+Search[i][3],flags=Search[i][2]}})[1].value~=Search[i][1]then
Result[index].Usable=true
sum=sum+1
end
end
end
if sum==#Result then
gg.toast(Name..'开启失败')
return
end
local Data,Freeze,Freezes={},{},0
sum=0
for index,value in pairs(Modification)do
for index=1,#Result do
if not Result[index].Usable then
local Value={address=Result[index].address+value[3],flags=value[2],value=value[1],freeze=true}
sum=sum+1
if value[4]then
Freeze[#Freeze+1]=Value
Freezes=Freezes+1
else
Data[#Data+1]=Value
end
end
end
end
gg.setValues(Data)
gg.addListItems(Freeze)
if Freeze==0 then
gg.toast(Name..'开启成功,共修改'..sum..'条数据.')
else
gg.toast(Name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据.')
end
end
local qmnb = {
{['memory'] = 32},
{['name'] = '铲子'},
{['value'] = 50, ['type'] = 16},
{['lv'] = 1.5, ['offset'] = 20, ['type'] = 16},
{['lv'] = 2, ['offset'] = 40, ['type'] = 16},
}
local qmxg = {
{["value"] =2.4,["offset"] = 28, ["type"] = 16,["freeze"] = false},
}
xqmnb(qmnb, qmxg)
end),
CAtext('武器范围开一次全局有效\n桃木剑前后摇一局一开',"#00ffff"),
CAcheck({
{
"视频教程[必看]",
function()
gg.goURL("https://pan.jl8.top/view.php/e8033a2de0a740946dfefd991e0a052d.mp4")
end,
function()
gg.copyText("https://pan.jl8.top/view.php/e8033a2de0a740946dfefd991e0a052d.mp4")
gg.alert("复制成功,浏览器打开")
end
}, {
"范围铲",
function()
local qmnb=
{
{['memory']=32},
{['name']='范围铲'},
{['value']=0.015686247497797012, ['type']=16},
{['lv']=0.4000000059604645,['offset']=-16, ['type']=16},
{['lv']=0.05000000074505806,['offset']=-12, ['type']=16},
{['lv']=0.05000000074505806,['offset']=-8, ['type']=16},
{['lv']=2.0,['offset']=-4, ['type']=16},
{['lv']=0.9200706481933594,['offset']=4, ['type']=16},
{['lv']=0.9803921580314636,['offset']=8, ['type']=16},
{['lv']=1.0,['offset']=12, ['type']=16},
{['lv']=0.9716981053352356,['offset']=16, ['type']=16},
{['lv']=0.0687522143125534,['offset']=20, ['type']=16},
{['lv']=0.0687522143125534,['offset']=24, ['type']=16},
{['lv']=1.0,['offset']=28, ['type']=16},
}
local qmxg=
{
{['value']=15,['offset']=-24,['type']=16},
{['value']=15,['offset']=-20,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
end
}, {
"铲子秒拍",
function()
local qmnb=
{
{['memory']=32},
{['name']='铲子'},
{['value']=0.8051947951316833, ['type']=16},
{['lv']=2.0,['offset']=-3536, ['type']=16},
}
local qmxg=
{
{['value']=1.9999999494757503E-4,['offset']=2456,['type']=16},
{['value']=0.0010000000474974513,['offset']=2828,['type']=16},
{['value']=0.0010000000474974513,['offset']=3012,['type']=16},
{['value']=100.0,['offset']=3224,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
end
}, {
"刺刀范围",
function()
local qmnb=
{
{['memory']=32},
{['name']='第1步'},
{['value']=0.15000000596046448, ['type']=16},
{['lv']=0.27000001072883606,['offset']=4, ['type']=16},
{['lv']=0.05000000074505806,['offset']=8, ['type']=16},
{['lv']=2.0,['offset']=12, ['type']=16},
}
local qmxg=
{
{['value']=15.0,['offset']=-8,['type']=16},
{['value']=15.0,['offset']=-4,['type']=16},
}
xqmnb(qmnb,qmxg)
local qmnb=
{
{['memory']=32},
{['name']='刺刀范围'},
{['value']=0.15000000596046448, ['type']=16},
{['lv']=0.12999999523162842,['offset']=4, ['type']=16},
{['lv']=0.05000000074505806,['offset']=8, ['type']=16},
{['lv']=2.0,['offset']=12, ['type']=16},
}
local qmxg=
{
{['value']=15.0,['offset']=-8,['type']=16},
{['value']=15.0,['offset']=-4,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
end
},{
"桃木剑范围",
function()
local qmnb=
{
{['memory']=32},
{['name']='第一步'},
{['value']=0.029999999329447746, ['type']=16},
{['lv']=0.30000001192092896,['offset']=-8, ['type']=16},
{['lv']=2.0,['offset']=4, ['type']=16},
{['lv']=1.0,['offset']=8, ['type']=16},
{['lv']=1.0,['offset']=12, ['type']=16},
{['lv']=1.0,['offset']=16, ['type']=16},
{['lv']=1.0,['offset']=20, ['type']=16},
{['lv']=1.0,['offset']=24, ['type']=16},
{['lv']=1.0,['offset']=28, ['type']=16},
{['lv']=1.0,['offset']=32, ['type']=16},
{['lv']=1.0,['offset']=36, ['type']=16},
}
local qmxg=
{
{['value']=15,['offset']=-16,['type']=16},
{['value']=15,['offset']=-12,['type']=16},
}
xqmnb(qmnb,qmxg)
local qmnb=
{
{['memory']=32},
{['name']='桃木剑范围'},
{['value']=0.029999999329447746, ['type']=16},
{['lv']=0.30000001192092896,['offset']=-8, ['type']=16},
{['lv']=2.0,['offset']=4, ['type']=16},
{['lv']=1.0,['offset']=8, ['type']=16},
{['lv']=0.6766881942749023,['offset']=16, ['type']=16},
}
local qmxg=
{
{['value']=15,['offset']=-16,['type']=16},
{['value']=15,['offset']=-12,['type']=16},
}
xqmnb(qmnb,qmxg)
gg.alert('开启成功,蓄力也有效果,全局有效','好的我知道了')
end,
function()
end
},{
"长鞭范围",
function()
local qmnb=
{
{['memory']=32},
{['name']='长鞭范围'},
{['value']=3.799999952316284, ['type']=16},
{['lv']=50.0,['offset']=-20, ['type']=16},
}
local qmxg=
{
{['value']=12,['offset']=4,['type']=16},
{['value']=12,['offset']=8,['type']=16},
{['value']=12,['offset']=564,['type']=16},
{['value']=12,['offset']=568,['type']=16},
{['value']=12,['offset']=1124,['type']=16},
{['value']=12,['offset']=1128,['type']=16},
}
xqmnb(qmnb,qmxg)
local qmnb=
{
{['memory']=32},
{['name']='长鞭'},
{['value']=9.5, ['type']=16},
{['lv']=0.019999999552965164,['offset']=16, ['type']=16},
}
local qmxg=
{
{['value']=15,['offset']=4,['type']=16},
{['value']=15,['offset']=8,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
end
},{
"长鞭去除前后摇旧版",
function()
local qmnb=
{
{['memory']=32},
{['name']='鞭子'},
{['value']=0.8939929604530334, ['type']=16},
{['lv']=2.0,['offset']=32, ['type']=16},
}
local qmxg=
{
{['value']=2147483648.0,['offset']=2152,['type']=16},
{['value']=1.401298464324817E-45,['offset']=2216,['type']=16},
{['value']=2147483648.0,['offset']=2960,['type']=16},
{['value']=1.401298464324817E-45,['offset']=3024,['type']=16},
{['value']=2147483648.0,['offset']=3744,['type']=16},
{['value']=1.401298464324817E-45,['offset']=3816,['type']=16},
{['value']=2147483648.0,['offset']=4616,['type']=16},
{['value']=1.401298464324817E-45,['offset']=4688,['type']=16},
{['value']=2147483648.0,['offset']=4932,['type']=16},
{['value']=9.999999747378752E-5,['offset']=5092,['type']=16},
{['value']=1.5,['offset']=5488,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
end
},{
"长鞭去除前后摇新版",
function()
local qmnb=
{
{['memory']=32},
{['name']='鞭子'},
{['value']=0.8939929604530334, ['type']=16},
{['lv']=2.0,['offset']=32, ['type']=16},
}
local qmxg=
{
{['value']=2147483648.0,['offset']=2152,['type']=16},
{['value']=1.401298464324817E-45,['offset']=2216,['type']=16},
{['value']=2147483648.0,['offset']=2960,['type']=16},
{['value']=1.401298464324817E-45,['offset']=3024,['type']=16},
{['value']=2147483648.0,['offset']=3744,['type']=16},
{['value']=1.401298464324817E-45,['offset']=3816,['type']=16},
{['value']=2147483648.0,['offset']=4616,['type']=16},
{['value']=1.401298464324817E-45,['offset']=4688,['type']=16},
{['value']=2147483648.0,['offset']=4932,['type']=16},
{['value']=9.999999747378752E-5,['offset']=5092,['type']=16},
{['value']=1.1,['offset']=5488,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
end
}, {
"桃木剑取消后摇+攻速",
function()
local t = {"libunity.so:bss", "Cb"}
local tt = {0x1C280, 0xFC}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = cess, freeze = true}})
local qmnb=
{
{['memory']=32},
{['name']='桃木剑前后摇'},
{['value']=0.7115384936332703, ['type']=16},
{['lv']=3.0,['offset']=40, ['type']=16},
{['lv']=0.821428656578064,['offset']=160, ['type']=16},
{['lv']=3.0,['offset']=1280, ['type']=16},
}
local qmxg=
{
{['value']=9.999999796611898E-32,['offset']=-1388,['type']=16},
{['value']=9.999999796611898E-32,['offset']=-1204,['type']=16},
{['value']=4.5,['offset']=-992,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
end
}, {
"桃木剑取消后摇",
function()
local qmnb=
{
{['memory']=32},
{['name']='桃木剑前后摇'},
{['value']=0.7115384936332703, ['type']=16},
{['lv']=3.0,['offset']=40, ['type']=16},
{['lv']=0.821428656578064,['offset']=160, ['type']=16},
{['lv']=3.0,['offset']=1280, ['type']=16},
}
local qmxg=
{
{['value']=9.999999796611898E-32,['offset']=-1388,['type']=16},
{['value']=9.999999796611898E-32,['offset']=-1204,['type']=16},
{['value']=4.5,['offset']=-992,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
end
}, {
"桃木剑取消后摇新版",
function()
local qmnb=
{
{['memory']=32},
{['name']='桃木剑'},
{['value']=0.7115384936332703, ['type']=16},
{['lv']=3.0,['offset']=40, ['type']=16},
{['lv']=0.821428656578064,['offset']=160, ['type']=16},
{['lv']=3.0,['offset']=1280, ['type']=16},
}
local qmxg=
{
{['value']=0.0000001,['offset']=-1388,['type']=16},--三称出刀前摇
{['value']=0.0000001,['offset']=-1204,['type']=16},--一称出刀前摇
{['value']=120,['offset']=-992,['type']=16},--后摇速度
{['value']=0.12,['offset']=-652,['type']=16},--一称伤害延迟
{['value']=0.12,['offset']=-492,['type']=16},--三称伤害延迟
{['value']=0.0001,['offset']=-308,['type']=16},--一称收刀后摇速度
{['value']=1,['offset']=764,['type']=16},--蓄力刀动画速度
}
xqmnb(qmnb,qmxg)
end,
function()
end
}, {
"桃木剑取消后摇+自动蓄力",
function()
local qmnb=
{
{['memory']=32},
{['name']='桃木剑'},
{['value']=0.7115384936332703, ['type']=16},
{['lv']=3.0,['offset']=40, ['type']=16},
{['lv']=0.821428656578064,['offset']=160, ['type']=16},
{['lv']=3.0,['offset']=1280, ['type']=16},
}
local qmxg=
{
{['value']=0.0000001,['offset']=-1388,['type']=16},--三称出刀前摇
{['value']=0.0000001,['offset']=-1204,['type']=16},--一称出刀前摇
{['value']=120,['offset']=-992,['type']=16},--后摇速度
{['value']=0.12,['offset']=-652,['type']=16},--一称伤害延迟
{['value']=0.12,['offset']=-492,['type']=16},--三称伤害延迟
{['value']=0.0001,['offset']=-308,['type']=16},--一称收刀后摇速度
{['value']=0,['offset']=764,['type']=16},--蓄力刀动画速度
{['value']=1.0,['offset']=200,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
end
}, {
"长枪范围",
function()
local qmnb=
{
{['memory']=32},
{['name']='第一步'},
{['value']=0.029999999329447746, ['type']=16},
{['lv']=0.25,['offset']=-8, ['type']=16},
}
local qmxg=
{
{['value']=15,['offset']=-16,['type']=16},
{['value']=15,['offset']=-12,['type']=16},
}
xqmnb(qmnb,qmxg)
local qmnb=
{
{['memory']=32},
{['name']='长枪范围'},
{['value']=0.029999999329447746, ['type']=16},
{['lv']=0.25,['offset']=-8, ['type']=16},
}
local qmxg=
{
{['value']=15,['offset']=-16,['type']=16},
{['value']=15,['offset']=-12,['type']=16},
}
xqmnb(qmnb,qmxg)
local qmnb=
{
{['memory']=32},
{['name']='冲刺范围'},
{['value']=0.029999999329447746, ['type']=16},
{['lv']=0.4000000059604645,['offset']=-4, ['type']=16},
}
local qmxg=
{
{['value']=15.0,['offset']=-12,['type']=16},
}
xqmnb(qmnb,qmxg)
local qmnb=
{
{['memory']=32},
{['name']='蓄力范围'},
{['value']=0.02087107114493847, ['type']=16},
{['lv']=0.10000000149011612,['offset']=-12, ['type']=16},
}
local qmxg=
{
{['value']=15,['offset']=-24,['type']=16},
}
xqmnb(qmnb,qmxg)
gg.toast("全部开启成功")
end,
function()
end
}, {
"长枪去除前后摇",
function()
local qmnb=
{
{['memory']=32},
{['name']='长'},
{['value']=0.8500000238418579, ['type']=16},
{['lv']=0.25,['offset']=-8, ['type']=16},
{['lv']=4.0,['offset']=40, ['type']=16},
{['lv']=1,['offset']=8924, ['type']=16},
}
local qmxg=
{
{['value']=0.85,['offset']=5988,['type']=16},
{['value']=0.1,['offset']=7572,['type']=16},
{['value']=0.01,['offset']=8924,['type']=16},
{['value']=0.01,['offset']=9108,['type']=16},
}
xqmnb(qmnb,qmxg)
end,
function()
end
},
}),
},{--4娱乐功能
CAseek('飞天遁地','yydsf',-10,10,5,1,'速度',--名称,id,最小值,最大值,当前值,步长,单位
function(d)
gg.toast('设置为'..d..'变速')
local qmnb=
{
{['memory']=32},
{['name']='飞天遁地'},
{['value']=4.599999904632568, ['type']=16},
{['lv']=3.343126500982223E20,['offset']=1232, ['type']=16},
}
local qmxg=
{
{['value']=yydsf,['offset']=1060,['type']=16},
}
xqmnb(qmnb,qmxg)
end),
CAseek('变大变小','yydsp',0,4,1,0.5,'速度',--名称,id,最小值,最大值,当前值,步长,单位
function(p)
gg.toast('设置为'..p..'变速')
local qmnb=
{
{['memory']=32},
{['name']=''},
{['value']=6.475195135635659E-8, ['type']=16},
{['lv']=0.9999669790267944,['offset']=-48, ['type']=16},
{['lv']=2.032280690400512E-7,['offset']=4, ['type']=16},
{['lv']=1.339713140424692E-8,['offset']=56, ['type']=16},
}
local qmxg=
{
{['value']=yydsp,['offset']=-1904,['type']=16},
{['value']=yydsp,['offset']=-1900,['type']=16},
{['value']=yydsp,['offset']=-1896,['type']=16},
}
xqmnb(qmnb,qmxg)
end),
CAbox({'娱乐功能',
CAbutton(
'改房间号',
function()
ag= gg.prompt({[1]="请输入你当前的房间号,没效果多改几次,此功能仅供娱乐"}, {[1]=""}, {[1]="txet"})
if ag == nil then else
gg.clearResults()
gg.setRanges(32)
gg.searchNumber(";"..ag[1].."", gg["TYPE_WORD"], false, gg["SIGN_EQUAL"], 0, -1)
gg.searchNumber( ag[1] , gg["TYPE_WORD"], false, gg["SIGN_EQUAL"], 0, -1)
if gg.getResultCount() >= 300 then gg.alert("修改不了了.你账号有风险")Main0()end
gg.getResults(100)
gg.searchNumber( ag[1] , gg["TYPE_WORD"], false, gg["SIGN_EQUAL"], 0, -1)
if gg.getResultCount() >= 300 then gg.alert("修改不了了.你账号有风险")Main0()end
gg.getResults(100)
gg.editAll(";0000000",gg["TYPE_WORD"], false, gg["SIGN_EQUAL"], 0, -1)
gg.toast("修改成功")
gg.clearResults()
end
end),
CAbutton(
'自改金砖',
function()
T=gg.prompt({'可以改成你想要的'},{[1]='20'},{[1]='number'})
if T == nil or T[1] == '' or T[1] == '99' then gg.toast("取消")
else
end
local qmnb=
{
{['memory']=32},
{['name']='。。。'},
{['value']=440001, ['type']=4},
{['lv']=1750007199,['offset']=-80, ['type']=4},
}
local qmxg=
{
{['value']=T[1],['offset']=92,['type']=4},
}
xqmnb(qmnb,qmxg)
end),
}),
CAbox({'小狐狸葫芦改其他怪物',
CAswitch('小狐狸改老版天王', function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("200033", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("200033",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)--设置修改前200个代码
gg.editAll("200012", gg.TYPE_DWORD)
gg.toast("开启成功")
gg.clearResults()
end
end,
function()
gg.toast("无法关闭")
end),
CAswitch('小狐狸改盲犬', function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("200033", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("200033",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)--设置修改前200个代码
gg.editAll("200005", gg.TYPE_DWORD)
gg.toast("开启成功")
gg.clearResults()
end
end,
function()
gg.toast("无法关闭")
end),
CAswitch('小狐狸改远古巨鲶', function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("200033", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("200033",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)--设置修改前200个代码
gg.editAll("201001", gg.TYPE_DWORD)
gg.toast("开启成功")
gg.clearResults()
end
end,
function()
gg.toast("无法关闭")
end),
CAswitch('小狐狸改陷阱蟾蜍', function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("200033", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("200033",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)--设置修改前200个代码
gg.editAll("200006", gg.TYPE_DWORD)
gg.toast("开启成功")
gg.clearResults()
end
end,
function()
gg.toast("无法关闭")
end),
CAswitch('小狐狸改九色鹿', function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("200033", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("200033",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)--设置修改前200个代码
gg.editAll("240002", gg.TYPE_DWORD)
gg.toast("开启成功")
gg.clearResults()
end
end,
function()
gg.toast("无法关闭")
end),
}),
CAbox({'土拨鼠葫芦改其他怪物',
CAswitch('土拨鼠改老版天王', function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("200004", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("200004",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)--设置修改前200个代码
gg.editAll("200012", gg.TYPE_DWORD)
gg.toast("开启成功")
gg.clearResults()
end
end,
function()
gg.toast("无法关闭")
end),
CAswitch('土拨鼠改盲犬', function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("200004", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("200004",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)--设置修改前200个代码
gg.editAll("200005", gg.TYPE_DWORD)
gg.toast("开启成功")
gg.clearResults()
end
end,
function()
gg.toast("无法关闭")
end),
CAswitch('土拨鼠改远古巨鲶', function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("200004", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("200004",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)--设置修改前200个代码
gg.editAll("201001", gg.TYPE_DWORD)
gg.toast("开启成功")
gg.clearResults()
end
end,
function()
gg.toast("无法关闭")
end),
CAswitch('土拨鼠改陷阱蟾蜍', function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("200004", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("200004",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)--设置修改前200个代码
gg.editAll("200006", gg.TYPE_DWORD)
gg.toast("开启成功")
gg.clearResults()
end
end,
function()
gg.toast("无法关闭")
end),
CAswitch('土拨鼠改九色鹿', function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("200004", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("200004",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)--设置修改前200个代码
gg.editAll("240002", gg.TYPE_DWORD)
gg.toast("开启成功")
gg.clearResults()
end
end,
function()
gg.toast("无法关闭")
end),
}),
CAbutton(
'角色改土拨鼠',
function()
--libil2cpp.so + 0x94370 -> 0x2A8 -> 0x110 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {607088, 680, 272, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
--libil2cpp.so + 0x94370 -> 0x2A8 -> 0x188 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {607088, 680, 392, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x1A0 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 416, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x98 -> 0xA8 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 152, 168, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x120 -> 0x0 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 288, 0, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x38 -> 0x128 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 56, 296, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x30 -> 0x1A8 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 48, 424, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x1A0 -> 0x78 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 416, 120, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x1A0 -> 0x40 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 416, 64, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x110 -> 0x50 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 272, 80, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x1A0 -> 0x48 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 416, 72, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x88 -> 0xD8 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 136, 216, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x90 -> 0xB0 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 144, 176, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
--libil2cpp.so + 0x94370 -> 0x2A8 -> 0x98 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {607088, 680, 152, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
--libil2cpp.so + 0x94370 -> 0x2A8 -> 0x20 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {607088, 680, 32, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
--libil2cpp.so + 0x94370 -> 0x2A8 -> 0x278 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {607088, 680, 632, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
--libil2cpp.so + 0x94370 -> 0x2A8 -> 0x200 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {607088, 680, 512, 184, 392, 48}, 5)
gg.edits(addr, {{102, 4, 0, true}})
end),
CAbutton(
'角色改精绝女王',
function()
--libil2cpp.so + 0x94370 -> 0x2A8 -> 0x110 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {607088, 680, 272, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
--libil2cpp.so + 0x94370 -> 0x2A8 -> 0x188 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {607088, 680, 392, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x1A0 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 416, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x98 -> 0xA8 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 152, 168, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x120 -> 0x0 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 288, 0, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x38 -> 0x128 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 56, 296, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x30 -> 0x1A8 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 48, 424, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x1A0 -> 0x78 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 416, 120, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x1A0 -> 0x40 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 416, 64, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x110 -> 0x50 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 272, 80, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x1A0 -> 0x48 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 416, 72, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x88 -> 0xD8 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 136, 216, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
--libil2cpp.so + 0xADE50 -> 0x90 -> 0xB0 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {712272, 144, 176, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
--libil2cpp.so + 0x94370 -> 0x2A8 -> 0x98 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {607088, 680, 152, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
--libil2cpp.so + 0x94370 -> 0x2A8 -> 0x20 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {607088, 680, 32, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
--libil2cpp.so + 0x94370 -> 0x2A8 -> 0x278 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {607088, 680, 632, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
--libil2cpp.so + 0x94370 -> 0x2A8 -> 0x200 -> 0xB8 -> 0x188 -> 0x30
local addr = readPointer("libil2cpp.so", {607088, 680, 512, 184, 392, 48}, 5)
gg.edits(addr, {{103, 4, 0, true}})
end),
CAbutton(
'祈愿圣杯',
function()
local qmnb=
{
{['memory']=32},
{['name']='祈愿圣杯'},
{['value']=1000039, ['type']=4},
{['lv']=1000017,['offset']=4, ['type']=4},
}
local qmxg=
{
{['value']=1000092,['offset']=-24,['type']=4},
{['value']=1000092,['offset']=-20,['type']=4},
{['value']=1000092,['offset']=-16,['type']=4},
{['value']=1000092,['offset']=-12,['type']=4},
{['value']=1000092,['offset']=-8,['type']=4},
{['value']=1000092,['offset']=-4,['type']=4},
}
xqmnb(qmnb,qmxg)
end),
CAbutton(
'变成大头',
function()
local qmnb=
{
{['memory']=32},
{['name']='变小'},
{['value']=6.475195135635659E-8, ['type']=16},
{['lv']=0.9999669790267944,['offset']=-48, ['type']=16},
{['lv']=2.032280690400512E-7,['offset']=4, ['type']=16},
{['lv']=1.339713140424692E-8,['offset']=56, ['type']=16},
}
local qmxg=
{
{['value']=3,['offset']=-32,['type']=16},
{['value']=3,['offset']=-28,['type']=16},
{['value']=3,['offset']=-24,['type']=16},
}
xqmnb(qmnb,qmxg)
end),
CAbutton('喷子变大', function()
local qmnb=
{
{['memory']=32},
{['name']='喷子变大'},
{['value']=0.0660746768116951, ['type']=16},
{['lv']=1.0,['offset']=-112, ['type']=16},
{['lv']=1.0,['offset']=-108, ['type']=16},
{['lv']=1.0,['offset']=-104, ['type']=16},
{['lv']=0.043170489370822906,['offset']=4, ['type']=16},
{['lv']=-0.022723674774169922,['offset']=8, ['type']=16},
}
local qmxg=
{
{['value']=4,['offset']=-112,['type']=16,['freeze']=true},
{['value']=4,['offset']=-108,['type']=16,['freeze']=true},
{['value']=4,['offset']=-104,['type']=16,['freeze']=true},
}
xqmnb(qmnb,qmxg)
end),
CAbutton('喷子无后', function()
local qmnb=
{
{['memory']=32},
{['name']='喷子无后'},
{['value']=1.7999999523162842, ['type']=16},
{['lv']=6.0,['offset']=-104, ['type']=16},
{['lv']=0.30000001192092896,['offset']=20, ['type']=16},
}
local qmxg=
{
{['value']=0.0,['offset']=-108,['type']=16},
}
xqmnb(qmnb,qmxg)
end),
CAbutton('神秘功能', function()
local qmnb=
{
{['memory']=32},
{['name']='桃木剑'},
{['value']=0.7115384936332703, ['type']=16},
{['lv']=3.0,['offset']=40, ['type']=16},
{['lv']=0.821428656578064,['offset']=160, ['type']=16},
{['lv']=3.0,['offset']=1280, ['type']=16},
}
local qmxg=
{
{['value']=0.0000001,['offset']=-1388,['type']=16},--三称出刀前摇
{['value']=0.0000001,['offset']=-1204,['type']=16},--一称出刀前摇
{['value']=120,['offset']=-992,['type']=16},--后摇速度
{['value']=0.12,['offset']=-652,['type']=16},--一称伤害延迟
{['value']=0.12,['offset']=-492,['type']=16},--三称伤害延迟
{['value']=0.0001,['offset']=-308,['type']=16},--一称收刀后摇速度
{['value']=0,['offset']=764,['type']=16},--蓄力刀动画速度
{['value']=0.0,['offset']=-1016,['type']=16},
}
xqmnb(qmnb,qmxg)
end),
CAbox({'回收物品美化',
CAbutton('摸金符美化天下第一剑', function()
gg.toast("正在开启请耐心等待")
local qmnb=
{
{['memory']=32},
{['name']='第1步'},
{['value']=4000, ['type']=4},
{['lv']=100007,['offset']=-1548, ['type']=4},
{['lv']=100007,['offset']=-1340, ['type']=4},
{['lv']=100007,['offset']=-1132, ['type']=4},
{['lv']=100007,['offset']=-924, ['type']=4},
{['lv']=100007,['offset']=-716, ['type']=4},
{['lv']=100007,['offset']=-508, ['type']=4},
{['lv']=100007,['offset']=-300, ['type']=4},
{['lv']=100007,['offset']=-92, ['type']=4},
}
local qmxg=
{
{['value']=1000000,['offset']=-4,['type']=4,['freeze']=true},
}
xqmnb(qmnb,qmxg)
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber("100007", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("100007",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(1000)--设置修改前1000个代码
gg.editAll("1000023", gg.TYPE_DWORD)
gg.toast("成功")
gg.clearResults()
end
end),
CAbutton('摸金符美化祈愿圣杯', function()
gg.toast("正在开启请耐心等待")
local qmnb=
{
{['memory']=32},
{['name']='第1步'},
{['value']=4000, ['type']=4},
{['lv']=100007,['offset']=-1548, ['type']=4},
{['lv']=100007,['offset']=-1340, ['type']=4},
{['lv']=100007,['offset']=-1132, ['type']=4},
{['lv']=100007,['offset']=-924, ['type']=4},
{['lv']=100007,['offset']=-716, ['type']=4},
{['lv']=100007,['offset']=-508, ['type']=4},
{['lv']=100007,['offset']=-300, ['type']=4},
{['lv']=100007,['offset']=-92, ['type']=4},
}
local qmxg=
{
{['value']=3000000,['offset']=-4,['type']=4,['freeze']=true},
}
xqmnb(qmnb,qmxg)
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber("100007", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("100007",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(1000)--设置修改前1000个代码
gg.editAll("1000092", gg.TYPE_DWORD)
gg.toast("成功")
gg.clearResults()
end
end),
CAbutton('摸金符美化传国玉玺', function()
gg.toast("正在开启请耐心等待")
local qmnb=
{
{['memory']=32},
{['name']='第1步'},
{['value']=4000, ['type']=4},
{['lv']=100007,['offset']=-1548, ['type']=4},
{['lv']=100007,['offset']=-1340, ['type']=4},
{['lv']=100007,['offset']=-1132, ['type']=4},
{['lv']=100007,['offset']=-924, ['type']=4},
{['lv']=100007,['offset']=-716, ['type']=4},
{['lv']=100007,['offset']=-508, ['type']=4},
{['lv']=100007,['offset']=-300, ['type']=4},
{['lv']=100007,['offset']=-92, ['type']=4},
}
local qmxg=
{
{['value']=1000000,['offset']=-4,['type']=4,['freeze']=true},
}
xqmnb(qmnb,qmxg)
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber("100007", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("100007",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(1000)--设置修改前1000个代码
gg.editAll("1000047", gg.TYPE_DWORD)
gg.toast("成功")
gg.clearResults()
end
end),
CAbutton('金樽美化传国玉玺', function()
gg.toast("正在开启请耐心等待")
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber("1000039", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("1000039",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(1000)--设置修改前1000个代码
gg.editAll("1000023", gg.TYPE_DWORD)
gg.toast("成功")
gg.clearResults()
end
end),
CAbutton('金樽美化天下第一剑', function()
gg.toast("正在开启请耐心等待")
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber("1000039", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("1000039",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(1000)--设置修改前1000个代码
gg.editAll("1000047", gg.TYPE_DWORD)
gg.toast("成功")
gg.clearResults()
end
end),
CAbutton('金樽美化祈愿圣杯', function()
gg.toast("正在开启请耐心等待")
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber("1000039", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("1000039",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(1000)--设置修改前200个代码
gg.editAll("1000092", gg.TYPE_DWORD)
gg.toast("成功")
gg.clearResults()
end
end),
CAswitch("摸金符改圣杯",
function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("100007", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("100007",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)
gg.editAll("1,000,092", gg.TYPE_DWORD)
gg.toast("实体刷铲铲币开启成功")
gg.clearResults()
end
end
),
CAswitch("摸金符改天下第一剑",
function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("100007", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("100007",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)
gg.editAll("1,000,023", gg.TYPE_DWORD)
gg.toast("开启成功")
gg.clearResults()
end
end
),
CAswitch("摸金符改雪莲",
function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("100007", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("100007",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)
gg.editAll("1000067", gg.TYPE_DWORD)
gg.toast("开启成功")
gg.clearResults()
end
end
),
CAswitch("摸金符改鬼喜",
function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("100007", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("100007",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)
gg.editAll("1000037", gg.TYPE_DWORD)
gg.toast("开启成功")
gg.clearResults()
end
end
),
CAswitch("增加爆率",
function()
gg.toast("开启成功")
end,
function()
-- 关闭函数
end
),
CAswitch("修改房间号",
function()
ag= gg.prompt({[1]="请输入你当前的房间号,没效果多改几次,此功能仅供娱乐"}, {[1]=""}, {[1]="txet"})
if ag == nil then else
gg.clearResults()
gg.setRanges(32)
gg.searchNumber(";"..ag[1].."", gg["TYPE_WORD"], false, gg["SIGN_EQUAL"], 0, -1)
gg.searchNumber( ag[1] , gg["TYPE_WORD"], false, gg["SIGN_EQUAL"], 0, -1)
if gg.getResultCount() >= 300 then gg.alert("修改不了了.你账号有风险")Main0()end
gg.getResults(100)
gg.searchNumber( ag[1] , gg["TYPE_WORD"], false, gg["SIGN_EQUAL"], 0, -1)
if gg.getResultCount() >= 300 then gg.alert("修改不了了.你账号有风险")Main0()end
gg.getResults(100)
gg.editAll(";0000000",gg["TYPE_WORD"], false, gg["SIGN_EQUAL"], 0, -1)
gg.toast("修改成功")
gg.clearResults()
end
end
),
CAswitch("修改文字",
function()
gg.clearResults()
gg.setRanges(32)
a = gg.prompt({"请输入更改前的文字","请输入更改后的文字"},{[1]="",[2]="!"},{"text","text"})
if not a then return end
if a[1] == "" then return end
if a[2] == "" then return end
gg.searchNumber(";"..a[1], gg.TYPE_WORD, false, gg.SIGN_EQUAL, 0, -1, 0)
if gg.getResultsCount() == 0 then gg.alert('搜索失败') return end
gg.getResults(99999)
gg.editAll(";"..a[2], gg.TYPE_WORD)
gg.toast("Done✔️")
toMusic('开启成功')
end
),
}),
CAbutton(
"✨单字id✨",
function()
gg.toast("单字id功能启动中...")
gg.clearResults()
gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_C_HEAP | gg.REGION_ANONYMOUS)
gg.searchNumber("1915843121", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local count = gg.getResultsCount()
if count > 0 then
gg.toast("找到 " .. count .. " 个结果")
local results = gg.getResults(count)
for i, v in ipairs(results) do
results[i].value = 502930938
results[i].freeze = true
results[i].address = results[i].address
results[i].flags = gg.TYPE_DWORD
end
gg.setValues(results)
gg.addListItems(results)
gg.toast("修改完成!已修改 " .. count .. " 个数值并冻结")
else
gg.toast("未找到匹配的数值")
end
gg.clearResults()
end),
CAbutton(
"✨双字id功能✨",
function()
gg.toast("双字id功能启动中...")
gg.clearResults()
gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_C_HEAP | gg.REGION_ANONYMOUS)
gg.searchNumber("1915843121", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local count = gg.getResultsCount()
if count > 0 then
gg.toast("找到 " .. count .. " 个结果")
local results = gg.getResults(count)
for i, v in ipairs(results) do
results[i].value = 502930938
results[i].freeze = true
results[i].address = results[i].address
results[i].flags = gg.TYPE_DWORD
end
gg.setValues(results)
gg.addListItems(results)
gg.toast("修改完成!已修改 " .. count .. " 个数值并冻结")
else
gg.toast("未找到匹配的数值")
end
gg.clearResults()
end),
},{--5皮肤美化
CAbox({'小黄背包美化',
CAbutton('毛球夹子', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber("20000001", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("20000001",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)--设置修改前200个代码
gg.editAll("20004006", gg.TYPE_DWORD)
gg.toast("成功")
gg.clearResults()
end
end),
CAbutton('兔先生的时钟', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber("20000001", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("20000001",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)--设置修改前200个代码
gg.editAll("20004002", gg.TYPE_DWORD)
gg.toast("成功")
gg.clearResults()
end
end),
CAbutton('云梦之星', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber("20000001", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("20000001",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)--设置修改前200个代码
gg.editAll("20004005", gg.TYPE_DWORD)
gg.toast("成功")
gg.clearResults()
end
end),
CAbutton('天使的召唤', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber("20000001", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("20000001",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)--设置修改前200个代码
gg.editAll("20004007", gg.TYPE_DWORD)
gg.toast("成功")
gg.clearResults()
end
end),
CAbutton('蝶恋花', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber("20000001", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("20000001",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(200)--设置修改前200个代码
gg.editAll("20004008", gg.TYPE_DWORD)
gg.toast("成功")
gg.clearResults()
end
end),
}),
CAbox({'小黄',
CAbutton('遗失的童话', function()
gg.setRanges(32)
Name='遗失的童话'
local tb1=
{
{20000007,4,0},
{20000007,4,0},
{20000008,4,4},
{20000009,4,8},
}
local tb2=
{
{20000259,4,0},
{20000260,4,4},
{20000258,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('罗丽', function()
gg.setRanges(32)
Name='罗丽'
local tb1=
{
{20000007,4,0},
{20000007,4,0},
{20000008,4,4},
{20000009,4,8},
}
local tb2=
{
{20000285,4,0},
{20000286,4,4},
{20000287,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('青丘一梦', function()
gg.setRanges(32)
Name='青丘一梦'
local tb1=
{
{20000007,4,0},
{20000007,4,0},
{20000008,4,4},
{20000009,4,8},
}
local tb2=
{
{20000229,4,0},
{20000218,4,4},
{20000210,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('霓裳踏雪', function()
gg.setRanges(32)
Name='霓裳踏雪'
local tb1=
{
{20000007,4,0},
{20000007,4,0},
{20000008,4,4},
{20000009,4,8},
}
local tb2=
{
{20000244,4,0},
{20000245,4,4},
{20000243,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('呱呱雨衣', function()
gg.setRanges(32)
Name='呱呱雨衣'
local tb1=
{
{20000007,4,0},
{20000007,4,0},
{20000008,4,4},
{20000009,4,8},
}
local tb2=
{
{20000318,4,0},
{20000319,4,4},
{20000317,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('异色序曲', function()
gg.setRanges(32)
Name='异色序曲'
local tb1=
{
{20000007,4,0},
{20000007,4,0},
{20000008,4,4},
{20000009,4,8},
}
local tb2=
{
{20000330,4,0},
{20000329,4,4},
{20000328,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
}),
CAbox({'逍遥',
CAbutton('泽引山海', function()
gg.setRanges(32)
Name='泽引山海'
local tb1=
{
{20000601,4,0},
{20000601,4,0},
{20000602,4,4},
{20000603,4,8},
}
local tb2=
{
{20000248,4,0},
{20000249,4,4},
{20000247,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('绣春逍影', function()
gg.setRanges(32)
Name='绣春逍影'
local tb1=
{
{20000601,4,0},
{20000601,4,0},
{20000602,4,4},
{20000603,4,8},
}
local tb2=
{
{20006002,4,0},
{20006003,4,4},
{20006004,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('莲花渡', function()
gg.setRanges(32)
Name='莲花渡'
local tb1=
{
{20000601,4,0},
{20000601,4,0},
{20000602,4,4},
{20000603,4,8},
}
local tb2=
{
{20000334,4,0},
{20000333,4,4},
{20000332,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('卡原皮特效', function()
gg.setRanges(32)
Name='逍遥'
local tb1=
{
{20000601,4,0},
{20000601,4,0},
{20000602,4,4},
{20000603,4,8},
}
local tb2=
{
{20000601,4,0},
{20000334,4,4},
{20000332,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
}),
CAbox({'爱丽丝',
CAbutton('血色的玛丽', function()
gg.setRanges(32)
Name='血色的玛丽'
local tb1=
{
{20000010,4,0},
{20000010,4,0},
{20000011,4,4},
{20000012,4,8},
}
local tb2=
{
{20000233,4,0},
{20000234,4,4},
{20000232,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('瑞羽街春', function()
gg.setRanges(32)
Name='瑞羽街春'
local tb1=
{
{20000010,4,0},
{20000010,4,0},
{20000011,4,4},
{20000012,4,8},
}
local tb2=
{
{20000251,4,0},
{20000252,4,4},
{20000250,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('冰公主', function()
gg.setRanges(32)
Name='冰公主'
local tb1=
{
{20000010,4,0},
{20000010,4,0},
{20000011,4,4},
{20000012,4,8},
}
local tb2=
{
{20000278,4,0},
{20000279,4,4},
{20000280,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('甜梦派对', function()
gg.setRanges(32)
Name='甜梦派对'
local tb1=
{
{20000010,4,0},
{20000010,4,0},
{20000011,4,4},
{20000012,4,8},
}
local tb2=
{
{20000339,4,0},
{20000340,4,4},
{20000341,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
}),
CAbox({'薇薇安',
CAbutton('圣光之谕', function()
gg.setRanges(32)
Name='圣光之谕'
local tb1=
{
{20000701,4,0},
{20000701,4,0},
{20000702,4,4},
{20000703,4,8},
}
local tb2=
{
{20000274,4,0},
{20000275,4,4},
{20000276,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('白光莹', function()
gg.setRanges(32)
Name='白光莹'
local tb1=
{
{20000701,4,0},
{20000701,4,0},
{20000702,4,4},
{20000703,4,8},
}
local tb2=
{
{20000288,4,0},
{20000289,4,4},
{20000290,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('黑夜挽歌', function()
local qmnb=
{
{['memory']=32},
{['name']='黑夜挽歌'},
{['value']=20000701, ['type']=4},
{['lv']=20000702,['offset']=4, ['type']=4},
{['lv']=20000703,['offset']=8, ['type']=4},
}
local qmxg=
{
{['value']=20000255,['offset']=0,['type']=4,['freeze']=true},
{['value']=20000256,['offset']=4,['type']=4,['freeze']=true},
{['value']=20000257,['offset']=8,['type']=4,['freeze']=true},
}
xqmnb(qmnb,qmxg)
end),
}),
CAbox({'零',
CAbutton('赤焰将军', function()
gg.setRanges(32)
Name='赤焰将军'
local tb1=
{
{20000013,4,0},
{20000013,4,0},
{20000014,4,4},
{20000015,4,8},
}
local tb2=
{
{20000238,4,4},
{20000239,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('青云逸歌', function()
gg.setRanges(32)
Name='青云逸歌'
local tb1=
{
{20000013,4,0},
{20000013,4,0},
{20000014,4,4},
{20000015,4,8},
}
local tb2=
{
{20000265,4,0},
{20000266,4,4},
{20000267,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('爱丽零', function()
gg.setRanges(32)
Name='神秘皮肤'
local tb1=
{
{20000013,4,0},
{20000013,4,0},
{20000014,4,4},
{20000015,4,8},
}
local tb2=
{
{20000248,4,0},
{20000011,4,4},
{20000012,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
}),
CAbox({'巫铃儿',
CAbutton('素影瑶光', function()
gg.setRanges(32)
Name='素影瑶光'
local tb1=
{
{20000801,4,0},
{20000801,4,0},
{20000802,4,4},
{20000803,4,8},
}
local tb2=
{
{20000268,4,0},
{20000269,4,4},
{20000270,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('素影瑶光[红]', function()
gg.setRanges(32)
Name='镜生遗梦'
local tb1=
{
{20000801,4,0},
{20000801,4,0},
{20000802,4,4},
{20000803,4,8},
}
local tb2=
{
{20000294,4,0},
{20000295,4,4},
{20000296,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('镜生遗梦[白]', function()
gg.setRanges(32)
Name='镜生遗梦'
local tb1=
{
{20000801,4,0},
{20000801,4,0},
{20000802,4,4},
{20000803,4,8},
}
local tb2=
{
{20000297,4,0},
{20000298,4,4},
{20000299,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
}),
CAbox({'阿念',
CAbutton('灵昭鹿鸣', function()
gg.setRanges(32)
Name='灵昭鹿鸣'
local tb1=
{
{20000502,4,0},
{20000502,4,0},
{20000503,4,4},
{20000504,4,8},
}
local tb2=
{
{20000241,4,0},
{20000242,4,4},
{20000240,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('迷途僵宝', function()
gg.setRanges(32)
Name='迷途僵宝'
local tb1=
{
{20000502,4,0},
{20000502,4,0},
{20000503,4,4},
{20000504,4,8},
}
local tb2=
{
{20000320,4,0},
{20000321,4,4},
{20000322,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
}),
CAbox({'莉莉',
CAbutton('情公主', function()
gg.setRanges(32)
Name='情公主'
local tb1=
{
{20000901,4,0},
{20000901,4,0},
{20000902,4,4},
{20000903,4,8},
}
local tb2=
{
{20000281,4,0},
{20000282,4,4},
{20000283,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('除妖小师妹', function()
gg.setRanges(32)
Name='除妖小师妹'
local tb1=
{
{20000901,4,0},
{20000901,4,0},
{20000902,4,4},
{20000903,4,8},
}
local tb2=
{
{20000323,4,0},
{20000324,4,4},
{20000327,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('莓果陷阱', function()
gg.setRanges(32)
Name='莓果陷阱'
local tb1=
{
{20000901,4,0},
{20000901,4,0},
{20000902,4,4},
{20000903,4,8},
}
local tb2=
{
{20006008,4,0},
{20006009,4,4},
{20006007,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
}),
CAbox({'艾伦',
CAbutton('水王子', function()
local qmnb=
{
{['memory']=32},
{['name']='水王子'},
{['value']=20001001, ['type']=4},
{['lv']=20001001,['offset']=0, ['type']=4},
{['lv']=20001002,['offset']=4, ['type']=4},
{['lv']=20001003,['offset']=8, ['type']=4},
}
local qmxg=
{
{['value']=20000291,['offset']=0,['type']=4},
{['value']=20000292,['offset']=4,['type']=4},
{['value']=20000293,['offset']=8,['type']=4},
}
xqmnb(qmnb,qmxg)
end),
CAbutton('绒绒对决', function()
local qmnb=
{
{['memory']=32},
{['name']='绒绒对决'},
{['value']=20001001, ['type']=4},
{['lv']=20001001,['offset']=0, ['type']=4},
{['lv']=20001002,['offset']=4, ['type']=4},
{['lv']=20001003,['offset']=8, ['type']=4},
}
local qmxg=
{
{['value']=20000342,['offset']=0,['type']=4},
{['value']=20000343,['offset']=4,['type']=4},
{['value']=20000344,['offset']=8,['type']=4},
}
xqmnb(qmnb,qmxg)
end),
}),
CAtext('当前道具美化为测试\n开启失败重启\n后面会优化', 0xFFAAC8FA,15),--文本,颜色,字号
CAtext('桃木剑', 0xFFD2B48C,15),--文本,颜色,字号
CAbutton('桃木剑-凤鸣九天', function()
function clearSearchHistory()
gg.clearResults()
gg.clearList()
end
function safeExit()
gg.alert("成功")
clearSearchHistory()
gg.alert("成功")
os.exit()
end
function universalBeautify(searchValue1, searchValue2, improveValue, comboSearch)
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
if comboSearch then
gg.searchNumber(comboSearch, gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
else
gg.searchNumber(searchValue1..";10214", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
end
local searchCount1 = gg.getResultsCount()
if searchCount1 == 0 then
gg.alert("失败")
return false
end
gg.searchNumber(tostring(improveValue), gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local improvedResults1 = gg.getResults(100)
if #improvedResults1 == 0 then
gg.alert("失败")
return false
end
local firstResultAddress = improvedResults1[1].address
local foundValue = nil
local scanRange = 500
local addressesToScan = {}
for i = 0, scanRange - 1 do
addressesToScan[i + 1] = {address = firstResultAddress + i * 4, flags = gg.TYPE_DWORD}
end
local scannedValues = gg.getValues(addressesToScan)
for i, valueInfo in ipairs(scannedValues) do
local currentValue = valueInfo.value
if (math.abs(currentValue) >= 100000000) then
for j = i + 1, #scannedValues do
local nextValue = scannedValues[j].value
if (math.abs(nextValue) >= 100000000) then
foundValue = nextValue
break
end
end
break
end
end
if not foundValue then
gg.alert("失败")
return false
end
gg.clearResults()
gg.searchNumber("10214;121;10;0;20", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local searchCount2 = gg.getResultsCount()
if searchCount2 == 0 then
gg.alert("失败")
return false
end
gg.searchNumber("10214", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local improvedResults2 = gg.getResults(100)
if #improvedResults2 == 0 then
gg.alert("失败")
return false
end
local secondResultAddress = improvedResults2[1].address
local targetAddress = nil
local addressesToScan2 = {}
for i = 0, scanRange - 1 do
addressesToScan2[i + 1] = {address = secondResultAddress + i * 4, flags = gg.TYPE_DWORD}
end
local scannedValues2 = gg.getValues(addressesToScan2)
local nineDigitCount = 0
for i, valueInfo in ipairs(scannedValues2) do
local currentValue = valueInfo.value
if (math.abs(currentValue) >= 100000000) then
nineDigitCount = nineDigitCount + 1
if nineDigitCount == 3 then
targetAddress = scannedValues2[i].address
break
end
end
end
if not targetAddress then
gg.alert("失败")
return false
end
local replaceData = {{address = targetAddress, flags = gg.TYPE_DWORD, value = foundValue}}
gg.setValues(replaceData)
return true
end
function fenmingjiutian()
gg.toast("凤鸣九天美化")
local success = universalBeautify(5403103, 10214, 5403103, "5403103;10214")
if success then
gg.toast("凤鸣九天执行完毕")
end
clearSearchHistory()
end
gg.alert("大厅开启")
local success = fenmingjiutian()
if success then
gg.toast("凤鸣九天执行完毕")
else
gg.alert("成功")
end
clearSearchHistory()
end),
CAbutton('桃木剑-永眠曲', function()
function clearSearchHistory()
gg.clearResults()
gg.clearList()
end
function safeExit()
gg.alert("成功")
clearSearchHistory()
gg.alert("成功")
os.exit()
end
function universalBeautify(searchValue1, searchValue2, improveValue, comboSearch)
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
if comboSearch then
gg.searchNumber(comboSearch, gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
else
gg.searchNumber(searchValue1..";10214", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
end
local searchCount1 = gg.getResultsCount()
if searchCount1 == 0 then
gg.alert("失败")
return false
end
gg.searchNumber(tostring(improveValue), gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local improvedResults1 = gg.getResults(100)
if #improvedResults1 == 0 then
gg.alert("失败")
return false
end
local firstResultAddress = improvedResults1[1].address
local foundValue = nil
local scanRange = 500
local addressesToScan = {}
for i = 0, scanRange - 1 do
addressesToScan[i + 1] = {address = firstResultAddress + i * 4, flags = gg.TYPE_DWORD}
end
local scannedValues = gg.getValues(addressesToScan)
for i, valueInfo in ipairs(scannedValues) do
local currentValue = valueInfo.value
if (math.abs(currentValue) >= 100000000) then
for j = i + 1, #scannedValues do
local nextValue = scannedValues[j].value
if (math.abs(nextValue) >= 100000000) then
foundValue = nextValue
break
end
end
break
end
end
if not foundValue then
gg.alert("失败")
return false
end
gg.clearResults()
gg.searchNumber("10214;121;10;0;20", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local searchCount2 = gg.getResultsCount()
if searchCount2 == 0 then
gg.alert("失败")
return false
end
gg.searchNumber("10214", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local improvedResults2 = gg.getResults(100)
if #improvedResults2 == 0 then
gg.alert("失败")
return false
end
local secondResultAddress = improvedResults2[1].address
local targetAddress = nil
local addressesToScan2 = {}
for i = 0, scanRange - 1 do
addressesToScan2[i + 1] = {address = secondResultAddress + i * 4, flags = gg.TYPE_DWORD}
end
local scannedValues2 = gg.getValues(addressesToScan2)
local nineDigitCount = 0
for i, valueInfo in ipairs(scannedValues2) do
local currentValue = valueInfo.value
if (math.abs(currentValue) >= 100000000) then
nineDigitCount = nineDigitCount + 1
if nineDigitCount == 3 then
targetAddress = scannedValues2[i].address
break
end
end
end
if not targetAddress then
gg.alert("失败")
return false
end
local replaceData = {{address = targetAddress, flags = gg.TYPE_DWORD, value = foundValue}}
gg.setValues(replaceData)
return true
end
function yongmianqu()
gg.toast("永眠曲美化")
local success = universalBeautify(5403101, 10214, 5403101, "5403101;10214")
if success then
gg.toast("永眠曲执行完毕")
end
clearSearchHistory()
end
gg.alert("大厅开启")
local success = yongmianqu()
if success then
gg.toast("永眠曲执行完毕")
else
gg.alert("成功")
end
clearSearchHistory()
end),
CAbutton('桃木剑-最后的独角兽', function()
function clearSearchHistory()
gg.clearResults()
gg.clearList()
end
function safeExit()
gg.alert("成功")
clearSearchHistory()
gg.alert("成功")
os.exit()
end
function universalBeautify(searchValue1, searchValue2, improveValue, comboSearch)
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
if comboSearch then
gg.searchNumber(comboSearch, gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
else
gg.searchNumber(searchValue1..";10214", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
end
local searchCount1 = gg.getResultsCount()
if searchCount1 == 0 then
gg.alert("失败")
return false
end
gg.searchNumber(tostring(improveValue), gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local improvedResults1 = gg.getResults(100)
if #improvedResults1 == 0 then
gg.alert("失败")
return false
end
local firstResultAddress = improvedResults1[1].address
local foundValue = nil
local scanRange = 500
local addressesToScan = {}
for i = 0, scanRange - 1 do
addressesToScan[i + 1] = {address = firstResultAddress + i * 4, flags = gg.TYPE_DWORD}
end
local scannedValues = gg.getValues(addressesToScan)
for i, valueInfo in ipairs(scannedValues) do
local currentValue = valueInfo.value
if (math.abs(currentValue) >= 100000000) then
for j = i + 1, #scannedValues do
local nextValue = scannedValues[j].value
if (math.abs(nextValue) >= 100000000) then
foundValue = nextValue
break
end
end
break
end
end
if not foundValue then
gg.alert("失败")
return false
end
gg.clearResults()
gg.searchNumber("10214;121;10;0;20", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local searchCount2 = gg.getResultsCount()
if searchCount2 == 0 then
gg.alert("失败")
return false
end
gg.searchNumber("10214", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local improvedResults2 = gg.getResults(100)
if #improvedResults2 == 0 then
gg.alert("失败")
return false
end
local secondResultAddress = improvedResults2[1].address
local targetAddress = nil
local addressesToScan2 = {}
for i = 0, scanRange - 1 do
addressesToScan2[i + 1] = {address = secondResultAddress + i * 4, flags = gg.TYPE_DWORD}
end
local scannedValues2 = gg.getValues(addressesToScan2)
local nineDigitCount = 0
for i, valueInfo in ipairs(scannedValues2) do
local currentValue = valueInfo.value
if (math.abs(currentValue) >= 100000000) then
nineDigitCount = nineDigitCount + 1
if nineDigitCount == 3 then
targetAddress = scannedValues2[i].address
break
end
end
end
if not targetAddress then
gg.alert("失败")
return false
end
local replaceData = {{address = targetAddress, flags = gg.TYPE_DWORD, value = foundValue}}
gg.setValues(replaceData)
return true
end
function lastunicorn()
gg.toast("最后的独角兽美化")
local success = universalBeautify(5403102, 10214, 5403102, "5403102;10214")
if success then
gg.toast("最后的独角兽执行完毕")
end
clearSearchHistory()
end
gg.alert("大厅开启")
local success = lastunicorn()
if success then
gg.toast("最后的独角兽执行完毕")
else
gg.alert("成功")
end
clearSearchHistory()
end),
CAtext('短管猎枪', 0xFFC19A6B,15),--文本,颜色,字号
CAbutton('短管猎枪-星光的裁决', function()
function clearSearchHistory()
gg.clearResults()
gg.clearList()
end
function safeExit()
gg.alert("成功")
clearSearchHistory()
gg.alert("成功")
os.exit()
end
-- 适配猎枪的通用美化逻辑(调整特征码和搜索参数)
function universalShotgunBeautify(searchValue1, searchValue2, improveValue, comboSearch, secondSearch)
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
if comboSearch then
gg.searchNumber(comboSearch, gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
else
gg.searchNumber(searchValue1..";400005", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
end
local searchCount1 = gg.getResultsCount()
if searchCount1 == 0 then
gg.alert("失败")
return false
end
gg.searchNumber(tostring(improveValue), gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local improvedResults1 = gg.getResults(100)
if #improvedResults1 == 0 then
gg.alert("失败")
return false
end
local firstResultAddress = improvedResults1[1].address
local foundValue = nil
local scanRange = 500
local addressesToScan = {}
for i = 0, scanRange - 1 do
addressesToScan[i + 1] = {address = firstResultAddress + i * 4, flags = gg.TYPE_DWORD}
end
local scannedValues = gg.getValues(addressesToScan)
for i, valueInfo in ipairs(scannedValues) do
local currentValue = valueInfo.value
if (math.abs(currentValue) >= 100000000) then
for j = i + 1, #scannedValues do
local nextValue = scannedValues[j].value
if (math.abs(nextValue) >= 100000000) then
foundValue = nextValue
break
end
end
break
end
end
if not foundValue then
gg.alert("失败")
return false
end
gg.clearResults()
if secondSearch then
gg.searchNumber(secondSearch, gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
else
gg.searchNumber("400005;121;10;0", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
end
local searchCount2 = gg.getResultsCount()
if searchCount2 == 0 then
gg.alert("失败")
return false
end
gg.searchNumber("400005", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local improvedResults2 = gg.getResults(100)
if #improvedResults2 == 0 then
gg.alert("失败")
return false
end
-- 猎枪专属:双结果检测逻辑
local secondResultAddress = nil
if #improvedResults2 == 2 then
for i, result in ipairs(improvedResults2) do
local testAddresses = {
{address = result.address + 4, flags = gg.TYPE_DWORD},
{address = result.address + 8, flags = gg.TYPE_DWORD},
{address = result.address + 12, flags = gg.TYPE_DWORD}
}
local testValues = gg.getValues(testAddresses)
local hasZero = false
for j, testValue in ipairs(testValues) do
if testValue.value == 0 then
hasZero = true
break
end
end
if hasZero then
secondResultAddress = result.address
break
end
end
if not secondResultAddress then
secondResultAddress = improvedResults2[1].address
end
else
secondResultAddress = improvedResults2[1].address
end
local targetAddress = nil
local addressesToScan2 = {}
for i = 0, scanRange - 1 do
addressesToScan2[i + 1] = {address = secondResultAddress + i * 4, flags = gg.TYPE_DWORD}
end
local scannedValues2 = gg.getValues(addressesToScan2)
local nineDigitCount = 0
for i, valueInfo in ipairs(scannedValues2) do
local currentValue = valueInfo.value
if (math.abs(currentValue) >= 100000000) then
nineDigitCount = nineDigitCount + 1
if nineDigitCount == 3 then
targetAddress = scannedValues2[i].address
break
end
end
end
if not targetAddress then
gg.alert("失败")
return false
end
local replaceData = {{address = targetAddress, flags = gg.TYPE_DWORD, value = foundValue}}
gg.setValues(replaceData)
return true
end
function starlightJudgment()
gg.toast("星光的裁决美化")
-- 星光的裁决专属参数:5401101(特征码)、400005(辅助特征码)
local success = universalShotgunBeautify(5401101, 400005, 5401101, "5401101;400005", "400005;121;10;0")
if success then
gg.toast("星光的裁决执行完毕")
end
clearSearchHistory()
end
gg.alert("大厅开启")
local success = starlightJudgment()
if success then
gg.toast("星光的裁决执行完毕")
else
gg.alert("成功")
end
clearSearchHistory()
end),
CAbutton('短管猎枪-赞萌露比水枪', function()
function clearSearchHistory()
gg.clearResults()
gg.clearList()
end
function safeExit()
gg.alert("成功")
clearSearchHistory()
gg.alert("成功")
os.exit()
end
-- 猎枪通用美化逻辑(保留双结果检测)
function universalShotgunBeautify(searchValue1, searchValue2, improveValue, comboSearch, secondSearch)
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
if comboSearch then
gg.searchNumber(comboSearch, gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
else
gg.searchNumber(searchValue1..";400005", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
end
local searchCount1 = gg.getResultsCount()
if searchCount1 == 0 then
gg.alert("失败")
return false
end
gg.searchNumber(tostring(improveValue), gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local improvedResults1 = gg.getResults(100)
if #improvedResults1 == 0 then
gg.alert("失败")
return false
end
local firstResultAddress = improvedResults1[1].address
local foundValue = nil
local scanRange = 500
local addressesToScan = {}
for i = 0, scanRange - 1 do
addressesToScan[i + 1] = {address = firstResultAddress + i * 4, flags = gg.TYPE_DWORD}
end
local scannedValues = gg.getValues(addressesToScan)
for i, valueInfo in ipairs(scannedValues) do
local currentValue = valueInfo.value
if (math.abs(currentValue) >= 100000000) then
for j = i + 1, #scannedValues do
local nextValue = scannedValues[j].value
if (math.abs(nextValue) >= 100000000) then
foundValue = nextValue
break
end
end
break
end
end
if not foundValue then
gg.alert("失败")
return false
end
gg.clearResults()
if secondSearch then
gg.searchNumber(secondSearch, gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
else
gg.searchNumber("400005;121;10;0", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
end
local searchCount2 = gg.getResultsCount()
if searchCount2 == 0 then
gg.alert("失败")
return false
end
gg.searchNumber("400005", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local improvedResults2 = gg.getResults(100)
if #improvedResults2 == 0 then
gg.alert("失败")
return false
end
-- 猎枪专属双结果检测
local secondResultAddress = nil
if #improvedResults2 == 2 then
for i, result in ipairs(improvedResults2) do
local testAddresses = {
{address = result.address + 4, flags = gg.TYPE_DWORD},
{address = result.address + 8, flags = gg.TYPE_DWORD},
{address = result.address + 12, flags = gg.TYPE_DWORD}
}
local testValues = gg.getValues(testAddresses)
local hasZero = false
for j, testValue in ipairs(testValues) do
if testValue.value == 0 then
hasZero = true
break
end
end
if hasZero then
secondResultAddress = result.address
break
end
end
if not secondResultAddress then
secondResultAddress = improvedResults2[1].address
end
else
secondResultAddress = improvedResults2[1].address
end
local targetAddress = nil
local addressesToScan2 = {}
for i = 0, scanRange - 1 do
addressesToScan2[i + 1] = {address = secondResultAddress + i * 4, flags = gg.TYPE_DWORD}
end
local scannedValues2 = gg.getValues(addressesToScan2)
local nineDigitCount = 0
for i, valueInfo in ipairs(scannedValues2) do
local currentValue = valueInfo.value
if (math.abs(currentValue) >= 100000000) then
nineDigitCount = nineDigitCount + 1
if nineDigitCount == 3 then
targetAddress = scannedValues2[i].address
break
end
end
end
if not targetAddress then
gg.alert("失败")
return false
end
local replaceData = {{address = targetAddress, flags = gg.TYPE_DWORD, value = foundValue}}
gg.setValues(replaceData)
return true
end
function rubyWaterGun()
gg.toast("赞萌露比水枪美化")
-- 赞萌露比水枪专属参数:5401102(特征码)、400005(辅助特征码)
local success = universalShotgunBeautify(5401102, 400005, 5401102, "5401102;400005", "400005;121;10;0")
if success then
gg.toast("赞萌露比水枪执行完毕")
end
clearSearchHistory()
end
gg.alert("大厅开启")
local success = rubyWaterGun()
if success then
gg.toast("赞萌露比水枪执行完毕")
else
gg.alert("成功")
end
clearSearchHistory()
end),
},{--6
CAbutton("自改头部", function()
local OP = gg.prompt({
"输入原本头部的代码",
"输入你要修改的代码\n代码如下:\n小黄20000002\n遗失的童话20000259\n霓裳踏雪20000244\n青丘一梦20000218\n罗丽20000285\n雨衣20000318\n小黄新皮肤20000329\n爱丽丝20000010\n血色中的玛丽20000233\n瑞羽衔春20000251\n冰公主20000278\n薯排甜心20000231\n零20000013\n赤炼将军20000237\n青云逸歌20000265\n阿念20000502\n灵昭鹿鸣20000241\n王子与骑士20000263\n僵尸20000322\n逍遥20000601\n泽引山海20000248\n逍遥新皮金皮20000333\n逍遥魔盒20006004\n薇薇安20000701\n黑月挽歌20000256\n圣光之逾20000275\n白光莹20000288\n巫铃儿20000801\n素影瑶光20000268\n镜生遗梦:主:20000294 副:20000297\n镜花辞20000316\n莉莉20000901\n情公主20000281\n僵尸20000327\n艾伦20001001\n水王子20000291\n输入你要修改的代码"
}, {[1]="", [2]=""}, {[1]='number', [2]='number'})
if OP == nil or OP[1] == '' or OP[2] == '' then
gg.toast("取消修改")
else
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber(OP[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local count = gg.getResultCount()
if count == 0 then
gg.toast("未找到代码")
else
gg.searchNumber(OP[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(math.min(count, 1000))
gg.editAll(OP[2], gg.TYPE_DWORD)
gg.clearResults()
gg.toast("头部修改成功")
end
end
end),
-- 取消头部修改
CAbutton("取消头部修改", function()
local OP = gg.prompt({
"输入要取消的头部代码",
"输入要恢复的默认代码"
}, {[1]="", [2]=""}, {[1]='number', [2]='number'})
if OP == nil or OP[1] == '' or OP[2] == '' then
gg.toast("取消操作")
else
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber(OP[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local count = gg.getResultCount()
if count == 0 then
gg.toast("未找到代码")
else
gg.searchNumber(OP[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(math.min(count, 1000))
gg.editAll(OP[2], gg.TYPE_DWORD)
gg.clearResults()
gg.toast("头部已恢复默认")
end
end
end),
-- 头像框修改
CAbutton("自改头像框", function()
local OP = gg.prompt({
"输入原本头像框代码(默认:230001)",
"输入要修改的头像框代码\n代码如下:\n灵狐绘梦230002\n原始股东230003\n血色纸牌230004\n赤焰流霞230005\n千年之约230006\n蔷薇花语230007\n辉光独角230008\n曼珠沙华230009\n神圣殿堂230010\n荣誉行进曲230011\n百万时刻230012\n精灵魔法230013\n与凤歌230014\n渊虹缠金230015\n摸金行动230016\n一花世界230017\n惊魂农场230018"
}, {[1]="230001", [2]=""}, {[1]='number', [2]='number'})
if OP == nil or OP[1] == '' or OP[2] == '' then
gg.toast("取消修改")
else
gg.setRanges(32)
gg.searchNumber(OP[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local count = gg.getResultCount()
if count == 0 then
gg.toast("未找到代码")
else
gg.searchNumber(OP[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(math.min(count, 200))
gg.editAll(OP[2], gg.TYPE_DWORD)
gg.clearResults()
gg.toast("头像框修改成功")
end
end
end),
-- 取消头像框修改
CAbutton("取消头像框修改", function()
local OP = gg.prompt({
"输入要取消的头像框代码",
"输入要恢复的默认代码(默认:230001)"
}, {[1]="", [2]="230001"}, {[1]='number', [2]='number'})
if OP == nil or OP[1] == '' or OP[2] == '' then
gg.toast("取消操作")
else
gg.setRanges(32)
gg.searchNumber(OP[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local count = gg.getResultCount()
if count == 0 then
gg.toast("未找到代码")
else
gg.searchNumber(OP[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(math.min(count, 200))
gg.editAll(OP[2], gg.TYPE_DWORD)
gg.clearResults()
gg.toast("头像框已恢复默认")
end
end
end),
-- 表情包修改
CAbutton("自改表情包", function()
local OP = gg.prompt({
"输入原本表情代码(默认:6000002)",
"输入要修改的表情代码\n代码如下:\n哈哈6000002\n求组队6000007\n无语6000010\n哇噻6000013\n敲木鱼6000014"
}, {[1]="6000002", [2]=""}, {[1]='number', [2]='number'})
if OP == nil or OP[1] == '' or OP[2] == '' then
gg.toast("取消修改")
else
gg.setRanges(32)
gg.searchNumber(OP[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local count = gg.getResultCount()
if count == 0 then
gg.toast("未找到代码")
else
gg.searchNumber(OP[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(math.min(count, 200))
gg.editAll(OP[2], gg.TYPE_DWORD)
gg.clearResults()
gg.toast("表情包修改成功")
end
end
end),
-- 取消表情包修改
CAbutton("取消表情包修改", function()
local OP = gg.prompt({
"输入要取消的表情代码",
"输入要恢复的默认代码(默认:6000002)"
}, {[1]="", [2]="6000002"}, {[1]='number', [2]='number'})
if OP == nil or OP[1] == '' or OP[2] == '' then
gg.toast("取消操作")
else
gg.setRanges(32)
gg.searchNumber(OP[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local count = gg.getResultCount()
if count == 0 then
gg.toast("未找到代码")
else
gg.searchNumber(OP[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(math.min(count, 200))
gg.editAll(OP[2], gg.TYPE_DWORD)
gg.clearResults()
gg.toast("表情包已恢复默认")
end
end
end),
-- 聊天气泡修改
CAbutton("自改聊天气泡", function()
local OP = gg.prompt({
"输入原本气泡代码(默认:570001)",
"输入要修改的气泡代码\n代码如下:\n默认聊天气泡1570001\n紫晶之扉570002"
}, {[1]="570001", [2]=""}, {[1]='number', [2]='number'})
if OP == nil or OP[1] == '' or OP[2] == '' then
gg.toast("取消修改")
else
gg.setRanges(32)
gg.searchNumber(OP[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local count = gg.getResultCount()
if count == 0 then
gg.toast("未找到代码")
else
gg.searchNumber(OP[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(math.min(count, 200))
gg.editAll(OP[2], gg.TYPE_DWORD)
gg.clearResults()
gg.toast("聊天气泡修改成功")
end
end
end),
-- 取消聊天气泡修改
CAbutton("取消聊天气泡修改", function()
local OP = gg.prompt({
"输入要取消的气泡代码",
"输入要恢复的默认代码(默认:570001)"
}, {[1]="", [2]="570001"}, {[1]='number', [2]='number'})
if OP == nil or OP[1] == '' or OP[2] == '' then
gg.toast("取消操作")
else
gg.setRanges(32)
gg.searchNumber(OP[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
local count = gg.getResultCount()
if count == 0 then
gg.toast("未找到代码")
else
gg.searchNumber(OP[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(math.min(count, 200))
gg.editAll(OP[2], gg.TYPE_DWORD)
gg.clearResults()
gg.toast("聊天气泡已恢复默认")
end
end
end),
CAbutton("自改头部",
function()
OP=gg.prompt({"输入原本头部的代码","输入你要修改的代码 代码如下: 小黄20000002 遗失的童话20000259 霓裳踏雪20000244 青丘一梦20000218 罗丽20000285 雨衣20000318 小黄新皮肤20000329 爱丽丝20000010 血色中的玛丽20000233 瑞羽衔春20000251 冰公主20000278 薯排甜心20000231 零20000013 赤炼将军20000237 青云逸歌20000265 阿念20000502 灵昭鹿鸣20000241 王子与骑士20000263 僵尸20000322 逍遥20000601 泽引山海20000248 逍遥新皮金皮20000333 逍遥魔盒20006004 薇薇安20000701 黑月挽歌20000256 圣光之逾20000275 白光莹20000288 巫铃儿20000801 素影瑶光20000268 镜生遗梦:主:20000294 副:20000297 镜花辞20000316 莉莉20000901 情公主20000281 僵尸20000327 艾伦20001001 水王子20000291 输入你要修改的代码"},{[2]=" "," "},{[1]='number'})
if OP == nil or OP[1] == '' or OP[2] == '0' then gg.toast("取消")
else
gg.setRanges(gg.REGION_ANONYMOUS)--设置搜索内存
gg.searchNumber(OP[1],gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)--搜索值+类型
gg.searchNumber(OP[1],gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(1000)--设置搜索列表
gg.editAll(OP[2],gg.TYPE_DWORD)--改值+类型
end
gg.toast("开启成功")
string.toMusic("开启成功")
end),
CAbutton("自改脸",
function()
OP=gg.prompt({"输入原本脸部的代码","输入你要修改的代码 代码如下: 小黄--20000005 遗失的童话20000260 霓裳踏雪20000245 青丘一梦20000229 罗丽20000286 雨衣20000319 小黄新皮肤20000330 爱丽丝--20000011 血色中的玛丽20000234 瑞羽衔春20000252 冰公主20000279 零--20000014 赤炼将军20000238 青云逸歌20000266 阿念--20000503 灵昭鹿鸣20000242 王子与骑士20000264 僵尸20000321 逍遥--20000602 泽引山海20000249 新皮金皮20000334 逍遥魔盒20006003 薇薇安--20000702 黑月挽歌20000257 圣光之逾20000276 白光莹20000289 巫铃儿--20000802 素影瑶光20000269 镜生遗梦:主:20000295 副:20000298 镜花辞20000315 莉莉--20000902 情公主20000282 僵尸20000324 艾伦--20001001 水王子20000292 输入你要修改的代码"},{[2]=" "," "},{[1]='number'})
if OP == nil or OP[1] == '' or OP[2] == '0' then gg.toast("取消")
else
gg.setRanges(gg.REGION_ANONYMOUS)--设置搜索内存
gg.searchNumber(OP[1],gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)--搜索值+类型
gg.searchNumber(OP[1],gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(1000)--设置搜索列表
gg.editAll(OP[2],gg.TYPE_DWORD)--改值+类型
end
gg.toast("开启成功")
string.toMusic("开启成功")
end),
CAbutton("自改身体",
function()
OP=gg.prompt({"输入原本身体的代码","输入你要修改的代码 代码如下: 小黄--20000008 遗失的童话20000258 霓裳踏雪20000243 青丘一梦20000210 罗丽20000287 雨衣20000317 小黄新皮肤20000328 爱丽丝--20000012 血色中的玛丽20000232 瑞羽衔春20000250 冰公主20000280 薯排甜心20000230 零--20000015 赤炼将军20000239 青云逸歌20000267 阿念20000504 灵昭鹿鸣20000240 王子与骑士20000262 僵尸20000320 逍遥--20000603 泽引山海20000247 碧落20000246 紫气20000253 新皮金皮20000332 逍遥魔盒20006002 薇薇安--20000703黑月挽歌20000255 圣光之逾20000274 白光莹20000290 巫铃儿--20000803 素影瑶光20000270 镜生遗梦:主:20000296 副:20000299 镜花辞20000314 莉莉--20000903 情公主20000283 僵尸20000323 艾伦--20001003 水王子20000293 输入你要修改的代码"},{[2]=" "," "},{[1]='number'})
if OP == nil or OP[1] == '' or OP[2] == '0' then gg.toast("取消")
else
gg.setRanges(gg.REGION_ANONYMOUS)--设置搜索内存
gg.searchNumber(OP[1],gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)--搜索值+类型
gg.searchNumber(OP[1],gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(1000)--设置搜索列表
gg.editAll(OP[2],gg.TYPE_DWORD)--改值+类型
end
gg.toast("开启成功")
string.toMusic("开启成功")
end),
CAbox({ '薇薇安外观组合',
CAbutton('薇薇安白光莹头/圣光之谕身体', function() ggClearEdit('20000274', '20000290') end),
CAbutton('薇薇安白光莹身体/圣光之谕头', function() ggClearEdit('20000290', '20000274') end),
CAbutton('薇薇安白光莹头/黑月挽歌身体', function() ggClearEdit('20000290', '20000255') end),
CAbutton('薇薇圣光之谕头/黑月挽歌身体', function() ggClearEdit('20000274', '20000255') end),
CAbutton('薇薇安黑月挽歌头/圣光之谕身体', function() ggClearEdit('20000255', '20000274') end),
CAbutton('薇薇安黑月挽歌头/白光莹身体', function() ggClearEdit('20000255', '20000290') end),
}),
CAbox({ '零外观组合',
CAbutton('零赤炼头/青云身体', function() ggClearEdit('20000239', '20000267') end),
CAbutton('零赤炼头/汉堡身体', function() ggClearEdit('20000239', '20000203') end),
CAbutton('零青云头/赤炼身体', function() ggClearEdit('20000267', '20000239') end),
CAbutton('零青云头/汉堡身体', function() ggClearEdit('20000267', '20000203') end),
CAbutton('零汉堡头/赤炼身体', function() ggClearEdit('20000203', '20000267') end),
CAbutton('青云头/原皮身', function() ggClearEdit('20000203', '20000239') end),
CAbutton('零汉堡头/青云身体', function() gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000266',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000265',gg.TYPE_DWORD)
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000266',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000266',gg.TYPE_DWORD)
gg.toast("开启成功") end),
}),
CAbox({ '爱丽丝外观组合',
CAbutton('爱丽丝金皮头/神兽身体', function() ggClearEdit('20000232', '20000250') end),
CAbutton('爱丽丝金皮头/冰公主身体', function() ggClearEdit('20000232', '20000280') end),
CAbutton('爱丽丝神兽头/金皮身体', function() ggClearEdit('20000250', '20000232') end),
CAbutton('爱丽丝神兽头/冰公主身体', function() ggClearEdit('20000250', '20000280') end),
CAbutton('爱丽丝冰公主头/金皮身体', function() ggClearEdit('20000280', '20000232') end),
CAbutton('爱丽丝冰公主头/神兽身体', function() ggClearEdit('20000280', '20000250') end),
CAbutton('绒绒对决/水王子', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000344',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000291',gg.TYPE_DWORD)
gg.toast("开启成功")
string.toMusic("开启成功")
end),
CAbutton('甜梦派对/血色中的玛丽', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000233',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000339',gg.TYPE_DWORD)
gg.toast("开启成功")
string.toMusic("开启成功")
end),
CAbutton('甜梦派对/瑞羽衔春', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000251',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000339',gg.TYPE_DWORD)
gg.toast("开启成功")
string.toMusic("开启成功")
end),
CAbutton('甜梦派对/冰公主', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000278',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000339',gg.TYPE_DWORD)
gg.toast("开启成功")
string.toMusic("开启成功")
end),
-----------
CAbutton('血色中的玛丽/甜梦派对', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000341',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000232',gg.TYPE_DWORD)
gg.toast("开启成功")
string.toMusic("开启成功")
end),
CAbutton('瑞羽衔春/甜梦派对', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000341',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000250',gg.TYPE_DWORD)
gg.toast("开启成功")
string.toMusic("开启成功")
end),
CAbutton('冰公主/甜梦派对', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000341',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000280',gg.TYPE_DWORD)
gg.toast("开启成功")
string.toMusic("开启成功")
end),
}),
CAbox({ '阿念外观组合',
CAbutton('阿念魔盒头/神兽身体', function() ggClearEdit('20000262', '20000240') end),
CAbutton('阿念神兽身体/魔盒头', function() ggClearEdit('20000240', '20000262') end),
CAbutton('阿念神兽头/僵尸身体', function() ggClearEdit('20000240', '20000320') end),
CAbutton('阿念僵尸头/神兽身体', function() ggClearEdit('20000320', '20000240') end),
CAbutton('阿念僵尸头/手册身体', function() gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000320',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000262',gg.TYPE_DWORD)
gg.toast("开启成功") end),
CAbutton('阿念手册头/僵尸身体', function() ggClearEdit('20000262', '20000320') end),
}),
CAbox({ '小黄外观组合',
CAbutton('小黄金皮头/魔盒身体', function() ggClearEdit('20000258', '20000210') end),
CAbutton('小黄金皮头/神兽身体', function() ggClearEdit('20000258', '20000243') end),
CAbutton('小黄金皮头/罗丽身体', function() ggClearEdit('20000258', '20000287') end),
CAbutton('小黄魔盒头/金皮身体', function() ggClearEdit('20000210', '20000258') end),
CAbutton('小黄魔盒头/神兽身体', function() ggClearEdit('20000210', '20000243') end),
CAbutton('小黄魔盒头/罗丽身体', function() ggClearEdit('20000210', '20000287') end),
CAbutton('小黄罗丽头/金皮身体', function() ggClearEdit('20000287', '20000258') end),
CAbutton('小黄罗丽头/神兽身体', function() ggClearEdit('20000287', '20000243') end),
CAbutton('小黄罗丽头/魔盒身体', function() ggClearEdit('20000287', '20000210') end),
CAbutton('青丘头/异色身体', function()
gg.setRanges(32)
Name='青丘头/异色身体'
local tb1=
{
{20000328,4,0},
{20000328,4,0},
{20000329,4,4},
{20000330,4,8},
}
local tb2=
{
{20000328,4,0,true},
{20000218,4,4,true},
{20000219,4,8,true},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('童话头/异色身体', function()
gg.setRanges(32)
Name='童话头/异色身体'
local tb1=
{
{20000328,4,0},
{20000328,4,0},
{20000329,4,4},
{20000330,4,8},
}
local tb2=
{
{20000328,4,0,true},
{20000259,4,4,true},
{20000260,4,8,true},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('罗丽头/异色身体', function()
gg.setRanges(32)
Name='罗丽头/异色身体'
local tb1=
{
{20000328,4,0},
{20000328,4,0},
{20000329,4,4},
{20000330,4,8},
}
local tb2=
{
{20000328,4,0,true},
{20000285,4,4,true},
{20000286,4,8,true},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('异色头/踏雪身体', function()
gg.setRanges(32)
Name='异色头/踏雪身体'
local tb1=
{
{20000243,4,0},
{20000243,4,0},
{20000224,4,4},
{20000245,4,8},
}
local tb2=
{
{20000243,4,0,true},
{20000330,4,4,true},
{20000329,4,8,true},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('异色头/童话身体', function()
gg.setRanges(32)
Name='异色头/童话身体'
local tb1=
{
{20000258,4,0},
{20000258,4,0},
{20000259,4,4},
{20000260,4,8},
}
local tb2=
{
{20000258,4,0,true},
{20000330,4,4,true},
{20000329,4,8,true},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('异色头/青丘身体', function()
gg.setRanges(32)
Name='异色头/青丘身体'
local tb1=
{
{20000210,4,0},
{20000210,4,0},
{20000218,4,4},
{20000229,4,8},
}
local tb2=
{
{20000210,4,0,true},
{20000330,4,4,true},
{20000329,4,8,true},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('异色头/罗丽身体', function()
gg.setRanges(32)
Name='异色头/罗丽身体'
local tb1=
{
{20000285,4,0},
{20000285,4,0},
{20000286,4,4},
{20000287,4,8},
}
local tb2=
{
{20000330,4,0},
{20000329,4,4},
{20000287,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
}),
CAbox({ '莉莉外观组合',
CAbutton('莉莉情公主头/僵尸身体', function() ggClearEdit('20000283', '20000323') end),
CAbutton('莉莉僵尸头/情公主身体', function() ggClearEdit('20000323', '20000283') end),
CAbutton('莓果身体/情公主头', function()
gg.setRanges(32)
Name='莓果身体/情公主头'
local tb1=
{
{20006007,4,0},
{20006007,4,0},
{20006008,4,4},
{20006009,4,8},
}
local tb2=
{
{20006007,4,0},
{20000281,4,4},
{20006009,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('莓果身体/小师妹头', function()
gg.setRanges(32)
Name='莓果身体/小师妹头'
local tb1=
{
{20006007,4,0},
{20006007,4,0},
{20006008,4,4},
{20006009,4,8},
}
local tb2=
{
{20006007,4,0},
{20000324,4,4},
{20006009,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('晴公主身体/莓果头', function()
gg.setRanges(32)
Name='晴公主身体/莓果头'
local tb1=
{
{20000281,4,0},
{20000281,4,0},
{20000282,4,4},
{20000283,4,8},
}
local tb2=
{
{20000281,4,0},
{20006008,4,4},
{20000283,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('小师妹身体/莓果头', function()
gg.setRanges(32)
Name='小师妹身体/莓果头'
local tb1=
{
{20000323,4,0},
{20000323,4,0},
{20000324,4,4},
{20000327,4,8},
}
local tb2=
{
{20000323,4,0},
{20006008,4,4},
{20000327,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
}),
CAbox({ '逍遥外观组合',
CAbutton('逍遥神兽头/魔盒身体', function() ggClearEdit('20000247', '20006002') end),
CAbutton('逍遥魔盒头/神兽身体', function()
ggClearEdit('20006002', '20000247')
end),
CAbutton('逍遥魔盒头/神兽身体2', function()
gg.setRanges(32)
Name='卡头皮肤'
local tb1=
{
{20006002,4,0},
{20006002,4,0},
{20006003,4,4},
{20006004,4,8},
}
local tb2=
{
{20006002,4,0},
{20000248,4,4},
{20000249,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('莲花渡身体/神兽头', function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("20000333", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("20000333",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
jg=gg.getResults(100)--设置冻结前100个代码
sl=gg.getResultCount()
for i = 1, sl do
dzy=jg[i].address
gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = "20000248"}})
end
gg.toast("开启成功")
gg.clearResults()
end
end),
CAbutton('莲花渡身体/逍遥魔盒头', function()
gg.clearResults()
gg.setRanges(32)
gg.searchNumber("20000333", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
if gg.getResultCount() == 0 then
gg.toast("开启失败")
else
gg.searchNumber("20000333",gg.TYPE_DWORD , false, gg.SIGN_EQUAL, 0, -1)
jg=gg.getResults(100)--设置冻结前100个代码
sl=gg.getResultCount()
for i = 1, sl do
dzy=jg[i].address
gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = "20006003"}})
end
gg.toast("开启成功")
gg.clearResults()
end
end),
CAbutton('神兽头/莲花渡眼睛/魔盒身体', function()
gg.setRanges(32)
Name='卡头皮肤'
local tb1=
{
{20006002,4,0},
{20006002,4,0},
{20006003,4,4},
{20006004,4,8},
}
local tb2=
{
{20006002,4,0},
{20000248,4,4},
{20000334,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('莲花渡头和眼睛/魔盒身体', function()
gg.setRanges(32)
Name='卡头皮肤'
local tb1=
{
{20006002,4,0},
{20006002,4,0},
{20006003,4,4},
{20006004,4,8},
}
local tb2=
{
{20006002,4,0},
{20000333,4,4},
{20000334,4,8},
}
SearchWrite(tb1,tb2,dataType)
end),
CAbutton('神兽头/莲花渡眼睛/原皮身体', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000247',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000248',gg.TYPE_DWORD)
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000249',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000334',gg.TYPE_DWORD)
gg.toast("开启成功")
end),
CAbutton('手册头/碧落身体/莲花渡脸', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20006002',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000246',gg.TYPE_DWORD)
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20006004',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000334',gg.TYPE_DWORD)
gg.toast("开启成功")
end),
CAbutton('金瞳/白泽头/蓝皮身体', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000249',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000246',gg.TYPE_DWORD)
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000247',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20006002',gg.TYPE_DWORD)
gg.toast("开启成功")
end),
}),
CAbox({ '巫铃儿外观组合',
CAbutton('巫玲儿瑶光头/镜生遗梦身体(紫皮眼睛)', function() ggClearEdit('20000270', '20000296') end),
CAbutton('巫玲儿瑶光头/镜生遗梦身体(金皮眼睛)', function() ggClearEdit('20000294', '20000268') end),
CAbutton('巫玲儿瑶光头/镜花辞身体(紫皮眼睛)', function() ggClearEdit('20000270', '20000316') end),
CAbutton('巫玲儿瑶光头/镜花辞身体(金皮眼睛)', function() ggClearEdit('20000314', '20000268') end),
CAbutton('巫玲儿镜花辞头/镜生遗梦身体', function() ggClearEdit('20000314', '20000296') end),
CAbutton('巫玲儿镜生遗梦头/镜花辞身体', function() ggClearEdit('20000294', '20000316') end),
CAbutton('镜生遗梦头(白)/素影瑶光身体', function() gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000297',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000268',gg.TYPE_DWORD)
gg.toast("开启成功") end),
CAbutton('青花瓷头/幻梦脸/原皮身体', function() gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000297',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000268',gg.TYPE_DWORD)
gg.toast("开启成功") end),
}),
CAbox({ '艾伦外观组合',
CAbutton('水王子/绒绒对决', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000293',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000342',gg.TYPE_DWORD)
gg.toast("开启成功")
string.toMusic("开启成功")
end),
CAbutton('绒绒对决/水王子', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000344',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000291',gg.TYPE_DWORD)
gg.toast("开启成功")
string.toMusic("开启成功")
end),
CAbutton('甜梦派对/血色中的玛丽', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000233',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(100)
gg.editAll('20000339',gg.TYPE_DWORD)
gg.toast("开启成功")
string.toMusic("开启成功")
end),
}),
CAbox({ '眼睛效果修改',
CAbutton('逍遥神兽头/魔盒身体+金色眼睛', function()
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000249', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
gg.searchNumber('', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(100)
gg.editAll('20006004', gg.TYPE_DWORD)
gg.clearResults()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.searchNumber('20000247', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
gg.searchNumber('', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(100)
gg.editAll('20006002', gg.TYPE_DWORD)
gg.toast("眼睛效果修改成功")
end),
CAbutton('无效果', function() gg.toast("未启用任何眼睛效果") end),
}),
},{--7
CAswitch('音乐', function()
打开页面('音乐')
end,
function()
关闭页面('音乐')
end),
CAswitch(
"退出",
function()
UIQuit=1
end,
function()
end),
},
})