设为首页收藏本站
  • 官方微信
    lmkj_wx 微信公众号 添加方式:
    1:扫描左侧二维码
  • 手机访问
    lmkj_sj
  •  找回密码
     立即注册

    QQ登录

    只需一步,快速开始

    查看: 14|回复: 0

    传奇游戏脚本命令的用法以及变量的详细解释

    [复制链接]
    avatar
    • 打卡等级:魔龙套勇士
    • 打卡总天数:130
    • 打卡月天数:23
    • 打卡总奖励:14868
    • 最近打卡:2025-08-23 00:38:01

    7084

    主题

    150

    回帖

    8650

    积分

    管理员

    本站站长

    积分
    8650
    online_admin 发表于 2025-7-30 18:31:52 | 显示全部楼层 |阅读模式
    传奇游戏脚本(如 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>),快速定位脚本错误。

    通过灵活组合命令和变量,可实现复杂的游戏逻辑,如剧情任务、活动副本、装备强化等核心玩法。

    您需要登录后才可以回帖 登录 | 立即注册 qq_login

    本版积分规则

    QQArchiver 手机版 小黑屋 39传奇素材网 ( 蜀ICP备2022016510号-3 )

    快速回复 快速发帖 返回顶部 返回列表