|
楼主 |
发表于 2008-3-29 19:33:18
|
显示全部楼层
基础多面版-英雄技能展示,附新随机选择英雄
先说随机选择英雄,不同于我的防守图演示,这里利用了一个循环跳出的方式简化了很多的操作。除了定义单位类型的触发,就是执行选择的部分了,可以看到我这里定义了一个玩家组变量Player_group,然后用来取代下面的(所有 用户 控制的玩家)这个组值,值得一提的是,中间有一个语句无法取得,原来就是我在疑难区发的帖子,不能在枚举中获取组中单位数量。
然后就是Un,一个整数型变量,用来获取随机数,因为我设定的英雄一共六个,所以是1到6,再接下来就是重点了,N_FOR是整数型变量,这一句是自定义数循环,使用这个的好处下面就可以看到了。这个循环的作用就是下面的判断语句: (Hero[N_FOR] 的类型) 等于 Set_Hero_Type[Un],这一句的效果就是每一个玩家在创建英雄的时候,都会把单位组变量Hero[?]的类型和单位类型变量Set_Hero_Type[?]进行对比,因为是循环嘛,所以如果已经选择过的英雄会因为下面的Hero[?]赋值动作被赋值,所以当比较出已经被选择过的单位,就会再次对随机数进行赋值,而把N_FOR 赋值为0就可以再一次重复进行循环比较,直到选出不相同的单位为止。
[trigger] 事件
时间 - 游戏开始 1.00 秒
条件
动作
设置 Player_group = (所有 用户 控制的玩家)
玩家组 - 选取 Player_group 内所有玩家做动作
Loop - 动作
设置 Un = (随机整数,最小值: 1 最大值: 6)
-------- 因为涉及到枚举过程中无法获取玩家组数值,因此这里不做修改 --------
For N_FOR 从 1 到 ((所有 用户 控制的玩家) 中的玩家数量), 做动作
Loop - 动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
(Hero[N_FOR] 的类型) 等于 Set_Hero_Type[Un]
Then - 动作
设置 Un = (随机整数,最小值: 1 最大值: 6)
设置 N_FOR = 0
Else - 动作
无动作
单位 - 创建 1 个 Set_Hero_Type[Un] 给 (选取玩家) 在 ((选取玩家) 的游戏开始位置) ,面向角度为 默认建筑朝向 度
设置 Hero[((选取玩家) 的玩家索引号)] = (最后创建的单位)[/trigger]
然后就是多面版的基本设置,多面版就是二元格子,以行和列组合来定位,一般来说,我们创建的多面版需要先做一个标题和分类,分类都是做在第一行:
[trigger] 事件
时间 - 游戏开始 1.00 秒
条件
动作
可见度 - 禁用战争迷雾
可见度 - 禁用战争迷雾
-------- 列数固定,行数为基础面版的1行 --------
多面板 - 创建一个列数为 5 行数为 1 标题为 技能一览表 的多面板
设置 Mulirboard = (最后创建的多面板)
多面板 - 设置 Mulirboard 第 1 列,第 1 行的项目文本为 英雄名字
多面板 - 设置 Mulirboard 第 2 列,第 1 行的项目文本为 技能1
多面板 - 设置 Mulirboard 第 3 列,第 1 行的项目文本为 技能2
多面板 - 设置 Mulirboard 第 4 列,第 1 行的项目文本为 技能3
多面板 - 设置 Mulirboard 第 5 列,第 1 行的项目文本为 技能4[/trigger]
另外就是添加的部分,因为做的是英雄技能展示的演示,所以需要指定显示一些英雄的数据,在前面已经定义好英雄的数值和技能以后,对选定的英雄进行添加到多面版的操作(接前面选择英雄以后):
[trigger] 多面板 - 设置 Mulirboard 的行数为 ((Mulirboard 的行数) + 1)
设置 Hero_name_s[(((选取玩家) 的玩家索引号) + 1)] = (转换 (Hero[((选取玩家) 的玩家索引号)] 的类型) 为字符串)
多面板 - 设置 Mulirboard 第 1 列,第 (((选取玩家) 的玩家索引号) + 1) 行的项目文本为 (Hero[((选取玩家) 的玩家索引号)] 的名字)
多面板 - 设置 Mulirboard 第 2 列,第 (((选取玩家) 的玩家索引号) + 1) 行的项目文本为 ((Set_Hero_ability[((Un x 4) - 3)] 的名称) + ((转换 (Set_Hero_ability[((Un x 4) - 3)] 的等级对 (触发单位)) 为字符串) + 级))
多面板 - 设置 Mulirboard 第 3 列,第 (((选取玩家) 的玩家索引号) + 1) 行的项目文本为 ((Set_Hero_ability[((Un x 4) - 2)] 的名称) + ((转换 (Set_Hero_ability[((Un x 4) - 2)] 的等级对 (触发单位)) 为字符串) + 级))
多面板 - 设置 Mulirboard 第 4 列,第 (((选取玩家) 的玩家索引号) + 1) 行的项目文本为 ((Set_Hero_ability[((Un x 4) - 1)] 的名称) + ((转换 (Set_Hero_ability[((Un x 4) - 1)] 的等级对 (触发单位)) 为字符串) + 级))
多面板 - 设置 Mulirboard 第 5 列,第 (((选取玩家) 的玩家索引号) + 1) 行的项目文本为 ((Set_Hero_ability[((Un x 4) - 0)] 的名称) + ((转换 (Set_Hero_ability[((Un x 4) - 0)] 的等级对 (触发单位)) 为字符串) + 级))
[/trigger]
这样已经把随机选到的英雄都添加进了多面版,然后再进一步操作多面版,因为默认格子比较小,所以需要做放大处理,最后还需要显示出来:
[trigger] For循环整数A从 1 到 5, 做动作
Loop - 动作
For循环整数B从 1 到 ((Player_group 中的玩家数量) + 1), 做动作
Loop - 动作
多面板 - 设置 Mulirboard 第 (循环整数A) 列,第 (循环整数B) 行的项目宽度为屏幕的 5.00%
多面板 - 设置 Mulirboard 第 0 列,第 0 行项目的显示风格: 显示 文字 隐藏 图标
多面板 - 显示 Mulirboard[/trigger]
到这里,多面版的基本设定完成了,最后就需要做多面版的更新,因为这里是展示技能,所以当技能提升等级以后,就进行更新操作,这里用到了一个循环的嵌套:
[trigger] 事件
单位 - 任意单位 学习技能
条件
动作
-------- 这里循环的2是多面版起始行 --------
For N_FOR 从 2 到 ((Player_group 中的玩家数量) + 1), 做动作
Loop - 动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
((触发单位) 的类型) 等于 (转换 Hero_name_s[N_FOR] 为单位类型)
Then - 动作
-------- 这里循环的1到6就是设定的英雄类型数量,进行二次判断比较 --------
For N_FOR2 从 1 到 6, 做动作
Loop - 动作
-------- 当触发单位和多面版上单位名称相对应的时候,再次判断触发单位对应的单位类型并调用技能 --------
如果所有条件成立则做动作1,否则做动作2
If - 条件
((触发单位) 的类型) 等于 Set_Hero_Type[N_FOR2]
Then - 动作
游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: Hero_name_s[N_FOR]
多面板 - 设置 Mulirboard 第 2 列,第 N_FOR 行的项目文本为 ((Set_Hero_ability[((N_FOR2 x 4) - 3)] 的名称) + ((转换 (Set_Hero_ability[((N_FOR2 x 4) - 3)] 的等级对 (触发单位)) 为字符串) + 级))
多面板 - 设置 Mulirboard 第 3 列,第 N_FOR 行的项目文本为 ((Set_Hero_ability[((N_FOR2 x 4) - 2)] 的名称) + ((转换 (Set_Hero_ability[((N_FOR2 x 4) - 2)] 的等级对 (触发单位)) 为字符串) + 级))
多面板 - 设置 Mulirboard 第 4 列,第 N_FOR 行的项目文本为 ((Set_Hero_ability[((N_FOR2 x 4) - 1)] 的名称) + ((转换 (Set_Hero_ability[((N_FOR2 x 4) - 1)] 的等级对 (触发单位)) 为字符串) + 级))
多面板 - 设置 Mulirboard 第 5 列,第 N_FOR 行的项目文本为 ((Set_Hero_ability[((N_FOR2 x 4) - 0)] 的名称) + ((转换 (Set_Hero_ability[((N_FOR2 x 4) - 0)] 的等级对 (触发单位)) 为字符串) + 级))
Else - 动作
Else - 动作
无动作
[/trigger] |
|