魔兽地图编辑器下载 让地图变得更暗

魔戒重现——《魔兽争霸3》地图编辑器进阶教程(下)
http://games.sina.com.cn 2004-08-06 15:07 游戏世界
  嗨,各位未来的“天神”大人,欢迎再度来到“创世界讲习班”,在上次的课程中,我们已经知道如何创造一个全新的世界,并让“阿拉贡”和“莱戈拉斯”再次降临这个世界。现在,让我们继续引导他们去触发未尽的使命!
  触发是《魔兽3》地图编辑器(以下简称WE)中最重要、最复杂环节!触发器(Trigger)又被称为“开关”,是创造游戏事件的关键工具。所谓触发器,就是当某个条件达成时会
触发某个剧情或项目的机器,例如,当敌人的HP小于20时逃跑。当然,这只是触发器的最基本形态,WE的触发还包含有事件、条件等很多内容,大量的触发器和事件动作的相互结合就构成了整个游戏的剧情和特殊事件秒杀,甚至可以这样说,一个RPG地图就是由一系列的触发器构成的。
  工欲善其事,必先利其器。要设置触发必先搞弄清楚触发器面板的界面,点击“a”按钮打开一个触发器面板。如果是一个默认地图,你会在左边的触发器框中看见唯一的一个触发——“对战初始化”。右上是这个触发器的文字注释,有些地图作者会在这里写上这个触发器的用途,加强地图的可阅读性。右下角的触发器功能框中会显示这个触发的具体内容,一个触发器越复杂,这里的项目就越多,你可以直接在这里添加修改条件。至于左边框上的文件夹图标一样的“类”,只是起一个说明作用,让触发更容易看懂,无论触发属于哪一个类都和其本身的工作都没有任何关系。在左边框的“类”上点击鼠标右键可新建一个触发或一个类;在右下的框内用鼠标右键点击任意项目都可建立新的事件开端、环境或动作,而双击一个已经存在的项目则可修改它。
  让我们先从默认的地图触发来了解一下如何设置触发。触发器构成了RPG,我们的首要任务是搞清楚触发器的构成。一般来说,一个触发器由事件(Events)、环境(Conditio )、动作(Actio )三部分构成。
  事件:这是启动这个触发器的条件,当这个条件达成以后,程序将自动进行下一步——环境检查。
  环境:限制条件,当满足条件时候就进行动作。当然,在很多时候限制条件为空,就可以跳过这一步。
  动作:发生事件需要导致的结果,设置这个触发的最终目的。
  现在,让我们用一个简单的触发来引导主人公们的命运,当“阿拉贡”死亡后,任务就会失败。
  首先,我们设置事件开端为“单位‘死亡’”。这样当某一个单位死亡时,程序就会开始检测环境。环境我们设置为“‘触发单位’‘等于’‘阿拉贡'”(详细的设置方法请见下文),这样,当死亡的单位不是“阿拉贡”时,动作不会发生,而“阿拉贡”死亡,系统就会自动运行动作——“失败‘触发玩家’ 信息提示‘阿拉贡死亡’”,游戏将会弹出“阿拉贡死亡”对话框提示,点击“确定”后退出游戏。简单地说,“事件开端”是钥匙,而“环境条件”就密码,当钥匙和密码都正确时才能打开“动作”这个保险箱。我们可以发现,触发器设置其实就和编程的基本思想是类似的,就是一连串的If…then/else 语句的组合,当然,它可比编程容易多了。
  理解了触发的基本构成和运作方式,现在可以设置一些简单的触发了,比如,我们可以为“阿拉贡”安排一次简单的试炼,当他进入某个区域时,安排几个兽人袭击他。
  首先,在地图上画出几个地区,一个是进入后触发剧情的地区,一个是出现兽人的地区。用地区面板上的添加按钮在地图上划出地区,分别改名称为“chufaqu”(触发区)和“tuxiqu”(突袭区)(名称只是为了方便区分,并无实质作用)。现在就可以建立一个新的触发器,命名为tuxi(突袭)。
  首先设置触发的“事件”,要启动的条件当然就是“阿拉贡”进入“触发区”,我们就可以先添加一个“单位-单位进入区域”的事件,点击下面的Region(地区)将这一项设置成“变量”,并选择为刚才设置的“chufaqu”。然后在条件处将触发事件的单位限制在“阿拉贡”上。建立的条件可以选择成“单位-类型 比较”,然后将最后一项的类型的值改成“阿拉贡”。这样,当上面的条件完成后就会启动触发器的动作。这里的动作至少有两个:1.创建两个兽人步兵;2.让他们向“阿拉贡”发起攻击。第一个动作可以使用单位类型中的“创建单位面对点”,这里可以设置创建的单位数量、类型、单位的拥有者以及位置,最后的面对方向可以忽略不管。第二个动作则使用单位类型中的“给单位发送命令到 单位”,属性设置为“最后创建的单位”、“攻击”、“事件响应-触发单位”。在这里的最后创建单位当然就是刚才创建的两个兽人,而触发单位则是阿拉贡。到此,这个触发器就设置完成了。
  对于触发器各个项目的作用一定要多熟悉,需要时才能很快找到最合适的项目。下面介绍一些常用的触发器项目的用途:
  1.事件篇
  地图初始化:地图一开始就执行这个触发,用于设置游戏开始时各个玩家的资源、阵营、敌人的AI以及一些默认的设置。在默认的对战地图中,唯一的触发器就是使用了这个事件来设置对战时的所有起始项目。一般这个触发不加环境限制。
  可破坏的-可毁坏物死亡:所谓可毁坏物就是指地形装饰物中的可毁坏物类型的单位,一般是用来设定门之类被攻破后发生的事件。
  游戏-游戏时间改变:游戏中到某个时间段触发,一般用来设置一些特殊事件,比如晚上6点后怪物的出现几率增加。
  游戏-英雄学习技能按钮被点击:当玩家点击英雄升级按钮时执行触发,一般用来设置对技能的讲解等。注意,这个事件只能用于单人游戏地图。
  玩家-聊天信息:这一项有几个可以修改的属性,分别是:玩家、文本和匹配性,点击这些文字可以直接修改它们。当指定玩家输入与text的值匹配的聊天信息时执行触发。通常被用于设置游戏***码或者调试码,也可以在多人游戏中踢掉出口成“脏”的玩家。
  玩家-按Esc键(跳过动画):注意这个项目不是仅仅在显示动画时生效,只要指定玩家按下Esc键就会执行触发。
  玩家-选择单位事件:当玩家点击某个单位时执行触发,可以用作设置和NPC对话的触发。其中的“选择”属性可以改成“取消选择”,效果和选择相反。
  玩家-属性:这一项相当重要,其中第二个属性有很多变化,可以用于设置当指定玩家开采资源或者建造单位到达多少后发生的剧情。
  玩家-失败:指定玩家失败后执行的触发,类似的还有“玩家-胜利”,不过完全不实用。
  玩家-离开游戏:指定玩家退出游戏而不是失败被强制踢出。
  时间-游戏开始逝去时间:很重要的一项,设置游戏进行一定时间后发生的剧情。注意单位是秒,如果属性直接用“值”则包括了战役动画的时间
  时间-循环逝去的时间:也是很重要的一项,设置每隔一定时间就执行的触发,比如怪物刷新。
  单位-详细的单位事件:相当重要的一项,指定某一个单位发生事件后执行触发。最常见的有:死亡、被攻击、升级、施放一个技能、购买物品等等。
  单位-单位的事件:任何单位响应这个事件都能够触发这个触发器,因为范围太广了,所以在使用时往往要加上某种环境限制。
  单位-单位进入区域:任何单位进入特定区域(可以用地区面板设置,也可以指定坐标或以某单位为中心的一片区域),同样没有限制单位,所以必须和环境限制搭配使用。
  单位-单位离开区域:和上面相反,也要和环境限制搭配使用。
  单位-生命值:指定单位的生命值在设置数值的以上或者以下时执行触发,多用于设定剧情时的触发。
  2.条件篇:
  稍稍观察就可发现,条件中的项目后面都带有一个“比较”的字样。这是因为环境条件大多数都是判定某个项目的属性是某否等于需要的值。所以条件必须和事件配合使用,比如事件中使用了“英雄施放技能”的开端,那么事件中就可以加上“技能比较”来确定英雄施放的技能是不是符合需求。也可加上“单位比较”来确认施放技能的英雄是否指定的英雄。当然,两个条件可一起加上,那就要加上后面的“或,多样条件比较”或“和,多样条件比较”这两项来决定到底要满足几个条件才能执行下一步的动作。
  3.动作篇
  如果说事件和条件是触发的导火线,那么动作就是触发的火药。因为动作才是制作触发的目的,事件和条件只是决定动作的发生时间,这就导致了动作是整个触发器中数量最多,种类最繁杂的,这里不能将所有项目一一介绍,只能粗略地将它们进行分类介绍。
  AI:AI用于设置电脑玩家的人工智能,对战AI和战役AI等一般都在游戏初始化时设置好,而其他的命令则是改变现有单位的AI设定。
  动画:制作即时动画的一系列命令,很多是控制单位的行为和外形的,制作剧情全靠它。
  镜头:设置游戏界面视角,很多动画的演示都是通过视角的转变达到动画的效果的。
  电影:和以上两个类别配合能够制作出类似动画的自动演示,主要是一些游戏界面的变化和控制。
  倒数计时器:设置或修改倒数计时器,当倒数计时器归0时则可以用作另一个触发器的事件。
  可破坏的:装饰物和树木等的设置,比如战役中半神赛那留斯将森林复活的动作就是用这里面的复活一项。
  环境:这个和触发器的环境条件的意义不同,是指游戏中的自然环境。能够修改天气和地形,比如可以让游戏时间过了多久后开始下雨。
  漂浮文字:设置类似剑圣的致命一击或恶魔猎人的闪避一样漂浮在游戏界面中的文字。
  游戏:可对游戏进行相关的动作设置,例如改变游戏速度等。
  英雄:很重要的一类,能够修改英雄属性,比如可以制作成完成任务后让英雄获得一定经验或提升基本属性。
  物品:关于物品的动作,包括创建,给予,去除等等。
  对战游戏:这一类全部是对战游戏的基本设置。
  中立建筑:修改金矿、中立商店等的属性。
  玩家:设置单一玩家属性。
  触发器:很重要的一项,能够通过这一项的动作来关掉不再需要的触发器或者打开已经被关掉的触发器。
  单位:最重要的一类,设置单位的属性和动作,杀死单位、消除单位、甚至让单位执行指令等都靠这一类的项目。
  文/Lucky_Angel
   (以上文章刊载于《游戏世界》2004年7月刊,由《游戏世界》杂志授权转载)
