找回密码
 点一下
查看: 1076|回复: 6

如何动态创建trigger?

[复制链接]
发表于 2008-8-17 20:54:37 | 显示全部楼层 |阅读模式
我试过 先设置一个 trigger类型的变量,然后在游戏中   udg_aaa = CreateTrigger()。 然后在进行各种初始化,addCondition,addAction。结果失败。是不是说 war3 就不能动态创建trigger?
发表于 2008-8-17 20:57:09 | 显示全部楼层
你怎么做的
回复

使用道具 举报

 楼主| 发表于 2008-8-17 21:01:57 | 显示全部楼层
设置一个 变量 aaa
然后在游戏里的火球技能的trigger里包含如下语句:
    set udg_aaa = CreateTrigger(  )
    call TriggerAddCondition( udg_aaa, Condition( function onDamageTriggerConditions ) )
    call TriggerAddAction( udg_aaa, function onDamageTriggerActions )
    call TriggerRegisterUnitEvent( udg_aaa, targetUnit, EVENT_UNIT_DAMAGED )

当然了,这里面的用到的condition和action函数在上面我已经定义了。

作这个的初衷,我是希望,火球攻击到敌人的时候,在敌人身上加debuff。但是如果简单的用给trigger增加“单位接受伤害”event的话,就会出现第2次用火球打同一个目标,trigger就会运行2次的问题。如果我对同一个目标再用第3次火球,那这个trigger就会运行3次了。感觉似乎trigger的EVENT_UNIT_DAMAGE这个event可以无限叠加。所以我才会希望 动态地创建trigger,在那个trigger运行1次以后,就把那个trigger给destroy了。这样就不会出现EVENT_UNIT_DAMAGE的无限叠加问题了。

引用第3楼mnbvcxzqwe于2008-08-17 21:08发表的  :
我想问下,set udg_aaa = CreateTrigger(  )跟动态有什么关系?
写local不能么?

试了local, 没灵,所以换了全局的,再试试。
回复

使用道具 举报

发表于 2008-8-17 21:08:12 | 显示全部楼层
我想问下,set udg_aaa = CreateTrigger(  )跟动态有什么关系?
写local不能么?
回复

使用道具 举报

发表于 2008-8-17 21:44:40 | 显示全部楼层
为什么一定要动态创建乜?

不能事先创建然后动态“开启”么 ﹃_﹃〣
回复

使用道具 举报

 楼主| 发表于 2008-8-17 21:57:08 | 显示全部楼层
我的问题,我已经解决了。但是,war3能不能动态创建trigger呢? 不能?

我的方法比较不够”优雅“,不过总算是解决了。还是老方法。
事先创建好2个trigger。技能trigger和伤害trigger。在技能trigger里给伤害trigger添加“单位接收伤害”的event。在伤害trigger里,第一句就直接“关闭触发器-自己”。这样无论这个trigger里有多少event,只有其中1个可以运行。
这样的副作用就是,伤害trigger里,会有N多的同一个单位的“接受伤害event”。尽管只有1个可以运行。不过,这也属于一种“内存Leak”吧。

这样的效果和动态trigger实在是没法比啊。这样作还有1个问题: 火球飞出去的时候,刚好另一个火球打中某个人。结果伤害trigger刚刚EnableTrigger,还没被触发呢,就被DisableTrigger了。这可不是小问题啊。如果能动态创建,那多好啊。每次发火球的时候,等待火球的都是一个匿名的trigger。永远不会出现,1个火球把另一个火球的效果给关闭了的状况。
回复

使用道具 举报

 楼主| 发表于 2008-8-17 22:23:46 | 显示全部楼层
成功。
不是war3不能动态创建trigger。是刚才我自己犯低级错误。
local 也可以。匿名trigger。非常好用啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
今天有大收获,恩。不错。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-7-21 04:25 , Processed in 0.055786 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表