world edit技巧
作者:麦德三世 2005-04-23 ======这里收集有关触发器和 Jass 的问题=======
Q:什么是触发?(Trigger),触发是如何工作的?触发(Trigger) - 根据字面意思可以理解为:事件A 发生后会直接或者间接的导致事件B 发生的过程~~关于触发的工作原理,举例如下:动物踩上地雷,地雷就BOOMMMMMMM!:)~~以上这就是一个触发,踩地雷是事件A ,我们称它为事件(EVENT)~~而地雷爆炸则对应事件B ,我们称他为行为(ACTION)~~大家还可能考虑到,如果踩上地雷的不是人,而是质量很小的昆虫,则不可能发生爆炸,于是我们引入一个概念,就是条件(CONDITON)~~它决定了事件发生后是不是会导致连带的结果,即行为的实施~~一个触发分为三个状态:就绪状态、工作状态、屏蔽状态。其基本状态是就绪状态。就绪状态:处于就绪状态的触发可以接收其相应的事件,只要事件发生,则此触发建立一个单独的进程进入工作状态,这个接收事件转入工作状态的过程称为响应(RESPONSE)~~工作状态:从就绪到工作,首先进行条件(CONDITON)检测,如果通过就开始行为的实施,从检测到实施完毕的整个过程为工作状态(无论是否通过检测)。需要注意的是,一个处于工作状态的触发是一个单独的进程~~一个触发可以同时或者异步响应 N
次。屏蔽状态:处于屏蔽状态的触发不能响应任何事件,但是可以通过调用行为进行调用,调用后直接进入工作状态。在调用的时候可以选择是否跳过条件检测。注]:同一个触发中的多个事件之间是 OR 关系,
满足其中之一则触发响应;多个条件之间为 AND 关系,全部满足才通过检测;而多个行为的执行是按照顺序进行从上到下的处理。
文档字符串是什么Q:触发器的里各语句的位置有影响么/能换么?不能换。Trigger 的执行顺序是从上到下依次执行的。不过 Category 的先后顺序则无关紧要。
Q:玩家的初始金钱和木材在那里改?在地图初始化的触发里选择Set Property .就可以更改金钱和木材了。
Q:如何更改英雄取得经验的比例?ACTION - HERO - HERO EXPERIENCE RATE,设成多少百分比看自己的情况决定咯。
Q:怎么去掉单位身上的那些默认按钮啊?~~比如攻击~~集结点什么什么的~~通常用 UNIT - REMOVE ABILITY 可以用来去掉一些按钮
~~REMOVE UNKNOWN (Aatk) 可以去掉攻击~~REMOVE UNKNOWN (Amov) 可以去掉移动/巡逻/停止~~REMOVE UNKNOWN (Aral) 可以去掉集结点…………
Q:Letterbox 和 Cinematic 有什么区别啊?似乎都是打开影片模式哦Letterbox 不会改变可视度~~没有被探索的地方也同样不会显现~~Cinematic 反之~~ Q:怎么可以实现物品栏里每一个格子只能放一类物
品,且同类道具只能放有一个呢?>>>点击·演示<<<;这个问题会涉及到变量的使用还有 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:怎么做一个自动刷兵的效果呢?一般是要定时刷新的~~所以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:在对战地图中,杀死对方的兵是不会获得金钱的,如何在战役中,可以获得金钱?在 TRIGGER EDITOR 里面用 Player - Turn Player Flag ON/OFF 开启金钱奖励~~在 UNIT EDITOR 里面用 Stats - Bounty Awarded - 来修改某杀死某单位后的金钱数量~~
Q:怎么才能设计一个简单的对话为主的动画呢?首先打开剧场模式ACTION - CINEMATIC - CINEMATIC MODE ON然后用 ACTION - CINEMATIC - TRANSMISSION FROM UNIT 选择说话的单位、对话及时间等完了别忘了关闭剧场模式 TURN CINEMATIC MODE OFFPS:不开剧场模式一样可以使用TRANSMISSION FROM UNIT显示对话,要记得在初始化地图时打开普通场景下的字幕显示,ACTION - CINAMATIC - SUBTITLE DISPLAY OVERRIDE ON
Q:怎么才能设计出用 ESC 跳过的电影?建议打开官方的地图学习咯~~首先建立一个 BOOLEAN 变量 CIN_FLAG = FALSE ~~这个的作用是表示你是不是按下了 ESC 期望跳过~~然后在你写的影片 TRIGGER
中~~每一句后面都增加一句 "如果 CIN_FALSE == TRUE 则略过后面的 ACTIONS 且调用中断处理 TRI
GGER" ~~也就是说~~如果记录是否跳过的变量表示为真~~则可以略过后面所有的 ACTIONS ~~接着创建一个 TRIGGER ~~ EVENT - 按下 ESC 键 ACTIONS - SET CIN_FLAG = TRUE ~~这个就是让你在按下 ESC 后把变量表示为真~~这样就可以在上面的步骤中略过了~~最后建立一个 TRIGGER 作为中断处理部分~~提供上面说道的那个调用~~内容就是影片结束后的状态~~比如什么单位最后在什么位置~~
Q:如何做选英雄的TRIGGER?以下是最基本的英雄选择方法。先做些准备工作,在地图上放一个选人用的小精灵,再在适当位置放上一个力量之环(CIRCLE OF POWER)作为标识,在上面放上待选英雄,然后在力量之环所在位置画上一个区域(REGION)。-建立TRIGGER-EVENT - UNIT ENTER REGION REGION就选你建立的那个REGIONCONDITION - 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:如何制作随机掉落物品?很多人问刷出来的怪怎么掉宝,以下是一种简单的基本的方法。 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函数有什么用啊?SUBSTRING是截取字符用的~~如在下面一个赋值过程中: Set StoreEquitDate[StoreEquitDateLOG] = (Substring(‘XXXXXXXX’), 1, 5)(Substring(), 1, 5) 表示取字符串‘XXXXXXXX’中第1到第5位之间的字符串~~
Q:如何让游戏开起后,起始位置不会出现主城和工人?进入Trigger Editor,到Melee Initialization,如果没改过的话应该如下:Melee Initialization Events ......Map initialization Actions ......Melee Game - Use melee time of day (for all players) 使一开始的游戏时间是早上6:00(如果删掉就会从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 s (for computer players) 让电脑玩家有AI ......Melee Game - Enforce victory/defeat conditions (for all players) 使用一般的胜利/失败设定(毁掉对方所有建筑者胜)将蓝的那一条删掉即可
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论