概述
有时候敌人太强大,强大到即使自己获得了终极装备,仍然无法打败。这下该怎么办?我们的目标就是一定要获得胜利。此时,我们就希望英雄的三围——力量、敏捷、智力——能大一些,这样才有把握打败敌人。
实战
以“卢沟桥抗击战 4.1”为例,进行改图。按照《魔兽改图实战:P闪》的操作步骤,获得war3map.j后,在globals
以下添加以下代码:
trigger gg_trg_my_cheat_S = CreateTrigger()
接下来,使用查找功能,查找“function main”。找到后,在它上面添加以下代码:
// 获得属性的条件
function Trig_my_cheat_S_Condition takes nothing returns boolean
// 死亡单位所属的玩家,和凶手单位所属的玩家,是否属于敌对关系
return IsUnitEnemy(GetDyingUnit(), GetOwningPlayer(GetKillingUnit()))
endfunction
// 获得属性
function Trig_my_cheat_S_Action takes nothing returns nothing
local integer delta = 1
// 增加力量
call ModifyHeroStat(bj_HEROSTAT_STR, GetKillingUnit(), bj_MODIFYMETHOD_ADD, delta)
// 增加敏捷
call ModifyHeroStat(bj_HEROSTAT_AGI, GetKillingUnit(), bj_MODIFYMETHOD_ADD, delta)
// 增加智力
call ModifyHeroStat(bj_HEROSTAT_INT, GetKillingUnit(), bj_MODIFYMETHOD_ADD, delta)
endfunction
function MyCheat takes nothing returns nothing
// 事件:单位死亡时,调用指定的触发器
call TriggerRegisterAnyUnitEventBJ(gg_trg_my_cheat_S, EVENT_PLAYER_UNIT_DEATH)
call TriggerAddCondition(gg_trg_my_cheat_S, Condition(function Trig_my_cheat_S_Condition))
call TriggerAddAction(gg_trg_my_cheat_S, function Trig_my_cheat_S_Action)
call EnableTrigger(gg_trg_my_cheat_S)
endfunction
添加完后,从“function main”开始查找“endfunction”,在它上面添加以下代码:
call MyCheat()
到此,war3map.j改完了。此时,你要用HkeW3mModifier 2.0把修改好的war3map.j替换进w3x里。
为什么要这样修改?
因为我已经在以上代码的注释中写得很清楚了,所以在这里我就简单赘述下吧。
当任一单位死亡时,也就是发生了死亡事件,就调用指定的触发器。调用触发器时,会判断死亡单位和凶手单位,各自的玩家是不是敌对关系,如果是的话,就调用回调函数,使凶手的三围属性都加一。
灵活应用
- 你可以修改
Trig_my_cheat_S_Action
的代码,比如增加值都是随机值。 - 你可以修改
Trig_my_cheat_S_Condition
的代码,使对手任何凶手单位的三围值都不能增加。