aksed874 发表于 2019-1-10 17:16:47

模拟了一下舰载机,虽然有效果,但是在触发几次后开始变卡

可能需要该一下条件,然而我这个老年人看不出来=-=
以下是触发文本
舰载机——齐柏林
    事件
      事件 - 任意单位 接受伤害
    条件
      ((伤害来源) 的类型) 等于 齐柏林伯爵
      (单位所受伤害是攻击伤害) 等于 TRUE
      (((伤害来源) 所持有的 基础舰载机) 的使用次数) 大于或等于 3
    动作
      逆天 - 设置 [单位] loc_chufa = (伤害来源)
      逆天 - 设置 [单位] loc_mubiao = (触发单位)
      逆天 - 设置 [点] loc_chufapoi = ((loc_chufa) 的位置)
      逆天 - 设置 [单位组] loc_gro = (新建的空单位组)
      逆天 - 设置 [整数] loc_CS = (((loc_chufa) 所持有的 基础舰载机) 的使用次数)
      循环动作[循环整数A]从 1 到 3, 运行 (Loop - 动作)
            Loop - 动作
                逆天 - 立即运行 (新建的计时器) 时间设置: 0.25 秒,是否循环: 一次性
                  参数
                  动作
                        循环动作[循环整数A]从 1 到 3, 运行 (Loop - 动作)
                            Loop - 动作
                              逆天 - 设置 [单位] loc_majia = (新建 ((loc_chufa) 的所有者) 的 飞行机器 在 (loc_chufapoi) 面向角度:0 度)
                              单位组 - 为 (loc_gro) 添加 (loc_majia)
                        点 - 清除 (loc_chufapoi)
                        物品 - 设置 ((loc_chufa) 所持有的 基础舰载机) 的使用次数为 ((loc_CS) - 1)
                        逆天 - 设置 [整数] loc_CS = ((loc_CS) - 1)
                        单位组 - 选取 (loc_gro) 内所有单位做动作
                            Loop - 动作
                              如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                                    If - 条件
                                        (((loc_gro) 中的单位数量) 大于 0) 且 (((loc_gro) 中的单位数量) 小于 10)
                                    Then - 动作
                                        逆天 - 设置 [单位] loc_xuanqu = (选取单位)
                                        单位 - 对 (loc_xuanqu) 发布 攻击 命令到目标: (loc_mubiao)
                                        逆天 - 注册 (新建触发)
                                          事件
                                                时间 - 每当游戏逝去 0.10 秒
                                                单位 - (loc_mubiao) 接受伤害
                                          参数
                                          动作
                                                如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                                                    If - 条件
                                                      (伤害来源) 等于 (loc_xuanqu)
                                                    Then - 动作
                                                      逆天 - 立即运行 (新建的计时器) 时间设置: 0.10 秒,是否循环: 循环
                                                            参数
                                                            动作
                                                                逆天 - 设置 [点] loc_chufapoi = ((loc_chufa) 的位置)
                                                                逆天 - 设置 [点] loc_xuanqupoi = ((loc_xuanqu) 的位置)
                                                                单位 - 对 (loc_xuanqu) 发布 移动 命令到目标点: (loc_chufapoi)
                                                                逆天 - 设置 [实数] loc_JL = ((loc_xuanqupoi) 和 (loc_chufapoi) 之间的距离)
                                                                点 - 清除 (loc_chufapoi)
                                                                点 - 清除 (loc_xuanqupoi)
                                                                如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                                                                  If - 条件
                                                                        (loc_JL) 小于或等于 100.00
                                                                  Then - 动作
                                                                        单位组 - 为 (loc_gro) 删除 (loc_xuanqu)
                                                                        单位 - 删除 (loc_xuanqu)
                                                                        物品 - 设置 ((loc_chufa) 所持有的 基础舰载机) 的使用次数为 ((loc_CS) + 1)
                                                                        逆天 - 设置 [整数] loc_CS = ((loc_CS) + 1)
                                                                        逆天 - 清除当前逆天计时器
                                                                  Else - 动作
                                                    Else - 动作
                                    Else - 动作
                                        如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                                          If - 条件
                                                (loc_CS) 等于 0
                                          Then - 动作
                                                任务 - 对 (转换 ((loc_chufa) 的所有者) 为玩家组) 发送 警告 信息: 舰载机可派遣...
                                          Else - 动作
                        逆天 - 清除当前逆天计时器

希瓦 发表于 2019-1-15 10:36:37

逆天 - 注册 (新建触发)
事件
时间 - 每当游戏逝去 0.10 秒
动作
逆天 - 立即运行 (新建的计时器) 时间设置: 0.10 秒,是否循环: 循环

这是说每0.1秒都创建一个每0.1秒循环的计时器?
这样可能10秒后就有了1000个计时器了……
为什么要把伤害事件和计时器循环事件放一起啊。
而且你每次伤害事件都会注册新的触发,这样你触发十次之后,就有了十个触发
然后每次技能都会重复触发十次,这也是卡的原因。
解决方法:
用变量储存创建的计时器,每次创建的时候都删除之前创建的计时器。
用变量储存创建的触发,每次创建的时候都删除之前创建的触发。

总的来说,你还没有理解触发器和计时器的正确用法,不要随便使用YDWE的所谓“逆天“功能,尤其是动态注册和创建计时器的功能……

aksed874 发表于 2019-1-19 16:22:07

希瓦 发表于 2019-1-15 10:36
逆天 - 注册 (新建触发)
事件
时间 - 每当游戏逝去 0.10 秒


_(:з」∠)_我这是第一次用注册做技能,以前没试过做太麻烦的
页: [1]
查看完整版本: 模拟了一下舰载机,虽然有效果,但是在触发几次后开始变卡