在传奇Gom引擎中,`QuestDiary` 文件夹下的任务脚本是实现游戏丰富任务系统的关键,以下将详细介绍其编写方法。
### 1. 脚本基本结构与标签
#### 1.1 基本结构
一个任务脚本通常由多个标签块组成,每个标签块以 `[@标签名]` 开头,用于定义不同的任务阶段或功能。例如:
```plaintext
[@main]
#IF
#ACT
Goto @step1
[@step1]
#IF
#ACT
SendMsg 0 你进入了第一步!
```
在这个例子中,`[@main]` 和 `[@step1]` 就是不同的标签块,分别代表任务的起始点和第一步。
#### 1.2 常用标签
- **`#IF`**:用于条件判断,后面可跟各种条件函数,如 `CheckLevelGreater`(检查玩家等级是否大于某个值)、`CheckItem`(检查玩家是否拥有某个物品)等。
- **`#ACT`**:当 `#IF` 条件判断为真时,执行 `#ACT` 下面的动作指令。
- **`#ELSE`**:当 `#IF` 条件判断为假时,执行 `#ELSE` 下面的动作指令。
### 2. 条件判断函数及应用
#### 2.1 玩家属性相关
- **`CheckLevelGreater [等级]`**:检查玩家等级是否大于指定等级。例如:
```plaintext
#IF
CheckLevelGreater 20
#ACT
SendMsg 0 你的等级已经超过20级,可以接受此任务!
```
- **`CheckMoney [金额]`**:检查玩家是否拥有指定数量的金币。例如:
```plaintext
#IF
CheckMoney 5000
#ACT
TakeMoney 5000
GiveItem 1001 1
```
#### 2.2 物品相关
- **`CheckItem [物品ID] [数量]`**:检查玩家是否拥有指定数量的某个物品。例如:
```plaintext
#IF
CheckItem 1002 3
#ACT
TakeItem 1002 3
GiveExp 1000
```
- **`CheckItemCount [物品ID] [比较符号] [数量]`**:支持更灵活的物品数量比较,比较符号可以是 `>`、`<`、`>=`、`<=`、`=`。例如:
```plaintext
#IF
CheckItemCount 1003 >= 5
#ACT
SendMsg 0 你拥有足够的物品ID为1003的物品!
```
#### 2.3 杀怪相关
- **`CheckKillMonCount [怪物名称] [数量]`**:检查玩家是否杀死了指定数量的某个怪物。例如:
```plaintext
#IF
CheckKillMonCount 僵尸 10
#ACT
SendMsg 0 你已经杀死了10只僵尸,任务完成!
GiveItem 1004 1
```
### 3. 动作指令及应用
#### 3.1 消息发送
- **`SendMsg [消息类型] [消息内容]`**:向玩家发送消息,消息类型 `0` 表示普通消息。例如:
```plaintext
#ACT
SendMsg 0 欢迎来到这个任务!
```
#### 3.2 物品操作
- **`GiveItem [物品ID] [数量]`**:给予玩家指定数量的某个物品。例如:
```plaintext
#ACT
GiveItem 1005 2
```
- **`TakeItem [物品ID] [数量]`**:扣除玩家指定数量的某个物品。例如:
```plaintext
#ACT
TakeItem 1006 1
```
#### 3.3 经验与金币操作
- **`GiveExp [经验值]`**:给予玩家指定数量的经验值。例如:
```plaintext
#ACT
GiveExp 2000
```
- **`GiveMoney [金额]`**:给予玩家指定数量的金币。例如:
```plaintext
#ACT
GiveMoney 3000
```
#### 3.4 跳转与任务流程控制
- **`Goto [标签名]`**:跳转到指定的标签块继续执行任务脚本。例如:
```plaintext
#ACT
Goto @nextStep
```
- **`GotoQuestDiary [脚本文件名] [标签名]`**:跳转到另一个任务脚本的指定标签块。例如:
```plaintext
#ACT
GotoQuestDiary AnotherQuest.txt @start
```
### 4. 完整任务脚本示例
以下是一个完整的收集物品任务脚本示例:
```plaintext
[@main]
#IF
#ACT
SendMsg 0 你接到了一个收集任务,请收集5个[物品名称]。
Goto @collecting
[@collecting]
#IF
CheckItemCount 1007 >= 5
#ACT
SendMsg 0 你已经收集够了5个[物品名称],任务完成!
TakeItem 1007 5
GiveExp 3000
GiveMoney 2000
GiveItem 1008 1
Goto @end
#ELSE
SendMsg 0 你还需要收集 [5 - <$ITEMCOUNT(1007)>] 个[物品名称]。
Goto @collecting
[@end]
SendMsg 0 感谢你的参与,任务结束!
```
### 5. 注意事项
- **脚本语法正确性**:编写脚本时要严格遵循Gom引擎的脚本语法,注意标签的大小写和指令的参数顺序。
- **逻辑完整性**:确保任务脚本的逻辑完整,避免出现死循环或逻辑漏洞,影响玩家的任务体验。
- **兼容性**:不同版本的Gom引擎可能对脚本语法和函数有细微差异,编写脚本时要考虑引擎的兼容性。
详细介绍一下传奇Gom引擎中QuestDiary文件夹下的任务脚本编写方法
来源:
作者:
点击:

