当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

热血传奇热血传奇Mir2与GOM引擎NPC任务脚本制作入门脚本语法Merchant注册与实例详解

热度:
传奇脚本(主要指NPC对话脚本、任务脚本、触发脚本)是纯文本.txt文件,用记事本或Notepad++编写,按引擎规范放在服务端对应目录即可生效。以最常用的Hero引擎/GOM引擎为例:

脚本文件分类与存放路径

服务端通常在D:\MirServer\Mir200\Envir\
•NPC功能脚本:Market_Def\目录,每个可对话NPC一个.txt文件,文件名须与Merchant.txt注册名对应。

-任务脚本:MapQuest_def\目录(QuestDiary子目录按任务分类),用于定时任务、杀怪任务。
•登录/全局触发脚本:MapQuest_def\QManage.txt(上线触发)、QFunction-0.txt(物品使用/死亡/升级等全局事件)。

基础语法结构

脚本以标签[@标签名]分段,[@main]是NPC默认入口。核心关键字:
•[@标签]—程序跳转锚点,点击选项或GOTO跳转至此。

•#IF—条件判断开始,后跟检测命令(等级、金币、物品、职业等)。

-#ACT—#IF条件满足时执行的动作(给物品、扣金币、传送等)。
•#ELSEACT/#ELSESAY—条件不满足时执行或显示内容。

•#SAY—显示对玩家说的话,\换行,<选项@标签>生成可点击链接。

-BREAK—终止当前段执行,防止穿透到下一段。

常用检测命令:CheckLevel数字(等级)、CheckGold数字(金币)、CheckItem物品名数量(背包有某物)、CheckJobWarrior/Wizard/Taoist(检测职业)、IsOnMap地图编号(在某地图)。

常用动作命令:GIVE物品名数量(给)、TAKE物品名数量(扣)、TAKEMONEY数字(扣金币)、MAPMOVE地图号XY(传送到坐标)、SENDMSG6文字(系统提示)、SETHUMANVAR变量值(设变量)。

注册NPC(Merchant.txt)

在Envir\Merchant.txt添加一行注册NPC:

NPC显示名地图号XYNPC名称(与脚本文件名前缀一致)标志外观码其他参数

例:在新手村(地图0)坐标330268放一个名为"福利使者"的NPC,脚本文件叫"福利使者-0.txt"

福利使者0330268福利使者-00880000

标志填0为普通对话NPC,外观码对应NPC模型ID。改完保存,服务端控制台输@reloadnpc刷新或重启引擎。

实战:新手领装备NPC脚本示例

在Market_Def\新建"福利使者-0.txt",内容:

[@main]
#SAY
欢迎来到服务器!选择你的职业领取起步装备:\
\
<战士领屠龙@warrior>\
<法师领骨玉@mage>\
<道士领逍遥扇@taoist>\
<离开@exit>

[@warrior]
#IF
CHECKJOBWarrior
#ACT
GIVE屠龙1
GIVE战神盔甲(男)1
SENDMSG6战士装备已发放!
BREAK
#ELSEACT
SENDMSG6只有战士才能领这套!

[@mage]
#IF
CHECKJOBWizard
#ACT
GIVE骨玉权杖1
GIVE法神披风1
SENDMSG6法师装备已发放!
BREAK

[@taoist]
#IF
CHECKJOBTaoist
#ACT
GIVE逍遥扇1
GIVE天尊道袍(男)1
SENDMSG6道士装备已发放!
BREAK

保存时注意编码选ANSI避免中文乱码,文件名与Merchant.txt中注册的一致。

任务脚本(杀怪交任务)简例

在MapQuest.txt登记任务号,在QuestDiary\某分类\任务名.txt写:

[@杀鹿任务]
#IF
CheckItem鹿肉1
#ACT
TAKE鹿肉1
GIVE金币10000
GIVE沃玛戒指1
SENDMSG6任务完成,奖励已发!
BREAK
#ELSESAY
你还没打到鹿肉,去比奇外围杀鹿吧。

配合MonItems数据库让鹿掉鹿肉即可形成完整循环。

新手注意

•所有脚本文件必须ANSI编码保存,UTF-8会导致中文显示乱码或NPC不读脚本。

•标签名区分大小写,[@main]和[@Main]在某些引擎会被视为不同。

-修改脚本后需@reloadnpc或重启M2方可生效。
•复杂功能(变量、计时器、泡点、装备回收)在基础结构上叠加#IFCHECK[变量]、INCU01、SetOnTimer等命令实现。

掌握以上结构后可以照葫芦画瓢改现成脚本,大部分版本包里自带大量现成NPC脚本可参考模仿。
[顶部]