魔兽地图编辑器吧 关注:65,780贴子:3,846,938
  • 5回复贴,共1

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

取消只看楼主收藏回复

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


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


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


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


        10楼2014-11-21 10:46
        回复
          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
            回复