【中国移动用户 拨打
听免费彩音风暴
音乐麻辣烫/开心无厘头
 相关链接
新浪游戏
新浪游戏
 相关专题:
 发表评论:  
匿名发表  笔名:
  密码:
Copyright 1996 - 2007 SINA Corporation,
All Rights Reserved
新浪公司
北京市通信公司提供网络带宽一个帐号,并以此
,以浏览更多精彩内容,并随时发布观点,与大家交流。
热门版块: |
U9澄海3C冠军联赛火爆开启,快来战个痛快!
U9澄海3C冠军联赛火爆开启,快来战个痛快!
『诱惑写真』
『日韩风采』
『创世之作』
『讲述身边』
『驴友之旅』
『美味甜点』
『时装盛宴』
『图说天下』
J哥搭樱花线一同前行...ing ..
6440 精华 积分
13772 U9币
11519 魅力
2833 声誉
81 在线时间
2537 小时 注册时间
2007-7-20 跳转到
字体大小:
发表于 2009-10-31 11:44
(转)适用于魔兽1.24最新版本地图编辑器中文汉化补丁 夜天新手助推器(魔兽1.24版本中
专区推荐:
==============================================================================
牋牋牋牋牋牋牋牋09年8月12日凌晨更新
==============================================================================
加入1.24a所有的BJ和CJ函数
Units文件夹在上一版的基础上未做任何改动
变量管理器内加入三个新类别
对象(handle),实体对象(agent),哈希表(hashtable)
通用于1.20至
所有版本,但请注意:
标记的触发只适用于
,如果你正使用1.20到1.23的地图编辑器制作地图,请勿使用,否则会导致不能保存地图而出错.
汉化过程中发现
SaveGameCacheHandleBJ
里有记录,但BJ和CJ里却没有对应的函数
如果使用了这个,保存的时候WE会报错,提示无此函数
去除了该函数,以免误使用后出错
==============================================================================
关于"实体对象"的说明:
实体对象(Ja 变量类型是agent)隶属于handle
以下类型在
中由直接继承于handle改变为继承于agent:
事件(event) 玩家(player) 物体(widget) 技能(ability) 玩家组(force) 单位组(group)
触发(trigger) 触发条件(triggercondition) 计时器(timer) 计时器窗口(timerdialog)
不规则区域(region) 矩形区域(rect) 条件表达式(boolexpr) 音效(sound) 特效(effect)
对话框(dialog) 对话框按钮(button) 任务(quest) 任务项目(questitem) 点(location)
可见度修正器(fogmodifier) 失败条件(defeatcondition) 排行榜(leaderboard)
多面板(multiboard) 多面板项目(multiboarditem) 可追踪对象(trackable)
游戏缓存(gamecache) 哈希表(hashtable)
==============================================================================
在老狼1.2.2汉化
基础上改的,也就是说,完全兼容于现在各种地图作者手里的
关于触发器部分:
带 [R] 的函数是老狼(Red_Wolf)加的,主要是把极大多数原版触发里一些效率低的BJ函数替换成了高效率的CJ函数
带 [C] 的函数是卡布(Ca uCcino)加的,主要是方便直接在触发界面里写入Ja 代码,比如局部变量等
带 [Ci] 的函数是琪露诺(Cirno)加的,主要是把老狼
里未加入的一部分CJ函数加了进来
然后需要说明的是,如果你使用了带 [R] [C] [Ci] 中任意一个标签的函数之后,你的地图在不装这个
的情况下就打不开了
也就是说,想用官方原版WE打开图的话,就不要使用带[R] [C] [Ci]的功能
当然,现在许多人都在用
做图了,不用
的只有三种情况:
一是英文高手,反而对于中文触发不习惯的;
二是Ja 高手,就是完全用自定义脚本做图而不用触发的;
三是新手,就是还不知道有汉化
的存在的人
一般情况下,如果你决定使用这个
来做图的话,请尽量使用带标记的功能(也就是函数)来写触发,它们会让你的代码执行效率变得更高一些
魔兽1.24B WE地图编辑器中文汉化版本针对hashtable新函数(数据)变革(演变)由来相关资讯详尽介绍:
在1.24以前,高手们习惯用ReturnBug+GameCache储存各种数据、排除冲突
但是到了1.24,因为魔兽争霸关闭了ReturnBug的相关应用,编辑者无法再将integer转换为任意类型的handle
所以ReturnBug+GameCache的时代正式终结
function H2I takes handle h retur integer
return h
return 0
endfunction
以上是ReturnBug的标准形态,在1.24必须改写为这样
function H2I takes handle h retur integer
return GetHandleId(h)
endfunction
只要使用GetHandleId这个1.24新增的函数,就能把handle转换成integer
但这个转换是单向的,转成integer之后没办法再变回handle
所以必须搭配HashTable来做应用
HashTable可以理解为一个庞大的二维阵列资料库,存取速度比GameCache快一倍左右,但是比全域变数慢一些
全域变数>HashTable>GameCache
HashTable可以储存各种常用的handle类型,所以能完全取代ReturnBug+GC的效果,速度更快、功能更强大
比起ReturnBug+GC这种玩家自行研发的东西,HashTable可以说是货真价实的资料库系统
二维阵列的概念就类似一张表格,由输入的XY轴来控制要读取的格子
假如我在X=1 Y=2的格子储存资料
之后只要到X=1 Y=2就可以读取这个资料
HashTable可以使用的数值范围很广,使用任意的integer数值都是有效的
call SaveInteger(bj_lastCreatedHashtable,1,2,999)
这样的一段函数,就可以把数值储存在HashTable里面X=1 Y=2的格子(<=只是比喻...)
做为引数的bj_lastCreatedHashtable就是最后创造的HashTable
后面的1、2代表二维阵列的座标,999则是存入的数值
set A = LoadInteger(bj_lastCreatedHashtable,1,2)
这样就可以把存入的数值读取出来,运作的结果A=999
常用方法如下:
set bj_lastCreatedHashtable = InitHashtable()
先在初始化的时候把BJ的HashTable变数设为一个新创造的HashTable(通常一个游戏也只需要一个HashTable)
之后有需要储存的数据,就这样写
function HT_TestA takes nothing retur nothing
local unit U = GetTriggerUnit()
call SaveInteger(bj_lastCreatedHashtable,GetHandleId(U),0,999)
endfunction
HandleId有绝对不重复的特性,可以用来当作HashTable二维阵列的其中一个值
如此将在X=(触发部队HandleId) Y=0的位置储存999的数值,且绝对不会跟其他handle存入的数据混淆
HashTable的每个格子可以储存的内容有:
一个integer、一个real、一个boolean、一个string、一个handle
function HT_TestB takes nothing retur nothing
local unit U = GetTriggerUnit()
call SaveInteger(bj_lastCreatedHashtable,GetHandleId(U),0,999)
call SaveReal(bj_lastCreatedHashtable,GetHandleId(U),0,0.0123)
endfunction
像是这样的式子,在读取的时候依然可以各别读出999的整数与0.0123的实数
但是如果你在同一个格子里存入一个Trigger与一个Timer
则最后存入的handle会覆盖上一个存入的handle
读取的时候则是这样输入
function HT_TestC takes nothing retur nothing
local unit U = GetTriggerUnit()
local integer A = LoadInteger(bj_lastCreatedHashtable,GetHandleId(U),0)
local real R = LoadReal(bj_lastCreatedHashtable,GetHandleId(U),0)
endfunction
延续上面的式子,如果抓到同一只触发部队(GetTriggerUnit)
读取的运作结果会是A = 999,R = 0.0123
一样的道理用在Unit、Trigger、Timer也是一样的
所以HashTable可以做到把数值绑定在部队的效果,在制作需要多重施展的技能时,特别好用
另外值得一提的是,HashTable是个二维阵列
范例里面,其中一维使用handleID,另外一维使用0
我们当然也可以改变另一维的数值,绑定更多的资料在一个handle上
function HT_TestD takes nothing retur nothing
local unit U = GetTriggerUnit()
call SaveInteger(bj_lastCreatedHashtable,GetHandleId(U),0,999)
call SaveInteger(bj_lastCreatedHashtable,GetHandleId(U),1,888)
call SaveInteger(bj_lastCreatedHashtable,GetHandleId(U),2,777)
call SaveReal(bj_lastCreatedHashtable,GetHandleId(U),0,0.0123)
endfunction
执行储存的动作之后
function HT_TestE takes nothing retur nothing
local unit U = GetTriggerUnit()
local integer A0 = LoadInteger(bj_lastCreatedHashtable,GetHandleId(U),0)
local integer A1 = LoadInteger(bj_lastCreatedHashtable,GetHandleId(U),1)
local integer A2 = LoadInteger(bj_lastCreatedHashtable,GetHandleId(U),2)
local real R = LoadReal(bj_lastCreatedHashtable,GetHandleId(U),0)
endfunction
如果抓到的是同一个触发部队(或任意类型的相同handle),则可取得的数值分别是
A0 = 999、A1 = 888、A2 = 777、R = 0.0123
清除数值的部分
主要有下面几个指令
native RemoveSavedBoolean takes hashtable table, integer parentKey, integer childKey retur nothing
native RemoveSavedHandle takes hashtable table, integer parentKey, integer childKey retur nothing
native RemoveSavedInteger takes hashtable table, integer parentKey, integer childKey retur nothing
native RemoveSavedReal takes hashtable table, integer parentKey, integer childKey retur nothing
native RemoveSavedString takes hashtable table, integer parentKey, integer childKey retur nothing
以上是清除指定栏位的指定类形资料
parentKey跟childKey可以理解为X轴与Y轴
native FlushChildHashtable takes hashtable table, integer parentKey retur nothing
清除整个parentKey内的所有资料
使用XY轴的概念去想,就类似把整排的资料全部清空这样
native FlushParentHashtable takes hashtable table retur nothing
移除整个HashTable
因为HashTable是可以重复利用的东西,所以通常不需要整个移除
在这儿附上
[教程] Hashtable 可适用于魔兽1.24B版本 原帖岀处
{转自于GA地精研究院!!}
连接地址:
本此一魔兽最新1.24系列版本地图编辑器中文汉化补丁 WE UI 版本软件需搭配使用魔兽1.24a和1.24B 这两版本一起使用,如果各位在座的魔兽三的玩家们还没有将魔兽游戏补丁升级和***更新到魔兽1.24和1.24B这两版本的话,我本人倒是在这儿有提供魔兽1.24和1.24B这两版本相关的升级更新运行补丁游戏版本更新文件下载地址提供给你们!!!
魔兽1.24版本简体中文汉化***和升级该补丁文件工具包 下载连接地址所在地:
魔兽1.24B版本简体中文汉化***和升级该补丁文件工具包 下载连接地址所在地:
原帖出处转自于魔兽GA地精研究院游戏论坛原帖原来生成地址连接所在地:
(378 KB)
下载次数:1308
2010-9-29 21:26
(369 KB)
下载次数:385
2010-9-29 21:26
22 精华
42 U9币
15 魅力
0 在线时间
10 小时 注册时间
2008-7-28 发表于 2009-11-27 14:53
好东西,一直在找
34 精华
46 U9币
232 魅力
0 在线时间
2 小时 注册时间
2009-12-22 发表于 2009-12-26 21:00
好东西,一直在找
13 精华
50 U9币
98 魅力
10 声誉
0 在线时间
11 小时 注册时间
2007-9-19 发表于 2010-1-6 18:08
还不知道是什么,谢谢楼主了,先载着。
271 魅力
0 在线时间
1 小时 注册时间
2010-6-4 发表于 2010-6-4 23:28
终于找到了谢谢了
17 精华
198 U9币
-19 魅力
87 声誉
0 在线时间
47 小时 注册时间
2005-2-19 发表于 2010-6-20 14:12
下来试用下
GMT+8, 2011-7-30 15:52,
Proce ed in 0.067835 second(s), 19 queries, Gzip enabled
Powered by
2002-2011

参考资料

 

随机推荐