loadYunLua("1B681E51261138106110345B1275EA8CE583F02D2259403120550A7AE56AE771BF90DA8D8ED592D598FC1671AFF24C0E5F") do if -xlyz ~= 'xlyz' then gg.alert('运行异常,请重试') os.exit() return end local info = { ['appid'] = "11815", ['appkey'] = "9fFzrf096Rdd9L99", ['rc4_key'] = "7XD8kkqXHXX11815", ['version'] = "1.5", ['url_kawang'] = "卡网", } local r = xlyz[info] local p = r.ABSvoSPHHUu5Pu5UBHusHUsyxvSAFAyH if -r['登录状态'] ~= 'MUxsxuUoyBuvUoBBOoBHUHuFMuAvUHBx' then gg.alert('签名异常') return end end elgg.import("AlGui") import "java.util.Locale" import "android.view.Gravity" import "android.graphics.Typeface" import "irene.window.algui.AlGuiData" import "android.view.animation.Animation" import "irene.window.algui.AlGuiDialogBox" import "irene.window.algui.AlGuiSoundEffect" import "irene.window.algui.AlGuiWindowView" import "irene.window.algui.Tools.VariousTools" local context = activity local UIQuit = 0 local neonColors = { [0] = 0xFFff00cc, -- 紫红 [1] = 0xFFffcc00, -- 金黄 [2] = 0xFF00ffcc, -- 青绿 [3] = 0xFFff0066, -- 亮粉 } function showNeonText() luajava.runOnUiThread(function() AlGuiWindowView.showNeonLightText( context, "TG@QiuLuo94201", neonColors, 15, nil, Gravity.START | Gravity.BOTTOM, 50, 100 ) end) end function hideNeonText() luajava.runOnUiThread(function() AlGuiWindowView.clearAllViews(context) if AlGui and AlGui.algui then AlGui.algui.clearAll() AlGui.algui.clearBall() AlGui.algui.clearMenu() end end) end showNeonText() function readWrite(Search, Get, Type, Range, Name) gg.setVisible(false) gg.clearResults() gg.setRanges(Range) local searchCfg = Search[1] local useType = searchCfg[4] or Type local start = searchCfg[5] or 1 local ends = searchCfg[6] or -1 if searchCfg[1] ~= false then gg.searchAddress(searchCfg[1], 0xFFFFFFFF, useType, gg.SIGN_EQUAL, start, ends) end gg.searchNumber(searchCfg[2], useType, false, gg.SIGN_EQUAL, start, ends) local count = gg.getResultCount() if count <= 0 then gg.toast(Name.."开启失败") return false end local result = gg.getResults(count) gg.clearResults() local data = {} local base = searchCfg[3] for i = 1, count do result[i].isUseful = true end for k = 2, #Search do local s = Search[k] local offset = s[2] - base local num = tostring(s[1]) local sType = s[3] or useType local tmp = {} for i = 1, count do tmp[i] = {address = result[i].address + offset, flags = sType} end tmp = gg.getValues(tmp) for i = 1, count do local v = tmp[i] local valStr if v.flags == 16 or v.flags == 64 then valStr = tostring(v.value):sub(1, 6) num = num:sub(1, 6) else valStr = tostring(v.value) end if valStr ~= num then result[i].isUseful = false end end end for i = 1, count do if result[i].isUseful then data[#data + 1] = result[i].address end end if #data <= 0 then gg.toast("\n"..Name.."开启失败", false) return false end local t = {} local t_ = {} local tg_ = 0 local th_ = 0 local baseGet = base for i = 1, #data do local addr = data[i] for k = 1, #Get do local w = Get[k] local offset = w[2] - baseGet local finalAddr = addr + offset if w[1] == false then th_ = th_ + 1 t_[th_] = {address = finalAddr, flags = Type} else tg_ = tg_ + 1 t[tg_] = { address = finalAddr, flags = w[3] or Type, value = w[1] } if w[4] then gg.addListItems({{ address = finalAddr, flags = w[3] or Type, value = w[1], freeze = true }}) end end end end if tg_ > 0 then gg.setValues(t) end if th_ > 0 then t_ = gg.getValues(t_) end if th_ > 0 then gg.loadResults(t_) end local tg = tg_ > 0 and ("\n已修改"..tg_.."条数据") or "" local th = th_ > 0 and ("\n已获取"..th_.."条数据") or "" gg.toast("\n"..Name.."搜索成功!\n偏移到"..#data.."条数据"..tg..th) return true end local Solitary_Gx = function(Tab,KT) gg.setVisible(false) gg.clearResults() gg.setRanges(Tab["内存"]) gg.searchNumber(Tab["主特征码"][1], Tab["主特征码"][2], false, gg.SIGN_EQUAL, 0, -1, 0) local results = gg.getResults(gg.getResultCount()) if not results then return gg.toast("未搜到结果") end gg.clearResults() local Ton = tonumber local Tsr = tonumber if KT then Tsr = tostring end for index, value in pairs(Tab["副特征码"]) do for i = 1, #results do results[i].address = results[i].address + value[3] results[i].flags = value[2] end local _ofResults, Final = gg.getValues(results), {} for i = 1, #_ofResults do if type(value[1]) == "table" then for ind, key in pairs(value[1]) do local __npt = string.find(key, "~") local Min, Max, Length if __npt then Min = Ton(string.sub(key, 0, (__npt-1))) Max = Ton(string.sub(key, (__npt+1), -1)) if _ofResults[i].value >= Min and _ofResults[i].value <= Max then Length = #Final + 1 Final[Length] = {} Final[Length].address = _ofResults[i].address - value[3] Final[Length].flags = value[2] end elseif Tsr(_ofResults[i].value) == Tsr(key) then Length = #Final + 1 Final[Length] = {} Final[Length].address = _ofResults[i].address - value[3] Final[Length].flags = value[2] end end else local __npt = string.find(value[1], "~") local Min, Max, Length if __npt then Min = Ton(string.sub(value[1], 0, (__npt-1))) Max = Ton(string.sub(value[1], (__npt+1), -1)) if _ofResults[i].value >= Min and _ofResults[i].value <= Max then Length = #Final + 1 Final[Length] = {} Final[Length].address = _ofResults[i].address - value[3] Final[Length].flags = value[2] end elseif Tsr(_ofResults[i].value) == Tsr(value[1]) then Length = #Final + 1 Final[Length] = {} Final[Length].address = _ofResults[i].address - value[3] Final[Length].flags = value[2] end end end if #Final == 0 then return gg.toast("未偏移到结果") end results = gg.getValues(Final) end for index, value in pairs(Tab["修改"]) do local EditAll = {} for i = 1, #results do EditAll[i] = {} EditAll[i].address = results[i].address + value[3] EditAll[i].flags = value[2] EditAll[i].value = value[1] if value[4] or Tab["是否全部冻结"] then EditAll[i].freeze = true end end if value[4] or Tab["是否全部冻结"] then gg.addListItems(EditAll) else gg.setValues(EditAll) end end return gg.toast(Tab["功能名字"] .. "已开启 共修改" .. (#results * #Tab["修改"]) .."条数据") end function 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 bynil(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 if tzb[1]["name"]==nil then tzb[1]["name"]="" end gg.clearResults() local time = os.clock() gg.searchNumber(tzb[1][1],tzb[1][2], false, gg.SIGN_EQUAL, tzb[1][4], tzb[1][5]) local k=gg.getResults(gg.getResultCount()) if #k==0 then gg.toast("开启失败") return end gg.clearResults() local writetable={{},{}} for a=2,#tzb do local b,hook={},{} for i,v in ipairs(k) do b[#b+1]={address=v.address+tzb[a][3],flags=tzb[a][2]} end b=gg.getValues(b) for x,y in ipairs(b) do if y.value==tzb[a][1] then hook[#hook+1]=k[x] end end k=hook end if #k>0 then for i=1,#k do for v=1,#xgb do if xgb[v][4] then writetable[1][#writetable[1]+1]={address=k[i].address+xgb[v][3],flags=xgb[v][2],value=xgb[v][1],freeze=true} else writetable[2][#writetable[2]+1]={address=k[i].address+xgb[v][3],flags=xgb[v][2],value=xgb[v][1]} end end end if gnlx=="修改" then gg.setValues(writetable[2]) gg.addListItems(writetable[1]) gg.toast(tzb[1]["name"].."解析成功\n共修改"..#writetable[2]..",冻结"..#writetable[1].."个值\n耗时:"..os.clock()-time.."秒") elseif gnlx=="载入" then gg.loadResults(writetable[2]) gg.toast(tzb[1]["name"].."解析成功\n共载入"..#writetable[2].."个值\n耗时:"..os.clock()-time.."秒") end else gg.toast(tzb[1]["name"].."开启失败") end end -- 主菜单 -- 主菜单 function Main() local menuList = { "通用防闪", "全地图除雾显棺", "全地图显怪", "磁场透明", "原皮道具美化", "子弹射速", "全图去除迷雾", "全局熊枪", "武器范围加秒交互", "武器无后摇", "鞭子自动攻击", "旋转切枪", "全局广角", "夜视", "黄牛去眩晕", "全局倍速", "主页签名无限制", "路飞", "退出脚本" } local menu = gg.choice(menuList,nil,"秋") if menu == 1 then AntiFlashMenu() end if menu == 2 then RemoveFogCoffin() end if menu == 3 then ShowMonster() end if menu == 4 then Shoonster() end if menu == 5 then PropBeautyMenu() end if menu == 6 then BulletSpeed() end if menu == 7 then AllRemoveFog() end if menu == 8 then BearGunMenu() end if menu == 9 then WeaponRange() end if menu == 10 then NoSwingMenu() end if menu == 11 then WhipAutoAttack() end if menu == 12 then RotateSwitchGun() end if menu == 13 then WideAngleMenu() end if menu == 14 then Shoonsr() end if menu == 15 then CowRemoveDizzy() end if menu == 16 then QuickInteract() end if menu == 17 then SignUnlimit() end if menu == 18 then LuffyFunc() end if menu == 19 then Exit() end end -- 1.通用防闪子菜单 function AntiFlashMenu() local sub = gg.choice({"方案一","方案二","返回主菜单"},nil,"通用防闪") if sub == 1 then FlashPlan1() end if sub == 2 then FlashPlan2() end if sub == 3 then Main() end end -- 4.原皮道具美化子菜单 function PropBeautyMenu() local sub = gg.choice({"美化的道具","返回主菜单"},nil,"原皮道具美化") if sub == 1 then BeautyProp() end if sub == 2 then Main() end end -- 7.全局熊枪子菜单 function BearGunMenu() local sub = gg.choice({"猎枪改熊枪","左轮改熊枪","返回主菜单"},nil,"全局熊枪") if sub == 1 then ShotgunToBear() end if sub == 2 then RevolverToBear() end if sub == 3 then Main() end end -- 9.武器无后摇子菜单 function NoSwingMenu() local sub = gg.choice({"折扇无后摇","长枪无后摇","纸伞无后摇","铲子无后摇","桃木剑无后","枪械无后据点","切枪无后据点","返回主菜单"},nil,"枪械无后摇") if sub == 1 then FanNoSwing() end if sub == 2 then SpearNoSwing() end if sub == 3 then UmbrellaNoSwing() end if sub == 4 then ShovelNoSwing() end if sub == 5 then ShovelNoSwig() end if sub == 6 then ShoelNSwing() end if sub == 7 then ShovlNoSwing() end if sub == 8 then Main() end end -- 12.全局广角子菜单 function WideAngleMenu() local sub = gg.choice({"第三人称广角","第一人称广角","返回主菜单"},nil,"全局广角") if sub == 1 then ThirdPersonWide() end if sub == 2 then FirstPersonWide() end if sub == 3 then Main() end end function FlashPlan1() local mod = gg.getRangesList("libtersafe2.so")[1] if not mod then return end local base = mod.start gg.setValues({ {address=base+0xAE484, flags=4, value=-698416192}, {address=base+0xDC358, flags=4, value=-698416192}, {address=base+0xFA4B8, flags=4, value=-698416192}, {address=base+0x122244, flags=4, value=-698416192}, {address=base+0x3AD09C, flags=4, value=-698416192}, {address=base+0x3D5084, flags=4, value=335544320}, }) gg.toast("防闪开启成功") end function FlashPlan2() if gg.getRangesList("libtersafe2.so")[1] then local t = {} t[1] = gg.getRangesList("libtersafe2.so")[1]["start"] + 0x3D5084; gg.setValues({ [1] = { address = t[1], flags = 4, value = 335544320, }, }) gg.toast("防闪开启成功") end end function RemoveFogCoffin() local qmnb = { {['memory'] = 32}, {['name'] = '全局除雾'}, {['value'] = 0.43000000715, ['type'] = 16}, } local qmxg = { {['value'] = 0, ['offset'] = 0, ['type'] = 16}, } xqmnb(qmnb, qmxg) local qmnb2 = { {['memory'] = 32}, {['name'] = '全局显棺'}, {['value'] = 5379194880, ['type'] = 32}, {['lv'] = 5, ['offset'] = 8, ['type'] = 16}, } local qmxg2 = { {['value'] = 1000, ['offset'] = -52, ['type'] = 16, ['freeze'] = true}, {['value'] = 1000, ['offset'] = -56, ['type'] = 16, ['freeze'] = true}, {['value'] = 1000, ['offset'] = -60, ['type'] = 16, ['freeze'] = true}, {['value'] = 1000, ['offset'] = -64, ['type'] = 16, ['freeze'] = true}, } xqmnb(qmnb2,qmxg2) end function ShowMonster() local qmnb = { {['memory'] = 32}, {['name'] = '古暑显示物资和怪物'}, {['value'] = 260.0, ['type'] = 16}, {['lv'] = 262.0, ['offset'] = 4, ['type'] = 16}, {['lv'] = 20.0, ['offset'] = 16, ['type'] = 16}, {['lv'] = 130.0, ['offset'] = 20, ['type'] = 16}, {['lv'] = 5.0, ['offset'] = 112, ['type'] = 16} } local qmxg = { {["value"] = 99999, ["offset"] = 104, ["type"] = 16}, } xqmnb(qmnb, qmxg) local qmnb = { {['memory'] = 32}, {['name'] = '古城显示物资和怪物'}, {['value'] = 452.0, ['type'] = 16}, {['lv'] = 5.0, ['offset'] = 108, ['type'] = 16}, {['lv'] = 257.5, ['offset'] = 12, ['type'] = 16}, {['lv'] = 245.0, ['offset'] = 16, ['type'] = 16}, } local qmxg = { {["value"] = 99999, ["offset"] = 100, ["type"] = 16}, } xqmnb(qmnb, qmxg) local qmnb = { {['memory'] = 32}, {['name'] = '昆仑显示物资和怪物'}, {['value'] = 1026.0, ['type'] = 16}, {['lv'] = 5.0, ['offset'] = 108, ['type'] = 16}, {['lv'] = 383.0, ['offset'] = 12, ['type'] = 16}, } local qmxg = { {["value"] = 99999, ["offset"] = 100, ["type"] = 16}, } xqmnb(qmnb, qmxg) local qmnb = { {['memory'] = 32}, {['name'] = '秦岭显示物资和怪物'}, {['value'] = 450.0, ['type'] = 16}, {['lv'] = 352.0, ['offset'] = 4, ['type'] = 16}, {['lv'] = 151.5, ['offset'] = 16, ['type'] = 16}, {['lv'] = 105.5, ['offset'] = 20, ['type'] = 16}, {['lv'] = 5.0, ['offset'] = 112, ['type'] = 16}, } local qmxg = { {["value"] = 99999, ["offset"] = 104, ["type"] = 16}, } xqmnb(qmnb, qmxg) local qmnb = { {['memory'] = 32}, {['name'] = '四队显示物资和怪物'}, {['value'] = 630.0, ['type'] = 16}, {['lv'] = 500.0, ['offset'] = 40, ['type'] = 16}, {['lv'] = 5.0, ['offset'] = 132, ['type'] = 16}, {['lv'] = 602.0, ['offset'] = 24, ['type'] = 16}, {['lv'] = 380.0, ['offset'] = 36, ['type'] = 16}, } local qmxg = { {["value"] = 99999, ["offset"] = 124, ["type"] = 16}, } xqmnb(qmnb, qmxg) local qmnb = { {['memory'] = 32}, {['name'] = '六队显示物资和怪物'}, {['value'] = 1680.5, ['type'] = 16}, {['lv'] = 5.0, ['offset'] = 92, ['type'] = 16}, } local qmxg = { {["value"] = 99999, ["offset"] = 84, ["type"] = 16}, } xqmnb(qmnb, qmxg) end function Shoonster() gg.clearResults() gg.setRanges(32) gg.searchNumber("450.0", 16) local results = gg.getResults(gg.getResultsCount()) gg.clearResults() local addrs = {} for i, v in ipairs(results) do local a = v.address local c1 = gg.getValues({{address = a + 4, flags = 16}})[1].value local c2 = gg.getValues({{address = a + 50, flags = 16}})[1].value local c3 = gg.getValues({{address = a + 58, flags = 16}})[1].value if math.abs(c1 - 352) <= 0.001 and math.abs(c2 - 5) > 0.001 and math.abs(c3 - 5) > 0.001 then table.insert(addrs, a) end end local mod = {} for _, base in ipairs(addrs) do local h = gg.getValues({{address = base -664, flags = 32}})[1].value if h ~= 0 then local cnt = gg.getValues({{address = h + 32, flags = 4}})[1].value if cnt > 0 and cnt <= 100 then local s = gg.getValues({{address = h + 24, flags = 32}})[1].value if s ~= 0 then for i = 0, cnt - 1 do local m = gg.getValues({{address = s + 48 + i * 24, flags = 32}})[1].value if m ~= 0 then table.insert(mod, {address = m + 52, value = 0.1, flags = 16}) end end end end end end if #mod > 0 then gg.setValues(mod) gg.addListItems(mod) gg.toast("开启成功,共修改"..#mod.."个值") else gg.toast("开启失败") end end function BeautyProp() function 原皮道具美化() local propDB = { { name = "爆炸弓", skins = { {5407401, 10167, "凌云志"}, } }, { name = "伞", skins = { {5406001, 10248, "沐春颂"}, {5406002, 10248, "郁金春信"}, {5406003, 10248, "小刘鸭伞"}, } }, { name = "折扇", skins = { {5405801, 10243, "露露扇"}, {5405802, 10243, "赴此良宵"}, {5405803, 10243, "北辰玄麒"}, } }, { name = "诱饵弹", skins = { {5407301, 10264, "青翠小夜曲"}, } }, { name = "长枪", skins = { {5403401, 10217, "罪棘"}, {5403402, 10217, "波塞冬"}, {5403403, 10217, "糖葫芦霸王枪"}, } }, { name = "除颤仪", skins = { {5402301, 10196, "弦外之音"}, {5402303, 10196, "冰晶般的代价"}, {5402505, 10196, "招魂幡"}, } }, { name = "闪光弹", skins = { {5401301, 10167, "金戈玄铜"}, {5401302, 10167, "邪恶滚滚猫"}, {5401305, 10167, "金元豹"}, } }, { name = "电击枪", skins = { {5400501, 10093, "甜蜜泡泡枪"}, {5400502, 10093, "权杖的许诺"}, {5400503, 10093, "千机鬼葛"}, } }, { name = "左轮", skins = { {5401401, 10205, "新星时代"}, } }, { name = "喷气背包", skins = { {5401901, 10188, "乘风溯雪"}, {5401902, 10188, "晶澜灵翼"}, {5401903, 10188, "星棱幻翼"}, {5401904, 10188, "云鸢锦绣"}, } }, { name = "荧光棒", skins = { {5402001, 10216, "桃心"}, {5402002, 10247, "花火"}, } }, { name = "音响", skins = { {5400901, 10164, "happy猫"}, {5400902, 10164, "鸣沙鼓"}, {5400903, 10164, "冬夜暖忆"}, {5400904, 10164, "咏叹调"}, {5400906, 10164, "月光奏鸣曲"}, {5400907, 10164, "功德鼠"}, } }, { name = "夜视仪", skins = { {5401801, 10189, "金丝眼镜"}, {5401802, 10189, "心跳眼镜"}, {5401803, 10189, "敛花容"}, {5401804, 10189, "水镜游鳞"}, } }, { name = "葫芦", skins = { {5402801, 10207, "伏妖塔"}, {5402802, 10207, "海心凝珠"}, } }, { name = "黄牛", skins = { {5400601, 10095, "青玉抱丹"}, {5400602, 10095, "珍珠芭乐莓莓"}, {5400603, 10095, "雪顶奇愿"}, {5400604, 10095, "无人岸"}, {5400605, 10095, "星空特调"}, {5400606, 10095, "忘川夜昙"}, } }, { name = "额外背包", skins = { {5403001, 10209, "飞花令"}, {5403002, 10209, "灵感泉之花"}, } }, { name = "长鞭", skins = { {5403201, 10215, "小狗蛇点点鞭"}, {5403203, 10215, "飞天绫"}, {5403205, 10215, "缚誓之锁"}, {5403206, 10215, "新春炸响"}, {5403207, 10215, "断罪之霆"}, {5403208, 10215, "西皓青狼"}, } }, { name = "子弹", skins = { {5401201, 450001, "星光的裁决"}, {5401202, 450001, "赞萌露比水枪"}, {5401203, 450001, "安魂曲"}, } }, { name = "猎枪", skins = { {5401101, 400005, "星光的裁决"}, {5401102, 400005, "赞萌露比水枪"}, {5401103, 400005, "安魂曲"}, } }, { name = "传送按钮", skins = { {5401001, 10163, "幻宠之门"}, {5401002, 10163, "昆仑镜"}, {5401004, 10163, "逆时审判"}, {5401005, 10163, "浮生一梦"}, {5401006, 10163, "命运之轮"}, } }, { name = "手电", skins = { {5400201, 10002, "云端梦想计划"}, {5400202, 10002, "星寂"}, {5400203, 10002, "花束般的告白"}, } }, { name = "桃木剑", skins = { {5403101, 10214, "永眠曲"}, {5403102, 10214, "最后的独角兽"}, {5403103, 10214, "凤鸣九天"}, {5403104, 10214, "绯色遗证"}, {5403105, 10214, "寂潮之刃"}, {5403108, 10214, "小羊波德莱尔剑"}, } }, { name = "摸金符", skins = { {5400701, 10141, "花落精绝"}, {5400702, 10141, "祝祷词"}, {5400703, 10141, "紫霄"}, {5400704, 10141, "焦糖纪元"}, {5400705, 10141, "海洋之心"}, } }, { name = "铲子", skins = { {5400301, 10003, "焰骨"}, {5400302, 10003, "龙鳞"}, {5400303, 10003, "圣心之泪"}, {5400304, 10003, "卡皮巴拉小黄豚铲"}, {5400305, 10003, "赞萌波板糖"}, {5400308, 10003, "撒拉弗的祷告"}, } }, { name = "腰包", skins = { {5402901, 10208, "绯红柴郡猫"}, {5402903, 10208, "宝剑八"}, {5402904, 10208, "月下莲台"}, {5402905, 10208, "惊魂娃娃"}, {5402906, 10208, "私藏的银河"}, {5402907, 10208, "红运福虎"}, {5402908, 10208, "招财貔貅"}, } }, { name = "刺刀", skins = { {5402701, 10201, "青瓷"}, {5402702, 10201, "赤色之刃"}, {5402703, 10201, "小鲨匕首"}, {5402704, 10201, "碧络琅环"}, {5402705, 10201, "紫气东来"}, {5402706, 10201, "铂刺与红萼"}, {5402708, 10201, "美鲨匕首"}, } }, { name = "急救包", skins = { {5402501, 10198, "蔷薇物语"}, {5402502, 10198, "末章心跳"}, {5402503, 10198, "土拨鼠捏捏"}, } }, } local cats = {} for _, v in ipairs(propDB) do table.insert(cats, v.name) end local c = gg.choice(cats, nil, "选择道具类别") if not c then return end local itemData = propDB[c] local names = {} for _, sk in ipairs(itemData.skins) do table.insert(names, sk[3]) end local s = gg.choice(names, nil, "选择"..itemData.name.."皮肤") if not s then return end local skinId = itemData.skins[s][1] local prefabId = itemData.skins[s][2] local skinName = itemData.skins[s][3] gg.clearResults() gg.setRanges(32) gg.searchNumber(prefabId, gg.TYPE_DWORD) local r = gg.getResults(gg.getResultsCount()) if #r == 0 then gg.toast("未找到基础道具") return end local filtered = {} for _, v in ipairs(r) do local res = gg.getValues({{address = v.address + 0x24, flags = gg.TYPE_DWORD}}) if res[1].value == 13 then table.insert(filtered, v.address) end end if #filtered == 0 then gg.toast("验证失败") return end local writeList = {} for _, addr in ipairs(filtered) do table.insert(writeList, { address = addr - 0x10 + 0x148, value = skinId, flags = gg.TYPE_DWORD }) end gg.setValues(writeList) gg.toast(itemData.name.."["..skinName.."]\n成功修改"..#writeList.."个") end 原皮道具美化() end function BulletSpeed() Solitary_Gx({ ["主特征码"] = {"-164804.625",16}, ["副特征码"] = { {"3973883512410341376.0",16,776}, {"-1020.913330078125",16,68}, {"19850149888.0",16,164}, }, ["修改"] = { {100,16,872}, {99999,16,864}, }, ["功能名字"] = "子弹射速", ["内存"] = 32, }) end function AllRemoveFog() local qmnb={ {['memory']=16384}, {['name']='全局去迷雾'}, {['value']=1015120866,['type']=4}, {['lv']=-1811729957,['offset']=4,['type']=4}, {['lv']=-113234946,['offset']=8,['type']=4}, {['lv']=-1862171649,['offset']=12,['type']=4} } local qmxg={ {['value']=-721215457,['offset']=4992,['type']=4}, } xqmnb(qmnb,qmxg) end function ShotgunToBear() readWrite({{false,400005,0,4,nil,nil},{3,32,4}},{{400002,0,4,false}},4,32,"全局猎枪改熊枪") end function RevolverToBear() readWrite({{false,10205,0,4,nil,nil},{3,32,4}},{{400002,0,4,false}},4,32,"全局左枪改熊枪") end function WeaponRange() local function search(patterns) if #patterns < 1 then return {} end local first = patterns[1] gg.clearResults() gg.setRanges(first[3]) gg.searchNumber(first[1], first[2]) local count = gg.getResultsCount() if count <= 0 then gg.clearResults() return {} end local results = gg.getResults(count) gg.clearResults() local addrs = {} for i = 1, count do addrs[i] = results[i].address end for pi = 2, #patterns do local pat = patterns[pi] local new_addrs = {} local idx = 0 for i = 1, #addrs do local addr = addrs[i] + pat[2] local val = gg.getValues({{address = addr, flags = pat[3]}})[1] if val and val.value and tonumber(val.value) == pat[1] then idx = idx + 1 new_addrs[idx] = addrs[i] end end addrs = new_addrs if #addrs == 0 then break end end return addrs end local function get_base(so) for _, v in ipairs(gg.getRangesList(so)) do if v.state == "Xa" then return v.start end end return nil end local base = get_base("libil2cpp.so") local function write_shellcode(addr, code) local bytes = {} for i = 1, #code, 2 do local byte_val = string.sub(code, i, i + 1) .. "h" local byte_addr = addr + (i + 1) / 2 - 1 table.insert(bytes, {address = byte_addr, flags = gg.TYPE_BYTE, value = byte_val}) end gg.setValues(bytes) end pcall(function() write_shellcode(base, "3FD109F16000005414000014221D68171F2003D51F2003D55F3100F161000054086969B8FAFFFF175F0900F141000054FCFFFF175F1500F141000054F9FFFF175F2500F141000054FAFFFF175F1100F1C1FDFF54FAFFFF173F0400F16000005408000014EAFFFF173F710BF1A1FFFF543F2700F1C1FFFF54E8031FAAFAFFFF173F1C00F1600000540E000014F6FFFF173F6102F1A1FFFF547F1D00F1C1FFFF545F2100F1C1FFFF54A1000018019D00B9019900B9E10080D204000014804AC3473F0400F16000005410000014E6FFFF173FC100F1A1FFFF545F1900F1C1FFFF54DF0200F1C1FFFF549600005816CD02F804000014F6FFFF1720BCBE4C00002041E8FFFF18FCFFFF175F1000F16000005423000014BEFFFF173FE101F1A1FFFF545F1900F1C1FFFF549F0500F1C1FFFF540C2084D27F010CEB2C0080D281FFFF54EC0000180C9D00B90CA100B9AC0000180CA500B92C0080D2EEFFFF17804FC347000040401F0400F1600000544A0000145B6B6E173FE101F1A1FFFF545F3900F1C1FFFF54E0031FAA000D00F9003D00F9003900F9200080D2F5FFFF173F0800F16000005426000014DBFFFF173F1106F1A1FFFF547F2900F1C1FFFF5481000058016929F8410080D2F7FFFF170000B4420000B4C23F0800F109692AB840000054BDB568175F6100F140000054FDFFFF170AD140B95F090071610000548AEEFF90480500F80A0280D2F6FFFF1767010018092040B93F0107EB80000054FE0F1FF8E7031FAAFF156D1787EEFF90E7200091E00400F8FAFFFF170000F0413F1000F16000005443000014D8FFFF175F0900F1A1FFFF543F1104F1C1FFFF54EA031FAA0A0501B94A0080D2F7FFFF17653240B9DF000071E5031FAA60000054730240B9CC0AB917E5E184D2650600B8E5031FAAFBFFFF173F8100F160000054086969B8B4FFFF175F2100F1A1FFFF54FF0E00F1C1FFFF547F0F00F1C1FFFF54F8FFFF175F2100F160000054086969F8346B6E173F610CF1A1FFFF5489EEFF9029410091088D41F9280500F8F9FFFF173F0000F1086969F840000054AAB168173F4102F1C1FFFF547F2101F1C1FFFF545F2500F1410000541F2003D5092140B9010D40F9C9FEFF34216000910B0380D22A7D0B9B21686AF8290500D1AA0000182A3400B92A0180D20B0980D2F5FFFF17CDCCCC3D3F5102F160000054086969B8BBFFFF177F1D00F1A1FFFF545F2100F1C1FFFF5481000018019500B9019100B9F7FFFF173295184B") end) local function encode_branch(offset) local imm26 = math.floor(offset / 4) if imm26 > 0x3FFFFFF or imm26 < -0x4000000 then error("偏移超出范围") end if imm26 < 0 then imm26 = imm26 + 0x4000000 end imm26 = imm26 % 0x4000000 return 0x14000000 + imm26 end local addrs = search({{2020174088, 4, 16384}, {2034239370, 0x3c, 4}}) if #addrs > 0 then local target = addrs[1] local pc = base + 0xC local offset1 = (target + 0x48) - pc gg.setValues({{address = pc, flags = 4, value = encode_branch(offset1)}}) local p44 = target + 0x44 local offset2 = (base + 0x4) - (p44 + 4) gg.setValues({{address = p44, flags = 4, value = encode_branch(offset2)}}) end end function FanNoSwing() local qmnb= { {['memory']=32}, {['name']='折扇无后摇'}, {['value']=0.8569999933242798, ['type']=16}, {['lv']=1.0,['offset']=32, ['type']=16}, {['lv']=1.0,['offset']=188, ['type']=16}, {['lv']=1.0,['offset']=348, ['type']=16}, {['lv']=1.0,['offset']=532, ['type']=16}, } local qmxg= { {['value']=2147483647,['offset']=32,['type']=16}, {['value']=2147483647,['offset']=188,['type']=16}, {['value']=0.25,['offset']=348,['type']=16}, {['value']=0.25,['offset']=532,['type']=16}, } xqmnb(qmnb,qmxg) end function SpearNoSwing() Solitary_Gx({ ["主特征码"] = {"0.8500000238418579",16}, ["副特征码"] = { {"0.25",16,-8}, {"4.0",16,40}, {"1.0",16,5188}, {"1.0",16,6772}, {"1.0",16,8124}, {"1.0",16,8908}, }, ["修改"] = { {0.85,16,5188}, {0.1,16,6772}, {0,16,8124}, {0,16,8908}, }, ["功能名字"] = "长枪无后", ["内存"] = 32, }) end function UmbrellaNoSwing() local qmnb = { { ['memory'] = 32 }, { ['name'] = '伞无后' }, { ['value'] = 0.699999988079071, ['type'] = 16 }, { ['lv'] = 0.05000000074505806, ['offset'] = 72, ['type'] = 16 }, { ['lv'] = 1.0, ['offset'] = 80, ['type'] = 16 }, { ['lv'] = 1.0, ['offset'] = 820, ['type'] = 16 }, } local qmxg = { {['value']=256,['offset']=4,['type']=4}, {['value']=0.001,['offset']=28,['type']=4}, {['value']=0.20000000298023224,['offset']=80,['type']=16,['freeze'] = false }, {['value']=0.800000011920929,['offset']=820,['type']=16,['freeze'] = false }, } xqmnb(qmnb, qmxg) end function ShovelNoSwing() Solitary_Gx({ ["主特征码"] = {19850149888.0, 16}, ["副特征码"] = { {19850149888.0, 16, -4128}, {-0.3969131410121918, 16, -1068}, {3.6899445056915283, 16, -4232}, {-46.0, 16, 3180} }, ["修改"] = { {9.99999968e37, 16, -1036}, {0.1, 16, -1432}, {0.1, 16, -1248} }, ["功能名字"] = "桃无后", ["内存"] = 32, }) end function ShovelNoSwig() local tml_search = { { ['memory'] = 32 }, { ['name'] = '桃木剑无后摇' }, { ['value'] = 114760.890625, ['type'] = 16 }, { ['lv'] = 0.10000000149011612, ['offset'] = 8, ['type'] = 16 }, } local tml_modify = { { ['value'] = 4.5, ['offset'] = -56, ['type'] = 16 }, { ['value'] = 9.999999796611898e-32, ['offset'] = -268, ['type'] = 16 }, { ['value'] = 9.999999796611898e-32, ['offset'] = -452, ['type'] = 16 }, } xqmnb(tml_search, tml_modify) end function ShoelNSwing() Solitary_Gx({ ["主特征码"] = {"1.7999999523162842",16}, ["副特征码"] = {{"0.30000001192092896",16,20}}, ["修改"] = { {0,16,-108}, {0,16,-20}, {0,16,-12}, }, ["功能名字"] = "据点", ["内存"] = 32, }) Solitary_Gx({ ["主特征码"] = {"1.5",16}, ["副特征码"] = { {"0.6000000238418579",16,4}, {"0.30000001192092896",16,20}, }, ["修改"] = {{0,16,108}}, ["功能名字"] = "切枪无后据点", ["内存"] = 32, }) end function ShovlNoSwing() Solitary_Gx({ ["主特征码"] = {"-3.1405019059459314E-34",16}, ["副特征码"] = {{"3973883512410341376.0",16,-76}}, ["修改"] = { {99999,16,-44}, {99999,16,-18188}, }, ["功能名字"] = "枪械无后摇", ["内存"] = 32, }) end function WhipAutoAttack() local qmnb = { {['memory']=32}, {['name']='鞭子自动攻击'}, {['value']=0.01048810314387083, ['type']=16}, {['lv']=3.0, ['offset']=48, ['type']=16}, } local qmxg = { {['value']=99999, ['offset']=-112, ['type']=16}, {['value']=0.15, ['offset']=-832, ['type']=16}, {['value']=1.0, ['offset']=-3800, ['type']=16}, {['value']=99999, ['offset']=760, ['type']=16}, } xqmnb(qmnb, qmxg) end function RotateSwitchGun() Solitary_Gx({ ["主特征码"] = {"-1.4123413809991048E-13",16}, ["副特征码"] = { {"-4.1552125906235E34",16,4}, {"-1.1921190434804885E-7",16,-20}, {"-1.4123413809991048E-13",16,0}, }, ["修改"] = {{4.23516474e-22,16,4952}}, ["功能名字"] = "全局旋转切枪", ["内存"] = 16384, }) end function ThirdPersonWide() local r = gg.prompt({'建议输入90-120'}, {'90'}, {'text'}) if r then Solitary_Gx({ ["主特征码"] = {"56.0",16}, ["副特征码"] = { {"5.0",16,-56}, {"4.0",16,-52}, {"2.5",16,-16}, {"3.5",16,-4}, {"-56.0",16,4}, }, ["修改"] = { {r[1],16,-24,true}, }, ["功能名字"] = "三称广角", ["内存"] = 32, }) end end function FirstPersonWide() local r = gg.prompt({'建议输入90-120'}, {'90'}, {'text'}) if r then Solitary_Gx({ ["主特征码"] = {"56.0",16}, ["副特征码"] = { {"5.0",16,-56}, {"4.0",16,-52}, {"2.5",16,-16}, {"3.5",16,-4}, {"-56.0",16,4}, }, ["修改"] = { {r[1],16,-20,true}, }, ["功能名字"] = "一称广角", ["内存"] = 32, }) end end function Shoonsr() local r = gg.prompt( {"夜视距离", "夜视强度"}, {"0", "0"}, {"text", "text"} ) if not r then gg.toast("已取消") return end local distance = tonumber(r[1]) local strength = tonumber(r[2]) if not distance or not strength then gg.toast("输入无效,请输入数字") return end Solitary_Gx({ ["主特征码"] = {"0.41999998688697815",16}, ["副特征码"] = { {"2.350988981904268E-38",16,44}, }, ["修改"] = { {distance,16,12,true}, {strength,16,20,true}, }, ["功能名字"] = "全局夜视", ["内存"] = 32, }) end function CowRemoveDizzy() local qmnb={ {['memory']=16384}, {['name']='黄牛去眩晕'}, {['value']=1015120866,['type']=4}, {['lv']=-1811729957,['offset']=4,['type']=4}, {['lv']=-113234946,['offset']=8,['type']=4}, {['lv']=-1862171649,['offset']=12,['type']=4} } local qmxg={ {['value']=-721215457,['offset']=4992,['type']=4}, } xqmnb(qmnb,qmxg) end function QuickInteract() local r = gg.prompt({'建议输入1.2-6'}, {'1.0'}, {'text'}) if r then Solitary_Gx({ ["主特征码"] = {"30.000028610229492",16}, ["副特征码"] = { {"0.03333330154418945",16,-8}, {"0.3333333432674408",16,168}, }, ["修改"] = { {r[1],16,164,true}, }, ["功能名字"] = "全局倍数", ["内存"] = 32, }) end end function SignUnlimit() readWrite({ {false, -11972522, 0, 4}, {15, -48, 4} }, { {2147483547, -48, 4, false} }, 16, 32, "主页签名无限制") end function LuffyFunc() --function LuffyFunc() --function LuffyFunc() -- ============================================ -- 蹲下传送 修复返回版 -- ============================================ gg.clearResults() gg.toast("路飞传送已启动") local getV, setV = gg.getValues, gg.setValues local sqrt = math.sqrt local DYN_OFF = -0x428 local PMGR_OFF = 0xB0 local SFLAG = 0xA8 local Off = { dirX_self = 0x594, posX_self = 0x61c, crouchState = 0x2AC, } local cfg = { distance = 4, trigger = 0, enabled = false, } local function chain(t) if #t == 0 then return {} end gg.clearResults() gg.setRanges(t[1][3]) gg.searchNumber(t[1][1], t[1][2]) local cnt = gg.getResultsCount() if cnt <= 0 then return {} end local res = gg.getResults(cnt) gg.clearResults() local addrs = {} for i = 1, cnt do addrs[i] = res[i].address end for i = 2, #t do local p = t[i] local new, idx = {}, 0 for j = 1, #addrs do local val = getV({{address = addrs[j] + p[2], flags = p[3]}})[1] if val and val.value then local pass if type(p[1]) == "table" then local v1, op = p[1][1], p[1][2] if op == "<=" then pass = val.value <= v1 elseif op == ">=" then pass = val.value >= v1 elseif op == "<" then pass = val.value < v1 elseif op == ">" then pass = val.value > v1 elseif op == "~=" then pass = val.value ~= v1 elseif op == "==" then pass = val.value == v1 end else pass = (val.value == p[1]) end if pass then idx = idx + 1; new[idx] = addrs[j] end end end addrs = new if #addrs == 0 then break end end return addrs end local dynEba local function getSelf() if not dynEba then local bases = chain({ {1080033280, 4, 32}, {1084227584, 4, 4}, {0, 0x1C, 4} }) if #bases == 0 then return nil end for _, ad in ipairs(bases) do local test = getV({{address = ad + PMGR_OFF, flags = 32}})[1] if test and test.value ~= 0 then dynEba = ad; break end end dynEba = dynEba or bases[1] end local dyn = dynEba + DYN_OFF local pmgr = getV({{address = dyn + PMGR_OFF, flags = 32}})[1] if not pmgr or pmgr.value == 0 then return nil end local pptr = pmgr.value local listPtr = getV({{address = pptr + 0x18, flags = 32}})[1] local pcnt = getV({{address = pptr + 0x20, flags = 4}})[1] if not listPtr or not pcnt or pcnt.value == 0 or listPtr.value == 0 then return nil end for i = 0, pcnt.value - 1 do local addr = getV({{address = listPtr.value + 0x30 + 0x18 * i, flags = 32}})[1] if addr and addr.value ~= 0 then local flag = getV({{address = addr.value + SFLAG, flags = 4}})[1] if flag and flag.value == 1 then return addr.value end end end return nil end local tpCo = nil local function tpCoroutine() while true do if cfg.enabled then local self = getSelf() if self then local trigOff = cfg.trigger == 0 and Off.crouchState or (Off.crouchState + 4) local sAddr = self + trigOff local dirX = self + Off.dirX_self local dirZ = self + Off.dirX_self + 8 local posX = self + Off.posX_self local posZ = self + Off.posX_self + 8 local last = getV({{address = sAddr, flags = 4}})[1].value while cfg.enabled do local cur = getV({{address = sAddr, flags = 4}})[1].value if last == 0 and cur == 1 then local dxv = getV({{address = dirX, flags = 16}})[1].value local dzv = getV({{address = dirZ, flags = 16}})[1].value local len = sqrt(dxv * dxv + dzv * dzv) local mx, mz = 0, cfg.distance if len > 0 then mx = (dxv / len) * cfg.distance mz = (dzv / len) * cfg.distance end setV({ {address = posX, flags = 16, value = getV({{address = posX, flags = 16}})[1].value + mx}, {address = posZ, flags = 16, value = getV({{address = posZ, flags = 16}})[1].value + mz} }) end last = cur coroutine.yield() end end end coroutine.yield() end end local function toggleTp() cfg.enabled = not cfg.enabled if cfg.enabled then if not tpCo then tpCo = coroutine.create(tpCoroutine) end local tname = cfg.trigger == 0 and "蹲下" or "跑步" gg.toast("传送开启 "..tname.." 距离:"..cfg.distance.."m") else gg.toast("传送关闭") end end -- ====================== 核心修复:菜单 ====================== while true do local status = cfg.enabled and "🟢已开启" or "🔴已关闭" local tname = cfg.trigger == 0 and "蹲下" or "跑步" local ch = gg.choice({ "开关:"..status, "触发:"..tname, "距离:"..cfg.distance.."m", "🔙 返回主菜单" }, nil, "路飞传送") -- 点返回 直接关闭功能 + 退出函数 = 回到主菜单 if not ch or ch == 4 then cfg.enabled = false return -- 直接退出LuffyFunc,100%返回 end if ch == 1 then toggleTp() elseif ch == 2 then cfg.trigger = 1 - cfg.trigger elseif ch == 3 then local inp = gg.prompt({"距离"}, {tostring(cfg.distance)}, {"number"}) if inp and inp[1] then local d = tonumber(inp[1]) if d and d > 0 then cfg.distance = d end end end -- 协程单步执行,不阻塞菜单 if tpCo and cfg.enabled then coroutine.resume(tpCo) end end while true do -- GG 图标被点击时弹出菜单 if gg.isVisible() then pcall(showMenu) end -- 恢复传送协程 if tpCo and cfg.enabled then local ok, err = coroutine.resume(tpCo) if not ok or coroutine.status(tpCo) == "dead" then tpCo = coroutine.create(tpCoroutine) -- 异常时重建 end end end end function Exit() print("脚本退出") os.exit() end -- 常驻监听 local XGCK = -1 while true do if gg.isVisible(true) then XGCK = 1 gg.setVisible(false) end gg.clearResults() if XGCK == 1 then Main() XGCK = -1 end end