链式反应功能函数,代码中模仿了守望二的猎空链式炸弹效果。

详细代码:

变量
{
   玩家:
    0: LOCK_IS_LINKED
    1: PARAM_LOCK_LINK_PLAYER
    2: LOCK_LIST
    3: TEMP_MODEL_ARRAY
    4: TEMP_MODEL_LOOP
    5: LOCAL_LOCK_LINK_PLAYERS
    6: LOOP_LOCK
    7: PARAM_LOCAK_LINK_PARAMS
    8: PARAM_LOCK_LINK_AREA
}

子程序
{
    0: LOCK_LINK
    1: LOCK_LINK_WORK_SPACE
    2: CLEAR_TEMP_MODEL
    3: PUSH_TEMP_MODEL
}

规则("// 子程序 - PUSH_TEMP_MODEL")
{
   事件
   {
       子程序;
       PUSH_TEMP_MODEL;
   }

   动作
   {
       事件玩家.TEMP_MODEL_ARRAY = 添加至数组(事件玩家.TEMP_MODEL_ARRAY, 最后创建的实体);
   }
}

规则("// 子程序 - CLEAR_TEMP_MODEL")
{
   事件
   {
       子程序;
       CLEAR_TEMP_MODEL;
   }

   动作
   {
        For 玩家变量(事件玩家, TEMP_MODEL_LOOP, 0, 数量(事件玩家.TEMP_MODEL_ARRAY), 1);
            消除效果(事件玩家.TEMP_MODEL_ARRAY[事件玩家.TEMP_MODEL_LOOP]);
         End;
        事件玩家.TEMP_MODEL_ARRAY = 空数组;
   }
}

规则("// 子程序 - LOCK_LINK_WORK_SPACE")
{
   事件
   {
       子程序;
       LOCK_LINK_WORK_SPACE;
   }
   动作
   {
       If(所用英雄(事件玩家) == 英雄(猎空));
            伤害(事件玩家.PARAM_LOCK_LINK_PLAYER, 事件玩家, 事件玩家.PARAM_LOCAK_LINK_PARAMS[0]);
            播放效果(所有玩家(所有队伍), ”猎空“闪回消失效果, 颜色(红色), 事件玩家.PARAM_LOCK_LINK_PLAYER, 5);
            播放效果(所有玩家(所有队伍), “猎空”闪回消失声音, 颜色(白色), 事件玩家.PARAM_LOCK_LINK_PLAYER, 120);
       End;
   }
}

规则("// 子程序 - LOCK_LINK")
{
   事件
   {
       子程序;
       LOCK_LINK;
   }
   
   动作
   {
       
       调用子程序(LOCK_LINK_WORK_SPACE);
       
       事件玩家.PARAM_LOCK_LINK_PLAYER.LOCAL_LOCK_LINK_PLAYERS = 已过滤的数组(范围内玩家(事件玩家.PARAM_LOCK_LINK_PLAYER, 事件玩家.PARAM_LOCK_LINK_AREA, 对方队伍(所在队伍(事件玩家)), 表面), 当前数组元素 != 事件玩家.PARAM_LOCK_LINK_PLAYER);
        For 玩家变量(事件玩家.PARAM_LOCK_LINK_PLAYER, LOOP_LOCK, 0, 数量(事件玩家.PARAM_LOCK_LINK_PLAYER.LOCAL_LOCK_LINK_PLAYERS), 1);
            If(数组包含(事件玩家.LOCK_LIST, 事件玩家.PARAM_LOCK_LINK_PLAYER.LOCAL_LOCK_LINK_PLAYERS[事件玩家.PARAM_LOCK_LINK_PLAYER.LOOP_LOCK]) == 假);

                创建光束效果(所有玩家(所有队伍), 有益光束, 单次赋值(事件玩家.PARAM_LOCK_LINK_PLAYER), 单次赋值(事件玩家.PARAM_LOCK_LINK_PLAYER.LOCAL_LOCK_LINK_PLAYERS[事件玩家.PARAM_LOCK_LINK_PLAYER.LOOP_LOCK]), 颜色(蓝色), 可见,位置和半径);

                调用子程序(PUSH_TEMP_MODEL);

                事件玩家.PARAM_LOCK_LINK_PLAYER = 事件玩家.PARAM_LOCK_LINK_PLAYER.LOCAL_LOCK_LINK_PLAYERS[事件玩家.PARAM_LOCK_LINK_PLAYER.LOOP_LOCK];

                事件玩家.LOCK_LIST = 添加至数组(事件玩家.LOCK_LIST, 事件玩家.PARAM_LOCK_LINK_PLAYER);

                调用子程序(LOCK_LINK);
            End;
        End;

       
   }
}

