求一个龙之崛起战役编辑器的战役编辑器文件

您的位置:
游戏攻略秘籍
《植物大战僵尸》是一款极富策略性的小游戏,可...
《魔兽争霸Ⅲ》是一款非常著名的即时战略游戏。...
《愤怒的小鸟》是一款首发于iOS,尔后跨平台...
PC版《侠盗猎车手:罪恶都市》(Grand ...
  EA的《模拟人生》系列是PC平台最畅销的...
《极品飞车15:变速2》由EA的DICE和S...
小游戏推荐
出处:游民星空
您可能感兴趣的话题:
核心提示:感想:本人玩过的三角洲系列,毁灭战士系列,地震系列,反恐系列,霹雳系列,彩虹系列,荣誉勋章系列,cod系列。
  感想:本人玩过的三角洲系列,毁灭战士系列,地震系列,反恐系列,霹雳系列,彩虹系列,荣誉勋章系列,cod系列。
  说实话我已厌倦了巷战,厌倦了按规定线路冲锋的的第一人称射击游戏。
  给我感觉最好的好是闪点行动和三角洲,开阔的地图,真实的战争,1公里开外匍匐在草丛中,抬个狙,听着风吹过草地的声音,等待着目标的出现!!!
  任务编辑器感想:该编辑还是比较傻瓜容易懂的。连我这种对脚本语言一巧不通的人也摸出了点门道。
  教程一:初识界面,放置单位,单位属性。
  可以看到图片所示。界面很简单。
  要做个最最简单的地图就是把解放军,和美军拖到地图上,然后选中一个单位在属性界面里把AI换成player就可以了。
  下面图片的属性的简单介绍 如图
  没什么难点随便选择了玩玩就可以了。
  教程二: 路径点
  因为路径设置已经有人写过比较好的帖子,我复制如下(感谢原作者vid190):
  很多人都要怎么让AI自动走路,下面简单介绍下,会了这个你也就差不多能做个极为简单的防御地图了
  举例做一个让AI一开始就自己移动一段距离的任务
  1.首先加入AI,在Create面板里的USMC跟PLA下的,Fireteams 火线小组 Soldiers 单兵 Squads 一个班 ,这些就不多介绍了,自己选择个小队加入。然后在设置自己,这里要注意了,如果让AI自己移动那么这个移动的队伍里不能有你自己。不然系统会自己默认让你自己发号施令指挥队友。自己在Soldiers选择个自己喜欢的加上,让后在地图上在自己加入的这个人物图标上单击右键选择Set Control Mode Of This Character - Player 就设置为自己了,但是如果设置的为敌方那就不用考虑自己了。
  2.然后是设置路径点。在Create面板里的Systems下的,Mission里选择 Waypoint 路径点。然后在地图上画出路径点,这里要注意,每到一个路径点队长都会报告下一个路径点,所以不要点太多,不然每走几步队长就得乌拉乌拉的。然后选择AI,不包括你自己,这里可以全选也可以点击小队的盾牌,也可以单选。怎么都可以。选择后在他们的图标上点右键选择Pick Waypoint 这时图标会变灰但是路径点还是亮着的,选择你刚才设置的第一个起始路径点就可以了。
  技巧一.关于怎么样设置迂回,同理只要在终点路径点上右键单击并选择Pick Next Waypoint 然后点击起始路径点即可。这时会看见路径线的两个箭头会重合相对,意思就是AI会在这两点上来回游走。当然你也可以画个圈,反正怎么画随你。
  技巧二.如果你想让AI跑步以最快的速度行进,那只要点击路径点然后选择右边Modify-Waypoint下的Rapid Move,把它点亮就可以了。然后你会看见路径线变成多箭头,既是成功。
  技巧三.当然这时你可能看到Rapid Move下的Stance选项,它是设置到这个路径点用什么样的姿态,依次为正常直立行进,蹲着行进,还有匍匐前进。
  技巧四.然后你会看到Stance下面的Doctrine选项,虽然这个单词很难理解,但也是跟姿态有关。依次说下你们就明白了。第一个命令后的姿态,就是说队长命令AI什么样AI就保持什么样的姿态,然后第二个是巡逻姿态,就是心不在焉的那种。第三个事正常姿态。第四个也是个巡逻姿态,但是是非常警觉的那种,也可以理解成搜寻姿态。第五个就是战斗姿态了。然后这里下面的Formation我们简单介绍下,就是行进队形。明白了吧,什么代表什么队形游戏中熟悉这里就不做多介绍了。
  技巧五.然后是Delay选项,顾名思义就是延迟,就是到达次路径点后等待多长时间再移动到下个路径点。单位是毫秒,注意不是秒。1000毫秒=1秒。要是设置60分钟就得是 3600000
  感谢原作者vid190
  教程三:部队编组
  因为部队编组已经有人写过比较好的帖子,我复制如下(感谢原作者vid190):
  1.我们先在Soldiers重选择5个单兵,放到地图上去,因为一个小队最多5个人,你选6个也编不到一块去。
  然后我们在看Create-Systems-AI-下的Echelon图标。这个事我们以后编辑任务的常用图标,就是小队图标。
  我们在地图上加一个。
  2.然后我们就可以把这5个人编辑成一小组,我们可以在Echelon图标上点击右键选择Pick Parent Echelon单个选择单兵,
  也可以在单兵图标上点击右键选择Pick Parent Echelon指向Echelon图标。在就可以用鼠标全选,或者按住Ctrl挑选。
  3.这时我们看到五个单兵都用线指向Echelon图标,并且Echelon图标被点亮了。然后我们看到这五个单兵中有一个带有白色黑点小盾牌图标的,这个就是队长了。怎么样设置队长呢,我们来说下。首先选择你那个要设置队长的单兵,然后在右下角Modify面板中找到Hierarchy面板中的Leadership选项,我们看到数值有100,200,300这样的,说到这有的人明白了吧,数越大级别越高。小队中级别最高的就是队长。
  而后面的Reset就是还原成默认,还有就是什么样的级别对应什么样军衔,在下一课中Rank属性中有介绍,不然一个小兵命令一个将军就糗大了,(400为小队长,800为大队长。)
  4.小队任务说完了,然后我们再说编辑班级队伍,就是把编辑好的几个小队组成一个大队。
  把刚才编辑好的Ctrl+c Ctrl+v再复制出4个来。然后再加入一个Echelon图标,聪明人到这个都应该明白再怎么设置了吧,
  在每个小队的Echelon图标上点击右键选择Pick Parent Echelon指向新加入的Echelon图标。这时你会看到。新加入的图标变成两个黑点。
  这就是一个大队的标志。5个小队都选择完毕后你会看到这25人其中有一个人有两点白色盾牌标记,那个就是大队长了。关于怎么设置大队长,同上面的第3节,这里就不啰嗦了。
  要点:加入军官时要小心,只要一个就够了,不要重复加入,系统不支持多军官。
  还有就是你最多只能控制9个单位,就是说最多只能命令24个人,1到9,1是你自己,2到5是你小队的人,6.7.8.9是另外4个小队。
  教程四:初识lua脚本
  编写level.lua是此编辑器的灵魂核心。
  请不要看见代码就犯晕,其实都很简单。
  我之前对脚本语言一窍不通,不对之处多多指教。
  首先我们点到右上角界面中system然后拖动
  图标在地图上。地图上选中该图标,在标签栏就会出现level.lua标签。如图所示。
  二我们打开标签level.lua,在输入界面里输入:
  function onMissionStart()
  OFP:showLetterBoxOsd(true);
  请不要晕,我们慢慢的一行行的解释。
  首先第一行:
  function onMissionStart() 意思可以这么理解“当游戏开始的时候”这段代码就是这个意思。看到function就是“当什么什么的时候”。onMissionStart()意思是游戏开始。
  再看第二行OFP:showLetterBoxOsd(true);
  OFP:触发。showLetterBoxOsd(true)意识是给出信框。
  end为结束,记得end要和function连用。
  很简单把.整段代码的作用是:
  当游戏开始的时候
  触发:出现信框。--要满足function onMissionStart()否则不触发。
  效果:
  就是我们在玩任务的时候一开始,屏幕上下的黑幕。
  再看个例子:
  function onDeath_huang(victim, killer)
  OFP:missionFailed();
  看到function就是“当”,
  第一行意为“当huang这个单位死了”
  第二行:触发:任务失败;--要满足function onDeath_huang(victim, killer)否则无法触发。
  效果:只要huang这个名称的兵死了任务将失败。
  总结下:写level.lua不外乎就是当什么什么的时候,触发什么什么。很简单吧。
  教程五:如何显示小黄棋
  这个图标在游戏中起到指南的作用,让玩家一步步顺者提示走。(该图标只有指南作用,没有完成任务的作用,也就是说这个图标配合任务图标才能完美任务)
  用法很简单就是点击system里的把
  拖动到地图上就可以了,如果拖动多个
  就要将他们之间互相连接起来,类似路径点。属性里设置下名称大小等就可以了。
  但是很多朋友可能遇到这样个问题,明明把
  放在了地图上。但是测试游戏里面就是不见!!!!!!!
  其实关键是我们没有触发。
  好,一一来实现。
  首先拖动
  图标到地图上,然后再拖动
  到地图上,并且在
  的属性name命名为point1,让后点击level.lua标签
  输入:
  function onMissionStart()
  OFP:activateRVChain("point1");
  这样看来就很简单了把:
  当游戏开始的时
  触发:point1这个旗。
  进入游戏后我们就能看到这个小黄棋在坐标上啦。
  备注:如果有多个00并且之间相连,那么在level.lua里只要触发第一个棋子的名字就可以了,其他后面的棋子都可见到了。
  休息下,抽根烟,喝点茶。
  待编。。。。。。。。。。。。
  教程六:如何制作任务
  要制作好的任务必须配合上一章的内容。根据小黄棋的提示来完成任务。(当然你不用小黄旗也是可以的)
  我们先来做个最简单的任务。
  首先在右上角的界面里击system标签然后把
  拖到地图上,然后点击
  把属性里把name写成objective,后在把type里面选择成primary objictive 1.意思是这个是主要任务一,再把army设置成PLA,意思是PLA的任务。如图所示:
  这样任务就能显示了。
  不过现在还没有任务的实际内容,所以我们还要写level.lua
  再拖一个
  到地图上,再随便拖一辆坦克在地图上并且在name里设置为tank1.然后后打开.lua
  输入以下代码:
  function onDeath_tank1(victim, killer)
  OFP:setObjectiveState("objective"," COMPLETE ");
  这个代码很容易懂。
  意思是:
  当tank1被摧毁
  触发:任务objective完成。
  效果:把坦克打爆,则任务完成
  哈哈 是不是超级简单
  当然这里你要把
  和坦克放在一起,或者在
  的属性栏里面的linked to里面选择tank1。这样才能准确的定位坦克的位置,不然任务和内容就不匹配了。
  这样一个简单的任务就制作完成了。
  还可以对该代码改进一下,如:
  function onDeath_tank1(victim, killer)
  OFP:setObjectiveState("objective"," COMPLETE ");
  OFP:missionCompleted();
  意思是该任务完成并且所有任务完成退出游戏。
  下面介绍下复杂一点的任务编辑。
  我们怎样来制作2个或3任务呢?
  那就很简单了直接放两个
  分别命名为objective1和objective2,设置好阵营,分别设置primary objictive 1和primary objictive 2
  然后拖
  到地图上。再分别拖一辆坦克命名为但tank1个一个兵命名为bin1,如图所示:
  代码为:
  function onDeath_tank1(victim, killer)
  OFP:setObjectiveState("objective1"," COMPLETE ");
  function onDeath_bin1(victim, killer)
  OFP:setObjectiveState("objective2"," COMPLETE ");
  很好理解:
  意思为:
  当tank1爆炸则任务1完成
  当bin1死亡则任务2完成
  2个任务制作很简单吧!!!哈哈
  不过细心的同学发现了,以上代码是无论你先完成哪个任务都可以,但如果想完成了任务1才能完成任务2那怎么办?
  我们必须加入个判断:
  代码修改如下:
  function onMissionStart()
  function onDeath_tank1(victim, killer)
  OFP:setObjectiveState("objective1"," COMPLETE ");
  function onDeath_bin1(victim, killer)
  if ob==1 then
  OFP:setObjectiveState("objective2"," COMPLETE ");
  OFP:missionCompleted();
  我们详细讲解下:
  首先看到function onMissionStart()就知道是“当游戏开始时"
  下面ob=0;则是设定了个变量!!且把0(为假)赋值给ob
  再看下一段
  function onDeath_tank1(victim, killer)
  OFP:setObjectiveState("objective1"," COMPLETE ");
  ob=1;---这里多了个ob=1,意思是当objective1这个任务完成后让1(真)赋值给ob
  接着看最后段
  function onDeath_bin1(victim, killer)
  if ob==1 then---这里是如果 ob等于1则触发objective2任务完成,达到了完成任务1后才能完成任务2的效果。注意下语法结构。
  OFP:setObjectiveState("objective2"," COMPLETE ");
  OFP:missionCompleted();
  end- -这里注意凡有if必须有end结束
  end- -这里的end对function
  超级简单吧!! 哈哈
  其实不外乎多1个变量让他完成任务1时ob变成1,任务判断ob是否等于1才触发第二个任务!
  那么三个任务就不多讲了!
  此章介绍到这里。
  任务完成可以是多样性的,可以是某单位被杀,或者进入某区域,或者某段时间内。
  学到这里应该可以制作“1公里开外匍匐在草丛中,抬个狙,听着风吹过草地的声音,等待着目标的出现!!!狙杀!!!!!!!“
  大家灵活应用可以做出绚丽的任务来!
  教程七:如何刷兵,如何删除出来的刷兵
  此游戏只能同时拥有64个单位,确实少了点。以上内容是能编辑小规模战争mod。
  但是学了此章后,你能把场面放大无数倍,可以制作出面对成百上千敌人的超级大场面。
  可以制作绚丽的海滩登陆。
  可以率领25辆99式坦克面对200辆M1坦克的超级坦克大对轰。
  还可制作数十辆武装直升机飞过头顶的震撼效果!!!
  可以制作出绚丽的桥头保卫战,村庄保卫战等等
  在学习此章之前,我们先来了解下地区:
  ,位置在右上角的system里面可以找到。
  如图:
  这个东西主要是用于:某单位进入该地区时发生什么事。
  多用于刷兵,删除刷兵,触发任务完成等。
  代码为:function onEnter(zoneName, unitName)
  来个例子:
  首先拖动
  在地图上,把
  的name命名为zone然后再拖一个兵并把该兵的name命名为han并设置为player.
  放好后,点击标题栏的level.lua
  输入以下代码:
  function onEnter_zone_han(zoneName, unitName)
  OFP:missionFailed();
  意思是:当han这个单位进入zone这个地区时
  触发总任务完成
  效果:
  当玩家操作han这个单位进去zone这个区域则弹出任务完成菜单,游戏胜利。
  很简单吧。
  好了现在我们对地区已经了解了。
  现在我们就利用地区这个工具来制作刷兵。
  在此之前我们先了解为什么要刷兵。
  这里在罗嗦下这个编辑器只能支持64个单位在地图上,这明显限制的游戏的规模,但是我们可以在64个单位死后,再刷出新的兵,这样我就能把战斗做到无限大!不过注意一个地图上同一时间只能有64个单位,不然刷不新的兵来。
  刷兵语句:OFP:activateEntitySet();
  好我们来例子:
  首先点击 右侧Create栏右边的Explorer
  在 Entety Sey View 目录下面空白处点一下(防止建在根目录里) 再选择+ ADD Entity Set
  增加一个Entity Set 我们这里他命名为E1.单击E1灰色目录图标打勾,
  然后再右键E1选Exportable 最后图标就是一个***打勾的目录.
  这样我们就建立了个实体。
  然后拖动一组兵到地图上在属性界面里的modify里的Entity Set 里选择刚
  才创建的E1。命名为bin1
  现在这组兵事E1这个实体里的单位。
  那么我们要实现刷兵就必须触发这个实体(E1这个实体里的单位在游戏一开始是不会出现的)
  在地图上拖一个地区
  命名为:zone,再拖一个
  ,再拖一个兵命名为han设置成player。点击level.lua输入以下代码:
  function onEnter_zone_han(zoneName, unitName)
  OFP:activateEntitySet("E1");
  end意思是:
  当han这个单位进入zone这个区域时
  触发刷实体E1
  那么我们知道刚才的bin1是在实体E1中,那么触发E1也就实现了bin1的出现。
  效果:
  当han进入zone这个地区时,bin1刷出来!
  哈哈哈哈哈哈是不是超级简单。不过要注意刷出来的兵或者说实体E1里面的单位必须要有小队队长。不然会出错。
  好了我们再来学习删除刷兵。
  代码为:OFP:destroyEntitySet();
  为什么要删除刷兵?
  那么一队敌人远离你1公里,这队敌人也没办法追上你,那么我就可以把这个小队删除,释放出内存给其他的单位!真正实现大规模的战斗。
  我们继续以例1来讲解。
  再拖动一个地区到地图上00命名为shanbingzone
  现在地图上有两个地区00分别为zone和shanbingzone,一个han兵,一个bin1,和一个level.lua
  我们点击level.lua
  输入以下代码:
  function onEnter_zone_han(zoneName, unitName)
  shuabin1=OFP:activateEntitySet("E1");
  function onEnter_shanbingzone_han(zoneName, unitName)
  OFP:destroyEntitySet(shuabin1);
  代码的意思是:
  当han这个单位进入zone这个区域时
  shuabin1=触发刷兵E1实体
  当han这个单位进入shanbingzone这个地区时
  触发删除shuabin1这个变量。
  我们来讲解下:
  shuabin1=OFP:activateEntitySet("E1");这段代码和例1有所不同,这里必须把OFP:activateEntitySet("E1")赋值给shuabin1才能执行后面的消除刷兵。Shuabin1这个变量可以取自己容易记的名字。
  再看下面:
  OFP:destroyEntitySet(shuabin1);为触发删除刷出来的兵。
  看到了把后面括号里是(shuabin1)而不是E1。如果是E1的话则代码不能出现效果,切记.那么这里删除了shuabin1也就删除了E1这个实体也就删除了bin1这组兵。(注意格式(shuabin1)没有双引号)
  效果:
  当han进入zone时刷兵,当han进入shanbingzone时删除刚才所刷的兵.
  呵呵 也很简单把
  不外乎把刷兵的触发效果给他赋值个变量,在删除刷兵的时候只要删除这个变量就可以了。
  休息下继续。。。。。。。。。。。。。。。。。。。。
  但是细心的同学又发现了
  上面这个例子,当han单位进入zone这个地区刷兵,然后进去shanbingzone这个地区删除刷出来的兵,但是当han再进入zone这个区域时又刷兵了,这明显不是我们设计的本意。
  那么我们该如何只让zone这个区域只刷一次兵,以后再进入zone地区时不再刷兵呢。
  我们就必须加入判断。
  来看代码:
  function onMissionStart()
  panduan1=0;
  function onEnter_zone_han(zoneName, unitName)
  if panduan1==0 then
  shuabin1=OFP:activateEntitySet("E1");
  panduan1=1;
  function onEnter_shanbingzone_han(zoneName, unitName)
  OFP:destroyEntitySet(shuabin1);
  很好理解把
  在游戏开始的时候设置个变量panduan1=0。
  当han进入zone时,先判断panduan1是不是0后才刷兵。
  当触发刷兵后让panduan=1,则以后再进入zone地区时因为panduan=1所以不会再刷兵了。
  当然对于例3的功能还有更简单的办法:
  function onEnter_zone_han(zoneName, unitName)
  shuabin1=OFP:activateEntitySet("E1");
  OFP:disableEvent("onEnter_zone_han") ;--消除该触发器,也可以达到例3的效果,且更简单方便,不需要变量来判断。
  function onEnter_shanbingzone_han(zoneName, unitName)
  OFP:destroyEntitySet(shuabin1);
  我们来个牛的例子
  假设我们有实体E1和E2还有兵若干,地区4个分别为zone,zone1和shanbingzone,shanbingzong1玩家han.
  代码为
  function onMissionStart()
  panduan1=0;
  panduan2=0;
  function onEnter_zone_han(zoneName, unitName)
  if panduan1==0 then
  shuabin1=OFP:activateEntitySet("E1");
  panduan1=1;
  function onEnter_zone1_han(zoneName, unitName)
  if panduan2==0 then
  shuabin2=OFP:activateEntitySet("E2");
  panduan2=1;
  function onEnter_shanbingzone_han(zoneName, unitName)
  OFP:destroyEntitySet(shuabin1);
  function onEnter_shanbingzone1_han(zoneName, unitName)
  OFP:destroyEntitySet(shuabin2);
  意思是:
  当han进入zone时
  触发刷E1
  当han进入zone时
  触发刷E2
  当han进shanbingzone时
  触发删除E1
  当han进入shanbingzone1时
  触发删除E2
  以上代码刷兵区域只能刷1次兵
  效果:略
  值得注意的是一次刷兵判断时,变量只能用一次
  function onEnter_zone_han(zoneName, unitName)
  if panduan1==0 then
  shuabin1=OFP:activateEntitySet("E1");
相关教程推荐
相关软件推荐

参考资料

 

随机推荐