脚本执行由引擎内核驱动,其核心流程是“触发-检测-动作-反馈”。玩家行为(如点击NPC、拾取物品、达到等级)触发预设的脚本代码,引擎即时解析并执行命令,最终在客户端呈现相应结果。
一、脚本触发与执行机制
1.基础触发方式
•NPC对话:玩家点击NPC,引擎读取Merchant.txt找到该NPC对应的脚本文件(如“新手向导-3.txt”),并执行脚本中[@Main]标签后的代码。
•地图事件:进入特定地图(地图号、坐标)触发。在MapEvent.txt中配置,如D00110101002@进入副本,表示玩家踏入D001地图(1010)坐标时,立即执行Q-Function.txt中的[@进入副本]段落。
•拾取/使用物品:在Q-Function.txt中定义,如拾取物品触发:[@PickUpItem];双击物品触发:[@StdModeFuncXX](XX为物品数据库的AniCount字段值)。
2.定时触发(Robot脚本)
在Mir200\Envir\Robot.txt中配置,由引擎定时器自动执行。
•格式:#AutoRunNPCRUNONDAY20:00@行会战表示每日20:00执行Robot_def文件夹下的[@行会战]脚本。
•间隔:RUNONMIN5表示每5分钟执行一次对应标签。
3.登录/升级触发
在QManage.txt中预置,引擎在玩家登录或等级提升时自动调用。
•登录触发:[@Login]段落内的命令在角色进入游戏时立即执行,常用于发放签到、检测封号。
•升级触发:[@PlayLevelUp]段落内的命令在角色等级提升时执行,常用于奖励属性点。
二、脚本执行流程详解(以NPC任务为例)
1.引擎解析步骤
1.玩家点击“任务使者”NPC。
2.引擎在Merchant.txt找到该NPC绑定脚本“任务使者-3.txt”。
3.读取该文件,定位到[@Main]标签,开始逐行解析。
4.遇到#IF条件,则检测玩家背包、等级、变量。
5.条件满足,执行#ACT后语句(给予物品、传送、扣元宝)。
6.条件不满足,执行#ELSEACT后语句(提示信息)。
7.脚本执行完毕,返回结果到客户端界面。
2.实例:每日奖励NPC
脚本文件任务使者-3.txt内容如下:
[@Main]
#IF
CHECKVARHUMAN今日奖励=1
#ACT
MESSAGEBOX今日奖励已领取!
#ELSEACT
GIVE金币1000000
CALCVARHUMAN今日奖励=1
SAVEVARHUMAN今日奖励..\QuestDiary\变量文件.txt
MESSAGEBOX100万金币已发放!
三、脚本加载与重载命令
脚本修改后需通知引擎重新加载,无需重启服务端。
1.管理重载命令
在M2Server(引擎控制台)输入以下命令:
•@ReloadNpc:重载所有NPC脚本,立即生效。
•@ReloadRobot:重载机器人脚本(Robot.txt及Robot_def文件夹内脚本)。
•@ReloadManage:重载登录脚本(QManage.txt)。
•@ReloadMonItems:重载所有怪物爆率文件。
2.变量与文件重载
•若脚本中调用了外部变量文件(如上例的“变量文件.txt”),修改后需在游戏内或M2输入@ReloadVar重载变量。
•修改Merchant.txt(NPC配置文件)后,需重启引擎或使用部分引擎的@ReloadMerchant命令。
四、常见执行失败排查
•脚本无任何反应:检查脚本文件名与Merchant.txt中配置是否一致;标签[@Main]是否拼写错误。
•条件满足却不执行:检查命令格式,确认#IF与#ACT严格配对,中间无空行,变量名称与重载文件路径正确。
•引擎报“scripterror”:脚本中存在不支持的命令、使用了全角标点、或变量未初始化。用Notepad++打开,开启“显示所有字符”检查。
•定时脚本不触发:检查Robot.txt格式是否正确,时间参数是否合理,并确认Robot_def文件夹内对应脚本的标签是否存在。
五、高级执行控制
•延迟执行:使用DelayCall命令(GOM/GEE引擎支持),如DelayCall5000@奖励表示5秒后执行[@奖励]段落。
•随机执行:配合RANDOM命令实现概率触发,如#IFRANDOM5#ACT表示1/5的概率执行。
•中断执行:使用BREAK命令可中断当前脚本段的后续执行。
脚本执行的本质是引擎对预设文本指令的逐行解析与条件响应。确保触发条件、命令语法、文件路径三者准确无误,是脚本生效的前提。
一、脚本触发与执行机制
1.基础触发方式
•NPC对话:玩家点击NPC,引擎读取Merchant.txt找到该NPC对应的脚本文件(如“新手向导-3.txt”),并执行脚本中[@Main]标签后的代码。
•地图事件:进入特定地图(地图号、坐标)触发。在MapEvent.txt中配置,如D00110101002@进入副本,表示玩家踏入D001地图(1010)坐标时,立即执行Q-Function.txt中的[@进入副本]段落。
•拾取/使用物品:在Q-Function.txt中定义,如拾取物品触发:[@PickUpItem];双击物品触发:[@StdModeFuncXX](XX为物品数据库的AniCount字段值)。
2.定时触发(Robot脚本)
在Mir200\Envir\Robot.txt中配置,由引擎定时器自动执行。
•格式:#AutoRunNPCRUNONDAY20:00@行会战表示每日20:00执行Robot_def文件夹下的[@行会战]脚本。
•间隔:RUNONMIN5表示每5分钟执行一次对应标签。
3.登录/升级触发
在QManage.txt中预置,引擎在玩家登录或等级提升时自动调用。
•登录触发:[@Login]段落内的命令在角色进入游戏时立即执行,常用于发放签到、检测封号。
•升级触发:[@PlayLevelUp]段落内的命令在角色等级提升时执行,常用于奖励属性点。
二、脚本执行流程详解(以NPC任务为例)
1.引擎解析步骤
1.玩家点击“任务使者”NPC。
2.引擎在Merchant.txt找到该NPC绑定脚本“任务使者-3.txt”。
3.读取该文件,定位到[@Main]标签,开始逐行解析。
4.遇到#IF条件,则检测玩家背包、等级、变量。
5.条件满足,执行#ACT后语句(给予物品、传送、扣元宝)。
6.条件不满足,执行#ELSEACT后语句(提示信息)。
7.脚本执行完毕,返回结果到客户端界面。
2.实例:每日奖励NPC
脚本文件任务使者-3.txt内容如下:
[@Main]
#IF
CHECKVARHUMAN今日奖励=1
#ACT
MESSAGEBOX今日奖励已领取!
#ELSEACT
GIVE金币1000000
CALCVARHUMAN今日奖励=1
SAVEVARHUMAN今日奖励..\QuestDiary\变量文件.txt
MESSAGEBOX100万金币已发放!
三、脚本加载与重载命令
脚本修改后需通知引擎重新加载,无需重启服务端。
1.管理重载命令
在M2Server(引擎控制台)输入以下命令:
•@ReloadNpc:重载所有NPC脚本,立即生效。
•@ReloadRobot:重载机器人脚本(Robot.txt及Robot_def文件夹内脚本)。
•@ReloadManage:重载登录脚本(QManage.txt)。
•@ReloadMonItems:重载所有怪物爆率文件。
2.变量与文件重载
•若脚本中调用了外部变量文件(如上例的“变量文件.txt”),修改后需在游戏内或M2输入@ReloadVar重载变量。
•修改Merchant.txt(NPC配置文件)后,需重启引擎或使用部分引擎的@ReloadMerchant命令。
四、常见执行失败排查
•脚本无任何反应:检查脚本文件名与Merchant.txt中配置是否一致;标签[@Main]是否拼写错误。
•条件满足却不执行:检查命令格式,确认#IF与#ACT严格配对,中间无空行,变量名称与重载文件路径正确。
•引擎报“scripterror”:脚本中存在不支持的命令、使用了全角标点、或变量未初始化。用Notepad++打开,开启“显示所有字符”检查。
•定时脚本不触发:检查Robot.txt格式是否正确,时间参数是否合理,并确认Robot_def文件夹内对应脚本的标签是否存在。
五、高级执行控制
•延迟执行:使用DelayCall命令(GOM/GEE引擎支持),如DelayCall5000@奖励表示5秒后执行[@奖励]段落。
•随机执行:配合RANDOM命令实现概率触发,如#IFRANDOM5#ACT表示1/5的概率执行。
•中断执行:使用BREAK命令可中断当前脚本段的后续执行。
脚本执行的本质是引擎对预设文本指令的逐行解析与条件响应。确保触发条件、命令语法、文件路径三者准确无误,是脚本生效的前提。

