易码技术论坛

 找回密码
 加入易码
搜索
查看: 600614|回复: 26

[精品]魔兽编辑器详细教程

[复制链接]
发表于 2006-8-29 12:02:00 | 显示全部楼层
上次比较详细的说了下trigger的组成等等,也做了一个最基本的trigger,所以大家现在对trigger应该有了一个大概的概念,从这次开始,以后将使用很多例子来具体说明一些命令的作用,各位行行好,我写的这么辛苦,各位好歹动手做做,膜拜膜拜~~
   接下来我们将会从一个最简单的trigger ability做起,再一步一步的将之复杂化,在这个过程中来看看各个命令的具体作用,至于为什么要以trigger ability作为例子,因为trigger ability是学习命令的最简单快截的途径,至少我的经验是这么告诉我的。
   那么开始咯,新建一个trigger(方法上次已经说明了),然后暂时放在那里不去管他,我们先做些其他的必要准备。这里需要讲讲trigger技能的原理,其实trigger ability就是一个或者多个trigger共同实现的一些效果而已,上次已经说了trigger有3个组成部分,其中引发trigger的部分是“开端”,而在一个trigger ability中,事件的开端就是某个单位使用了一个特定的技能,这个“特定的技能”由于作用不过是用来引发事件而已,所以一般来说是没有任何效果的(增加减少HP,迟缓等效果),而WE本身没有提供此种什么效果都没有的技能(关于trigger专有技用channel以后再说明),所以我们要自己做一个这种技能,那么怎么做呢?
分下面几个步骤:
1 确定将要制作的trigger ability的目标类型,分3种目标:unit“单位”,point“点”或者no targret“没有目标”。
2 在ability editor里面找到和trigger ability拥有相同类型目标的现成的技能,比方说我要做的trigger ability目标是一个点,那么我就找cloud of fog(乌云)这个技能,如果是一个单位,就找thunderbolt(风暴之锤)这个技能。找到需要的技能以后,copy这个技能,再粘贴到自定义技能里面去(当然如果你确定这个技能除了做trigger ability以外没有其他作用,也可以直接在原技能上改)。
3 删除粘贴后技能里面有关伤害,特殊效果,以及视觉效果方面的所有数据,然后把mana消耗,施放范围施放时间间隔等改成需要的数目。
完成以上步骤以后就做好了一个为trigger ability专用的技能了,我们姑且叫做这种技能为基础技能(自己取的,免得以后麻烦)
   那么按照以上步骤开工吧,由于我们将要制作的trigger ability的目标是1个点,所以我们用改过的clould of fog(乌云)来做基础技能,注意在技能改的时候将area of effect(效果作用范围)改成450,这样在游戏中显示trigger ability的作用范围就是半径450的圆了,mana cast(释放费用)和cooldown(释放时间间隔)改成0方便测试用。

   现在准备工作就做好了,那么我们回到开始时创建的那个空空的trigger上面,刚才已经说了trigger ability是由一个特定技能引发的1个或者多个trigger共同实现一些效果,所以在trigger ability里面event自然就是a unit finishes casting an ability(一个单位结束释放一个技能)为什么是结束释放呢?因为有些技能的释放时间有一定长度,而且从一个技能开始释放到结束释放间隔的时间要受单位释放技能的动画播放时间影响,所以如果用a unit begins casting an ability容易造成连续启动同一个trigger的bug。这里要说明一下的是,由于没有安装WEU的同志们没有get unit's last order target point(取得单位最后一个命令的目标点)这个命令,所以这些同志请使用a unit is issued an order targeting a point(1个单位发布了一个以点为目标的指令)代替a unit finishes casting an ability,当然这样会造成condition有所不同(一会儿会说明)以及会有少许bug,但是这也是没有办法的事情了,想弥补就到置顶帖里面下WEU去吧~~
   接下来是condition,因为如果不对触发这个trigger的命令类型做限制,那么只要有单位释放技能或者有单位发布了一个以点做为目标的命令(比方说move)这个trigger就会被触发,出现的情况就是,走路也会放技能¥%%·#!#¥%,这是当然不被允许的,所以第一个condition就是对命令类型做出限制,对应使用a unit finishes casting an ability的情况的conditions是Ability being cast Equal to 召雷(被释放的技能是“召雷”),这里在召雷这个位置上,选择的是先前创建的那个基础技能,这样就把触发trigger的技能限制为只能是这个基础技能了,而对于使用a unit is issued an order targeting a point的情况condition有所变化,由于event是个order的event,所以condition也应该是判断order的condition,所以应该是Issued order Equal to Order(cloudoffog)(发布的命令是“cloudoffog”)关于“cloudoffog”,在这个condition里面是个string“字符串”(由字和符号组成的东东),释放不同技能的字符串是不相同的,具体查看的方法是在ability editor里面技能数据中Text - Order string - Use/Turn on后面对应的字母就是了。而这个condition的作用和上面那个是一样的,作用就是限制触发trigger的命令类型。那么现在的event和condition应该是这样的:
events
a unit finishes casting an ability

conditions
Ability being cast Equal to 召雷
或者
events
a unit is issued an order targeting a point

conditions
Issued order Equal to Order(cloudoffog)

如果不是请对照改正
   最后就是action部分了,在这部分我们要做的,就是添加一些视觉效果在你释放技能的那个点上。由于技能名字都叫召雷了,自然效果里面少不了雷啦,所以我们用了这样一个action,先选择Action - Create Special Effect At Point,然后按照以下格式设置create a special effect at get last order target point of (casting unit) use abilitys\spells\human\thunderclap\thunderclapcaster.mdl(在释放技能的单位最后一个命令的目标点上产生一个雷霆一击“释放者”的特殊效果)在abilitys\spells\human\thunderclap\thunderclapcaster.mdl这一栏点进去还有很多其他效果,可以自己试试换个效果感觉怎么样。对于enevt用的是order的情况,只需要把get last order target point of (casting unit)换成target point of issua order就可以了。那么到此,视觉效果就设置好了,但是只是好看的技能是没有用的,还要对周围敌人产生伤害才行啊,所以还要加入这么一条action,先选择unit group,再进行以下设置pick every unit in(units within 450.00 of (get last order target point of (casting unit)) matching ((matching unit0 belongs to an enemy of palyer 1 (red)) equal to turn)(选取释放技能的单位发布的最后一个命令的目标点周围450半径范围内的所有敌方单位)再在下面出现的loop - action上点鼠标右创建个新action,这个action的内容是这样的,set lit of (picked unit) to ((life of picked unit) - 100)(设置被选取的单位的生命值为被选取单位当前的生命值-100)


对于enevt用的是order的情况,只需要把get last order target point of (casting unit)换成target point of issua order就可以了。
这样,一切都做完毕了,最后一步,在unit editor里面给随便一个英雄安上那个基础技能,好了,进游戏测试一下吧~~,当然首先要在地图上放上那个英雄和一些敌人啦。
不明白的地方对照演示去修改吧~
 楼主| 发表于 2006-8-29 12:02:58 | 显示全部楼层
技能:经典中的经典:群体睡眠

效果:范围内的敌人有一定几率会进入睡眠状态,成功的几率会随等级提升

解释:最最基本的单体技能群体化的演示,还记得我让大家考虑的描述吗?呵呵其实就是,选取范围内的所有敌人,并对每一个敌人创建一个辅助施法单位,对其使用睡眠

准备工作:首先一样,需要一个用于施放的技能,现在的Channel(通魔)技能已经可以做到有范围的施放技能的模式了,但唯一的缺点在于电脑不知道如何使用……所以,如果大家觉得方便的话,就拿Silence(沉默术)来做施放技能吧,只要把技能的效果改成无效、持续时间改到0,并把作用对象改成AIR+WAND(一般不会有那么变态的单位存在的呵呵,所以沉默的效果不会影响到其他的单位,因为我们只要用到他施放技能的那个圈圈就行了);同时制作一个Sleep技能,添加给辅助释放单位;具体设置可以参照演示里的内容

触发器内容



看上去和上一次讲的差不多哦,所以这里我只解释新的东西



重点在ACTION里的第一句,也就是Pick up unit

这里整句的意思(句子太长请看演示):选取所有在以施放技能的目标点为中心,100+100*技能等级为半径内,所有活着、并且是触发单位的敌对玩家的单位

以上就把规定范围内(200,300,400)的敌人挑出来了

接着是IF语句,用来判断条件:在1-100取一个随机数,是否小于等于20+20*技能等级(40,60,80)

后面的都一样了,不懂的请看上一课



接着解释一下新用到的函数

首先是在Pick un unit命令里,用的是Unit In Range Matching Condition的函数,这条函数表示的是在范围内满足条件的单位,接着选取中心点(Target point of ability being cast技能目标点)以及范围(100+100*技能等级)然后就点开Condition选择选取的条件



因为要选取的单位是活的并且要是敌人的,所以需要用到And关系来将2条判断联系起来



(Unit is alive)用判断Unit是否存活用的

(Unit belongs to an enemy of Player)是用来判断Unit是否是Player玩家的敌对单位

注意一点,在Match Condition语句里,所有表示在比较的单位,全部用Matching Unit这个函数来表示,Match Unit唯一用在这里也只能用在这里,具体可以看演示,需要自己理解,说不清楚



然后是在IF语句里的Random Number函数,该函数会返回在上下限之间随机的一个数,通过和固定数比较可以实现一定几率触发的效果



其他的命令和上一次的都一样就不多做解释了





大家可以看懂吧?看不懂?看不懂就去做,不做怎么可能懂?

演示,是给你看效果的

教程,是对演示的详细介绍

当然对TRIGGER熟悉之后,光看演示就已经可以学到很多自己想不到的东西了
 楼主| 发表于 2006-8-29 12:03:17 | 显示全部楼层
触发技能教程

第三讲 制作全新的技能(一)

 

的确的确,总是搞复合啊、群体啊也是非常有限制的,但是只要各位能够很清楚的了解各个ACTION的作用的话,是完全可以做出全新的技能的,例如非常经典的时间静止就是利用PAUSE UNIT命令来实现的,当然本教程并不是给你们解释各种命令什么用的,而是给你们介绍如何利用TRIGGER来做一些自己的原创技能
 

技能:附魔武器-冰

效果:使目标的攻击附带冰冻属性并增加一定伤害,持续45秒

解释:大家都知道那个FROST ORB的效果,没错!这个技能其实就是把FROST ORB的效果直接添加到单位身上,用的是UNIT-ADD ABILITY来实现这个效果,很简单吧?想必我不说下去大家都知道该怎么做了……不过我认为呢,可能重点更在于那个持续45秒吧,因为有很多人不知道用什么好办法来解决这个WAIT的问题……下面开始具体的制作

准备工作:首先要做一个施放技能,因为这次的效果是完全用TRIGGER产生的,也就是说施放技能是没有任何效果的,只是用来触发的,所以,这里推荐一个技能:CHANNEL(通魔),CHANNEL可以做出各种施放条件的技能,以单位、点、范围、立即生效为目标的等等都可以很方便的做出来,唯一的缺点就是,电脑的AI并不会自动的使用它(这个真是大麻烦啊~得自己写TRIGGER让电脑用哎)。当然你也可以找一些无效果的技能(例如INNER FIRE效果改0啊等等)作为施放技能,不过本例中就用CHANNEL来做啦,别忘了做一个3级的FROST ORB的技能哦
 


插入内容:CHANNEL技能中一些重要的东西

ART DURATION:技能动作的时间,就是指在你的单位开始做施放技能的动作后多少时间,才开始这个技能的效果

BASE ORDER ID:基本命令ID,这个ID随便选啦,如果用了不同的ID,就可以把多个CHANNEL技能放在一个单位身上了,在用ORDER命令施放技能时用到的也是这个ID

DISABLE OTHER ABILITIES:取消其他技能,就是说使用该技能时你的单位就不能移动和使用其他技能一直到该技能效果结束后才能移动

OPTION:    VISIBLE:可见的,不打勾就看不到这个技能了

              TARGETING IMAGE:目标图象,就是施放范围技能时那个大圈圈

              PHYSICAL SPELL:物理技能,可以对魔免的用,就像蜘蛛的网那样

              其他几个根本用不到嘛……就不说了

TARGET TYPE:施放类型:    INSTANT:立即,像山丘的震地那样

                                 UNIT TARGET:单位目标,像山丘的锤子那样

                                 POINT TARGET:点目标,像大法的暴风雪那样

                                 UNIT OR POINT TARGET:单位或点目标,牛头人的震荡波那样
 


基本上要做各种施放方式的技能改改以上几个就够了,自己多用用就知道了

插入完毕



触发器内容


此主题相关图片如下:


怎么样,有了前2次的讲解,函数已经没什么大问题了吧?


现在先给大家介绍一下新出现的命令

ACTION第3和最后一句就是ADD ABILITY和REMOVE ABILITY命令了,作用非常简单,从指定单位身上添加和移除技能,没啥好说的

CONDITION里第2句,是一个判断语句,用来判断目标单位身上的“附魔武器-冰”的效果是否存在,当该技能等级为0时,即没有这个技能

整个TRIGGER的意思就是,当使用“附魔武器-冰”技能时,如果目标单位身上没有被用过该技能,则技能生效,并在15秒后,移除效果(这个WAIT的时间大家自己改吧)
 


最后是ACTION里的第一句,用来解决WAIT问题的关键:局部变量

局部变量的定义我不多做解释,懂得编程的人肯定知道,不懂就去网上找找介绍什么的,反正用局部变量真的是很方便啊~每次调用这个TRIGGER时,都会帮你开辟一个局部变量的空间,所以完全不需要担心会产生冲突。写局部变量需要用到CUSTOM SCRIPT,对局部变量进行声明的格式如下:
 


local (变量类型) (变量名)
 


由于JASS是严格区分大小写的,所以一定记得要用小写的local,变量类型在本例中是unit类型的,变量名则是udg_target_unit

其实各位在TRIGGER EDITOR里定义的全局变量,会被系统自动在最前面加上“udg_”,而这里对局部变量的声明,又正好重复了已经创建的全局变量target_unit的名字,这是问题的关键,在函数内部定义的局部变量将代替同名的全局变量产生效果!所以说,在全局变量里定义的target_unit变量,其实只是为了可以在TRIGGER里直接调用局部变量而不用把整个TRIGGER都写成SCRIPT形式而用。
 


第一句声明了局部变量的类型和名称,所以之后TRIGGER中所有的target_unit都将成为局部变量

第二句将施放技能的目标单位赋值给局部变量target_unit

第三句将附魔武器-冰的效果添加给target_unit(也就是施放技能的目标单位)

第四句设置效果技能等级

第五句等待延时

第六句第三句将附魔武器-冰的效果从target_unit身上移除

可能同志们会问为什么不能在WAIT后直接调用(Target unit of ability being cast)这个函数呢?因为在等待后这些函数取到的单位可能产生偏差,并不指向原来的单位,从而造成错误
 


解释,到此为止。
 


关于这个技能有几个问题存在,首先,效果不能被驱散,其次,不能重复作用在同一人身上,当然以上2个缺点可以通过一定方法解决,不过要考虑到的因素实在太多了~也就不在这里详细介绍,说到底,这个教程只是给大家指点一下制作技能的大致方法,关于技能的严密性,不同情况不同的对策,就要靠各位自己考虑啦!
 


我知道这一讲比较抽象,尤其是对首次接触到什么全局变量局部变量的人而言,不过这也没办法,局部变量可以解决太多原本非常复杂的问题,不管你有没有看懂这次说的内容,你只要掌握了声明局部变量和直接在TRIGGER中调用的方法,你已经成功了~具体情况可以打开我的演示仔细的研究一番,呵呵,下课吧
 楼主| 发表于 2006-8-29 12:03:56 | 显示全部楼层
创造和使用排行榜

 

还是涉及到触发.所以如果还有不懂的可以去看死蚊子的触发解说和the7today.

排行榜 其实很简单.需要的内容并不多.但对一个地图.特别是多人地图上使用的时候让大家感觉更有意思.也可以做出更多的事件.像我的地图根据排行榜设计奖励或者一些守护地图的排分.都需要排行榜.废话不多说.接入正题.

要做一个排行榜.先是排行榜显示的时间问题.一般来说.大家都习惯在进入地图以后就出现排行榜.所以我们也可以这样做.那么事件就可以写成:

事件:
Map initialization
 

地图初始化就是在地图刚开始的时候就打开排行榜.而排行榜一般不需要环境(条件).所以我们就忽略.接下来就是动作.

先要确定这个排行榜显示的是什么.如果是两边对战的时候就需要分组显示排行榜了.而大部分时候我们只对大家使用一个排行榜.所以我们可以这样建:

动作:
wait 2.00 秒
排行榜 - Create a leaderboard for (All players) titled ????(自定)

玩家组 - Pick every player in (All players) and do (排行榜 - Add (Picked player) to (Last created leaderboard) with label (Name of (Picked player)) and value 0)

排行榜 - Sort (Last created leaderboard) by 值 in 降序 order

排行榜 - 显示 (Last created leaderboard)
 

使用等待的原因是如果没有等待时间在初始化的情况下不会显示排行榜). 而签后面的 杀敌数量 为排行榜的名字.下面句是最重要的.就是排行榜上显示的玩家.常用的就是使用玩家组的精选.因为需要把所有玩家都选入.那么就精选所有的玩家.然后在的动作是把精选的玩家名字填入排行榜.而标签就是下面显示的分栏.一般是把玩家的名字作为标签.所以采用的是 精选的玩家 的名字 .而数值 需要你自己定义.最多采用的是 总采木量. 因为在RPG或一般对抗地图中.是不会进行伐木的.所以木头不会有收入.总采木量就是木头的总收入.不会显示出来的.因此可以做为变量使用来记录单位的杀敌数量等等.然后就是排行榜的排序.最后一步就是显示出排行榜.

