function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = { [true] = 32, [false] = 4 } if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({ { address = addr, flags = va[x64] } }) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) if not addr then gg.toast('修改失败, 可能是模块不存在') return end local Table1 = { {}, {} } for k, v in ipairs(Table) do local value = { address = addr + v[3], value = v[1], flags = v[2], freeze = v[4] } if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功") end -- 预读地址 local addrAttack = readPointer("libUE4.so", {131132036}, 1) local addrNoCD = readPointer("libUE4.so", {91280248}, 1) local addrInvincible = readPointer("libUE4.so", {92974748}, 1) local addrSuperAttack = readPointer("libUE4.so", {91746880}, 1) local addrFly = readPointer("libUE4.so", {96160156}, 1) local addrSpeed2 = readPointer("libUE4.so", {91323592}, 1) local addrSpeed4 = readPointer("libUE4.so", {96337484}, 1) local addrExtra = readPointer("libUE4.so", {89745596}, 1) -- 0x55968BC local addrTuanben1 = readPointer("libUE4.so", {89745644}, 1) -- 0x55968EC local addrTuanben2 = readPointer("libUE4.so", {96337988}, 1) -- 新增:恢复团本用的地址 -- ==================== 团本攻速移速(2个团本地址 + 2个移速地址) ==================== local tuanbenOffsets = { 89745596, -- libUE4.so + 0x55968BC 96337988 -- libUE4.so + 0x5BE0044 } local tuanbenModifyValues = { 1386783050, 505475072 } function doTuanben(mode) if mode == 1 then -- 开启:修改2个团本地址 local successCount = 0 for i = 1, 2 do local addr = readPointer("libUE4.so", { tuanbenOffsets[i] }, 1) if addr then gg.setValues({{address = addr, value = tuanbenModifyValues[i], flags = 4}}) successCount = successCount + 1 end end -- 附加2个移速地址 if addrSpeed2 and addrSpeed4 then gg.setValues({ {address = addrSpeed2, value = 505417728, flags = 4}, {address = addrSpeed4, value = 1386778440, flags = 4} }) gg.toast("团本开启完成(2个团本地址 + 2倍移速)") else gg.toast("团本开启完成(2个团本地址,移速附加失败)") end elseif mode == 2 then -- 恢复:只恢复 96337988 为 505421832 local addr = readPointer("libUE4.so", {96337988}, 1) if addr then gg.setValues({{address = addr, value = 505421832, flags = 4}}) gg.toast("恢复团本攻速移速成功,96337988 已恢复为 505421832") else gg.toast("恢复失败,地址无效") end end end -- ==================== 2倍移速(原有4个地址 + 新增恢复团本地址) ==================== function doSpeed2() if addrSpeed2 and addrSpeed4 and addrExtra and addrTuanben1 and addrTuanben2 then gg.setValues({ {address = addrSpeed2, value = 505417728, flags = 4}, {address = addrSpeed4, value = 1386778440, flags = 4}, {address = addrExtra, value = 1386778442, flags = 4}, {address = addrTuanben1, value = 505424160, flags = 4}, {address = addrTuanben2, value = 505421832, flags = 4} -- 新增 }) gg.toast("2倍移速(大地图)开启成功") else gg.toast("移速地址无效") end end -- ==================== 4倍移速(原有4个地址 + 新增恢复团本地址) ==================== function doSpeed4() if addrSpeed2 and addrSpeed4 and addrExtra and addrTuanben1 and addrTuanben2 then gg.setValues({ {address = addrSpeed2, value = 505465888, flags = 4}, {address = addrSpeed4, value = 1386770248, flags = 4}, {address = addrExtra, value = 1386778442, flags = 4}, {address = addrTuanben1, value = 505424160, flags = 4}, {address = addrTuanben2, value = 505421832, flags = 4} -- 新增 }) gg.toast("4倍移速(副本)开启成功") else gg.toast("移速地址无效") end end -- ==================== 主线一键三连 ==================== function doThreeInOne() local successCount = 0 if addrNoCD then gg.edits(addrNoCD, {{505942016, 4, 0, false}}, "无CD") successCount = successCount + 1 end if addrInvincible then gg.edits(addrInvincible, {{509616384, 4, 0, false}}, "无敌霸体") successCount = successCount + 1 end if addrSuperAttack then gg.edits(addrSuperAttack, {{510078976, 4, 0, false}}, "超级倍攻") successCount = successCount + 1 end if successCount > 0 then gg.toast("一键三连成功,共修改" .. successCount .. "个功能") else gg.toast("一键三连失败,所有地址无效") end end -- ==================== 主循环 ==================== while true do if gg.isVisible(true) then gg.setVisible(false) local choice = gg.choice({ "主线超级攻速", "初始化主线攻速(爬楼梯需要关闭)", "2倍移速(大地图开启)", "4倍移速(副本开启)", "主线一键三连", "团本攻速移速(含2倍移速)", "恢复团本攻速移速", "飞天", "恢复飞天", "退出脚本" }, nil, "===== 融合功能脚本 =====") if choice == 1 then if addrAttack then gg.edits(addrAttack, {{505933824, 4, 0, false}}, "主线超级攻速") else gg.toast("攻速地址无效") end elseif choice == 2 then if addrAttack then gg.setValues({{address = addrAttack, value = 505481216, flags = 4}}) gg.toast("主线攻速已恢复") else gg.toast("攻速地址无效") end elseif choice == 3 then doSpeed2() elseif choice == 4 then doSpeed4() elseif choice == 5 then doThreeInOne() elseif choice == 6 then doTuanben(1) elseif choice == 7 then doTuanben(2) elseif choice == 8 then if addrFly then gg.edits(addrFly, {{1386737672, 4, 0, false}}, "飞天") else gg.toast("飞天地址无效") end elseif choice == 9 then if addrFly then gg.setValues({{address = addrFly, value = -1123992607, flags = 4}}) gg.toast("飞天已恢复") else gg.toast("飞天地址无效") end elseif choice == 10 then gg.toast("脚本已退出") break end end gg.sleep(100) end