英雄无敌地图编辑器器玩家离开游戏删除英雄

教给大家开启灭国英雄地图编辑器的的方法,供个别玩家参考_灭国英雄吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:208贴子:
教给大家开启灭国英雄地图编辑器的的方法,供个别玩家参考
如题,在初始菜单[非单人游戏菜单]按ctrl的同时再点菜单最上方那个金黄色的字母A,就能进入了.
由美国好莱坞环球影城打...
通常,走心的暗示更能成...
根据国内电影售票网站...
我作为一个福建人,也是...
那些年有多少恐怖游戏...
当前荧屏上雷剧横行,神...
内容索引: 下载游戏:...
娃娃: 你好。 我是在...
wawa: 你好,关注您有...
Q:“好马不吃回头草”,...
有读者写信来说:她希...
滦州古城作为北方地区最...
[转载]秘籍里按enter 输入GiveMoney XXXXX就是增加金钱数量XXXXX 输入GiveExpa XXXXX就是增加经验数量XXXXX注意大小写~经验增加数量不能过多,一般在100000以下fastupg~快速升级slowupg~正常升级beasts~按P开起控制台~有很多意想不到的惊喜喔farseer~全地图显示treasure~全资源99999***地图编辑器开起方式1.在开头选单按住ctrl2.点选上头Annihilated Empires第一个A字母就可以进入噜3.开起所有工具指令及选单 ctrl+E***隐藏热键ctrl+shift+f5 显示禁止区域+f6 隐藏介面+f7 全方位自由视角 WASD 上下左右移动 空白毽是跳+T RPG视角
WASD 上下左右移动
贴吧热议榜
使用签名档&&
保存至快速回贴魔兽战役编辑器教程(含切换地图)_魔兽地图编辑器吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:35,698贴子:
魔兽战役编辑器教程(含切换地图)
1L + 废话从上次发那篇tj的教程到现在,又学会了很多东西,总算能呈给大家一套完整可靠的战役教程了。在此仍然要感谢广大吧友的热心帮助和everguo大神的YDWE。因为截图很麻烦,所以会发得比较慢,大家耐心等待吧,不要插楼啊。
由美国好莱坞环球影城打...
通常,走心的暗示更能成...
根据国内电影售票网站...
我作为一个福建人,也是...
那些年有多少恐怖游戏...
当前荧屏上雷剧横行,神...
内容索引: 下载游戏:...
娃娃: 你好。 我是在...
wawa: 你好,关注您有...
Q:“好马不吃回头草”,...
有读者写信来说:她希...
滦州古城作为北方地区最...
首先作两点重要的说明:1、在制作战役时,如果要保存,请直接在战役编辑器上保存,一定不要在单张地图上保存,否则会导致该地图打不开。如果已经遇到了这种情况,不必惊慌,可以在该地图上做少许修改(如添加一个空触发器再删除),然后在战役编辑器上保存一遍,即可恢复该地图。2、如果要测试战役,不要在单张地图上点“测试地图”,要保存战役后进入游戏进行测试。这是因为,跟切换地图和章节相关的很多动作,以及战役编辑器中的自定义数据,都只能在运行战役时生效。
看一下战役编辑器的基本功能。打开战役编辑器,可以看到4个模块:普通、载入画面、自定义数据、导入文件。普通:在这里可以设置战役的说明文字,以及导入地图。导入地图并保存战役后,地图就整合在战役文件里了,可以把原始地图文件删掉。要编辑导入的地图,在右面的地图列表里右击,选择“编辑地图”。导入的地图请一律用英文名,并且为了后面切换地图方便,请保持所有地图的后缀名一致,要么都是“.w3m”,要么都是“.w3x”。导入的地图无论再怎么修改,后缀名都不会改变了。
载入画面:在这里可以设置战役背景的图片(比如暗夜战役的弓箭手mm)、鼠标指针形状(因种族而异),还有战役屏幕按钮。战役屏幕按钮,也就是战役背景中的章节选项。新建一个按钮,可以设置章节名称和它通往的地图。还有一个“初始可见”选项,顾名思义,勾选了该项的按钮一开始就能看到,没选的按钮就是隐藏的,可以通过触发来显示。另外,每个按钮前面都有一个序号(ID),用触发显示按钮时就是以这个序号为准的。
自定义数据:和物体编辑器功能相同。区别在于,在这里定义的数据能被战役里的所有地图共用,并且会在每张地图的物体编辑器里以蓝色字体显示出来。如果这里和物体编辑器的数据有冲突,则以物体编辑器为准。建议大家的自定义物体数据都在这里改。另外这里的数据在测试单张地图时是无效的,只有运行战役才会生效。导入文件: 顾名思义。这里的导入文件同样可以被所有地图共用。
接下来就是大家最关心的切换章节和切换地图了。我们先做点准备工作。创建三张地图(为方便测试,用尺寸小点的),分别命名为“C1_1.w3m”、“C1_2.w3m”、“C2_1.w3m”。其中第一个数字表示章节,第二个数字表示同一章的地图序号。做点最基本的处理:放置开始点;删除对战初始化触发器;在情节——队伍中勾选“自定义队伍设置”和“固定玩家设置”,这样可以将游戏界面固定为某一种族的;随便修改一下地图说明和地形,将两张地图区别开。把三张地图导入新建战役。在“载入画面”模块为“C1_1.w3m”和“C2_1.w3m”各添加一个按钮,分别命名为“第一章 C1_1”和“第二章 C2_1”,其中第一章设为初始可见。保存战役为“教程战役.w3n”,删除两张地图的原始文件。在“自定义数据”模块中自定义一个英雄,作为战役的主角。比如一个称谓为“大师与天才”的。
切换地图的核心是缓存。先简单介绍一下原理: 在一张地图上创建一个缓存,可以将一些数据(包括单位、整数、、字符串)储存起来,将其保存到本地硬盘。然后通过“保存并切换关卡”、“保存并读取进度”等动作,进入同一战役的另一张地图。在新的地图上,创建一个同名的游戏缓存,从硬盘读取缓存数据,便可以将上一张地图的数据复制过来,也就是继承上一张地图的进度。关于缓存,有一些诡异的问题,比如无法彻底删除、同一硬盘上有数量限制等。总之就是创建的游戏缓存越少越好。所以我们只在每张地图初始化时创建一个游戏缓存,一律用同样的名称。
现在开始制作切换章节的触发,即从第一章“C1_1.w3m”进入第二章“C2_1.w3m”。 在“C1_1.w3m”上设置一块矩形区域“to C2_1”,作为通往第二章的入口。当玩家1的单位进入该矩形区域时,即进入第二章。
在地图“C1_1.w3m”上,添加一个缓存变量“GC”,和一个单位变量“Char”,创建一个初始化触发器为其赋值:
缓存的名字可以随便取,不过要保持每张图一致。我用的“Demo”是演示的意思。 然后是切换章节触发:
第一张地图到此为止,再来编辑地图“C2_1.w3m”。设置矩形区域“from C1_1”,从第一章读取的单位就放在区域中心。
同样添加游戏缓存变量“GC”和单位变量“Char”,然后用初始化触发器读取上一章的主角数据:
大功告成,现在保存战役,进入游戏测试下,应该可以从第一章进入第二章了。注意缓存的类别名C2,用的是下一章节的序号。这是为了防止玩家随意进入各个章节,导致缓存数据混乱。比如说,假如所有地图都用相同的类别名“A”,某玩家进入第三章,过关后该章的数据存入了类别“A”,然后他不进第四章,而是又回头玩第二章,那么他在第二章读到的就是第三章的数据。另外,以上只是实现关卡切换的最基本动作,实际应用时还要添加很多动作来应对各种意外情况,后面会慢慢讲到。
哎呀 不让插楼什么的都没人看了 我顶
大师的教程终于出生了
接下来是切换地图。我们来写一套触发,让玩家可以在第一章的“C1_1.w3m”和“C1_2.w3m”两张地图之间随意切换。 切换地图的原理和切换章节相同,都是用缓存传递数据。区别在于,切换地图是双向的,去了之后还要回来,所以在离开一张地图前往另一张时,要做好善后工作,比如储存进度以便回来时读取,删除已记录的单位等。另外切换地图时要继承的不仅是单位,还有其他一些数据,比如游戏时间、玩家资源、任务进度等,都要用缓存记录下来。 另外,由于每一章的分地图(比如“C1_2.w3m”)没有章节按钮,玩家不能从战役界面直接进入,所以不用担心数据弄混的问题,缓存类别统一用一个名字就可以了。我习惯用“MS”,即MapSwitch(标准的中式英语- -)。
在地图“C1_1.w3m”上添加矩形区域“to C1_2”,作为通往地图“C1_2.w3m”的入口。再添加矩形区域“from C1_2”,作为从“C1_2.w3m”回来时读取单位的位置(参见8L的图)。 下面是切换到“C1_2.w3m”的触发:
看最后一项的if动作,其含义是:如果存档“C1_2.w3z”存在,说明玩家已去过地图“C1_2.w3m”,并在回来时留下了该存档,于是要读取该进度。如果存档不存在,说明还没去过,要用“保存并切换到关卡”动作切换过去。当玩家要从“C1_2.w3m”回来时,读取现在留下的存档文件“C1_1.w3z”就可以了。 注意每次测试完战役,都要手动删除相关的存档文件,以免对下次测试进行干扰。用触发也可以删除存档文件,其应用留到后面再讲。
从“C1_2.w3m”回来时,仍然要读取数据。读取数据的触发如下:
地图“C1_1.w3m”上的工作就结束了,再来编辑地图“C1_2.w3m”。为了方便,把上面的两个触发“MapSwitch”和“LoadData”直接复制过来。添加矩形区域“from C1_1”和“to C1_1”。
对两个触发进行修改。其中“LoadData”不需要做别的改动,只要把读取单位的矩形区域替换成“from C1_1”,然后在地图初始化时运行一遍: “MapSwitch”修改如下:
因为是从“C1_1.w3m”切换过来的,所以存档“C1_1.w3z”必然存在,不用if判断了。别忘了把存档名“C1_1”和“C1_2”换过来。 现在保存战役测试一下,应该可以在两张地图之间任意切换了。记得每次测试完后删除存档。
如前所述,这只是切换地图所需的最基本动作。现在我们来考虑一些相关的问题,对其进行改进。1、“LoadData”触发器使用的事件是“游戏读档”。但除了切换地图时读档,玩家自己存档读档也会触发该事件,怎么把两种情况区别开来呢?我们可以在每张地图上设置一个布尔变量“MapSwitch”,切换地图和分地图初始化时设其为true,读取数据完毕设为false。读档时判断该变量的值,即可知道是玩家读档还是系统读档。 2、切换地图时,其动作在瞬间完成,并且要删除玩家的单位,这在玩家看来可能比较突兀。官方的兽族战役中,切换地图之前会先进入电影模式并淡出镜头,等待一小会再运行切换地图的动作,我们也可以效仿。不过这样又带来一个问题:如果玩家拥有多个单位,在等待的这一小段时间中,可能会有别的单位进入矩形区域,造成重复触发。解决的办法很简单,只要临时关闭触发器即可。 3、游戏缓存不能记录任务,那么如何继承上一张地图的任务进度呢?我们可以设置一个整数数组QuestProgress,用来记录每个任务的进度,用缓存在各地图之间传递。切换到每张地图时,根据各整数的数值调整对应任务的状态和说明。比如QuestProgress[2] = 0代表任务2尚未激活,QuestProgress[3] = 2表示任务3已进行到第2步。 4、缓存不能记录单位的技能CD,每次读取单位,技能CD都会重置。这个问题是无法解决的。而用缓存记录读取变身单位时,该单位的变身持续时间也会重置。这就导致单位可以在变身状态下使用变身技能。如果该技能绑定了一些相关触发,比如每秒对周围单位造成伤害等,重复变身就可能造成bug。因此在记录单位之前,要删除该单位身上包括生命周期在内的一切魔法效果。 5、切换地图时通常我们只记录英雄单位,将其记录并删除后,可能还会留下一些召唤单位什么的。因此记录完单位后,应将玩家剩下的单位都删除。 5、如果玩家队伍中有死亡的英雄,读取时设置其生命值为0,该英雄会再次播放死亡动作,并发布死亡信息。因此对于死亡的英雄,最好在切换地图时将其复活。不想复活的话,可以将其隐藏,杀死之后再显示,可以隐藏死亡动作,但死亡信息是隐藏不掉的。
综合以上考虑,对上面的触发作初步改进。首先在每张地图上添加以下变量: MapSwitch 整数数组QuestProgress 修改后的切换地图触发如下:
修改后的读取数据触发如下:
以上只是对切换地图系统最基本的改进,还有更大的问题需要我们解决。下面的这个问题有点麻烦,而我的表述能力比较差劲,所以可能说得很乱,请大家耐下心来好好理解。 我们在判断一张地图是否已经去过时,用的方法是判断该地图相应的存档是否存在。但这种方法是有欠缺的。考虑这样一种情况:玩家在地图1上手动存档,然后第一次进入地图2,再从地图2回来,于是就生成了地图2的存档。这时玩家任务失败了,于是他只好读取刚才的手动存档重新来过。本来在他手动存档的时候,还没去过地图2,地图2的存档是不存在的,而现在却已经存在了。于是出现了混乱,系统会以为他在当前的进度中已经去过地图2,并读取地图2的进度,而这个进度明明是上一次失败的留下来的。 换个方式来讲吧,可以这么理解:玩家进行2周目的,却读到了1周目的地图存档。 为了解决这个问题,我们需要在每次手动存档时,记录下当前玩家已经去过的地图存档,下次读档时只保留这些地图存档,而把其他的地图存档都删掉,以免混淆。于是我们为每个手动存档建立一个文件夹,把与之相关的地图存档复制到文件夹里。另建立一个文件夹“System”,专门放置过程中的地图存档。每次手动读档时,删除“System”里的地图存档,把所读存档文件夹里的地图存档复制到“Syetem”。 比如说,玩家从地图1去了地图2,再回来,于是“System”文件夹里生成了地图2的存档“Map2.w3z”。这时玩家手动存档,文件名为“Save”。于是生成一个名为“Save”的文件夹,把“System”里现有的地图存档“Map2.w3z”复制到“Save”里。接下来玩家又去了地图3,再回来,“System”里又有了“Map3.w3z”,但“Save”里却没有。随后玩家任务失败,读取存档“Save”。这时“System”文件夹就被清空了,而“Save”里的地图存档“Map2,w3z”被复制到“System”里。切换地图时以当前“System”里的存档为准,于是系统正确地判定玩家去过地图2,却没去过地图3,并且读取到的地图2存档正是当前进度留下的。 这正是官方兽族战役里用的办法,我也想不出更好的了。但这个方法还有个缺陷,就是当玩家删除手动存档时,无法用触发删除其对应的存档文件夹,即上例中的“Save”文件夹,只能靠玩家手动删除。
根据上面的方法,我们先在每张地图上添加一个字符串变量SavePath,再添加下面两个触发,在玩家存档读档时复制地图存档文件。 玩家存档触发:
玩家读档触发: 另外在每一章的主地图(我们的例子里是“C1_1.w3m”)也要删除“System”文件夹,即玩家从头开始游戏时删除以前的地图存档:
不好意思,纠正前面的一处错误:21L的读取数据触发LoadData,把“设置 MapSwitch = false”移到“等待0.2秒后面”。 其实本来没什么错,只是因为刚才又加了一个以读取存档为事件的触发“PlayerLoad”,切换地图读档时两个触发顺序检查条件,“LoadData”符合条件“MapSwitch = true”,于是运行,但该触发动作里把MapSwitch设为false了,检查到“PlayerLoad”时,也变得符合条件了,于是两个条件相反的触发居然都被运行了。按我说的把“设置 MapSwitch = false”移到等待后面就没事了。
直接加个条件地图转换已设置=ture就可以判断是用户读档,还是游戏读档了
回复:25楼这个我以前用过,不准确。分地图初始化后,地图转换已设置一直是true。
回复:26楼我测试完全没问题,暴血也是这么做的,你可以看下我的战役演示图
现在只剩最后一个问题了:多地图切换。 上面的地图切换触发,只适用于两张地图之间的切换,如果有多张地图,就需要多套这样的触发。并且读取数据时,不知道数据是从哪张地图上来的,也就不知道该把读取的单位放在哪里。 所以我们要做一套通用的触发,不管多少张地图都能一劳永逸。这样做最大的问题在于,当单位进入矩形区域时,如何知道这块区域通往哪张地图。这就要用到哈希表了,我们可以用哈希表把各地图的名称或编号绑定给各个矩形区域。不过函数中没有“触发矩形区域”这一项,只有“触发不规则区域”。所以要把矩形区域添加到不规则区域中,然后把数据绑定给不规则区域,再为触发注册“单位进入不规则区域”事件。 另外,把源地图的编号通过游戏缓存传递到目标地图,就可以知道目标地图上读取的数据是从哪张地图来的了,从而确定在哪里放置单位。
贴吧热议榜
使用签名档&&
保存至快速回贴我做的一个魔兽争霸地图编辑器地图范例_韩国吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:270,978贴子:
我做的一个魔兽争霸地图编辑器地图范例收藏
004年4月上半年我大学毕业前利用课余时间用寝室同学电脑制作的一个魔兽地图,虽然已经完全未加密发布到网络上为大家作为参考,但是一直没有得到任何评论。 本意就是为了地图制**好者作为初学地图制作做一个直观参考,由于最近闲得无聊,决定公开为大家讲解这个地图用到的初级程序结构。希望对广大初学地图制作的爱好者有借鉴作用。
地图文件名:my魔兽map.w3x,原名叫做 生存.w3x,这个名字是为了区别我现有地图中另一个叫 生存 的作品(毕竟人家的作品我不好修改名字,只好把自己这个的名字修改了)。 有兴趣的朋友可以跟帖留下信箱地址,我可以把地图文件发给你。 下面进入正题
地图基本功能: 说明:采用最原始冰封王座地图编辑器制作,一切功能用最原始指令功能实现 1玩家选择角色类型建立角色(不同角色在此地图只代表不同外观,本质都一样)。 2玩家角色各自独有的私人空间(其他角色无法进入) 3在地图上各个战斗区域限量定时(同一区域保持怪物总数不变,怪物死亡后经过一定时间再次刷出补充怪物)刷怪。 4让各种怪物死亡后根据怪物种类随机掉落对应的多种玩家装备。 5对各种类物品在安全区特定地点进行物品合成。 6垃圾处理,对于玩家弃置在地图上的物品进行清理。 7安全区域,对于玩家进行绝对保护的区域。 8玩家角色使用战车物品后转变为驾驶战车的状态,以及此状态的还原 9玩家驾驶战车战斗获得经验提高等级获得升级属性点 10玩家自由加点培养角色 11玩家所乘坐战车的装备使用 12战车作战技能和更换战车装备对战车技能的影响 13将玩家状态信息和所持有物品转变成密码信息以及利用密码还原玩家信息的密码存储系统 14游戏中玩家和npc的对话(随机)
下面按照地图中触发器指令逐一进行讲解: 文件夹-初始化 中的 触发器-对战初始化:事件:Map initialization从地图开始运行就运行以下指令 动作:对战游戏-Set starting resources(for all players)为每一个玩家建立开始点 对战游戏-Run melee AI scripts(for computer players)微电脑玩家运行人工智能 其他不重要(略)。
文件夹-传送之门(这个文件夹里面的指令为了保证其他玩家不能进入某个玩家的私人区域)\触发器damen:( 同步运行yy1~4)所使用指令:触发器-Run &trigger name触发器名称〉&情报&(ignoring conditions) 其中触发器名称是yy1~yy4 这个指令用来在当前触发器(damen)的统一调用下同步执行多个其它的需要同步执行的触发器内容。 触发器yy1:事件:单位-A unit enters 地区 240&情报&
这里地区240是代表第一玩家(红色)的私人区域入口(地图上玩家最开始出来的安全区中的红色传送门)位置的判定区域名称(这个区域是我特殊制作的,和传送门无关),当yy1运行时,一旦玩家进入这个区域(想要通过传送门) ,那么当前 事件条件就成立,就会运行yy1之内的动作) 动作:if((Entering unit)等于 aZRG1)then do(触发器-Run uu1&情报&(ignoring conditions))else do(Do noting) 这个动作用到一个条件语句:if(条件)then do(动作1)else do(动作2) 说明:如果条件成立就执行动作1,否则执行动作2 这里条件是(Entering unit)等于 aZRG1就是穿越区域的单位等于玩家1的单位 这里aZRG1是一个变量,当玩家1的单位因死亡或者重生等发生变化,会由其他触发器把aZRG1从改变前的单位变成改变后的单位(之所以要这样设计,就是因为可以避免玩家单位死亡复活造成传送门失灵。aZRG1在这个地图特指玩家1控制的主人公,一切需要验证玩家1身份的情况下都要用到这个变量,这个变量的类型是 单位) 动作1在这里是 触发器-Run uu1&情报&(ignoring conditions) 也是应用触发器-Run &trigger name触发器名称〉&情报&(ignoring conditions)命令,这是这个语句的另一个使用范例,如果把一大串动作放进一个触发器中,利用这个指令可以十分便利地调用那一大串动作,而不用把那一大串动作都写到这个if条件语句里。 动作2是Do noting什么都不做 整个触发器yy1的作用是当有单位进入红色传送门所在区域的时候要求系统判定一下这个单位是不是玩家1,如果是,就让他进入传送门。进入传送门的一系列动作就是 触发器uu1 触发器uu1: 单纯执行传送门传送的动作,所以没有事件和环境条件。 动作:(注:由于要求私人空间入口传送门不能公用,实际它没有传送功能,主人公的传送是靠 在私人空间复制一个主人公,然后立即删除原有主人公来完成的,由于整个复制删除非常快,看起来就像普通传送一样,几乎是同时的。但是复制过程就要求纪录主人公的所有信息并把这些信息传递给复制人。 而主人公的级别,单位类型,智力,力量,敏捷,经验值等属性以及身上的物品就是要传递的内容) 物品传递: 指令:物品-Creat(Item-type of(Item carried by aZRG1 in slot1))at(Center of地区024&情报&) 说明:主体语句:Creat(Item)at(地区)在地区创建物品 (由于最早的地图编辑器没有专门的物品变量类型,只好采用人为设立用真正物品对应真实地区的方法来专门存放要被复制的物品的信息,在早期地图制作中除了本地图没有看到过类似的物品信息复制传递就是因为没有直接可以用的变量传递方法,而想到用这种实物办法实现传递的人太少) Item-type of(Item)物品Item的同类型的物品 Item carried by aZRG1 in slot1)主人公变量aZRG1的物品栏第一格(slot1)中的物品 Center of地区024&情报& 24号地区的中心 地区024是专门用来存放玩家1主人公物品栏第一格物品的地区,对应每一个玩家都有专用6个地区存放他们的物品,而4个玩家(由于当时同学电脑的限制,这个地图只能最多4个人一起玩,否则地图就不能测试)共有24各地区来存放物品副本。
整个语句的作用是把玩家1主人公的物品栏的第一格物品信息备份。 经验值的传递: Set JY1=(Hero experience of aZRG1) 把主人公的经验值数据复制给数值变量JY1(专门存储玩家1主人公的经验的变量) 类似的方法可以传递力量,智力,敏捷等属性,但是要考虑到 包括bonuses也就是奖励附加的问题,为了不引起装备附加属性的混乱,我们不用这个办法传递属性值。 现在我们要把玩家1的主人公从地图上消除,这样有两个好处,一是我们看到主人公从传送门消失,二是系统用来管理原有玩家1主人公的内存被释放。 指令:单位-Remove aZRG1 from the game 注意,变量aZRG1对应的角色被删除了,但是变量还在。以后还可以利用这个变量,这也是我们必须使用变量的重要原因。 下一步就是要在传送门对面的主人公私人地区复制出原来的主人公。 指令:单位-Create 1 (Unit-type of bZRG1)for 玩家1(红色)at(Center of 地区216&情报&)facing 90.00d degrees 主要指令Create 数量(单位类型)for 玩家名at地区名facing角度 在特定地区为玩家创造一定数量的某类型的单位并让他们面对一定角度 这里数量是1,Unit-type of bZRG1是指玩家选定的主人公单位类型,这里bZRG1是另一个类似aZRG1的单位变量,代表玩家1的主人公。 (为什么要用2个代表玩家1的主人公的变量呢? 我们知道,变量具有独立于单位实体的特点,我们改变单位,如果不声明要对变量进行改变,变量就会保持原有的值,不受单位实体改变影响,这是我们利用变量来在单位消失的状态下仍然维持系统判定程序不出错的主要原因。但是,当我们想要利用1个变量完成一些功能,之后还要立刻对这个变量进行跟随单位变化的改变,那么如果我们在别的程序功能还要用到这个变量被改变前的信息就不可能了,这时候我们考虑事先使用多个同类的变量,分别对应操作不同的程序。aZRG1是这个地图中随着主人公单位变化的变量,bZRG1作为它的副本,只记录最初的信息,一般情况下不会更改。) 地区216是玩家1的私人空间中复制玩家1主人公的地点。面对90.00degrees是让复制单位直接面对画面下方。 传递属性值: 这里利用专用变量存储主人公属性值并用这些变量完成数值传递。 玩家1主人公力量aL1,敏捷aM1,智力aZ1 命令:英雄-Modify 力量 of(Last created unit):转向 aL1 把aL1记录的值复制给刚创建的单位的力量属性。 其他类似 经验值传递: 命令:英雄-Set(Last created unit)experience to JY1,隐藏level-up graphics 还记得JY1这个纪录玩家1主人公经验值的变量吧,我们把它的值复制给刚才建立的单位的经验值属性完成经验的传递。 然后把原来被删除的主人公的物品复制给复制人: 英雄-Create (Item-type of(Random item in地区024&情报&))and give it to(Last created unit) 建立一个从地区024中所有物品类型中随机抽取的类型的物品,并把它交给刚才建立的单位(我们的复制人)携带。 说明:由于我们的024地区(还记得这个存放玩家1的主人公第一格物品的备份的地区吧)只能纪录有一个物品,所以随机抽取的物品类型只能是它的物品类型。另外,我们的复制人接收物品会按照接受先后顺序把物品顺次放在1~6号物品栏里面。 然后声明新建立的复制人具有身份标志aZRG1(作为玩家1的主人公的身份标志,这样以后可以继续利用 aZRG1变量进行身份确认^_^): Set aZRG1=(Last created unit) 令变量aZRG1等于刚建立的复制人单位 这一切过程就完成了传送门对于主人公的复制 但是,要想到我们记录玩家1主人公身上物品的地区024里面的物品还在,要是下一次进传送门,里面就会有2个物品,复制程序就会出错,所以我们要记得在复制人结束后把地区024清空。指令:物品-Pick every item in地区024&情报&and do(物品-Remove(Picked item)) 说明:主语句:物品-Pick every item in地区名and do(动作)选择地区里所有物品并完成动作 地区名:地区024&情报& 动作:物品-Remove(Picked item)清除选择的物品 后记:触发器文件夹 传送之门 主要是依靠对于玩家控制单位进入没有实际传送功能的传送门所在区域时判定单位身份来决定是否进行复制该单位并传递数据的一系列程序。
触发器文件夹 产生怪物:
简要说明:
触发器base: 用来创造一系列怪物单位副本于地图上玩家永远不能到达的区域。不同区域实现在地图上已经用地形制成的围墙进行隔离,防止怪物副本移动进入其它区域或者离开自己的区域,然后按照区域把怪物分组,以便以后应用随机抽取怪物小组成员类型来建立怪物的指令刷怪(由于古老版本地图编辑器创建随机怪物的类型必须通过从实例怪物小组中随机抽样的功能,只能采取这个办法)。
触发器my: 在地图上刷怪区域用程序刷出第一批战斗怪物,并按照怪物刷出地区给怪物分成战斗小组。
触发器Jardge:判定当有怪物死亡的时候根据死亡怪物所在的组队小组进行操作。
触发器s01~s97:对97个怪物小组分别执行动作:把本组死亡单位从小组除名,并且判定小组成员是否都健在,若不都健在,将执行补充成员的程序。
触发器a01~a97:对应于s01~s97的补充小组成员的程序。
----触发器base:
事件:Map initialization(地图开始运行就运行)
动作:单位-Create 1某单位类型for 中立敌对at刷怪地区名 facing 角度 degrees
说明:在某地区为中立敌对玩家建立1个某一怪物类型的怪物并让怪物面对某角度站立。地区和怪物类型必须准确对应,否则高级怪物会在低级别地图出现,或者你的大boss变成小怪,呵呵
另外,这个地图中第一批刷出的怪物都是没有物品栏的类型,所以不会在死亡时候掉落宝物。
单位组-Add (Last created unit)to g01
g01是单位组变量,指的是怪物模板分组,不是实际刷出怪物的战斗小组d01。g01是用来做模板的不参战怪物的分组。
注意,这个触发器中创建的同一小组中的怪物模板虽然具有相同名称,却分成拥有物品栏和没有物品栏两种,人为设定让模板小组中带物品栏的怪物多于没有物品栏的怪物可以提高杀死怪物得到物品的机会。
触发器-Run my&情报&(ignoring conditions)执行触发器my
----触发器my:
单位-Create 1某单位类型for 中立敌对at模型备份地区名 facing 角度 degrees
单位组-Add (Last created unit)to d01
把刚创建的单位加入名称为d01的怪物战斗小组,d01(变量类型-单位组) 触发器-Turn on Jardge&情报&
注意到Jardge触发器是浅色的图标了吧,这种状态叫做待激发状态,它不会在游戏开始自动运行,必须要用这个指令开启后才能运行。
触发器-Run Jardge&情报& (ignoring conditions)运行刚开启的Jardge触发器。
触发器Jardge: 这个触发器的 开始打开 属性没有画勾,所以需要被前面my触发器程序开启才能运行 事件:单位-A unit owned by 中立敌对 死亡 一个中立敌对玩家的单位死亡 动作:If (((Dying unit) is in d01)等于TRUE)then do(触发器-Run s01&情报&(ignoring conditions))else do (do noting) 主体语句:条件if(条件)then do(动作1)else do(动作2)
条件为((Dying unit) is in d01)等于TRUE,死亡的单位属于d01小组这个条件为真 动作1:触发器-Run s01&情报&(ignoring conditions)运行对应于d01战斗小组的成员补充程序s01 语句功能:检验当某个战斗小组成员折损后运行补充成员的程序 触发器s01:
动作: 单位组-Remove (Dying unit)from d01 从战斗小组把已经死亡的怪物除名 If((Number of units in d01)小于2)then do(触发器-Run a01&情报&(ignoring conditions)) else do(Do nothing) 当战斗小组d01的成员总数小于2,运行和d01对应的成员补充程序a01 触发器a01:
动作: Wait 15.00 game-time seconds等待15秒,这是怪物死亡到复活的时间间隔设定。 单位-Create 1(Unit-type of(Random unit from g24))for 中立敌对at(Center of 地区125&情报&)facing90.00 degrees 这里用的就是前面提到的利用样本单位组g01(这里用的是g24组最低级怪物样本)组抽取随机样本建立单位的命令:Unit-type of(Random unit from g24)来自组g24的随机类型单位 125地区是战斗小组d01的怪物所在地。 整个语句是用来刷出新的怪物。 If ((Unit-type of(Last created unit))等于 “与这个怪物具有同样名称的具有物品栏的怪物类型”)then do(英雄-Create (Item-type of (Random item in地区103&情报&))and give it to(Last created unit))else do(Do noting) 主体语句:if(条件)then do(动作1)else do(动作2)
条件:(Unit-type of(Last created unit))等于 “与这个怪物具有同样名称的具有物品栏的怪物类型” 注:在这个地图里面为每一种同名类型怪物建立了一个副本单位类型,这要在单位编辑器进行,对于副本单位类型,在其技能属性中添加了 物品栏 技能。 另外,为了使怪物死亡能掉出物品,还要在地图编辑器 物体编辑器(头盔图标)设定所有需要被怪物掉出的物品的属性:当携带者死亡时掉落:TRUE 动作1:英雄-Create (Item-type of (Random item in地区103&情报&))and give it to(Last created unit) 创造一个103地区里面物品中一个随机抽样物品类型的物品并把这个物品交给刚才建立的怪物携带。 注:在触发器文件夹 掉宝设定中我们事先设定了每个种类的怪物对应的掉落宝物的物品模板所在的地区,并在那些地区用程序事先创造了物品模板,103地区是最低级怪物可以掉落的所有可能的物品的模板所在的地区。 和产生怪物要用怪物组模板一样,产生怪物携带的宝物也利用了宝物的类型模板,只要把怪物类型和他能掉出的宝物模板区域精确对应,就能准确按照怪物类型刷出对应的物品。这样就不会出现高级怪物掉落垃圾物品或者低级怪物掉落极品装备的问题。 动作2:Do nothing什么都不做 整个语句功能: 对这个新生怪物进行判别,看看他有没有物品栏,如果有,按照他的单位类型对应的掉落宝物模板随机刷出一件装备让这个怪物携带,但他死亡的时候,这个物品会掉落。 单位组-Add(Last create unit)to d01 把新创造的怪物补充到d01战斗小组,代替15秒前死掉的怪物。 触发器-Run Jardge&情报& (ignoring conditions) 把程序循环回到Jardge触发器 后记:文件夹 产生怪物 之内的所有触发器的设计遵循的思路: 事先创造一系列怪物类型模板小组,利用这些模板创造战斗的怪物。事先创造一系列怪物所能掉出的物品类型的模板分组(按照特定区域分组,不使用物品组变量),利用怪物类型和地区的精确对应刷出怪物携带的物品。利用物品具有当携带者死亡时掉落的属性,在怪物死亡时掉出所携带的物品。事先创造一批战斗怪物并给战斗怪物按照战斗所在区域分组,对于每个战斗小组分别建立成员人数审查程序和人员补充程序,利用系统对怪物死亡事件的监察,来调用这些程序对有成员阵亡的战斗小组进行检查和人员补充。
触发器文件夹 物品合成: 触发器JiChu:
事件:Map initialization 动作:物品-Create 物品 at (Center of地区) 说明:这个触发器包含许多个用这个指令定义的动作。本触发器的功能是在事先设定好的区域里摆放某个物品经过合成后可能变成的物品的样本。以便以后的触发器通过随机抽取样本指令在物品合成的产品区域创造合成产品。 注:由于最古老的地图编辑器版本不具有随机数生成指令,所以本地图所有的需要随机的部分都是利用物品或者单位的随机抽样指令完成的。以后要讲到的随机数生成触发器也是利用物品随机抽样命令,把对应随机抽样出的物品按照物品类型对应成数交给变量形成随机数命令,这在密码存储环节要用到。 如果本例方法能被读者接受,相信读者绝对可以自己学会使用比这个方法更简单的后期地图编辑器才出现的随机数指令。 触发器-Run JiHuo&情报&(ignoring conditions)
转到下一个触发器的程序序列
触发器JiHuo:
指令:物品-Pick every item in 合成宝石摆放区域 and do(If((Item-type of(Picked item))等于 合成宝石)then do(触发器-Run 对应合成指令触发器(ignoring conditions)) else do(Do nothing)) 说明:主语句是Pick every item in 合成宝石摆放区域 and do(动作1) 即选择合成宝石摆放区域所有物品并完成动作1。
动作1是:If((Item-type of(Picked item))等于 合成宝石)then do(触发器-Run 对应合成指令触发器(ignoring conditions))else do(Do nothing))
主语句:If((Item-type of(Picked item))等于 合成宝石)then do(动作2) else do(Do nothing)) 即如果被选择的物品类型等于 合成宝石物品的类型,就完成动作2,否则什么也不做 动作2是:触发器-Run 对应合成指令触发器(ignoring conditions)
执行对应合成指令触发器,这里的合成指令触发器对应于合成宝石的类型
说明:本地图中,我设定了4种合成宝石:勇气,灵感,梦想,希望宝石。
各自对应判别条件触发器:
勇气宝石:PanDing触发器
灵感宝石:PanBie触发器
梦想宝石:PanDuan触发器
希望宝石:PB触发器
在对应触发器中,将根据被合成物品的类型判定合成产品需要执行哪一个触发器(g1~g260)。 这个地图中,4种宝石的用途:
勇气宝石:提升战车装备的级别,不改变装备的型号而提升性能。
灵感宝石:改良战车装备的型号来提升性能。
梦想宝石:用来合成人造战车(传说中的型号,战斗中不能从怪物那里获得),性能十分优越
希望宝石:为战车装备改造附加属性。
触发器PanDing: 指令:物品-Pick every item in 合成装备摆放区域 and do(If((Item-type of (Picked item)等于 某个物品类型)then do(触发器-Run 当前物品类型经过勇气宝石改造需要执行的改造程序 g序号 触发器名(ignoring conditions))else do(Do noting)) 主语句:物品-Pick every item in 合成装备摆放区域 and do(动作1) 选择合成装备摆放区域中所有物品并完成动作1 动作1:If((Item-type of (Picked item)等于 某个物品类型)then do(动作2)else do(Do noting) 如果被选择的物品的类型 等于 某个物品类型,就执行动作2,否则什么也不做 动作2:触发器-Run 当前物品类型经过勇气宝石改造需要执行的改造程序 g序号 触发器名(ignoring conditions) 运行 对应于当前物品类型经过勇气宝石改造需要执行的改造程序 的g序号 触发器 注:这个触发器包含一系列对应于不同类型战车装备的用勇气宝石合成需要执行的g序号触发器的对应判定语句,都是用上述语法写的,对于不会用数组的初学编程朋友比较直观易懂。下面的PanBie触发器 PanDuan触发器 PB触发器都是和这个PanDing触发器类似,只不过对应的合成宝石不同。 触发器g0~g260: 指令:物品-Pick every item in 合成宝石摆放区域 and do(Remove(Picked item)) 物品-Pick every item in 合成装备摆放区域 and do(Remove(Picked item)) 这两个语句用来把合成原材料从游戏中去掉。 物品-Create (Item-type of(Random item in 对应于当前合成宝石和合成装备类型的抽样物品模型所在地区的地区名)at合成产品生成地区 说明:每一个 g序号 触发器都按照PanDing触发器 PanBie触发器 PanDuan触发器 PB触发器 专门对应于合成宝石和合成物品的类型。 触发器-Run JiHuo&情报&(ignoring conditions) 用这个语句转回到JiHuo触发器
设计思路说明: 文件夹 物品合成 应用的思路是:在地图上建立物品合成所需要的 合成宝石摆放区域,合成物品摆放区域,合成产品摆放区域,利用程序先判定合成宝石摆放区域中宝石的种类,以便让系统知道要进行何种类的合成;然后判定被合成的原料物品是什么种类,根据以上两个信息确定合成产品(随机的)应该在哪个产品模型所在区域进行随机抽样。 例如:蒸汽战车+2物品,用勇气宝石改造后可能变成 蒸汽战车+3,蒸汽战车+2,蒸汽战车+1,蒸汽战车(+0),废铁这几样物品,我们事先建造专门对应拜访这些物品模型的地区008(当然玩家永远到不了这些地区); 然后在JiChu触发器中把这些物品摆放在这个地区里; 当我们玩游戏时让主人公把勇气宝石摆放在合成宝石应该摆在的地区里时,系统就会根据JiHuo触发器判定得知我们要进行勇气宝石相关的合成,就会自动执行对应于勇气宝石的PanDing触发器; 根据判定触发器和我们在游戏时摆在合成物品区域的 蒸汽战车2物品,系统就会知道我们要用勇气宝石升级蒸汽战车+2物品,他就会开始执行对应的g8触发器; g8触发器就会先让合成宝石和合成物品区域的宝石和战车物品消失,然后再从对应的008区域随机抽样一个物品类型,再在合成产品地区创造这个类型的1个物品,如果随机出来的是 蒸汽战车+3恭喜你获得极品。如果是蒸汽战车+2,你白白损失了一个勇气宝石,如果是其他的,很不幸,你的战车退化了。如果要调整成功率,可以把想要提高出现几率的物品多放在008里面几个。
有了以上的介绍,制作一个类似MMORPG的游戏的基本要素:刷怪,掉宝,合成装备我们都会了。 然后是角色的属性分配: 这个内容也在 物品合成 文件夹里面。呵呵 下面我们来介绍这部分的程序制作
首先我们要做的是: 在 高级〉游戏平衡性常数 中修改一些东西: 单位最大等级:大家可以自己决定改成多少,我设定的是32 英雄属性: hp,力量敏捷智力大家随意设定 英雄最大xp取得范围可以设定的高一些 英雄最大等级30,不要超过单位最大等级 下面是关键的:英雄经验获得-中立生物减少表:50,30,18,8,6,3,3,3,2。。。。0。一共32项,对应设定的单位最大等级数。 打开物体编辑器,找到你的主人公对应的单位类型。 把他的每等级所增加力量智力敏捷都修改成0。 这样,系统就不会把升级的奖励属性点自动分配
我们可以把角色升级之后获得的属性点击存在专门的变量里面,加点的时候对变量进行操作,但是对于初学编程的朋友,这很困难,而且实际上也容易导致和其他数据系统不兼容出现bug。 我采用的是最傻瓜级的办法: 在游戏中创建了活力果实,敏捷果实,力量果实,智力果实4种果实。角色每升一级会在他的私人区域增加一定数量的活力果实,每一个代表一个自由属性点。在角色私人区域内有一个合成果实的区域,分别对应3个摆放活力果实的地区,3各地区各对应1个属性。此外还有一个合成产品区域 如果玩家把活力果实(自由属性点)放在敏捷对应区域,这个活力果实会立刻消失,同时在产品区域获得一个敏捷果实。当主人公使用敏捷果实时,他的敏捷会上升1。 办法的优点:属性自由分配性强,绝对不会和其他数据系统冲突。 这个办法简单到白痴都能想到,但是没见到别人的作品里采用过。也许大家都是高手。然后说到的就是相关程序: 这实际也是物品合成,所以我也放在物品合成这个触发器文件夹里面。 在触发器JiHuo里面大家可以看到 Pick every item in 活力之果摆放区域 and do(If((Item-type of (Picked item)等于 活力之果)then do(触发器-Run z序号 触发器名(ignoring conditions))else do(Do noting))
的一大串语句。 这就是用来监测活力之果合成的判定程序。 活力之果摆放区域 是和每个角色的安全区内各个属性对应地区相对应的地区名。例如玩家1的私人地区里面的力量区域是206,这个 活力之果摆放区域 的名称就是地区206&情报&,对应z 序号触发器z1。如果206地区有活力之果放入,系统就会执行z1触发器的所有动作。 触发器z1: 物品-Pick every item in 地区206&情报&(活力之果摆放区域) and do(物品-Remove (picked item)) 把206地区的活力之果删除 物品-Create 力量之果 at(Center of 地区209&情报&) 在209地区创造一个力量之果,209地区是玩家1的私人区域中的活力之果产品出现区域。 触发器-Run JiHuo&情报&(ignoring conditions)
用这个语句转回到JiHuo触发器
有了这些最基本的程序,我们就已经把一个MMORPG的概框完成了,其他要做的事情就是制作选择角色的系统,设定怪物的样子,攻击力等,设定主人公角色的样子和数据,这些全凭你的个人喜好了。 选择角色系统我使用程序完成的,以后会进行详细介绍。 下面把以后要介绍的触发器文件夹列表: 选择角色 进入战车 英雄复活 掉宝设定 垃圾处理 安全区域 技能升级 密码取档 游戏初始 游戏对话 物品属性 物品辨视(这个功能没有完成后期工作,程序已经完成,但是属性种类还有重复,没有设计新的属性,但是作为一个很关键的功能也介绍一下)由于后来已经能用其他专门的 3d游戏制作软件制作游戏,这个地图被我闲置而没有完成,保持当年纯测试程序时候的原貌,地图上什么建筑布景都没有,但是功能绝对齐全。 介绍的目的就是为了让广大 魔兽MMORPG地图制**好者,尤其是新手能有所借鉴(很多加密地图我都看过,不屑地说,那么可怜的功能也要加密,而且采用的3d模型都没有脱离游戏自带模型,实在是制作者功利主义的作怪),加密地图保护著作权不是不对,但是作为单纯的游戏附带地图制作功能的作品来说,这也显示不出什么制作水平。倒不如大家互相借鉴提高制作水平来的有价值。
本地图没有任何非必须的布景摆设,功能相对齐全,文件基本都是指令,只有500k大小(貌似其他作品动不动几M大,其实除去布景摆设,真正的系统程序不超过200K)
下载时候请选择网页最下边free项,在进入的新画面里,请等待网页正中间出现验证码图片(3个彩色字符的验证码),输入图片所示验证码后,单击旁边的横条按钮就可以下载,压缩包470K,解压缩即为本地图文件(未加密)
在这个地图之中,我设定了4个种类的主人公外形(采用游戏原有模型)
在选择角色区域为每个玩家设立一个开始点,在开始点建立各个玩家的小精灵,当玩家操纵小精灵走到所选择的主人公外形模型附近的时候,小精灵会消失,同时在默认的第一个安全区产生对应于小精灵所接近的主人公模型外观的主人公角色。
在这个过程中,系统暗中把aZRG1和bZRG1设定为系统为玩家创立的主人公。并且把对应的aL1,aZ1,aM1等力量智力敏捷属性变量的值设定成这个新创立的主人公的对应属性。以便在其他程序系统调用。
各个触发器的内容简介: xuanren: 并行处理x187~x190触发器,事件:Map initialization地图开始运行就执行 动作主要语句: 触发器-Run x187&情报&(ignoring conditions) 运行x187触发器 x187:(x187表示对进入187号地区的单位进行判定,x190表示对190地区判定) 事件:单位-A unit enters 地区187&情报& 如果有单位进入187号地区(在左上角色模型祭坛前面的一个小区域) 动作: Set x187=(Entering uint) 把进入此区域的单位作为变量x187的值(x187是一个单位类型的变量)。 通过这个语句告诉系统,x187单位现在指代进入187号地区的单位。 If((Owner of x187)等于 玩家1(红色))then do(触发器-Run n187p1&情报&(ignoring conditions))else do(Do nothing) 主语句:条件判定语句。如果((Owner of x187)等于 玩家1(红色))成立,则执行(触发器-Run n187p1&情报&(ignoring conditions)),否则什么也不做。 条件((Owner of x187)等于 玩家1(红色))代表:x187变量代表的单位的拥有者 等于 玩家1(红色) 触发器-Run n187p1&情报&(ignoring conditions) 代表执行n187p1触发器 n187p1触发器(n187p1表示对进入187号地区的玩家1的单位进行操作,n190p4表示对进入190地区的玩家4的单位进行操作): 动作: 单位-Remove x187 from the game 把刚才进入187号地区被记录代号为x187的单位从游戏里清理掉。 注意:我们进入187地区的单位被删除了,但是x187变量还在,以后还可以用。 Set bZRG1=BOLIN 0002&情报& 这里是我们第一次定义bZRG1这个变量的值的时候。前面说过,bZRG1是一个类型为 单位 的变量。用来记录玩家1的主人公的角色类型。 BOLIN 0002是我们摆在地图上的代表BOLIN单位类型的实物模型的名字。 我们通过这个语句告诉系统,把主人公1的单位类型设定为BOLIN单位类型(这个单位类型可以在本地图的物体编辑器自定义单位中找到) 触发器-Run dz1&情报&(ignoring conditions) 执行触发器dz1
dz1(dz1 表示为玩家1创造角色的触发器,dz2表示为玩家2创造角色的触发器): 动作: 单位-Create 1(Unit-type of bZRG1) for 玩家1(红色)at(Center of 地区070&情报&)facing 角度数 degrees 为玩家1建造一个和单位bZRG1同样类型的单位,建造地点为070地区中心,让单位面对 某个角度站立 Set aZRG1=(Last created unit) 让刚建立的单位成为aZRG1变量的值,就是声明刚建立的单位为玩家1的主人公
Set aL1=(力量 of bZRG1(不包括bonuses)) 让bZRG1代表的单位的力量属性的值作为变量aL1的值。 注意:我们在前面就知道,aL1变量代表玩家1的主人公的力量属性值。 这里是第一次在游戏里声明玩家1的主人公的初始力量值。 这个初始值和1级的BOLIN类型单位BOLIN 0002的力量值相同。 类似的: Set aZ1=(智力 of bZRG1(不包括bonuses)) Set aM1=(敏捷 of bZRG1(不包括bonuses)) 设定智力,敏捷 Set lv1=1 第一次声明,令lv1变量(类型:数值型)等于1。变量lv1代表玩家1的级别。以后角色升级程序需要用到。 到这里为止,选择角色的程序就都完成了。 总结:在选择角色文件夹里,我们通过程序判定哪个玩家的单位选择了哪个主人公类型,并把这些信息记录给变量。通过这些变量值我们为对应的玩家创建对应类型的主人公,并对主人公属性值进行最初设定。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 英雄无敌地图编辑器 的文章

 

随机推荐