- 打卡等级:魔龙套勇士
- 打卡总天数:113
- 打卡月天数:6
- 打卡总奖励:13558
- 最近打卡:2025-08-06 00:37:49
管理员
本站站长
- 积分
- 7919
|
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 引擎。
|
|