深度剖析:魔兽世界服务器触发器与JASS问题全解

来源: 作者: 点击:
对于众多魔兽世界的GM而言,触发器相关的问题一直是令人头疼的难题。当您被这个标题吸引进来时,想必也是渴望能在此找到解决之道。
在游戏中,我们想要变得强大,需要处理的事务繁多,而触发器这块的学习却尤为困难。新手玩家常常陷入无处可学的困境,这种情况在游戏市场中颇为常见。
接下来,为您详细解读一些常见问题。
比如,触发器里各语句的位置不能随意更换,Trigger是按从上到下的顺序依次执行,不过Category的先后顺序无关紧要。
玩家的初始金钱和木材可在地图初始化的触发里选择SetProperty进行更改。
要更改英雄取得经验的比例,可以通过ACTION-HERO-HEROEXPERIENCERATE,具体比例视自身情况而定。
若想去掉单位身上的默认按钮,如攻击、集结点等,通常用UNIT-REMOVEABILITY。
Letterbox和Cinematic在影片模式上有区别,Letterbox不会改变可视度,未探索区域不会显现,Cinematic则相反。
实现物品栏里每格只能放一类物品且同类道具只能有一个,需要创建变量数组、设定道具等级,并编写相应的TRIGGER。
制作自动刷兵效果,一般使用周期性时间事件(PERIODICTIMEEVENT),并设定条件和动作,控制刷兵的数量和时机。
在对战地图中,若想在战役里杀敌获得金钱,需在TRIGGEREDITOR里开启金钱奖励,并在UNITEDITOR中修改杀死单位后的金钱数量。
设计简单的对话为主的动画,先打开剧场模式,选择说话单位、对话及时间等,结束后关闭剧场模式。若不在剧场模式,也可显示对话,但要记得在初始化地图时打开普通场景下的字幕显示。 

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

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

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

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

Q:如何更改英雄取得经验的比例?

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

Q:怎么去掉单位身上的那些默认按钮啊?~~比如攻击~~集结点什么什么的~~

通常用UNIT-REMOVEABILITY可以用来去掉一些按钮~~
REMOVEUNKNOWN(Aatk)可以去掉攻击~~
REMOVEUNKNOWN(Amov)可以去掉移动/巡逻/停止~~
REMOVEUNKNOWN(Aral)可以去掉集结点
…………

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

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

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

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

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

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

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

在TRIGGEREDITOR里面用Player-TurnPlayerFlagON/OFF开启金钱奖励~~
在UNITEDITOR里面用Stats-BountyAwarded-来修改某杀死某单位后的金钱数量~~

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

首先打开剧场模式ACTION-CINEMATIC-CINEMATICMODEON
然后用ACTION-CINEMATIC-TRANSMISSIONFROMUNIT选择说话的单位、对话及时间等
完了别忘了关闭剧场模式TURNCINEMATICMODEOFF
PS:不开剧场模式一样可以使用TRANSMISSIONFROMUNIT显示对话,要记得在初始化地图时打开普通场景下的字幕显示,ACTION-CINAMATIC-SUBTITLEDISPLAYOVERRIDEON
作为一个魔兽世界gm想要学习这方面的东西,这篇攻略还是非常重要的。只要大家按照一为原创给大家分享的这篇魔兽世界服务器有关触发器和jass的问题详细解读进行操作,就一定能够解决相关问题这样做的话,对于任何一个魔兽世界gm来说都是非常重要的。
[顶部]