---
title: "自定义脚本"
description: "启停脚本、CLEO_CALL 与共享变量"
---

---
title: 自定义脚本
description: 启停脚本、CLEO_CALL 与共享变量
---

`gta3` · 扩展 `CLEO` · 需 CLEO

写法见 [Lua](/docs/cleo/syntax) / [Redux](/docs/cleo/syntax-redux)。

## 流式加载自定义脚本

<Opcode id="0A92" name="STREAM_CUSTOM_SCRIPT">
加载 SCM 并启动自定义脚本。

```text
0A92 STREAM_CUSTOM_SCRIPT
in: scriptFileName, args...
```

```lua
streamCustomScript("./helper.s", 1)
```

```js
native("STREAM_CUSTOM_SCRIPT", scriptFileName, ...args)
```
</Opcode>

## 结束当前自定义脚本

<Opcode id="0A93" name="TERMINATE_THIS_CUSTOM_SCRIPT">
结束当前自定义脚本。经典别名 `05DC`。

```text
0A93 TERMINATE_THIS_CUSTOM_SCRIPT
// 经典别名 05DC
```

```lua
terminateThisCustomScript()
```

```js
native("TERMINATE_THIS_CUSTOM_SCRIPT")
```
</Opcode>

## 按名结束自定义脚本

<Opcode id="0ABA" name="TERMINATE_ALL_CUSTOM_SCRIPTS_WITH_THIS_NAME">
结束指定名脚本。经典别名 `05DD`。

```text
0ABA TERMINATE_ALL_CUSTOM_SCRIPTS_WITH_THIS_NAME
in: name
// 经典别名 05DD
```

```lua
terminateAllCustomScriptsWithThisName("helper")
```

```js
native("TERMINATE_ALL_CUSTOM_SCRIPTS_WITH_THIS_NAME", name)
```
</Opcode>

## CLEO 调用

<Opcode id="0AB1" name="CLEO_CALL">
调 SCM 子程序。经典别名 `05F5`。

```text
0AB1 CLEO_CALL
in: label, numArgs, args...
// 经典别名 05F5
```

```lua
cleoCall(myLabel, 1, a)
```

```js
native("CLEO_CALL", label, numArgs, ...args)
```
</Opcode>

## CLEO 返回

<Opcode id="0AB2" name="CLEO_RETURN">
从 CALL 返回。经典别名 `05F6`。

```text
0AB2 CLEO_RETURN
in: numRet, retParams...
// 经典别名 05F6
```

```lua
cleoReturn(0)
```

```js
native("CLEO_RETURN", numRet, ...retParams)
```
</Opcode>

## 写共享变量

<Opcode id="0AB3" name="SET_CLEO_SHARED_VAR">
写共享变量。

```text
0AB3 SET_CLEO_SHARED_VAR
in: index, value
```

```lua
setCleoSharedVar(0, 1)
```

```js
native("SET_CLEO_SHARED_VAR", index, value)
```
</Opcode>

## 读共享变量

<Opcode id="0AB4" name="GET_CLEO_SHARED_VAR">
读共享变量。

```text
0AB4 GET_CLEO_SHARED_VAR
in: index
out: result
```

```lua
local v = getCleoSharedVar(0)
```

```js
const result = native("GET_CLEO_SHARED_VAR", index)
```
</Opcode>

## 假则 gosub

<Opcode id="0AA0" name="GOSUB_IF_FALSE">
条件假时 gosub。

```text
0AA0 GOSUB_IF_FALSE
in: label
```

```lua
-- Lua 侧用 if
```

```js
native("GOSUB_IF_FALSE", label)
```
</Opcode>

## 假则 return

<Opcode id="0AA1" name="RETURN_IF_FALSE">
条件假时 return。

```text
0AA1 RETURN_IF_FALSE
```

```lua
-- Lua 侧用 if
```

```js
native("RETURN_IF_FALSE")
```
</Opcode>