在传奇任务脚本编写里,变量起着关键作用,它能让脚本实现动态交互和复杂逻辑。以下为你详细介绍传奇任务脚本中变量的使用方法:
### 变量类型及定义
#### 1. 全局变量
全局变量在整个脚本系统中都能被访问和使用,通常用于存储一些通用的信息,如服务器的状态、全局活动的参数等。在Gom引擎里,全局变量一般通过特定的函数来设置和读取。
- **设置全局变量**:使用 `SetGlobalVar` 函数,例如 `SetGlobalVar 1 100`,这里把全局变量1的值设为100。
- **读取全局变量**:用 `GetGlobalVar` 函数,像 `GetGlobalVar 1` 就可以获取全局变量1的值。
#### 2. 任务变量
任务变量主要用于单个任务脚本内部,记录任务的完成状态、进度等信息。
- **设置任务变量**:使用 `SetQuestVar` 函数,比如 `SetQuestVar 1 1`,表示将任务变量1的值设为1,可用来标记任务的某个阶段已完成。
- **读取任务变量**:通过 `GetQuestVar` 函数,例如 `GetQuestVar 1` 能获取任务变量1的值。
#### 3. 玩家变量
玩家变量与特定玩家相关,可存储玩家的个性化信息,如玩家的任务进度、特殊标记等。
- **设置玩家变量**:使用 `SetUserVar` 函数,例如 `SetUserVar <$USERNAME> 1 5`,给当前玩家的变量1赋值为5。
- **读取玩家变量**:用 `GetUserVar` 函数,如 `GetUserVar <$USERNAME> 1` 能获取当前玩家变量1的值。
### 变量在条件判断中的应用
#### 1. 基于变量值的条件判断
在 `#IF` 标签下,可以根据变量的值进行条件判断,决定后续的脚本执行流程。
```plaintext
#IF
GetQuestVar 1 == 1 ; 判断任务变量1的值是否为1
#ACT
SendMsg 0 任务的第一阶段已完成!
Goto @nextStep
#ELSE
SendMsg 0 任务的第一阶段还未完成,请继续努力。
Goto @main
```
#### 2. 结合其他条件和变量的判断
可以将变量与其他条件(如玩家等级、物品数量等)结合起来进行更复杂的判断。
```plaintext
#IF
GetUserVar <$USERNAME> 1 == 1 ; 检查玩家变量1的值是否为1
CheckLevelGreater 20 ; 检查玩家等级是否大于20
CheckItem 1001 1 ; 检查玩家是否拥有物品ID为1001的物品
#ACT
SendMsg 0 你满足了所有条件,可以开启隐藏任务!
Goto @hiddenQuest
#ELSE
SendMsg 0 你还未满足开启隐藏任务的条件。
Goto @main
```
### 变量在动作指令中的应用
#### 1. 变量值作为动作参数
在执行动作指令时,可以将变量的值作为参数传递,实现动态的操作。
```plaintext
#ACT
SetQuestVar 1 5 ; 设置任务变量1的值为5
GiveExp <$QUESTVAR(1)> * 100 ; 给予玩家的经验值为任务变量1的值乘以100
```
#### 2. 变量的递增和递减
使用 `AddQuestVar` 和 `SubQuestVar` 函数可以对任务变量进行递增和递减操作。
```plaintext
#ACT
AddQuestVar 1 1 ; 将任务变量1的值加1
SubQuestVar 2 2 ; 将任务变量2的值减2
```
### 变量在任务流程控制中的应用
#### 1. 标记任务阶段
通过设置任务变量的值来标记任务的不同阶段,实现任务的流程控制。
```plaintext
[@main]
#IF
#ACT
SendMsg 0 任务开始,第一步:收集5个草药。
Goto @collectHerbs
[@collectHerbs]
#IF
CheckItemCount 1002 5
#ACT
SendMsg 0 你已收集够5个草药,第一步完成!
SetQuestVar 1 1 ; 标记任务的第一步已完成
Goto @killMonsters
#ELSE
SendMsg 0 你还需要收集 [5 - <$ITEMCOUNT(1002)>] 个草药。
Goto @collectHerbs
[@killMonsters]
#IF
GetQuestVar 1 == 1 ; 检查任务的第一步是否完成
CheckKillMonCount 野狼 8
#ACT
SendMsg 0 你已杀死8只野狼,第二步完成!
SetQuestVar 2 1 ; 标记任务的第二步已完成
Goto @end
#ELSE
SendMsg 0 你还需要杀死 [8 - <$KILLMONCOUNT(野狼)>] 只野狼。
Goto @killMonsters
[@end]
SendMsg 0 任务全部完成,恭喜你!
```
#### 2. 循环任务中的变量应用
在循环任务中,变量可以用来控制任务的难度递增或奖励变化。
```plaintext
[@main]
#IF
#ACT
SendMsg 0 这是一个循环杀怪任务,当前需要杀死 <$QUESTVAR(1)> 只僵尸。
Goto @killing
[@killing]
#IF
CheckKillMonCount 僵尸 <$QUESTVAR(1)>
#ACT
SendMsg 0 你完成了本次杀怪任务!
GiveExp <$QUESTVAR(1)> * 100
GiveMoney <$QUESTVAR(1)> * 50
AddQuestVar 1 2 ; 下次杀怪数量增加2只
SendMsg 0 你可以再次接受任务,下次需要杀死 <$QUESTVAR(1)> 只僵尸。
Goto @main
#ELSE
SendMsg 0 你还需杀死 [<$QUESTVAR(1)> - <$KILLMONCOUNT(僵尸)>] 只僵尸。
Goto @killing
```
传奇任务脚本编写中的变量如何使用?
来源:
作者:
点击:

