利用数组变量的索引分配系统实现单人转多人,附SVEN风暴锤演示
魔兽地图编辑器吧
全部回复
仅看楼主
level 7
禾洛_ 楼主
1楼度娘,
2楼放sven风暴锤演示触发
2011年06月22日 10点06分 1
level 7
禾洛_ 楼主
Thunderbolt_01
┣━事件
┃   └—单位 - 任意单位 发动技能效果
┣━条件
┃   └—(施放技能) 等于 风暴之锤
┗━动作
     ├—设置 thunderbolt_own = (触发单位)
     ├—设置 thunderbolt_tag = (技能施放目标)
     ├—设置 Temp_dx = ((thunderbolt_tag 所在X轴坐标) - (thunderbolt_own 所在X轴坐标))
     ├—设置 Temp_dy = ((thunderbolt_tag 所在Y轴坐标) - (thunderbolt_own 所在Y轴坐标))
     ├—设置 Temp_angle = (Atan(Temp_dy : Temp_dx))
     ├—设置 thunderbolt = (新建 ((触发单位) 的所有者) 的 风暴之锤马甲 在(((触发单位) 所在X轴坐标),((触发单位) 所在Y轴坐标)),面向角度:(Temp_angle x (180.00 / π)) 度)
     ├—计时器 - 启动 thunderbolt_timer,应用计时方式: 循环,计时周期为 0.02 秒
     └—触发器 - 运行 Thunderbolt_02 <预设> (无视条件)

2011年06月22日 10点06分 2
level 7
禾洛_ 楼主
Thunderbolt_02
┣━事件
┃   └—时间 - thunderbolt_timer 到期
┣━条件
┗━动作
     ├—设置 Temp_dx = ((thunderbolt_tag 所在X轴坐标) - (thunderbolt 所在X轴坐标))
     ├—设置 Temp_dy = ((thunderbolt_tag 所在Y轴坐标) - (thunderbolt 所在Y轴坐标))
     ├—设置 Temp_angle = (Atan(Temp_dy : Temp_dx))
     ├—设置 Temp_dl = (((Temp_dx x Temp_dx) + (Temp_dy x Temp_dy)) 的平方根)
     └—如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
            If - 条件
                Temp_dl 小于或等于 50.00
            Then - 动作
                计时器 - 暂停 thunderbolt_timer
                设置 Temp_point01 = (thunderbolt 的位置)
                设置 Temp_group = (半径为 225.00 圆心为 Temp_point01 且满足 ((((匹配单位) 是 (thunderbolt_own 的所有者) 的敌对单位) 等于 TRUE) 且 (((匹配单位) 的 生命值) 大于 0.00)) 的所有单位)
                单位组 - 选取 Temp_group 内所有单位做动作
                    Loop - 动作
                        设置 Temp_unit = (新建 (thunderbolt_own 的所有者) 的 马甲 在(((选取单位) 所在X轴坐标),((选取单位) 所在Y轴坐标)),面向角度:0.00 度)
                        单位 - 为 Temp_unit 设置 水元素 类型的生命周期,持续时间为 0.50 秒
                        单位 - 为 Temp_unit 添加 风暴之锤 马甲技能
                        单位 - 设置 Temp_unit 的 风暴之锤 马甲技能 等级为 (thunderbolt_own 的 风暴之锤 技能等级)
                        单位 - 对 Temp_unit 发布 人族山丘之王 - 风暴之锤 命令到目标: (选取单位)
                单位组 - 删除 Temp_group
                点 - 清除 Temp_point01
                单位 - 杀死 thunderbolt
            Else - 动作
                单位 - 设置 thunderbolt 的X坐标为 ((thunderbolt 所在X轴坐标) + (25.00 x (Cos(Temp_angle))))
                单位 - 设置 thunderbolt 的Y坐标为 ((thunderbolt 所在Y轴坐标) + (25.00 x (Sin(Temp_angle))))
                单位 - 设置 thunderbolt 的面向角度为 (Temp_angle x (180.00 / π)) 度
2011年06月22日 10点06分 3
level 7
禾洛_ 楼主
index
┣━事件
┣━条件
┗━动作
     └—循环动作[循环整数A]从 1 到 1000, 运行 (Loop - 动作)
            Loop - 动作
                如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                    If - 条件
                        index_bl[(循环整数A)] 等于 FALSE
                    Then - 动作
                        设置 index = (循环整数A)
                        设置 index_bl[(循环整数A)] = TRUE
                        设置循环整数A的值为 1000
                    Else - 动作

2011年06月22日 10点06分 4
level 7
禾洛_ 楼主
好,接下来,当我们需要用到索引变量index时,只需要运行一下这个触发就可以了。接下来回到SVEN锤子的触发中,首先我们要先为sven锤子的计时器到期事件添加事件:
Thunderbolt2_00
┣━事件
┃   └—时间 - 当游戏逝去 0.00 秒
┣━条件
┗━动作
     └—循环动作[循环整数A]从 1 到 1000, 运行 (Loop - 动作)
            Loop - 动作
                触发器 - 为 Thunderbolt2_02 <预设> 添加事件: (时间 - thunderbolt_timer2[(循环整数A)] 到期)

