SQF入门经典
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中国虚拟军事网
▪学习一些基本的任务编辑器知识,您可以参考
[/wiki/ArmA:_Mission_Editor《武装突袭:任务编辑指南》]。
▪明确您想要在脚本中实现什么样的功能,最好能够做一个脚本开发计划而不是随意乱写。
▪持之以恒。
任务文件的位置
Windows 7
比如
脚本编写的基本概念
《武装突袭2》里拥有两种类型的脚本:
▪函数(Functions)
▪程序(Procedures)
在这篇教程里将会出现很多这两种类型的脚本。函数和程序通过以下语句进行编译:
如果您决定将脚本文件放置到单独的文件夹里,那么以后可以通过"mission.sqm" 文件的相对路径来定位它们,比如:
输入完毕后点击确定(OK)按钮。
在紧挨着这个士兵的地方放置一辆空的悍马(Hmmwv)车,然后将这个任务保存成名为"MyMission" 的任务。
现在,请从先前所介绍过的任务文件位置打开您的任务文件目录,然后打开名为"MyMission.utes" 的文件夹,在这个文件夹中你将会看见一个名为"mission.sqm" 的文件。
在这个文件夹中新建一个文本文件,然后将其重命名为"MyProcedure.sqf",然后用鼠标右键单击并打开这个文件,您可以选择使用Windows的记事本工具或者其他文本编辑工具作为这个文件的默认运行程序。
然后输入以下内容:
保存(快捷键:Ctrl + S)并关闭这个文件。
现在回到《武装突袭2》的编辑器中预览(Preview)这个任务,控制您的角色在周围跑一跑并进入你放置的那辆悍马车,自此期间请注意画面右上角所显示的当前速度(km/h),然后开动车辆。
你会注意到右上角所显示的速度与游戏界面默认显示的车辆速度是一样的,只不过它比默认速度更新的更慢一些,你可以将代码中的sleep 1 改成sleep 0.125 以使得数值更新频率更快一些。
最后退出任务预览。
我的第一个函数(Function)
现在请在您的任务中放置一个Radio Alpha触发器(Trigger),然后在"On Act." 栏中输入以下内容:
点击确定(OK)按钮并保存任务。
现在请回到您的任务文件夹,新建一个名为"init.sqf" 的脚本文件,这个脚本文件是您的任务的初始化文件,并且将会在游戏单位的Initialization(初始化)栏内容加载之后运行。
用和前面一样的方法打开"init.sqf" 脚本文件并且输入以下内容:
保存(快捷键:Ctrl + S)并关闭这个文件。
新建另一个脚本文件并命名为"MyFunction.sqf",并输入以下内容:
保存(快捷键:Ctrl + S)并关闭这个文件。
现在,请再次回到游戏编辑器并且预览这个任务。
利用游戏中的无线电呼叫Radio Alpha然后观察您都说了些什么,然后退出并重新执行任务预览,这次请进入悍马车并再一次呼叫Radio Alpha,您将会立刻向您的当前阵营频道说出您现在是否在一辆载具内。
最后请退出任务预览。
程序(Procedures)
程序按照游戏的执行顺序,通过spawn或者execVM命令来执行。
在游戏单位的Initialization(初始化)栏中的执行方法:
程序无法从游戏单位的Initialization栏中spawn(重生),除非程序在spawn之前被初始化,关于这方面的内容将不涵盖在此教程中。
在init.sqf 初始化脚本文件中的执行方法:
在触发器(Triggers)的onAct, onDeAct 栏中的执行方法:
所有的脚本都需要拥有一个如上方所显示的脚本处理(Script Handle)命令来执行,这些脚本处理命令并不需要是唯一的,除非您打算在后期阶段使用它们,接下来我们就来介绍这一方面。
脚本处理命令能够用来检查一个脚本是否已被编译,比如:
另外,脚本处理命令还能够用来结束脚本。例如如果您想要在10秒之后结束脚本,而不管它现在是否已经执行完毕:
所有的代码段都必须以";" 来关闭,比如:
程序能够被如下代码停止执行:
X 代表需要停止(暂停/休眠)执行脚本的时间(单位:秒),比如:
程序将在脚本最开始的时候被执行。
函数(Functions)
函数按照游戏的执行顺序,通过call命令来执行。
在游戏单位的Initialization(初始化)栏中的执行方法:
函数无法从游戏单位的Initialization栏中直接call(调用),除非函数在call之前被初始化,关于这方面的内容将不涵盖在此教程中。
在init.sqf 初始化脚本文件中的执行方法:
或者
在触发器(Triggers)的condition 栏中的执行方法(必须拥有返回值):
在触发器(Triggers)的onAct, onDeAct 栏中的执行方法:
或者
函数可以(或者不可以)拥有返回值,比如:
这段代码拥有返回值,而
则没有返回值。
所有的代码段都必须以";" 来关闭,除了从函数中返回值的代码段,比如:
函数无法像程序那样被暂停或者休眠。
函数将会暂停脚本的执行,直到函数执行完毕。
变量(Variables)
变量必须通过设置默认值来进行定义和初始化,比如:
或者直接通过别的值来初始化,例如: