中国虚拟军事网(VME)- 专注于武装突袭系列虚拟军事游戏

 找回密码
 加入VME

QQ登录

只需一步,快速开始

搜索
楼主: FFUR2007SLX2_5

[教程] 《武装突袭3》脚本编写高级教程【255楼,武装突袭3——疯狂的戴夫和他的重量】

    [复制链接]
 楼主| 发表于 2013-10-22 14:44:05 | 显示全部楼层
a8325811 发表于 2013-10-21 16:04
想請問一下! 如果我想要搞一個觸發器,設定是藍方出現在裡面,就會觸發觸發器,但是我要再多設定一個條件, ...

hi a8325811.

试试这么写:



Trigger:



祝愉快。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入VME

x
发表于 2013-10-22 15:48:24 | 显示全部楼层
FFUR2007SLX2_5 发表于 2013-10-22 14:44
hi a8325811.

试试这么写:

感謝~! 我試試看!   

那如果超過一個以上呢???
 楼主| 发表于 2013-10-22 16:24:44 | 显示全部楼层
a8325811 发表于 2013-10-22 15:48
感謝~! 我試試看!   

那如果超過一個以上呢???

hi a8325811



trigger:



祝愉快。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入VME

x

点评

感謝你~!^^  发表于 2013-10-23 01:23
发表于 2013-10-23 12:50:18 | 显示全部楼层
教程 Good!
发表于 2013-10-23 12:57:32 | 显示全部楼层
amen1345,如果您要查看本帖隐藏内容请回复
发表于 2013-10-23 17:35:46 | 显示全部楼层
鹅鹅鹅饿鹅鹅鹅饿鹅鹅鹅饿鹅鹅鹅饿鹅鹅鹅饿鹅鹅鹅饿鹅鹅鹅饿鹅鹅鹅饿鹅鹅鹅饿鹅鹅鹅饿鹅鹅鹅饿鹅鹅鹅饿鹅鹅鹅饿鹅鹅鹅饿鹅鹅鹅饿鹅鹅鹅饿
发表于 2013-10-23 19:58:35 | 显示全部楼层
mark!!!!!
 楼主| 发表于 2013-10-23 23:09:32 | 显示全部楼层
本帖最后由 FFUR2007SLX2_5 于 2014-2-10 17:15 编辑

171楼,武装突袭3——FSM全教程(六)



上一讲中我们深入剖析了FSM条件,下面我们继续讲讲条件的剩下两个语块,action与precondition。

这两个语块是BI在FSM编写中不会使用的,但既然保留了这两个块,我们的高级教程就有义务帮大家解释个水落石出。

我们知道BI Wiki的解释有时不清楚:http://community.bistudio.com/wiki/FSM_Editor_Manual

这些仅仅是概念上的描述,过于宏观的描述往往帮不了我们什么,所以回到教程。

先看看action。Action中的所有代码记住只会被执行一次,它不是循环,当然同样也不支持延迟。它只有在其所在的条件栏被激活后运行一次,相当于另立门户,与接下来的state是同时运行的。其实这个语块比较鸡肋,但会使用的人可以减免以下步骤:



当中的Action状态和其下的true condition可以直接省略,Action的代码可以直接并入condition的action,同样支持spawn形式的sqf语法。

再来看一下条件中的precondition语块,其实这语块和state的precondition一模一样,我们不要被bi wiki误导什么“该语块内的代码在条件执行之前触发”,这种解释太不负责任了。



其实它就是一个循环,在条件还未被激活的情况下只要引擎检查到它了就会自动运行这个循环直到条件激活后循环自动结束。(所以不要把代码写在永远都不可能被激活条件的precondition中,否则会造成死循环)

在FSM全教程的结尾中,还有几个与FSM相关的命令得和大家解释下:

先是doFSM与commandFSM。这两个东西或许会杀掉我们一些脑细胞。其实在FSM家族中他们本身并不复杂,问题往往出在priority(优先等级上)。我们必须明白ARMA3中的所有代码都不是独立的,他们每一个都有各自对应的家族,只不过是有大有小罢了。如果我们将UI家族的控制命令作为第一大家族的话,那么AI控制命令则可以称为第二大家族。上手直接就讲doFSM与commandFSM则心急吃不了热豆腐。我们还得从家族的诞生开始说起。

