新手常见问题整理

查看: 176|回复: 0
[复制链接]

WOW8 发表于 2018-7-18 14:40:26 | 显示全部楼层

欢迎访问本论坛,注册你的账号并登录,来与我们交流吧!

欢迎 登录 与我们交流!没有帐号?立即注册

x
原贴由 夜の星 整理,最后编辑于 2013-10-27 22:39 。

~~~新手常见问题整理~~~



注: [Q]为Question(即问题),[A]为Answer(即解答

物体编辑器相关:
№ 1
[Q] 如何在物体编辑器中输入负数,或者很大的数值?(如超出50万?)

[A] 在物体编辑器中,按住键盘的"shift"键,在按住的状态下,双击你要修改的项目即可~
№ 2
[Q] 无T技能是怎样的原理?如何起的作用?

[A] 由于不使用触发器,无T技能靠的纯粹是物体编辑器中原有技能的各种组合,“诞生刺蛇”“火土风暴”“凤凰火焰”“穿刺”“蝗虫群”等等,都是无T技能重要的组成部分~你可以参考下现有的无T技能以及教程(上面已经列出)
№ 3
[Q] 我制作了一个物品,为什么它的技能不显示CD动画(转圈)?

[A] 如果你的物品有一个主动和数个被动技能,请将主动技能移到第一个位置即可~
№ 4
[Q] 魔法书这个技能有什么用?

[A] 魔法书可以理解为一个能够用于装别的技能的容器,一般来说用途有以下几个:①可以让单位拥有更多的技能页,包括模拟各种UI系统;②用于隐藏技能的图标(将技能放入魔法书中,地图初始化时,触发器禁用魔法书,但魔法书中的技能不受影响);③可以用它,突破物品技能最多4个的上限(把被动都放进书里);这个技能同样支持魔法书里面套魔法书~ 总之这是个灵活性很高的东西~
№ 5
[Q] 我用暗影突袭改了2个不同技能,魔法效果也修改了,为什么打到一个单位身上,后面的覆盖了前面的?同时只能有一个的效果?

[A] 大多数技能都是这样的:只能允许一个效果存在,即使改了魔法效果也是一样的,只要是相同模板修改出来的,就会冲突~可以考虑用触发器来进行模拟~
№ 6
[Q] 为什么我将眩晕的持续时间修改为0秒,单位却一直晕呢?

[A] 在某些技能(不少呢)中,持续时间0秒就意味着“无限”,所以至少需要0.001秒~
№ 7
[Q] 我用增加属性的物品技能,做了一个额外属性技能,为什么只有1级有效呢?

[A] 某些技能默认只有第一级有效果,这个物品技能就是之一~可以用“属性附加”,就是图标为黄十字的那个来做,如果需要的话,配合魔法书隐藏图标
№ 8
[Q] 不死族的死亡契约,如何让它能够对非不死单位使用呢?

[A] 有一个叫做“死亡契约(物品)”的技能,用这个即可~
№ ⑨
[Q] 我给单位找模型,每次都得找很久才能找到我要的,请问有什么捷径吗?

[A] 如果你知道模型名称的第一个字,在那个列表选择的时候,输入那个汉字,就会自动跳转到目标附近~
№ 10
[Q] 经常看到有人说到“蝗虫”技能,请问这个有什么作用?

[A] 拥有“蝗虫”的单位,不会显示血条,不会被选中,不会考虑碰撞,不会被技能甚至触发器的单位组作用到,总之,可以避免很多的东西~基本上所有的马甲单位,都会加上这个技能~
№ 11
[Q] 请问如何可以让无T技能创建的马甲过一段时间死亡?我无法做到设置生命周期?

[A] 假设马甲30点生命,你要让它存活30秒,可以考虑设置它的生命值恢复为-1每秒(总是)~
№ 12
[Q] 如何制作,单位攻击别人,有几率发动闪电链/净化之类的效果?

[A] 有一个物品技能,叫做“闪电之球(新的)”,里面可以设置~很方便的~
№ 13
[Q] 为什么我用“腐臭蜂群”新建的技能,单位被击中后那个黑烟效果改不掉?

[A] 这个技能存在BUG,所有新改的蜂群,那个效果还是参照原来的蜂群技能,所以得修改原来那个技能才能奏效~
№ 14
[Q] 为什么我的震荡波技能,放出去后会很卡?

[A] 在某些地形庞大、装饰物众多的地图中,会出现这个现象,震荡波这个技能会改变地形~
№ 15
[Q] 我用水元素改了2个技能,加给一个单位,却发现没办法正常使用?!

[A] 通过相同基础模板修改的技能,放到同一单位身上就会产生冲突,必须使用不同的模板(比如这个例子可以用水元素+召唤狼解决)~或者使用通魔技能,然后触发器模拟效果~
№ 16
[Q] 我想做一个类似DotA月之骑士的弹射技能,但是”月刃“那里找不到设置?

[A] 月刃只是个假技能,实际上是单位学习技能后,通过科技来实现弹射次数的改变~
№ 17
[Q] 我想做一个减少普通攻击伤害的技能,就像Dota先锋盾一样,怎么做呢?

[A] 可以考虑用暗夜山岭巨人技能“硬化皮肤”修改~
№ 18
[Q] 有什么技能可以减少魔法伤害?

[A] 推荐“艾鲁尼之优雅”技能~
№ 19
[Q] 我修改了吞噬技能,可我改不了伤害值?/我新弄了个吞噬技能,给单位加上,却什么都不能吃?这是为什么?

[A] 除了吞噬技能,还得有另一个技能“吞噬货物”,这个才是具体数据的设置~单位必须同时有这2个技能才能正常使用该技能的说~
№ 20
[Q] 我给一般单位加了个物品栏(可以用技能),可是一吃属性书,魔兽就崩溃......

[A] 属性本来就是英雄才特有的东西...给单位使用,程序自然就出错了~
№ 21
[Q] 有些单位的攻击带有闪电,比如暗夜奇美拉,请问如何做到?

[A] 你只需给单位设置一个“闪电攻击”技能即可~
№ 22
[Q] 为什么我的魔法/生命吸取无法向友军传递,也无法超额?

[A] 要修改游戏平衡性常数中“汲取可......”的各个项目~
№ 23
[Q] 怎么修改虚无单位的魔法加成?

[A] 同样是游戏平衡性常数中,“伤害奖励-虚无”
№ 24
[Q] 我不想要暗影突袭、致命一击的那个数字,有办法去除吗?

[A] 还是游戏平衡性常数,将字体大小改为0好了~唔...到这里不难看出,有些技能的设置都要依靠“游戏平衡性常数”~新手们要记住介个哦~
№ 25
[Q] 专注光环的百分比奖励为什么不正确?

[A] 这个奖励只计算基础护甲,包括后面英雄敏捷之类,带来的加成一概不算,局限性还是很大的....可以参考下这个帖子
№ 26
[Q] 物体编辑器中范围技能的“影响区域”,是如何计算的~

[A] 这个影响区域就是半径,会考虑单位的碰撞~
№ 27
[Q] 如何让技能能够对魔法免疫单位施放?

[A] 将技能的学习等级设为大于等于6即可,但是有些技能的伤害依然不会有作用~



触发器(T)相关:
№ 1
[Q] 我从论坛上,下载了一些技能,如何导入自己的地图中?

[A] 最好的方法,就是看懂作者的思路,然后依样画葫芦,自己做一个...但是如果实在不懂,也可以将所有技能用到的马甲单位、技能、触发器复制到你的地图中(复制触发器前,确保你地图编辑器的“文件-参数设置-综合-当粘贴触发器数据时自动创建未知变量”开启),然后重新设置下触发器中的某些东西,如单位的类型,开启关闭触发器等等~更详细请参考:技能导入教程
№ 2
[Q] 什么是泄露?为什么需要排泄?如何排泄?

[A] 所谓内存泄露,就是我们在使用触发器的过程中,创建了各种临时物件,却未记得删除,导致其不但占用空间,并且降低系统的效率,比如“点”就是最容易产生的泄露,排泄方法请点这里
№ 3
[Q] 通魔这个技能有什么用?经常看到有人用这个?

[A] 通魔是一个非常好的技能模板,多用于假技能,然后由触发器发动效果~通魔的详细介绍,可以参考通魔全讲解
№ 4
[Q] 如何制作和属性相关的伤害?

[A] 单位-伤害目标,具体可以参考下图:
№ 5
[Q] 我用了单位里面的伤害区域,可它不分敌我怎么办的说?

[A] 用单位组选取+伤害单位替代~参考如下:

(注:判断条件时用“匹配单位”,伤害,即执行实际动作时,用“选取单位”)
№ 6
[Q] 单位准备释放技能、开始释放技能、发动技能效果有什么区别?

[A] 假设一个投石技能,施法时间5秒,单位的魔法释放点(施法前摇)1秒,
玩家发布命令,单位吟唱法术→5秒→单位举手做出施法动作→1秒→石头扔出


准备释放技能
单位开始释放技能
发动技能效果
所以,一般来说,使用触发器制作技能效果的时候,用的大多都是“发动技能效果”,而不是“开始释放技能”~
№ 7
[Q] 立即移动单位会打断单位动作,怎么办?

[A] 使用”设置单位X坐标“,”设置单位Y坐标“代替即可~
№ 8
[Q] 怎样修改地面单位的飞行高度?我做的击飞飞不起来?

[A] 给单位添加“风暴之鸦”技能,然后删除,这样处理之后,单位就可以设置飞行高度了~
№ ⑨
[Q] 为什么我移动建筑单位时,只有选择圈动了,模型却留在原地?

[A] 对于默认移速为0的单位,貌似设置XY坐标会有BUG~这里只能使用立即移动单位~

№ 10
[Q] 我使用了Cj函数设置漂浮文字速率,就是有X轴速率和Y轴速率的那个,为什么无效?

[A] 请注意,这里的单位是很特殊的~这里的“1”,相当于单位之类的速度的“1802.81691”左右,一般来说,错误设置成几十的大小,就足够让漂浮文字一下子飞出地图了~
№ 11
[Q] 生命周期有什么作用?

[A] 相当于给单位一个存活倒计时,时间到了,就会杀死单位~生命周期可以用T添加,也能在水元素之类的召唤技能中见到~
№ 12
[Q] 什么是马甲?它们有什么用?

[A] 马甲,就是你为你的技能,所创建的辅助单位~有的马甲是用来放技能的(比如眩晕敌人)~还有的马甲是用来当做特效,观赏用的~马甲单位一般都会带有蝗虫技能,以免被错误选中~

№ 13
[Q] 我怎么命令单位施放技能?

[A] 单位-发布命令;注意!比如说你是用风暴之锤改的技能,发布的命令就是风暴之锤...以此类推的说~
№ 14
[Q] 为什么我命令马甲放技能,它们要等上一会才会放出?

[A] 某些马甲单位设置的不好,“魔法释放点”并没有改为0,同时,没有在创建时直接让马甲面对目标,导致需要转向+播放施法动画,从而延误技能发动~(将马甲的转向速度、移动速度改为0,可以无视面向角度)
№ 15
[Q] 我如何排泄我的马甲单位?

[A] 最好使用生命周期,不要过于短,否则会导致马甲来不及放技能;切忌不要在瞬间删除马甲单位,这也可能导致技能放不出~;当然使用负数生命恢复也是可以的~
№ 16
[Q] 特殊效果,需要删除吗?

[A] 需要的~不删除就是泄露~如果只是持续一次的效果,创建完之后,立刻删除,不会影响动画的播放(会播放一次)~如果是要持续的,则需要延时删除的说~
№ 17
[Q] 我如何设置特殊效果的高度?

[A] 特殊效果无法设置高度~但你可以将一个马甲单位的模型改为这个效果,然后创建马甲,改变高度来替代的说~
№ 18
[Q] 能不能修改特殊效果的大小、颜色,能不能移动位置?

[A] 同上,不能,但可以用单位替代~绑定在单位身上的特效会跟着单位移动~其他特效不会,如果需要移动,还是单位模拟~
№ 19
[Q] 如何隐藏技能图标?

[A] 在魔法书的部分就有论述,请往上翻阅~
№ 20
[Q] 单位组怎么排泄?清空还是删除?

[A] 清空只是将里面的单位全部赶走,单位组本身还好好的~如果这个单位组不用了,就得删除的说~详细排泄教程请点这里
№ 21
[Q] 我创建了一个马甲,如何让马甲的技能等级和英雄一样?

[A] 单位-设置技能等级~
№ 22
[Q] 如何刷新单位的技能?

[A] 如果是全部技能,可以使用“单位-重置技能CD”~如果只是针对单个技能,可以删除再添加~
№ 23
[Q] 如何让单位瞬间转向?我设置了0秒可是没有用的说~

[A] 魔兽貌似不支持已有单位瞬间转向......只能删除原来的,创建新的单位......
№ 24
[Q] 怎么让单位慢慢移动到一个位置,不是瞬间的?

[A] 就是常见的冲锋、击退类技能,使用计时器,每0.0X秒移动单位,比如原本要冲锋1000,每0.01秒移动10,这样看起来就是连续的了~
№ 25
[Q] 怎么向指定的方向移动单位?

[A] 极坐标位移这个函数~记得清除点泄露~或者懂原理的可以使用坐标算法~
№ 26
[Q] 如何制作群体技能,比如说群体锤子?

[A] 单位组选取敌人,然后创建马甲单位在施法者的位置,发布锤子命令到选取单位~
№ 27
[Q] 如何制作任意单位受伤害事件?

[A] 最简单的方法,就是准备三个触发器ABC,A触发,地图初始化,选取地图上所有单位,为C触发注册指定单位受伤害事件;B触发,事件是任意单位进入完整地图区域,为C注册指定单位伤害事件~C触发此时就具有了这个功能~
概括起来说,就是给地图上每个单位,都注册一个指定单位事件~
№ 28
[Q] 怎么捕捉单位的普通攻击?任意单位被攻击不精确~

[A] 给单位一个法球效果,然后任意单位受伤害,判断触发单位是否拥有法球效果,如果有,则是被普通攻击击中,并且触发删掉那个效果~
№ 29
[Q] 如何制作属性冲击波?

[A] 给冲击波一个BUFF,然后同上判断单位是否有BUFF,即是否被冲击波击中;如果是,则命令伤害来源对触发单位造成属性伤害~
(注:这里不要删除BUFF,并且要判断伤害值)
一个简单的例子:

当然你需要有一个任意单位受伤害的系统(编辑器不提供的话要自己写),以及一个特殊设定过的震荡波/冲击波/腐臭蜂群技能

№ 30
[Q] 怎么让单位颜色渐变,或者说是慢慢变大?

[A] 使用计时器,不断调整单位颜色、大小~
№ 31
[Q] 如何替换单位?

[A] 使用触发器“单位”列表中现成的功能,或者删除+新建(二者实际是一样的)
№ 32
[Q] 如何删除单位的蝗虫?

[A] 删除技能后,隐藏单位再显示,但是会有点小BUG~(也可以考虑利用”混乱“技能)
№ 33
[Q] 如何设置闪电的高度?

[A] 新一点的UI,都会加入带有Z轴的闪电函数,用那个即可~如果没有的话,只能自定义代码了~
№ 34
[Q] 我设置闪电Z轴50,单位高度50,想让他们重合,可他们在有些地方高度不一样?

[A] 单位的“高度”,是离地面的距离,而闪电的Z轴高度,并不受地面影响~比如某处地面高度15,闪电Z轴50,那么闪电实际离地面只有35~
解决方案是,设置某个点loc为单位、闪电的位置,单位高度50,则设置闪电Z轴为((loc的Z轴坐标)+50)
№ 35
[Q] 我修改闪电的颜色,可是总是有问题?

[A] 闪电RGBA的取值范围是实数0~1,并不是整数0~255~
№ 36
[Q] 如何判断单位拥有一个技能?

[A] 一般来说,判断单位的技能等级是否大于0即可~但是某些极其少数的特殊技能无法正确判断~
№ 37
[Q] 如何做一个范围吸引?

[A] 计时器,每X秒,选取圆范围内单位,用极坐标位移,将它们向圆心移动~
№ 38
[Q] 漂浮文字有上限吗?

[A] 有,最多100个,所以请合理使用~
№ 39
[Q] 如何捕捉重生技能?

[A] 无法直接捕捉,但可以使用单位生命值变化事件来替代...
      或者用触发器直接模拟重生效果~
№ 40
[Q] 如何捕捉致命一击?

[A] 无法直接捕捉,但可以使用一个被动重击技能替代,然后任意单位受伤害,判断是否拥有击晕BUFF
№ 41
[Q] 如何捕捉单位攻击力?

[A] 这里写出来,不是打击新人的积极性,这个问题真的比较无解,至少现在看来,没有几个可行的方案~
№ 42
[Q] 如何捕捉单位的护甲?

[A] 比较麻烦,原理就是对单位造成一定伤害,然后根据计算护甲后,单位实际扣血量,逆推推得护甲大小(建议直接使用YDWE现成功能,算法较为复杂)注:该算法会受到虚无以及硬化皮肤影响,导致不精确的说~
№ 43
[Q] 如何捕捉单位释放技能消耗的魔法值?

[A] 单位发动技能效果—记录当前魔法(记为A),开启计时器,0秒到期
      计时器到期—再次记录魔法值(记为B)A减去B就是消耗的魔法(如果发动技能效果的触发器中,没有相关干扰)
№ 44
[Q] 为什么我用任意单位受伤害做了个伤害加深,魔兽就出错了呢?

[A] 因为你用触发器伤害单位,再次触发这个事件...触发后,又触发一遍...所以死循环了~
      在伤害语句前面,加上“关闭当前触发”,后面加上“开启当前触发”即可的说~
      当然如果你能确定触发器的其他条件也能起到组织死循环的作用,可不加上述二条~
№ 45
[Q] 怎么改变单位的攻击、防御类型?

[A] 替换单位,或者科技(科技不可逆)~
№ 46
[Q] 什么是坐标算法?

[A] 简单来说,就是舍弃”点“,而直接用实数的运算来取代~
      极坐标位移的坐标算法:
      设初始位置X0,Y0,向θ方向移动D距离
      新的位置 X1=X0+d*cosθ   ;   Y1=Y0+d*sinθ
№ 47
[Q] 为什么我的技能使用2次,第一次的就停了下来,出错了?(也就是不支持多人?)

[A] 这个的话,一般有2个选择,
一是使用数组变量,来达到这一目的,详细请参考此教程
二是使用缓存或者哈希表,YDWE将这2个做成了T指令,可以考虑使用~
№ 48
[Q] 如何在T里面输入小数点第三位以后的数?

[A] 在这一段插入自定义代码,以这个形式保存,或者将其表示为如下形式(3.14159→→→314159/100000)
№ 49
[Q] 数组变量大小有上限嘛?

[A] 有,最多只能有8192个元素,即下标0~8191的范围~


jass相关:
№ 1
[Q] 怎样才能用jass做技能?


[A] 你必须先懂得jass的语法,以及书写方式~为打好基础,请新人先去学习下jass教程~

№ 2
[Q] 我如何用jass来制作支持多人的技能?

[A] 使用缓存或者哈希表,大体思想就是获取句柄(一般是计时器)的HandleId,然后将数据绑定到这个目录下~由于HandleId是唯一的,所以数据是互不冲突的~或者,一样使用全局变量数组,或者VJ中的结构体(依然需要自己弄绑定)等等~

      当然,如果需要的精度不高,有时候,局部变量+等待就能解决问题~
№ 3
[Q] Vjass、Cjass是什么?

[A] Vjass和Cjass都是对于jass的拓展,能够让用户不必受一些原有语法规则的约束,以及使用新的语法功能~但实际上,你用VJCJ写的代码最终都会被他们特有的编译软件,编译成标准jass(魔兽只认识这个)~
№ 4
[Q] 我在触发中,用自定义代码声明了局部变量,为什么会报语法错误?

[A] 局部变量只能在一个函数的最开头声明,也就是说,local xxxx 之类的语句,必须扎堆放在触发器前几行~(Cjass不受此限制)
№ 5
[Q] jass代码中,如何访问我在变量管理器中创建的变量?

[A] 假设你的变量(这里仅指变量管理器里面的),名字为UNIT,那么在jass代码中需要加上"udg_"前缀,即“udg_UNIT”~
№ 6
[Q] 我怎么在jass中输入单位类型、物品类型之类的?

[A] 这些所谓类型,实际上是一个整数的编号,一般由单引号和字符组成(如步兵 'hfoo'),在物体编辑器中按住ctrl+d,即可查看各类ID~
№ 7
[Q] 为什么有时候我无法测试下载的jass技能?没有语法错误!

[A] 一般为版本问题,如hashtable只支持1.24及以上,returnbug只支持1.24以下,如果重新保存后依然无法进入游戏,则只能放弃或者切换魔兽版本~
№ 8
[Q] jass中怎么使用单位组选取?我无法传递局部变量保存的数据到单位组中~

[A] 一般来说jass里面,都会舍弃ForGroup和选取时那个条件函数,用如下形式替代:

local group g=CreateGroup()
local unit u
call GroupEnumUnitsInRange(g,0,0,500,null) //选取的条件填null,即不分黑白抓来再说
loop //采用循环代替单位组动作  
    set u=FirstOfGroup(g)
    exitwhen u==null
    if GetWidgetLife(u)>0.405 then //条件判断放在循环里执行 ,注意!此处,不论是判断条件,还是执行动作,目标单位均用某变量(比如本例子中用的是“u”)访问不是GetFilterUnit或者GetEnumUnit!
        单位组动作
    endif
    call GroupRemoveUnit(g,u)
endloop


但注意一点,这样的话,单位组动作完成后,单位组中的所有单位也就全部被移除了,请自己注意~

题外话,group的本质极有可能是一颗平衡的二叉查找树,因此这种循环遍历的方式的复杂度为O(nlog(n)),是要低于ForGroup的O(n)的~
№ ⑨
[Q] 为什么我在jass中创建特效,输入了字符串作为路径,却总是提示语法错误?

[A] “\”是一个转义字符......所以它单个出现的时候,并不表示目录,反而会出错~你需要用双斜杠替代("\\")"units\human\Peasant\Peasant"  这个路径,就应该改为:"units\\human\\Peasant\\Peasant" 在T中,系统会自动处理字符中的"\",所以不存在jass中上述问题~
№ 10
[Q] 我新学jass技能,很多函数都不知道怎么用jass写,怎么办?

[A] 可以在T里面写好,然后让系统转成jass~不过不要过于依赖哦~



待补充完善......
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表