找回密码
 点一下
查看: 896|回复: 3

请问我这套触发是不是重复运行了?

[复制链接]
发表于 2010-3-21 20:27:14 | 显示全部楼层 |阅读模式
先说说该触发的想法,该触发的想法是,由于魔兽的防甲不能直接抵抗减少法术伤害,因此我用补捉伤害、抵消伤害、制造伤害的方法将记录好的技能伤害(技能伤害尾数带小数)转化为穿刺型普通伤害,使得防御力能减少法术伤害的同时,拥有艾鲁尼等技能也能抵抗部分伤害,而同时,我的地图拥有类似“无光之盾”的消耗型抵抗伤害道具,同样是用补捉、抵消伤害的方法做,但以下触发似乎重叠了,我开始还没发觉,因为我堆在一起不能发动正常,现在看多了,仔细想多了,这两套触发是不是可以以多个IF来堆在一起,并且提高效率和减少现有的错误?那么,以下是触发,麻烦大家看看。









单位组 - 选取 ((完整地图区域) 内的所有单位) 内所有单位做动作
    Loop - 动作
        -------- ---------------------------------------------------------- --------
        触发器 - 为 FYLXT <预设> 添加事件: (单位 - (选取单位) 接受伤害)
        设置 SHDK_Unit[SHDK_Max[0]] = (选取单位)
        自定义代码: if udg_SHDK_time[udg_SHDK_Max[0]] == null then
        设置 SHDK_time[SHDK_Max[0]] = (新建的计时器)
        自定义代码: endif
        触发器 - 为 FYLXT II <预设> 添加事件: (时间 - SHDK_time[SHDK_Max[0]] 到期)
        设置 SHDK_Max[0] = (SHDK_Max[0] + 1)
        -------- ---------------------------------------------------------- --------
        触发器 - 为 FYLXT III <预设> 添加事件: (单位 - (选取单位) 接受伤害)
        设置 SHDK_Unit_II[SHDK_Max[1]] = (选取单位)
        自定义代码: if udg_SHDK_time_II[udg_SHDK_Max[1]] == null then
        设置 SHDK_time_II[SHDK_Max[1]] = (新建的计时器)
        自定义代码: endif
        触发器 - 为 FYLXT IV <预设> 添加事件: (时间 - SHDK_time_II[SHDK_Max[1]] 到期)
        设置 SHDK_Max[1] = (SHDK_Max[1] + 1)

-------------------------------------------------------------------------------------------------------------------
FYLXT
    事件
    条件
        (单位所受伤害) 大于 0.00
    动作
        如果所有条件成立则做动作1,否则做动作2
            If - 条件
                任一条件成立
                    条件
                        (单位所受伤害) 等于 12.01
                                                (单位所受伤害) 等于 省略N
                                                (单位所受伤害) 等于 200000.02
            Then - 动作
                For SHDK_Index[0] 从 0 到 (SHDK_Max[0] - 1), 做动作
                    Loop - 动作
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                (触发单位) 等于 SHDK_Unit[SHDK_Index[0]]
                            Then - 动作
                                自定义代码: exitwhen true
                            Else - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        (单位所受伤害) 大于或等于 (SHDK_Unit[SHDK_Index[0]] 的 生命值)
                    Then - 动作
                        单位 - 为 SHDK_Unit[SHDK_Index[0]] 添加 伤害抵抗 生命值
                    Else - 动作
                设置 SHDK_Damage[0] = (单位所受伤害)
                设置 SHDK_Source[SHDK_Index[0]] = (伤害来源)
                计时器 - 开启 SHDK_time[SHDK_Index[0]] ,计时方式: 一次性 时间设置: 0.00 秒
            Else - 动作
-------------------------------------------------------------------------------------------------------------------
FYLXT II
    事件
    条件
    动作
        For SHDK_Index[0] 从 0 到 (SHDK_Max[0] - 1), 做动作
            Loop - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        (到期的计时器) 等于 SHDK_time[SHDK_Index[0]]
                    Then - 动作
                        自定义代码: exitwhen true
                    Else - 动作
        单位 - 设置 SHDK_Unit[SHDK_Index[0]] 的生命值为 ((SHDK_Unit[SHDK_Index[0]] 的 生命值) + SHDK_Damage[0])
        单位 - 为 SHDK_Unit[SHDK_Index[0]] 删除 伤害抵抗 生命值
        如果所有条件成立则做动作1,否则做动作2
            If - 条件
                SHDK_Damage[0] 不等于 200000.02
            Then - 动作
                单位 - 命令 SHDK_Source[SHDK_Index[0]] 对 SHDK_Unit[SHDK_Index[0]] 造成 (SHDK_Damage[0] - 0.01) 点伤害,攻击类型: 穿刺 伤害类型: 普通
            Else - 动作
                单位 - 命令 SHDK_Source[SHDK_Index[0]] 对 SHDK_Unit[SHDK_Index[0]] 造成 (SHDK_Damage[0] - 0.02) 点伤害,攻击类型: 穿刺 伤害类型: 普通
-------------------------------------------------------------------------------------------------------------------














