本帖最后由 youcis 于 2023-12-14 19:27 编辑
修改了一下,mumu模拟器,测试后扫描速度快很多,直接改3个角色的攻击力为50万(atk = 改成需要的攻击力),分别替换string.format里的数值就行,虽然不懂lua,但看代码里是取得唯一结果,有时候游戏会卡出几个同样的数组,修改了也没用,还必须全都改了防止下次扫描再次出现,不知道怎么设置如果出现多个结果全都一起修改。
发现个问题,有时候CE会很蠢的扫不出其中一个角色,然后因为其中一个没有数值导致整段不能再运行,于是后面加了简单的判断语句防止CE抽风,但有时候还是会出现手动扫描明明能扫出来的角色,脚本运行N次却都扫不出来,不知道怎么解决。
---------------
找了半天才找到Scan.firstScan括号里的含义,中文网都没人说的,还是放到git上CE的main.lua里才有,修改了下扫描范围、舍入默认、区块对齐4、关掉16进制输入,因为手动扫描从来没出过问题,所以都按照默认手动扫描的设置,应该没问题了。感觉研究这些东西我都快学会lua了。
[Lua] 纯文本查看 复制代码 openProcess ("MuMuVMMHeadless.exe")
local search_num = string.format("4:等级 4:攻击")
local Scan = createMemScan();
Scan.OnlyOneResult=true;
Scan.firstScan(soExactValue, vtGrouped, rtRounded, search_num, "", 0, 0x00007fffffffffff, "", fsmAligned, "4", false, false, false, false);
Scan.waitTillDone();
a=Scan.getOnlyResult()
local search_num = string.format("4:等级 4:攻击")
local Scan = createMemScan();
Scan.OnlyOneResult=true;
Scan.firstScan(soExactValue, vtGrouped, rtRounded, search_num, "", 0, 0x00007fffffffffff, "", fsmAligned, "4", false, false, false, false);
Scan.waitTillDone();
b=Scan.getOnlyResult()
local search_num = string.format("4:等级 4:攻击")
local Scan = createMemScan();
Scan.OnlyOneResult=true;
Scan.firstScan(soExactValue, vtGrouped, rtRounded, search_num, "", 0, 0x00007fffffffffff, "", fsmAligned, "4", false, false, false, false);
Scan.waitTillDone();
c=Scan.getOnlyResult()
atk = 500000
if a == nil
then
else
writeInteger(a+0x4, atk)
end
if b == nil
then
else
writeInteger(b+0x4, atk)
end
if c == nil
then
else
writeInteger(c+0x4, atk)
end
print("修改完成")
然后扩大搜索范围后应该不用判断nil的那些了,后面应该可以直接改成,因为有一个角色搜不到就会出错,也能防止改好后多点了一次让CE卡住太久。
[Lua] 纯文本查看 复制代码 writeInteger(a+0x4, atk)
writeInteger(b+0x4, atk)
writeInteger(c+0x4, atk)
print("修改完成")
其他还能在abc变量前,比如a=Scan.getOnlyResult()前加local 变成本地变量,最后也能修改,虽然不知道有什么影响,也不知道代码运行流程什么样的。 |