2011年06月22日 10点06分 5
level 7
禾洛_ 楼主
接下来,只需要对楼上的SVEN锤做出小小的改动就能实现单人转多人了:
Thunderbolt2_01
┣━事件
┃   └—单位 - 任意单位 发动技能效果
┣━条件
┃   └—(施放技能) 等于 风暴之锤 无CD
┗━动作
     ├—设置 thunderbolt_own = (触发单位)
     ├—设置 thunderbolt_tag = (技能施放目标)
     ├—设置 Temp_dx = ((thunderbolt_tag 所在X轴坐标) - (thunderbolt_own 所在X轴坐标))
     ├—设置 Temp_dy = ((thunderbolt_tag 所在Y轴坐标) - (thunderbolt_own 所在Y轴坐标))
     ├—设置 Temp_angle = (Atan(Temp_dy : Temp_dx))
     ├—设置 thunderbolt = (新建 ((触发单位) 的所有者) 的 风暴之锤马甲 在(((触发单位) 所在X轴坐标),((触发单位) 所在Y轴坐标)),面向角度:(Temp_angle x (180.00 / π)) 度)
     ├—触发器 - 运行 index <预设> (无视条件)
     ├—设置 thunderbolt2[index] = thunderbolt
     ├—设置 thunderbolt_own2[index] = thunderbolt_own
     ├—设置 thunderbolt_tag2[index] = thunderbolt_tag
     └—计时器 - 启动 thunderbolt_timer2[index],应用计时方式: 循环,计时周期为 0.02 秒
对比2楼的触发,你会发现我们在这个触发中,分配了一个动态索引index,然后将单位变量赋值给了单位数组变量,将运行timer变成了运行timer[index],然后继续进行第二个触发的改动:
2011年06月22日 10点06分 6
level 7
禾洛_ 楼主
Thunderbolt2_02
┣━事件
┣━条件
┗━动作
     └—循环动作[循环整数A]从 1 到 1000, 运行 (Loop - 动作)
            Loop - 动作
                如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                    If - 条件
                        (到期的计时器) 等于 thunderbolt_timer2[(循环整数A)]
                    Then - 动作
                        设置 index = (循环整数A)
                        设置循环整数A的值为 1000
                        设置 thunderbolt = thunderbolt2[index]
                        设置 thunderbolt_own = thunderbolt_own2[index]
                        设置 thunderbolt_tag = thunderbolt_tag2[index]
                        设置 thunderbolt_timer = thunderbolt_timer2[index]
                        设置 Temp_dx = ((thunderbolt_tag 所在X轴坐标) - (thunderbolt 所在X轴坐标))
                        设置 Temp_dy = ((thunderbolt_tag 所在Y轴坐标) - (thunderbolt 所在Y轴坐标))
                        设置 Temp_angle = (Atan(Temp_dy : Temp_dx))
                        设置 Temp_dl = (((Temp_dx x Temp_dx) + (Temp_dy x Temp_dy)) 的平方根)
                        如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                            If - 条件

2011年06月22日 10点06分 7
level 7
禾洛_ 楼主
                                Temp_dl 小于或等于 50.00
                            Then - 动作
                                计时器 - 暂停 thunderbolt_timer
                                设置 Temp_point01 = (thunderbolt 的位置)
                                设置 Temp_group = (半径为 225.00 圆心为 Temp_point01 且满足 ((((匹配单位) 是 (thunderbolt_own 的所有者) 的敌对单位) 等于 TRUE) 且 (((匹配单位) 的 生命值) 大于 0.00)) 的所有单位)
                                单位组 - 选取 Temp_group 内所有单位做动作
                                    Loop - 动作
                                        设置 Temp_unit = (新建 (thunderbolt_own 的所有者) 的 马甲 在(((选取单位) 所在X轴坐标),((选取单位) 所在Y轴坐标)),面向角度:0.00 度)
                                        单位 - 为 Temp_unit 设置 水元素 类型的生命周期,持续时间为 0.50 秒
                                        单位 - 为 Temp_unit 添加 风暴之锤 马甲技能
                                        单位 - 设置 Temp_unit 的 风暴之锤 马甲技能 等级为 (thunderbolt_own 的 风暴之锤 技能等级)
                                        单位 - 对 Temp_unit 发布 人族山丘之王 - 风暴之锤 命令到目标: (选取单位)

2011年06月22日 10点06分 8
level 7
禾洛_ 楼主
                                单位组 - 删除 Temp_group
                                点 - 清除 Temp_point01
                                单位 - 杀死 thunderbolt
                                设置 index_bl[index] = FALSE
                            Else - 动作
                                单位 - 设置 thunderbolt 的X坐标为 ((thunderbolt 所在X轴坐标) + (5.00 x (Cos(Temp_angle))))
                                单位 - 设置 thunderbolt 的Y坐标为 ((thunderbolt 所在Y轴坐标) + (5.00 x (Sin(Temp_angle))))
                                单位 - 设置 thunderbolt 的面向角度为 (Temp_angle x (180.00 / π)) 度
                    Else - 动作
在这个触发中,我们又将单位数组变量赋值回单位变量,从而实现了利用索引index来转换单人触发的需求。当然要记得在使用完后set index_bl[index]=false来清空索引以方便下次调用。
2011年06月22日 10点06分 9
level 7
禾洛_ 楼主

2011年06月22日 10点06分 10
level 9
一看就是J转T。。。。
2011年06月22日 10点06分 11
level 9
不加等待的触发里马甲我在T里一般不腾出变量,直接创建单位+最后创建的单位Xx
2011年06月22日 10点06分 12
1