RPG地图制作教程つ
社区服务
火星文
银行
结婚
道具中心
勋章中心
管理操作原因
基本信息
管理团队
管理操作
在线会员
会员排行
版块排行
帖子排行
手机版
小说论坛
用户中心
搜索
银行
猴岛论坛
帖子
用户
版块
帖子
高级搜索
社区服务
跑跑卡丁车
CSGO反恐精英
动漫剧场
签到统计
关闭
选中
1
篇
全选
猴岛论坛
综合游戏交流
RPG地图制作教程つ
发帖
回复
倒序阅读
最近浏览的帖子
最近浏览的版块
« 返回列表
新帖
悬赏
任务
交易贴
自动发卡
拍卖
红包
际遇红包
2
个回复
RPG地图制作教程つ
楼层直达
泽
ZxID:15747326
关注Ta
注册时间
2011-08-11
最后登录
2020-05-26
发帖
15541
在线
3974小时
精华
1
DB
6309
威望
11261
保证金
0
桃子
1
鲜花
120
鸡蛋
0
访问TA的空间
加好友
用道具
发消息
加好友
他的帖子
对该用户使用道具
qq
等级:
元老
配偶:
彩
彩,你在哪里..
举报
只看楼主
使用道具
楼主
发表于: 2012-01-08
0
RPG地图制作教程
描述:彩虹.gif
教你如何做自己的RPG-----制图教学 说到魔兽争霸3大家肯定不会陌生,那么各位在玩过特色各异的地图以后有没有想过自己动手做一张地图?摇头拒绝的家伙们听我把话说完,其实做一张地图并不是各位想象的那么困难。下面我将会简单介绍一下集合了几种常见功能的地图的制作方法,有兴趣的朋友不妨跟着做做。
这次要做的是一个3C中的人物选择功能,也就是当小精灵进入能量圆的时候选择对应的英雄,这是一个3C最普通的选人功能。那么动手了。
首先找到地图编辑器,编辑器位于魔兽目录下,名为WorldEditor.exe(世界编辑器),双击打开。第一次使用地图编辑器,系统会自动为我们创建一张64*64大小,环境为罗丹仑的夏天的新地图。如果想要手动创建新地图,可以通过点击菜单栏的文件 - 新地图/File - New Map来创建。如果想要关闭在打开编辑器的同时创建新地图的功能,可以同过选择文件 - 参数设置 - 常规 - 打开时创建新地图/File - Preferences - General - Create a new map on start_up,将前面的勾去掉来实现。
地图创建完毕以后看见的就是这个地图编辑器的组成了,按2下G关闭坐标格的显示。在制作上面提到的功能以前,让我们先做点准备工作。首先既然是选择英雄,那么英雄自然是必不可少的,按U打开单位编辑面板,在这里可以选择我们所希望的单位放置到地图上,我选择了恶魔猎人(Demon Hunter),血巫师(Blood Mage)和巫妖王(Lich King),当然各位如果看上其他英雄请随意,这并不会影响后面的制作。顺便说说在单位面板中切换种族的方法是在第三行左边的那个扩展菜单里面选择希望的种族,由于选择英雄的时候所看见的英雄是不被我们控制的,必须选择了以后才能控制,因此一般的做法是将英雄更改为中立单位,更改的方法是双击放置在地图上的英雄,选择常规 - 玩家 - 中立无敌意/General - Player - Neutral Passive。注意各英雄之间不要间隔太远,否则让小精灵跑来跑去的很麻烦。放好英雄以后当然还要在英雄面前放个能量圆作为小精灵进入选择用,能量圆可以在单位面板的中立敌对分支中找到。最后再放上选英雄用的小精灵,由于多个玩家的选择英雄的原理是相同的,所以这里我们只做3个玩家的选择,因此只放属于 3个势力玩家的小精灵。如
工作就算是完毕了,接着开始做功能部分,要用到触发器。
由于是初次介绍,为了不扰乱大家的思维,所以我对触发器的原理不做太多的介绍,大家只需要知道触发器的作用就是可以以事件的方式来实现一些功能就可以了。按F4打开触发器编辑器/Trigger Editor,删除默认的那个触发器,那是为MEELE准备的。可以看见在魔兽地图编辑器中,一个触发器是由事件(Events),环境(Conditions),动作(Actions)三部分左右,这三个部分之间的关系可以用一个简单的例子说明:“火药接触火以后爆炸”。在这里,火药与火接触就是事件,只有二者接触才会发生以后的动作;而火药接触的对象必须是火才会爆炸,所以火在这里作为环境,限制火药爆炸需要的条件;火药爆炸就是动作,是在与火接触以后引发的动作。在触发器里面我们可以根据需要自己修改事件,环境,动作这三部分的内容,比如可以将火药与火接触爆炸改为与水接触爆炸。那么有了以上概念,来看看选择英雄的制作方法,首先英雄必须在发生了一个事件以后才会被选择,而这个事件在这里就是:小精灵进入能量圆;但是在这里必须限制只有小精灵进入能量圆的时候英雄才会被选择,其他种类的单位进入则什么都不会发生,于是整个触发的环境 - 也就是限制条件也有了,就是:进入能量圆的单位类型是“小精灵”;最后就是动作了,英雄被选择,其实选择英雄的动作就是把英雄的从中立单位更改为玩家势力控制的单位。把上面所说的步骤以触发的方式写出来就是这样的:
事件(Events)
一个单位进入能量圆范围内
环境(Conditions)
进入的单位的类别是“小精灵”
动作(Actions)
把能量圆对应的英雄的控制者改为选择英雄的玩家
现在再按照写出来的触发在地图编辑器中寻找对应的选项。
创建一个新的触发/New Trigger,方法是在触发编辑器右方的窗口中按鼠标右键选择新<触发器/New Trigger>,新触器发会被自动命名为“为命名触发00X”,触发器的名字可以通过在选择触发以后按F2来修改。然后点击新建的那个触发,在右下方的触发编辑窗口中鼠标右键,选择 新事件/New Event,在出现的选单中选择 单位 - 单位进入区域/Unit - Unit Enters Region,接着点击红色字体部分 - 选择区域/- Select Region,这时候窗口会自动切换到大地图,要求我们选择一个区域,这里要解释一下在魔兽中,我们平时所看见的例如进入能量圆,或者进入花园,进入洞************诸如此类“进入某个地点”的情况,其实并不是进入了我们看见的地方,而是进入了事先放置在能量圆,花园,洞************等位置上的一个区域(Region)。而现在我们要做的正是放置这么一个区域并且在事件中选择他作为小精灵进入的区域,在大地图上可以看见
面板已经自动切换到区域面板(直接打开区域面板的快截键是R),点击面板上坐标样的按钮使之处于按下的状态,按住右键拖动鼠标在能量圆上画一个和能量圆大小差不多的区域出来,再次点击面板上的按钮使之处于弹起的状态,然后点选刚才放置的区域,会自动切换回触发编辑窗,红色字体部分也会被刚才所选的区域的名字取代,连续确定2次,事件便做好了。
接着是环境/Condition,选择<新环境 - 单位类型判断/New Conditions - Unit Type Comparison>,将进入区域的单位类型限制为“小精灵”
其中Entering Unit的意思是“进入单位”这里指进入区域的单位,Equal to的意思是“等同于”。
最后是动作/Actions, 在这里先整理一下有哪些动作需要执行:
1,由于选择好英雄以后小精灵会消失,所以在动作的开头要从游戏中移除小精灵。
2,更改被选英雄所属的势力为玩家操纵的势力。
3,将选好的英雄移动到指定位置,也就是3C中的基地。
4,由于英雄只能被选择一次,所以在动作的最后要关闭整个触发使之不再执行。
对应以上4条的动作分别是:
1,新动作 - 单位 - 移除 - 从游戏中移除进入单位/New Action - Unit - Remove - Unit - Remove (Entering unit) from the game
2,<新动作 - 单位 - 改变拥有者 - 改变恶魔猎人的拥有者为进入单位的拥有者并且改变颜色/New Action - Unit - Change owner - Unit - Change ownership of Demon Hunter 0002 to (Owner of (Entering unit)) and Change color
3,新动作 - 单位 - 移动 - 移动恶魔猎人到区域001的中心/New Action - Unit - Move Demon Hunter 0002 instantly to (Center of Region 001 )当然区域001也是自己创建的区域;
4,新动作 - 触发 - 关闭此触发/New Action - Trigger - Turn off (This trigger)
这样整个触发就完成了,对照这个触发再将选择另外2个英雄的也完成。最后保存地图,保存的时候会提醒你为每个势力放置开始点,如果没有放置,会自动为你在地图任意区域放置,手动放置的方法是在单位面板中选择开始点的图标然后进行放置。保存地图以后按Ctrl + F9测试一下吧~。另外别忘记在菜单栏设定 - 玩家/Scenario - Player>中将势力2和3的控制者设置为玩家/User,否则在游戏里就不能选择势力2,3了。
刷兵(有的地方把这个叫做孵蛋,我完全不能理解…………)。简单解释就是每隔一定时间产生一些单位在基地附近,那么废话不多说,下面开始介绍怎样制作。
大家都知道在3C中兵是每隔一定时间就会自动产生的,在触发器中,我们将这种每隔固定时间就会自动发生一次的事件叫做“周期性事件”,一般来说经常通过以下两种途径来实现事件的周期发生:
==========================方法1=========================================
第一种是通过触发器中的循环事件来实现的(也有将这个叫做回圈的),在触发器中新建一个Action(动作),在下拉菜单中找到这样的句子——For Each Integer A,Do Multiple Actions(对于所有的整数数值A,执行若干动作),点击确定以后会看见在Actions(动作)这个类下面已经增加了这样的一个Action(动作):
For each (Integer A) from 1 to 10, do (Actions)
Loop - Actions
(对于所有的整数值A,从1到10,执行动作 循环 - 动作)
我详细解释一下这个Action的作用,For each (Integer A) from 1 to 10(对于所有的整数值A,从1到10)的意思是重复执行10次Loop -
Actions(循环 - 动作)中指定的Actions(动作),同样的道理如果将后面的from 1 to 10(从1到10)改成from 1 to 20(从1到20)那么就
会重复执行20次动作,假设是from 5 to 10则只会执行5次动作,至于为什么不直接用from 1 to 5来代替from 5 to 10,这是在某些时候必须
用到的功能,至于具体使用的时机,为了不使大家头脑混乱,现在暂时不做解释,等到实际使用中遇到类似情况再做说明。
--------------------------范例-------------------------------------
现在为了更形象的说明这个功能,我们来做个简单的范例,按F4打开触发器编辑器,新键一个Event(事件):Player - Player 1 (Red)
skips a cinematic sequence“玩家 - 玩家 1(红色)跳过一段电影序列”,这个事件的建立方法是鼠标右键 - New Event(新事件) -
Player(玩家) - Cinematic Skipped(电影被跳过),这个事件的作用是当玩家1按下ESC键的时候就会触发动作。接着增加一个动作
For each (Integer A) from 1 to 10, do (Actions)
Loop - Actions
这样就将需要重复执行动作的次数定为10次,然后在Loop - Actions下面依次添加这些动作:
Game - Display to (All players) the text: (String((Integer A)))
(游戏 - 向所有玩家显示信息 :将作为循环序列的整数A的值转换为字符串类型[关于数据类型,这里不多做解释,大家只需要知道只有字符串类型的数据才能被作为信息显示出来就可以了]。在这里“作为循环序列的整数A”其实就是用来记录已经重复执行了多少次动作的一个数值。)添加这个动作的顺序为New Action(新动作) - Game(游戏) - TextMessage(Auto-Timed)(显示信息,自动调整信息显示时间)
Wait 1.00 seconds
(等待1.00秒,这样在每次执行动作以后都会间隔1秒才执行下一次动作)添加这个动作的顺序为New Action(新动作) - All(所有) - Wait(等待)。
然后在整个循环Action(动作)的后面(注意,是在整个For Each Integer的后面,不要添加到Loop - Actions下面去了)添加这个
Action(动作):
Game - Display to (All players) the text: (finish)
作用是在整个循环结束以后显示一句话以标明循环结束了。当然其中的finish大家可以随自己爱好随意更改。
最后将Melee Initialization(地图初始化)这个触发删除掉,在地图上放置玩家开始点,按Ctrl + F9进游戏测试,可以看见在游戏中当按下ESC键以后会分10次每秒一次依次显示数字1~10,最后则会显示finish。通过这个例子可以很清楚的看出。For each (Integer A) from 1 to 10, do (Actions)这个动作可以让位于Loop - Actions下面的动作重复执行from 1 to 10中后面数字+1减去前面数字的次数,而当所有的重复次数被执行完毕以后,则会继续执行整个循环后面的动作。这样就很简单方便的实现了周期性事件的执行,但是用这个Action(动作)实现的周期性事件有两个弊端,第一是循环执行的次数有限,大家也看见了,在这个Action中无论如何也要求输入2个数字以确定执行次数;第二是每次执行动作之间的时间间隔有最小限制,在上面的例子中,大家将Wait 1.00 seconds(等待1秒)改为Wait 0.00 seconds(等待0秒)以后进入游戏测试,会发现即使是0秒,也会有微小的等待时间(大概0.1~0.4秒左右,视电脑配置而定),这样在执行某些重复时间间隔很小的周期性事件的时候,就完全无法实现了,对于必须排除以上两种限制的周期事件,就必须用到另外一种方法,periodic event(周期循环事件),和For each Integer不同的是,这是一个Event(事件)而不是一个Action(动作)。
==========================方法2=========================================
添加这个事件的方法:New Event(新事件) - Time(时间) - Periodic Event(周期事件),添加完成以后可以看见在Event这一类下面出现了这样的Event(事件):
Time - Every 1.00 seconds of game time
(时间-每1.00秒游戏时间)作用很明显,就是每1秒都会执行一次Actions(动作)中包含的所有动作,Every 1.00 seconds中的数字用于指定每多少秒执行动作。对于这个事件的功能,我们仍然可以用1个简单的范例来说明。
--------------------------范例-------------------------------------
新建一个触发器,Event(事件)就用上面那个事件,将1.00调整为0.50,也就是每0.5秒执行1次,然后按下Ctrl+B打开变量编辑面板,(由于变量是第一次接触,所以我暂时不详细说明,大家按照我说的做就是了,以后会对变量和数据类型做详细介绍。)点击面板上方的绿叉按钮,在出现的窗口中下方的下拉菜单选择Integer(整数)然后在上面的输入栏中为这个变量随便起一个名字,[图:var.gif]这里我用的名字是i1便于下面统一介绍,这样就建立好了一个类型为“整数”型的变量。暂时将这个变量放在这里备用,回到刚才建的触发,在Actions(动作)类中添加如下动作:
Set i1 = (i1 + 1)
添加顺序:New Action(新动作) - All(所有) - Set Varible(设置变量)
这个Action(动作)的作用是每次循环执行动作的时候让i1这个整数的值等于它当前的值+1,比方i1当前的值是5那么执行动作以后i1的值就是
5+1,也就是6。
接着添加:
Game - Display to (All players) the text: (String(i1))
添加方法同上,作用是显示i1的值。
然后进入游戏测试,会看见在游戏中将自动以每0.5秒的速度显示数字,数值为上一次显示的数字+1。由此总结出Periodic Event(周期循环事件)的特点是会在激活触发以后以Event(事件)中规定的时间间隔来重复执行Actions(动作)中包含的所有动作,并且只要该触发没有被关闭,就会一直执行下去。
========================================================================
以上就是两种最常见的周期性事件的实现方法,那么在此理论基础上我简单叙述一下刷兵触发的原理。
刷兵触发就是一个周期事件,其动作的内容就是在指定位置创建单位,下面我简单的将这个触发写一下,并且加上少许说明。相信大家在对上面所讲的内容理解了的情况下应该立刻明白其中的道理。
Untitled Trigger 003
Events
Time - Every 3.00 seconds of game time [这个就是前面讲到的周期事件,在这里将周期的时间间隔设置为3秒]
Conditions
(Farm 0009 is alive) Equal to True [这里Farm 0009 是一个农场,整个Condition(条件)的意思是,如果农场0009仍然生存,则继续执行Actions(动作)中的指令]添加这个Condition的方法是New Conditions(新条件) - Boolean Comparison(布尔判断,也就是逻辑判断) - 选择图示位置[图:boolean.gif] - Unit-Unit is Alive(单位 - 单位仍然生存)
Actions
Unit - Create 1 Giant Wolf for Player 1 (Red) at (Position of Farm 0009 ) facing Default building facing degrees
[单位 - 为玩家1(红色)创建一只狼在农场0009所在的位置面向系统默认的方向]
整个触发如果用语言表达的意思就是,每隔3秒钟只要农场0009依然存活,就创建一只狼在农场所在的位置。
进入游戏进行测试以后,大家应该不难发现这个触发有这样一个弊端:创建的单位没有数量限制,哪怕地图上已经有了几百,几千只狼,只要农场0009仍然存活,就会不断有新的狼产生,对于这种情况,我们可以通过加入如下的一个简单条件来给予限制:
(Number of units in (Units in (Playable map area) matching (((Unit-type of (Matching unit)) Equal to Giant Wolf) and (((Matching unit) is alive) Equal to True)))) Less than 5
整句条件的意思是,如果地图上所有存活的狼的数量小于5只,则继续执行Actions(动作)类中指定的动作。其中units in Units in (Playable map area) 就是指整个地图上的单位,而(Unit-type of (Matching unit)) Equal to Giant Wolf是指符合“单位类型为狼”这个条件的所有单位,(Matching unit) is alive) Equal to True是指所有“仍然存活”的单位。由于这个条件比较复杂,下面列出详细的添加方法:
New Conditions(新条件) - Integer Comparison(整数判断)
- 在下拉菜单中选择“Unit in Region Matching Condition(区域内匹配条件的单位)”
- 在下拉菜单中选择“And” - 点击“Condition1(条件1)” - 在下拉菜单中选择“Unit-Type Comparison(单位-类型判断)”
- 点击“Triggering Unit(触发单位)”将之改为“Matching Unit(匹配单位)” - 连续确定2次,点击“FootMan(步兵)”将之改为你在Action(动作)中所指定的生产单位种类,在这里我选择的是“狼” 接下来点击“Condition2(条件2)” - 点击图示位置[图bolc.gif] - 在下拉菜单中选择“Unit is Alive(单位仍然存活)” - 点击“Triggering Unit(触发单位)”将之改为“Matching Unit(匹配单位)”,连续确定2次
最后一直点击确定回到第一层菜单将中间的“Equal to(等同于)”改为“Less Than(小于)”,再点击最后那个0将其改为你所希望的最大出兵数量,到此整个Condition(条件)就完成了
以上就是一个限制了出兵最大数量的刷兵触发的基本原理,但是在实际制作中并不是这么简单,对应很多情况需要做出调整,有兴趣的可以自己去研究研究。
Q:什么是Object Editor?
Object Editor就是对象编辑器,其中包含了单位编辑器,技能编辑器,装饰物编辑器,科技编辑器等,可以允许地图制作者修改已有的上述对象或者建立新的对象。
打开对象编辑器的方法是在地图编辑窗口按F6或者点击快截工具栏中的头盔样按钮。
Q:什么是Trigger?
Trigger就是触发器,在地图编辑窗口按F4或者点击快截工具栏中的带有a字的按钮即可打开Trigger Editor(触发器编辑器)。
触发器是地图编辑器中用于控制地图中所发生的事件的工具,一个基本的触发器由Event(事件),Condition(环境/条件),Action(动作)三部分组成。下面用一个简单的例子来说明这三部分之间的关系:“你在此论坛提出的有价值的问题都会得到解答”
如果将上面这句话看做一个触发器,那么“你提出问题”就是整个触发器的Event(事件),接下来要发生的一切,不管是“我们为你解答问题”或者“我们不理会你”,都是在“你提出问题”之后发生的。
而限制你所提出的问题是否会得到解答的条件则是“你提出的问题有价值”,也就是整个触发器的条件,这个条件直接影响你“是否得到我们的解答”。
最后,当你提出的问题满足“有价值”这个条件的时候,就会发生“我们为你解答问题”这个动作,也就是整个触发器的动作。
Q:什么是JASS?
JASS是用于编辑地图的一种简单的语言,可以说是文本化以后的触发器(地图脚本:MAP SCRIPTS),但是由于触发器并没有提供JASS所具备的
所有功能,所以可以说JASS在某种意义上是触发器功能的扩展。
编辑JASS可以通过以下三种途径:
1, 在触发编辑器(TRIGGER EDITOR)中,通过 MENU -> EDIT -> CONVERT TO CUSTOM TEXT 可以将当前选定的触发转换成脚本模式,也就是以JASS编辑的模式。
2,在触发编辑器中点击触发树(TRIGGER TREE,就是最左边列出所有触发的地方)的最顶端地图名,可以进入自定义脚本功能块,在这里可以用 JASS 写需要的函数,并且在其他的触发器中通过命令来调用。
3,使用 ACTIONS 中的 CUSTOM SCRIPT 动作可以在触发中插入一行 JASS 脚本代码。
Q:什么是“高级-游戏平衡常数”(英文名称Advanced - Gameplay Constants)
最上方菜单左起第7个菜单上数第4个选择,这个选项里面包括了很多不能用T修改但是很有用的设置。比如买卖东西的距离,各种攻击类型对防御类型的伤害,英雄的等级经验复活数据等等。
Q:地图扩展名中的w3m,w3x,w3n,w3g分别是什么意思?
w3m:混乱之制(roc)版本的地图。
w3x:冰封王座(tft)版本的地图。
w3n:战役地图,这类地图必须放在War3(魔兽)目录下的Campaigns(战役)文件夹中才能使用。
w3g:游戏录象,位于War3(魔兽)目录下的Replay文件夹下。
E:地图类型解释
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:我已经把Player 1 的种族设成Human,为什麽进入地图的时候又变回Random?
A:把Scenario => Force Properties => Fixed Player Settings打勾,如此一来,前面Player Properties设定的种族、操控者、颜色,都会被锁定
Q:如何在WE中的Object Editor输入负数而不会自动归零?
A:因为B社担心一些非法数值会对游戏稳定度造成影响,因此限制了数值的范围。进入WE後,工具列File => Preferences => Allow negative real value in the Object Editor 打勾,就能在Object Editor中输入real负数而不会自动归零(Integer仍会自动归零)。另外,按住shift+enter再修改数值,不会受到任何限制。请注意,虽然可以输入数值而不被限制,不过如果因为非法的数值导致电脑读不出来,玩游戏时可能会当机。
Q:如何提升世界编辑器的速度?
A:
关掉笔刷--把工具列的Windows => Brush List关掉。可以大幅提升速度。
减少自订资料--在Object Editor(物件编辑器)允许自订物件,但是自订的物件越多,WE就会越lag,其中尤以自订单位的影响最严重。笔者曾经建立200多个自订单位,结果 WE速度大约慢到剩1/3,而且按什麽钮都会lag一下;後来把自订单位删掉,直接修改内建的单位,速度就大幅地改善了。所以,尽量直接修改内建的物件(含单位、可破坏物件、物品、技能、……等),少用自订物件。减少预置的物件--放置的单位、物品、可破坏物件和饰物放得越多,WE的速度就越慢(但是并不明显)。区域、摄影机和地形的影响则很小,几乎可以忽略。
Q:为什麽在测试地图时,所有的随机数值都一样?例如武士(Footman, dmg=12~13)第一次攻击一定是12?
A:进入WE後,工具列File => Preferences => Test Map => Use Fixed Random Seed取消打勾。
Q:如何把英雄等级上限设定超过10级?Q:如何使英雄5级後打中立怪还有经验值?Q:TFT版本中英雄即使不在战场,也会吸到经验值,如
何把这项设定解除?Q:如何修改贩卖物品所得的金钱百分比?Q:如何修改各装甲相克加成的百分比?
A:以上类似的问题,都可以藉由修改游戏常数解决。找工具列的Advanced (进阶) => Gameplay Constants (游戏常数),把Use Custom Gameplay Constants打勾。然後修改你想改的部分,如:英雄等级上限 => Hero Maximum Level全域分享经验值 => Hero XP Global Distribution中立怪经验值表 => Hero XP Gained Creep Reduction Table。此表格代表的是N级的英雄杀死中立怪时,能得到得经验值百分比。假设杀死二级的普通单位可得40Exp,而此表格内容为 90,80,70,60,0,那麽一级英雄杀死二级中立怪可得40 * 90% = 36 Exp;叁级英雄杀死二级中立怪可得40 * 70% = 28 Exp;五级以上的英雄杀死二级中立怪可得40 * 0% = 0 Exp。物品卖价 => Inventory - Sell Item Return Rate(相对於原价)。很不幸的,没有方法可以设定个别物品的卖价。装甲加成百分比 => Combat - Damage Bonus Table -
Q:如何让玩家无法送钱给同盟?
A:到游戏常数下,然後--Ally Trading Increment - Control Click(按Ctrl点滑鼠所加的钱数)设为0Ally Trading Increment - Normal
Click(直接点滑鼠所加的钱数)设为0
Q:为什麽WE中的单位资料会和Melee游戏不同?例如冰龙不是魔法攻击而是穿刺攻击、而弓手没有Elune's Grace被动技、……?
A:找工具列的Scenairo => Map Options => Game Data Set。其中:Default:使用地图编辑器的资料。使用它有个好处是它不会随着改版而有任何变动Custom:最旧版的游戏资料Melee:最新版的游戏资料。选这个就要随着b社的改版而修改地图。
Q:如何制作有颜色的字?
A:将文字前後加上颜色码,WC3颜色码的格式是|CAARRGGBB###|R(大小写不限)。其中AA为不透明度,RR为红色值,GG为绿色值,BB为蓝色
值,###为你要输入的文字。数值用16进位(00~FF)。例如:|CFFFFCC00Danny是天才|R →Danny是天才
Q:什麽是skin,什麽是Model?
A:Skin是指修改模型动画的外型,例如在Footman的剑上涂上其它的颜色等;Model则是指整个模型动画,包括动作、音效、指令等等。
Q:如何在同一幅图中设置不同的地型?例如有草地,也有沙漠。
A:Advanced → Modify Tileset,把Use custom tileset打上勾就能修改了。
Q:如何修改地图大小?
A:进入WE後 => Scenario => Map Size and Camera Bounds,接下来要缩要拉悉听尊便。
Q:如何让编辑器显示Import Manager汇入的图示和模组?
A:汇入後存档,关掉编辑,再用编辑器开启地图即可。
Q:地图档案大小是否有上限?
A:单机游戏没有限制,但是超过4MB的地图就不能进行连线游戏(包含区网和b.net)。
Q:如何减少读取地图(Loading)的时间?
A:
减少预置物件及其设定--预先放置的单位、物品、可破坏物件、饰物、区域、摄影机等越少,地图就读取越快。另外,对物件做的初始设定
(如单位生命值、等级、已学技能、死亡掉的物品等;区域的天气等)也会在这个时候执行,而增加读取时间,其中以死亡掉宝的设定影响最大。
减少初始化触发--初始化的触发就是在Loading的时候执行。越多初始化触发就意味着越长的读取时间。不过如果把初始化移到游戏中进行,可能造成游戏更lag,因此要依实际的需要调整。
此外,其它地图设定如触发器和声音编辑器的设定,也会影响读取时间。
汇入大的档案不会明显地增加读取时间,所以地图档案越肥不代表地图要读较久。
Q:如何修改游戏中显示的小地图图片?
A:
先做好你希望显示的小地图图片,格式限定 32bit,尺寸 256x256 的TGA档。
将步骤1的图片转换成 BLP 格式。
用WE开启地图,打开 Import Manager(F12) 将图片汇入。
将汇入的档案路径设为War3MapMap.blp(大小写不限) 。
Q: 如何修改地图读取画面 ?
A:
官方做法:
打开官方地图Maps/FrozenThrone/Scenario/(4)Monolith.w3x,进入Import Manager并汇出模组档war3mapImported\LoadingScreen.mdx,并把
它汇到你的地图中
汇出以下图片档修改,再依照同样的路径汇入你的地图中LoadingScreenBL.tga 左下角图片LoadingScreenBR.tga 右下角图片
LoadingScreenTL.tga 左上角图片LoadingScreenTR.tga 右上角图片
到工具列Scenario => Loading Screen => Use Imported File => 选择你汇入的模组档
自制做法:
到工具列 Scenario => Loading Screen => Use Campaign Screen => Generic
自己做一个1024 * 768 的TGA图片切割成4块转换为blp汇入为:UI\Glues\Loading\Load-Generic\Generic-Loading- TopLeft.blp 左上角图片,大小512 * 512UI\Glues\Loading\Load-Generic\Generic-Loading-TopRight.blp 右上角图片,大小 512 * 512UI\Glues\Loading\Load-Generic\Generic-Loading-BotLeft.blp 左下角图片,大小512 * 256UI\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:
先做好你希望显示的小地图图片,格式限定 24/32bit,尺寸 256x256 的TGA档。
用WE开启地图,打开 Import Manager(F12) 将图片汇入。
将刚才汇入的档案路径设为war3mapPreview.tga(大小写不限)。
修改地图我们会了,那么我们怎么样来创建一张自己的地图呢?在菜单栏的文件下有个创建新地图选项,用它就行了!点击后会出现一个窗口
这个就是对你的地图的基本大小和地形的设置了,比如弄成宽64,高128,初始海拔为7,地形设置为城邦,之后点确定就会生成新地形了!好了,现在在你眼前的就是你刚才创建的新的地图的地形了,是不是很难看,呵呵,那就让它变漂亮一点吧,用第一章学到的知识,打开工具面板,用地形面板及地形装饰物面板来弄吧!
那么一张新地图要有自己的名字,这个怎么弄呢?在菜单栏的情节选项里面可以弄相关的信息!点击后出现下拉列表,选择第一项地图描述!之后便会出现以下:
名字:就是在游戏中的显示出的地图的名字了,如Lost Temple等等!
建议玩家数:就是推荐的玩家人数,一些对战图上都有的如1V1,2V2等等!
作者:当然是写上自己的名字啦,不过这个好像在游戏中都看不到!
修改地图读取中的画面:同样在地图属性的窗口中选择场景读取中就可以修改了,点击使用战役场景。其它的相关信息自己弄吧!
怎么样弄玩家数:创建了一张新地图后,在默认情况下是只能有一个玩家的,要多玩家的话就得我们自己弄了!同样是在情节选项下,不过这次要选择玩家属性!之后会出现设置玩家的窗口!你在这里可以设置玩家为用户,或是电脑,一般来说,RPG地图里都要有一或两家电脑玩家来作为敌对方的,而且大多数都是用玩家11和玩家12来弄!之后是弄玩家的势力了,一般来说有两个势力:正义和邪恶。具体代表图有3C,多数TD图等,而像FOOTMAN这种图则是有四个势力,那么也可以自己设置!在情节属性窗口中选择势力,然后在重新定义里打勾,添加势力即可,然后就拖动相应玩家到各个势力中了,最后别忘了在固定玩家设置里打上勾!其它的几个选项就暂时不用!
这几部份弄完了,我们当然是得做开心了!
在现有的地图上我们得先设置玩家开始点!如果是在对战地图中,这个开始点将会是给你创建基地和初始农民的地点,在RPG地图里面就是游戏开始后玩家的初始视野地点了,比如我们就先把玩家开始点都弄到地图左上吧!(提示:给电脑玩家设置开始点的话,可以放在任意位置)
一张RPG地图不像对战地图那样各位玩家有自己的单位和部队,大部份的RPG地图都是以英雄作为自己的控制对像的,那么我们下面就说一下给玩家创建英雄单位!
首先将工具面板切换到区域面板,并在玩家开始点的地方画一个区域,命名为Heros!之后打开菜单栏的触发事件编辑器,打开后会有一个初始化的对战初始化的T,将它删除!然后自己新建一个类,之后在该类下新建触发器,命名为Create heros for players!选中你新建的T之后就会在右边出现相关信息窗口了,右上空白窗口可以自己写点提示说明之类的,下面的就是具体的T语句了!
创建好英雄单位后我们的冒险就开始了,此处我们先在地图上放一些供我们攻击的单位,让其所属玩家为玩家12,我们知道,一般打死中立怪后会掉宝而且会得金钱,怎么让打死非中立单位也掉宝和得金钱呢,同样会T来弄!关于此处的T,请参考附带的演示地图!
一个游戏自然还得有胜利条件及失败条件,这些也是T的功劳!
一个完整的触发器由三个部份组成:事件、环境、和动作
第四节 自定义单位、物品及技能的制作
一张RPG地图要有自己的风格及创意当然少不了自定义单位和技能了,那么这些东西是怎么来的呢?其实都是在原有的单位及技能上创建的!而要做到这些,我们又得回到物品编辑器了!
创建自定义单位:在物体编辑器的单位列表里找一个原始单位作为你要自定义的单位,如用大魔法师来做,选中大魔法师,右键自定义单位,之后会出现对话框,输入该单位的名字,之后会在自定义的类下面多出一个人族-英雄-XXXX(你刚才输入的名字)选中他后,同样右边就会出现其相关数据了,这里的数和标准单位里面的相比除了名字不同外,其他都相同,所以,既然是自定义单位,那么就改吧,模型,声音,攻击,护甲,图标……………………这样就完成了一个自定义单位了!同理,自定义技能的方法也是一样的,只不过你可以修改它们的等级及效果,对召唤技能而言还可以修改召唤出来的单位的数量及种类!这些都是属于基本问题了,自己一看都知道,所以就靠各位自己研究了!
事件-即一个事件或是任务、剧情的开始,也可以这样理解,举个例子,上课铃响了就是一个事件,或是早上8.00到了也是一个事件,这意味着接下来我们该上课了,也可以把事件理解成为导火索吧!
环境-相当于是条件,接着上面的例子来说,早上8.00到了,环境:如果是周一至周五。那么我们就得上学(班),如果是周末,我们就休息,也就是说不做出相应的动作!这里上学及上班就是动作!
动作-具体的各项命令,如上学,上班,吃饭等,当然这里是用现实生活中的例子来打比方!那么下面我们就来看一个例子以帮助大家理解这三个部份!
引用某位圣人的一个经典例子:
有一个花园,花园里面有一条狗!
事件-一个人进入花园
环境-此人是狗的主人
动作-狗摇尾巴
或者是
事件-一个人进入花园
环境-此人不是狗的主人
动作-狗就叫
这个就是一个简单的触发器了,下面就用WE中的具体事件来举个例子!就以3C的某个人的英雄被杀了而出现字幕来说明!
事件-a unit dies 一个单位死亡
环境-triggering unit is a hero = ture 死亡的单位为英雄单位
事件-游戏-Display to all players the text:name of owner of triggering unit + 的英雄被 + name of owner of killing unit + 打死了! 出现提示字幕
当然,在3C中还得有打死了一个英雄后对各位玩家的奖励和对打死英雄的玩家的特别奖励以及判断死亡英雄是否属于玩家控制等,这里就不讨论了,其实这些就是多个动作的运用了,基于新手对WE和知识的情况来考虑,本人只提供简单基本的触发器语句的教学,如果是自己想要更进一步了解更多的话则可以找一些其他的教程或是演示!
事件里面可以分为时间,单位,初始化等多个类型,各位可以打开WE里的触发器自己研究,环境和动作的内容则就更多了,在这里不可能都作介绍,这些都还得大家自己去研究学习了!
制作RPG地图的一些建议
说了那么多,大家应该对一张RPG地图的产生方法有一定的了解了,不过总体来说,制作一张RPG地图是一个相当辛苦的过程,所以如果各位真下定决心要制作的话,那么我在这里给大家几点建议:
1.明确自己要做哪种RPG地图?如战役类、角色扮演类、对抗类、TD或是生存防守…………只有明确了自己做图的目标后才能在拟定出一个相关的地图制作计划(即头脑里面有个想,不要到实际做图时还在考虑做成什么才好)
2.创建地图时大小要适中。不要想着地图弄得大就好,还得想想自己是否有能力将全部地形都用完,有没有合适的剧情来填充庞大的地形,其实有很多很经典的地图有的都是极小型的地形的,如小猪保卫战。而大地图当然也有,比如本人的最终幻想的两个作品用的都是最大的地形设置,当然,在这之前也是要充分考虑好每一块地形的使用的!
3.创建适合自己RPG地图的单位、技能和物品等!一张RPG地图都是有自己的个性的,这就在自定义单位、技能和物品上得到了充分体现。
如果是一张角色扮演图,你得设计自定义单位的职业,名字及称谓等,甚至还得弄出相应的技能及物品。而对于生存一类的,你要考虑的则是单位的技能是否真正有威力,物品是否能够满足游戏的需要!
4.游戏系统。这个就很多了,比如物品合成,升级,打宝,挑战等,这些主要是为了丰富一张地图的而发展出来的,当然也可以吸引更多的玩家以及体现作者的制图水平,不过在做一些游戏系统时也得注意是否和游戏相适合,有些系统如果做得很抢眼的话,反倒会把你一张地图的主旨给遮蔽了!
触发器:基本篇--
Q:我想把地图A的触发复制到地图B,但是为什麽总是缺少变数而出错?
A:因为在贴上触发的时候不会贴上原触发的变数,所以就会出错。解决方法是打开复制未知变数的功能:File => Preferences =>
General =>Automatically create unknown variables while pasting trigger data
Q:如何让游戏开啓後,起始位置不会出现主城和工人?
A:进入Trigger Editor,找到Melee Initialization,如果没改过的话应该如下:Melee InitializationEvents Map
initializationActions 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:如何设定玩家的起始金钱和木材?
A:新增一条Trigger--Init ResourceEvent Map initializationActions: Player - Set <游戏者> Current gold to
数量内容请自行根据需要修改
Q:要让被杀死的小兵掉钱,就像CREEP一样 ?
A:在 Trigger Editor 里面用 Player - Turn Player Flag On/Off 开启金钱奖励,这样杀死该玩家的单位就有钱了。在 Unit Editor 里面用 Stats - Bounty Awarded - 来修改某杀死某单位的金钱数量。
Q:假设在一张 RPG 地图中,给每一位玩家一个工人,让玩家选英雄:Event Unit - A unit enters Action Unit - Create 1 for Triggering Player at center of facing ...为什麽单位进入该Region时没有反应?
A:设定错误。由於引发事件的是单位,而不是玩家,所以 Trigging Player 无法表明到底是哪一个玩家。正确的设定方式如下:Event
Unit - A unit enters Action Unit - Create 1 for (Owner of (Triggering Unit)) at center
of facing ...
Q:为什麽这样写,游戏开始却看不到计时器出现? Init Timer Events Map initialization Conditions ActionsCountdown Timer - Start TimeRaminging as a One-shot timer that will expire in 660.00 secondsCountdown Timer - Create a timer window for (Last started timer) with title Time Left
A:Map initialization是在loading时执行,所以你无法看到计时器出现。如果想在游戏一开始出现讯息、计时器、……之类的东西,必须用Time - Elapsed game time is 0.00 seconds 做为事件
Q:如何更改英雄取得经验的比例?
A:Action - Hero - Hero Experience Rate,设成多少百分比看自己的情况决定罗。
Q:如何制作当玩家离线时分享控制权?
A:Event:玩家离线 Action: Player - Pick 同盟 and do ( Player - For Triggering Player, Turn Share vision and full share unit to Picked Player )
Q:请问如何做出随机效果?
A:用If/Then/Elsel中的Random Integer/Real做判断,例如:
(Random integer number between 1 and 10) Equal to 1//1~10中的随机一个整数为1 → 1/10的机率
(Random percentage) Less than or equal to 30.00//30%的机率
Q:Letterbox 和 Cinematic似乎都是打开影片模式,二者有什麽区别?
A:Cinematic会全开地图,Letterbox不会全开地图(此外,关闭Letterbox模式後,Fog of War和Black Mask 会自动重设)。
Q:使用Create Special Effect on Unit时,attach的部分可以填写什麽?会有什麽影响?
A:这个是用来决定特效放置的部位。详细请自己测试。
Q:在Unit - Play Animination中,可以填入什麽字串?
A:单位的动画指令可以在Previewer中预览,
原则上填入Animination那栏的文字就好了,大小写不限,例如stand, walk, death, ...。如果要播放像stand - 3, attack - 2这类特定的动
画,就必须用JASS写,函数为:SetUnitAnimationByIndex,但是填入的数字代表什麽动作就得自行测试了。
Q:如何用触发器抓到有重生技能而在死亡重生的单位?
A:没有办法抓到
Q:在建立阵列时,有一个size选项是做什麽用的?
A:它是用来设定初始值的。在地图初始化时,电脑会把该阵列从xxx[0]~xxx[size]设定初值。这个功能是为了避免某些变数没有初始值而不
能使用。因为在GUI Trigger中,某些控制码变数没有建立的语法,如果不设定初值,在游戏中就不会有值,例如Dialog, Dialog Button, ....等,这类数心须初始化以避免出问题(可以用JASS建立的,但如果只用GUI就不要忘了初始化)。至於其他类型的变数如Integer, Real, ......,基本上不管它也不会有很大的影响。
本帖de评分:
共
1
条评分
DB +20
物是人非゛
DB
+20
2012-01-08
魔兽争霸3--Warcraft III欢迎你ヾ
隐藏
本帖de打赏:
共
条打赏
隐藏
打赏
收藏
新鲜事
相关主题
RPG地图《遗失的记忆》....一个玩过的经典地图....
《魔兽争霸》热门RPG地图公开英雄密码大全
热门RPG地图公开英雄大合集
【魔兽RPG地图】魔兽地图→防守进攻→万神战3(异族侵袭)【HKE1.25作弊版】每日更新
【魔兽RPG地图】魔兽地图→防守进攻→乱斗-白龙之魂1.2【HKE1.25作弊版】每日更新
【魔兽RPG地图】魔兽地图→防守进攻→路尼亚战记Edition_0.3c斩魂刀【HKE1.25作弊版】每日更新
有三种人,我们不要去打扰他:
1.没有梦想的人我们不要打扰他
2.借口太多的人我们不要打扰他
3.没有主见的人我们不要打扰他
回复
引用
鲜花[
120
]
鸡蛋[
0
]
物是人非゛
ZxID:15810898
关注Ta
注册时间
2011-08-15
最后登录
2020-11-22
发帖
21176
在线
3877小时
精华
0
DB
0
威望
1462
保证金
0
桃子
5
鲜花
0
鸡蛋
0
访问TA的空间
加好友
用道具
发消息
加好友
他的帖子
对该用户使用道具
qq
等级:
元老
配偶:
小毅そ
举报
只看该作者
沙发
发表于: 2012-01-08
0
辛苦了
本帖de评分:
共
0
条评分
隐藏
本帖de打赏:
共
条打赏
隐藏
回复
引用
新鲜事
鲜花[
0
]
鸡蛋[
0
]
甚嬷媞じ☆ve
ZxID:7174083
关注Ta
注册时间
2009-06-13
最后登录
2020-01-02
发帖
5339
在线
438小时
精华
0
DB
292
威望
2222
保证金
0
桃子
0
鲜花
0
鸡蛋
0
访问TA的空间
加好友
用道具
发消息
加好友
他的帖子
对该用户使用道具
qq
等级:
大将
退灭保状态,主玩昼夜模式
举报
只看该作者
板凳
发表于: 2012-01-10
0
表示之前看过
本帖de评分:
共
0
条评分
隐藏
本帖de打赏:
共
条打赏
隐藏
回复
引用
新鲜事
鲜花[
0
]
鸡蛋[
0
]
« 返回列表
发帖
回复
关闭