|
|
这是我们一般用utm修改的界面在上面有两个窗口
左边是反编译,就是code,代码;右边是反汇编,修改gml_Object_o_player_Step_0需要在右边修改pushi.e的值
比如修改等级上限在左边code是
max_xp = 250 * scr_atr("LVL") //每级需250*等级的经验
if (scr_atr("LVL") == 30) //等级上限30
{
if (scr_atr("XP") >= max_xp)
scr_atr_set("XP", (max_xp - 1))
}
if (scr_atr("XP") >= max_xp)
{
scr_atr_incr("LVL", 1)
scr_atr_set("XP", (scr_atr("XP") - max_xp))
var _lvl = scr_atr("LVL")
with (o_skill_ico)
event_user(1)
scr_psychic_accumulation(4, 100, 2)
scr_atr_incr("AP", 1) //每级给1ap
_oldXp = max_xp
scr_atr_incr("SP", 1) //每级给1sp
instance_create_depth(x, y, 0, o_lvlup)
HP = max_hp
if (_lvl > 1)
{
scr_actionsLog("level", [scr_id_get_name(id), scr_atr("LVL")])
if (!audio_is_playing(snd_level_up))
audio_play_sound(snd_level_up, 4, 0)
scr_characterStatsUpdateReplace("timeLevel", (global.timeLevel / (_lvl - 1)))
}
scr_atr_calc(id)
}
但直接在左边改就会报错,所以我们需要在右边找到这些数据对应的位置
:[40]
pushi.e 250 //每级需要的经验递增数,修改为你想要的数字
push.s "LVL"@1244
conv.s.v
call.i gml_Script_scr_atr(argc=1)
mul.v.i
pop.v.v self.max_xp
push.s "LVL"@1244
conv.s.v
call.i gml_Script_scr_atr(argc=1)
pushi.e 30 //等级上限的位置,修改为你想要的数字
cmp.i.v EQ
bf [43]
:[46]
popenv [45]
pushi.e 2
conv.i.v
pushi.e 100
conv.i.v
pushi.e 4
conv.i.v
call.i gml_Script_scr_psychic_accumulation(argc=3)
popz.v
pushi.e 1 //每次升级给的ap数,同上
conv.i.v
push.s "AP"@3176
conv.s.v
call.i gml_Script_scr_atr_incr(argc=2)
popz.v
push.v self.max_xp
pop.v.v self._oldXp
pushi.e 1 //每次升级给的sp数,同上
conv.i.v
push.s "SP"@3177
修改完成后再次点击左侧窗口,等待加载完成后你就会发现代码已经改变好了,但是此时保存就会跳出你所发的第二条报错savecodechange(),原因就是改的是右边反汇编的部分,左边code的变化是右边修改导致的,所以他检测不到你对code的修改痕迹,故而报错,只需要在左边空白的地方敲两下空格再保存就不会跳出savecodechange()的报错了
|
|