-------------------------------------------------------------------------------------------------------------------
Set
    事件
        单位 - 任意单位 发动技能效果
    条件
    动作
        如果所有条件成立则做动作1,否则做动作2
            If - 条件
                (施放技能) 等于 能量防护盾
            Then - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        任一条件成立
                            条件
                                ((触发单位) 拥有 黄铜古钟 ) 等于 TRUE
                                ((触发单位) 拥有 金钟护罩 ) 等于 TRUE
                    Then - 动作
                        单位 - 删除 黄铜古钟  从 (触发单位)
                        单位 - 删除 金钟护罩  从 (触发单位)
                        For SHDK_Index[1] 从 0 到 (SHDK_Max[1] - 1), 做动作
                            Loop - 动作
                                如果所有条件成立则做动作1,否则做动作2
                                    If - 条件
                                        (触发单位) 等于 SHDK_Unit_II[SHDK_Index[1]]
                                    Then - 动作
                                        自定义代码: exitwhen true
                                    Else - 动作
                        设置 SHDK_S_SHU_II[SHDK_Index[1]] = 0.00
                    Else - 动作
            Else - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        (施放技能) 等于 黄铜古钟
                    Then - 动作
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                任一条件成立
                                    条件
                                        ((触发单位) 拥有 能量防护盾 ) 等于 TRUE
                                        ((触发单位) 拥有 金钟护罩 ) 等于 TRUE
                            Then - 动作
                                单位 - 删除 能量防护盾  从 (触发单位)
                                单位 - 删除 金钟护罩  从 (触发单位)
                                For SHDK_Index[1] 从 0 到 (SHDK_Max[1] - 1), 做动作
                                    Loop - 动作
                                        如果所有条件成立则做动作1,否则做动作2
                                            If - 条件
                                                (触发单位) 等于 SHDK_Unit_II[SHDK_Index[1]]
                                            Then - 动作
                                                自定义代码: exitwhen true
                                            Else - 动作
                                设置 SHDK_S_SHU_II[SHDK_Index[1]] = 0.00
                            Else - 动作
                    Else - 动作
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                (施放技能) 等于 金钟护罩
                            Then - 动作
                                如果所有条件成立则做动作1,否则做动作2
                                    If - 条件
                                        任一条件成立
                                            条件
                                                ((触发单位) 拥有 能量防护盾 ) 等于 TRUE
                                                ((触发单位) 拥有 黄铜古钟 ) 等于 TRUE
                                    Then - 动作
                                        单位 - 删除 能量防护盾  从 (触发单位)
                                        单位 - 删除 黄铜古钟  从 (触发单位)
                                        For SHDK_Index[1] 从 0 到 (SHDK_Max[1] - 1), 做动作
                                            Loop - 动作
                                                如果所有条件成立则做动作1,否则做动作2
                                                    If - 条件
                                                        (触发单位) 等于 SHDK_Unit_II[SHDK_Index[1]]
                                                    Then - 动作
                                                        自定义代码: exitwhen true
                                                    Else - 动作
                                        设置 SHDK_S_SHU_II[SHDK_Index[1]] = 0.00
                                    Else - 动作
                            Else - 动作
-------------------------------------------------------------------------------------------------------------------
FYLXT III
    事件
    条件
        (单位所受伤害) 大于 0.00
    动作
        如果所有条件成立则做动作1,否则做动作2
            If - 条件
                任一条件成立
                    条件
                        ((触发单位) 拥有 能量防护盾 ) 等于 TRUE
                        ((触发单位) 拥有 黄铜古钟 ) 等于 TRUE
                        ((触发单位) 拥有 金钟护罩 ) 等于 TRUE
            Then - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        任一条件成立
                            条件
                                (单位所受伤害) 等于 12.01
                                                                (单位所受伤害) 等于 省略N
                                                                (单位所受伤害) 等于 200000.02
                    Then - 动作
                        无动作
                    Else - 动作
                        For SHDK_Index[1] 从 0 到 (SHDK_Max[1] - 1), 做动作
                            Loop - 动作
                                如果所有条件成立则做动作1,否则做动作2
                                    If - 条件
                                        (触发单位) 等于 SHDK_Unit_II[SHDK_Index[1]]
                                    Then - 动作
                                        自定义代码: exitwhen true
                                    Else - 动作
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                (单位所受伤害) 大于或等于 (SHDK_Unit_II[SHDK_Index[1]] 的 生命值)
                            Then - 动作
                                单位 - 为 SHDK_Unit_II[SHDK_Index[1]] 添加 伤害抵抗 生命值
                            Else - 动作
                        设置 SHDK_Damage[1] = (单位所受伤害)
                        设置 SHDK_S_SHU_II[SHDK_Index[1]] = (SHDK_S_SHU_II[SHDK_Index[1]] + SHDK_Damage[1])
                        设置 SHDK_Source_II[SHDK_Index[1]] = (伤害来源)
                        计时器 - 开启 SHDK_time_II[SHDK_Index[1]] ,计时方式: 一次性 时间设置: 0.00 秒
            Else - 动作