规则("// 提示")
{
   事件
   {
       持续 - 每名玩家;
       双方;
       全部;
   }
   条件
   {
       已重生(事件玩家) == 真;
   }
   动作
   {
       小字体信息(所有玩家(所有队伍), 自定义字符串("使用猎空的脉冲炸弹攻击敌方将会触发链式反应. 在游戏中, 猎空的脉冲炸弹黏上对方就会触发伤害了玩家回调"));
   }
}

规则("// 猎空 链式 攻击敌方")
{
   事件
   {
       玩家造成伤害;
       双方;
       猎空;
   }

   条件
   {
       事件技能 == 按钮(终极技能);
   }

   动作
   {
       // 游戏代码:S0PCZ
       // 名词介绍:
       // 如要做一个类似守望二猎空大招一样的效果:闪电链炸弹
       // 链式玩家起点:
       //       即为第一个被攻击的敌方玩家
       // 链式获取玩家范围即:
       //       第一个玩家被击杀后,搜索附近的敌方玩家,这个范围即为链式获取玩家范围
       // 功能函数:
       //       当获取完毕玩家范围并得到下一个将要被攻击的玩家后,你应该编写功能函数。
       //       在本例子中,功能函数应该为:伤害敌方玩家(伤害为炸弹伤害),播放炸弹效果,播放炸弹声音。三个过程
       //       功能函数在LOCK_LINK_WORK_SPACE子程序中
       // PUSH_TEMP_MODEL :
       //       此函数应该在创建实体的下一行调用,这个函数将会把刚刚创建的实体加入到一个数组中管理
       // 当你的链式调用结束后,你可以使用CLEAR_TEMP_MODEL来清空这个数组的实体,在函数中已经封装了清除实体功能

       "// 链式玩家起点"
        事件玩家.PARAM_LOCK_LINK_PLAYER = 被攻击方;

        "// 链式获取玩家的范围 - 即起点玩家位置搜索其他敌方玩家的范围"
        事件玩家.PARAM_LOCK_LINK_AREA  = 10;

        "// 传入一个变量,这个变量将会在功能函数(LOCK_LINK_WORK_SPACE)中调用, 可以用作参数列表"

        事件玩家.PARAM_LOCAK_LINK_PARAMS = 数组(事件伤害);

        "// 调用链式函数(此函数为递归函数)"
        调用子程序(LOCK_LINK);

         "// 清空链接光束和其他的效果"
        调用子程序(CLEAR_TEMP_MODEL);

        "// 将链接队列清空"
        事件玩家.LOCK_LIST = 空数组;
   }
}

注:

  • 链式调用普遍时间较短,其中的链接光束可能刚创建就已经被销毁。当然这只是在功能函数没有等待的情况下,如果在功能函数中加等待,将会清楚看到链接效果
  • 猎空的大招一共将会被判断两次:一次在刚黏上的状态,一次在爆炸的状态,如果在功能函数中加上延时,所展示的链接光束可能不正确,因为爆炸的时候会创建一次,在刚黏上的时候也会创建一次。
评论
这里空空如也~
这里空空如也~