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

    QQ登录

    只需一步,快速开始

    查看: 5|回复: 0

    分享一下Hero引擎的脚本语法

    [复制链接]
    avatar
    • 打卡等级:魔龙套勇士
    • 打卡总天数:113
    • 打卡月天数:6
    • 打卡总奖励:13558
    • 最近打卡:2025-08-06 00:37:49

    6381

    主题

    122

    回帖

    7919

    积分

    管理员

    本站站长

    积分
    7919
    online_admin 发表于 昨天 17:10 | 显示全部楼层 |阅读模式
    Hero 引擎作为传奇早期经典引擎,其脚本语法简洁直观,注重基础功能的稳定性,适合复古版本(如 1.76)的简单逻辑触发。以下是其核心脚本语法、常用函数及示例,帮助快速掌握基础用法:
    一、脚本文件与基础结构
    1. 核心脚本文件
    AutoRunQuest.txt:全局触发脚本(每 100ms 执行一次),用于检测玩家状态(等级、地图、物品等)并触发动作。
    QFunction.txt:功能型脚本,通过 NPC 对话、命令(如@触发)调用。
    DeadMonster.txt:怪物死亡时触发的脚本(需在 M2 引擎中开启 “怪物死亡触发”)。
    MapQuest.txt:地图专属脚本(路径:Envir\QuestDiary\地图编号\MapQuest.txt),仅在指定地图生效。
    2. 基础语法结构
    所有脚本均遵循 “条件判断(#IF)+ 执行动作(#ACT)” 的逻辑,无嵌套条件(不支持#IF内再嵌套#IF)。

    ini
    #IF          ; 条件判断:满足以下所有条件才执行#ACT
    条件1
    条件2
    #ACT         ; 执行动作:条件满足时执行的操作
    动作1
    动作2
    #ELSEACT     ; 可选:条件不满足时执行的操作
    动作3
    二、常用条件判断函数(#IF块)
    用于检测玩家状态、环境参数等,返回 “真” 或 “假”。

    函数格式        功能说明        示例
    CHECKLEV [等级]        检查玩家等级是否≥指定值        CHECKLEV 30(等级≥30)
    CHECKMAP [地图编号]        检查玩家是否在指定地图        CHECKMAP D717(在祖玛七层)
    CHECKITEM [物品编号] [数量]        检查玩家是否持有指定物品及数量        CHECKITEM 30 1(持有屠龙 ×1)
    CHECKGOLD [数量]        检查玩家金币是否≥指定值        CHECKGOLD 10000(金币≥1 万)
    MONSTERID [怪物编号]        检查目标是否为指定怪物(用于攻击 / 死亡事件)        MONSTERID 145(目标是祖玛教主)
    HITMON        检查玩家是否正在攻击怪物        -
    DEAD        检查玩家是否死亡        -
    三、常用执行动作函数(#ACT块)
    满足条件后执行的操作,如修改属性、传送、给予物品等。

    函数格式        功能说明        示例
    GIVE [物品编号] [数量]        给予玩家指定物品        GIVE 30 1(给屠龙 ×1)
    TAKE [物品编号] [数量]        扣除玩家指定物品        TAKE 30 1(扣屠龙 ×1)
    GIVEGOLD [数量]        给予玩家金币        GIVEGOLD 10000(给 1 万金币)
    TAKEGOLD [数量]        扣除玩家金币        TAKEGOLD 5000(扣 5 千金币)
    MOVETOMAP [地图编号] [X] [Y]        传送玩家至指定地图坐标        MOVETOMAP S001 50 50(传至 S001 地图 (50,50))
    SENDMSG [颜色] [内容]        向玩家发送消息(颜色:0 - 白色,5 - 红色等)        SENDMSG 7 恭喜获得奖励!(紫色消息)
    SETLEVEL [等级]        强制修改玩家等级        SETLEVEL 40(将等级改为 40 级)
    SETINVINCIBLE [状态]        设置无敌模式(1 = 开启,0 = 关闭)        SETINVINCIBLE 1(开启无敌)
    CALLMONS [怪物编号] [数量]        在玩家周围召唤怪物        CALLMONS 101 3(召唤 3 只祖玛卫士)
    四、特殊功能脚本示例
    1. 新手保护(等级 < 30 级开启无敌)
    ini
    ; 写入AutoRunQuest.txt
    #IF
    CHECKLEV < 30  ; 玩家等级<30级
    #ACT
    SETINVINCIBLE 1  ; 开启无敌
    SENDMSG 7 新手保护:30级前无敌!
    #ELSEACT
    SETINVINCIBLE 0  ; 等级≥30级关闭无敌
    2. 使用道具 “副本卷轴” 传送至副本
    ini
    ; 写入QFunction.txt(通过NPC对话或命令触发)
    #IF
    CHECKITEM 1001 1  ; 检查是否持有“副本卷轴”(编号1001)
    #ACT
    TAKE 1001 1       ; 扣除卷轴
    MOVETOMAP S001 50 50  ; 传送至副本S001
    SENDMSG 6 已进入副本,限时30分钟!
    #ELSEACT
    SENDMSG 5 你没有副本卷轴!
    3. 击杀 BOSS(编号 2001)必掉 “特殊令牌”
    ini
    ; 写入DeadMonster.txt
    #IF
    MONSTERID 2001  ; 被击杀的是BOSS(2001)
    #ACT
    GIVE 200 1      ; 给击杀者“特殊令牌”(编号200)
    SENDMSG 0 玩家%s击杀了变异祖玛教主,获得特殊令牌!  ; 全服公告(%s自动替换为玩家名)
    4. 进入指定地图(如 “泡点地图”)获得经验
    ini
    ; 写入地图专属脚本MapQuest.txt(对应“泡点地图”编号)
    #IF
    CHECKMAP 泡点地图  ; 确认在泡点地图
    #ACT
    ADDEXP 1000       ; 每次触发增加1000经验(因AutoRunQuest每100ms执行,需控制频率)
    SENDMSG 5 泡点中,每秒获得1000经验!
    五、Hero 引擎脚本的局限性
    不支持复杂逻辑:无嵌套条件(#IF内不能再写#IF),无法实现多条件 “与 / 或” 判断(需拆分多个脚本)。
    高级功能缺失:没有定时器(无法延迟执行)、动态属性倍率(如攻击随血量变化)、复杂特效触发(如全屏技能光效)。
    函数参数简单:多数函数仅支持 1-2 个参数,例如CALLMONS无法指定召唤坐标(只能在玩家周围)。
    六、实用技巧
    控制触发频率:因AutoRunQuest.txt每 100ms 执行一次,高频操作(如泡点加经验)需用RANDOM限制,例如:
    ini
    #IF
    RANDOM 10  ; 10%概率触发(约1秒1次)
    #ACT
    ADDEXP 1000

    利用 NPC 触发:通过 NPC 对话调用脚本(在NpcGen.txt中绑定 NPC 编号与脚本),避免全局脚本冗余。
    配合配置文件:特殊属性(如怪物免疫)需在MapAttr.txt中配置,脚本仅用于提示(如 “该怪物免疫魔法”)。

    Hero 引擎脚本适合实现复古版本的基础玩法(如新手保护、简单任务、固定掉落),虽功能有限,但稳定性高、资源消耗低,是 1.76 等经典版本的首选。如需复杂玩法(如多阶段 BOSS、动态特效),建议搭配第三方插件或升级至 GOM/GEE 引擎。

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

    本版积分规则

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

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