《闪点行动2:龙之崛起》任务编辑器教程

来源:游民星空时间:2011-09-14 14:02:30

  感想:本人玩过的三角洲系列,毁灭战士系列,地震系列,反恐系列,霹雳系列,彩虹系列,荣誉勋章系列,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);

  end

  请不要晕,我们慢慢的一行行的解释。

  首先第一行:

  function onMissionStart() 意思可以这么理解“当游戏开始的时候”这段代码就是这个意思。看到function就是“当什么什么的时候”。onMissionStart()意思是游戏开始。

  再看第二行OFP:showLetterBoxOsd(true);

  OFP:触发。showLetterBoxOsd(true)意识是给出信框。

  end为结束,记得end要和function连用。

  很简单把.整段代码的作用是:

  当游戏开始的时候

  触发:出现信框。--要满足function onMissionStart()否则不触发。

  效果:

  就是我们在玩任务的时候一开始,屏幕上下的黑幕。

  再看个例子:

  function onDeath_huang(vicTIM, killer)

  OFP:missionFailed();

  end

  看到function就是“当”,

  第一行意为“当huang这个单位死了”

  第二行:触发:任务失败;--要满足function onDeath_huang(victim, killer)否则无法触发。

  效果:只要huang这个名称的兵死了任务将失败。

  总结下:写level.lua不外乎就是当什么什么的时候,触发什么什么。很简单吧。

  教程五:如何显示小黄棋

  

  这个图标在游戏中起到指南的作用,让玩家一步步顺者提示走。(该图标只有指南作用,没有完成任务的作用,也就是说这个图标配合任务图标才能完美任务)

  用法很简单就是点击system里的把

  拖动到地图上就可以了,如果拖动多个

  就要将他们之间互相连接起来,类似路径点。属性里设置下名称大小等就可以了。

  但是很多朋友可能遇到这样个问题,明明把

  放在了地图上。但是测试游戏里面就是不见!!!!!!!

  其实关键是我们没有触发。

  好,一一来实现。

  首先拖动

  图标到地图上,然后再拖动

  到地图上,并且在

  的属性name命名为point1,让后点击level.lua标签

  输入:

  function onMissionStart()

  OFP:activateRVChain("point1");

  End

  这样看来就很简单了把:

  当游戏开始的时

  触发: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 ");

  End

  这个代码很容易懂。

  意思是:

  当tank1被摧毁

  触发:任务objective完成。

  效果:把坦克打爆,则任务完成

  哈哈 是不是超级简单

  当然这里你要把

  和坦克放在一起,或者在

  的属性栏里面的linked to里面选择tank1。这样才能准确的定位坦克的位置,不然任务和内容就不匹配了。

  这样一个简单的任务就制作完成了。

  还可以对该代码改进一下,如:

  function onDeath_tank1(victim, killer)

  OFP:setObjectiveState("objective"," COMPLETE ");

  OFP:missionCompleted();

  end

  意思是该任务完成并且所有任务完成退出游戏。

  下面介绍下复杂一点的任务编辑。

  我们怎样来制作2个或3任务呢?

  那就很简单了直接放两个

  分别命名为objective1和objective2,设置好阵营,分别设置primary objictive 1和primary objictive 2

  然后拖

  到地图上。再分别拖一辆坦克命名为但tank1个一个兵命名为bin1,如图所示:

  

  代码为:

  function onDeath_tank1(victim, killer)

  OFP:setObjectiveState("objective1"," COMPLETE ");

  end

  function onDeath_bin1(victim, killer)

  OFP:setObjectiveState("objective2"," COMPLETE ");

  end

  很好理解:

  意思为:

  当tank1爆炸则任务1完成

  当bin1死亡则任务2完成

  2个任务制作很简单吧!!!哈哈

  不过细心的同学发现了,以上代码是无论你先完成哪个任务都可以,但如果想完成了任务1才能完成任务2那怎么办?

  我们必须加入个判断:

  代码修改如下:

  function onMissionStart()

  ob=0;

  end

  function onDeath_tank1(victim, killer)

  OFP:setObjectiveState("objective1"," COMPLETE ");

  ob=1;

  end

  function onDeath_bin1(victim, killer)

  if ob==1 then

  OFP:setObjectiveState("objective2"," COMPLETE ");

  OFP:missionCompleted();

  end

  end

  我们详细讲解下:

  首先看到function onMissionStart()就知道是“当游戏开始时"

  下面ob=0;则是设定了个变量!!且把0(为假)赋值给ob

  再看下一段

  function onDeath_tank1(victim, killer)

  OFP:setObjectiveState("objective1"," COMPLETE ");

  ob=1;---这里多了个ob=1,意思是当objective1这个任务完成后让1(真)赋值给ob

  end

  接着看最后段

  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();

  end

  意思是:当han这个单位进入zone这个地区时

  触发总任务完成

  效果:

  当玩家操作han这个单位进去zone这个区域则弹出任务完成菜单,游戏胜利。

  很简单吧。

  好了现在我们对地区已经了解了。

  现在我们就利用地区这个工具来制作刷兵。

  在此之前我们先了解为什么要刷兵。

  这里在罗嗦下这个编辑器只能支持64个单位在地图上,这明显限制的游戏的规模,但是我们可以在64个单位死后,再刷出新的兵,这样我就能把战斗做到无限大!不过注意一个地图上同一时间只能有64个单位,不然刷不新的兵来。

  刷兵语句:OFP:activateEntitySet();

  好我们来例子:

  例1:

  首先点击 右侧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");

  end

  function onEnter_shanbingzone_han(zoneName, unitName)

  OFP:destroyEntitySet(shuabin1);

  end

  代码的意思是:

  当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地区时不再刷兵呢。

  我们就必须加入判断。

  例3

  来看代码:

  function onMissionStart()

  panduan1=0;

  end

  function onEnter_zone_han(zoneName, unitName)

  if panduan1==0 then

  shuabin1=OFP:activateEntitySet("E1");

  panduan1=1;

  end

  end

  function onEnter_shanbingzone_han(zoneName, unitName)

  OFP:destroyEntitySet(shuabin1);

  end

  很好理解把

  在游戏开始的时候设置个变量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的效果,且更简单方便,不需要变量来判断。

  end

  function onEnter_shanbingzone_han(zoneName, unitName)

  OFP:destroyEntitySet(shuabin1);

  end

  我们来个牛的例子

  例4:

  假设我们有实体E1和E2还有兵若干,地区4个分别为zone,zone1和shanbingzone,shanbingzong1玩家han.

  代码为

  function onMissionStart()

  panduan1=0;

  panduan2=0;

  end

  function onEnter_zone_han(zoneName, unitName)

  if panduan1==0 then

  shuabin1=OFP:activateEntitySet("E1");

  panduan1=1;

  end

  end

  function onEnter_zone1_han(zoneName, unitName)

  if panduan2==0 then

  shuabin2=OFP:activateEntitySet("E2");

  panduan2=1;

  end

  end

  function onEnter_shanbingzone_han(zoneName, unitName)

  OFP:destroyEntitySet(shuabin1);

  end

  function onEnter_shanbingzone1_han(zoneName, unitName)

  OFP:destroyEntitySet(shuabin2);

  end

  意思是:

  当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");#p#副标题#e#

  panduan1=1;

  end

  end

  function onEnter_zone1_han(zoneName, unitName)

  if panduan1==1 then ――用了同一个变量,错误

  shuabin2=OFP:activateEntitySet("E2");

  panduan1=2;――错误end

  这样写是错误的,所以我们必须有panduan1=0;和panduan2=0;两个变量来判断刷兵。切记!!!!!

  要做大规模战斗例4必须要学会。

  本章说到这里结束了,希望大家多多练习,作出超级大战场来给我玩^_^

  这章稍微有点难度,有什么困难可以联系我,大家一起讨论。

  教程八:路径点高级应用

  在教程二中已经认识了路径点,那么这里我们对路径点的功能拓展一下

  此章我们用三个部分来给大家讲解:

  一:如何让刷出来的兵安路径点移动

  二:如何让AI防守路径点

  三:当达到路径点触发事件

  一:我们在学习完教程七的后已经学会刷兵,但是如果喜欢钻研的同学发现,刷出来的兵不会按路径点走,无论你怎么设置路径,他们只是呆呆的站在原地,或者是发现敌人就一拥而上。

  现在我们解决这个问题:

  例1:

  首先我们设置好事体E1(见教程七),拖动一组兵命名为bing1选择实体E1,拖2个地区分别命名为:shuabingzone和yidongzone.在拖3个路径分别命名为:way1,way2,way。并把3个路径相连。拖一个level.lua再来一组兵命名为han选择为player.

  现在我们的任务是进入shuabingzone时,触发刷bing1,进入yidongzone时让bing1按路径移动。(哈哈明白了吧,要让刷出来的兵按路径移动,就必须去触发)。

  好我们输入以下代码:

  function onEnter_shuabingzone_han(zoneName, unitName)

  OFP:activateEntitySet("E1"); - -刷兵

  end

  function onEnter_yidongzone_han(zoneName, unitName)

  OFP:move(“bing1”,”way1p”)

  End

  我们讲解下:第一段没问题,看第二段:当进入yidongzone时触发移动move(“兵的名字”,”路径点名称+p”):

  呵呵是不是很简单。

  但是请注意OFP:move(“bing1”,”way1p”)这里必须是way1+p而不是way1,这里一定要在路径点名称后面加个P,才能让bing1沿着way1到way2到way3,如果不加p,兵1只会到达way1就不动了。

  二:如何让AI防守路径点。

  我们要让刷出来的敌人,防守某个路径点,而不是乱跑,或者原地不动

  例2:在例1的基础上再加一个路径点命名为fangshouway和一个地区命名为fangshouzone,且该路径点不能和其他路径相连.

  我们要让刷出来的兵防守路径点fangshouway.

  代码如下:

  function onEnter_shuabingzone_han(zoneName, unitName)

  OFP:activateEntitySet("E1"); - -刷兵

  end

  function onEnter_fangshouzone_han(zoneName, unitName)

  OFP:defendPos("bing1","fangshouway",10);

  end

  也很简单

  当han进入shuabing地区时触发刷兵,再触发防守。

  OFP:defendPos("bing1","fangshouway",10);这里时(“兵名称”,”路径点”,范围/米)

  三:当达到路径点触发事件

  例如我们有一辆卡车,上面装满了兵,当到达某个路径时触发所有兵下车。

  我们再拖一辆卡车命名为kache1,拖一组兵命名为bing2,让bing2装上卡车。在把bing2和路径way1相连。

  代码如下:

  function onArriveAtWaypoint_kache1_way1(entityName, waypointName)

  OFP:move("bin1","way1","OVERRIDE");

  end

  function onArriveAtWaypoint_kache1_way1(entityName, waypointName)

  OFP:land("bing2");

  end

  第一段触发移动。

  第二段触发下卡车。

  严重注意:一个地区zone只能对应一类OFP,

  例如:

  function onEnter_shuabingzone_han(zoneName, unitName)

  OFP:activateEntitySet("E1"); - -刷兵

  OFP:activateEntitySet("E2"); - -刷兵

  OFP:activateEntitySet("E3"); - -刷兵

  end

  这个是正确的,因为一个为地区只对应了触发刷兵,虽然有多个但是是属于同一类。

  而:

  function onEnter_shuabingzone_han(zoneName, unitName)

  OFP:activateEntitySet("E1"); - -刷兵

  OFP:move("bin1","way1","OVERRIDE");

  end

  这样是错误的:一个地区不能对应两种类型触发。

  再看

  function onEnter_zone_han(zoneName, unitName)

  shuabin1=OFP:activateEntitySet("E1");

  OFP:disableEvent("onEnter_zone_han") ;

  end

  这样情况例外!这个是正确的shuabin1=OFP:activateEntitySet("E1");和OFP:disableEvent("onEnter_zone_han") 属于同一类触发,

  好第八章就讲到这里。

  教程九:实例应用

  一:什么是虚拟单位

  二:存盘点的制作

  三:实例下载

  一:什么是虚拟单位

  我们知道一辆坦克需要配上一个驾驶员,一个指挥,和一个炮手,连上坦克本身就需要4个单位。

  我们知道地图只能有64个单位,那么是不是只能有16辆坦克同时在地图上,答案是否定的。

  我们可以把一辆坦克配置上虚拟驾驶员虚拟指挥和虚拟炮手,那么1辆完整的坦克只占用1个单位

  方法:

  拖一辆坦克到地图上,并在属性栏里面选择has virtual crew就可以了

  二存盘点制作

  这个很简单

  在地图上拖一个Mission progress checkpoint就是圆圈里有个勾勾那个图标,

  命名为save1。(在右上角的system里面找到),再拖一个地区命名为zone1,

  再拖一个兵到地图上明命名为han,设置成player,再来一个level.lua

  (save1和zone1最好在一起。)

  输入代码:

  function onEnter_zone1_han(zoneName, unitName)

  OFP:enableCheckpoint("save1")

  end

  这样就可以了。

  意思是当han进入zone1这个区域时触发存盘点save1,并且恢复体能,AI弹药得到补充。

  三:实例下载

  这里有个本人制作的例子供大家参考:

  t6解压到游目录data_winmissionsMission Editor下,进入游戏玩。

  介绍:

  任务目标1:攻占山头,击毙美军军官。

  任务目标2:埋伏在小道两侧,突袭M1主战坦克。

  任务目标3:占领村庄。

  敌人单位:步兵若干(100+),30+辆M1主战坦克,两辆运兵车。

  解放军单位:20+辆99式主战坦克,玩家带领17人小队,援兵若干。

  战线长度:4公里。

  功略:

  顺着指南小旗走就可以了。不要硬拼,多用战术。

  全文完(^.^)

  祝大家战斗愉快!

  

#p#副标题#e#

文章内容来源于网络,不代表本站立场,若侵犯到您的权益,可联系我们删除。(本站为非盈利性质网站) 联系邮箱:9145908@qq.com
多特网友 2013-04-03 20:18:35 回复
玩的不错哦
多特网友 2013-04-03 20:18:35 回复
玩的不错哦