string.toMusic('请输入卡密没有卡密的请点击下方购卡教程已经被发在官方群里面了不知道怎么用的请点击下方进入观看' )do if type(getrlyunyz) ~= 'function' then gg.alert('请使用RLGG执行') os.exit() return end info = { example_version = '1.0.3', name = '梦醒宇宙服助手', appid = '57778', appkey = 'UzQFmSnNSrBUcsFT', rc4key = 'jgpPUHzfUOg0glkh', version = '梦醒政府助手Promax版', mi_type = '3' } file.mkdirs("/sdcard/.yykm") 卡网="https://hu.41qk.cn//links/2C5A41F9"--填卡网 频道="https://pd.qq.com/s/4lfdd0ump" qun="190064664" local rlyunyz = getrlyunyz(info) local function login(rlyunyz) local result -- 如果为自动登录,则直接登录 if rlyunyz.getAutoLogin() then return rlyunyz.start() end -- 验证是否有更新 local ini = rlyunyz.checkUpdate() -- 公告 local notice = rlyunyz.notice() -- 用于同步的锁 local lock = luajava.getBlock() -- android.app.AlertDialog$Builder local alert = luajava.newAlert() luajava.post(function() -- android.app.AlertDialog alert = alert:create() end) -- 获取卡密 local function getkami() local name = 'RL云验证卡密' local editText = luajava.getIdView(name) if not isUserdata(editText) then gg.alert(string.format('%s-控件不存在', name)) return end return editText:getText() end -- 退出弹窗,并结束堵塞 local function exit() alert:dismiss() lock('end') end -- 工厂方式创建复用 GradientDrawable layout slctc = luajava.loadlayout { GradientDrawable, color = "#11ffffff", cornerRadius = 8 } slctd = luajava.loadlayout { GradientDrawable, color = "#55ffffff", cornerRadius = 8 } slcte = luajava.loadlayout { GradientDrawable, color = "#11ffffff", cornerRadius = 12 } slctf = luajava.loadlayout { GradientDrawable, color = "#aa1E1C27", cornerRadius = 12 } baidi = luajava.loadlayout({ GradientDrawable, color = "#F9F2F9", cornerRadius = 0 }) heidi = luajava.loadlayout({ GradientDrawable, color = "#555555", cornerRadius = 0 }) function getShape3() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(12) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0x6F6F6F6F,0x6F6F6F6F}) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(5,0xaaffffff)--边框宽度和颜色 return jianbians end function getShape(tmp0,tmp1,tmp2,tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(tmp1) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(5,tmp3)--边框宽度和颜色 return jianbians end function getSelector3() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#aa424242", cornerRadius = 10 }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, getShape3()) -- 没点击的背景 return selector end local function newGradientDrawableLayout(layout) local baseLayout = { GradientDrawable, cornerRadius = '15dp', color = 0x20000000 } return table.copy(baseLayout, layout) end local function newTextViewLayout(layout) local baseLayout = { TextView, layout_width = 'match_parent', layout_margin = margin_dp, layout_width = "450dp", layout_height = "303dp", gravity = 'center', padding = '5dp' } return table.copy(baseLayout, layout) end -- 工厂方式创建复用 Button layout local function newButtonLayout(layout) local baseLayout = { Button, layout_width = 'match_parent', layout_height = '50dp', layout_width = '300dp', layout_margin = '5dp', textSize = '16sp', textColor = "#FFFFFF", background = getSelector3() } return table.copy(baseLayout, layout) end -- 回调事件不能直接执行堵塞函数,需要用线程执行 local view = luajava.loadlayout({ LinearLayout, orientation = 'vertical', background = getShape(30,{0x33000000,0x33000000},0,0x01B8B8B8), -- 主题颜色 layout_margin = '5dp', padding = {'5dp', '10dp', '5dp', '10dp'}, { TextView, text = string.format('全网累计使用次数:%s', (tonumber(ini.api_total) or 0)), gravity = 'center', }, { EditText, layout_width = 'match_parent', layout_height = "50dp", layout_width = "300dp", layout_margin = '5dp', hint = '请输入您的卡密', id = luajava.newId('RL云验证卡密'), background = getSelector3() }, {LinearLayout, orientation="horizontal", layout_width = "wrap_content", { Button, layout_width = '60dp', layout_hight = "30dp", layout_margin = '10dp', textSize = '9sp', textColor = "#FFFFFF", background = getSelector3(), text = "购卡", onClick = function() luajava.startThread(function() app.openUrl(卡网) end) end }, { Button, layout_width = '60dp', layout_hight = "30dp", layout_margin = '10dp', textSize = '9sp', textColor = "#FFFFFF", background = getSelector3(), text = "频道", onClick = function() luajava.startThread(function() if 方式=="tg" then app.openUrl(频道) end end) end }, { Button, layout_width = '60dp', layout_hight = "30dp", layout_margin = '10dp', textSize = '9sp', textColor = "#FFFFFF", background = getSelector3(), text = "加群", onClick = function() luajava.startThread(function() qq.joinGroup(qun) end) end } }, newButtonLayout({ text = '快捷登录', onClick = function() local function func() local a = io.open('/sdcard/.yykm/km.txt','r'):read("*a") km = a local loadingBox=getLoadingBox("Login...") loadingBox["显示"]() gg.sleep(900) if not km then gg.alert("暂不支持快捷登录") end loadingBox["关闭"]() local loadingBox=getLoadingBox("正在验验卡密可用性") string.toMusic('正在验证卡密有没有毒') loadingBox["显示"]() local res = rlyunyz.login(km) if res then result = res exit() end gg.sleep(900) loadingBox["关闭"]() end luajava.startThread(func) end }), newButtonLayout({ text = '登录', onClick = function() local function func() local loadingBox=getLoadingBox("Login...") loadingBox["显示"]() local km = getkami() gg.sleep(900) loadingBox["关闭"]() local loadingBox=getLoadingBox("正在验验卡密可用性") loadingBox["显示"]() local res = rlyunyz.login(km) if res then result = res exit() end gg.sleep(900) loadingBox["关闭"]() file.write('/sdcard/.yykm/km.txt',km) end luajava.startThread(func) end }), newButtonLayout({ text = '解绑', onClick = function() local function func() local km = getkami() rlyunyz.unbind(km) end luajava.startThread(func) end }), newButtonLayout({ text = '退出登录', onClick = function() exit() end }) }) alert:setView(view) -- 弹窗被取消 alert:setOnDismissListener(luajava.createProxy('android.content.DialogInterface$OnDismissListener', { onDismiss = function() exit() end })) -- 异步显示弹窗 luajava.showAlert(alert) -- 堵塞,等待异步弹窗结束 lock('join') return result end local ret = login(rlyunyz) if not ret or not isTable(ret) or ret.sign ~= '6ac1e35671e49c9cf4c98ddcc6bc8365' then os.exit() return end end vibra = context:getSystemService(Context.VIBRATOR_SERVICE) changan = {} local changan = changan local android = import('android.*') function write(fileName, content) file.write(fileName, content) end function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end function read(fileName) f = assert(io.open(fileName, 'r')) content = f:read("*all") f:close() return content end function wtcf(lujing,neirong) write("/sdcard/诛仙/配置文件/"..lujing,neirong) end function rdcf(lujing) return read("/sdcard/诛仙/配置文件/"..lujing) end 开 = "开" 关 = "关" function checkimg(tmp) if panduan("/sdcard/诛仙/图片/"..tmp) ~= true then gg.toast("正在下载资源"..tmp.."\n请耐心等待") string.toMusic('正在为你下载通行证请你耐心等待') download("https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/"..tmp,"/sdcard/诛仙/图片/"..tmp) end end ckimg = { 'quarkcheckoff', 'quarkcheckon', 'dz_check', 'meituan', 'heir', 'hei_right', } for i = 1,#ckimg do jindu = i checkimg(ckimg[i]) end function 获取图片(txt) txt = string.url(txt,"de") ntxt = string.sub(string.gsub(txt,"/","-"),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/诛仙/图片/"..ntxt) == false then file.download(txt,"/sdcard/诛仙/图片/"..ntxt) else if file.length("/sdcard/诛仙/图片/"..ntxt) <= 1 then file.download(txt,"/sdcard/诛仙/图片/"..ntxt) end end txt = "/sdcard/诛仙/图片/"..ntxt end return luajava.getBitmapDrawable(txt) end function getRes(x) return 获取图片("/sdcard/诛仙/图片/"..x) end function getVerticalBG(gtvb1,gtvb3,gtvb4,gtvb5) if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end local jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(gtvb3) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(gtvb1) jianbians:setStroke(gtvb4,gtvb5) return jianbians end function getCorner(gtvb1,gtvb3,gtvb4,gtvb5,g1,g2,g3,g4) if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end local jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(gtvb3) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(gtvb1) jianbians:setStroke(gtvb4,gtvb5)--边框宽度和颜色 jianbians:setCornerRadii({g1,g1,g2,g2,g3,g3,g4,g4}) return jianbians end function getHorizontalBG(gtvb1,gtvb3,gtvb4,gtvb5) if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end local jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(gtvb3) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(gtvb1) jianbians:setStroke(gtvb4,gtvb5)--边框宽度和颜色 return jianbians end context = app.context window = context:getSystemService("window") -- 获取窗口管理器 function getLayoutParams() LayoutParams = WindowManager.LayoutParams layoutParams = luajava.new(LayoutParams) if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams.type = LayoutParams.TYPE_APPLICATION_OVERLAY else layoutParams.type = LayoutParams.TYPE_PHONE end layoutParams.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE -- 焦点设置Finish layoutParams.gravity = Gravity.TOP|Gravity.LEFT -- 重力设置 layoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度 layoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度 return layoutParams end slctb = getVerticalBG({0xffefefef,0xffefefef},10) slcta = getHorizontalBG({0xff0077ff,0xff975DFF},10) function getButtonBG() local selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, getVerticalBG({0xffd7d7d7,0xffd7d7d7},15)) selector:addState({ -android.R.attr.state_pressed }, getVerticalBG({0xffffffff,0xffffffff},15)) return selector end function getSelector() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slcta) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slctb) -- 没点击的背景 return selector end hanshu = function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = mainLayoutParams.x y = mainLayoutParams.y elseif Action == MotionEvent.ACTION_MOVE then isMove = true mainLayoutParams.x = tonumber(x) + (event:getRawX() - RawX) mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(floatWindow, mainLayoutParams) end end function 获取图片(txt) txt = string.url(txt,"de") ntxt = string.sub(string.gsub(txt,"/","-"),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/诛仙/图片/"..ntxt) == false then file.download(txt,"/sdcard/诛仙/图片/"..ntxt) else if file.length("/sdcard/诛仙/图片/"..ntxt) <= 1 then file.download(txt,"/sdcard/诛仙/图片/"..ntxt) end end txt = "/sdcard/诛仙/图片/"..ntxt end return luajava.getBitmapDrawable(txt) end YoYoImpl = luajava.getYoYoImpl() changan.menu = function(sview) 菜单页数=#sview 当前分区={} 分区页数={} 侧边={} 功能区={} 顶边={ LinearLayout, layout_height='match_parent', layout_width='match_parent', } beij=getHorizontalBG({0xffe9e9e9,0xffe9e9e9},25) 侧边ui={ LinearLayout, layout_width='wrap_content', layout_height='match_parent', id='cebians', gravity='center', } jmbg={} for i = 1,菜单页数 do 分区页数[i]= #sview[i] table.insert(顶边,{ TextView, layout_height='match_parent', layout_width='wrap_content', padding={'15dp','2dp','15dp','2dp'}, text=sview[i]['分页名字'], textColor='#000000', textSize='13sp', gravity='center', id='ding'..i, elevation='2dp', layout_margin='4dp', background=getVerticalBG({0xffffffff,0xffffffff},10), onClick=function() 切换(i) end, }) 功能区[i]={} jmbg[i]={} local cebian = { LinearLayout, layout_height = "match_parent", layout_width = "wrap_content", orientation = "horizontal", gravity = "center", orientation='vertical', } local layoutm={ LinearLayout, id = "layoutm"..i, padding='4dp', layout_width = "match_parent", orientation = "vertical", gravity = "center_horizontal", } for j = 1,分区页数[i] do jmbg[i][j]={ getVerticalBG({0xffffffff,0xffffffff},0), getVerticalBG({0x00f7f8fa,0x00f7f8fa},0) } cebian[#cebian+1] = { TextView, id = "jm"..i..j, background=jmbg[i][j][1], text = sview[i][j]['分区名字'], gravity = "center", textSize = "12sp", textColor = "#000000", layout_height = "34dp", layout_width = "68dp", onClick=function() 分区(j) end } local menulayout={ LinearLayout, layout_width='match_parent', layout_height='wrap_content', visibility = "gone", orientation = "vertical", id='menu'..i..j, } for k,v in pairs(sview[i][j]['功能配置']) do table.insert(menulayout,v) end local menulayout=luajava.loadlayout(menulayout) 功能区[i][j]=menulayout table.insert(layoutm,menulayout) end 侧边[i] = luajava.loadlayout( { ScrollView, visibility='gone', layout_height = "wrap_content", layout_width = "wrap_content", cebian }) table.insert(侧边ui,侧边[i]) local menus={ LinearLayout, layout_width = "300dp", layout_height = "200dp", visibility = "gone", orientation = "vertical", background={ GradientDrawable, color = "#ffffffff", cornerRadius = 0 }, { ScrollView, fillViewport = "true", --padding = "10dp", gravity = "center", layout_width = "match_parent", layout_height = "200dp", orientation = "horizontal", layoutm }} _ENV["layout"..i] = luajava.loadlayout(menus) end 顶边={LinearLayout, layout_width='match_parent', layout_height='match_parent', layout_marginRight='100dp', onClick=function() end, onTouch=hanshu, 顶边 } ckou = { LinearLayout, layout_width = "wrap_content", layout_height = "wrap_content", {ScrollView, layout_height='match_parent', layout_width='wrap_content', 侧边ui} } for i = 1,菜单页数 do ckou[#ckou+1] = _ENV["layout"..i] end ckou = luajava.loadlayout(ckou) floatWindow = { FrameLayout, id = "motion", elevation = "10dp", onTouch = hanshu, onClick = function() end, layout_width = "wrap_content", orientation = "vertical", gravity = "center_vertical", layout_height = "wrap_content", {LinearLayout, orientation='vertical', id='chuangk', visibility='gone', {--顶部栏 FrameLayout, orientation = "horizontal", padding = "2dp", layout_height='35dp', layout_width="fill_parent", background=getCorner({0xffFFDC50,0xffFFDC50},20,0,0xffFFE543,25,25,0,0), 顶边, { LinearLayout, layout_gravity="center_vertical|right", padding={"2dp","2dp","8dp","2dp"}, layout_marginLeft='2dp', layout_marginRight='2dp', layout_marginTop='2dp', layout_marginBottom='2dp', layout_width = "40dp", layout_height = "24dp", gravity = "center", onClick = 隐藏, onTouch = hanshu, {ImageView, layout_height='17dp', layout_width='17dp', src=getRes('heir'), colorFilter=0xff000000, rotation=-90, } } }, ckou, },{FrameLayout, id='ggscro', layout_marginTop='236dp', layout_marginLeft='65dp', layout_height='60dp', layout_width='300dp', layout_margin='3dp', elevation='2dp', background=getCorner({0xffFFF9E3,0xffFFF9E3},12,0,0xff000000,20,20,50,50), {LinearLayout, layout_height='45dp', layout_width='match_parent', layout_gravity='bottom', background=getVerticalBG({0xff000000,0xff000000},90,1,0x00ffffff), gravity='right', padding={'60dp','0dp','0dp','0dp'}, {LinearLayout, layout_height='match_parent', layout_width='match_parent', layout_weight=1, {ScrollView, layout_height='match_parent', layout_width='match_parent', {TextView, layout_height='wrap_content', layout_width='match_parent', textColor='#ffffff', textSize='10sp', id=luajava.newId('checklist'), }}},{LinearLayout, layout_height='match_parent', layout_width='1dp', background='#909496', },{LinearLayout, layout_height='match_parent', layout_width='match_parent', layout_weight=1, padding={'2dp','0dp','0dp','0dp'}, {ScrollView, layout_height='match_parent', layout_width='match_parent', {TextView, layout_height='wrap_content', layout_width='match_parent', textColor='#ffffff', textSize='10sp', id=luajava.newId('paidui'), }}}, { LinearLayout, layout_height='45dp', layout_width='70dp', background=getCorner({0xffFFE543,0xffFFE543},90,0,0xffFFE543,0,90,90,0), gravity='center', onClick=结算, {TextView, text='结算', textSize='12sp', textColor='#000000', } } }, {LinearLayout, layout_height='match_parent', layout_width='match_parent', {ImageView, src=getRes('meituan'), layout_height='52dp', layout_width='45dp' }, {LinearLayout, id='gggscro', orientation='vertical', layout_width='match_parent', layout_weight=1, layout_height='wrap_content', } } },{ ImageView, id = "control", background = 获取图片(悬浮窗图标), layout_width = "40dp", layout_height = "40dp", onTouch = hanshu, onClick = 隐藏, } } local function invoke() local ok local RawX, RawY, x, y mainLayoutParams = getLayoutParams() floatWindow = luajava.loadlayout(floatWindow) local function invoke2() window:addView(floatWindow, mainLayoutParams) block('end') end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) block('join') local isMove end invoke(swib1,swib2) 切换(1) 分区(1) 隐藏() gg.setVisible(false) luajava.setFloatingWindowHide(true) qhkai = 0 qiehuan = function() if qhkai == 0 then qhkai = 1 draw.remove() luajava.runUiThread(function() changan.controlSmall(floatWindow,400) end) gg.sleep(400) luajava.runUiThread(function() floatWindow:setVisibility(View.GONE) end) else qhkai = 0 huiz() draw.text('.', -9200,-9200) luajava.runUiThread(function() floatWindow:setVisibility(View.VISIBLE) end) luajava.runUiThread(function() changan.controlBig(floatWindow,400) end) end end huiz() draw.text('.', -9200,-9200) while true do if tuichu == 1 then break end jianting3(qiehuan) gg.sleep(300) end luajava.setFloatingWindowHide(false) end changan.controlRotation9 = function(control, time,t) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", { time,t }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.RESTART) xuanzhuandonghua:setDuration(400) xuanzhuandonghua:start() end) end function visi (tid , ttid) vibra:vibrate(4) local tview = luajava.getIdValue (tid) local ttview = luajava.getIdValue (ttid) if not tview then return 0 end if tonumber (tostring (tview : getVisibility ())) == 8.0 then tview : setVisibility (View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(boxes[tid]) changan.controlRotation9(boxpic[tid],0,90) else tview : setVisibility (View.GONE) changan.controlWater (_ENV [tid.."6"] , 200) changan.controlRotation9(boxpic[tid],90,0) end end boxes = {} boxpic = {} function changan.box (views) local tid = "box"..guid () boxpic[tid] = luajava.loadlayout { ImageView , background = getRes("hei_right"), layout_width = "24dp" , layout_height = "24dp" , } local ttid = tid.."6" local t1id = guid () firadio = { LinearLayout , layout_width = 'fill_parent' , layout_height = "wrap_content" , layout_marginTop = "2dp" , layout_marginBottom = "2dp" , orientation = "vertical" , } if type (views [1]) == "string" or type (views [1]) == "number" then firadio [# firadio + 1] = { LinearLayout , layout_width = 'fill_parent' , layout_height = "40dp" , gravity = "center_vertical" , layout_marginTop = "2dp" , layout_marginLeft='2dp', layout_marginRight='2dp', elevation='2dp', layout_marginBottom = "4dp" , onClick = function () visi (tid , ttid) end , background = getButtonBG(), { TextView , text = views [1] , textSize = "13sp" , layout_marginLeft = "15dp" , layout_width = "match_parent" , layout_weight=1, textColor = "#000000" , gravity = "left" , },{ LinearLayout , padding={"0dp","0dp","10dp","0dp"}, layout_width = "30dp" , layout_height = "30dp" , gravity = "center", boxpic[tid], } } else gg.alert ("changan.box的table内第一个元素必须是string") os.exit () end radios = { LinearLayout , layout_marginLeft = "0dp" , layout_marginRight = "0dp" , orientation = "vertical" , visibility = "gone" , id = luajava.newId (tid) , padding = "0dp" , layout_width = 'fill_parent' , } for i = 2 , # views do radios [# radios + 1] = views [i] end boxes[tid] = luajava.loadlayout(radios) firadio [# firadio + 1] = boxes[tid] _ENV [t1id] = luajava.loadlayout (firadio) return _ENV [t1id] end corbk = true 当前ui = 1 function 分区(x) 当前分区[当前ui]=x luajava.runUiThread(function() for i=1,分区页数[当前ui] do _ENV['menu'..当前ui..i]:setVisibility(View.GONE) _ENV['jm'..当前ui..i]:setTextColor(0xff9C9FA5) _ENV['jm'..当前ui..i]:setBackground(jmbg[当前ui][i][2]) end _ENV['menu'..当前ui..当前分区[当前ui]]:setVisibility(View.VISIBLE) _ENV['jm'..当前ui..当前分区[当前ui]]:setTextColor(0xff000000) _ENV['jm'..当前ui..当前分区[当前ui]]:setBackground(jmbg[当前ui][当前分区[当前ui]][1]) end) end function 切换(x) 当前ui = x luajava.runUiThread(function() if 当前分区[当前ui]==nil then 分区(1) end for i = 1,菜单页数 do _ENV["ding"..i]:setTextColor(0xff9C9FA5) _ENV["layout"..i]:setVisibility(View.GONE) 侧边[i]:setVisibility(View.GONE) end _ENV["ding"..当前ui]:setTextColor(0xff000000) _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) 侧边[当前ui]:setVisibility(View.VISIBLE) --YoYoImpl:with("FadeIn"):duration(800):playOn(_ENV["layout"..当前ui]) end) end 显示 = 0 beij2 = luajava.loadlayout({ GradientDrawable, color = "#001E1C27", cornerRadius = 10 }) 显示 = 0 function 隐藏() luajava.runUiThread(function() if tonumber(tostring(chuangk:getVisibility())) == 8.0 then control:setVisibility(View.GONE) 显示 = 1 ggscro:setVisibility(View.VISIBLE) chuangk:setVisibility(View.VISIBLE) _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(500):playOn(floatWindow) floatWindow:setBackground(beij) else ggscro:setVisibility(View.GONE) chuangk:setVisibility(View.GONE) floatWindow:setBackground(beij2) control:setVisibility(View.VISIBLE) 显示 = 0 _ENV["layout"..当前ui]:setVisibility(View.GONE) end end) end import("android.media.AudioManager") audi = context:getSystemService("audio") audiotype = { AudioManager.STREAM_ALARM, --手机闹铃的声音 AudioManager.STREAM_MUSIC, --手机音乐的声音 AudioManager.STREAM_NOTIFICATION, --系统提示的通知 AudioManager.STREAM_RING, --电话铃声的声音 AudioManager.STREAM_SYSTEM, --手机系统的声音 AudioManager.STREAM_VOICE_CALL, --语音电话的声音 AudioManager.STREAM_DTMF, --DTMF音调的声音 } yinl = {} for i = 1,#audiotype do yinl[i] = {} yinl[i].type = audiotype[i] yinl[i].min = audi:getStreamMinVolume(audiotype[i]) yinl[i].max = audi:getStreamMaxVolume(audiotype[i]) yinl[i].now = audi:getStreamVolume(audiotype[i]) end function jianting2() yinln = {} for i = 1,#audiotype do yinln[i] = {} yinln[i].type = audiotype[i] yinln[i].min = audi:getStreamMinVolume(audiotype[i]) yinln[i].max = audi:getStreamMaxVolume(audiotype[i]) yinln[i].now = audi:getStreamVolume(audiotype[i]) if yinln[i].now > yinl[i].now then audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_LOWER,0) gg.alert("up") elseif yinln[i].now < yinl[i].now then audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_RAISE,0) gg.alert("down\n"..yinln[i].now.."\n"..yinl[i].now) end end end yltype = 0 function jianting3(func) yinln = {} for i = 1,#audiotype do yinln[i] = {} yinln[i].type = audiotype[i] yinln[i].now = audi:getStreamVolume(audiotype[i]) if yinln[i].now > yinl[i].now then yinl[i].now = yinln[i].now if yltype == 1 then yltype = 0 func() end elseif yinln[i].now < yinl[i].now then yinl[i].now = yinln[i].now if yltype == 0 then yltype = 1 func() end end end end function jianting(func) yinln = {} for i = 1,#audiotype do yinln[i] = {} yinln[i].type = audiotype[i] yinln[i].now = audi:getStreamVolume(audiotype[i]) if yinln[i].now >= yinl[i].max then audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_LOWER,0) end if yinln[i].now > yinl[i].now then audi:setStreamVolume(yinln[i].type,yinl[i].now,0) func() end end end function guid() seed = { 'e','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' } tb = {} for i = 1,32 do table.insert(tb,seed[math.random(1,16)]) end sid = table.concat(tb) return string.format('%s%s%s%s%s', string.sub(sid,1,8), string.sub(sid,10,12), string.sub(sid,21,22)) ..string.format('%s%s%s%s%s', string.sub(sid,1,6), string.sub(sid,21,25) ) end local function exit() tuichu = 1 luajava.setFloatingWindowHide(false) luajava.post(function() window:removeView(floatWindow) end) end setExitEvent(exit) changan.controlWater = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX", { 1, 0.8, 0.9, 1 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 1,0.8,0.9,1 }):setDuration(time):start() end) end changan.controlSmall = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX", { 1, 0.7, 0.4, 0 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 1, 0.7, 0.4, 0 }):setDuration(time):start() end) end changan.controlBig = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX", { 0, 0.4, 0.7, 1 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 0, 0.4, 0.7, 1 }):setDuration(time):start() end) end buts={} heir=getRes("heir") function changan.button(txt,func,txtc) if not txt then txt = "未设置" end if not txtc then txtc="#000000" end local tid="Cbutton"..guid() buts[tid]=luajava.loadlayout( { LinearLayout, layout_width = 'match_parent', layout_height = "wrap_content", { LinearLayout, layout_width = "fill_parent", gravity = "center_vertical", layout_margin='5dp', elevation='3dp', background = getButtonBG(), padding="10dp", onClick = function() changan.controlWater(buts[tid],300) luajava.newThread(func):start() end, { TextView, --id = luajava.newId(tid), textColor = txtc, text = txt, textSize = "13sp", layout_height = "wrap_content", layout_width = "fill_parent", layout_weight=1, },{ImageView, src=heir, layout_height="14dp", layout_width="14dp", } }}) return buts[tid] end checkbg1 = getRes("quarkcheckoff") checkbg2 = getRes("quarkcheckon") checkbg3 = getVerticalBG({0x00aaaaaa,0x00aaaaaa},360,8,0xff999999) checkbg4 = getVerticalBG({0x00000000,0x00000000},360,10,0xff000000) radoff = getVerticalBG({0xaaBDC7CD,0xaaBDC7CD},360) radon = getRes("dz_check") radiog={} function changan.intradio(nid,name,func) return { LinearLayout , layout_width = 'match_parent' , layout_height = "wrap_content" , layout_weight=1, layout_marginLeft = "2dp" , layout_marginRight = "5dp" , layout_marginTop='2dp', layout_marginBottom='8dp', gravity = "center_vertical" , onClick = function () --changan.controlWater (_ENV [tid] , 200) func() end , { ImageView , id = luajava.newId (nid) , layout_width = '15dp' , layout_height = "15dp" , layout_marginLeft = "2dp" , layout_marginRight = "4dp" , src =radoff , padding='0dp', } , { TextView , gravity = "top" , text = name , textSize="12sp", textColor = '#000000' , layout_width = 'wrap_content' , layout_height = 'wrap_content' , } } end function changan.radio(cklist) local rid=guid() radiog[rid]={} rest = { LinearLayout , layout_width = 'match_parent' , layout_height = "wrap_content" , layout_marginTop = "10dp" , } local restt={ LinearLayout , layout_width = 'match_parent' , layout_weight=1, layout_height = "wrap_content" , gravity = "left" , orientation='vertical', } for i = 1, #cklist,4 do local tempTable = {LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "left", orientation="horizontal" } for j = 0, 3 do if cklist[i + j] ~= nil then local nid = name..guid () local name = cklist[i + j][1] radiog[rid][nid]=false local func1 = radin(rid,nid,cklist[i + j][2],name) if not name then name = "未设置" end local rstt = changan.intradio(nid,name,func1) table.insert(tempTable, rstt) else table.insert(tempTable, {LinearLayout, layout_width = 'match_parent', layout_weight=1,}) end end table.insert(restt, tempTable) end rest [# rest + 1] = restt return luajava.loadlayout (rest) end function radin(rid,nid,func,name) return function() for k,v in pairs(radiog[rid]) do if k==nid then if v~=true then luajava.getIdValue(k):setImageDrawable(radon) radiog[rid][k]=true 操作func({ id=rid, name=name, func=func }) else luajava.getIdValue(k):setImageDrawable(radoff) radiog[rid][k]=false 操作func({ id=rid, name=name, func=func },true) end else radiog[rid][k]=false luajava.getIdValue(k):setImageDrawable(radoff) end end end end switchs={} function changan.intcheck(name,func1,func2,picurl) nid = name..guid() local func = 开关5(name,func1,func2,nid) if not name then name = "未设置" end switchs[nid] = { LinearLayout, layout_width = '70dp', layout_height = "wrap_content", layout_marginTop = "1dp", layout_marginBottom = "1dp", padding = "1dp", orientation='vertical', gravity='center_horizontal', {ImageView, layout_height='45dp', layout_width='45dp', background=获取图片(picurl), onClick = function() luajava.newThread(function() func() end):start() end, }, { LinearLayout, padding="3dp", onClick = function() luajava.newThread(function() func() end):start() end, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "center_horizontal", --background=getVerticalBG({0xffFFFDF2,0xddffffff,0xffFFFDF2},15,8,0xffFFDA71), { TextView, id=luajava.newId(nid.."t"), gravity = "center", text = name, textColor='#555658', textSize = "10sp", --layout_marginLeft="8dp", layout_width = '40dp', },{ FrameLayout, id = luajava.newId(nid), background = checkbg3, layout_width = '15dp', layout_height = '15dp', padding = "0dp", }, } } return switchs[nid] end function changan.intcheck2(name,func1,func2) nid = name..guid() local func = 开关6(name,func1,func2,nid) if not name then name = "未设置" end switchs[nid] = { LinearLayout, layout_width = '70dp', layout_height = "wrap_content", layout_marginTop = "1dp", layout_marginBottom = "1dp", padding = "1dp", orientation='vertical', gravity='center_horizontal', { LinearLayout, padding="3dp", onClick = function() luajava.newThread(function() func() end):start() end, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "center_vertical", --background=getVerticalBG({0xffFFFDF2,0xddffffff,0xffFFFDF2},15,8,0xffFFDA71), { FrameLayout, id = luajava.newId(nid), background = checkbg1, layout_width = '25dp', layout_height = '25dp', padding = "0dp", },{ TextView, id=luajava.newId(nid.."t"), gravity = "left", text = name, textColor='#555658', textSize = "12sp", --layout_marginLeft="8dp", layout_width = 'match_parent', layout_weight=1, }, } } return switchs[nid] end function 开关6(name,func1,func2,nid) local sname = nid local localname=name name = name..guid() _ENV[name] = "关" if type(func1) ~= 'function' then func1 = function() end end if type(func2) ~= 'function' == nil then func2 = function() end end return function() namers = _ENV[name] if namers ~= "开" then vibra:vibrate(9) luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(checkbg2) luajava.getIdValue(nid.."t"):setTextColor(0xff000000) --changan.controlWater(switchs[nid],300) end) _ENV[name] = "开" if functable[nid]==nil then 操作func({ id=nid, name='[开启]'..localname, func=func1 }) else 操作func({id=nid},true) end else vibra:vibrate(9) luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(checkbg1) luajava.getIdValue(nid.."t"):setTextColor(0xff555658) --changan.controlWater(switchs[nid],300) end) _ENV[name] = "关" if functable[nid]==nil then 操作func({ id=nid, name='[关闭]'..localname, func=func2 }) else 操作func({id=nid},true) end end end end function 开关5(name,func1,func2,nid) local sname = nid local localname=name name = name..guid() _ENV[name] = "关" if type(func1) ~= 'function' then func1 = function() end end if type(func2) ~= 'function' == nil then func2 = function() end end return function() namers = _ENV[name] if namers ~= "开" then vibra:vibrate(9) luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(checkbg4) luajava.getIdValue(nid.."t"):setTextColor(0xff000000) --changan.controlWater(switchs[nid],300) end) _ENV[name] = "开" if functable[nid]==nil then 操作func({ id=nid, name='[开启]'..localname, func=func1 }) else 操作func({id=nid},true) end else vibra:vibrate(9) luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(checkbg3) luajava.getIdValue(nid.."t"):setTextColor(0xff555658) --changan.controlWater(switchs[nid],300) end) _ENV[name] = "关" if functable[nid]==nil then 操作func({ id=nid, name='[关闭]'..localname, func=func2 }) else 操作func({id=nid},true) end end end end function changan.check(cklist,typ) if #cklist==0 then return nil end local rest = { LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "center", orientation="vertical", } for i = 1, #cklist,4 do local tempTable = {LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "left", orientation="horizontal" } for j = 0, 3 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] local picurl=cklist[i+j][4] if not name then name = "未设置" end if typ==1 then rstt = changan.intcheck(name,func1,func2,picurl) else rstt = changan.intcheck2(name,func1,func2) end table.insert(tempTable, rstt) else table.insert(tempTable, {LinearLayout, layout_width = 'match_parent', layout_weight=1,}) end end table.insert(rest, tempTable) end return luajava.loadlayout(rest) end 无=function() end function 勾选1(tab) local t={} for i=1,#tab do table.insert(t,{ tab[i]['名字'], tab[i]['开启'], tab[i]['关闭'], tab[i]['图片'], }) end return changan.check(t,1) end function 勾选2(tab) local t={} for i=1,#tab do table.insert(t,{ tab[i]['名字'], tab[i]['开启'], tab[i]['关闭'], }) end return changan.check(t,2) end function 单选(tab) local t={} for i=1,#tab do table.insert(t,{ tab[i]['名字'], tab[i]['开启'], }) end return changan.radio(t) end function 结算() luajava.startThread(function() 结算中=true paiduitable=table.copy(functable) functable={} local str='正在等待执行:\n' local cishu=0 for i,v in pairs(paiduitable) do str=str..v.name..' , ' cishu=cishu+1 end if cishu==0 then str='' end luajava.runUiThread(function() luajava.getIdView('checklist'):setText('') luajava.getIdView('paidui'):setText(str) end) for i,v in pairs(paiduitable) do v.func() paiduitable[i]=nil local str='正在等待执行:\n' local cishu=0 for m,l in pairs(paiduitable) do str=str..l.name..' , ' cishu=cishu+1 end if cishu==0 then str='' end luajava.runUiThread(function() luajava.getIdView('paidui'):setText(str) end) end 结算中=false end) end functable={} paiduitable={} function 操作func(t,typ) luajava.runUiThread(function() if typ==true then functable[t.id]=nil else functable[t.id]=t end local str='已选择:\n' local cishu=0 for i,v in pairs(functable) do str=str..v.name..' , ' cishu=cishu+1 end if cishu==0 then str='' end luajava.getIdView('checklist'):setText(str) end) end 例子1=function() gg.alert('例子1111') end 悬浮窗图标 = "https://pan.baidu.re/view.php/429f9ece28bbf7f58877d3d5bf849d84.png" function huiz()---绘制必须放在这里 end string.toMusic('素材区域') 第一页 = {--创建分页,结尾调用 ['分页名字']="素材功能区域", [1]={--第一分区 ['分区名字']="素材区域", ['功能配置']={ 勾选1({--样式1 { ['名字']='高光时刻局外单机', ['图片']='https://pan.baidu.re/view.php/852610395e841fe156304fd5fc96d3e4.jpg', ['开启']=function() local JCXX = gg.getTargetInfo(); local DJSFLB={}; local ZDYJLB={}; function NCZH(S) if(S==2)then return "Jh"; elseif(S==1)then return "Ch"; elseif(S==4)then return "Ca"; elseif(S==8)then return "Cd"; elseif(S==16)then return "Cb"; elseif(S==262144)then return "PS"; elseif(S==32)then return "A"; elseif(S==65536)then return "J"; elseif(S==64)then return "S"; elseif(S==524288)then return "As"; elseif(S==1048576)then return "V"; elseif(S==-2080896)then return "O"; elseif(S==131072)then return "B"; elseif(S==16384)then return "Xa"; elseif(S==32768)then return "Xs"; end end function QNCL(N) local x={}; local z=0; local n=gg.getRangesList(); for v,w in ipairs(n)do if w.state == N then x[#x+1]=w; x[#x].size=w["end"]-w["start"]; end end return x,#x; end function NCPX(nclb,sj) local nclc=#nclb; if(sj==1)then for i=1,nclc-1 do for j=1 ,nclc-1 do if(nclb[j].size>nclb[j+1].size)then local temp = nclb[j+1]; nclb[j + 1] = nclb[j]; nclb[j] = temp; end end end elseif(sj==2)then for i=1,nclc-1 do for j=1 ,nclc-1 do if(nclb[j].size0 or data.ncks>0 or data.ncjw<100)then local nclb,ncsl=QNCL(NCZH(data.ncfw)); if(ncsl==0)then gg.toast(data.gnm.."开启失败"); return false; end local nclb=NCPX(nclb,data.ncpx); local ks,GGBox=math.modf(#nclb*(data.ncks*0.01)); if(ks==0)then ks=1; end local jw,GGBox=math.modf(#nclb*(data.ncjw*0.01)); if(jw==0)then jw=#nclb; end for i=ks,jw do gg.clearResults(); gg.searchNumber(data.xss.sz, data.xss.lx, false, gg.SIGN_EQUAL, nclb[i]["start"], nclb[i]["end"], 0); gg.refineNumber(data.gs.sz, data.gs.lx); local sl=gg.getResultsCount(); if(sl>0)then local sj=gg.getResults(sl) for j=1,sl do sssl=sssl+1; sssj[sssl]=sj[j]; end end gg.clearResults(); end if(#sssj==0)then gg.toast(data.gnm.."开启失败"); return false; end; gg.loadResults(sssj); gg.getResults(sssl) else gg.clearResults(); gg.setRanges(data.ncfw); gg.searchNumber(data.xss.sz, data.xss.lx); gg.refineNumber(data.gs.sz, data.gs.lx); sssl=gg.getResultsCount(); if(sssl==0)then gg.toast(data.gnm.."开启失败"); return false; end; sssj=gg.getResults(sssl); end local xgz=data.xg.sz; if(data.zdyjl and ZDYJLB[data.md5])then xgz=ZDYJLB[data.md5]; end if(data.zdyxg)then local zdy=gg.prompt({data.zdybz},{xgz},{"number"}); if(zdy)then xgz=zdy[1]; if(data.zdyjl)then ZDYJLB[data.md5]=zdy[1]; end else gg.clearResults(); gg.toast(data.gnm.."取消开启"); return false; end; end; if(data.xgdj==false)then gg.editAll(xgz, data.xg.lx); gg.clearResults(); gg.toast(data.gnm.."开启成功"); return true; end; if(data.djsf)then if(DJSFLB[data.md5])then gg.removeListItems(DJSFLB[data.md5]); end; DJSFLB[data.md5]={}; for i, v in ipairs(sssj) do if v.flags == data.xg.lx then v.value = xgz; v.freeze = true; DJSFLB[data.md5][#DJSFLB[data.md5]+1]=v.address; end; end; else for i, v in ipairs(sssj) do if v.flags == data.xg.lx then v.value = xgz; v.freeze = true; end; end; end; gg.addListItems(sssj); gg.clearResults(); gg.toast(data.gnm.."开启成功"); return true; end; function PYXG(M,md5,S,G) local sfs=0; local sfl=0; if(DJSFLB[md5])then sfl=#DJSFLB[md5]; gg.removeListItems(DJSFLB[md5]); end; DJSFLB[md5]={}; local zdyjmsj={}; zdyjmsj.t={}; zdyjmsj.s={}; zdyjmsj.r={}; zdyjmsj.j={}; local zdyjl=0; for i,v in pairs(G) do if(v.zd)then zdyjl=zdyjl+1; zdyjmsj.t[zdyjl]=v.bz; if(v.jl and ZDYJLB[md5])then zdyjmsj.s[zdyjl]=ZDYJLB[md5][zdyjl]; else zdyjmsj.s[zdyjl]=v.sz; end zdyjmsj.r[zdyjl]="number"; zdyjmsj.j[zdyjl]=i end; end; if(zdyjl>0)then local zdy=gg.prompt(zdyjmsj.t,zdyjmsj.s,zdyjmsj.r); if(zdy)then ZDYJLB[md5]={}; for i=1,#zdyjmsj.j do ZDYJLB[md5][i]=zdy[i]; G[zdyjmsj.j[i]].sz=zdy[i]; end; else gg.toast(M.."取消开启"); return false; end; end; local xg,xgs,dj,djs={},0,{},0; for i,v in ipairs(S)do for I,V in ipairs(G)do local shuju={}; shuju["address"]=v.address+V.py; shuju["flags"]=V.lx; shuju["value"]=V.sz; if(V.dj)then shuju["freeze"]=true; djs=djs+1; dj[djs]=shuju; if(V.sf)then sfs=sfs+1; DJSFLB[md5][sfs]=v.address+V.py; end; else xgs=xgs+1; xg[xgs]=shuju; end; end; end; gg.setValues(xg); gg.addListItems(dj); gg.toast(M.."开启成功\n修改"..xgs.."|冻结"..djs.."|释放"..sfl); end; function TZMPT(ztz,ftz) local linshishuju; local xinshuju; local ftzs=#ftz for i=1,ftzs do linshishuju={}; xinshuju={}; for ii,v in ipairs(ztz)do linshishuju[ii]={}; linshishuju[ii].address=v.address+ftz[i].py; linshishuju[ii].flags=ftz[i].lx; end; for ii,v in ipairs(gg.getValues(linshishuju))do if(v.value==ftz[i].sz)then xinshuju[#xinshuju+1]=ztz[ii] end; end; if(#xinshuju==0)then return false; end; ztz=xinshuju; end; return ztz end; function PYSS(data) local sssl=0; local sssj={}; if(data.ncpx>0 or data.ncks>0 or data.ncjw<100)then local nclb,ncsl=QNCL(NCZH(data.ncfw)); if(ncsl==0)then gg.toast(data.gnm.."开启失败"); return false; end local nclb=NCPX(nclb,data.ncpx); local ks,GGBox=math.modf(#nclb*(data.ncks*0.01)); if(ks==0)then ks=1; end local jw,GGBox=math.modf(#nclb*(data.ncjw*0.01)); if(jw==0)then jw=#nclb; end for i=ks,jw do gg.clearResults(); gg.searchNumber(data.ztz.sz, data.ztz.lx, false, gg.SIGN_EQUAL, nclb[i]["start"], nclb[i]["end"], 0); local sl=gg.getResultsCount(); if(sl>0)then local sj=gg.getResults(sl) for j=1,sl do sssl=sssl+1; sssj[sssl]=sj[j]; end end gg.clearResults(); end if(#sssj==0)then gg.toast(data.gnm.."开启失败\n未找到主特征"); return false; end; gg.clearResults(); else gg.clearResults(); gg.setRanges(data.ncfw); gg.searchNumber(data.ztz.sz, data.ztz.lx); sssl=gg.getResultsCount(); if(sssl<1)then gg.toast(data.gnm.."开启失败\n未找到主特征"); return false; end; sssj=gg.getResults(sssl); gg.clearResults(); end sssj=TZMPT(sssj,data.ftz); if(sssj)then PYXG(data.gnm,data.md5,sssj,data.xgz); else gg.toast(data.gnm.."开启失败\n未找到副特征"); return false; end; end; function ZZTZ(mk,zzlt) local zzlts=#zzlt; if(zzlts==0)then return false; end local sjlx; if(JCXX.x64)then sjlx=32; else sjlx=4; end; local shuzu={}; shuzu[1] = {}; shuzu[1].address = mk.start + zzlt[1]; shuzu[1].flags = sjlx; if zzlts ~= 1 then for i = 2, zzlts do local dushuju = gg.getValues(shuzu); shuzu = {} for _ in pairs(dushuju) do if not JCXX.x64 then dushuju[_].value = dushuju[_].value & 0xFFFFFFFF end shuzu[1] = {} shuzu[1].address = dushuju[_].value + zzlt[i] shuzu[1].flags = sjlx end; end; end; return shuzu; end; function ZZSS(data) local mklb={}; local mklbs=0; local t = gg.getRangesList('^/data/*'..data.mkm..'*$'); for i,v in pairs(t) do if(v.type:sub(1, 1)=="r" and (v.state==NCZH(data.nclx)))then mklbs=mklbs+1; mklb[mklbs]=v; end; end; if(mklbs==0)then gg.toast(data.gnm.."开启失败\n没找到模块头"); return false; end local k,j; if(data.xh==0)then k=1; j=mklbs; else if(mklbs 0 do local t = math.random(1, #p) table.insert(new, p[t]) table.remove(p, t) end return new end local getPointer = function(addr) return gg.getValues({{address = addr, flags = gg.TYPE_QWORD}})[1].value end local time = os.clock() local name = Ran({'1', '2', '3', '4', '5', }) local Name = Ran({'6', '7', '8', '9', }) local hero = readPointer('libil2cpp.so:bss', {0x75E8,0xB8,0x70,0x38,0x10,0x10,0x20}, 1) local edit = {} for i = 0, 8 do local p = getPointer(getPointer(hero + i * 8) + 0xA0) + 0x14 table.insert(edit, {address = p - 4, flags = 4, value = 6}) table.insert(edit, {address = p, flags = 4, value = ";巅峰"}) table.insert(edit, {address = p + 4, flags = 4, value = ";召唤"}) if i > 4 then table.insert(edit, {address = p + 8, flags = 4, value = ";师" .. Name[i - 4]}) else table.insert(edit, {address = p + 8, flags = 4, value = ";师" .. name[i + 1]}) end end local p = getPointer(getPointer(hero + 72) + 0xA0) + 0x14 table.insert(edit, {address = p - 4, flags = 4, value = 7}) table.insert(edit, {address = p, flags = 4, value = ";巅峰"}) table.insert(edit, {address = p + 4, flags = 4, value = ";召唤"}) table.insert(edit, {address = p + 8, flags = 4, value = ";师1"}) table.insert(edit, {address = p + 12, flags = 4, value = ";0"}) gg.setValues(edit) string.toMusic('恭喜成为巅峰招焕师') gg.toast('已开启') end , ['关闭']=function() gg.toast('已关闭') end, },{ ['名字']='隐藏暂停键', ['图片']='https://pan.baidu.re/view.php/0823e71acf6d22e0fcafad28701b8510.jpg', ['开启']=function() 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("开启成功,共修改"..#xgb2..",冻结"..#djb.."个值") end elseif gnlx=="载入" then gg.loadResults(xgb2) gg.toast("共载入"..#xgb2.."个值") end end string.toMusic('请点开启') b=gg.alert("隐藏暂停,可以开启后刷新,弄掉,暂停,然后关闭","开启","关闭") if b==1 then a=0 elseif b==2 then a=1 elseif b==0 then return end xyss({{1056997505,4,32},{1061734601,4,-8},{1036831949,4,8},},{{a,16,4,false},},"修改") string.toMusic('隐藏暂停键开启成功') gg.toast('已开启') end , ['关闭']=无 , },{ ['名字']='装备修改器', ['图片']='https://pan.baidu.re/view.php/b62c5dd1cce60c0a085e78a666cd68b5.jpg', ['开启']=function() function Format(tab, format, write, Function) if format == "查看" then return print(tab) elseif format == "修改" then local Table = {} for k, v in pairs(tab) do for kk, vv in pairs(write) do Table[#Table + 1] = { ["address"] = v["address"] + vv[2], ["flags"] = vv[3], ["value"] = vv[1] } end end return gg.setValues(Table) elseif format == "载入" then gg.loadResults(tab) elseif format == "冻结" then local Table = {} for k, v in pairs(tab) do for kk, vv in pairs(write) do Table[#Table + 1] = { ["address"] = v["address"] + vv[2], ["flags"] = vv[3], ["value"] = vv[1], ["freeze"] = true } end end return gg.addListItems(Table) end end function LSQ_type_conversion(txt, type1, type2) gg.allocatePage(gg.PROT_READ | gg.PROT_WRITE | gg.PROT_EXEC, 0x99999999) local Table = { { ["address"] = 0x99999999, ["flags"] = type1, ["value"] = txt } } local set = gg.setValues(Table) Table[1]["flags"] = type2 local get = gg.getValues(Table)[1]["value"] return get end function Get_value() if gg.getResultsCount() > 100000 then local result = {} local Table = {} while true do local Results = gg.getResults(100000) if not Results or #Results == 0 then break end result[#result + 1] = Results local remove = gg.removeResults(Results) end for k = 1, #result do for kk, vv in pairs(result[k]) do Table[#Table + 1] = vv end end return Table else return gg.getResults(gg.getResultsCount()) end end function Type_filtering(values) if string.find(values, ".") then start, v = string.match(values, "^(.-)%.(.)") value = string.format("%s.%s", start, v) return value else return values end end function LSQ_pointer(search, write, mode) if search[1][5] and search[1][6] then region_start = search[1][5] region_end = search[1][6] else region_start = 0 region_end = -1 end gg.clearResults() if search[1][2] == "16" and search[1][2] == "64" then local Value = LSQ_type_conversion(search[1][1], search[1][2], Q) gg.setRanges(search[1][3]) gg.searchNumber(Value, Q, false, gg.SIGN_EQUAL, region_start, region_end) gg.searchNumber(Value, Q, false, gg.SIGN_EQUAL, region_start, region_end) else gg.setRanges(search[1][3]) gg.searchNumber(search[1][1], search[1][2], false, gg.SIGN_EQUAL, region_start, region_end) gg.searchNumber(search[1][1], search[1][2], false, gg.SIGN_EQUAL, region_start, region_end) end if gg.getResultsCount() == 0 then gg.toast("没有搜索到指针数据") return false else local result = Get_value() gg.clearResults() for i = 2, #search do local offset_array = {} for k, v in ipairs(result) do offset_array[#offset_array + 1] = { ["address"] = v["address"] + search[i][2], ["flags"] = search[i][3] } end offset_array = gg.getValues(offset_array) local verify_array = {} for k, v in ipairs(offset_array) do if v["flags"] == 16 then v["value"] = Type_filtering(v["value"]) end if v["flags"] == 64 then v["value"] = Type_filtering(v["value"]) end if not string.find(search[i][1], "~") then if v["value"] == search[i][1] then verify_array[#verify_array + 1] = result[k] end else min, max = string.match(search[i][1], '^(.-)~(.-)$') min, max = tonumber(min), tonumber(max) if v["value"] >= min and v["value"] <= max then verify_array[#verify_array + 1] = result[k] end end end result = verify_array end if #result > 0 then Format(result, mode, write) return #result else return false end end end db=gg.getRangesList("dataCache.db")[1] if db==nil then gg.alert("请选择多一点进程\n否则会无法检测到") else LGM=gg.prompt({"请输入装备代码:"}, {"1131"}, {"number"}) if LGM==nil then else if LGM[1]=="" then gg.alert("不输入装备代码你玩什么") else local Search_array = { {LGM[1],4,-2080896,"装备编辑", db["start"], db["end"]}, {704482159,0x28,4}, } local Modifythe_array = {} local num = LSQ_pointer(Search_array, Modifythe_array,"载入") if gg.getResultCount() == 0 then gg.alert("装备代码:"..LGM[1].."\n可能该装备并未被王者更新\n请更换一个谢谢") else jg=gg.getResults(gg.getResultCount()) jasd=jg[1].address local y=gg.getValues({ [1]={address=jasd+0x24,flags=4,value=nil}, [2]={address=jasd+0x44,flags=4,value=nil}, [3]={address=jasd+0x60,flags=4,value=nil}, [4]={address=jasd+0x64,flags=4,value=nil}, [5]={address=jasd+0x68,flags=4,value=nil}, [6]={address=jasd+0x70,flags=4,value=nil}, [7]={address=jasd+0x74,flags=4,value=nil}, [8]={address=jasd+0x78,flags=4,value=nil}, [9]={address=jasd+0x7C,flags=4,value=nil}, [10]={address=jasd+0x80,flags=4,value=nil}, [11]={address=jasd+0x84,flags=4,value=nil}, [12]={address=jasd+0x88,flags=4,value=nil}, [13]={address=jasd+0x8C,flags=4,value=nil}, [14]={address=jasd+0x90,flags=4,value=nil}, [15]={address=jasd+0x94,flags=4,value=nil}, [16]={address=jasd+0x98,flags=4,value=nil}, [17]={address=jasd+0x160,flags=4,value=nil}, [18]={address=jasd+0x164,flags=4,value=nil}, }) gg.clearList() local YCY=gg.prompt({"购买价格:","出售价格:","物理攻击:","攻速(*100):","暴击率(*100):","物理吸血(*100):","法术攻击:","冷却缩减(*100):","最大法力:","每五秒回蓝:","物理防御:","法术防御:","最大生命值:","每五秒回血:","移速(*100):","普攻强度:","主动技能:","主动技能键位"},{y[1].value,y[2].value,y[3].value,y[4].value,y[5].value,y[6].value,y[7].value,y[8].value,y[9].value,y[10].value,y[11].value,y[12].value,y[13].value,y[14].value,y[15].value,y[16].value,y[17].value,y[18].value},{"number"}) if YCY==nil then return else local time=os.clock() gg.setValues({ {address=jasd+0x24,flags=4,value=YCY[1]}, {address=jasd+0x44,flags=4,value=YCY[2]}, {address=jasd+0x60,flags=4,value=YCY[3]}, {address=jasd+0x64,flags=4,value=YCY[4]}, {address=jasd+0x68,flags=4,value=YCY[5]}, {address=jasd+0x70,flags=4,value=YCY[6]}, {address=jasd+0x74,flags=4,value=YCY[7]}, {address=jasd+0x78,flags=4,value=YCY[8]}, {address=jasd+0x7C,flags=4,value=YCY[9]}, {address=jasd+0x80,flags=4,value=YCY[10]}, {address=jasd+0x84,flags=4,value=YCY[11]}, {address=jasd+0x88,flags=4,value=YCY[12]}, {address=jasd+0x8C,flags=4,value=YCY[13]}, {address=jasd+0x90,flags=4,value=YCY[14]}, {address=jasd+0x94,flags=4,value=YCY[15]}, {address=jasd+0x98,flags=4,value=YCY[16]}, {address=jasd+0x160,flags=4,value=YCY[17]}, {address=jasd+0x164,flags=4,value=YCY[18]}, }) end end end end end string.toMusic('装备编辑器开启成功') gg.toast('已开启') end , ['关闭']=无 , },{ ['名字']='框架进大厅防闪', ['图片']='https://pan.baidu.re/view.php/77125e88c4227c4747f183c3b455ee1e.jpg', ['开启']=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']=16}, {['name']='防闪'}, {['value']=16384, ['type']=32}, {['lv']=16384,['offset']=-3184, ['type']=32}, } local qmxg= { {['value']=0,['offset']=-10432,['type']=32}, {['value']=0,['offset']=-10144,['type']=32}, {['value']=0,['offset']=-9456,['type']=32}, {['value']=0,['offset']=-9376,['type']=32}, {['value']=0,['offset']=-9176,['type']=32}, {['value']=0,['offset']=-9128,['type']=32}, {['value']=0,['offset']=-8944,['type']=32}, {['value']=0,['offset']=-3840,['type']=32}, {['value']=0,['offset']=-3192,['type']=32}, {['value']=0,['offset']=-8,['type']=32}, } xqmnb(qmnb,qmxg) string.toMusic('框架进大厅开启成功') gg.toast('已开启') end ,--调用了前边定义的function,建议功能全部这样写,格式规整 ['关闭']=无 ,--无被我定义了空function },{ ['名字']='水晶无敌新版', ['图片']='https://pan.baidu.re/view.php/37ae0c066a79bbb5e4c5aace2f96a2b4.jpg', ['开启']=function() function fastsearch(search,write) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) time=os.clock() gg.searchNumber(search[1][1],search[1][2],false,gg.SlGN_EQUAL,0,-1) if gg.getResultsCount() == 0 then gg.toast("未搜索到主特征码") return false else local result = gg.getResults(gg.getResultsCount()) gg.clearResults() for i = 2,#search do local mtp = {} for w,r in ipairs(result) do mtp[#mtp + 1] = { address = r.address + search[i][2],flags = search[i][3] } end mtp = gg.getValues(mtp) local hook = {} for w,r in ipairs(mtp) do if r.value == search[i][1] then hook[#hook + 1] = result[w] end end result = hook end if #result > 0 then local tb = {{},{}} for i,v in ipairs(result) do --- 遍历每个结果 for _,vv in ipairs(write) do local p = {address = v.address + vv[2],flags = vv[3],value = vv[1],freeze = vv[4]} if vv[4] then --- true 就是冻结 table.insert(tb[2],p) else table.insert(tb[1],p) end end end gg.addListItems(tb[2]) gg.setValues(tb[1]) gg.toast(name.."已解析\n共解析" .. (#tb[1] + #tb[2]) .. "条数据\n耗时"..os.clock()-time.."秒") else gg.toast("解析失败") end end end --快搜指针配置-- a = gg.prompt({"请输入血量"},{[1]=9999999},{[1]="number"}) fastsearch({ {4915200, 4, 4},{5,0x38,4},{81920000,0x14,4}, }, { {a[1]*8192, -0x7, 7,false}--0是血量 }) string.toMusic('水晶红开启成功') gg.toast('水晶蓝开启成功') end ,--调用了前边定义的function,建议功能全部这样写,格式规整 ['关闭']=无 ,--无被我定义了空function },{ ['名字']='水晶无敌蓝', ['图片']='https://pan.baidu.re/view.php/faac79475f913c0f64e712a3bab1ac4c.jpg', ['开启']=function() local JCXX = gg.getTargetInfo(); local DJSFLB={}; local ZDYJLB={}; function NCZH(S) if(S==2)then return "Jh"; elseif(S==1)then return "Ch"; elseif(S==4)then return "Ca"; elseif(S==8)then return "Cd"; elseif(S==16)then return "Cb"; elseif(S==262144)then return "PS"; elseif(S==32)then return "A"; elseif(S==65536)then return "J"; elseif(S==64)then return "S"; elseif(S==524288)then return "As"; elseif(S==1048576)then return "V"; elseif(S==-2080896)then return "O"; elseif(S==131072)then return "B"; elseif(S==16384)then return "Xa"; elseif(S==32768)then return "Xs"; end end function QNCL(N) local x={}; local z=0; local n=gg.getRangesList(); for v,w in ipairs(n)do if w.state == N then x[#x+1]=w; x[#x].size=w["end"]-w["start"]; end end return x,#x; end function NCPX(nclb,sj) local nclc=#nclb; if(sj==1)then for i=1,nclc-1 do for j=1 ,nclc-1 do if(nclb[j].size>nclb[j+1].size)then local temp = nclb[j+1]; nclb[j + 1] = nclb[j]; nclb[j] = temp; end end end elseif(sj==2)then for i=1,nclc-1 do for j=1 ,nclc-1 do if(nclb[j].size0 or data.ncks>0 or data.ncjw<100)then local nclb,ncsl=QNCL(NCZH(data.ncfw)); if(ncsl==0)then gg.toast(data.gnm.."开启失败"); return false; end local nclb=NCPX(nclb,data.ncpx); local ks,GGBox=math.modf(#nclb*(data.ncks*0.01)); if(ks==0)then ks=1; end local jw,GGBox=math.modf(#nclb*(data.ncjw*0.01)); if(jw==0)then jw=#nclb; end for i=ks,jw do gg.clearResults(); gg.searchNumber(data.xss.sz, data.xss.lx, false, gg.SIGN_EQUAL, nclb[i]["start"], nclb[i]["end"], 0); gg.refineNumber(data.gs.sz, data.gs.lx); local sl=gg.getResultsCount(); if(sl>0)then local sj=gg.getResults(sl) for j=1,sl do sssl=sssl+1; sssj[sssl]=sj[j]; end end gg.clearResults(); end if(#sssj==0)then gg.toast(data.gnm.."开启失败"); return false; end; gg.loadResults(sssj); gg.getResults(sssl) else gg.clearResults(); gg.setRanges(data.ncfw); gg.searchNumber(data.xss.sz, data.xss.lx); gg.refineNumber(data.gs.sz, data.gs.lx); sssl=gg.getResultsCount(); if(sssl==0)then gg.toast(data.gnm.."开启失败"); return false; end; sssj=gg.getResults(sssl); end local xgz=data.xg.sz; if(data.zdyjl and ZDYJLB[data.md5])then xgz=ZDYJLB[data.md5]; end if(data.zdyxg)then local zdy=gg.prompt({data.zdybz},{xgz},{"number"}); if(zdy)then xgz=zdy[1]; if(data.zdyjl)then ZDYJLB[data.md5]=zdy[1]; end else gg.clearResults(); gg.toast(data.gnm.."取消开启"); return false; end; end; if(data.xgdj==false)then gg.editAll(xgz, data.xg.lx); gg.clearResults(); gg.toast(data.gnm.."开启成功"); return true; end; if(data.djsf)then if(DJSFLB[data.md5])then gg.removeListItems(DJSFLB[data.md5]); end; DJSFLB[data.md5]={}; for i, v in ipairs(sssj) do if v.flags == data.xg.lx then v.value = xgz; v.freeze = true; DJSFLB[data.md5][#DJSFLB[data.md5]+1]=v.address; end; end; else for i, v in ipairs(sssj) do if v.flags == data.xg.lx then v.value = xgz; v.freeze = true; end; end; end; gg.addListItems(sssj); gg.clearResults(); gg.toast(data.gnm.."开启成功"); return true; end; function TZMPT(ztz,ftz) local linshishuju; local xinshuju; local ftzs=#ftz for i=1,ftzs do linshishuju={}; xinshuju={}; for ii,v in ipairs(ztz)do linshishuju[ii]={}; linshishuju[ii].address=v.address+ftz[i].py; linshishuju[ii].flags=ftz[i].lx; end; for ii,v in ipairs(gg.getValues(linshishuju))do if(v.value==ftz[i].sz)then xinshuju[#xinshuju+1]=ztz[ii] end; end; if(#xinshuju==0)then return false; end; ztz=xinshuju; end; return ztz end; function PYSS(data) local sssl=0; local sssj={}; if(data.ncpx>0 or data.ncks>0 or data.ncjw<100)then local nclb,ncsl=QNCL(NCZH(data.ncfw)); if(ncsl==0)then gg.toast(data.gnm.."开启失败"); return false; end local nclb=NCPX(nclb,data.ncpx); local ks,GGBox=math.modf(#nclb*(data.ncks*0.01)); if(ks==0)then ks=1; end local jw,GGBox=math.modf(#nclb*(data.ncjw*0.01)); if(jw==0)then jw=#nclb; end for i=ks,jw do gg.clearResults(); gg.searchNumber(data.ztz.sz, data.ztz.lx, false, gg.SIGN_EQUAL, nclb[i]["start"], nclb[i]["end"], 0); local sl=gg.getResultsCount(); if(sl>0)then local sj=gg.getResults(sl) for j=1,sl do sssl=sssl+1; sssj[sssl]=sj[j]; end end gg.clearResults(); end if(#sssj==0)then gg.toast(data.gnm.."开启失败\n未找到主特征"); return false; end; gg.clearResults(); else gg.clearResults(); gg.setRanges(data.ncfw); gg.searchNumber(data.ztz.sz, data.ztz.lx); sssl=gg.getResultsCount(); if(sssl<1)then gg.toast(data.gnm.."开启失败\n未找到主特征"); return false; end; sssj=gg.getResults(sssl); gg.clearResults(); end sssj=TZMPT(sssj,data.ftz); if(sssj)then PYXG(data.gnm,data.md5,sssj,data.xgz); else gg.toast(data.gnm.."开启失败\n未找到副特征"); return false; end; end; function ZZTZ(mk,zzlt) local zzlts=#zzlt; if(zzlts==0)then return false; end local sjlx; if(JCXX.x64)then sjlx=32; else sjlx=4; end; local shuzu={}; shuzu[1] = {}; shuzu[1].address = mk.start + zzlt[1]; shuzu[1].flags = sjlx; if zzlts ~= 1 then for i = 2, zzlts do local dushuju = gg.getValues(shuzu); shuzu = {} for _ in pairs(dushuju) do if not JCXX.x64 then dushuju[_].value = dushuju[_].value & 0xFFFFFFFF end shuzu[1] = {} shuzu[1].address = dushuju[_].value + zzlt[i] shuzu[1].flags = sjlx end; end; end; return shuzu; end; function ZZSS(data) local mklb={}; local mklbs=0; local t = gg.getRangesList('^/data/*'..data.mkm..'*$'); for i,v in pairs(t) do if(v.type:sub(1, 1)=="r" and (v.state==NCZH(data.nclx)))then mklbs=mklbs+1; mklb[mklbs]=v; end; end; if(mklbs==0)then gg.toast(data.gnm.."开启失败\n没找到模块头"); return false; end local k,j; if(data.xh==0)then k=1; j=mklbs; else if(mklbs 0 then local tb = {{},{}} for i,v in ipairs(result) do --- 遍历每个结果 for _,vv in ipairs(write) do local p = {address = v.address + vv[2],flags = vv[3],value = vv[1],freeze = vv[4]} if vv[4] then --- true 就是冻结 table.insert(tb[2],p) else table.insert(tb[1],p) end end end gg.addListItems(tb[2]) gg.setValues(tb[1]) gg.toast(name.."已解析\n共解析" .. (#tb[1] + #tb[2]) .. "条数据\n耗时"..os.clock()-time.."秒") else gg.toast("解析失败") end end end --快搜指针配置-- a = gg.prompt({"请输入血量"},{[1]=999999999},{[1]="number"}) fastsearch({ {4915200, 4, 4},{5,0x38,4},{81920000,0x14,4}, }, { {a[1]*8192, -0x4, 4,false}--0是血量 }) string.toMusic('一键水晶无敌开启成功') gg.toast('已开启') end ,--调用了前边定义的function,建议功能全部这样写,格式规整 ['关闭']=无 ,--无被我定义了空function },{ ['名字']='破军编辑器', ['图片']='https://pan.baidu.re/view.php/7ee6a7b6c62b7c1e8b29989adbd6d594.jpg', ['开启']=function() function Format(tab, format, write, Function) if format == "查看" then return print(tab) elseif format == "修改" then local Table = {} for k, v in pairs(tab) do for kk, vv in pairs(write) do Table[#Table + 1] = { ["address"] = v["address"] + vv[2], ["flags"] = vv[3], ["value"] = vv[1] } end end return gg.setValues(Table) elseif format == "载入" then gg.loadResults(tab) elseif format == "冻结" then local Table = {} for k, v in pairs(tab) do for kk, vv in pairs(write) do Table[#Table + 1] = { ["address"] = v["address"] + vv[2], ["flags"] = vv[3], ["value"] = vv[1], ["freeze"] = true } end end return gg.addListItems(Table) end end function LSQ_type_conversion(txt, type1, type2) gg.allocatePage(gg.PROT_READ | gg.PROT_WRITE | gg.PROT_EXEC, 0x99999999) local Table = { { ["address"] = 0x99999999, ["flags"] = type1, ["value"] = txt } } local set = gg.setValues(Table) Table[1]["flags"] = type2 local get = gg.getValues(Table)[1]["value"] return get end function Get_value() if gg.getResultsCount() > 100000 then local result = {} local Table = {} while true do local Results = gg.getResults(100000) if not Results or #Results == 0 then break end result[#result + 1] = Results local remove = gg.removeResults(Results) end for k = 1, #result do for kk, vv in pairs(result[k]) do Table[#Table + 1] = vv end end return Table else return gg.getResults(gg.getResultsCount()) end end function Type_filtering(values) if string.find(values, ".") then start, v = string.match(values, "^(.-)%.(.)") value = string.format("%s.%s", start, v) return value else return values end end function LSQ_pointer(search, write, mode) if search[1][5] and search[1][6] then region_start = search[1][5] region_end = search[1][6] else region_start = 0 region_end = -1 end gg.clearResults() if search[1][2] == "16" and search[1][2] == "64" then local Value = LSQ_type_conversion(search[1][1], search[1][2], Q) gg.setRanges(search[1][3]) gg.searchNumber(Value, Q, false, gg.SIGN_EQUAL, region_start, region_end) gg.searchNumber(Value, Q, false, gg.SIGN_EQUAL, region_start, region_end) else gg.setRanges(search[1][3]) gg.searchNumber(search[1][1], search[1][2], false, gg.SIGN_EQUAL, region_start, region_end) gg.searchNumber(search[1][1], search[1][2], false, gg.SIGN_EQUAL, region_start, region_end) end if gg.getResultsCount() == 0 then gg.toast("没有搜索到指针数据") return false else local result = Get_value() gg.clearResults() for i = 2, #search do local offset_array = {} for k, v in ipairs(result) do offset_array[#offset_array + 1] = { ["address"] = v["address"] + search[i][2], ["flags"] = search[i][3] } end offset_array = gg.getValues(offset_array) local verify_array = {} for k, v in ipairs(offset_array) do if v["flags"] == 16 then v["value"] = Type_filtering(v["value"]) end if v["flags"] == 64 then v["value"] = Type_filtering(v["value"]) end if not string.find(search[i][1], "~") then if v["value"] == search[i][1] then verify_array[#verify_array + 1] = result[k] end else min, max = string.match(search[i][1], '^(.-)~(.-)$') min, max = tonumber(min), tonumber(max) if v["value"] >= min and v["value"] <= max then verify_array[#verify_array + 1] = result[k] end end end result = verify_array end if #result > 0 then Format(result, mode, write) return #result else return false end end end db=gg.getRangesList("dataCache.db")[1] if db==nil then gg.alert("请选择多一点进程\n否则会无法检测到") else local Search_array = { {1138,4,-2080896,"装备编辑", db["start"], db["end"]},--1138可以替换成其他装备代码 {704482159,0x28,4}, } local Modifythe_array = {} local num = LSQ_pointer(Search_array, Modifythe_array,"载入") jg=gg.getResults(gg.getResultCount()) jasd=jg[1].address local y=gg.getValues({ [1]={address=jasd+0x24,flags=4,value=nil}, [2]={address=jasd+0x44,flags=4,value=nil}, [3]={address=jasd+0x60,flags=4,value=nil}, [4]={address=jasd+0x64,flags=4,value=nil}, [5]={address=jasd+0x68,flags=4,value=nil}, [6]={address=jasd+0x6C,flags=4,value=nil}, [7]={address=jasd+0x70,flags=4,value=nil}, [8]={address=jasd+0x74,flags=4,value=nil}, [9]={address=jasd+0x78,flags=4,value=nil}, [10]={address=jasd+0x7C,flags=4,value=nil}, [11]={address=jasd+0x80,flags=4,value=nil}, [12]={address=jasd+0x84,flags=4,value=nil}, [13]={address=jasd+0x88,flags=4,value=nil}, [14]={address=jasd+0x8C,flags=4,value=nil}, [15]={address=jasd+0x90,flags=4,value=nil}, [16]={address=jasd+0x94,flags=4,value=nil}, [17]={address=jasd+0x160,flags=4,value=nil}, [18]={address=jasd+0x164,flags=4,value=nil}, }) gg.clearList() local YCY=gg.prompt({"购买价格:","出售价格:","物理攻击:","攻速(*100):","暴击率(*100):","物理吸血(*100):","法术攻击:","冷却缩减(*100):","最大法力:","每五秒回蓝:","物理防御:","法术防御:","最大生命值:","每五秒回血:","移速(*100):","普攻强度:","主动技能:","主动技能键位"},{y[1].value,y[2].value,y[3].value,y[4].value,y[5].value,y[6].value,y[7].value,y[8].value,y[9].value,y[10].value,y[11].value,y[12].value,y[13].value,y[14].value,y[15].value,y[16].value,y[17].value,y[18].value},{"number"}) if YCY==nil then return else local time=os.clock() gg.setValues({ {address=jasd+0x24,flags=4,value=YCY[1]}, {address=jasd+0x44,flags=4,value=YCY[2]}, {address=jasd+0x60,flags=4,value=YCY[3]}, {address=jasd+0x64,flags=4,value=YCY[4]}, {address=jasd+0x68,flags=4,value=YCY[5]}, {address=jasd+0x6C,flags=4,value=YCY[6]}, {address=jasd+0x70,flags=4,value=YCY[7]}, {address=jasd+0x74,flags=4,value=YCY[8]}, {address=jasd+0x78,flags=4,value=YCY[9]}, {address=jasd+0x7C,flags=4,value=YCY[10]}, {address=jasd+0x80,flags=4,value=YCY[11]}, {address=jasd+0x84,flags=4,value=YCY[12]}, {address=jasd+0x88,flags=4,value=YCY[13]}, {address=jasd+0x8C,flags=4,value=YCY[14]}, {address=jasd+0x90,flags=4,value=YCY[15]}, {address=jasd+0x94,flags=4,value=YCY[16]}, {address=jasd+0x160,flags=4,value=YCY[17]}, {address=jasd+0x164,flags=4,value=YCY[18]}, }) end end string.toMusic('破军编辑成功') end , ['关闭']=无 ,--无被我定义了空function },{ ['名字']='改字可以改王者里面的所有字体', ['图片']='https://pan.baidu.re/view.php/66ccf277377ee6e203cab6563e2b4753.jpg', ['开启']=function() a = gg.prompt({"输入当前英雄名字\n比如守约名字 静谧之眼"},{},{"number"}) b = gg.prompt({"更改名字"},{},{"number"}) gg.clearResults() gg.setRanges(32) gg.searchNumber(";"..a[1], gg.TYPE_WORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_WORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll(";"..b[1], gg.TYPE_WORD) gg.clearResults() ces=balert("修改成功\n请在设置里切换\nPowered by梦醒") gg.toast('已开启') end ,--调用了前边定义的function,建议功能全部这样写,格式规整 ['关闭']=无 ,--无被我定义了空function },{ ['名字']='皮肤编辑器', ['图片']='https://pan.baidu.re/view.php/6c0d328bbdebce95db527dc7c6b63ec8.png', ['开启']=function() function Format(tab, format, write, Function) if format == "查看" then return print(tab) elseif format == "修改" then local Table = {} for k, v in pairs(tab) do for kk, vv in pairs(write) do Table[#Table + 1] = { ["address"] = v["address"] + vv[2], ["flags"] = vv[3], ["value"] = vv[1] } end end return gg.setValues(Table) elseif format == "载入" then gg.loadResults(tab) elseif format == "冻结" then local Table = {} for k, v in pairs(tab) do for kk, vv in pairs(write) do Table[#Table + 1] = { ["address"] = v["address"] + vv[2], ["flags"] = vv[3], ["value"] = vv[1], ["freeze"] = true } end end return gg.addListItems(Table) end end function LSQ_type_conversion(txt, type1, type2) gg.allocatePage(gg.PROT_READ | gg.PROT_WRITE | gg.PROT_EXEC, 0x99999999) local Table = { { ["address"] = 0x99999999, ["flags"] = type1, ["value"] = txt } } local set = gg.setValues(Table) Table[1]["flags"] = type2 local get = gg.getValues(Table)[1]["value"] return get end function Get_value() if gg.getResultsCount() > 100000 then local result = {} local Table = {} while true do local Results = gg.getResults(100000) if not Results or #Results == 0 then break end result[#result + 1] = Results local remove = gg.removeResults(Results) end for k = 1, #result do for kk, vv in pairs(result[k]) do Table[#Table + 1] = vv end end return Table else return gg.getResults(gg.getResultsCount()) end end function Type_filtering(values) if string.find(values, ".") then start, v = string.match(values, "^(.-)%.(.)") value = string.format("%s.%s", start, v) return value else return values end end function LSQ_pointer(search, write, mode) if search[1][5] and search[1][6] then region_start = search[1][5] region_end = search[1][6] else region_start = 0 region_end = -1 end gg.clearResults() if search[1][2] == "16" and search[1][2] == "64" then local Value = LSQ_type_conversion(search[1][1], search[1][2], Q) gg.setRanges(search[1][3]) gg.searchNumber(Value, Q, false, gg.SIGN_EQUAL, region_start, region_end) gg.searchNumber(Value, Q, false, gg.SIGN_EQUAL, region_start, region_end) else gg.setRanges(search[1][3]) gg.searchNumber(search[1][1], search[1][2], false, gg.SIGN_EQUAL, region_start, region_end) gg.searchNumber(search[1][1], search[1][2], false, gg.SIGN_EQUAL, region_start, region_end) end if gg.getResultsCount() == 0 then gg.toast("没有搜索到指针数据") return false else local result = Get_value() gg.clearResults() for i = 2, #search do local offset_array = {} for k, v in ipairs(result) do offset_array[#offset_array + 1] = { ["address"] = v["address"] + search[i][2], ["flags"] = search[i][3] } end offset_array = gg.getValues(offset_array) local verify_array = {} for k, v in ipairs(offset_array) do if v["flags"] == 16 then v["value"] = Type_filtering(v["value"]) end if v["flags"] == 64 then v["value"] = Type_filtering(v["value"]) end if not string.find(search[i][1], "~") then if v["value"] == search[i][1] then verify_array[#verify_array + 1] = result[k] end else min, max = string.match(search[i][1], '^(.-)~(.-)$') min, max = tonumber(min), tonumber(max) if v["value"] >= min and v["value"] <= max then verify_array[#verify_array + 1] = result[k] end end end result = verify_array end if #result > 0 then Format(result, mode, write) return #result else return false end end end function Main() SN=gg.choice({ "自定义皮肤编辑", "皮肤星元注入", "退出脚本(白翼)", },2018,"禁止倒卖\n作者'白翼'\n190064664") if SN==1 then A() end if SN==2 then C() end if SN==3 then Exit() end FX1=0 end function A() db=gg.getRangesList("dataCache.db")[1] if db==nil then gg.alert("开启失败\n请检查进程是否>800mb\nPowered by.白翼") else string.toMusic('请输入英雄的代码初始代码为铠') LGM=gg.prompt({"请输入英雄代码"}, {"193"}, {"number"}) if LGM==nil then else if LGM[1]=="" then gg.alert("不输入代码你玩什么") else local Search_array = { {LGM[1].."00",4,-2080896,"英雄皮肤编辑", db["start"], db["end"]}, {1394924092,0x8,4}, } local Modifythe_array = {} local num = LSQ_pointer(Search_array, Modifythe_array,"载入") if gg.getResultCount() == 0 then gg.alert("英雄代码:"..LGM[1].."\n可能没有这个英雄哦~") else jg=gg.getResults(gg.getResultCount()) jasd=jg[1].address local y=gg.getValues({ [1]={address=jasd+0x4,flags=4,value=nil}, [2]={address=jasd+0x10,flags=4,value=nil}, }) gg.clearList() string.toMusic('是否自定义英雄皮肤') local YCY=gg.prompt({"是否自定义英雄皮肤"},{y[1].value,nil,nil},{"checkbox"}) if YCY==nil then os.exit() else if YCY[1]==true then string.toMusic('请输入序号') B=gg.prompt({"请输入想要的皮肤列号"},{[1]="默认1"},{[1]="number"}) gg.setValues({ {address=jasd+0x4,flags=4,value=B[1]}, {address=jasd+0x10,flags=4,value=B[1]}, }) string.toMusic('皮肤修改成功') end end end end end end end function C() db=gg.getRangesList("dataCache.db")[1] if db==nil then gg.alert("开启失败\n请检查进程是否>800mb\nPowered by.白翼") else LGM=gg.prompt({"请输入英雄皮肤代码","请输入英雄代码"}, {"10601","106"}, {"number","number"}) if LGM==nil then else if LGM[1]=="" then gg.alert("不输入代码你玩什么") else if LGM[2]=="" then gg.alert("不输入代码你玩什么") else local Search_array = { {LGM[1],4,-2080896,"英雄星元编辑", db["start"], db["end"]}, {LGM[2],0x4,4}, } local Modifythe_array = {} local num = LSQ_pointer(Search_array, Modifythe_array,"载入") jg=gg.getResults(gg.getResultCount()) jasd=jg[1].address local y=gg.getValues({ [1]={address=jasd+0x250,flags=4,value=nil}, }) gg.clearList() local YCY=gg.prompt({"是否自定义英雄皮肤星元"},{y[1].value,nil,nil},{"checkbox"}) if YCY==nil then os.exit() else if YCY[1]==true then X=gg.prompt({"请输入想要的皮肤星元列号"},{[1]="默认1"},{[1]="number"}) gg.setValues({ {address=jasd+0x250,flags=4,value=X[1]}, }) gg.alert("英雄皮肤星元注入成功\n切换一下即可\nPowered by.白翼") end end end end end end end function Exit() print("白翼") os.exit() end while true do if gg.isVisible(true) then FX1 = nil gg.setVisible(false) end if FX1 == nil then Main() end end string.toMusic('皮肤编辑器开启成功') gg.toast('已开启') end ,--调用了前边定义的function,建议功能全部这样写,格式规整 ['关闭']=无 ,--无被我定义了空function },{ ['名字']='自定义巅峰赛', ['图片']='https://pan.baidu.re/view.php/6c7b7186f1f2ba60c2986d578bc7c3cc.jpg', ['开启']=function()--也可以直接写功能,就是看起来会很乱 gg.alert("请先看好英雄名字再使用","好的明白了") function XCC() kk=gg.prompt({ "输入英雄名字选列号即可-改完不会立马生效", "巅峰召唤师1", "巅峰召唤师2", "巅峰召唤师3", "巅峰召唤师4", "巅峰召唤师5", "巅峰召唤师6", "巅峰召唤师7", "巅峰召唤师8", "巅峰召唤师9", "巅峰召唤师10", "退出脚本(墨)", }, {} ,{ "text", 'checkbox', 'checkbox', 'checkbox', 'checkbox', 'checkbox', 'checkbox', 'checkbox', 'checkbox', 'checkbox', 'checkbox', 'checkbox', 'checkbox', 'checkbox' }) if not kk then os.exit() end if kk[2]==true then a() end if kk[3]==true then b() end if kk[4]==true then c() end if kk[5]==true then d() end if kk[6]==true then e() end if kk[7]==true then f() end if kk[8]==true then g() end if kk[9]==true then h() end if kk[10]==true then i() end if kk[11]==true then j() end if kk[12]==true then Exit() end FX1=0 end function a() time=os.clock() gg.clearResults() gg.clearResults() qmnb = { {["memory"] = 32}, {["name"] = ""}, {["value"] = ";" .. kk[1] , ["type"] = 4}, {["lv"] = 0,["offset"] =-8, ["type"] = D,["freeze"] = false}, } qmxg= { {["value"] = 6,["offset"] =-4, ["type"] = D,["freeze"] = false}, {["value"] = "1,559,256,517",["offset"] =0, ["type"] = D,["freeze"] = false}, {["value"] = "1,428,444,140",["offset"] =4, ["type"] = D,["freeze"] = false}, {["value"] = "3,235,336",["offset"] =8, ["type"] = D,["freeze"] = false}, } xqmnb(qmnb) gg.clearResults() gg.clearResults() gg.alert("巅峰召唤师1编辑成功\n耗时:"..os.clock()-time.."秒") end function b() time=os.clock() gg.clearResults() gg.clearResults() qmnb = { {["memory"] = 32}, {["name"] = ""}, {["value"] = ";" .. kk[1] , ["type"] = 4}, {["lv"] = 0,["offset"] =-8, ["type"] = D,["freeze"] = false}, } qmxg= { {["value"] = 6,["offset"] =-4, ["type"] = D,["freeze"] = false}, {["value"] = "1,559,256,517",["offset"] =0, ["type"] = D,["freeze"] = false},--技能升级增加冷却 {["value"] = "1,428,444,140",["offset"] =4, ["type"] = D,["freeze"] = false},--冷却 {["value"] = "3,300,872",["offset"] =8, ["type"] = D,["freeze"] = false},--后摇 } xqmnb(qmnb) gg.clearResults() gg.clearResults() gg.alert("巅峰召唤师2编辑成功\n耗时:"..os.clock()-time.."秒") end function c() time=os.clock() gg.clearResults() gg.clearResults() qmnb = { {["memory"] = 32}, {["name"] = ""}, {["value"] = ";" .. kk[1] , ["type"] = 4}, {["lv"] = 0,["offset"] =-8, ["type"] = D,["freeze"] = false}, } qmxg= { {["value"] = 6,["offset"] =-4, ["type"] = D,["freeze"] = false}, {["value"] = "1,559,256,517",["offset"] =0, ["type"] = D,["freeze"] = false},--技能升级增加冷却 {["value"] = "1,428,444,140",["offset"] =4, ["type"] = D,["freeze"] = false},--冷却 {["value"] = "3,366,408",["offset"] =8, ["type"] = D,["freeze"] = false},--后摇 } xqmnb(qmnb) gg.clearResults() gg.clearResults() gg.alert("巅峰召唤师3编辑成功\n耗时:"..os.clock()-time.."秒") end function d() time=os.clock() gg.clearResults() gg.clearResults() qmnb = { {["memory"] = 32}, {["name"] = ""}, {["value"] = ";" .. kk[1] , ["type"] = 4}, {["lv"] = 0,["offset"] =-8, ["type"] = D,["freeze"] = false}, } qmxg= { {["value"] = 6,["offset"] =-4, ["type"] = D,["freeze"] = false}, {["value"] = "1,559,256,517",["offset"] =0, ["type"] = D,["freeze"] = false},--技能升级增加冷却 {["value"] = "1,428,444,140",["offset"] =4, ["type"] = D,["freeze"] = false},--冷却 {["value"] = "3,431,944",["offset"] =8, ["type"] = D,["freeze"] = false},--后摇 } xqmnb(qmnb) gg.clearResults() gg.clearResults() gg.alert("巅峰召唤师4编辑成功\n耗时:"..os.clock()-time.."秒") end function e() time=os.clock() gg.clearResults() gg.clearResults() qmnb = { {["memory"] = 32}, {["name"] = ""}, {["value"] = ";" .. kk[1] , ["type"] = 4}, {["lv"] = 0,["offset"] =-8, ["type"] = D,["freeze"] = false}, } qmxg= { {["value"] = 6,["offset"] =-4, ["type"] = D,["freeze"] = false}, {["value"] = "1,559,256,517",["offset"] =0, ["type"] = D,["freeze"] = false},--技能升级增加冷却 {["value"] = "1,428,444,140",["offset"] =4, ["type"] = D,["freeze"] = false},--冷却 {["value"] = "3,497,480",["offset"] =8, ["type"] = D,["freeze"] = false},--后摇 } xqmnb(qmnb) gg.clearResults() gg.clearResults() gg.alert("巅峰召唤师5编辑成功\n耗时:"..os.clock()-time.."秒") end function f() time=os.clock() gg.clearResults() gg.clearResults() qmnb = { {["memory"] = 32}, {["name"] = ""}, {["value"] = ";" .. kk[1] , ["type"] = 4}, {["lv"] = 0,["offset"] =-8, ["type"] = D,["freeze"] = false}, } qmxg= { {["value"] = 6,["offset"] =-4, ["type"] = D,["freeze"] = false}, {["value"] = "1,559,256,517",["offset"] =0, ["type"] = D,["freeze"] = false},--技能升级增加冷却 {["value"] = "1,428,444,140",["offset"] =4, ["type"] = D,["freeze"] = false},--冷却 {["value"] = "3,563,016",["offset"] =8, ["type"] = D,["freeze"] = false},--后摇 } xqmnb(qmnb) gg.clearResults() gg.clearResults() gg.alert("巅峰召唤师6编辑成功\n耗时:"..os.clock()-time.."秒") end function g() time=os.clock() gg.clearResults() gg.clearResults() qmnb = { {["memory"] = 32}, {["name"] = ""}, {["value"] = ";" .. kk[1] , ["type"] = 4}, {["lv"] = 0,["offset"] =-8, ["type"] = D,["freeze"] = false}, } qmxg= { {["value"] = 6,["offset"] =-4, ["type"] = D,["freeze"] = false}, {["value"] = "1,559,256,517",["offset"] =0, ["type"] = D,["freeze"] = false},--技能升级增加冷却 {["value"] = "1,428,444,140",["offset"] =4, ["type"] = D,["freeze"] = false},--冷却 {["value"] = "3,628,552",["offset"] =8, ["type"] = D,["freeze"] = false},--后摇 } xqmnb(qmnb) gg.clearResults() gg.clearResults() gg.alert("巅峰召唤师7编辑成功\n耗时:"..os.clock()-time.."秒") end function h() time=os.clock() gg.clearResults() gg.clearResults() qmnb = { {["memory"] = 32}, {["name"] = ""}, {["value"] = ";" .. kk[1] , ["type"] = 4}, {["lv"] = 0,["offset"] =-8, ["type"] = D,["freeze"] = false}, } qmxg= { {["value"] = 6,["offset"] =-4, ["type"] = D,["freeze"] = false}, {["value"] = "1,559,256,517",["offset"] =0, ["type"] = D,["freeze"] = false},--技能升级增加冷却 {["value"] = "1,428,444,140",["offset"] =4, ["type"] = D,["freeze"] = false},--冷却 {["value"] = "3,694,088",["offset"] =8, ["type"] = D,["freeze"] = false},--后摇 } xqmnb(qmnb) gg.clearResults() gg.clearResults() gg.alert("巅峰召唤师8编辑成功\n耗时:"..os.clock()-time.."秒") end function i() time=os.clock() gg.clearResults() gg.clearResults() qmnb = { {["memory"] = 32}, {["name"] = ""}, {["value"] = ";" .. kk[1] , ["type"] = 4}, {["lv"] = 0,["offset"] =-8, ["type"] = D,["freeze"] = false}, } qmxg= { {["value"] = 6,["offset"] =-4, ["type"] = D,["freeze"] = false}, {["value"] = "1,559,256,517",["offset"] =0, ["type"] = D,["freeze"] = false},--技能升级增加冷却 {["value"] = "1,428,444,140",["offset"] =4, ["type"] = D,["freeze"] = false},--冷却 {["value"] = "3,759,624",["offset"] =8, ["type"] = D,["freeze"] = false},--后摇 } xqmnb(qmnb) gg.clearResults() gg.clearResults() gg.alert("巅峰召唤师9编辑成功\n耗时:"..os.clock()-time.."秒") end function j() time=os.clock() gg.clearResults() gg.clearResults() qmnb = { {["memory"] = 32}, {["name"] = ""}, {["value"] = ";" .. kk[1] , ["type"] = 4}, {["lv"] = 0,["offset"] =-8, ["type"] = D,["freeze"] = false}, } qmxg= { {["value"] = 7,["offset"] =-4, ["type"] = D,["freeze"] = false}, {["value"] = "1,559,256,517",["offset"] =0, ["type"] = D,["freeze"] = false},--技能升级增加冷却 {["value"] = "1,428,444,140",["offset"] =4, ["type"] = D,["freeze"] = false},--冷却 {["value"] = "3,235,336",["offset"] =8, ["type"] = D,["freeze"] = false},--后摇 {["value"] = "48",["offset"] =12, ["type"] = D,["freeze"] = false},--后摇 } xqmnb(qmnb) gg.clearResults() gg.clearResults() gg.alert("巅峰召唤师10编辑成功\n耗时:"..os.clock()-time.."秒") end function Exit() print("绝尘") os.exit() end function xl(qmnb,qmxg)gg.setVisible(false)gg.clearResults()qmnbv=qmnb[3]["value"]or qmnb[3][1]qmnbt=qmnb[3]["type"]or qmnb[3][2]qmnbn=qmnb[2]["name"]or qmnb[2][1]gg.setRanges(qmnb[1]["memory"]or qmnb[1][1])gg.searchNumber(qmnbv,qmnbt)gg.refineNumber(qmnbv,qmnbt)sz=gg.getResultCount()if sz==0 then gg.toast(qmnbn.."开启失败")else sl=gg.getResults(999999)for i=1,sz do pdsz=true for v=4,#qmnb do if pdsz==true then pysz={{}}pysz[1].address=sl[i].address+(qmnb[v]["offset"]or qmnb[v][2])pysz[1].flags=qmnb[v]["type"]or qmnb[v][3]szpy=gg.getValues(pysz)tzszpd=tostring(qmnb[v]["lv"]or qmnb[v][1]):gsub(",","")pyszpd=tostring(szpy[1].value):gsub(",","")if tzszpd==pyszpd then pdjg=true pdsz=true else pdjg=false pdsz=false end end end if pdjg==true then szpy=sl[i].address for x=1,#qmxg do xgsz=qmxg[x]["value"]or qmxg[x][1]xgpy=szpy+(qmxg[x]["offset"]or qmxg[x][2])xglx=qmxg[x]["type"]or qmxg[x][3]xgdj=qmxg[x]["freeze"]or qmxg[x][4]xg={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xg[1].freeze=xgdj gg.addListItems(xg)else gg.setValues(xg)end end xgjg=true end end if xgjg==true then gg.toast(qmnbn.."开启成功")else gg.toast(qmnbn.."开启失败")end end end -- 【【 核心代码,不懂勿动 】】 -- JF Script编辑器 D=gg.TYPE_DWORD E=gg.TYPE_DOUBLE F=gg.TYPE_FLOAT W=gg.TYPE_WORD B=gg.TYPE_BYTE X=gg.TYPE_XOR Q=gg.TYPE_QWORD function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) xgsl = xgsl + 1 end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "开启成功,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启失败") end end end end while true do if gg.isVisible(true) then FX1 = nil gg.setVisible(false) end if FX1 == nil then XCC() gg.clearResults() gg.clearResults() end end string.toMusic('自定义巅峰赛开启成功') end ,--调用了前边定义的function,建议功能全部这样写,格式规整 ['关闭']=无 ,--无被我定义了空function },{ ['名字']='英雄编辑器', ['图片']='https://pan.baidu.re/view.php/58b8ffc11085fa9b5850ec5056b7f4da.jpg', ['开启']=function() function Format(tab, format, write, Function) if format == "查看" then return print(tab) elseif format == "修改" then local Table = {} for k, v in pairs(tab) do for kk, vv in pairs(write) do Table[#Table + 1] = { ["address"] = v["address"] + vv[2], ["flags"] = vv[3], ["value"] = vv[1] } end end return gg.setValues(Table) elseif format == "载入" then gg.loadResults(tab) elseif format == "冻结" then local Table = {} for k, v in pairs(tab) do for kk, vv in pairs(write) do Table[#Table + 1] = { ["address"] = v["address"] + vv[2], ["flags"] = vv[3], ["value"] = vv[1], ["freeze"] = true } end end return gg.addListItems(Table) end end function LSQ_type_conversion(txt, type1, type2) gg.allocatePage(gg.PROT_READ | gg.PROT_WRITE | gg.PROT_EXEC, 0x99999999) local Table = { { ["address"] = 0x99999999, ["flags"] = type1, ["value"] = txt } } local set = gg.setValues(Table) Table[1]["flags"] = type2 local get = gg.getValues(Table)[1]["value"] return get end function Get_value() if gg.getResultsCount() > 100000 then local result = {} local Table = {} while true do local Results = gg.getResults(100000) if not Results or #Results == 0 then break end result[#result + 1] = Results local remove = gg.removeResults(Results) end for k = 1, #result do for kk, vv in pairs(result[k]) do Table[#Table + 1] = vv end end return Table else return gg.getResults(gg.getResultsCount()) end end function Type_filtering(values) if string.find(values, ".") then start, v = string.match(values, "^(.-)%.(.)") value = string.format("%s.%s", start, v) return value else return values end end function LSQ_pointer(search, write, mode) if search[1][5] and search[1][6] then region_start = search[1][5] region_end = search[1][6] else region_start = 0 region_end = -1 end gg.clearResults() if search[1][2] == "16" and search[1][2] == "64" then local Value = LSQ_type_conversion(search[1][1], search[1][2], Q) gg.setRanges(search[1][3]) gg.searchNumber(Value, Q, false, gg.SIGN_EQUAL, region_start, region_end) gg.searchNumber(Value, Q, false, gg.SIGN_EQUAL, region_start, region_end) else gg.setRanges(search[1][3]) gg.searchNumber(search[1][1], search[1][2], false, gg.SIGN_EQUAL, region_start, region_end) gg.searchNumber(search[1][1], search[1][2], false, gg.SIGN_EQUAL, region_start, region_end) end if gg.getResultsCount() == 0 then gg.toast("没有搜索到指针数据") return false else local result = Get_value() gg.clearResults() for i = 2, #search do local offset_array = {} for k, v in ipairs(result) do offset_array[#offset_array + 1] = { ["address"] = v["address"] + search[i][2], ["flags"] = search[i][3] } end offset_array = gg.getValues(offset_array) local verify_array = {} for k, v in ipairs(offset_array) do if v["flags"] == 16 then v["value"] = Type_filtering(v["value"]) end if v["flags"] == 64 then v["value"] = Type_filtering(v["value"]) end if not string.find(search[i][1], "~") then if v["value"] == search[i][1] then verify_array[#verify_array + 1] = result[k] end else min, max = string.match(search[i][1], '^(.-)~(.-)$') min, max = tonumber(min), tonumber(max) if v["value"] >= min and v["value"] <= max then verify_array[#verify_array + 1] = result[k] end end end result = verify_array end if #result > 0 then Format(result, mode, write) return #result else return false end end end db=gg.getRangesList("dataCache.db")[1] if db==nil then gg.alert("请选择多点进程\n否则会无法检测到") else LGM=gg.prompt({"请输入英雄代码:"}, {"193"}, {"number"}) if LGM==nil then else if LGM[1]=="" then gg.alert("未输入英雄代码\n那你改大坝呀😅") else local Search_array = { {LGM[1],4,-2080896,"英雄编辑", db["start"], db["end"]}, {-1365066780,0x10,4}, } local Modifythe_array = {} local num = LSQ_pointer(Search_array, Modifythe_array,"载入") if gg.getResultCount() == 0 then gg.alert("英雄代码:"..LGM[1].."\n可能该英雄并未被王者更新\n请更换一个谢谢") else jg=gg.getResults(gg.getResultCount()) jasd=jg[1].address local y=gg.getValues({ [1]={address=jasd+0x48,flags=4,value=nil}, [2]={address=jasd+0x50,flags=4,value=nil}, [3]={address=jasd+0x54,flags=4,value=nil}, [4]={address=jasd+0x5C,flags=4,value=nil}, [5]={address=jasd+0x60,flags=4,value=nil}, [6]={address=jasd+0x64,flags=4,value=nil}, [7]={address=jasd+0x68,flags=4,value=nil}, [8]={address=jasd+0x70,flags=4,value=nil}, [9]={address=jasd+0x78,flags=4,value=nil}, [10]={address=jasd+0x7C,flags=4,value=nil}, [11]={address=jasd+0x80,flags=4,value=nil}, [12]={address=jasd+0x9C,flags=4,value=nil}, [13]={address=jasd+0xA0,flags=4,value=nil}, [14]={address=jasd+0xA4,flags=4,value=nil}, [15]={address=jasd+0xA8,flags=4,value=nil}, [16]={address=jasd+0xBC,flags=4,value=nil}, [17]={address=jasd+0xC0,flags=4,value=nil}, [18]={address=jasd+0xD0,flags=4,value=nil}, [19]={address=jasd+0xD4,flags=4,value=nil}, [20]={address=jasd+0xD8,flags=4,value=nil}, [21]={address=jasd+0xE4,flags=4,value=nil}, [22]={address=jasd+0xE8,flags=4,value=nil}, [23]={address=jasd+0xEC,flags=4,value=nil}, [24]={address=jasd+0xF8,flags=4,value=nil}, [25]={address=jasd+0xFC,flags=4,value=nil}, [26]={address=jasd+0x100,flags=4,value=nil}, [27]={address=jasd+0x10C,flags=4,value=nil}, [28]={address=jasd+0x110,flags=4,value=nil}, [29]={address=jasd+0x114,flags=4,value=nil}, [30]={address=jasd+0x128,flags=4,value=nil}, [31]={address=jasd+0x1F0,flags=4,value=nil}, [32]={address=jasd+0x1F8,flags=4,value=nil}, [33]={address=jasd+0x204,flags=4,value=nil}, }) gg.clearList() local YCY=gg.prompt({"英雄模型大小","英雄血量","每五秒回血","物理攻击","法术攻击","物理防御","法术防御","移速","攻速","暴击率","暴击效果","被动一","被动二","被动三","被动四","普攻","普攻被动","英雄一技能","英雄一技能被动","一技能是否学习","英雄二技能","英雄二技能效果","英雄二技能是否学习","英雄三技能","英雄三技能被动","英雄三技能是否学习","英雄四技能","英雄四技能被动","英雄四技能是否学习","英雄蓝条类型","英雄蓝量","升级加蓝","英雄死后放技能"},{y[1].value,y[2].value,y[3].value,y[4].value,y[5].value,y[6].value,y[7].value,y[8].value,y[9].value,y[10].value,y[11].value,y[12].value,y[13].value,y[14].value,y[15].value,y[16].value,y[17].value,y[18].value,y[19].value,y[20].value,y[21].value,y[22].value,y[23].value,y[24].value,y[25].value,y[26].value,y[27].value,y[28].value,y[29].value,y[30].value,y[31].value,y[32].value,y[33].value},{"number"}) if YCY==nil then return else local time=os.clock() gg.setValues({ {address=jasd+0x48,flags=4,value=YCY[1]}, {address=jasd+0x50,flags=4,value=YCY[2]}, {address=jasd+0x54,flags=4,value=YCY[3]}, {address=jasd+0x5C,flags=4,value=YCY[4]}, {address=jasd+0x60,flags=4,value=YCY[5]}, {address=jasd+0x64,flags=4,value=YCY[6]}, {address=jasd+0x68,flags=4,value=YCY[7]}, {address=jasd+0x70,flags=4,value=YCY[8]}, {address=jasd+0x78,flags=4,value=YCY[9]}, {address=jasd+0x7C,flags=4,value=YCY[10]}, {address=jasd+0x80,flags=4,value=YCY[11]}, {address=jasd+0x9C,flags=4,value=YCY[12]}, {address=jasd+0xA0,flags=4,value=YCY[13]}, {address=jasd+0xA4,flags=4,value=YCY[14]}, {address=jasd+0xA8,flags=4,value=YCY[15]}, {address=jasd+0xBC,flags=4,value=YCY[16]}, {address=jasd+0xC0,flags=4,value=YCY[17]}, {address=jasd+0xD0,flags=4,value=YCY[18]}, {address=jasd+0xD4,flags=4,value=YCY[19]}, {address=jasd+0xD8,flags=4,value=YCY[20]}, {address=jasd+0xE4,flags=4,value=YCY[21]}, {address=jasd+0xE8,flags=4,value=YCY[22]}, {address=jasd+0xEC,flags=4,value=YCY[23]}, {address=jasd+0xF8,flags=4,value=YCY[24]}, {address=jasd+0xFC,flags=4,value=YCY[25]}, {address=jasd+0x100,flags=4,value=YCY[26]}, {address=jasd+0x10C,flags=4,value=YCY[27]}, {address=jasd+0x110,flags=4,value=YCY[28]}, {address=jasd+0x114,flags=4,value=YCY[29]}, {address=jasd+0x128,flags=4,value=YCY[30]}, {address=jasd+0x1F0,flags=4,value=YCY[31]}, {address=jasd+0x1F8,flags=4,value=YCY[32]}, {address=jasd+0x204,flags=4,value=YCY[33]}, }) gg.alert("英雄编辑成功\n耗时"..os.clock()-time.."秒\nPowerd By.白翼") gg.clearList() end end end end end string.toMusic('英雄编辑成功') end , ['关闭']=无 , },{ ['名字']='回响之杖白翼已修改', ['图片']='https://cccimg.com/view.php/e7542290d8ff959843e09ed85833c388.jpg', ['开启']=function()--也可以直接写功能,就是看起来会很乱 gg.clearResults() gg.setRanges(-1032320) gg.searchNumber("2100;240;700", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("2100;240;700", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("0;3600;700", gg.TYPE_DWORD) gg.toast("回响修改成功") gg.clearResults() gg.toast('已开启') end , ['关闭']=function() gg.sleep(1000) gg.toast('已关闭') end, },{ ['名字']='网络随机', ['图片']='https://cccimg.com/view.php/5955694af4de81820d4939c6c318a94d.jpg', ['开启']=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 count = 400 -- 设置循环次数 local index = 1 -- 循环索引 while index <= count do -- 定义包含指定值的集合 local allowedValues = {100,360,460,120,46,96,43,376,131,52,99,111,64,36,76,88,460,361,32,76,50,71,72,73,74,75,76,77,79,30} -- 生成一个随机索引 local randomIndex = math.random(1, #allowedValues) -- 获取随机值 local randomValue = allowedValues[randomIndex] gg.sleep(200) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x499740, 0xB8, 0x100, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x499740, 0xB8, 0x100, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x49B680, 0xB8, 0xD0, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x49B680, 0xB8, 0xD0, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x49CBC0, 0xB8, 0x10, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x49CBC0, 0xB8, 0x10, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x49F100, 0xB8, 0xC0, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x49F100, 0xB8, 0xC0, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x4E8740, 0xB8, 0x0, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x4E8740, 0xB8, 0x0, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x4E8980, 0xB8, 0x10, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x4E9740, 0xB8, 0x80, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x4E9740, 0xB8, 0x80, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x4EA740, 0xB8, 0x60, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x4EA740, 0xB8, 0x60, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x4EC340, 0xB8, 0xE0, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x4ECD20, 0xB8, 0x90, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x4ECD20, 0xB8, 0x90, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x4ECDE0, 0xB8, 0x60, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x500EA0, 0xB8, 0x0, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x502CC0, 0xB8, 0x70, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB57A70, 0xB8, 0x100, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB57A70, 0xB8, 0x100, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB58240, 0xB8, 0xD0, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB58240, 0xB8, 0xD0, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB58790, 0xB8, 0x10, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB58790, 0xB8, 0x10, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB590E0, 0xB8, 0xC0, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB590E0, 0xB8, 0xC0, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB61620, 0xB8, 0x0, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB61620, 0xB8, 0x0, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB61698, 0xB8, 0x10, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB61A00, 0xB8, 0x80, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB61A00, 0xB8, 0x80, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB61E00, 0xB8, 0x60, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB61E00, 0xB8, 0x60, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB62478, 0xB8, 0xE0, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB626C0, 0xB8, 0x90, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB626C0, 0xB8, 0x90, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB626F0, 0xB8, 0x60, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB6B820, 0xB8, 0x50, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB6C2D0, 0xB8, 0xB0, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB6C2D0, 0xB8, 0xB0, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB6F8D8, 0xB8, 0x20, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB6F8D8, 0xB8, 0x20, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB7BBF8, 0xB8, 0xF0, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB7DC00, 0xB8, 0x80, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB7EB98, 0xB8, 0x50, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB7EB98, 0xB8, 0x50, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB81798, 0xB8, 0xB0, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB81FB8, 0xB8, 0x100, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB8A3D8, 0xB8, 0xA0, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB8AF98, 0xB8, 0xD0, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB8BE78, 0xB8, 0xC0, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB94840, 0xB8, 0x20, 0x20, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xCA6708, 0xB8, 0x70, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xCA6708, 0xB8, 0x70, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xD9AC50, 0xB8, 0x70, 0xA0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xD9AC50, 0xB8, 0x70, 0xC0, 0xA8, 0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = randomValue, freeze = true}}) index = index + 1 -- 增加索引值 end end , ['关闭']=无 , },{ ['名字']='国标铠', ['图片']='https://pan.szfx.top/view.php/76e729f7c6b43a8b06d6b69a5e452217.jpg', ['开启']=function()--也可以直接写功能,就是看起来会很 local gg = gg local gg, string = gg, string ----------内存简化配置参考区---------- Jh = gg.REGION_JAVA_HEAP--Jh 内存 Ch = gg.REGION_C_HEAP--Ch 内存 Ca = gg.REGION_C_ALLOC--Ca 内存 Cd = gg.REGION_C_DATA--Cd 内存 Cb = gg.REGION_C_BSS--Cb 内存 PS = gg.REGION_PPSSPP--PS 内存 A = gg.REGION_ANONYMOUS--A 内存 J = gg.REGION_JAVA--J 内存 S = gg.REGION_STACK--S 内存 As = gg.REGION_ASHMEM--As 内存 V = gg.REGION_VIDEO--V 内存 O = gg.REGION_OTHER--O 内存 BAD = gg.REGION_BAD--B 内存 Xa = gg.REGION_CODE_APP--Xa 内存 Xs = gg.REGION_CODE_APP--Xs 内存 ----------类型简化配置参考区---------- AU = gg.TYPE_AUTO--A类型搜索 D = gg.TYPE_DWORD--D类型搜索 F = gg.TYPE_FLOAT--F类型搜索 E = gg.TYPE_DOUBLE--E类型搜索 W = gg.TYPE_WORD--W类型搜索 B = gg.TYPE_BYTE--B类型搜索 Q = gg.TYPE_QWORD--Q类型搜索 X = gg.TYPE_XOR--X类型搜索 --优化gg.getValues搜索列表值过多时,导致gg卡死 function Get_value() local result = {} local Table = {} while true do local get = gg.getResults(100000) result[#result + 1] = get gg.removeResults(get)--然后移除列表,避免gg卡死 if not get or #get == 0 then break end end for k = 1, #result do for k, v in pairs(result[k]) do Table[#Table + 1] = v end end return Table end function LSQ_pointer(search, write) if search[5] or search[6] then local region_start = search[5] local region_end = search[6] else local region_start = 0 local region_end = -1 end gg.clearResults() gg.setRanges(search[1][3]) gg.searchNumber(search[1][1], search[1][2], false, gg.SIGN_EQUAL, region_start, region_end) gg.refineNumber(search[1][1], search[1][2], false, gg.SIGN_EQUAL, region_start, region_end)--优化搜索的数据 if gg.getResultsCount() == 0 then gg.toast("没有搜索到指针数据") return false else local result = Get_value()--获取搜索到的所有数据 gg.clearResults() for i = 2, #search do--遍历副特征码数据 local offset_array = {}--存放偏移数组的表 for k, v in ipairs(result) do offset_array[#offset_array + 1] = { ["address"] = v["address"] + search[i][2],--把所有搜索出来的结果, 加上偏移量 ["flags"] = search[i][3] } end offset_array = gg.getValues(offset_array)--获取所有副特征数据 local verify_array = {}--验证数组表 for k, v in ipairs(offset_array) do--遍历偏移后的数据 if v["value"] == search[i][1] then--如果值等于主特征 verify_array[#verify_array + 1] = result[k] end end result = verify_array end if #result > 0 then local Table = { {}, {} } for k, v in ipairs(result) do for kk, vv in ipairs(write) do local Modifythe_array = { ["address"] = v["address"] + vv[2], ["flags"] = vv[3], ["value"] = vv[1], ["freeze"] = vv[4] } if vv[4] then Table[2][#Table[2] + 1] = Modifythe_array else Table[1][#Table[1] + 1] = Modifythe_array end end end gg.addListItems(Table[2]) gg.setValues(Table[1]) gg.toast("功能: [" .. search[1][4] .. "]开启成功共修改" .. (#Table[1] + #Table[2]) .. "条数据") else gg.toast("未找到偏移数据") end end end local Search_array = { {193, D, A, "测试"}, {1, -0x4, D}, {3, -0x20, D}, } local Modifythe_array = { {4, -0x20, D}, {1, -0x1c, D}, } LSQ_pointer(Search_array, Modifythe_array) string.toMusic('凯国标开启成功') end , ['关闭']=无 , },{ ['名字']='墨子国标', ['图片']='https://pan.szfx.top/view.php/76e729f7c6b43a8b06d6b69a5e452217.jpg', ['开启']=function()--也可以直接写功能,就是看起来会很 local gg = gg local gg, string = gg, string ----------内存简化配置参考区---------- Jh = gg.REGION_JAVA_HEAP--Jh 内存 Ch = gg.REGION_C_HEAP--Ch 内存 Ca = gg.REGION_C_ALLOC--Ca 内存 Cd = gg.REGION_C_DATA--Cd 内存 Cb = gg.REGION_C_BSS--Cb 内存 PS = gg.REGION_PPSSPP--PS 内存 A = gg.REGION_ANONYMOUS--A 内存 J = gg.REGION_JAVA--J 内存 S = gg.REGION_STACK--S 内存 As = gg.REGION_ASHMEM--As 内存 V = gg.REGION_VIDEO--V 内存 O = gg.REGION_OTHER--O 内存 BAD = gg.REGION_BAD--B 内存 Xa = gg.REGION_CODE_APP--Xa 内存 Xs = gg.REGION_CODE_APP--Xs 内存 ----------类型简化配置参考区---------- AU = gg.TYPE_AUTO--A类型搜索 D = gg.TYPE_DWORD--D类型搜索 F = gg.TYPE_FLOAT--F类型搜索 E = gg.TYPE_DOUBLE--E类型搜索 W = gg.TYPE_WORD--W类型搜索 B = gg.TYPE_BYTE--B类型搜索 Q = gg.TYPE_QWORD--Q类型搜索 X = gg.TYPE_XOR--X类型搜索 --优化gg.getValues搜索列表值过多时,导致gg卡死 function Get_value() local result = {} local Table = {} while true do local get = gg.getResults(100000) result[#result + 1] = get gg.removeResults(get)--然后移除列表,避免gg卡死 if not get or #get == 0 then break end end for k = 1, #result do for k, v in pairs(result[k]) do Table[#Table + 1] = v end end return Table end function LSQ_pointer(search, write) if search[5] or search[6] then local region_start = search[5] local region_end = search[6] else local region_start = 0 local region_end = -1 end gg.clearResults() gg.setRanges(search[1][3]) gg.searchNumber(search[1][1], search[1][2], false, gg.SIGN_EQUAL, region_start, region_end) gg.refineNumber(search[1][1], search[1][2], false, gg.SIGN_EQUAL, region_start, region_end)--优化搜索的数据 if gg.getResultsCount() == 0 then gg.toast("没有搜索到指针数据") return false else local result = Get_value()--获取搜索到的所有数据 gg.clearResults() for i = 2, #search do--遍历副特征码数据 local offset_array = {}--存放偏移数组的表 for k, v in ipairs(result) do offset_array[#offset_array + 1] = { ["address"] = v["address"] + search[i][2],--把所有搜索出来的结果, 加上偏移量 ["flags"] = search[i][3] } end offset_array = gg.getValues(offset_array)--获取所有副特征数据 local verify_array = {}--验证数组表 for k, v in ipairs(offset_array) do--遍历偏移后的数据 if v["value"] == search[i][1] then--如果值等于主特征 verify_array[#verify_array + 1] = result[k] end end result = verify_array end if #result > 0 then local Table = { {}, {} } for k, v in ipairs(result) do for kk, vv in ipairs(write) do local Modifythe_array = { ["address"] = v["address"] + vv[2], ["flags"] = vv[3], ["value"] = vv[1], ["freeze"] = vv[4] } if vv[4] then Table[2][#Table[2] + 1] = Modifythe_array else Table[1][#Table[1] + 1] = Modifythe_array end end end gg.addListItems(Table[2]) gg.setValues(Table[1]) gg.toast("功能: [" .. search[1][4] .. "]开启成功共修改" .. (#Table[1] + #Table[2]) .. "条数据") else gg.toast("未找到偏移数据") end 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 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']=16}, {['name']='测试'}, {['value']=16384, ['type']=4}, {['lv']=16384,['offset']=48, ['type']=4}, {['lv']=16384,['offset']=96, ['type']=4}, {['lv']=16384,['offset']=144, ['type']=4}, } local qmxg= { {['value']=256,['offset']=48,['type']=4}, } xqmnb(qmnb,qmxg) local Search_array = { {108, D, A, "测试"}, {1, -0x4, D}, {1, -0x20, D}, } local Modifythe_array = { {4, -0x20, D}, {1, -0x1c, D}, } string.toMusic('墨子国标修改成功') end , ['关闭']=无 , }, }), } }, } 第二页 = { ['分页名字']="宇宙服区域", [1]={--第一分区 ['分区名字']="宇宙服功能", ['功能配置']={ 勾选1({--样式1 { ['名字']='后羿大招360度', ['图片']='https://pan.baidu.re/view.php/8063e2d565715f448c7655107694843e.jpg', ['开启']=function()--也可以直接写功能,就是看起来会很乱 function editData(qmnb,qmxg)gg.setVisible(false)gg.clearResults()qmnbv=qmnb[3]["value"]or qmnb[3][1]qmnbt=qmnb[3]["type"]or qmnb[3][2]qmnbn=qmnb[2]["name"]or qmnb[2][1]gg.setRanges(qmnb[1]["memory"]or qmnb[1][1])gg.searchNumber(qmnbv,qmnbt)gg.refineNumber(qmnbv,qmnbt)sz=gg.getResultCount()if sz==0 then gg.toast(qmnbn.."开启失败")else sl=gg.getResults(999999)for i=1,sz do pdsz=true for v=4,#qmnb do if pdsz==true then pysz={{}}pysz[1].address=sl[i].address+(qmnb[v]["offset"]or qmnb[v][2])pysz[1].flags=qmnb[v]["type"]or qmnb[v][3]szpy=gg.getValues(pysz)tzszpd=tostring(qmnb[v]["lv"]or qmnb[v][1]):gsub(",","")pyszpd=tostring(szpy[1].value):gsub(",","")if tzszpd==pyszpd then pdjg=true pdsz=true else pdjg=false pdsz=false end end end if pdjg==true then szpy=sl[i].address for x=1,#qmxg do xgsz=qmxg[x]["value"]or qmxg[x][1]xgpy=szpy+(qmxg[x]["offset"]or qmxg[x][2])xglx=qmxg[x]["type"]or qmxg[x][3]xgdj=qmxg[x]["freeze"]or qmxg[x][4]xg={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xg[1].freeze=xgdj gg.addListItems(xg)else gg.setValues(xg)end end xgjg=true end end if xgjg==true then gg.toast(qmnbn.."开启成功")else gg.toast(qmnbn.."开启失败")end end end -- 【【 核心代码,不懂勿动 】】 -- JF Script编辑器 D=gg.TYPE_DWORD E=gg.TYPE_DOUBLE F=gg.TYPE_FLOAT W=gg.TYPE_WORD B=gg.TYPE_BYTE X=gg.TYPE_XOR Q=gg.TYPE_QWORD 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']=4}, {['name']='后羿数量'}, {['value']=-1107348179, ['type']=4}, {['lv']=-1379492945,['offset']=4, ['type']=4}, } local qmxg= { {['value']=200,['offset']=88,['type']=4}, } xqmnb(qmnb,qmxg) local qmnb= { {['memory']=4}, {['name']='后羿便宜'}, {['value']=15000, ['type']=4}, {['lv']=360,['offset']=-16, ['type']=4}, } local qmxg= { {['value']=1,['offset']=76,['type']=4}, {['value']=1,['offset']=84,['type']=4}, {['value']=1,['offset']=88,['type']=4}, {['value']=1,['offset']=92,['type']=4}, } xqmnb(qmnb,qmxg) string.toMusic('后羿大招360开启成功') end ,--调用了前边定义的function,建议功能全部这样写,格式规整 ['关闭']=无 ,--无被我定义了空function },{ ['名字']='小乔一技能360度', ['图片']='https://pan.baidu.re/view.php/2c330ad6577c9654e7382f5a4a12ea4f.jpg', ['开启']=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']=4}, {['name']='小乔数量'}, {['value']=1742427355, ['type']=4}, {['lv']=1055260444,['offset']=-4, ['type']=4}, {['lv']=263671572,['offset']=244, ['type']=4}, } local qmxg= { {['value']=500,['offset']=84,['type']=4}, } xqmnb(qmnb,qmxg) local qmnb= { {['memory']=4}, {['name']='小乔360'}, {['value']=858, ['type']=4}, {['lv']=360,['offset']=100, ['type']=4}, } local qmxg= { {['value']=20000,['offset']=120,['type']=4}, {['value']=1,['offset']=192,['type']=4}, {['value']=1,['offset']=200,['type']=4}, {['value']=1,['offset']=204,['type']=4}, {['value']=1,['offset']=208,['type']=4}, } xqmnb(qmnb,qmxg) local qmnb= { {['memory']=4}, {['name']='数量'}, {['value']=1055260444, ['type']=4}, {['lv']=1742427355,['offset']=4, ['type']=4}, } local qmxg= { {['value']=200,['offset']=88,['type']=4}, } xqmnb(qmnb,qmxg) string.toMusic('小乔一技能开启成功') end , ['关闭']=function() end, },{ ['名字']='自定义英雄自身等级', ['图片']='https://pan.baidu.re/view.php/6c7b7186f1f2ba60c2986d578bc7c3cc.jpg', ['开启']=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 t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end --上面配置不要动 function Main() SN=gg.choice({ "自定义英雄等级", "退出脚本", },2018,"作者白翼") if SN==1 then A() end if SN==2 then Exit() end FX1=0 end function A() a = gg.prompt({"请输入想要的等级"},{[1]="默认1"},{[1]="number"})[1] local t = {"libGameCore.so:bss", "Cb"} local tt = {0x1E2F0, 0x0, 0x660, 0x8C0, 0xB20} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = (a-1)*8192},{address = ttt+0x4, flags = 4, value = 1000},{address = ttt+0x8, flags = 4, value = 1000},{address = ttt+0xC, flags = 4, value = 1000},}) gg.alert("30s后开始刷新自身等级\n等级注入成功\nPowered by.阿北") end function Exit() print("白翼") os.exit() end while true do if gg.isVisible(true) then FX1 = nil gg.setVisible(false) end if FX1 == nil then Main() end end string.toMusic('自定义等级开启成功') end ,--调用了前边定义的function,建议功能全部这样写,格式规整 ['关闭']=无 ,--无被我定义了空function },{ ['名字']='血魔全属性', ['图片']='https://pan.baidu.re/view.php/7325afbecd5ba0c6a74b92e27cff1b16.jpg', ['开启']=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']=-2080896}, {['name']='全属性血魔'}, {['value']=16063232, ['type']=4}, {['lv']=1260,['offset']=-8, ['type']=4}, } local qmxg= { {['value']=0,['offset']=-40,['type']=4}, {['value']=9999,['offset']=20,['type']=4}, {['value']=9999,['offset']=24,['type']=4}, {['value']=9999,['offset']=28,['type']=4}, {['value']=9999,['offset']=32,['type']=4}, {['value']=9999,['offset']=36,['type']=4}, {['value']=9999,['offset']=40,['type']=4}, {['value']=9999,['offset']=44,['type']=4}, {['value']=9999,['offset']=48,['type']=4}, {['value']=9999,['offset']=52,['type']=4}, {['value']=9999,['offset']=56,['type']=4}, {['value']=9999,['offset']=60,['type']=4}, {['value']=9999,['offset']=64,['type']=4}, {['value']=9999,['offset']=68,['type']=4}, {['value']=9999,['offset']=72,['type']=4}, {['value']=9999,['offset']=76,['type']=4}, } xqmnb(qmnb,qmxg) string.toMusic('全属性血魔开启成功') end , ['关闭']=function() end, },{ ['名字']='橘右京一技能局外', ['图片']='https://pan.baidu.re/view.php/fc2af4469247e60f18cb155dd9e10176.jpg', ['开启']=function()--也可以直接写功能,就是看起来会很乱 function fastsearch(search,write) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) time=os.clock() gg.searchNumber(search[1][1],search[1][2],false,gg.SlGN_EQUAL,0,-1) if gg.getResultsCount() == 0 then gg.toast("未搜索到主特征码") return false else local result = gg.getResults(gg.getResultsCount()) gg.clearResults() for i = 2,#search do local mtp = {} for w,r in ipairs(result) do mtp[#mtp + 1] = { address = r.address + search[i][2],flags = search[i][3] } end mtp = gg.getValues(mtp) local hook = {} for w,r in ipairs(mtp) do if r.value == search[i][1] then hook[#hook + 1] = result[w] end end result = hook end if #result > 0 then local tb = {{},{}} for i,v in ipairs(result) do --- 遍历每个结果 for _,vv in ipairs(write) do local p = {address = v.address + vv[2],flags = vv[3],value = vv[1],freeze = vv[4]} if vv[4] then --- true 就是冻结 table.insert(tb[2],p) else table.insert(tb[1],p) end end end gg.addListItems(tb[2]) gg.setValues(tb[1]) gg.toast(name.."已解析\n共解析" .. (#tb[1] + #tb[2]) .. "条数据\n耗时"..os.clock()-time.."秒") else gg.toast("解析失败") end end end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end --快搜指针配置-- function Main() SN=gg.choice({ "橘右京风火轮①", "橘右京风火轮②", "退出脚本", },2018,"作者阿北\n交流群833035874") if SN==1 then A() end if SN==2 then B() end if SN==3 then Exit() end FX1=0 end function A() local t = {"libGameCore.so:bss", "Cb"} local tt = {0x13D418, 0x308, 0x788} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = 11330}})--别问为什么局外不是全基址因为就是会10%损坏懒得整 name="橘右京陀螺1" fastsearch({ {11330, 4, -2080896}, {6000, 0x4, 4},{11306,-0x8,4} }, { {-241108919, 0x20, 4, false},{105703168,0x24,4,false},{0,0x4,4,false} }) end function B() name="移动释放1" fastsearch({ {-1331480591, 4, -2080896}, {0, 8, 4},{0,0xC,4},{1100,-0x8,4} }, { {1, -0x8, 4, false} }) name="移动释放2" fastsearch({ {-15200, 4, -2080896}, {-4000, -0x24, 4}, }, { {0, 0, 4, false} }) end function Exit() print("白翼") os.exit() end while true do if gg.isVisible(true) then FX1 = nil gg.setVisible(false) end if FX1 == nil then Main() end end string.toMusic('陀螺开启成功') end , ['关闭']=无 , },{ ['名字']='功能例子4', ['图片']='https://rl-1303126286.cos.ap-beijing-fsi.myqcloud.com/arlogo', ['开启']=例子1 , ['关闭']=无 , }, }), } }, } string.toMusic('仙界设置') 第四页 = { ['分页名字']="仙界设置", [1]={--第一分区 ['分区名字']="设置", ['功能配置']={ changan.button( "选择进程", function() gg.setProcessX() string.toMusic('请选择进程') end), changan.button( "入驻仙界", function() qq.joinGroup(190064664) string.toMusic('进入官方群有事找群主') --app.openUrl('http://www.baidu.com')---tg链接 end), changan.button( "退出仙界", function() string.toMusic('已退出仙界') tuichu=1 end), changan.button( "防资源检测(必须开)", function() function Sear(search,write,xglx) if search[1][5]==nil or search[1][6]==nil then search[1][5]=0 search[1][6]=-1 end gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) time=os.clock() gg.searchNumber(search[1][1],search[1][2],false,gg.SlGN_EQUAL,search[1][5],search[1][6]) if gg.getResultsCount()==0 then gg.toast("未搜索到主特征码")return false else local result=gg.getResults(gg.getResultsCount()) gg.clearResults() for i=2,#search do local mtp={} for w,r in ipairs(result)do mtp[#mtp+1]={address=r.address+search[i][2],flags=search[i][3]} end mtp=gg.getValues(mtp) local hook={} for w,r in ipairs(mtp)do if r.value==search[i][1]then hook[#hook+1]=result[w] end end result=hook end if #result>0 then local tb={{},{}} for i,v in ipairs(result)do for _,vv in ipairs(write)do local p={address=v.address+vv[2],flags=vv[3],value=vv[1]} if vv[4]then table.insert(tb[1],p) else table.insert(tb[1],p) end if xglx=="冻结"then ts="冻结" gg.addListItems({{address=v.address+vv[2],flags=vv[3],value=vv[1],freeze=true}}) gg.clearList() end end end if xglx=="修改"then ts="修改" gg.setValues(tb[1]) end if xglx=="载入"then ts="载入" gg.loadResults(tb[1]) end gg.toast(search[1][4].."已"..ts.."\n共"..ts..(#tb[1]+#tb[2]).."条数据\n耗时"..os.clock()-time.."秒")else gg.alert(search[1][4]..ts.."失败") end end end --别问咋来的 模糊出来的 Sear({{-787807233,4,16384,"资源损坏"},{960688808,0x8,4}},{{1384120352,-0x1C,4},{-698416192,-0x18,4}},"修改") string.toMusic('资源检测开启成功') end), changan.button( "查看仙界更新日志", function() string.toMusic('7月5号晚上2点更新内容1.加英雄编辑器2.加语音包3.加橘右京陀螺') gg.alert('7月5号晚上2点更新内容1.加英雄编辑器2.加语音包3.加橘右京陀螺') end), changan.button( "查看英雄代码", function() string.toMusic('以下是英雄的代码可配合改皮肤使用') local knm={ "108墨子","109妲己","110嬴政","111孙尚香","112鲁班七号","113庄周","114刘禅","105廉颇","106小乔","107赵云","115高渐离","116阿轲","117钟无艳","118孙膑","119扁鹊","120白起","121芈月","122诸葛亮(旧版)","123吕布","124周瑜","125元歌","126夏侯惇","127甄姬","128曹操","129典韦","130宫本武藏","131李白","132马克波罗(旧)","133狄仁杰","134达摩","135项羽","136武则天","137司马懿","139孔夫子","140关羽","141貂蝉","142安琪拉","143安绿山","144程咬金","146露娜","148姜子牙","149刘邦","150韩信","152王昭君","153兰陵王","154花木兰","155艾琳","156张良(旧)","157不知火舞","158八神庵","162娜可露露","168牛魔","169后羿","170刘备","171张飞","173李元芳","174虞姬","175钟馗","176杨玉环","177成吉思汗","178杨戬","179女娲","180哪吒","182干将莫邪(旧)","183雅典娜","163橘右京","166亚瑟王","167孙悟空","184蔡文姬","186太乙真人","187东皇太一","189鬼谷子","190诸葛亮","222徐福","225元歌(傀儡)","240觉醒关羽","241金龙","242黑龙","243红龙","244绿龙","254花木兰(重剑)","237司马懿","305廉颇(改版)","310嬴政","312沈梦溪","330宫本武藏(强化)","332马可波罗","333马可波罗(测试)","346露娜(改版)","355艾琳(改版)","356张良","366亚瑟(改版)","378杨戬(改版)","191大乔","192黄忠","193铠","194苏烈","195百里玄策","196百里守约","197奕星","198梦奇","199公孙离","207封王","382干将","501明世隐","502裴擒虎","503狂铁","504米莱迪","505瑶","506云中君","507李信","508伽罗","509盾山","510孙策","511猪八戒","512囚徒","513上官婉儿","515嫦娥","516舜","531镜","532镜分身","533阿骨朵","536夏洛特","537司空震","538云樱","619Zombie","620韩信","621庄周","630宫本武藏(改版强化)","654母僵尸","518马超","520少司命","522耀","523西施","524蒙犽","525鲁班大师","526王翦","527蒙恬","528澜","529盘古","530宫本武藏(改版)","668Zombie","675Zombie","687Zombie","700坦克轮子","701坦克炮管","716Zombie","732马可波罗(旧)","733刘备(旧)","770暴君","771主宰(英雄)","772暴君3v3(英雄)","773年兽(英雄)","2025暴君3v3","2068暴君","2145主宰","4010变身大乱斗","41150抢鲲大乱斗","20001经典1v1","20002经典3v3","20009火焰山","20011经典5V5","20013无限火力","20099无塔1v1","20999无塔5v5","20012克隆大乱斗","20015迷雾模式","20016荣耀峡谷","20017无限乱斗","20018实战训练","20028五军对决","20040实战模拟","20041实战模拟","20071抢鲲模式","20072强化模式","20080快跑模式","20090模拟战单人","20091模拟战单人排位","20092模拟战双人","20093模拟战双人排位","20094模拟战单人-大乱斗","20095模拟战单人-大乱斗2","20096模拟战单人匹配","20097模拟战双人匹配","20098新手关","20099模拟战单人-快速赛","20100模拟战-单人-天元赛","20111征召模式(竞技地图)","20151CS模式(竞技地图)","20999死斗模式","21000蓝图教学-刷怪(地图)","21001蓝图教学-运算(地图)","20900激光炮","80101监视","80102治疗","80103晕眩","80104惩戒","80105干扰80111振奋","80112月之守护","80114吹飞","80115闪现","80116寒冰惩戒","80117传送","80121弱化","80122PVE闪现","80106隐遁","80107净化","80108斩杀","80109疾跑","80110狂暴80201火球","81102坚定意志","81107不灭信仰","81109奔狼号令","81110幽梦之息","81112时光凝滞","攻速上限代码","163840000;32768000","3D视角","1097285734上帝视角"," 1081006571;-1082125398;-1082130432;1088838298::37","改善","-1082130432","改","-1071644672911000~911500(装备被动)","4010000~4010030黑暗暴君技能","4010100~4010140暗影主宰技能","4010200~4010230暴君3v3技能","4010300~4010330年兽技能5000;1000;160;500盾山全图","2070;4000;2000;500;0真正影刃","15000复活时间","12000防御塔范围","9000;1400;16000钟馗范围","4000;1000小乔击飞","5000;10000;5000;8000宫本武藏大招","3500;1000;5000马超","4500;20000公孙离位移","10000;4000;7000橘右京大招范围新技能代码:","兵线近战小兵普攻第一击:10000","兵线近战小兵普攻第二击:10001","兵线法师小兵普攻:10002","兵线法师小兵普攻²:10003","新风格兵线近战小兵普攻第一击:10010","新风格兵线近战小兵普攻第二击:10011","新风格兵线法师普攻:10012","新风格兵线法师普攻²:10013","新风格兵线炮车普攻第一击:10014","新风格兵线炮车普攻第二击:10015","新风格超级兵第一击:10016","新风格超级兵第二击:10017","新风格兵线近战枪兵普攻第一击:10018","新风格兵线近战枪兵普攻第二击:10019【旧版诸葛亮技能】","运筹帷幄:12200","卧龙东风:12210","谋略法球:12220","八卦阵列:12230【英雄:安禄山】","一技能:14310","二技能:14320","三技能:14330","【旧版张良】","言灵·咒印:15600","言灵·壁垒:15610","言灵·侵蚀:15620","言灵·操纵:15630【英雄:八神庵】","被动:15800~15804","一技能:15810","二技能:15820","三技能:15830","【未知】","W:15110","E:15120","R:15130近战斧头普攻:20000","满屏寻敌近战斧头:20001","野怪法师小兵普攻:20002","满屏寻敌法师小怪普攻:20003","小刀普攻第一击:20020","小刀普攻第二击:20021","满屏寻敌小刀第一击:20022","满屏寻敌小刀第二击:20023","泰迪熊-普攻:20030","满屏寻敌泰迪熊普攻:20031","狼普攻第一击:20040","狼普攻第二击:20041","满屏寻敌狼普攻第一击:20042","满屏寻敌狼普攻第二击:20043","枪兵普攻第一击:20050","枪兵普攻第二击:20051","枪兵普攻第三击:20052","满屏寻敌枪兵普攻第一击:20053","满屏寻敌枪兵普攻第二击:20054","满屏寻敌枪兵普攻第三击:20055","莽哥普攻第一击:20060","莽哥普攻第二击:20061","满屏寻敌莽哥普攻第一击:20062","满屏寻敌莽哥普攻第二击:20063","弓贼普攻:20070","满屏寻敌弓贼普攻:20071","弓贼普攻第二击:20072","新手僵尸普攻第一击:20080","新手僵尸普攻第二击:20081","红色机器人第一击:20090","红色机器人第二击:20091","蓝色机器人第一击:20092","蓝色机器人第二击:20093","熊猫第一击:20100","熊猫第二击:20101","木猫工匠第一击:20110","木猫工匠第二击:20111","算命人普攻:20120","金鱼普攻:20130","白鹿第一击:20140","白鹿第二击:20141","卖萌傀儡机器人第一击:20150","卖萌傀儡机器人第二击:20151","助手机器人第一击:20152","助手机器人第二击:20153","炮车普攻:20160","炮车普攻²:20161","迅捷机器人第一击:20170","迅捷机器人第二击:20171","自爆机关第一击:20172","自爆机关第二击:20173","主宰先锋大龙兵攻击:20174","主宰先锋大龙兵对箭塔霜冻吐息:20175","测试用机器人第一击_物理:20176","测试用机器人第二击_法术:20177","三国军官第一击:20180","三国军官第二击:20181","宝箱怪第一击:20190","宝箱怪第二击:20191","三国枪兵第一击:20200","三国枪兵第二击:20201","三国力士第一击:20210","三国力士第二击:20211","三国刀兵第一击:20220","三国刀兵第二击:20221","暗影大将第一击:20230","暗影大将第二击:20231","暗影先锋普攻第一击:20240","暗影先锋普攻第二击:20241","怒Boss普攻第一击:20250","怒Boss普攻第二击:20251","怒Boss_冲击波_流星雨:20252","怒Boss_震天一怒_震地:20253","奸商普攻第一击:20260","奸商普攻第二击:20261","小学徒普攻第一击:20270","小学徒普攻第二击:20271","小学徒恢复技能:20272","间谍第一击:20280","间谍第二击:20281","逃杀暗影法师普攻第一击:20292","杀手第一击:20300","杀手第二击:20301","机关师普攻第一击:20310","机关师普攻第二击:20311","三国弓箭手普攻第一击:20320","三国弓箭手普攻第二击:20321","高级间谍第一击:20330","暗影法师普攻第一击:20290","暗影法师普攻第二击:20291高级间谍第二击:20331","沙狼第一击:20340","沙狼第二击:20341","魂之怪第一击:20342","马蜂第一击:20350","马蜂第二击:20351","蝎子第一击:20360","蝎子第二击:20361","蝴蝶普攻第一击:20370","蝴蝶普攻第二击:20371","机关女仆普攻第一击:20380","机关女仆普攻第二击:20381","僵尸长矛手普攻第一击:20390","僵尸长矛手普攻第二击:20391","船夫普攻第一击:20400","船夫普攻第二击:20401","舞娘普攻第一击:20410","舞娘普攻第二击:20411","舞娘恢复技能:20412","钟渐高舞娘恢复技能:20413","女将军普攻第一击:20420","女将军普攻第二击:20421","石巨人普攻第一击:20430","石巨人普攻第二击:20431","石巨人普攻第二击²:20432","炎巨人普攻第一击:20440","炎巨人普攻第二击:20441","秦王女仆普攻第一击:20450","秦王女仆普攻第二击:20451关羽_冲锋状态_被动:24000","关羽_冲锋状态_一技能:24010","关羽_冲锋状态_二技能:24020","关羽_冲锋状态_三技能:24030都府区_高级怪_南瓜锤胖子:25200~25202湮灭之眼Boss普攻第一击:25300","湮灭之眼Boss普攻第二击:25301","湮灭之眼Boss_冲击波_砂爆:25302","湮灭之眼Boss_震天一怒_砂爆送葬:25303","花木兰_重剑_被动:25400~25402","花木兰_重剑_一技能:25410~25416","花木兰_重剑_二技能:25420","花木兰_重剑_三技能:25430未知:30010","未知²:30020","旋风斩:30030","冲锋:30040","未知³:30050","未知⁴:30060","未知⁵:30070","未知*:30080","未知⁷:30090","强力治疗术:30100","群体治疗术:30110","机关师-秘法球:30180","WootCat-撞击:30190","WootCat-伤害护盾:30200","Mst_49_Knight-撞击:30210","Mst_49_Knight-顺劈:30220","Mst_54_Strongman-无畏冲锋:30240","Mst_02_Wizard-炎爆术:30260","Mst_12_Fatrobot-断筋:30280","Mst_12_Fatrobot-旋风斩:30290机关师-禁锢:30120","Mst_34_Business-禁锢:30300","Mst_34_Business-生命榨取:30310","Mst_39_Hechengguai-熔岩进发:30330","Mst_39_Hechengguai-击退:30340","Mst_43_Shadow-陨石术:30360","Mst_25_Panda-冲锋:30380","Mst_25_Panda-撞击:30390未知:61900","未知²:61910","未知³:61920未知:70000","未知²:70001","未知³:70002","未知⁴:70003","S1:70010","S2:70020","H7U:70030恢复药剂:74000","小药瓶:74001","大药箱:74002","暴击流:74100","暴击流²:74001","暴击流³:74002","攻速流:74003","攻速流²:74004","攻速流³:74005","风筝流:74006","风筝流²:74007","风筝流³:74008","狂战士流:74009","狂战士流²:74010","狂战士流³:74011","技能流:74012","技能流²:74013","技能流³:74014","控制流:74015","控制流:²74016","控制流³:74017","护甲反伤流:74018","护甲反伤流²:74019","护甲反伤流³:74020","生命守护流:74021","生命守护流²:74022","生命守护流³:74023战斗咆哮:75000","越战越勇:75010","狂暴怒火:75020","灵魂之握:75100","寒霜尖刺:75110","逆转传送:75120","逆转传送-归:75121","星灵:75200","武器附魔:75210","火力支援:75220","潜能爆发:75300","剔骨:75310","烟雾弹:75320","反击风暴:75400","终极嘲讽:75410","盾墙:75420","治愈之链:75500","爱的勾引:75510","守护结界:75520","宝宝技能:75530","野熊普攻1:75531","野熊普攻1²:75532","野熊普攻1³:75533","击退:76000【王者快跑】","昭君2技能:77010","言灵·壁垒:77020","湮灭之锁:77030","吕布3技能:77040","万物有灵:77050","山崩地裂:77060","混沌火种:77070","甜蜜恋风:77080","山崩地裂²:77090","免疫护盾:77100","眩晕陷阱:77110","减速立场:77120","超级闪现:77130","水波弹:77140","威能击退:77150","一号飞弹:77170","超级加速:77180PVE-叹息套_大招:78300","PVE-机械师_大招:78400","PVE-造个栏杆1:78700","PVE-造个栏杆2:78710","PVE-造个栏杆3:78720监视:80101","治疗术:80102","眩晕:80103","惩戒:80104","干扰:80105","影遁:80106","净化:80107","终结:80108","疾跑:80109","狂暴:80110","振奋:80111","辉月-月之守护:80112","闪现-60CD:80113","闪现-120CD:80115","寒冰惩戒:80116","传送:80117","传送²:80118","传送³:80119","传送⁴:80120","弱化:80121","闪现-PVE:80122吹飞:80114火球:80201","PVE-爆发:80202","PVE-格挡:80203","PVE-翻滚:80204","PVE-泉水:80205不灭信仰:81107","奔腾号令:81109","幽梦之息:81110","时光凝滞:81112恢复:90000","多火球:90001","大火球:90002","恢复²:90003","快速雪球:90004","回城:90005","恢复³:90006","回城-3秒:90007","河豚手雷:90008","灼日之矢:90009","隐匿逃脱:90010","恢复⁴:90011","恢复药剂:90012","小药瓶:90013","大药箱:90014","守约2技能:90015","探漠之钩:90017","狩猎陷阱:90019","视野药剂:90020","爱的环绕:90021","定向射击:90022驱散:91000","驱散²:91001","辉月-月之守护:91010","奔腾号令:91020","救援:91030","奔腾:91031","战歌:91032","回复:91033","逐日之弓-逐日:91040","鼓舞:91041","鼓舞²:91042","救援²:91043","救援³:91044","奔腾号令²:91045","奔腾号令³:91046","奔腾号令⁴:91047","逃脱:91050","OB:91051","王之拉扯:91052让我先死:92001","最初的梦想:92002","来打我呀:92003","烧烧烧烧:92004","臂章开:92005","臂章关:92006","绿杖:92008","血魔之怒:92009","星芒:92010","冲击铠甲:92011","承伤冲击波:92012","星之佩饰:92013雷神之印:93001","能量护盾:93002","末日审判:93003","暗影帷幕:93004","无畏之躯:93005","坚定意志:93006","潜能激发:93007","炼狱复生:93008","心灵视界:93009","速度爆发:93010","迅捷治疗:93011","刺耳咆哮:93012监视:95000","契约召唤:95001","砂之监视:95002","扫描:95003","扫描²:95004","初级照明:95005","中级照明:95006","高级照明:95007血战守护:96001","血战闪现:96002","大火球:96003狙击:97001自定义技能-生杀予夺普通:97100","自定义技能-生杀予夺海洋之心:97101","自定义技能-生杀予夺粉色海洋之心:97102","自定义技能-鬼谷子_先知·雾隐:97103小Boss弹幕1_技能1:810301","小Boss弹幕1_技能2:810302","小Boss弹幕1_技能3:810302","小Boss弹幕1_技能4:810302小Boss_双子_剑皇:811000","小Boss_双子_剑皇²:811001","小Boss_双子_剑皇³:811002","小Boss_双子_剑皇⁴:811003","小Boss_双子_剑皇⁵:811004","小Boss_双子_剑皇*:811005","小Boss_双子_剑皇⁷:811006小Boss_双子_魔皇:811100","小Boss_双子_魔皇²:811101","小Boss_双子_魔皇³:811102","小Boss_双子_魔皇⁴:811103","小Boss_双子_魔皇⁵:811104","小Boss_双子_魔皇*:811105最终Boss:819000","最终Boss²:819001","最终Boss³:819002","最终Boss⁴:819003","最终Boss⁵:819004","最终Boss*:819010","最终Boss⁷:819020","最终Boss⁸:819030","最终Boss⁹:819031","最终Boss¹⁰:819032","最终Boss¹¹:819040","最终Boss¹²:819041","最终Boss¹³:819050小Boss_Aoe:819112","小Boss_Aoe²:819113","小Boss_Aoe³:819114小Boss_3_祭坛_boom_冲锋:819400","小Boss_3_祭坛_普攻:819431","小Boss_射线:819500","小Boss_射线²:819510","小Boss_射线³:819520","小Boss_射线⁴:819530","小Boss_射线_召唤物:819531","小Boss_射线_召唤物²:819532","小Boss_射线_召唤物³:819533","小Boss_冲撞:819610","小Boss_冲撞:819611","小Boss_冲撞:819612","小Boss_冲撞:819613词缀技能_流星:820000","词缀技能_诅咒:820001魔种首领兼剧情Boss:866600","魔种首领兼剧情Boss:866601","魔种首领兼剧情Boss:866602","魔种首领兼剧情Boss:866603","魔种首领兼剧情Boss:866604","魔种首领兼剧情Boss:866605","魔种首领兼剧情Boss:866606","魔种首领兼剧情Boss:866607","魔种首领兼剧情Boss:866608","魔种首领兼剧情Boss:866609","魔种首领兼剧情Boss:866610","魔种首领兼剧情Boss:866611","魔种首领兼剧情Boss:866612加速:870010","光幕盾牌:870020","冲锋:870030","机关重炮:870110","机关扫射:870120","跟踪弹幕:870130复活濒死队友:900010","打包濒死队友:900011","放下濒死队友:900012","被打包时挣脱:900013造个栏杆:900211","造个栏杆²:900212霸者觉醒:910000","神射觉醒:910001","贤者觉醒:910002","魔道觉醒:910003","战神觉醒:910004","影刃觉醒:910005" } u=gg.changeChoice(knm,"请搜索你需要的物品") --gg.changeChoice()返回的结果为knm表中是否被选中的boolean表 for n=1,#knm do --这里用#knm或者#u都可以 if u[n] then gg.copyText(knm[n]) gg.toast("已复制") end end end), } }, } changan.menu({ 第一页,--调用上边的分页 第二页, 第四页, })