DM="尊敬的用户欢迎您使用吉波国体范围联合奶罩君作者 已适配4.6.3" gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..DM.."&spd=5&source=wise") function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end ---静态基址写法配置 function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function Unfreeze() local t = gg.getListItems() for k, v in pairs(t) do t[k]["freeze"] = false end return gg.addListItems(t) 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.addListItems(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 XGBase(Address,AFV) local address=0 for index,offset in ipairs(Address)do if index==1 then address=offset else address=gg.getValues({{address=address+offset,flags=4}})[1].value end end local Value,Freeze={},{} for index,value in ipairs(AFV)do local VALUE={address=address+value[3],flags=value[2],value=value[1],freeze=true} if value[4]then Freeze[#Freeze+1]=VALUE else Value[#Value+1]=VALUE end end gg.addListItems(Value) gg.addListItems(Freeze) end function Format(tab, format, value, type, Function) if format == "查看" then tab[1]["flags"] = type return print(gg.getValues(tab)) elseif format == "修改" then tab[1]["flags"] = type tab[1]["value"] = value return gg.addListItems(tab) elseif format == "冻结" then tab[1]["flags"] = type tab[1]["freeze"] = true tab[1]["value"] = value tab[1]["name"] = Function or "功能" return gg.addListItems(tab) elseif format == "加载" then tab[1]["flags"] = type return gg.loadResults(tab) end end function LSQ_Chain(so, offset, format, value, type, Function) getRanges = getRanges or (function() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v["type"]:sub(2, 2) == 'w' then ranges[#ranges+1] = v end end return ranges end) local rest, ranges, sostart, valtype = {}, getRanges(), nil , gg.TYPE_DWORD if gg.getTargetInfo()["x64"] then valtype = gg.TYPE_QWORD end for i in pairs(ranges) do local _name = ranges[i]["internalName"]:gsub('^.*/', '') if so[1] == _name and so[2] == ranges[i]["state"] then sostart = ranges[i]["start"] break end end if sostart then if offset[1] then for i = 1, #offset do rest = {{flags = valtype,address = sostart + offset[i]}} rest = gg.getValues(rest) if i == #offset then break end if valtype == gg.TYPE_DWORD then sostart = rest[1].value & 0xFFFFFFFF else sostart = rest[1].value end end end if #rest == 1 then end return Format(rest, format, value, type, Function) end gg.toast("功能:" .. Function .. "开启失败") print("功能开启失败原因: 未找到基址头") return os.exit() end function getZZ(address) return gg.getValues({{address = address, flags = 32}})[1].value end function getDword(address) return gg.getValues({{address = address, flags = 4}})[1].value end function getFloat(address) return gg.getValues({{address = address, flags = 16}})[1].value end function WriteFloat(address, value, freeze) gg.setValues({{address = address, flags = 16, value = value}}) if freeze then gg.addListItems({{address = address, flags = 16, value = value, freeze = freeze}}) end end function WriteDword(address, value, freeze) gg.setValues({{address = address, flags = 4, value = value}}) if freeze then gg.addListItems({{address = address, flags = 4, value = value, freeze = freeze}}) end end function UnfreezeF(address, freeze) gg.addListItems({{address = address, flags = 16, freeze = freeze}}) end function gai(addr,type,value) local t={} t[1]={} t[1].address=addr t[1].flags=type t[1].value=value gg.setValues(t) end local function RUI(address) return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value end D=gg.TYPE_DWORD F=gg.TYPE_FLOAT local function readD(a) return gg.getValues({{address=a,flags=gg.TYPE_DWORD}})[1].value end local function readF(a) return gg.getValues({{address=a,flags=gg.TYPE_FLOAT}})[1].value end function getvalue(addr,flags) local asbd={} asbd[1]={} asbd[1].address=addr asbd[1].flags=flags tmp=gg.getValues(asbd) return tmp[1].value end function RQI(address) return getvalue(address, gg.TYPE_QWORD) end function GotoPointer(start, offset) local flags = {[true] = 32, [false] = 4} local ti64 = gg.getTargetInfo().x64 local type = flags[ti64] local addr = 0 if start then addr = start + offset[1] for index = 2, #offset do local pointer = gg.getValues({{address = addr, flags = type}}) if not ti64 then pointer[1].value = pointer[1].value & 0xFFFFFFFF end addr = pointer[1].value + offset[index] end end return addr end function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true]=32, [false]=4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address=addr, flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end local Ranges=gg.getRangesList('/') local function Read(module,type) for k,v in pairs(Ranges) do if v['internalName']:match('[^/]*$')==module and v['type']==type then return v['start'] end end end local Table={} local function Modify(address,value,flags) Table[#Table+1]={address=address,value=value,flags=flags} end local a641 = 0x558CF0 local a642 = 0x4B8 local a643 = 0x510 local aKX1 = 0x540 local bKX2 = 0x618 --把以上代码复制到你脚本最前面即可 draw.setStyle("描边") draw3 = require("draw3") draw.text("", 300, 250) draw.setColor("#00ffff") draw.setSize(50) draw.setStyle("描边并填充") local function interruptThread(thread) if thread then pcall(function() thread:interrupt() end) end end local function getASyncThreadCallbak(func) return function() luajava.startThread(function() return pcall(func) end) end end local function newGradientDrawableLayout(layout) local baseLayout = { GradientDrawable, cornerRadius = '15dp', color = 0x20000000 } return table.copy(baseLayout, layout) end local task local function getSyncThreadCallbak(func) return function() if task then gg.toast('正在运行其它任务,再稍后!') return end luajava.startThread(function() task = true pcall(func) task = nil end) end end local function callSyncThreadCallbak(func) return getSyncThreadCallbak(func)() end local function findFunctionByName(name) local func = _ENV[name] if not isFunction(func) then gg.alert(string.format('不存在 %q 功能', name)) return nil end return getSyncThreadCallbak(func) end local function newButtonLayout(name) if not isString(name) then return end local layout = { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '2dp', text = name, textSize = '16sp', onClick = findFunctionByName(name) } return layout end local function newSwitchLayout(openName, closeName) if not isString(openName) then return end local layout = { Switch, layout_width = 'match_parent', text = openName, onCheckedChange = function(CompoundButton, state) local func if state then if isString(closeName) then CompoundButton:setText(closeName) end func = findFunctionByName(openName) else CompoundButton:setText(openName) if isString(closeName) then func = findFunctionByName(closeName) end end if isFunction(func) then func() end end } return layout end local function newCheckBoxLayout(openName, closeName) if not isString(openName) then return end local layout = { CheckBox, layout_width = 'match_parent', text = openName, onCheckedChange = function(CompoundButton, state) local func if state then if isString(closeName) then CompoundButton:setText(closeName) end func = findFunctionByName(openName) else CompoundButton:setText(openName) if isString(closeName) then func = findFunctionByName(closeName) end end if isFunction(func) then func() end end } return layout end function newcheck(radio) firadio={LinearLayout,layout_width = 'match_parent',layout_height = "match_parent",orientation="vertical"} if type(radio[1])=="string" or type(radio[1])=="number" then firadio[#firadio+1]={TextView,text=radio[1],textColor="#ffffff",} end radios={LinearLayout,orientation="horizontal",gravity="center",background="#00C92E37",layout_width = 'match_parent',} for i=2,#radio do local name = radio[i][1] local func1 = radio[i][2] local func2 = radio[i][3] local nid = radio[i][4] if not name then name = "未设置" end nid = name..guid() local func = 开关(nid,func1,func2) radios[#radios+1]={CheckBox, text=radio[i][1], textSize="9sp", textColor="#ffffff", onClick=function() luajava.newThread(function() pcall(func) end):start() end, } end firadio[#firadio+1]=radios return luajava.loadlayout(firadio) end function newradio(radio) firadio={LinearLayout, layout_width = 'match_parent', layout_height = "match_parent", orientation="horizontal" } if type(radio[1])=="string" or type(radio[1])=="number" then end radios={RadioGroup,orientation="horizontal",gravity="center",background="#00C92E37",layout_width = 'match_parent',} for i=2,#radio do radios[#radios+1]={ RadioButton, text=radio[i][1], textColor="#ffffff", textSize="11sp", onClick=function() luajava.newThread(function() pcall(radio[i][2]) end):start() end, } end firadio[#firadio+1]=radios return luajava.loadlayout(firadio) end function 开关(name,func1,func2) if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then _ENV[name] = "开" func1() else _ENV[name] = "关" func2() end 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 floatingWindowManager = require('floatingWindowManager') floatingWindowManager:init() floatingWindowManager:newWindow(('吉波范围'):format(floatingWindowManager.version), { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_margin = '0dp', layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', { Button, background = { GradientDrawable, cornerRadius='10dp', color='#5000000', }, layout_width = 'match_parent', layout_margin = '1dp', text = '配置进程', textColor= "#FF14DAFF", textSize = '16sp', onClick = function() gg.setProcessX() string.toMusic("选择进程") end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='#5000000', }, layout_width = 'match_parent', layout_margin = '1dp', text = '图标防闪退', textColor= "#FF14DAFF", textSize = '16sp', onClick = function() local allRanges = gg.getRangesList("libanogs.so") if not allRanges or #allRanges == 0 then return end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local t = {"libUE4.so:bss", "Cb"} local tt = {0x5B1780, 0x8, 0x3C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 131328, freeze = true}}) -- 查找 bss 段且状态为 Cb 的段(用于第一部分) local bssRange = nil local mainRange = allRanges[1] -- 默认主段(通常第一个) for _, r in ipairs(allRanges) do if r.internalName:find("libanogs%.so:bss") and r.state == "Cb" then bssRange = r break end end -- 如果没有找到 bss 段,则回退使用主段(与原脚本行为一致?原脚本可能找不到时不执行,这里加保护) if not bssRange then gg.toast("未找到 bss 段,请检查") return end local items = {} -- === 第一部分:使用 bss 段基址 + 偏移,冻结值为 64 === local part1_offsets = { 0x300, 0x3F8, 0x430, 0x550, 0x5D8, 0xA3C0 } for i, off in ipairs(part1_offsets) do items[#items + 1] = { address = bssRange.start + off, flags = 4, value = 64, freeze = true } end -- === 第二部分:使用主段基址 + 偏移,冻结值为 0 === local part2_offsets = { 0x98EA8, 0x9BF58, 0xE70DC, 0xE899C, 0xED4E0, 0xEED9C } for i, off in ipairs(part2_offsets) do items[#items + 1] = { address = mainRange.start + off, flags = 4, value = 0, freeze = true } end -- 一次性添加所有冻结项 gg.addListItems(items) gg.toast("开启成功") local DM = "开启成功" gg.playMusic("https://www.mpimg.cn/down.php/f129148125e5eb75953172e3452a18cb.m4a"..DM.."&spd=5&source=wise") end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='#5000000', }, layout_width = 'match_parent', layout_margin = '1dp', text = '范围区域', textColor= "#FF14DAFF", textSize = '16sp', onClick = function() floatingWindowManager:start('吉波[范围区]') end }, } }) end, onDestroy = function() end }) floatingWindowManager:newWindow('吉拔[范围区]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '0dp', -- ==================== 锁帧按钮 ==================== { TextView, text = "黑客功能", textSize = "12sp", textColor = "#FF69B4" }, {LinearLayout, padding = {'0dp', '0dp', '0dp', '1dp'}, layout_marginTop = '1dp', { Switch, layout_marginLeft = '0dp', text="大头娃娃", textColor= "#01FFFF", layout_height="30dp", layout_width="200dp", background= luajava.loadlayout { GradientDrawable, color = "#00000000", cornerRadius = 28 }, onCheckedChange = function(CompoundButton, state) if state then function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local t = {"libUE4.so:bss", "Cb"} local tt = {0x3340, 0x180, 0x28, 0x54} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 5, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3340, 0x180, 0x28, 0x50} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 5, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3340, 0x180, 0x28, 0x58} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 5, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3340, 0x180, 0xB8, 0xB4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 5, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3340, 0x180, 0xB8, 0xB0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 5, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3340, 0x180, 0xB8, 0xB8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 5, freeze = true}}) end end }, }, -- ==================== 锁帧按钮结束 ==================== { TextView, text = "防卡伤一把一开:", textSize = "12sp", textColor = "#FF69B4" }, {LinearLayout, padding = {'0dp', '0dp', '0dp', '1dp'}, layout_marginTop = '1dp', { Switch, layout_marginLeft = '0dp', text="独家防卡", textColor= "#01FFFF", layout_height="30dp", layout_width="200dp", background= luajava.loadlayout { GradientDrawable, color = "#00000000", cornerRadius = 28 }, onCheckedChange = function(CompoundButton, state) if state then if gg.getRangesList("libanogs.so")[1] then local t = {} t[1] = gg.getRangesList("libanogs.so")[1]["start"] + 0x516A6C; -- 数值地址:0x7A3B323A6C t[2] = gg.getRangesList("libanogs.so")[1]["start"] + 0x518A24; -- 数值地址:0x7A3B325A24 gg.addListItems({ [1] = { address = t[1], flags = 4, value = -698416192, freeze = true, }, [2] = { address = t[2], flags = 4, value = -698416192, freeze = true, }, }) gg.toast("开启成功") end end end }, }, { TextView, text = "爆头范围一把一开:", textSize = "12sp", textColor = "#FF69B4" }, {LinearLayout, padding = {'0dp', '0dp', '0dp', '1dp'}, layout_marginTop = '1dp', { Switch, layout_marginLeft = '0dp', text="吉波范围", textColor= "#01FFFF", layout_height="30dp", layout_width="200dp", background= luajava.loadlayout { GradientDrawable, color = "#00000000", cornerRadius = 28 }, onCheckedChange = function(CompoundButton, state) if state then gg.clearResults() gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("15.75", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(10) gg.editAll("60", gg.TYPE_FLOAT) gg.toast("吉波范围开启成功") local DM = "开启成功" gg.playMusic("https://www.mpimg.cn/down.php/6bfcd55b82ffceb107baaf3883f0c130.m4a"..DM.."&spd=5&source=wise") else gg.clearResults() end end }, }, {LinearLayout, padding = {'0dp', '0dp', '0dp', '1dp'}, layout_marginTop = '1dp', { Switch, layout_marginLeft = '0dp', text="踏空狗专用范围", textColor= "#01FFFF", layout_height="30dp", layout_width="200dp", background= luajava.loadlayout { GradientDrawable, color = "#00000000", cornerRadius = 28 }, onCheckedChange = function(CompoundButton, state) if state then gg.clearResults() gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("15.75", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(10) gg.editAll("62", gg.TYPE_FLOAT) gg.toast("踏空狗范围开启成功") else gg.clearResults() end end }, }, { TextView, text = "特效一把一开:", textSize = "12sp", textColor = "#FF69B4" }, {LinearLayout, padding = {'0dp', '0dp', '0dp', '1dp'}, layout_marginTop = '1dp', { Switch, layout_marginLeft = '0dp', text="独家特效", textColor= "#01FFFF", layout_height="30dp", layout_width="200dp", background= luajava.loadlayout { GradientDrawable, color = "#00000000", cornerRadius = 28 }, onCheckedChange = function(CompoundButton, state) if state then LSQ_Chain({'libUE4.so:bss','Cb'},{0x570E70,0x30,0x540,0x618,0x10},"冻结","1000",16,"特效") LSQ_Chain({'libUE4.so:bss','Cb'},{0x570E70,0x30,0x540,0x618,0x50},"冻结","1000",16,"特效") LSQ_Chain({'libUE4.so:bss','Cb'},{0x570E70,0x30,0x540,0x618,0x90},"冻结","1000",16,"特效") LSQ_Chain({'libUE4.so:bss','Cb'},{0x570E70,0x30,0x540,0x618,0xD0},"冻结","1000",16,"特效") gg.toast("特效开启成功") local DM = "开启成功" gg.playMusic("https://www.mpimg.cn/down.php/6bfcd55b82ffceb107baaf3883f0c130.m4a"..DM.."&spd=5&source=wise") else gg.clearResults() end end }, }, {LinearLayout, padding = {'0dp', '0dp', '0dp', '1dp'}, layout_marginTop = '1dp', { Switch, layout_marginLeft = '0dp', text="自改特效", textColor= "#01FFFF", layout_height="30dp", layout_width="200dp", background= luajava.loadlayout { GradientDrawable, color = "#00000000", cornerRadius = 28 }, onCheckedChange = function(CompoundButton, state) if state then local h = gg.prompt( {"1", "2", "3", "4"}, {100, 100, 100, 100}, -- 默认打勾 {"text", "text", "text", "text"}, -- ✅ 关键修正:GG里的复选框类型是checkbox,不是bool {true, true, true, true} ) -- 容错:用户取消弹窗则直接退出 if not h then gg.toast("已取消修改") return end -- 链式冻结修改(LSQ_Chain需你提前定义) LSQ_Chain({'libUE4.so:bss','Cb'},{0x570E70,0x30,0x540,0x618,0x10},"冻结",h[1],16,"特效") LSQ_Chain({'libUE4.so:bss','Cb'},{0x570E70,0x30,0x540,0x618,0x50},"冻结",h[2],16,"特效") LSQ_Chain({'libUE4.so:bss','Cb'},{0x570E70,0x30,0x540,0x618,0x90},"冻结",h[3],16,"特效") LSQ_Chain({'libUE4.so:bss','Cb'},{0x570E70,0x30,0x540,0x618,0xD0},"冻结",h[4],16,"特效") local DM = "开启成功" gg.playMusic("https://www.mpimg.cn/down.php/142114cd25ccea6892f197021503f1d4.m4a"..DM.."&spd=5&source=wise") else gg.toast("特效已关闭") end end }, }, } }) end }) function sy() local scriptName = gg.getFile():match("([^/]+)%.lua$") or "script" local cfg_file = gg.EXT_FILES_DIR.."/"..scriptName.."_水印坐标.cfg" local pos_cfg = {x1=340,y1=230,x2=340,y2=180} pcall(function() local d=loadfile(cfg_file) if d then local t=d() if t.x1 then pos_cfg.text=t.text pos_cfg.x1=t.x1 pos_cfg.y1=t.y1 pos_cfg.text3=t.text2 pos_cfg.x2=t.x2 pos_cfg.y2=t.y2 end end end) local p=gg.prompt({ "水印1文字", "水印1X", "水印1Y", "水印2文字", "水印2X", "水印2Y" },{pos_cfg.text,pos_cfg.x1,pos_cfg.y1,pos_cfg.text2,pos_cfg.x2,pos_cfg.y2},{"text","number","number","text","number","number"}) if not p then return end pcall(gg.saveVariable,{ x1=p[2], y1=p[3], x2=p[5], y2=p[6] },cfg_file) draw.remove() draw.text(p[1],p[2],p[3]) draw.text(p[4],p[5],p[6]) string.toMusic("吉本拔牛逼") end floatingWindowManager:run()() --[[Welcome to Dluae]]