原文:点击
感想:本人玩过的三角洲系列,毁灭战士系列,地震系列,反恐系列,霹雳系列,彩虹系列,荣誉勋章系列,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");
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公里。
功略:
顺着指南小旗走就可以了。不要硬拼,多用战术。
全文完(^.^)
祝大家战斗愉快!
更多相关内容请访问:闪点行动2专区
相关文章
更多+- 04/17
- 04/17
- 04/17
- 04/17
- 04/17