|
发表于 2013-2-1 03:29:37
|
显示全部楼层
本帖最后由 chyj4747 于 2013-2-1 03:32 编辑
下次提此类问题时最好能说明遇到的具体bug
于是么。。就说下个人看了T发现的bug和问题吧
貌似有久违的码很多字的感觉……
全局变量:
HongLianHuWei_T:计时器,数组大小1,初始化新建计时器
HongLianHuWei_G:单位组,数组大小1,初始化空单位组(默认)
[trigger]HongLianHuWei
事件
单位 - 任意单位 学习技能
条件
(学习技能) 等于 红莲护卫
动作
设置 HongLianHuWei_G[1] = (新建的空单位组)
设置 HongLianHuWei_Unit[1] = (触发单位)
触发器 - 为 HongLianHuWei2 <预设> 添加事件: (单位 - 任意单位进入 700.00 以 HongLianHuWei_Unit[1] 为中心的范围内)
触发器 - 关闭 (当前触发)
[/trigger]
[trigger]HongLianHuWei2
事件
条件
And - 所有条件成立
条件
((进入的单位) 在 HongLianHuWei_G[2] 中) 不等于 TRUE
((进入的单位) 是 英雄) 等于 TRUE
动作
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
((进入的单位) 是 (HongLianHuWei_Unit[1] 的所有者) 的敌对单位) 等于 TRUE
((进入的单位) 在 HongLianHuWei_G[2] 中) 等于 FALSE
Then - 动作
设置 HongLianHuWei_Unit[2] = (进入的单位)
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
(HongLianHuWei_G[1] 中的单位数量) 大于 0
Then - 动作
单位组 - 添加 HongLianHuWei_Unit[2] 到 HongLianHuWei_G[2]
设置 HongLianHuWei_S = (HongLianHuWei_S + 1)
单位 - 创建 1 个 MAJIA 给 (HongLianHuWei_Unit[1] 的所有者) 在 (从 (HongLianHuWei_Unit[1] 的位置) 开始,距离 0.00 ,方向为 (HongLianHuWei_Unit[1] 的面向角度) 度的位移处) ,面向角度为 默认建筑朝向 度
单位 - 为 (最后创建的单位) 设置 水元素 类型的生命周期,持续时间为 0.50 秒
单位 - 设置 最后创建的单位 <New> 的状态为 隐藏
如果 ((HongLianHuWei_Unit[1] 的 红莲护卫 技能等级) 等于 1) 成立,则运行 (单位 - 为 (最后创建的单位) 添加 红莲护卫 等级1) 否则运行 (不做任何动作)
如果 ((HongLianHuWei_Unit[1] 的 红莲护卫 技能等级) 等于 2) 成立,则运行 (单位 - 为 (最后创建的单位) 添加 红莲护卫 等级2) 否则运行 (不做任何动作)
如果 ((HongLianHuWei_Unit[1] 的 红莲护卫 技能等级) 等于 3) 成立,则运行 (单位 - 为 (最后创建的单位) 添加 红莲护卫 等级3) 否则运行 (不做任何动作)
单位 - 设置 (最后创建的单位) 的 红莲护卫 等级1 等级为 HongLianHuWei_S
单位 - 设置 (最后创建的单位) 的 红莲护卫 等级2 等级为 HongLianHuWei_S
单位 - 设置 (最后创建的单位) 的 红莲护卫 等级3 等级为 HongLianHuWei_S
单位 - 对 (最后创建的单位) 发布 兽族萨满祭司 - 嗜血术 命令到目标: HongLianHuWei_Unit[1]
逆天<YDWE> - 立即运行 HongLianHuWei_T[((HongLianHuWei_Unit[2] 的所有者) 的玩家索引号)] 时间设置: (30.00 - ((转换 (HongLianHuWei_Unit[1] 的 红莲护卫 技能等级) 为实数) + 1.00)) 秒,是否循环: 一次性
Timer - 参数
Timer - 动作
单位组 - 为 HongLianHuWei_G[2] 删除 (HongLianHuWei_G[2] 中第一个单位)
设置 HongLianHuWei_S = (HongLianHuWei_S - 1)
单位组 - 清空 HongLianHuWei_G[1] 内所有单位
Else - 动作
不做任何动作
Else - 动作
单位组 - 添加 (进入的单位) 到 HongLianHuWei_G[1]
[/trigger]
变量Bug:
首先LZ只给玩家一创建了计时器,即只有HongLianHuWei_T[0]有计时器,别的玩家都没有
然后这是个全局计时器,因此无法实现LZ说的“分别计算”
同理,HongLianHuWei_G这个单位组变量也就只有[0]和[1]号有单位组,HongLianHuWei_G[2]是null,也就是没有单位组
在变量表里HongLianHuWei_G的数组大小是1且初始化写了空单位组于是HongLianHuWei_G[0]=新建单位组
在触发器HongLianHuWei里有HongLianHuWei_G[1]=新建单位组的动作因此[1]号也有单位组
但是[2]号就没有初始化过因此无单位组
假设以下场景:
玩家一有英雄A和B,敌对某玩家英雄C和D,该敌对玩家的计时器简称T,友军单位组简称G1,敌对单位组简称G2
A拥有该技能,B已进入A的范围,即B在G1里
然后C和D分别进来了,当C进入时,C加入G2,A获得嗜血,T开始计时
当D进来后,D加入G2,然后给A重套嗜血,重新开启T
然后C和D离开A的技能范围,B仍在范围内
Bug1:
当T到期时,可能删除C,也可能删除D,单位组的第一个单位并不一定是最早加入单位组的单位
那么假设删除了D,于是当C再次进入A的范围时,由于C在G2里因此不会启动技能;删除C的情况同理
Bug2:
现在假设已经简单处理了Bug1,比如T到期时将G2清空
于是再看T到期后做的第三件事——将G1清空
由于B始终在A的范围内,且没有另外的友军英雄进入A的范围,因此在第一次发动技能T到期后,G1里的单位数等于0
接着不管C或D或别的敌对英雄进入,由于G1等于0也就是“700范围内有友军英雄”这个条件不满足因此不会发动技能
技能的具体效果我没进图测试,只看了一遍T表示能想到的暂时就上面的bug了
然后么说下其他问题……
1. HongLianHuWei2里条件里已经判断了一遍进入单位是否在G2里因此动作里无需再判断一遍,因为在G2里的单位是运行不到触发动作的
2. Else里如果没动作就空着,不用加不做任何动作,且宁可空着也不要加“不做任何动作”,这个不做任何动作的动作会浪费运行效率
3. 看LZ没有要排泄的意思于是每次敌对单位进入后运行HongLianHuWei2的动作就有两个点泄漏什么的暂时就不说了……
4. 那个叫MAJIA的马甲移动速度为0却有转身速度和转向角度……个人表示可能会由于无法转向而放不出嗜血,因此把转身速度和转向角度都改为0吧
5. LZ似乎就只是做个技能演示?那样的话用于地图可能会出现的各种Bug就不说了~
以上~ |
|