|
我是Rex也就是写WOW类型地图的
仇恨系统其实看起来复杂其实很简单
对于很多作者来说大家只想做到效果 却忽略了方式。
都是用缓存 或哈西表 高维数组来解决其实可以用最简单方法解决
包括进入战斗状态 和脱离战斗
这个东西都可以用判断BUFF有无来做
论坛说不清 有意者加QQ412464782 细说
方法2楼 自己看
其实 在WAR3中 有一个非常好的东西 并且无BUG。
先说前言 不然大家肯定会认为这个写法不好 但是我是过来人 各种BUG我都尽力过
大家别不相信 WE地图里jass残余 和物体数据残余造成的BUG 也就是灵异现象绝对存在。 而且我这里有现成的研究以及BUG出现说明。
大家编辑WE肯定有过这样的感受 就是 被BUG给忽悠
(不是在废话 因为全局变量 在反复使用后 在某些特殊的情况下会出现覆盖数值 或别的什么BUG)
研究型的作者 请不要否认我的说法 这个是我写地图3年来的经验 为了避免jass残余和 一些灵异现的未知BUG出现
有些写法尽量避免。比如一个T里写上128行动作以上并且都有条件判断 这种写法就不要过多的修改这个T特别是大量的修改
因为你机器的内存都可能有一定的小小的几率丢失内存值更别谈WE 所以 能用WAR3的技能模拟就尽量用WAR3的原始技能做脚本模拟。
在这里不是为了否认 研究型作者的能力 而是研究型作者自己制作庞大数据的地图 的经验上肯定没我多 BUG的出现往往不在jass上可能是在 物体数据残余里。
说仇恨写法:
首先说 进入战斗和脱离战斗 其实WE里有一个东西比较好 就是 减速光环 首先不站技能格子 然后把选项里弄成只对 敌人有效果
(是敌对的任何单位不包括中立)
然后判断所有单位身上是否有这个BUFF 有这个BUFF肯定是 战斗状态 没有就不是 这个是比较简单的方法范围自己可以定义而且方便。
仇恨系统
这个方式虽然是所有BOSS通用 也是所有单位通用 但是有缺点等下说
首先定义一个技能 等级为100 200 300 级 自己定义 根据你自己地图的情况来定 最好是100等级太高小心卡。
技能脚本我人为 用球体 或不 附带其他数据的技能 也就是一个马甲技能。
事件 任意单位接受伤害。
条件攻击 是BOSS 类单位(你可以用技能 用单位类型 用什么判断你自己决定)
动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
BOSSSHDW 等于 没有单位 BOSSSHDW 这个变量为什么要等于没有单位才运行?
问的好 这个变量值 你可以在其他触发设置单位比如 治疗仇恨 和 仇恨加成 等等
用这个变量设置 单位 单后提高仇恨技能等级 切记得不要 清除 呵呵后面的动作有清空
Then - 动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
XT仇恨技能 的等级对 (伤害来源) =1
Then - 动作
设置 BOSSSHDW = (伤害来源)
Else - 动作
无动作
Else - 动作
无动作
动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
(XT仇恨加成+2 的等级对 BOSSSHDW) 等于 1每次伤害都有1点加成(加多少自己定)
Then - 动作
单位 - 提升 XT仇恨技能 等级对 BOSSSHDW
Else - 动作
无动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
(XT仇恨远程加成+1 的等级对 BOSSSHDW) 等于 1每次伤害都有1点加成(加多少自己定)
Then - 动作
单位 - 提升 XT仇恨技能 等级对 BOSSSHDW 这些就是提高仇恨等级具体怎么做看你自己
Else - 动作
无动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
(单位所受伤害) 大于或等于 75.00这个很简单 就是伤害过了这个伤害值就仇恨等级+1(加多少自己定)
Then - 动作
单位 - 提升 XT仇恨技能 等级对 BOSSSHDW
Else - 动作
无动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
(单位所受伤害) 大于或等于 150.00
Then - 动作
单位 - 提升 XT仇恨技能 等级对 BOSSSHDW
Else - 动作
无动作
(以下是仇恨目标判断) 非常简单 一看就能明白~~~
如果所有条件成立则做动作1,否则做动作2
If - 条件
BOSSMBDW 不等于 BOSSSHDW
(XT仇恨技能 的等级对 BOSSSHDW) 大于 ((XT仇恨技能 的等级对 BOSSMBDW) + 12)
这个12意思很简单就是其他单位攻击BOSS 必须仇恨等级高过当前仇恨目标12个等级BOSS才会转移目标具体弄成多少自己设置
Then - 动作
设置 BOSSMBDW = 没有单位
设置 BOSSMBDW = BOSSSHDW
游戏 - 对 (所有玩家) 发送显示 4.00 秒的文本信息: ((((触发单位) 的名字) + 仇恨目标) + (BOSSMBDW 的名字))
Else - 动作
无动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
BOSSMBDW 不等于 BOSSSHDW
(XT仇恨技能 的等级对 BOSSSHDW) 大于或等于 90
Then - 动作
设置 BOSSMBDW = 没有单位
设置 BOSSMBDW = BOSSSHDW
游戏 - 对 (所有玩家) 发送显示 4.00 秒的文本信息: (仇恨目标转换 + ((BOSSMBDW 的名字) + 仇恨过高。))
Else - 动作
无动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
BOSSMBDW 不等于 没有单位
BOSSMBDW 不等于 BOSSSHDW
Then - 动作
单位 - 对 (触发单位) 发布 右键点击 命令到目标: BOSSMBDW
Else - 动作
无动作
设置 BOSSSHDW = 没有单位
这个办法写的仇恨缺点是会BOSS只会优先攻击该值最高的单位。也就是说BOSS死亡后你的仇恨不会直接变0 要等仇恨每秒递减
以下是每秒递减1个等级
时间 - 每1.00 秒触发事件
动作
设置 WJ_XT_DWZ[0] = ((可用地图区域) 内满足 ((XT仇恨技能 的等级对 (匹配单位)) 大于 1) 的所有单位)
这里意思很明确 有仇恨技能单位选取 没有仇恨技能的 不会被选择
如果所有条件成立则做动作1,否则做动作2
If - 条件
(WJ_XT_DWZ[0] 中的单位数量) 不等于 0
Then - 动作
单位组 - 选取 WJ_XT_DWZ[0] 内所有单位做动作
Loop - 动作
设置 WJ_JN_DWMB[0] = (选取单位)
单位 - 降低 XT仇恨技能 等级对 WJ_JN_DWMB[0]
设置 WJ_JN_DWMB[0] = 没有单位
Else - 动作
无动作
单位组 - 清空 WJ_XT_DWZ[0] 内所有单位
单位组 - 删除 WJ_XT_DWZ[0] |
评分
-
查看全部评分
|