|
发表于 2011-9-27 05:15:32
|
显示全部楼层
之前没仔细想……刚才突然发现LZ这个T的意思是单位获得“大唐官府”这个物品后得到十种任务中的随机一种……不知道LZ是不是这个意思。。
这样的话就不要用循环了。。
直接随机数然后判断随到的值~
[trigger]未命名触发器 002
事件
单位 - 任意单位 获得物品
条件
((触发单位) 是 英雄) 等于 TRUE
(被操作物品) 等于 XXX
动作
设置 Z = (随机整数,最小值: 1 最大值: Count)
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
TTT[(((触发玩家) 的玩家索引号) + (Z x 12))] 等于 FALSE
Then - 动作
设置 TTT[(((触发玩家) 的玩家索引号) + (Z x 12))] = TRUE
游戏 - 对 (触发玩家) 在屏幕位移(0.00,0.00)处显示文本: String[Z]
Else - 动作
游戏 - 对 (触发玩家) 在屏幕位移(0.00,0.00)处显示文本: (已接受: + String[Z])
[/trigger]
补充说明:
1. 我设置的是12个玩家,TTT[13] - TTT[24]是给任务一用的,TTT[25] - TTT[36]是给任务二用的,……,TTT[121] - TTT[132]是给任务十用的~
LZ稍微计算下就知道了~
2. 上面这个T看起来的确是比较简洁,但实际上浪费了TTT[0] - TTT[12]这13个布尔值变量,所以稍适修改:
[trigger]未命名触发器 002
事件
单位 - 任意单位 获得物品
条件
((触发单位) 是 英雄) 等于 TRUE
(被操作物品) 等于 XXX
动作
设置 Z = (随机整数,最小值: 0 最大值: (Count - 1))
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
TTT[(((触发玩家) 的玩家索引号) + (Z x 12))] 等于 FALSE
Then - 动作
设置 TTT[(((触发玩家) 的玩家索引号) + (Z x 12))] = TRUE
游戏 - 对 (触发玩家) 在屏幕位移(0.00,0.00)处显示文本: String[(Z + 1)]
Else - 动作
游戏 - 对 (触发玩家) 在屏幕位移(0.00,0.00)处显示文本: (已接受: + String[(Z + 1)])
[/trigger]
这样就使所有TTT的数组减小了12,于是只浪费了TTT[0]这个变量~
3. 一张图的变量总数量是固定的,我记得是8192,不要觉得看起来很多,用起来很快的,比如这个任务就占用了至少121个变量,所以推荐换种方法,用单位组:
[trigger]未命名触发器 003
事件
单位 - 任意单位 获得物品
条件
((触发单位) 是 英雄) 等于 TRUE
(被操作物品) 等于 XXX
动作
设置 Z = (随机整数,最小值: 0 最大值: (Count - 1))
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
((触发单位) 在 G[Z] 中) 等于 TRUE
Then - 动作
游戏 - 对 (触发玩家) 在屏幕位移(0.00,0.00)处显示文本: (已接受: + String[(Z + 1)])
Else - 动作
单位组 - 为 G[Z] 添加 (触发单位)
游戏 - 对 (触发玩家) 在屏幕位移(0.00,0.00)处显示文本: String[(Z + 1)]
[/trigger]
这样就只用了G[0] - G[9]这10个单位组变量,其实LZ在第一个T里也可以从String[0]开始设置~,然后Count=9,这样就不用在第二个T里加减了~ |
|