魔兽地图编辑器吧 关注:65,780贴子:3,846,933

关于自定义事件的两大核心问题【根本没那么复杂】

只看楼主收藏回复

1是事件如何触发2是事件相关变量的获取


1楼2014-11-21 10:15回复
    前排


    IP属地:上海来自Android客户端2楼2014-11-21 10:18
    回复
      2026-04-28 21:58:00
      广告
      不感兴趣
      开通SVIP免广告



      IP属地:浙江4楼2014-11-21 10:25
      收起回复
        自定义事件的触发方面
        分为三个小方面
        1是魔兽自带事件 比如 单位被英雄杀死事件 实质就是在条件里面加(上凶手单位是英雄) 这种属于最简单的自定义事件
        稍微复杂一点的 比如任意单位受伤害 任意单位获取攻击目标 这些有单个单位的事件而没有针对全部单位的事件 一般采取动态注册的方法
        动态注册案例:变量需求:单位组G
        触发1:任意单位进入可用地图区域
        条件 单位在单位组G中==false
        动作:单位添加到单位组 触发x添加事件:触发单位受伤害
        触发2:地图初始化
        动作:选取地图上所有单位添加到单位组G中
        循环单位组G做动作: 触发x添加事件:选取单位单位受伤害
        触发x:没有事件
        动作:显示文本:触发单位受到**点伤害


        6楼2014-11-21 10:30
        回复
          前排爆米花


          IP属地:上海来自Android客户端7楼2014-11-21 10:31
          回复
            2是魔兽中可以获取相关动态 但没有对应事件
            比如 单位魔法值低于50%
            魔兽中只有单位魔法值低于一个定值 而且也是单个单位没有任意单位
            这时候就适合采用动态追踪的方式
            比如游戏时间循环0.1秒
            选取单位组G1(所有需要检测的单位 可以参考上面的动态注册)中的单位做动作
            if 单位魔法值百分比小于50 做动作 比如 设置单位移动速度为100 之类的
            这个游戏时间间隔越低 事件捕获的越准 但占用游戏运行资源也越多 需要根据情况判断 而且对G1里的单位进行筛选也可以提升效率
            比如单位在水里 就适合0.1秒检测单位位置是否在水中 太短也没有实际价值
            而单位生命值低于50的时候给单位加血的事件 就适合0.01秒检测 不然单位来不及加血被集火死的可能性就会增大(当然用受伤害事件更准)


            8楼2014-11-21 10:41
            收起回复


              IP属地:浙江来自Android客户端9楼2014-11-21 10:44
              回复
                3魔兽中没有对应事件 完全是玩家自己定义
                比如单位被钩子钩到 被月女箭射中 这种 在ydwe中就有个被特殊技能命中的事件
                (移动物品不是 移动物品由单位发布指令衍伸 属于1.)
                或者可以定义一个单位冲锋碰到单位 单位被击飞 放个技能但是没打中单位
                这类事件完全由玩家自己设定 一般也是在玩家自己的触发中解决 如果作为事件来使用(就是额外开启一个触发) 一般使用运行触发(无视条件)这个动作 然后在新的触发器中执行 这样可以优化触发秩序 避免大量动作塞进一个触发去


                10楼2014-11-21 10:46
                回复
                  2026-04-28 21:52:00
                  广告
                  不感兴趣
                  开通SVIP免广告
                  2相关变量的获取:
                  针对1.1中事件+条件 直接使用触发单位/伤害来源/攻击者/凶手单位等即可 完全继承we自带的变量 毫无疑问
                  针对1.2中的循环检测 直接变量只有选取单位一个 其他的就需要使用哈希表等进行绑定 而这类事件本身也是基于单位本体或者玩家本体(玩家金钱人口判断之类) 对其他变量的需求不大


                  11楼2014-11-21 10:54
                  回复
                    针对1.3中的完全定义事件 特别是另开一个触发器的
                    这里因为是纯模拟的事件 所以本身是存在相关单位的变量 这里主要是传参
                    比如单位被击飞事件
                    首先肯定有个放技能击飞其他单位的触发 这个放技能的单位就是击飞的主体(类似伤害来源 击飞者) 触发里面设置被击飞的单位则是受体(类似触发单位)
                    这个时候一般采用全局变量记录 比如设置U_jifei为击飞技能的施法者 U_beijifei为被击飞单位
                    在另一个事件里面可以直接调用这两个变量 如果有循环触发的情况(比如击飞触发里面还可以触发击飞) 则需要使用ydwe的逆天局部变量功能 在触发开始的时候先把这类全局变量记录为局部变量 之后记得清除局部变量


                    12楼2014-11-21 10:59
                    回复
                      与其弄这个自定义事件,不如在动作中挂接一个触发器动作:运行XX触发器


                      IP属地:中国台湾13楼2014-11-21 12:21
                      收起回复
                        留~


                        IP属地:浙江来自手机贴吧14楼2014-11-21 12:45
                        回复
                          学习了


                          16楼2014-11-21 15:13
                          回复