-------------------------------------------------------------------------------------------------------------------
FYLXT IV
    事件
    条件
    动作
        For SHDK_Index[1] 从 0 到 (SHDK_Max[1] - 1), 做动作
            Loop - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        (到期的计时器) 等于 SHDK_time_II[SHDK_Index[1]]
                    Then - 动作
                        自定义代码: exitwhen true
                    Else - 动作
        单位 - 设置 SHDK_Unit_II[SHDK_Index[1]] 的生命值为 ((SHDK_Unit_II[SHDK_Index[1]] 的 生命值) + SHDK_Damage[1])
        如果所有条件成立则做动作1,否则做动作2
            If - 条件
                (SHDK_Unit_II[SHDK_Index[1]] 的 伤害抵抗 生命值 技能等级) 不等于 0
            Then - 动作
                单位 - 为 SHDK_Unit_II[SHDK_Index[1]] 删除 伤害抵抗 生命值
            Else - 动作
        如果所有条件成立则做动作1,否则做动作2
            If - 条件
                (SHDK_Unit_II[SHDK_Index[1]] 拥有 能量防护盾 ) 等于 TRUE
            Then - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        SHDK_S_SHU_II[SHDK_Index[1]] 大于或等于 500.00
                    Then - 动作
                        单位 - 删除 能量防护盾  从 SHDK_Unit_II[SHDK_Index[1]]
                        设置 SHDK_S_SHU_II[SHDK_Index[1]] = (SHDK_S_SHU_II[SHDK_Index[1]] - 500.00)
                        单位 - 命令 SHDK_Source_II[SHDK_Index[1]] 对 SHDK_Unit_II[SHDK_Index[1]] 造成 SHDK_S_SHU_II[SHDK_Index[1]] 点伤害,攻击类型: 穿刺 伤害类型: 普通
                        设置 SHDK_S_SHU_II[SHDK_Index[1]] = 0.00
                    Else - 动作
            Else - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        (SHDK_Unit_II[SHDK_Index[1]] 拥有 黄铜古钟 ) 等于 TRUE
                    Then - 动作
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                SHDK_S_SHU_II[SHDK_Index[1]] 大于或等于 1500.00
                            Then - 动作
                                单位 - 删除 黄铜古钟  从 SHDK_Unit_II[SHDK_Index[1]]
                                设置 SHDK_S_SHU_II[SHDK_Index[1]] = (SHDK_S_SHU_II[SHDK_Index[1]] - 1500.00)
                                单位 - 命令 SHDK_Source_II[SHDK_Index[1]] 对 SHDK_Unit_II[SHDK_Index[1]] 造成 SHDK_S_SHU_II[SHDK_Index[1]] 点伤害,攻击类型: 穿刺 伤害类型: 普通
                                设置 SHDK_S_SHU_II[SHDK_Index[1]] = 0.00
                            Else - 动作
                    Else - 动作
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                (SHDK_Unit_II[SHDK_Index[1]] 拥有 金钟护罩 ) 等于 TRUE
                            Then - 动作
                                如果所有条件成立则做动作1,否则做动作2
                                    If - 条件
                                        SHDK_S_SHU_II[SHDK_Index[1]] 大于或等于 1000000.00
                                    Then - 动作
                                        单位 - 删除 金钟护罩  从 SHDK_Unit_II[SHDK_Index[1]]
                                        设置 SHDK_S_SHU_II[SHDK_Index[1]] = (SHDK_S_SHU_II[SHDK_Index[1]] - 1000000.00)
                                        单位 - 命令 SHDK_Source_II[SHDK_Index[1]] 对 SHDK_Unit_II[SHDK_Index[1]] 造成 SHDK_S_SHU_II[SHDK_Index[1]] 点伤害,攻击类型: 穿刺 伤害类型: 普通
                                        设置 SHDK_S_SHU_II[SHDK_Index[1]] = 0.00
                                    Else - 动作
                                        设置 SHDK_Damage[1] = (SHDK_Damage[1] x 10.00)
                                        单位 - 命令 SHDK_Unit_II[SHDK_Index[1]] 对 SHDK_Source_II[SHDK_Index[1]] 造成 SHDK_Damage[1] 点伤害,攻击类型: 穿刺 伤害类型: 普通
                                        特殊效果 - 创建并绑定特效到 overhead 对 SHDK_Unit_II[SHDK_Index[1]] ,使用模型: Abilities\Spells\Undead\ReplenishHealth\ReplenishHealthCasterOverhead.mdl
                                        特殊效果 - 删除 (最后创建的特效)
                            Else - 动作
发表于 2010-3-21 23:50:12 | 显示全部楼层
表示好长... 看不完...
会不会是那个事件注册多注册了?
回复

使用道具 举报

 楼主| 发表于 2010-3-22 02:36:13 | 显示全部楼层
呃,我自己似乎已经解决了。
回复

使用道具 举报

发表于 2010-3-22 16:56:08 | 显示全部楼层
加一个
[trigger ][/trigger ]
去空格
不然太难看鸟
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 03:48 , Processed in 0.030916 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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