链式反应功能函数,代码中模仿了守望二的猎空链式炸弹效果。
详细代码:
变量
{
玩家:
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 = 空数组;
}
}
注:
- 链式调用普遍时间较短,其中的链接光束可能刚创建就已经被销毁。当然这只是在功能函数没有等待的情况下,如果在功能函数中加等待,将会清楚看到链接效果
- 猎空的大招一共将会被判断两次:一次在刚黏上的状态,一次在爆炸的状态,如果在功能函数中加上延时,所展示的链接光束可能不正确,因为爆炸的时候会创建一次,在刚黏上的时候也会创建一次。
评论
这里空空如也~