还记得DevBranch同步那一讲吗?在那一篇中我只给了大家一个ArmA3的wiki代码链接,或许你觉得够用了,其实不然,这些wiki的链接仅仅只显示了记录在案的arma3代码。我们用supportInfo可以得到所有的DevBranch代码,但问题是不便归类。

对于开发者来说我们还可以通过这些途径来获取ARMA3的最新资讯:

1、        脚本编辑块,其实不在ArmA3 – Script and editing中,最新的代码实验室其实也是“神”最常出没的地方。像Dwarden,japapatramtara,Kylania,Kju,DarkDruid,KillZone_Kid等等,喜欢的朋友千万不要错过这块风水宝地!http://forums.bistudio.com/showt ... cripting-Discussion

2、        对于开发者版本的玩家,如果你连游戏更新了什么都不知道还要贴上来追问的话,请到这里来:
http://forums.bistudio.com/showt ... ch-Changelog/page16 DnA和RoyaltyinExile每天都会贴出Dev的更新内容。

3、        对于那些没日没夜抱怨ARMA3的AI如何如何的“喷友”,我想说的是,还是潜下心来逛逛DEV的AI更新日志吧,看着AI每天都在变得更加聪明,难道你不会感到欣慰吗? http://forums.bistudio.com/showt ... tain-s-AI-Log/page2

4、        如果你想提意见,表示一下你对ARMA3的看法却有抱怨“投诉无门”的朋友,赶快来这里,想要和BI Dev直接对话得找好板块咯,这里其实也是众“神”出没的地方:http://feedback.arma3.com/my_view_page.php



BI DEV对问题的接手往往也有优先秩序,不要提那些非常幼稚的问题。“我要脚架”神马的,这种属于Feature类的需求除非过了项目经理那一关,否则Dev是不会回复的。

说到这儿似乎扯远了,赶紧回到正道儿上来,我们刚才讲到了ARMA3的代码,这当然不是整个ARMA的所有家族成员,记录在册的全体成员在这里:http://community.bistudio.com/wi ... ing_Commands_Arma_3 (据不完全统计有毛1700个了,大家不用担心,就当是学习一门语言,每天学习20个也就3个月的时间)

还没完,这些只不过是注册在案的代码,还有一些最新来的朋友WIKI来不及更新就放到了这里: http://community.bistudio.com/wiki/All_Arma_Commands_Pages (那些红色的代码就是新代码了)



在欢迎了所有成员后我们得分家族了:http://community.bistudio.com/wi ... ds_by_Functionality



接着让我们进入http://community.bistudio.com/wi ... Group:_Unit_Control Unit Control家族,这里有所有关于AI控制的命令,现在来看一下最基本的三个前缀:do, command和To。为什么我要举这些例子?DoMove, CommandMove, Move和MoveTo。我们能不能区分它们的不同之处?其实这和FSM是一样的:DoFSM, CommandFSM, execFSM。虽然FSM并没有归入这一类但也有异曲同工之妙。

在没有区分它们的优先等级之前我们都是乱入的,想到什么就用什么。但是到了高级阶段了就不能这么做。在分等级以前先考考大家对UnitReady的理解,什么时候Unit才是空闲的?只有在没有路径,没有command,do和原始命令的情况下Unit才会“闲”起来。那么首先就排除了MoveTo,显然它是低级别的成员,唯一的朋友也只有是MoveToCompleted了。接下来doMove, commandMove要和Move分个高低,显然是do和command的家族位置更高。那么他们在实际中的表现又如何?Move可以轻易乱入MoveTo,doMove和CommandMove何以轻易乱入Move。MoveTo作用于单位但会被组长叫回,Move只作用于组但组长可以根据战场形式做出调节,CommandMove和DoMove作用于所有人并且享有最高指令,在DoMove的指令不完成前没有任何人能够在中途下达退出或撤离的命令。

