传奇服务端商业脚本与普通脚本运行位置全解析 不同脚本模块运行载体实操说明

来源: 作者: 点击:
传奇服务端的商业脚本和普通脚本,绝大多数都运行在服务端侧的核心引擎进程中,依托MirServer主目录下的对应目录结构加载执行,不同功能的脚本有明确的指定运行路径,不能随便乱放,否则引擎启动时识别不到,脚本完全不会生效。

整个服务端的核心运行根目录是MirServer,所有脚本相关的配置和文件都集中在这个主目录下的子文件夹里。其中最核心的脚本运行载体是Mir200文件夹,它是整个服务端的逻辑心脏,几乎所有游戏内的功能脚本都在这里完成加载和执行,引擎启动时会优先扫描这个目录下的指定脚本文件,逐行解析注册对应的触发事件。

Envir是Mir200目录下专门存放环境配置和脚本的核心文件夹,90%以上的商业功能脚本都放在这个目录下运行。里面的QFunction-0.txt是全局功能触发脚本,所有玩家登录、攻击、死亡、使用物品这类全局事件的脚本,都写在这个文件里,由M2引擎启动时直接加载常驻内存,事件触发时立刻执行对应的脚本逻辑。

商业脚本里的NPC对话类脚本,默认运行在Envir目录下的Market_Def子文件夹里。每个NPC对应一个单独的txt脚本文件,文件名和NPC配置文件里的指向完全对应。引擎加载NPC配置的时候,会自动关联对应的脚本文件,玩家点击NPC时,引擎直接从内存里调出对应的脚本逻辑执行,不用额外读取磁盘文件,响应速度极快。

商业脚本里的任务系统、活动系统这类复杂的模块化脚本,很多会用#CALL指令调用外部脚本文件,这些外部脚本一般统一放在Envir目录下的Market_Def或者自定义的Script子文件夹里。引擎启动时会预加载这些外部脚本的索引,调用的时候直接跳转执行,不用临时解析,避免大脚本执行时出现卡顿。

全局管控类的商业脚本,比如机器人定时脚本、全服公告脚本、自动攻城脚本,运行在Envir目录下的QManage.txt文件里。这个脚本在服务端启动时就会被引擎加载,全程后台运行,不需要玩家触发,就能自动执行定时任务、全局变量初始化、全服状态监控这类底层逻辑,是服务端后台自动化功能的核心运行载体。

还有一部分和怪物刷新、地图逻辑绑定的商业脚本,运行在MonGen.txt和MapInfo.txt的关联逻辑里。引擎加载地图配置的时候,会同步读取这两个文件里的自定义脚本标记,进入对应地图的玩家就会触发地图专属的脚本逻辑,比如专属地图的经验倍数、专属BOSS的自定义掉落规则,这类脚本直接由地图加载模块驱动运行。

和数据读写强相关的商业脚本,不会直接运行在脚本引擎层,而是由M2引擎转发请求到DBServer进程里执行。DBServer是服务端的数据库网关,负责所有角色数据的增删改查,涉及批量修改玩家属性、批量发放道具这类需要操作数据库的商业脚本,最终的执行逻辑会落到DBServer进程里,保障数据读写的原子性和安全性,避免直接操作数据导致数据损坏。

极少数特殊的商业脚本,比如网关验证脚本、防注入脚本,运行在LoginGate登录网关进程里。玩家连接服务器还没进入角色选择界面的时候,这类脚本就已经开始执行,用来验证连接合法性、过滤恶意数据包,在入口层就拦截异常请求,这类脚本直接嵌入网关进程运行,优先级比游戏主逻辑脚本还要高。

普通的玩家侧模拟脚本,和服务端脚本完全不在一个运行体系里,它们运行在玩家本地的游戏客户端进程里,通过模拟键鼠、内存读写的方式执行,完全不接触服务端的脚本引擎。这类脚本的运行逻辑全部在本地设备上完成,和服务端侧的商业脚本没有任何关联,服务端引擎完全不会加载这类脚本。

不同引擎的脚本运行路径会有细微差别,比如GOM引擎和GEE引擎的部分自定义脚本目录名称不一样,但核心的Envir、QFunction-0.txt、QManage.txt这些核心运行位置是完全通用的。脚本放对位置之后,不需要重启整个服务器,大部分引擎支持热加载脚本,在M2引擎的管理面板里点重新加载脚本,新的脚本就会立刻生效,不用重启整个服务端进程。