如果要将某些玩家排除在外.比方在对战的时候有几个电脑的玩家需要排除.常用的是第6和第12个.下列句可以加在排序和显示前面:

排行榜 - Remove 玩家 6 (橙色) from (Last created leaderboard)


对于创造排行榜已经解说完了.然后是使用排行榜.不能让排行榜就这样晾着吧.这次的使用方式是记录杀敌数量.先是事件.既然是记录杀敌数量.所以要先判断敌人是否死亡.(本方玩家1.敌人是玩家2):

事件:
单位 - A unit owned by 玩家 2 (蓝色) 死亡

已经判断是玩家2的单位死亡了.一般状态下环境不需要.所以跳过.直接到动作部分.因为玩家2单位的死亡.所以我们的排行榜的数值要加1.因为我们使用 总采木量 来记录这个数值.而杀死玩家2的并不一定就是玩家1.为了方便.使用((凶手单位) 的 所有者).所以下面的动作就是:

动作:
玩家 - Add 1 to (Owner of (Killing unit)) 总采木量
 

数值已经增加了.但是并不会直接在排行榜上显示.所以我们要更改排行榜的数值.将数值改成总采木量:
        
排行榜 - Change the value for (Owner of (Killing unit)) in (Leaderboard of (Owner of (Killing unit))) to ((Owner of (Killing unit)) 总采木量)

现在已经把排行榜上的数值更改了.因为我们有时要排名次和显示.所以还需要排序.再增加以下语句:

排行榜 - Sort (Last created leaderboard) by 值 in 降序 order

排行榜 - 显示 (Last created leaderboard)

然后这个排行榜就可以正式投入使用了.创造一个排行榜容易.主要就是对排行榜的数值的控制才是排行榜真正的核心.一般都是采用变量.如果是多人的话.尽量采用变量组来控制会比较好.

 
 楼主| 发表于 2006-8-29 12:04:12 | 显示全部楼层
基础刷兵方式解说

 

因为涉及到触发.所以大家也需要对触发有一点了解.可以看死蚊子关于触发的说明.这次要说的是如何刷兵.虽然在置顶帖上有了.但是因为是用英文版的.而对讲解的比较含糊(个人认为).新人不容易学习.所以我自己也写了一份.触发以事件.环境.动作三大部分组成.而事件就是一件事的起点.如果事件没有设定好.下面的内容就不会执行.既然以刷兵为目的.常用的像守护类地图.以时间来刷兵.而有些RPG地图.以进入区域刷兵.这个按需要来定.而我这次解说的.是以单位死亡为事件来进行刷兵.就好像这个单位死亡了.然后再刷同类型的单位来.也是刷兵方式的一种.既然确定了事件.所以我们的事件就可以这样写:

事件:
单位 - A unit death

然后是环境部分.环境就是条件.我们需要确定什么样的条件呢.打个比方.如果有红蓝两个阵营.而你希望红色的阵营单位死亡后消失.而蓝色的单位死亡后会复活(刷兵).也就是说可以判断单位是否是蓝色玩家的.于是环境这样写(当然环境也可以不写):

环境:
(Color of (Owner of (Triggering unit))) 等于 蓝色


然后就是动作了.如果发生了事件.一个单位死亡了.然后确定这个单位是蓝色的.于是我们就可以执行我们的刷兵动作了.那么这个动作你需要写什么呢.如果说需要蓝色死亡的单位类型的话.那么可以写成:

动作:
单位 - Create 1 (Trained unit-type) for 玩家 2 (蓝色) at (Center of (Playable map area)) facing 默认的建筑朝向 degrees

这个触发会创造一个类型和你死亡的单位一样的单位给蓝色的玩家(也就是我们需要刷兵的玩家)在指定的区域.这个区域是可以更改的.默认的是可玩的区域的中心.一般是地图中心.也可以是地区.这个就需在你地图上指定一个地区.比方我画了一个区域.命名为TX.然后你就可以写成:

动作:
单位 - Create 1 (Trained unit-type) for 玩家 2 (蓝色) at (Center of TX <情报>) facing 默认的建筑朝向 degrees

如果想把创造的单位直接在单位死亡的位置复活.那么只要把 (Center of (Playable map area)) 部分改成  (Position of (Triggering unit)) .这样子创造的单位就可以直接在单位死亡的位置复活.同样可以应用到物品掉落的情况.

再接着就是单位的朝向度.默认的应该是270度吧.这个可以由你自己定.就是创造的单位面对的方向.做好这些步骤一个基础刷兵的触发就做好了.而刷兵其实涉及到不少的东西也有很多种方式.像前面说的.创造1个.这个1就是刷出来的单位的数量.可以由你来调整.而后面的触发单位.其实就是刷出的单位的类型.可以直接选择或使用变量(比较深一点了).而为了玩家2 (蓝色).就是这个刷出来的单位的归属问题.可以刷给玩家.也可以刷给中立敌对 (玩家13) 之类的电脑控制玩家.而区域不但可以在指定的地区还可以指定在”触发单位的位置”等.这个看需要而定.后面的 中心 .是可以更改的.可以在这个区域的某一个偏移位置或者随机点.角度这个情况并不严重.影响也不大.随自己高兴而更改.
 楼主| 发表于 2006-8-29 12:04:30 | 显示全部楼层
随机数的常识和使用

 

在WE里面.经常会用到随机数.随机数的作用是很大的.特别是对不指定出现的宝物类型或者不指定类刷兵的时候特别有效.当然其应用范围更广.不过这次先以随机掉宝和随机刷怪为列子说明.

首先说随机掉宝.如果在地图上已经存在的单位.那么可以直接双击单位进行编辑.在”掉落的物品”一栏里面可以设定掉落的宝物.使用”自定义物品表”.然后点新设置.物品设置相当于组的意思.在这一组里面可以增加和减少物品.组一次只掉落其中一个物品.总的掉出机率是100%.也就是说.如果你只有1个物品.那么就可以设成100%.如果有两个物品的话.其中一个设成60%.另一个最多只有设40%.当然也可以设更低.看情况而定.

当然上述的情况是地图上已经存在的单位才可以直接编辑.如果是我们刷出来的怪呢.物别是RPG地图的时候.很多怪会重复的刷.所以这样子设计可能就比较麻烦了.因此就需要用到触发和随机数来控制掉宝.既然是单位死亡以后掉宝.所以我们的事件就是如下:

事件:
Unit - A unit death
 

已经判断单位死亡了.然后需要判断单位的所属.这个是比较常用的环境语句.我们需要的是电脑控制的怪物死亡后掉落宝物.所以语句如下:

环境:
((Owner of (Triggering unit)) controller) 等于 电脑

条件判断已经完成了.那么接下来就是动作了.因为我们需要的是随机掉宝.也就是说.有时会掉.有时不会掉.那么就要用判断语句 IF ELSE (如果 那么 否则).语句如下:

动作:

If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - 环境?澧?
       (Random integer number between 1 and 100) 小于或等于 25
    Then - 动作
       物品 - Create ???(物品名称) at (Center of (Playable map area))
    Else - 动作
       Do nothing


上面的列子我们掉的宝物是指定的宝物类型.掉落率是25/100.其中@@@表示你希望掉落的物品.而后面的位置是在死亡的单位的位置掉落.这个比较附合我们的RPG形态.当然你也可以让他掉到别的地方.而否则的动作就是没有动作.也可以自己设定.如果我们需要掉落的宝物也是随机的话.就需要更改 “那么 – 动作”一句的触发.也使用随机数:

那么 – 动作
  物品 - Create (Random level (Random integer number between 1 and 8) item-type) at (Center of (Playable map area))

大家可以看到.其中物品的等级是随机1到8级.因为物品等级最高是8级.然后是类别 任何类 包括所有的物品了.如果你需要掉落装备等.你也可以改成”永久提升”等等类型.视情况而定.

然后我们来说随机刷怪.其实这个和随机物品的作法差不多.所以我就简单说一下动作.事件环境自己来定.要随机刷怪.我们先确定要刷的是什么怪.因为在默认情况下.可以直接刷随机等级的野生怪物.如果你需要刷自己指定的单位的话.就需要事先把这个单位存储为变量.比方我们要把骑士存成变量.变量名是 HS 的话.先设定HS的类型为”单位类型”.因为我们需要随机刷.所以需要用到变量组.有几个单位类型就用多少位数的变量组.然后赋值骑士到变量.如果使用HS(1)的话.语句就是:

Set HS(1) = 骑士

可以看到后面的数据是变量组的其中一个变量.还有像 HS(2) 等等都可以储存单位类型.这个动作放到地图初始化的事件里完成.然后我们就可以直接调用了. 我们使用十个类型.大家还记得刷兵触发吧.大部分就很类似的:

动作:
单位 - Create 1 HS((从1 到10之间)) for 玩家 2 (蓝色) at (Center of (Playable map area)) facing 默认的建筑朝向 degrees

然后就可以随机刷出这十个类型的单位了.还有像一些其它地方也可以使用随机数.希望大家融会贯通.
 楼主| 发表于 2006-8-29 12:05:02 | 显示全部楼层
触发器指令对照
Events
事件指令中英对照


 

指 令 说 明
Map Initialization 地图初始化
Destructible - Destructible Dies 可破坏物体被摧毁
Destructible - Destructible Within Region Dies 在区域中被摧毁
Dialog - Dialog Button Click 按下对话按钮
Game - Time Of Day 游戏中时间
Game - Value Of Real Variable 实数变量Real数值
Game - Game Load 游戏读取
Game - Game Save 游戏保存
Game - Hero Abilities Button Clicked 按下英雄升级技能按钮
Game - Build Structure Button Clicked 按下建造按钮
Player - Chat Message 聊天信息
Player - Cinematic Skipped 跳过电影
Player - Selection Event 选择事件
Player - Keyboard Event 键盘事件
Player - Properties 资源
Player - Alliance Change(Any) 同盟改变 (任何)
Player - Alliance Change(Specific) 同盟改变 (指定)
Player - Victory 胜利
Player - Defeat 失败
Player - Leaves Game 未翻译
Time - Time Elapsed 时间经过
Time - Periodic Event 周期性事件
Time - Timer Expires 计时器过期
Unit - Specific Unit Event 特定单位事件
Unit - Player-Owned Unit Event 拥有单位事件
Unit - Generic Unit Event 一般单位事件
Unit - Unit Enters Region 单位进入区域
Unit - Unit Leaves Region 单位离开区域
Unit - Unit Within Range 单位在范围中
Unit - Life 生命
Unit - Mana 法力
 楼主| 发表于 2006-8-29 12:05:30 | 显示全部楼层
触发器条件判断
Conditions
条件指令中英对照

指 令 说 明
Boolean Comparison 布尔值Boolean判断
Ability Comparison 技能判断
Buff Comparison 技能效果判断
Destructible Comparison 可破坏物体判断
Destructible-Type Comparison 可破坏物体类型判断
Dialog Button Comparison 对话按钮判断
Game Difficulty Comparison 游戏难度判断
Game Speed Comparison 游戏速度判断
Hero Skill Comparison 英雄技能判断
Integer Comparison 整数Integer判断
Item Comparison 物品判断
Item-Class Comparison 物品种类判断
Item-Type Comparison 物品类型判断
Melee AI Comparison 多人对战AI判断
Order Comparison 命令判断
Player Comparison 玩家判断
Player Color Comparison 玩家颜色判断
Player Controller Comparison 玩家控制判断
Player Slot Status Comparison 玩家在线状态判断
Race Comparison 种族判断
Real Comparison 实数Real判断
String Comparison 字符串String判断
Tech-Type Comparison 科技类型判断
Trigger Comparison 触发器判断
Unit Comparison 单位判断
Unit-Type Comparison 单位类型判断
And 与
Or 或
And, Multiple Conditions 与,多个条件
Or, Multiple Conditions 或,多个条件
 楼主| 发表于 2006-8-29 12:06:40 | 显示全部楼层
地图制作中的常见问题解答

基础篇

 

说在前面的话:下面的所有问题解答都以 WORLD EDITOR 英文版 为基础~~
我们可能不会对中文 WE 进行实际支持~~所以请在你查阅前确保自己有能力理解以及自己使用的是英文 WE ~~

 

-======= 基本常规问题类 =======-


 


--------------------------------------------------------------------------------

 

Q:玩家的初始金钱和木材在那里改?

A:在地图初始化的触发里选择 Set Property .就可以更改金钱和木材了。

 


--------------------------------------------------------------------------------

 

Q:我已经把Player 1 的种族设成Human,为什么进入地图的时候又变回Random?

 

A:必须把Force Properties的Fixed Player Settings打勾,如此一来,前面Player Properties设定的种族、玩家、颜色,都会被锁定

 


--------------------------------------------------------------------------------

 

Q:触发器的里各语句的位置有影响么/能换么?

A:不能换。Trigger 的执行顺序是从上到下依次执行的。
不过 Category 的先后顺序则无关紧要。

 


--------------------------------------------------------------------------------

 

Q:怎么才能让英雄可以超过10级啊?

A:Menu(菜单) -> Advenced(高阶) -> Gameplay Constant(游戏<平衡>常数) -> Hero - Max Level(英雄 - 最大等级)

 


--------------------------------------------------------------------------------

 

Q:让五级以上英雄打野生动物也能得到经验?


A:Menu -> Advenced -> Gameplay Constant -> Hero Xp Gained - Creep Reduction Table(英雄经验获取 - 野生单位经验表)
表中每一项表示每一等级可以获得的经验百分比~~如:
第一个数值为等级 1 的英雄杀掉野生动物可得到的经验的百分比
第二个数值为等级 2 的英雄~~如此类推

 


--------------------------------------------------------------------------------

 

Q:怎么让英雄即使不在战场,也会吸到经验值?

 

A:Menu(菜单) -> Advenced(高阶) -> Gameplay Constant(游戏<平衡>常数) ->  Hero XP – Global Distribution

 


--------------------------------------------------------------------------------

 

Q:怎么让游戏开启后,起始位置不会出现主城和工人?



A:进入Trigger Editor,找到Melee Initialization,如果没改过的话应该如下:



Melee Initialization
Events
......Map initialization
Actions
......Melee Game - Use melee time of day (for all players)

    //使一开始的游戏时间是早上一颗星(如果删掉就会从00:00开始)
......Melee Game - Limit Heroes to 1 per Hero-type (for all players)

    //让所有玩家不能生产重复的英雄
......Melee Game - Give trained Heroes a Scroll of Town Portal (for all players)

    //让第一个生产出来的英雄有传送卷轴
......Melee Game - Set starting resources (for all players)

    //让所有玩家一开始有一定的Gold和Lumber
......Melee Game - Remove creeps and critters from used start locations (for all players)

    //如果某起始位置有玩家,就删除附近的Creep
......Melee Game - Create starting units (for all players)

    //产生主城和工人于玩家的起始位置
......Melee Game - Run melee AI scripts (for computer players)

    //让计算机玩家有AI
......Melee Game - Enforce victory/defeat conditions (for all players)

    //使用一般的胜利/失败设定(毁掉对方所有建筑者胜)
 
将蓝色的那一条删掉即可


