脚本


脚本本质上是你自己编写的函数,作为简短的代码片段,它们可以解析表达式、返回值或语言任何允许的其他内容。基本上,如果你的代码块在多个位置或物体中使用,那写在在脚本中可能会更好,因为它意味着你可以在需要时更改它,并且每个调用脚本的物体都会 "获得" 更改。从组织的角度来看,它们也非常方便,即使它们持有的代码只被一个物体调用一次,因为它允许你将大型代码块分解为更容易管理的逻辑点 “块”。

创建脚本时,你选择传入其中的值叫做 参数,并且你可以要访问这些参数 - 无论是使用脚本操作,还是从一个程序或其他脚本中,作为函数调用这个脚本都可以。这些参数存储在 内置 变量:

argument0argument1,...等等... 直至 argument15

因此,当从代码调用时可以使用参数变量,使用时最多可以有 16 个参数传递给脚本,作为脚本的变量,分别是 argument0 ... 15,你 必须确保脚本使用所有提供的参数(译者注:括号中提供了多少参数,脚本中就必须使用多少参数)。比如你有一个脚本需要两个参数,而你只是提供了一个参数,这样就会报错。同时,提供的参数数量超过需要的也会报错。

但是,你可以使用以下命令为脚本提供可变数量的参数:内置参数数组(argument array),在使用此数组时, 再最多限制为 16 个参数,可以根据需要使用多个参数(尽管如此,你必须确保在脚本中引用所有参数):

argument[0 ... max_num]

将可变数量的参数作为包含数多值的数组传递时,可以使用以下函数:

这可用于找出已传递的参数数量,并使脚本仅使用提供的参数(译者注:一般在循环中使用)。

注意: 调用脚本时,不能混合使用两种类型的参数变量。你必须使用 要么argument0 ... 15要么 是 argument[n]。

脚本还可以返回一个值,以便可以在表达式中使用它们。返回值使用 return语句:

return <表达式>

应该指出的是 脚本的执行在 return 语句处结束,它意味着在 return 之后的任何代码都 不会运行。这是一个名为 “scr_sqr” 的简短示例脚本,它计算传递给它的值的平方,并且它包含错误捕获,以防它传递的参数不是实数:

{
if !is_real(argument0) // 如果不是实数
   {
   return 0; // 在这里跳出
   }
else
   {
   return (argument0 * argument0); // 返回正常的平方值
   }
}

在一个代码块中调用脚本就像调用函数一样 - 使用脚本的名字,括号内填写参数的值。所以,上面的脚本这样使用:

if keyboard_check_pressed(vk_enter) // 检测回车键
   {
   val = scr_sqr(amount); // 传递变量 amount,返回值赋值给 val
   }

值得注意的是,在编写自己的脚本时,可以添加特定的 JSDoc 样式注释,以便在代码中使用时,这些脚本会在自动补全时(auto-complete)显示它们的参数和其它详细信息。你可以从 JSDoc 脚本注释 部分获取更多信息。 另请注意,在代码编辑器中键入脚本时,可以在脚本名称上单击 或使用鼠标中键 打开它直接进行编辑。