找回密码
 点一下
查看: 1697|回复: 31

如何根据变量调用触发器

[复制链接]
发表于 2014-6-6 11:50:13 | 显示全部楼层 |阅读模式
本帖最后由 flylicat 于 2014-6-6 14:13 编辑

现有触发器/函数/动作:abc001~abc999 个
整数K(1<=K<=999)


如何根据k的值调用对应的触发器/函数/动作



感觉是可以用脚本,但是我不太会

多确认一个问题:
在触发器里面调用函数/动作的时候,触发器是中断的么。(就像调用触发器里面那个“结束前等待”)
发表于 2014-6-6 12:19:03 | 显示全部楼层
可以通过IF ELSE动作来实现以变量的值当判断条件执行动作.
"现有触发器/函数/动作:abc001~abc999 个"是什么?

点评

就是有999个触发器 名字分别是abc001 ; abc002 ; …… ;abc999  详情 回复 发表于 2014-6-6 14:07
回复

使用道具 举报

发表于 2014-6-6 13:13:30 | 显示全部楼层
If...Then...Else
Switch

点评

这个我知道……有没有更简洁的办法  详情 回复 发表于 2014-6-6 14:11
回复

使用道具 举报

 楼主| 发表于 2014-6-6 14:07:53 | 显示全部楼层
qq1557504134 发表于 2014-6-6 12:19
可以通过IF ELSE动作来实现以变量的值当判断条件执行动作.
"现有触发器/函数/动作:abc001~abc999 个"是什 ...

就是有999个触发器 名字分别是abc001 ; abc002 ; …… ;abc999

点评

不止999个,最后一个恐怕是ZZZ999.  详情 回复 发表于 2014-6-6 14:11
回复

使用道具 举报

 楼主| 发表于 2014-6-6 14:11:07 | 显示全部楼层
空人 发表于 2014-6-6 13:13
If...Then...Else
Switch

这个我知道……有没有更简洁的办法
回复

使用道具 举报

发表于 2014-6-6 14:11:48 | 显示全部楼层
flylicat 发表于 2014-6-6 14:07
就是有999个触发器 名字分别是abc001 ; abc002 ; …… ;abc999

不止999个,最后一个恐怕是ZZZ999.

点评

abc是固定的好么,变的只有数字。所以才奢望能用一个数值变量来控制  详情 回复 发表于 2014-6-6 14:14
回复

使用道具 举报

 楼主| 发表于 2014-6-6 14:14:39 | 显示全部楼层
qq1557504134 发表于 2014-6-6 14:11
不止999个,最后一个恐怕是ZZZ999.

abc是固定的好么,变的只有数字。所以才奢望能用一个数值变量来控制
回复

使用道具 举报

发表于 2014-6-6 18:02:52 | 显示全部楼层
本帖最后由 四夕水草肃 于 2014-6-6 18:10 编辑

触发器本体什么的四夕水还说不准,但是对于自定义动作/函数来说……乃为什么不定义一个abc的动作/函数然后把001~999作为参数传入?
这么说的话给触发器准备一个全局变量,用来赋值001~999,然后用一个名为abc的触发器根据该值来执行动作……嗯嗯,这个主意赞。
回复

使用道具 举报

发表于 2014-6-6 20:39:32 | 显示全部楼层
用脚本的话可以直接把函数名当作字符串参数来传入。


trigger A=TriggerCreate(“函数名”);
TriggerExecute(A, true, false);
TriggerDestroy(A);

只要你的函数名最后是以1-100结尾的,就可以直接拼字符串。

点评

trigger 是触发器把,可是传不了参数,满足不了需求啊(类似递归的东西,不用参数能完成么) 而TriggerExecute(A, true, false);实验过了,调用不了自定义函数和动作。 脚本里面函数声明是viod 调用是直接 函  详情 回复 发表于 2014-6-10 16:34
回复

使用道具 举报

发表于 2014-6-8 18:28:53 | 显示全部楼层
如果原理上能实现,建议做一个ABC函数,然后把数字1-999作为参数,内容根据参数来进行计算(比如参数为1时创建f(1)个陆战队员,参数为2时则创建f(2)个陆战队员)。如果内容无法通过数学计算得到(比如参数为1时创建若干个机枪兵,参数为2时则杀死某个单位)那么使用自定义脚本最简单(头目已给方法)。如果你又不想使用自定义脚本的话,可以用一个数组来记录这些函数,用后缀数字作为下标,调用时直接提供下标就可以了,或者你不想用数字而喜欢使用数据表什么的也行。
回复

使用道具 举报

 楼主| 发表于 2014-6-9 14:57:14 | 显示全部楼层
无标题的触发器 001
    事件
        触发器 -名为"abc100"的常规事件
    局部变量
        K = 100 <整数>
        MM = "" <字符串>
    条件
    动作
        变量 -设置MM = ("abc" + (字符串(K)))
        触发器 -发送名为MM的常规触发器事件

感谢头目的脚本,这应该是对应的触发器吧,用常规出发事件来解决。第一次用这种触发事件,应该没有bug吧。求肯定,如果没问题就确定是它了。
回复

使用道具 举报

 楼主| 发表于 2014-6-9 18:01:13 | 显示全部楼层
本帖最后由 flylicat 于 2014-6-9 18:05 编辑

触发器的方法放弃了,不能传参数和多开线程没法继续了。

现在尝试头目那句脚本,但遇到了问题

现有自定义动作:abc145
然后
        K = 145 <整数>
        MM = " <字符串>
        变量 -设置MM = ("abc" + (字符串(K)))
        常规 -自定义脚本:TriggerExecute(MM, true, false);
结果是“无效的参数列表”,目标是“MM”

是不是意思是脚本调用不了自定义动作,只能调用在脚本里面写的函数?
求头目再看一眼

全脚本的话我干不来,只能用四夕水的方法,在一个函数里挂上百个IF。。THEN。。……(这算是勤能补拙的例子么……)

补充:执行内容是yxxiaobin说的那个不根据变量计算的,每个内容都不一样
回复

使用道具 举报

 楼主| 发表于 2014-6-10 16:34:01 | 显示全部楼层
麦德三世 发表于 2014-6-6 20:39
用脚本的话可以直接把函数名当作字符串参数来传入。

trigger 是触发器把,可是传不了参数,满足不了需求啊(类似递归的东西,不用参数能完成么)
而TriggerExecute(A, true, false);实验过了,调用不了自定义函数和动作。

脚本里面函数声明是viod
调用是直接  函数名(参数)

不知道还有没有像触发器那样根据 字符串 来调用函数的的函数
求头目再看一眼
回答个不能我就老老实实勤能补拙了
回复

使用道具 举报

发表于 2014-6-11 14:04:07 | 显示全部楼层
我更好奇你为什么要用1000个类似的触发...
回复

使用道具 举报

发表于 2014-6-11 14:05:59 | 显示全部楼层
楼主可以加我Q我帮你瞧瞧848732202
回复

使用道具 举报

发表于 2014-6-11 18:01:27 | 显示全部楼层
最主要的是1000个不完全类似的触发……四夕水也很好奇。
回复

使用道具 举报

发表于 2014-6-12 09:59:21 | 显示全部楼层
001-999是999个触发啊,两位楼上的,哇哈哈
我也好奇这999个触发,就算复制粘贴再修改也够累的,真佩服楼主

点评

不是专门为了水我弄的小号吧,还是第一帖,还是感谢帮顶 这只是问问题的方式,如果我举的例子只有10个触发,那还不全人类劝我用条件判断了。  详情 回复 发表于 2014-6-12 17:25
回复

使用道具 举报

 楼主| 发表于 2014-6-12 17:25:39 | 显示全部楼层
打完酱油就走人 发表于 2014-6-12 09:59
001-999是999个触发啊,两位楼上的,哇哈哈
我也好奇这999个触发,就算复制粘贴再修改也够累的,真佩服楼 ...

不是专门为了水我弄的小号吧,还是第一帖,还是感谢帮顶

这只是问问题的方式,如果我举的例子只有10个触发,那还不全人类劝我用条件判断了。

点评

没有啊,我是新人 条条大道通罗马,如果一个方法实在行不通,那就用别的方法嘛,只要结果一样就行了,又何必执着于用触发器执行,把触发器的动作都复制到Switch语句里不是很简单嘛  详情 回复 发表于 2014-6-12 19:19
回复

使用道具 举报

发表于 2014-6-12 18:01:01 | 显示全部楼层
1000只是虚指……跟“大约1000”或者“将近1000”是一个意思。
回复

使用道具 举报

发表于 2014-6-12 19:19:40 | 显示全部楼层
flylicat 发表于 2014-6-12 17:25
不是专门为了水我弄的小号吧,还是第一帖,还是感谢帮顶

这只是问问题的方式,如果我举的例子只有10个 ...

没有啊,我是新人
条条大道通罗马,如果一个方法实在行不通,那就用别的方法嘛,只要结果一样就行了,又何必执着于用触发器执行,把触发器的动作都复制到Switch语句里不是很简单嘛
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-4 00:01 , Processed in 0.389247 second(s), 33 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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