--------------------------------------------------------------------------------

 

Q: 怎么手动修改Map的Loading画面 ?

A:WorldEditor里菜单: Scenario -> Loading Screen
选择Use Campaign Screen -> Generic
然后自己做一个1024 * 768的Load图片
切割成4块转换为blp导入为:
UI\Glues\Loading\Load-Generic\Generic-Loading-TopLeft.blp  左上角图片,大小512 * 512
UI\Glues\Loading\Load-Generic\Generic-Loading-TopRight.blp 右上角图片,大小512 * 512
UI\Glues\Loading\Load-Generic\Generic-Loading-BotLeft.blp  左下角图片,大小512 * 256
UI\Glues\Loading\Load-Generic\Generic-Loading-BotRight.blp 右下角图片,大小512 * 256
拼起来就是完整的Loading Screen
 

然后导入以下文件可以修改Loading Bar:
UI\Glues\Loading\LoadBar\BarBorder.blp 边框
UI\Glues\Loading\LoadBar\BarFill.blp  填充图形(蓝色条)
UI\Glues\Loading\LoadBar\BarGlow.blp  打光效果

 


--------------------------------------------------------------------------------

 

Q:怎么修改游戏读取时显示的小地图图片啊?


A:1] 先做好你希望显示的小地图图片,格式要求是 24/32bit 的 TGA 格式,尺寸为 256x256。
2] 然后使用 TGA<->BLP工具 转换成 BLP 格式。
3] 用 WE 开启地图,打开 IMPORT MANAGER(F12) ~~将图片导入。
4] 如果希望图片仅在读取事有效,则重命名为 WAR3MAPPREVIEW.BLP 。
5] 如果希望覆盖掉游戏中的小地图,则重命名为 WAR3MAPMAP.BLP 。

 


--------------------------------------------------------------------------------

 

Q:怎么在WE中的Object Editor输入负数而不会自动归零?



A:因为B社担心一些非法数值会对游戏稳定度造成影响,因此限制了数值的范围。进入WE后,工具列File => Preferences => Allow negative real value in the Object Editor 打勾,就能在Object Editor中输入real负数而不会自动归零(Integer仍会自动归零)。另外,按住shift+enter再修改数值,不会受到任何限制。请注意,虽然可以输入数值而不被限制,不过如果因为非法的数值导致计算机读不出来,玩游戏时可能会死机。

 


--------------------------------------------------------------------------------

 

Q:关于 Angle Attack 究竟是什么呢?


