传奇游戏脚本命令的用法以及变量的详细解释
传奇游戏脚本(如 HERO、GEE、GOM 等引擎)是控制游戏逻辑的核心,通过命令和变量实现 NPC 对话、任务系统、怪物行为、物品交互等功能。以下是常用脚本命令用法及变量详细解释,以主流引擎通用语法为例:一、基础脚本命令(按功能分类)
1. 对话与交互命令
用于 NPC 与玩家的文字交互,是脚本最基础的功能。
命令 语法格式 功能说明 示例
@Say @Say 文字内容 NPC 发送对话文字(支持换行符\n) @Say 欢迎来到比奇城!\n需要帮助吗?
@Option @Option 选项文字 [跳转标签] 显示可点击的选项,点击后跳转到指定标签 @Option 我要接任务 @Task
@Close @Close 关闭对话窗口 @Close
@SendMsg @SendMsg 颜色代码 文字 向玩家发送系统提示(颜色代码:1 - 白,2 - 绿等) @SendMsg 2 你获得了100金币!
2. 物品与道具操作
控制物品的给予、删除、检查等。
命令 语法格式 功能说明 示例
@Give @Give 物品名称 / ID 数量 给玩家物品(支持物品名称或数据库 ID) @Give 金币 1000 或 @Give 1 10(1 为金币 ID)
@Take @Take 物品名称 / ID 数量 从玩家背包删除物品 @Take 疗伤药 5
@CheckItem @CheckItem 物品名称 / ID 数量 检查玩家是否有指定物品(返回布尔值) #IF CheckItem 裁决之杖 1(条件判断中使用)
@GemUp @GemUp 装备位置 宝石数量 装备强化(位置:0 - 武器,1 - 头盔等) @GemUp 0 3(用 3 颗宝石强化武器)
3. 任务系统命令
实现任务接取、进度更新、完成奖励等逻辑。
命令 语法格式 功能说明 示例
@AcceptTask @AcceptTask 任务 ID 玩家接取指定 ID 的任务 @AcceptTask 101(接取 ID 为 101 的任务)
@FinishTask @FinishTask 任务 ID 玩家完成指定任务(需先接取) @FinishTask 101
@SetTaskVar @SetTaskVar 任务 ID 变量名 值 设置任务变量(记录进度,如杀怪数量) @SetTaskVar 101 KillCount 5(任务 101 的杀怪数设为 5)
@GetTaskVar @GetTaskVar 任务 ID 变量名 获取任务变量值(用于条件判断) #IF GetTaskVar 101 KillCount >= 10
4. 传送与地图命令
控制玩家移动、地图切换。
命令 语法格式 功能说明 示例
@MapMove @MapMove 地图编号 X 坐标 Y 坐标 传送玩家到指定地图的坐标 @MapMove 0 330 340(传送到比奇城 330,340)
@RandomMove @RandomMove 地图编号 范围 X 范围 Y 在指定地图随机传送(范围内) @RandomMove 1 100 200(在盟重 100-200 坐标间随机传)
@BackMap @BackMap 传送玩家回上次地图 @BackMap
5. 战斗与状态命令
控制玩家属性、怪物行为、战斗状态。
命令 语法格式 功能说明 示例
@ChangeLevel @ChangeLevel 等级变化值 增加 / 减少玩家等级(正数加,负数减) @ChangeLevel 5(升 5 级)
@ChangeExp @ChangeExp 经验值 增加玩家经验 @ChangeExp 10000
@Monster @Monster 怪物名称 数量 X Y 地图 在指定位置刷出怪物 @Monster 沃玛卫士 3 320 330 0(在比奇刷 3 只沃玛卫士)
@KillMonster @KillMonster 怪物名称 数量 检查玩家是否杀死指定数量的怪物 #IF KillMonster 骷髅精灵 5
二、变量系统详解(按作用域分类)
变量用于存储临时数据(如任务进度、玩家状态、全局计数等),不同变量的作用域(有效范围)不同。
1. 玩家变量(仅对单个玩家有效)
存储玩家个人数据,如等级、背包物品、任务进度等,引擎内置了大量玩家变量,也支持自定义。
变量类型 格式 / 示例 说明
内置玩家变量 <USERNAME> 玩家角色名
<USERLEVEL> 玩家当前等级
<USERGOLD> 玩家当前金币数量
<USERPKPOINT> 玩家 PK 值
自定义玩家变量 <USER 变量名> 需用@SetVar设置,仅当前玩家可见
示例:@SetVar USER TaskProgress 3(设置玩家的任务进度为 3)
2. 全局变量(对全服所有玩家有效)
存储全服共享的数据,如活动开启状态、全服杀怪总数等,所有玩家和 NPC 都能访问。
变量类型 格式 / 示例 说明
内置全局变量 <SERVERNAME> 服务器名称
<ONLINECOUNT> 当前在线人数
自定义全局变量 <GLOBAL 变量名> 需用@SetVar设置,全服可见
示例:@SetVar GLOBAL EventOpen 1(设置活动开启状态为 1,1 = 开启,0 = 关闭)
3. 任务变量(绑定任务 ID,仅对任务有效)
用于记录单个任务的进度(如杀怪数量、物品收集状态),作用域为 “玩家 + 任务 ID”。
格式示例 说明
<TASK 任务ID 变量名> 需用@SetTaskVar设置,仅对应任务有效
示例:<TASK 101 KillCount> 任务 101 的 “杀怪数量” 变量
4. 临时变量(仅在当前脚本段有效)
用于脚本内部临时计算,脚本执行完毕后失效,无需提前定义。
格式示例 说明
<TEMP 变量名> 仅在当前 NPC 脚本或命令块中有效
示例:@SetVar TEMP TempNum 10 临时存储数字 10,用于后续计算
5. 怪物 / 物品变量(绑定实体)
用于记录特定怪物或物品的状态(如怪物血量、物品是否被拾取)。
格式示例 说明
<MONSTER 怪物ID HP> 怪物当前血量(ID 为刷怪时的唯一标识)
<ITEM 物品ID 数量> 物品剩余数量(ID 为物品生成时的标识)
三、脚本逻辑控制(条件与循环)
脚本通过#IF(条件)和#ACT(执行)实现逻辑判断,结合变量使用。
基础语法结构:
text
#IF
条件1 (如:CheckItem 疗伤药 1)
条件2 (如:USERLEVEL >= 30)
#ACT
执行命令1 (如:@Take 疗伤药 1)
执行命令2 (如:@Give 金币 500)
#ELSE
执行命令3 (条件不满足时执行)
示例:简单任务脚本
text
// NPC:比奇老兵(对话脚本)
@Say 你能帮我清除5只骷髅怪吗?\n完成后我会奖励你1000金币!
@Option 接受任务 @Accept
@Option 拒绝 @Close
[@Accept]
#IF
CheckTask 101 == 0 (检查是否未接任务101)
#ACT
@AcceptTask 101 (接取任务)
@SetTaskVar 101 KillCount 0 (初始化杀怪数为0)
@SendMsg 2 任务已接取!去杀死5只骷髅怪吧!
#ELSE
@SendMsg 1 你已经接取过这个任务了!
[@Finish]
#IF
GetTaskVar 101 KillCount >=5 (检查杀怪数是否达标)
#ACT
@FinishTask 101 (完成任务)
@Give 金币 1000
@SendMsg 2 任务完成!获得1000金币奖励!
#ELSE
@SendMsg 1 还需要杀死更多骷髅怪才能完成任务!
四、注意事项
引擎差异:不同引擎(如 HERO vs GEE)的命令和变量格式可能略有差异,例如 GEE 支持<PLAYERVAR>替代<USER>,需参考对应引擎的官方文档。
变量命名:自定义变量名建议用英文 / 数字,避免特殊字符,且区分大小写(部分引擎)。
性能优化:全局变量频繁读写可能影响服务器性能,建议减少不必要的全局变量使用。
调试技巧:通过@SendMsg输出变量值(如@SendMsg 2 当前杀怪数:<TASK 101 KillCount>),快速定位脚本错误。
通过灵活组合命令和变量,可实现复杂的游戏逻辑,如剧情任务、活动副本、装备强化等核心玩法。
页:
[1]