现在回到FSM。在DoFSM,CommandFSM和ExecFSM中,前两者享有同等的优先权。再来看一下他们的结构,是相同的。只能作用于AI实物。所以DoFSM和CommandFSM是不能写任务框架的,同样不适于写脚本,因为凡是参与DoFSM的AI引擎会自动将其归入“繁忙”状态并且在完成这件事之前AI不会接受任何其他无线电指令。所以DoFSM和CommandFSM常被BI用于内部FSM如救治伤病员,或特殊任务需要单兵脱离群体执行的。

我们先来看看DoFSM和CommandFSM的结构,与execFSM不同的是它们不能传递_this,这就意味着我们在这两个命令中无需定义_this相关的变量,直接使用特殊私用变量即可:







既然结构明白了,现在我们再回过头来看Rube的那段补充就不难理解了,DoFSM和CommandFSM作为优先执行项优先于所有普通FSM和SQF,包括低级别Unit Control的命令,对于正在执行的对象全部被赋予UnitReady False值直到End State才会重新可用。所以唯一可以更改Busy值的命令只有DoFSM本身和高优先权命令,这就是为何我们可以在DoFSM中使用除限制AI移动的所有命令,像doStop这种会覆盖DoFSM本身的作用,那么这个AI就永远也达不到End State,doFSM也就无意义了。FSM还有几个尾巴,如Handler,setFSMvariable就留到FSM的最后一讲中去。再见。

209楼继续教程,武装突袭3——代码优化追加篇

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入VME

x
发表于 2013-10-24 10:13:02 | 显示全部楼层
多谢了啊 1!!!
发表于 2013-10-25 20:55:18 | 显示全部楼层
FFUR2007SLX2_5 发表于 2013-10-23 23:09
171楼,武装突袭3——FSM全教程(六)

希望版主如果有空的话出一个多人联机任务编辑教程,将一些多人联机的编辑过程实用化,将我们编辑中的常见错误指出来,将一些常用于多人任务编辑中的常用技巧与方法介绍出来,我自己感觉在多人任务编辑过程中全局变量与局部变量的使用出现混乱,局部执行命令产生全局效果,一些变量在脚本之间的传递等等,总之单人任务与多人任务编辑之间的各种不同之处,以及如何保证多人任务运行过程的稳定性与可靠性都需要楼主给予指导,盼出一个多人任务编辑教程!
 楼主| 发表于 2013-10-26 13:07:39 | 显示全部楼层
qevhytpl 发表于 2013-10-25 20:55
希望版主如果有空的话出一个多人联机任务编辑教程,将一些多人联机的编辑过程实用化,将我们编辑中的常见 ...

感谢您的支持,FSM还剩两篇结束后我将马上着手MP,
发表于 2013-10-26 14:13:20 | 显示全部楼层
支持一下
发表于 2013-10-26 17:53:08 | 显示全部楼层
好哈哈哈
发表于 2013-10-27 14:01:03 | 显示全部楼层
求学习
发表于 2013-10-29 15:07:49 | 显示全部楼层
uav attachTo [logic1,[600,0,600]];
uav hideobject true;
if !(local gunner uav) then {
  private ["_dir_JB","_nowdir"];
  _dir_JB = 1;
  while {alive UAV} do {
    _nowdir = _dir_JB + 1;
    logic1 setdir (getdir logic1)-0.1;
    if (_nowdir > 360) then {
      _nowdir = 1;
    };
    _time = _time + 1;
    //hintSilent format ["NUM:%1",(_time)];
    sleep 0.01;
  };
}else{hintSilent "wocao"};

版主我快疯了~这是我一个无人机绕点的脚本~attachTo 一个UAV到游戏逻辑上~然后游戏逻辑转UAV就绕圆了~但是
为什么必须
!(local gunner uav) 才能正常运行?联机的时候~
按道理讲
(local gunner uav)  本地操作的无人机~判断为true然后运行就可以了~为什么非本地才开始运行???感觉联机逻辑好乱啊{:soso_e109:}
您需要登录后才可以回帖 登录 | 加入VME

本版积分规则

小黑屋|中国虚拟军事网

GMT+8, 2024-5-3 12:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表