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

 找回密码
 加入VME

QQ登录

只需一步,快速开始

搜索
查看: 2338|回复: 13

[讨论] 求这几个script的基本语法,与解释?

[复制链接]
发表于 2012-2-10 16:44:32 | 显示全部楼层 |阅读模式
本帖最后由 a8325811 于 2012-2-10 16:49 编辑

我是ArmA2 script的新手,目前碰到几个基本语法,但不知道是啥意思,希望有人能跟我解释。

1.!(惊叹号),我知道这个一思是not,代表不是。但我有看到这个!(alive xxx)(!alive xxx)!alive xxx,请问这三个是同样的吗?还是说是用在不同情况下的?  还有就是当not用!来代替时,是不是不用跟后面的单字中间有空格?

2.请问?(问号)是代表?

3.我知道this代表示这个,也就是那个单位被我写入这script,但是当_this,为啥前面要加_(底线),而且还蛮多参数前面都会加这个,请问这个意思?

4.我常常会看到select 0;或是select 1;等等,请问这代表的是什么?   是不是跟我猜测的一样,是[] exevVM "XXXX.sqf";前面[]要输入东西之类会被读取的?

5.我知道=>=<=跟>和<等的意思,就跟数学的大于等于是一样,但是==两个等于写在一起又是代表什么?

6.我常常会看到null或是NULL,这代表是啥? 我用翻译机他好是空的意思ㄟ,那这句not isnull就翻译叫做不是空的吗?

7.那Nil就是零的意思吗? 那这句waitUntil { !isNil {player} };,是不是就是等待,直到玩家数不是0?

8.player就是泛指所有是有人玩家的意思吗?

9.processInitCommands是?

10.{   _dummy = _x createvehicle _LHDspawnpoint;   _dummy setdir _LHDdir;   _dummy setpos _LHDspawnpoint;}foreach player;,这句最前面的那个_x,是不适用后来的foreach player;来套入?

大致上就这样,请各位专家帮忙解答,谢谢你们。{:soso_e128:}
发表于 2012-2-10 17:09:59 | 显示全部楼层
http://wiki.chinavme.com

看看这个。

!单用在变量前面代表布尔值的求反,如果和等号连用代表“不等于”。

这些都可以在BI Wiki里查到具体用法。

null是“空值”的意思,就是没有任何的值。
发表于 2012-2-10 17:39:58 | 显示全部楼层
嗯,问题都问得很好!
发表于 2012-2-10 17:49:15 | 显示全部楼层
4.是的,但是具体的我也不清楚。
10.貌似不是这样的,前面加_dummy叫什么“局部变量”,F大以前跟我提到过,我目前对它的理解是相当于起个名儿,之后可以用命令Terminate来结束它。
 楼主| 发表于 2012-2-10 18:24:35 | 显示全部楼层
我现在看到我的第一个函数(Function)下面的范例,有点看不懂这一句

if(_myGuy != (vehicle _myGuy)) then {
        _myOutStr = "I'm in a vehicle!";
};

这句的if是代表当player 不在载具里的状态吗?
那为啥这句等于不在载具里的话,那为啥要显是这句你在车子里的这句话
 楼主| 发表于 2012-2-10 18:30:38 | 显示全部楼层
使命召唤0 发表于 2012-2-10 17:49
4.是的,但是具体的我也不清楚。
10.貌似不是这样的,前面加_dummy叫什么“局部变量”,F大以前跟我提到过 ...

所以slect 0:;slect1;.....依序下去,就等于

[slect 0,slect 1.......] execVM "XXXX.sqf";

这样的意思吗?
发表于 2012-2-10 19:22:52 | 显示全部楼层
a8325811 发表于 2012-2-10 18:30
所以slect 0:;slect1;.....依序下去,就等于

[slect 0,slect 1.......] execVM "XXXX.sqf";

不是的,我看见的例子里中括号直接写单位名称。
版主也不来,真是...
我个人的理解是select是那种公共的脚本用的,便于别人在不同单位上使用。
 楼主| 发表于 2012-2-10 20:30:22 | 显示全部楼层
我刚刚看到,好像有加底线的值,只可以是那个script本身可以使用,但是如果没有加底线,那个直就可以给其他script一起使用与修改。
 楼主| 发表于 2012-2-10 20:32:16 | 显示全部楼层
使命召唤0 发表于 2012-2-10 19:22
不是的,我看见的例子里中括号直接写单位名称。
版主也不来,真是...
我个人的理解是select是那种公共的 ...

不是拉我的意思是
[Player,Haha,13579] execVM "XXX.sqf";
Player=slect 0
Haha=slect 1
13579=slect 2

我的意思是这个。
发表于 2012-2-10 20:53:47 | 显示全部楼层
你需要学习基础编程知识……否则无法理解这些的。
发表于 2012-2-10 23:20:37 | 显示全部楼层
本帖最后由 FFUR2007SLX2_5 于 2012-2-10 23:41 编辑

不想讲得太复杂,就简单易懂点的吧。
fnc = [w1,w2,w3,w4] execVM "script.sqf";
[w1,w2,w3,w4]  ------------------------------>  _this
w1 ---------------------------------> _this select 0;
w2 ---------------------------------> _this select 1;
以此类推。

但凡下滑线的均为局部变量,无下划线的均为全局定量。
什么是局部变量?就是你这个变量只能在其所在脚本中使用,有局限性,所以叫局部变量。
什么叫全局变量?就是你这个变量,涉及此任务的所有脚本都可以用,无局限,所以叫全局变量。

!isnull不叫“不叫空”,是是否有效。

==是指是否相等,而=指赋予变量值。

?是sqs的用法,表示布尔值判断。

isnil用来判断变量是否被赋予数值。

processInitCommands指执行被加上setVehicleInit对象的指令。
 楼主| 发表于 2012-2-11 04:37:12 | 显示全部楼层
本帖最后由 a8325811 于 2012-2-11 06:52 编辑
FFUR2007SLX2_5 发表于 2012-2-10 23:20
不想讲得太复杂,就简单易懂点的吧。
fnc = [w1,w2,w3,w4] execVM "script.sqf";
[w1,w2,w3,w4]  ------- ...



喔~!原来如此,令我茅塞顿开~!^^谢谢

所以这句
[] spawn {  while {not isnull rplan04} do { "mkr_01d" setmarkerpos getpos rplan04; sleep 0.5; };};

翻译成 生成:当(红色4号飞机是否有效)<==这里指是否飞机有人还是说是否有这台叫做rplan04飞机?
然后让mkr_01d这个标志移动到红色4号飞机上,休息0.5秒。

这样吗?
发表于 2012-2-11 08:47:59 | 显示全部楼层
都不是,是指rplan04是否存在,如果被deletevehicle话,那就返还为false。
 楼主| 发表于 2012-2-11 12:40:59 | 显示全部楼层
喔,那我知道了~!谢谢
您需要登录后才可以回帖 登录 | 加入VME

本版积分规则

小黑屋|中国虚拟军事网

GMT+8, 2024-5-2 06:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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