在传奇脚本开发中,变量和函数是实现各种复杂逻辑和功能的重要工具。不同的传奇引擎(如DBC、GEE等)可能会有一些细微的差异,但以下是一些常见的变量和函数。
### 常用变量
#### 玩家相关变量
- **人物等级变量**
- **格式**:`$LEVEL`
- **作用**:用于获取玩家当前的等级。在脚本编写中,可根据玩家等级来决定是否给予特定任务、奖励或开放特定地图等。例如,在NPC对话脚本中,可通过判断`$LEVEL`的值来决定是否让玩家接受高级任务。
```plaintext
#IF
$LEVEL > 50
#ACT
SENDMSG 0 "您的等级已达到50级,可以挑战高级副本。"
```
- **人物经验变量**
- **格式**:`$EXP`
- **作用**:表示玩家当前拥有的经验值。可用于经验相关的计算和判断,比如判断玩家是否达到升级所需经验,或者根据经验值给予额外奖励。
```plaintext
#IF
$EXP > 10000
#ACT
GIVE 双倍经验符 1
```
- **人物金币变量**
- **格式**:`$GOLD`
- **作用**:获取玩家当前拥有的金币数量。在涉及交易、购买物品等场景中经常使用,通过判断`$GOLD`的值来决定交易是否能够成功。
```plaintext
#IF
$GOLD >= 500
#ACT
TAKE 金币 500
GIVE 药水 5
```
#### 物品相关变量
- **物品数量变量**
- **格式**:`$ITEMCOUNT(物品名称)`
- **作用**:获取玩家身上指定物品的数量。在任务系统中,可用于判断玩家是否拥有足够数量的任务物品。
```plaintext
#IF
$ITEMCOUNT(魔法药水) >= 3
#ACT
TAKE 魔法药水 3
GIVE 任务奖励道具 1
```
### 常用函数
#### 条件判断函数
- **`CHECKLEVEL`函数**
- **格式**:`CHECKLEVEL 比较符号 等级值`
- **作用**:检查玩家的等级是否满足指定条件。比较符号可以是`>`(大于)、`<`(小于)、`=`(等于)等。常用于任务、活动等的条件判断。
```plaintext
#IF
CHECKLEVEL > 30
#ACT
SENDMSG 0 "您的等级超过30级,可以进入此地图。"
```
- **`HASITEM`函数**
- **格式**:`HASITEM 物品名称`
- **作用**:检查玩家身上是否拥有指定的物品。在交易、任务领取等场景中经常使用。
```plaintext
#IF
HASITEM 屠龙刀
#ACT
SENDMSG 0 "您拥有屠龙刀,可以挑战终极BOSS。"
```
#### 物品操作函数
- **`TAKE`函数**
- **格式**:`TAKE 物品名称 数量`
- **作用**:从玩家身上拿走指定数量的物品。常用于交易、任务完成扣除物品等场景。
```plaintext
#IF
HASITEM 矿石 5
#ACT
TAKE 矿石 5
GIVE 强化石 1
```
- **`GIVE`函数**
- **格式**:`GIVE 物品名称 数量`
- **作用**:给予玩家指定数量的物品。在任务奖励、活动奖励等场景中广泛应用。
```plaintext
#IF
CHECKLEVEL = 20
#ACT
GIVE 新手装备套装 1
```
#### 地图与传送函数
- **`MAPMOVE`函数**
- **格式**:`MAPMOVE 地图名称 X坐标 Y坐标`
- **作用**:将玩家传送到指定地图的指定坐标处。常用于任务引导、活动传送等场景。
```plaintext
#IF
#ACT
MAPMOVE 盟重省 330 330
```
- **`CHECKMAP`函数**
- **格式**:`CHECKMAP 地图名称`
- **作用**:检查玩家是否在指定的地图上。可用于限制某些操作只能在特定地图执行。
```plaintext
#IF
CHECKMAP 比奇城
#ACT
SENDMSG 0 "您现在位于比奇城。"
```
#### 消息发送函数
- **`SENDMSG`函数**
- **格式**:`SENDMSG 颜色代码 消息内容`
- **作用**:向玩家发送指定颜色的消息。颜色代码如 0 表示白色,1 表示黄色等。用于NPC与玩家的交互提示。
```plaintext
#IF
#ACT
SENDMSG 1 "欢迎来到传奇世界!"
```

