魔兽编辑器死亡飞镖学思笔记

学习来源:魔兽争霸WE编辑器教学 入门篇 讲师:真人生脚步 课时38自定义技能-死亡飞镖

死亡飞镖效果图(无CD模式)

本羊学习完之后参照着把触发完整的写了一遍:

右键在新标签打开图片可以看大图哟

触发核心是:逆天计时器

触发动作解释:

1、用逆天变量记录触发单位(施法英雄)的位置

2、用逆天变量创建1个飞镖

3、排泄(清除)触发点,因为这个点是为了创建飞镖,只用一次的临时点

4、创建逆天计时器,每0.03秒循环一次

5、设置逆天整数n,2个作用:控制飞镖角度、控制逆天计时器运行次数

6、由于英雄会移动,用逆天变量记录触发单位(施法英雄)的位置

7、每循环一次,n的值加1,所以n=n+1

8、为了让飞镖看起来是转动的,每循环一次,飞镖的角度发生变化,正好可以用n控制。n从0-36,意味着飞镖角度从0°-360°转了一圈。

9、用飞镖点记录了飞镖的位移点

10、让飞镖动起来,移动飞镖到位移点

11、用逆天单位组记录伤害半径和伤害目标,注意:条件里用到的是匹配单位

12、选取单位组做动作是为了给伤害,注意:执行动作里用到的是选取单位

13、排泄:清除点、清空单位组、删除单位组

14、n=100是为了跳出循环,0-36,36-72,72-100,其实飞镖转了3圈不到

15、由于是技能,运行完之后一定要删除飞镖,否则飞镖会停留在地图上

16、清除当前逆天计时器

17、对触发单位发布停止命令,这是防止有时通魔技能会造成无限施法无法操控英雄

本来这篇笔记是图文并茂的。但是昨天突然停电导致WE里触发没保存,博客里码的字也丢失了。各位有缘人凑合着看吧。

魔兽编辑器玩家名字转哈希值的学思笔记

感谢《小兵的梦想》作者KAOA的指导!

这篇学思笔记能够解决:网易魔兽争霸官方对战平台屏蔽了“获取玩家名字=“XXXX字符串””的功能,防止作者私下售卖定制道具。

一、触发条件设置

注释:

1、条件类型用“整数”比较,代替了“字符串”比较

2、左边是:哈希表-获取字符串的哈希表

3、右边是:自定义代码

阅读更多 »

魔兽编辑器自定义技能学思笔记

这篇学思笔记主要研究技能图形的公式或函数,所以并没有做排泄处理。

1、环形技能

动作
[逆天] – 设置 [点] loc_触发点 = ((触发单位) 的位置)
循环 循环整数A 从 1 到 36
Loop – 动作
[逆天] – 设置 [点] loc_p = (从 (loc_触发点) 开始,距离 256.00 ,方向为 (转换实数 ((转换 循环整数A [R] 为实数) x 10.00) 为角度) 度的位移处)
特效 – 在 (loc_p) 创建特效: Abilities\Spells\Undead\Impale\ImpaleHitTarget.mdl

注释:循环整数A控制层里的尖刺数量,每层都有36个尖刺特效;且控制两个尖刺之间的角度;

2、螺线

动作
[逆天] – 设置 [点] loc_触发点 = ((触发单位) 的位置)
循环 循环整数A 从 1 到 72
Loop – 动作
[逆天] – 设置 [点] loc_p = (从 (loc_触发点) 开始,距离 ((转换 循环整数A [R] 为实数) x 7.00) ,方向为 (转换实数 ((转换 循环整数A [R] 为实数) x 10.00) 为角度) 度的位移处)
特效 – 在 (loc_p) 创建特效: Abilities\Spells\Undead\Impale\ImpaleHitTarget.mdl

3、圆形

动作
[逆天] – 设置 [点] loc_触发点 = ((触发单位) 的位置)
循环 循环整数B 从 1 到 6
Loop – 动作
循环 循环整数A 从 1 到 36
Loop – 动作
[逆天] – 设置 [点] loc_p = (从 ((触发单位) 的位置) 开始,距离 ((转换 循环整数B [R] 为实数) x 60.00) ,方向为 (转换实数 ((转换 循环整数A [R] 为实数) x 10.00) 为角度) 度的位移处)
特效 – 在 (loc_p) 创建特效: Abilities\Spells\Undead\Impale\ImpaleHitTarget.mdl

注释:1、循环整数B控制层数,可以理解为从里到外一共有6层;循环整数A控制层里的尖刺数量,每层都有36个尖刺特效;距离在这里是层与层的间距;角度是2个尖刺的夹角。2、基于圆形可以衍生很多其他形状,例如米字形、十字形、扇形。

(1)米字形

动作
[逆天] – 设置 [点] loc_触发点 = ((触发单位) 的位置)
循环 循环整数B 从 1 到 6
Loop – 动作
循环 循环整数A 从 1 到 8
Loop – 动作
[逆天] – 设置 [点] loc_p = (从 ((触发单位) 的位置) 开始,距离 ((转换 循环整数B [R] 为实数) x 60.00) ,方向为 (转换实数 ((转换 循环整数A [R] 为实数) x 45.00) 为角度) 度的位移处)
特效 – 在 (loc_p) 创建特效: Abilities\Spells\Undead\Impale\ImpaleHitTarget.mdl

注释:圆形演变成米字形的关键在于调整了角度。米字形是将360度的圆分成了8份,每份角度是45度。所以循环整数A最大值改为了8,而递增角度改为了45度。同理:

雪花形 循环整数A最大值=6,递增角度=60°

十字形 循环整数A最大值=4,递增角度=90°

4、直线

触发动作:
[逆天] – 设置 [点] loc_触发点 = ((触发单位) 的位置)
[逆天] – 设置 [点] loc_施放点 = (技能施放点)
[逆天] – 设置 [角度] loc_技能角度 = ((loc_触发点) 到 (loc_施放点) 的角度)
循环 循环整数A 从 1 到 8
Loop – 动作
[逆天] – 设置 [点] loc_p = (从 ((触发单位) 的位置) 开始,距离 ((转换 循环整数A [R] 为实数) x 60.00) ,方向为 (转换实数 (loc_技能角度) 为角度) 度的位移处)
特效 – 在 (loc_p) 创建特效: Abilities\Spells\Undead\Impale\ImpaleHitTarget.mdl

魔兽编辑器中单位变身[JAPI]

感谢买梦大佬的点拨!真的让本羊少走了很多弯路!

我的问题是:

1、旧英雄单位通过怪物掉落的技能书学习技能
2、旧英雄单位通过点击使用不同的武器可以切换为新英雄单位
3、但是新英雄单位要继承旧英雄单位之前学习的技能和技能等级

问题的难点在于第3点,按照我原来的思路需要用大量变量记录不同玩家的技能。

最终在买梦大佬的点拨后,尝试用单位-单位变身[JAPI]。结论就是:

阅读更多 »

魔兽地图《浩劫余生_4.0》触发自研

特别说明:地图是基于英文版的《浩劫余生》,即《Afterlife v4.0》。

前言:《浩劫余生》的射击触发、装填触发、换枪触发在目前看来都是比较强大的。 源图《Afterlife v4.0》 可以用YDWE打开,但是其中的触发大多是JASS。为此,本羊一遍剖析学习一遍记录如下。

一、地图物编设定

1、所有枪类物品是没有属性的,只有1个装填的技能。同时要注意它的CD间隔组和使用次数。技能编辑器里“飞刀”的施放间隔是8秒。“使用次数”理解为枪类的弹夹容量。

2、一种枪类对应一个独立的单位。说白了,你装备或更换不同的枪,其实质就是切换模型!枪的属性就是单位的属性!例如下面的AK-47,自动射击和连发射击都是不同的单位:

二、装备(更换)武器触发 <难点>

仍然以AK-47为例:

阅读更多 »

魔兽编辑器中“跳过剩余动作”的自研笔记

情形1:不带if条件语句,直接忽略“跳过剩余动作”后的动作不执行!

只执行+1000黄金的动作

情形2:带if条件语句

准备工作:1块区域,三个“ 演员 ”英雄
图中的三个条件的返回值是真值,所以:
1、触发进入单位是圣骑士,三个条件的动作都会执行。执行结果如下图。
2、 、触发进入单位是大魔法师或者山丘之王,只执行第2个和第3个条件的动作。
阅读更多 »

魔兽编辑器中“科技”的自研笔记

随着时间的流逝,利用科技来增强敌我小兵是个不错的设计。以下是我学习过程中的一些笔记:

一、如果不理解科技的数据效果,可以参照标准科技的效果。例如人族的铁剑术:

(1)数据:核心效果,决定着单位的属性奖励;

(2)等级:科技能够升级多少次。升级次数决定着增量的次数。

(3)状态:研究科技需要花费的黄金、木材和时间。科技越往上升,则花费的
黄金、木材和时间越多。如果是给NPC用,则可以全部设置为0。

(4)可随单位转移所有者:比如我用女妖占据了一个步兵,我能否继承它的科技。如果是False,那么我占据的步兵没有科技加成。

(5)只应用于之后生产的单位:我先生产了A步兵,接着升级了铁剑术,最后生产了B步兵。如果该值是Ture,则只有B步兵有科技加成,A步兵没有。所以它默认是False:只要升级了科技,所有步兵都享受了科技加成。

阅读更多 »

禁止工人单位在矩形区域内进行建造_魔兽编辑器

本羊研究这个触发的目的是为了修复肥羊镇的一些BUG。

难点:4族工人在建造时是不同的形态,人族农民是在建筑边上敲,兽族苦工是钻进去敲,亡灵寺僧是在召唤建筑自动建,暗夜小精灵类似苦工,但有些建筑物建造会消耗小精灵。

一开始,本羊选择的动作是:使正在建造的单位爆炸而死或杀死或删除,那么会出现什么情况?

答:苦工这类单位消失,无敌,不可见,还占人口。

阅读更多 »

WorldEdit触发器(Trigger)浅析:第三章 ★Triggert动作

  Trigger是由事件、条件、动作组成。在完成事件的触发,条件的判断以后,才会执行动作;作是触发器执行的步骤,也是触发器的灵魂,我们需要的功能都是由动作来执行。正因为动作的内容如此丰富,就像积木一样由我们自己搭配;因此,对每一块积木的形态的掌握至关重要,不要好高骛远,等你熟悉各条动作的作用,你就可以组合出各种自己需要的触发器。
DarkSheep:因为博客文本格式的问题,无法完美显示动作触发的层级关系,本羊尽量用截图作为补充。
第一节 ☆ 基础动作

这些动作不包括在各个分类中,但对于具体的执行却有至关重要的影响。如下表:

Do Nothing
无动作
不做任何动作
Comment
注释
仅用做分隔及说明
Custom Script
定制脚本
自定义脚本
Wait
等待
等待指定秒数后执行
Wait (Game-Time)
等待(游戏时间)
等待游戏中时间后执行
Wait For Condition
等待条件
等待条件满足后开始计时
Wait For Sound
等待音乐
等待音乐播放完毕后开始计时
Set Variable
设置变量
为变量赋值
Skip Remaining Actions
跳过余下动作
不再执行此动作以下的所有动作

1、注释的作用就是对你的触发做一下说明,特别是在动作复杂的情况下,添加一些注释会看得更加清楚,注释不会对动作本身的执行产生任何影响。

2、脚本就是利用触发器的API界面来运行JASS,但受限于API的功能,无法像JASS一样随性的书写,因此这个只能作为辅助动作来使用。

3、等待的话,就是在一定的时间或条件达成以后再执行下面的动作,一般情况下等待语句尽量少用,特别是在各个触发相互调用数据的时候,可能会造成冲突;当然,事情也并没有这么严重,等待的使用频率还是会很高的,必要的时候还可以用计时器

4、设置变量,这个是非常重要的一个动作,其使用方式是赋值“设置 变量名=被赋值的同类型内容”,注意这里的“=”不是“等于”的意思,是把后面的数据赋值给变量,而使变量可以代替这个数据

例如“设置 单位变量Unit=大法师0001”,那么再次对“Unit”变量赋值之前,对“Unit”的操作就等同于对“大法师0001”的操作。

不同的变量对应不同的数据类型,所以我们在需要对数据进行赋值到变量的操作的时候,先要确定这个数据是什么类型,然后再创建同一类型的变量来执行赋值语句。

5、跳过余下动作就是不再执行剩下的动作,在一个触发的动作中,也显得比较重要,一般是在达成一定的条件以后,跳过余下不再需要执行的动作,但有一点,在组动作执行的时候无效。

阅读更多 »