CheatMaker 论坛

首页 » 修改器版块 » 修改技术讨论 » PC_AA 63的[BEFORE WRITE]相当于自带锁定数据?
Rozen - 2016/2/26 16:13:32
内存中物品代码为4xx至7xx,游戏通过对高位也就是4、5、6、7进行加4操作来表示数量,即4AA表示1个,8AA表示2个,5AA表示1个,9AA表示2个,所以我用ComboBox
63(
[AFTER READ]
value = (value-6)/4

[BEFORE WRITE]
value = value*4+6
)
数值0表示1个(以此类推),暂时对6XX系列物品进行数量操作……
然后问题来了,这个高位的数值被锁定了,永远都是我所选择的数量06、0A一类的,导致我还是AA显示还是6AA。分析了下应该是这个ComboBox只要被调用过一次后,任何写入操作前都触发了[BEFORE WRITE]导致无论输入什么数字都强制变成63运算后的数值列表里的数值。求帮助,有更好的实现方法最好,我只能想出IF,但是失败了……
天枫十一郎 - 2016/2/26 20:50:49
然后问题来了,这个高位的数值被锁定了,永远都是我所选择的数量06、0A一类的,导致我还是AA显示还是6AA。
这句没听懂. 但好像使用If是能解决.但为什么失败?是If不起效果?看起来你还在用老的IF大写语法.

不知道使用附加值20,21,22等是否也能解决你的问题.
Rozen - 2016/2/26 21:25:59
就是我用ComboBox1写入6AA的物品,然后用那个63附加的ComboBox2选择数量为2,触发[BEFORE WRITE]经过计算6AA的6变成了1*4+6=A,最终数值AAA;然后我用ComboBox1写入7AA的物品,在点下并保存时,又触发了ComboBox2的[BEFORE WRITE],本来是7的那个数值还是采用的1*4+6=A。
我想用if来判断我ComboBox1写入的是4xx还是5xx、6xx,大概是
63(if(高位地址的值=4)
[AFTER READ]
value = (value-4)/4
[BEFORE WRITE]
value = value*4+4
endif;
if (高位地址的值=5)
[AFTER READ]
value = (value-5)/4
[BEFORE WRITE]
value = value*4+5
……endif;)
那个高位地址的值怎么表达我不知道,这语法对不对我也拿不准。
Rozen - 2016/2/26 21:34:09
哦,我想通了,我的CB1call了savedata,但是没加范围……然后问题就剩1个了
Rozen - 2016/2/26 22:30:10
我现在换了个思路,将高位地址的值赋予TextBox1.Text,然后
63(if(TextBox1.Text=6)
[AFTER READ]
value = (value-6)/4
[BEFORE WRITE]
value = value*4+6;
else
[AFTER READ]
value = (value-7)/4
[BEFORE WRITE]
value = value*4+7
endif;)
现在问题是一切入这个Frame就提示Error2:if(textbox1.text=6),目测后续脚本就中断了,值写入没经过运算的0(表示1个)或1(表示2个)
Rozen - 2016/2/27 10:32:47
早上起来想了下,既然高位地址的值赋予TextBox1.Text了,那怎样才能实现
63(
[AFTER READ]
value = (value-TextBox1.Text)/4
[BEFORE WRITE]
value = value*4+TextBox1.Text
)
1
查看完整版本: PC_AA 63的[BEFORE WRITE]相当于自带锁定数据?