-- ===== 圆角白色背景 ===== local bg = nil pcall(function() local GD = luajava.bindClass("android.graphics.drawable.GradientDrawable") if GD then bg = GD() bg:setShape(0) -- RECTANGLE bg:setColor(-1) -- 白色 bg:setCornerRadius(40) -- 圆角半径(像素) end end) -- ===== 按钮圆角背景(三个按钮共用) ===== local btnBg = nil pcall(function() local GD = luajava.bindClass("android.graphics.drawable.GradientDrawable") if GD then btnBg = GD() btnBg:setShape(0) btnBg:setColor(-12627531) -- 0xFF3F51B5 靛蓝色 btnBg:setCornerRadius(24) end end) -- ===== 自改车牌:单次执行 ===== function changePlate() local prompt = gg.prompt( {"请输入旧车牌:", "请输入新车牌:"}, {[1]="", [2]=""}, {[1]="text", [2]="text"} ) if prompt == nil then gg.toast("已取消") return end local oldText = prompt[1] local newText = prompt[2] if oldText == nil or newText == nil or oldText == "" or newText == "" then gg.toast("文本不能为空,请重试") return end gg.setVisible(false) gg.setRanges( gg.REGION_JAVA_HEAP | gg.REGION_C_HEAP | gg.REGION_C_ALLOC | gg.REGION_C_DATA | gg.REGION_C_BSS | gg.REGION_PPSSPP | gg.REGION_ANONYMOUS ) gg.clearResults() gg.searchNumber(";" .. oldText, gg.TYPE_UNICODE) local count = gg.getResultsCount() if count == 0 then gg.toast("未找到: " .. oldText) else gg.getResults(count) gg.editAll(";" .. newText, gg.TYPE_UNICODE) gg.toast("成功替换 " .. count .. " 处") end gg.clearResults() gg.setVisible(true) end -- ===== 自改金币:单次执行(搜索 → 替换 → 冻结) ===== function changeCoin() local dataType = gg.TYPE_DWORD local searchVal, replaceVal local inputOk = false while not inputOk do local prompt = gg.prompt( {"原有的数量 (点取消退出):", "替换的数量:"}, {"", ""}, {"number", "number"} ) if not prompt then gg.toast("已取消") return end local input1 = prompt[1] and prompt[1]:match("^%s*(.-)%s*$") or "" local input2 = prompt[2] and prompt[2]:match("^%s*(.-)%s*$") or "" if input1 == "" or input2 == "" then gg.alert("❌ 提示:不能为空!\n请重新输入。") else searchVal = tonumber(input1) replaceVal = tonumber(input2) if not searchVal or not replaceVal then gg.alert("❌ 提示:请输入有效的数字!") else inputOk = true end end end gg.setVisible(false) gg.clearResults() local searchSuccess = pcall(function() gg.searchNumber(searchVal, dataType) end) if not searchSuccess then gg.alert("搜索失败,请检查游戏是否运行或数值是否正确。") else local count = gg.getResultsCount() if count > 0 then local results = gg.getResults(count) for _, v in ipairs(results) do v.value = replaceVal v.freeze = true v.freezeType = gg.FREEZE_NORMAL end local writeSuccess = pcall(function() gg.setValues(results) gg.addListItems(results) end) if writeSuccess then gg.toast("✅ 成功替换并冻结 " .. count .. " 个地址") else gg.toast("⚠️ 写入内存失败,可能地址已失效") end else gg.toast("❌ 未找到数值:" .. searchVal) end end gg.clearResults() gg.setVisible(true) end -- 先声明,再赋值,保证 onClick 闭包里能正确引用到 menu local menu menu = luajava.loadlayout({ FrameLayout, background = bg or "#FFFFFF", layout_width = "300dp", layout_height = "330dp", -- 加高以容纳 QQ 行 { LinearLayout, orientation = "vertical", layout_width = "match_parent", layout_height = "wrap_content", layout_gravity = "center", layout_marginLeft = "20dp", layout_marginRight = "20dp", -- 标题(牌子) { TextView, text = "斩泪内置V:1.0.0", textSize = "18sp", textColor = "#FF3F51B5", gravity = "center", layout_width = "match_parent", layout_height = "wrap_content", layout_marginTop = "8dp", layout_marginBottom = "4dp" }, -- 作者 QQ { TextView, text = "作者QQ: 2518579189", textSize = "13sp", textColor = "#FF888888", gravity = "center", layout_width = "match_parent", layout_height = "wrap_content", layout_marginBottom = "16dp" }, { Button, text = "选择进程", textSize = "16sp", textColor = "#FFFFFF", background = btnBg or "#FF3F51B5", layout_width = "match_parent", layout_height = "48dp", layout_marginBottom = "12dp", onClick = function(v) gg.setProcessX() end }, { Button, text = "自改车牌", textSize = "16sp", textColor = "#FFFFFF", background = btnBg or "#FF3F51B5", layout_width = "match_parent", layout_height = "48dp", layout_marginBottom = "12dp", onClick = function(v) changePlate() end }, { Button, text = "自改金币", textSize = "16sp", textColor = "#FFFFFF", background = btnBg or "#FF3F51B5", layout_width = "match_parent", layout_height = "48dp", onClick = function(v) changeCoin() end }, }, -- 关闭按钮 { Button, text = "×", textSize = "20sp", textColor = "#000000", background = "#00000000", layout_width = "40dp", layout_height = "40dp", layout_gravity = "bottom|right", onClick = function(v) menu:setVisibility(8) end } })