介绍一下传奇新冒险中脚本的基本语法和常用函数。

来源: 作者: 点击:
在传奇游戏(以常见的 Legend 引擎为例)的脚本编写里,掌握基本语法和常用函数是开发各种游戏功能的基础。以下为你详细介绍:

### 基本语法

#### 1. 脚本文件结构
传奇脚本文件一般以 `.txt` 为扩展名,通常放置在引擎的 `Envir\Scripts` 目录下。一个完整的脚本文件包含多个脚本块,每个脚本块由标签和代码组成。

#### 2. 标签
标签用于标识脚本的不同部分,以 `[@标签名]` 的形式表示,常见的有 `[@Main]`,它是脚本的主入口点。例如:
```plaintext
[@Main]
#ACT
Msg "欢迎来到传奇世界!"
```

#### 3. 条件判断与动作执行
- **`#IF`**:用于条件判断的起始,后面跟着判断条件。
- **`#ACT`**:当 `#IF` 条件判断为真时,执行 `#ACT` 后面的动作。
- **`#ELSE`**:当 `#IF` 条件判断为假时,执行 `#ELSE` 后面的动作。
- **`#ENDIF`**:结束条件判断块。

示例代码:
```plaintext
[@Main]
#IF
CheckLevel > 10
#ACT
Msg "你的等级超过 10 级,可以进入高级地图。"
#ELSE
Msg "你的等级不足 10 级,无法进入高级地图。"
#ENDIF
```

#### 4. 注释
在脚本中使用 `;` 来添加注释,注释内容不会被引擎执行,仅用于开发者记录和说明代码的用途。例如:
```plaintext
[@Main]
; 这是一个欢迎消息脚本
#ACT
Msg "欢迎来到传奇游戏!"
```

### 常用函数

#### 1. 玩家属性相关函数
- **`CheckLevel`**:检查玩家的等级。
- **用法**:`CheckLevel 等级`,用于判断玩家等级是否等于指定等级;`CheckLevel > 等级` 或 `CheckLevel < 等级` 用于判断玩家等级与指定等级的大小关系。
- **示例**:
```plaintext
#IF
CheckLevel > 20
#ACT
Msg "你已经达到 20 级以上,可以学习新技能。"
```
- **`CheckMoney`**:检查玩家的金币数量。
- **用法**:`CheckMoney 数量`,判断玩家的金币数量是否足够。
- **示例**:
```plaintext
#IF
CheckMoney 5000
#ACT
TakeMoney 5000
Msg "扣除 5000 金币,购买成功。"
```

#### 2. 物品相关函数
- **`GiveItem`**:给予玩家物品。
- **用法**:`GiveItem 物品 ID [数量]`,数量可选,默认为 1。
- **示例**:
```plaintext
#ACT
GiveItem 1001 2 ; 给予玩家 2 个 ID 为 1001 的物品
```
- **`TakeItem`**:从玩家身上拿走物品。
- **用法**:`TakeItem 物品 ID [数量]`,数量可选,默认为 1。
- **示例**:
```plaintext
#IF
CheckItem 1002 3 ; 检查玩家是否有 3 个 ID 为 1002 的物品
#ACT
TakeItem 1002 3
Msg "已拿走 3 个 ID 为 1002 的物品。"
```

#### 3. 地图与传送相关函数
- **`MapMove`**:将玩家传送到指定地图的指定坐标。
- **用法**:`MapMove 地图 ID X 坐标 Y 坐标`
- **示例**:
```plaintext
#ACT
MapMove 1005 320 320 ; 将玩家传送到地图 ID 为 1005 的 320,320 坐标处
```
- **`RandomMapMove`**:将玩家随机传送到当前地图的某个位置。
- **用法**:`RandomMapMove`
- **示例**:
```plaintext
#ACT
RandomMapMove
```

#### 4. 任务相关函数
- **`SetQuest`**:设置任务状态。
- **用法**:`SetQuest 任务名称 任务阶段`
- **示例**:
```plaintext
#ACT
SetQuest "新手任务" 1 ; 将新手任务设置为阶段 1
```
- **`CheckQuest`**:检查任务状态。
- **用法**:`CheckQuest 任务名称 任务阶段`,用于判断任务是否处于指定阶段。
- **示例**:
```plaintext
#IF
CheckQuest "新手任务" 2
#ACT
Msg "你已经完成新手任务的第二阶段。"
```

#### 5. 怪物相关函数
- **`CheckMonsterKilled`**:检查玩家杀死指定怪物的数量。
- **用法**:`CheckMonsterKilled 怪物名称 数量`
- **示例**:
```plaintext
#IF
CheckMonsterKilled "野猪" 10
#ACT
Msg "你已经杀死 10 只野猪,完成任务。"
```