A:Angle Attack 就是视角~~
很多人不明白具体的角度代表什么位置的视角~~这个图片可以很清楚的表示出来`
今天翻以前的教程找到的~~:)
来点掌声哦!


 


--------------------------------------------------------------------------------

 

Q:怎么才能提升 WE 的速度啊?我用WE感觉好慢!


A:Menu(菜单) -> Window(窗口) -> Brush List(图刷列表)
把这个列表关闭后速度就会得到很大程度的提升了

 


--------------------------------------------------------------------------------

 

Q:我想把地图A的触发复制到地图B,但是为什么总是缺少变量而出错啊?


A:因为在复制TRIGGER的时候不会复制TRIGGER用到的变量,所以就会出错了,解决方法是打开复制未知变量的功能:
Menu -> File -> Preferences -> General -> Automatically create unknown variables while pasting triggers
 


--------------------------------------------------------------------------------

 

Q:怎么才能给字加上颜色啊?


A:在WAR3中~~经常可以看到带颜色的字~~无论是地图名称~~还是技能道具说明~~或者对话什么什么地方~~都可以用 显色标签 来为特定的字加颜色
标签的格式是 |CTTRRGGBBTEXT|R
‘|C’ 是显色标签的开始部分~~
‘|R’ 是显色标签的结束部分
‘TTRRGGBB’ 是色彩代码~~采用4组2位16进制来确定颜色
第一组 ‘TT’ 表示透明度
第二组 ‘RR’ 表示红色
第二组 ‘GG’ 表示绿色
第二组 ‘BB’ 表示蓝色
‘TEXT’ 位置就是你需要显色的文字了
[例]:|cff004444DANEXX是猪|r -> DANEXX是猪
[注]:16进制为 0123456789ABCDEF ~~
Set Player_colors[1] = |cffff0303
Set Player_colors[2] = |cff0042ff
Set Player_colors[3] = |cff1ce6b9
Set Player_colors[4] = |cff540081
Set Player_colors[5] = |cfffffc00
Set Player_colors[6] = |cfffe8a0e
Set Player_colors[7] = |cff20c000
Set Player_colors[8] = |cffe55bb0
Set Player_colors[9] = |cff959697
Set Player_colors[10] = |cff7ebff1
Set Player_colors[11] = |cff106246
Set Player_colors[12] = |cff492a04

 


--------------------------------------------------------------------------------

 

Q:为啥我在这里下的有些地图计算机说太大了玩不了啊?为什么我要开始游戏的时候总是说我缺少一个对手不能开始游戏呢?


A:这种地图需要在 SINGLE PLAYER(单一玩家) -> CUSTOM GAME(自定义游戏) 中进入

 


--------------------------------------------------------------------------------

 

Q:扩展名为 .W3N 的战役要放在哪里~~怎么才能玩啊?


A:W3N 文件需要放在游戏目录下的 CAMPAIGNS 活页夹下面~~ 在 SINGLE PLAYER(单一玩家) -> CUSTOM CAMPAIGNS(自定义战役) 中进入

 


--------------------------------------------------------------------------------

 

Q:怎么让两个差不多的技能(都是同一个技能改编来的)同时显示呢?


A:不可能同时显示~~但是可以轮流使用
比如有 A B 两个技能是以同一个技能为范本制作出来的~~那么同时在一个单位身上的时候只会显示一个图标~~第一次使用会是 A ~~第二次使用就是 B 了

 


--------------------------------------------------------------------------------

 

Q:为什么我在下载区下的地图无法编辑~~提示无法打开呢?


A:版本不兼容~~作者使用了第三方增强补丁如 WEU ~~地图加了密都可能导致这种现象
尝试使用匹配版本的WE来打开~~或者用第三方增强补丁来打开~~被加密的地图我们不提供破解支持

 


--------------------------------------------------------------------------------

 

Q:我这里有幅地图用编辑器不能打开,请问怎么能判断地图是由于使用了第3方编辑工具还是由于加密而导致不能打开?


A:一般来说~~关于判断~~如果在读取的最后阶段出现一个DATA无效提示~~就是被加密了~~如果是出现无数个错误窗口就是第三方软件

 


--------------------------------------------------------------------------------

 

Q:为什么我打开WE后就会在左下角显示的“丢失串:XX”呢?会不会影响地图的编辑??


A:这通常是使用了不规范的汉化补丁导致的现象~~当然即使是官方中文补丁也有可能导致这种情况~~但是很少出现~~
这种提示表明某些变量或者系统数据损坏或者丢失~~会影响编辑工作~~但是影响深度不定
解决方法是使用 英文WE(推荐) 或者 官方正式中文版WE(不推荐)

 


--------------------------------------------------------------------------------

 

Q:怎样做一个传送门呢?


A:首先要在地图上画一个区域(Region)作为传送的目标区域~~然后在地图上放置一个传送门~~双击他~~可以看到弹出窗口下方出现一个选择区域的项~~选中刚才画的目标区域就可以了

 


--------------------------------------------------------------------------------

 

Q:在对战地图中,杀死对方的兵是不会获得金钱的,怎么在战役中,可以获得金钱?


A:在 TRIGGER EDITOR 里面用 Player - Turn Player Flag ON/OFF 开启金钱奖励
在 UNIT EDITOR 里面用 Stats - Bounty Awarded - 来修改某杀死某单位后的金钱数量

 


--------------------------------------------------------------------------------

 

Q:怎样在同一幅图中设置不同的地型?比如有草地也有岩浆


A:Menu -> Advenced -> Modify Tileset(修改地形材质)
Use custom tileset 打钩~~会出现替换接口~~

 


--------------------------------------------------------------------------------

 

Q:关于 war3 地图有那些常见分类呢?


A:Melee - 对战地图~~即 War3 默认的游戏方式~~BN Ladder 指定游戏类型
Non-Melee - 除了 melee 以外的所有类型统称
  Custom - 非官方地图~~但是通常表示 非官方的 non-melee 地图~~
   RPG - Role Play Games(角色扮演)~~但是现在很多人把所有 Non-Melee 地图都叫成 RPG ~~寒~~
   Mini - 迷你游戏~~通常指没有突出剧情、快节奏、游戏周期短的地图~~没有固定的游戏方式~~不含 rpg ~~
    Offence - 通常是对抗性地图统称~~有时也表示一些进攻npc为主题的地图~~
      3C - Offence 的一种~~本来只是一个地图的名称~~通常是指 有 3条进攻路线的 Offence ~~
      Arena - Offence 一种~~竞技场~~通常是指选定英雄后在固定区域内进行决斗的地图~~
    Defence - 通常是指防守性地图统称~~有时候也表示一些在非平衡的 NPC进攻前提下的防守与反攻~~
      TD - Defence 的一种~~建造 Tower(炮台) 防守 NPC 有规律的进攻~~
   Cutscene - 通常是指剪辑影片~~内容比较简单~~(非 CG ~~)
   Cinematic - 通常是指完整影片~~内容比较丰富~~(非 CG ~~)
 


--------------------------------------------------------------------------------


Q:在对战地图中,杀死对方的兵是不会获得金钱的,怎么在战役中,可以获得金钱?


A:在 TRIGGER EDITOR 里面用 Player - Turn Player Flag ON/OFF 开启金钱奖励
在 UNIT EDITOR 里面用 Stats - Bounty Awarded - 来修改某杀死某单位后的金钱数量
 楼主| 发表于 2006-8-29 12:06:59 | 显示全部楼层
进阶篇

 

说在前面的话:下面的所有问题解答都以 WORLD EDITOR 英文版 为基础~~
我们可能不会对中文 WE 进行实际支持~~所以请在你查阅前确保自己有能力理解以及自己使用的是英文 WE ~~

 

-======= 进阶常规问题类 =======-

 


--------------------------------------------------------------------------------

 

Q:要怎么设定,使被杀死的小兵掉钱,就像CREEP一样 ?



A:新增一条Trigger:


KillBountySet
Event
......Map initialization
Actions:
......Player - Turn Gives bounty On for <Player>



这样杀死该Player的单位就会有$$了

 


--------------------------------------------------------------------------------

 

Q:使用Create Special Effect on Unit时,attach的部分可以填写什么?会有什么影响?

 

A:这个是用来决定特效放置的部位。详细请自己测试。



主要部位:
  

overhead
漂浮在单位的头顶上,但不随单位的动作而晃动

head
在单位的头上,并随单位头部的动作而晃动

chest
在单位的胸部

origin
预设,一般在单位的脚旁

hand
手上

foot
脚上

weapon
武器上(只对英雄有效)

sprite
幽灵,有些会移动会旋转(只对建筑、机械单位及BloodMage有效)

medium
不详(只对建筑有效)

large
不详(只对建筑有效)






部位位置修正:
  

left
左边(如hand left=左手)

right
右边

mount
不详(for mounted units)

rear
不详(for quadrupeds)

first
修饰spirte的位置,其余不详(只对建筑有效)

second
不详(只对建筑有效)

third
不详(只对建筑有效)

fourth
不详(只对建筑有效)

fifth
不详(只对建筑有效)

sixth
不详(只对建筑有效)

rallypoint
集结点(只对建筑有效)


 


--------------------------------------------------------------------------------

 

Q:怎么更改英雄取得经验的比例?


A:ACTION - HERO - HERO EXPERIENCE RATE,设成多少百分比看自己的情况决定咯。

 

Q:怎么去掉单位身上的那些默认按钮啊?~~比如攻击~~集结点什么什么的
A:通常用 UNIT - REMOVE ABILITY 可以用来去掉一些按钮~~
REMOVE UNKNOWN (Aatk) 可以去掉攻击~~
REMOVE UNKNOWN (Amov) 可以去掉移动/巡逻/停止
REMOVE UNKNOWN (Aral) 可以去掉集结点
…………

 


--------------------------------------------------------------------------------

 

Q:Letterbox 和 Cinematic 有什么区别啊?似乎都是打开影片模式哦


A:Letterbox 不会改变可视度~~没有被探索的地方也同样不会显现~~Cinematic 反之

 


--------------------------------------------------------------------------------

 

Q:怎么可以实现物品栏里每一个格子只能放一类物品,且同类道具只能放有一个呢?


A:这个问题会涉及到变量的使用还有 TRIGGER 。
首先你需要创建一个变量数组(VAR ARRAY),命名为 IF,类型为 布尔(BOOLEAN),容量为 7(因为下标是从0开始的,所以要对应6个道具栏一般就设置为7比较好操作)。
然后在 ITEM EDITOR 里面为不同类型的道具设定相同的等级,比如武器就是 L1,头盔就是 L2,等等。
最后就是写 TEIGGER 了:
E - 单位拣到道具
C -
A -  
    +暂时关闭此触发
  +如果以道具等级为下标的变量 IF 值为假,则
     - 把物品栏的第 N 格道具丢弃,N 的值为拣到的道具等级
     - 把刚拣到的道具放到第 N 格
     - 把刚才丢弃的道具放置到第 M 格,M 的的值为此道具等级
     - 设置以道具等级为下标的变量 IF 值为真,则
  +否则如果以道具等级为下标的变量 IF 值为真,则
     - 丢弃这个被捡道具
  +打开此触发
这个是捡道具的步骤,同样的你需要写一个丢弃道具的 TRIGGER ,内容就是将 以丢弃的道具等级为下标的 IF 设置为假。

 


--------------------------------------------------------------------------------

 

Q:怎么做一个自动刷兵的效果呢?


A:一般是要定时刷新的~~所以EVENT用PERIODIC TIME EVENT(周期性时间事件)~~间隔时间自己决定~~
刷兵总得有个限制~~否则一直刷下去你打的完吗?所以在CONDITION中~~用INTEGER COMPRAISON - UNIT - COUNT UNIT IN UNIT GROUP(计算组内单位的数量,具体组的设定自己解决……)来比较你希望的一个数量~~如果小于这个数量~~则执行下面的 ACTIONS ~
出兵最简单~~ ACTION - UNIT - CREATE UNIT~~种类、所属自己选~~位置就放在你要刷的地方~~一般是你要求刷出兵的建筑附近~~
PS:以上就是最基本的刷兵了,至于其他的,例如什么时候开始刷,什么时候停止刷,EVENT自己决定吧,用ACTION - TRIGGER - TURN ON/OFF TRIGGER来开关触发器。

 


--------------------------------------------------------------------------------

 

Q:怎么才能设计一个简单的对话为主的动画呢?


A:首先打开剧场模式 ACTION - CINEMATIC - CINEMATIC MODE ON
然后用 ACTION - CINEMATIC - TRANSMISSION FROM UNIT 选择说话的单位、对话及时间等
完了别忘了关闭剧场模式 TURN CINEMATIC MODE OFF
PS:不开剧场模式一样可以使用TRANSMISSION FROM UNIT显示对话,要记得在初始化地图时打开普通场景下的字幕显示,ACTION - CINAMATIC - SUBTITLE DISPLAY OVERRIDE ON

 


--------------------------------------------------------------------------------

 

Q:怎么才能设计出用 ESC 跳过的电影?


A:建议打开官方的地图学习咯~~
首先建立一个 BOOLEAN 变量 CIN_FLAG = FALSE ~~这个的作用是表示你是不是按下了 ESC 期望跳过~~
然后在你写的影片 TRIGGER 中~~每一句后面都增加一句 "如果 CIN_FALSE == TRUE 则 略过后面的 ACTIONS 且 调用 中断处理 TRIGGER" ~~也就是说~~如果记录是否跳过的变量表示为真~~则可以略过后面所有的 ACTIONS
接着创建一个 TRIGGER  
  EVENT - 按下 ESC 键
  ACTIONS - SET CIN_FLAG = TRUE ~~这个就是让你在按下 ESC 后把变量表示为真~~这样就可以在上面的步骤中略过了~~
最后建立一个 TRIGGER 作为中断处理部分~~提供上面说道的那个调用~~内容就是影片结束后的状态~~比如什么单位最后在什么位置

 


--------------------------------------------------------------------------------

 

Q:怎么做选英雄的TRIGGER?


A:以下是最基本的英雄选择方法。
先做些准备工作,在地图上放一个选人用的小精灵,再在适当位置放上一个力量之环(CIRCLE OF POWER)作为标识,在上面放上待选英雄,然 后在力量之环所在位置画上一个区域(REGION)。
-建立TRIGGER-
EVENT - UNIT ENTER REGION REGION就选你建立的那个REGION
CONDITION - UNIT(TYPE) COMPARISON - ENTERING UNIT EQUAL TO 小精灵 条件判断,判断进入该区域的单位是不是小精灵(或者也可以用 UNIT TYPE COMPARISON来判断进入区域的单位类型是不是小精灵 UNIT TYPE OF ENTERING UNIT)
POSITION就 用你希望出现在的地方(一般你应该建立一个REGION表示游戏的起始点,就是这个啦)
然后KILL ENTERING UNIT(杀死进入的单位,你要的是英雄而不是小精灵,杀死前你可以HIDE UNIT以隐藏死亡动作,或者干脆REMOVE掉)
以上完成的就是最基本的选英雄的TRIGGER了,当然每多一个英雄你就得多做一个TRIGGER,并修改相应的CREATE UNIT的类型。对于那些只能选 一次英雄的方法嘛,只要在ACTION中加上TURN OFF THIS TRIGGER(关闭该触发)就可以了

 


--------------------------------------------------------------------------------

Q:正面的Buff显示文字一律为红色,负面的DeBuff为绿色。如果我把心火改成负面的减防法术,它的Buff还是绿色。请问怎么把它的颜色改成红色?

A:在输入文字的字段加上颜色码即可,如:|cffff0000Defense Reduction|r。
 


--------------------------------------------------------------------------------

 

Q:怎么制作随机掉落物品?


A:很多人问刷出来的怪怎么掉宝,以下是一种简单的基本的方法。

EVENT 为 UNIT DIE 当然是要怪死了才掉宝的嘛
CONDITION 怎么说呢,一般来说RPG地图里只要是敌人都有机会掉宝,那就用PLAYER COMPARISON - OWNER OF DYING UNIT 来判断。
同时可以利用INTEGER COMPARISON - MATH - RANDOM NUMBER BETWEEN A TO B(A和B之间的随机数)是否等于(大于/小于)某值来做掉宝的几率。
ACTION 用 CREATE ITEM ,ITEM TYPE可以选RANDOM ITEM-TYPE,然后选择等级(0-10级,可以根据某些规则来决定掉的是几级的宝,具体自己考虑吧,-1表示所有等级的宝物) POSITION就是POSITION OF DYING UNIT(死亡单位的位置)
以上可以完成最简单的随机掉宝,具体大家可以慢慢考虑呵呵。

 


--------------------------------------------------------------------------------

 

Q:SUBSTRING函数 有什么用啊?


A:SUBSTRING是截取字符用的~~如在下面一个赋值过程中:
Set StoreEquitDate[StoreEquitDateLOG] = (Substring(‘XXXXXXXX’), 1, 5)
(Substring(), 1, 5) 表示取字符串‘XXXXXXXX’中第1到第5位之间的字符串

 


--------------------------------------------------------------------------------

Q:为什么用Ability Editor修改的技能,在5级以上会出现奇怪的bug?

A:在Object Editor中,所以没有修改(不呈现粉红色)的数据,表示预设,也就是直接读取魔兽档案中的内容。但是魔兽的技能数据表只有写到4级,所以5级以上的技能资料都是空的(Ability Editor中有显示非0的数字,是WE的BUG)。要解决这个问题,只要输入一个自己决定的数字(也就是把它全弄成粉红色)就可以了。例如暴风雪(Blizzard)你如果直接改成有10级,在5级以上的Range都会写800(那是bug,应该是0;不信可以到游戏中试试看,是不是射程为0),如果你把它们改成800.01,那么射程就正常了。


--------------------------------------------------------------------------------

 

Q:怎么让一个魔法技能可以对魔法免疫的单位施放?

A:将该技能改为英雄技能(Stats - Hero Ability设为True),并且将等级需求(Techtree - Required Level)改为6。如果你要做单位技能,只要把Stats - Hero Ability再设为False即可,虽然等级需求那一栏会被隐藏,但还是有效的。


--------------------------------------------------------------------------------

 

Q:Game Cache是什么?怎么使用?



A:Game Cache是一个暂存盘,用于开辟一个内存空间来储存数据(最后需要将Cache储存到硬盘)。它的主要作用是将地图A 的一些数据储存起来,并使它能在地图B中读出,例如战役中英雄的等级或者道具技能等。



Game Cache 是用 Trigger 来操作的,下面说说相关 Actions 的含义



(1)建立一个暂存盘,想要使用暂存盘,当然要先建立啦。

Game Cache - Create a game cache from MapName.w3v

这是一个建立Cache的语句,后面的MapName.w3v是你建立的Cache的檔名。



(2)建立以后,就可以用他来储存资料了

Game Cache - Store Unit as Lable of Category in (Last created game cache)

这是一个储存单位的语句,在Unit处选好需要储存的单位,填写好标题(Lable) 和 数据夹(Category),最后选择将单位储存到哪个Cache里面。其中标题和数据夹是可以随意填写的,方便辨认即可。



类似的还有下面一些类型的数据可以储存到Cache里面,使用方法同上。

Game Cache - Store Real as Lable of Category in (Last created game cache)

Game Cache - Store  Integer  as  Lable  of  Category  in  (Last  created  game  cache)

Game Cache -  Store  Boolean  as  Lable  of  Category  in  (Last  created  game  cache)

Game Cache -  Store  String  as  Lable  of  Category  in  (Last  created  game  cache)



储存玩需要的数据后不要忘记储存Cache本身  

Game Cache - Save (Last created game cache)



上面说的是储存数据,但是怎么取出数据呢?  

首先在任何可以使用你想取出的数据类型的地方都可以通过GAME CACHE - LOAD XXXXXX CACHE 来取出数据  



另外  

Game Cache - Restore Lable of Category from (Last created game cache) for Player 1 (Red) at (Center of (Playable map area)) facing 0.00

Game Cache - Restore Lable of Category from (Last created game cache) for Player 1 (Red) at (Center of (Playable map area)) facing (Position of (Triggering unit))

这个语句是专门用于取出一个被储存的单位且放置在地图上的  



最后,如果想清除 CACHE 中的资料可以使用下面两个语句:

Game Cache - Clear (Last created game cache)

清除所有数据。

Game Cache - Clear all labels of Category in (Last created game cache)

清除某数据夹内的所有数据。



※Game Cache不可用在多人联机游戏中!!

 


--------------------------------------------------------------------------------

 

Q:关于大家说的模板技能 Channel(通魔) 究竟是怎么用的啊?


A:Channel是BZ专门提供来制作自定义技能(即Trigger技能)的一个技能,其本身不具备任何效果,但是因为可以在Channel中修改的数据远多于其他技能,因此可以很方便的制作出一个用作Event的专属技能。我大概介绍一下channel中几个主要数据的作用。
1] Data - Show UI
有Ture和False个值,当为False的时候,游戏中在拥有这个技能的单位身上是看不见这个技能的,Ture则相反。
2] Data - Target Type
定义技能的目标类型,分无目标(No Target),以点为目标(Point Target),以单位为目标(Unit Target),以点和单位为目标(Unit Or Point Target)4个类型,什么意思不用解释了吧。
3] Data - Fllow Through Time
其实就是channel time,比方你放星落,30秒就结束,这个30秒就是channel time了。处于此状态下,只要释放者一移动,就结束channel。
4] ART - Targer Attachment Point 1~6
这里你可以为技能添加一个动画连接,但是要正确输入动画名称,在MPQ里面应该有列表,我没去看,所以不多说了。
5] ART - Area Effect
范围视觉效果,星落中的“星落”就是这个类型的。
以上是几个比较不容易明白的数据作用,其他的和普通技能没有什么区别,我就不罗嗦了………

 


--------------------------------------------------------------------------------

 

Q:怎么让一个单位像背景一样不能选中不能攻击呢?


A:给单位添加一个能力 Unknown (Aloc) 就可以了
在 UNIT EDITOR 里面搜索 locust ~~
这个单位的唯一一个技能就是这个~

 


--------------------------------------------------------------------------------

 

Q:为什么我的自定义图标在游戏里面有时候会变成绿色的方块呢?


A:一般来说自定义图标需要做两个,一个是通常情况下显示的~~一个是在特殊情况下使用的,比如一个技能~~当 MANA 不足以释放的时候技能图标就会变暗,这个变暗的图标就是特殊情况下显示的,所以如果你使用一个图标:
ReplaceableTextures\CommandButtons\BTNWirtsOtherLeg.BLP
那么你必须同时给出一个配套的图标:
ReplaceableTextures\CommandButtonsDisabled\DISBTNWirtsOtherLeg.BLP
如果不是两个图标都有~~游戏中就会因为不能调用图标数据产生绿色方块了。
第二个图标文件只要存在且文件名正确,系统会自动进行调用,所以不用考虑要怎么使用

 


--------------------------------------------------------------------------------

 

Q:怎么修改商店 Marktplace 里的物品啊?


A:Object Editor(对象编辑器) -> Unit Editor(单位编辑器) -> 找到商店<Marktplace> -> Techtree - Sold Item(科技数 - 贩卖道具)

 


--------------------------------------------------------------------------------

 

Q:怎么修改道具的作用啊?比如想让魔法水加更多的 Mana?


A:1) 在道具编辑器(Object Editor -> Item Editor) 里面找到想改的道具~~
2) 在这个道具的详细资料里面找到道具带有的 能力(ability)~~比如 Item Mana Regain(Greater)
3) 去 技能编辑器(Object Editor -> Ability Editor) 找到这个能力~~
4) 修改这个能力的数据(Data)~~如找到 Data - Mana Points Gains ~~将数据改成希望的 Mana 回复量即可~~
PS:如果想修改一个道具的能力~~比如想让 MANA 药水回复 HP ~~可以在 道具编辑器 里面写有 能力 的地方直接写上任意一种道具能力~~如回复 HP 的能力~

 


--------------------------------------------------------------------------------

 

Q:关于WAR3中攻击力的计算方法是什么呢


A:ATTACK - BASE 基本攻击力
ATTACK - NUMBER OF DICE 确定攻击波动的色子面数
ATTACK - SIDES PER DICE 确定攻击波动的色子每面的攻击力
令 BASE=A ~~ NUMBER OF DICE=B ~~ SIDES PER DICE=C
则这个单位的攻击力的范围就是:A+B*1 — A+B*C
例如:一级的步兵 BASE=11,NUMBER OF DICE=1,SIDES PER DICE=2
则步兵的攻击力范围就是: 11+1 — 11+1*2 = 12 - 13

 
 楼主| 发表于 2006-8-29 12:09:02 | 显示全部楼层
在做技能时用这个在附加点那一栏写上可以...
比如将火焰剑拿到任意手上,或者骑着马


Order附着点-特效
 

(主要骨架附着点)PRIMARY BONES
(胸)chest  bone_chest
(足)foot  bone_foot unused
(手)hand  bone_hand unused
(头)head  bone_head
(炮塔?)turret  bone_turret
(骨架附着点位置修正)BONE QUALIFIERS
(互生?交替?)alternate alternate
(左)left  left  unused
(骑马的)mount  mount  unused
(右)right  right  unused
(灵巧的?大大的?)smart  smart  unused

(主要身体部位附着点)PRIMARY LINK POINTS
(胸)chest  chest  
(双足)feet  feet  
(足)foot  foot  
(手)hand  hand  
(头)head  head  
(原点?来源?)origin  origin  
(头顶)overhead overhead
(魂?点?)sprite  sprite  (for building attachment points)
(武器)weapon  weapon  

(身体部位附着点位置修正)LINK POINT QUALIFIERS
(互生?交替?)alternate alternate
(左)left  left  
(骑马的)mount  mount  
(右)right  right  
(背后)rear  rear  
(灵巧的?大大的?)smart  smart  
(第一?)first  first  (for building attachment points)
(第二?)second  second  (for building attachment points)
(第三?)third  third  (for building attachment points)
(第四?)fourth  fourth  (for building attachment points)
(第五?)fifth  fifth  (for building attachment points)
(第六?)sixth  sixth  (for building attachment points)
(小?)small  small  (for building attachment points)
(中?)medium  medium  (for building attachment points)
(大?)large  large  (for building attachment points)
(金?农民采矿后被上背的金袋?)gold  gold  
(聚集点?)rally  rallypoint (for building attachment points)
(吞噬树木?)eattree  eattree
 楼主| 发表于 2006-8-29 12:09:31 | 显示全部楼层
手动地图加密方式

(1)加密后打不开地图,所以要先备份

 

(2)建立一个空白文件(用计事本打开,直接存盘即可),存成任意档名

 

(3)回到WE中打开Import Manager(或者按F12),选择Import File(汇入文件),汇入你刚才存的空白文件

 

(4)在刚汇入的文件上点二下,勾选Use custom path,将路径修改为:

war3map.wtg

 

(5)重复步骤3,4,总计汇入以下档案:

war3map.wtg

war3map.wct

war3map.imp

 

(6)存档,离开WE。之后用WE应该打不开这张地图了。
 楼主| 发表于 2006-8-29 12:09:50 | 显示全部楼层
攻击速度研究
 

关于Warcraft 3攻击速度的研究
基本知识:
1. cooldown和attack speed
很简单 attack speed = 1 / cooldown
每个单位或者英雄有个初始攻击cooldown

2. agi和attack speed
attack speed = 初始 attack speed * ( 1 + 0.02 * agi )
所以agi越高, 实际上每点增加的攻击速度越少

3. slow, fast, very fast
slow 的分界线是: attack cooldown = 2s
fast 的分界线是: attack cooldown  = 1.5s
very fast 的分界线是: attack cooldown = 1s

不为人知的隐藏知识 :

1. 技能对攻击速度的影响方式(包括宝物, 魔法)
技能里面写的增加攻速50%, 是50%么? 答案是: NO!
举个例子, +15%攻击速度的手套, 加的攻速是这样的:
攻速 = 初始攻速 * ( 1 + 15% ) * ( 1 + 15% + 0.02 * agi )
也就是说, 加15%被计算了2次, 在第一次的时候, 其实已经增加了15%, 所以, 当没有别的影响攻速的宝物或者魔法的时候, 实际增加的攻速大于显示的值!
我个人认为这个是个bug

2. 攻击速度上限
roc的攻击速度没有上限, 但是tft英雄的攻击速度存在上限了, 这个上限对于不同的英雄是不同的, 和英雄的初始攻击速度有关, 是个固定的比例
存在攻速上限意味着, agi加到一定程度, 再怎么增加也不会增加攻速, 再怎么使用加速魔法, 加速宝物也不能增加任何的速度
这个上限并不太高, 而且他是各种影响攻速的条件共同达到的, 也就是说, 正常可能是300 agi达到攻速上限, 但是因为你带了个加速50%的宝物, 而在200 agi就打到了攻速上限

对于初始攻击速度的特别高的人, 有可能遇到另一个瓶颈是Animation Damage Point, 但是并不是这个值是0.5就是最低cooldown只能到0.5, 一般除非初始cooldown特别低(1s左右或者以下?), 遇到的上限瓶颈并不是这个
 楼主| 发表于 2006-8-29 12:10:51 | 显示全部楼层
输入管理器

 

就象使用物体管理器连接游戏中的对象一样。你可以使用输入管理器管理导入到游戏中的文件。
输入管理器中会记录导入文件的名称、类型、大小和路径。当保存地图的时候,输入管理器中的文件会被打包保存在地图文件中。


用这个你可以导入新模型,图标,音乐等
发表于 2006-8-29 12:16:18 | 显示全部楼层
活活....转底- -
 楼主| 发表于 2006-8-29 12:28:57 | 显示全部楼层
嘿嘿,大家自己编啊,我是没时间了
发表于 2006-8-29 12:31:44 | 显示全部楼层
耶.很棒的说~
 楼主| 发表于 2006-8-29 12:32:40 | 显示全部楼层
我还有更好的编辑器和模型(耐法利安,最终幻想里的克老得等等)不过太大了,没法上传
自己编吧
ps:不要让此帖沉了!!!
发表于 2006-8-29 12:39:54 | 显示全部楼层
不玩山口山的说~
LZ转的吧~
 楼主| 发表于 2006-8-29 12:42:26 | 显示全部楼层
不是...是从电子书上拷下的
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-4-30 07:27 , Processed in 0.016210 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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