魔域脚本导入与提取主要涉及服务端核心逻辑脚本、NPC动作脚本、地图配置、动态NPC及客户端资源脚本的读写操作,按对象分为服务端数据库关联脚本与文本脚本、客户端PAK/WIL资源及配置文本的互换处理。
一、服务端脚本文件提取方法
• 文本类脚本提取:服务端常见脚本位于ServerScript或ServerEnvir目录内,如cq_action.txt、cq_task.txt、cq_dynanpc.txt、cq_dropitemrule.txt、cq_config.txt及npc目录下各独立.txt或.lua文件。直接用Notepad++、EditPlus或VS Code打开对应文件即可查看与复制提取内容,若引擎为二进制加密格式(如部分修改版将动作编译进dat),需用对应版本的解密工具或官方自带导出器先转成明文。
- 数据库内脚本类数据提取:cq_action、cq_announce、cq_ad_log等表存储于MySQL数据库中,使用Navicat、HeidiSQL、phpMyAdmin等工具连接数据库,选中对应表后点“导出”选SQL或CSV格式即可提取全部动作指令与参数;若只提取某类NPC动作,可用SQL语句SELECT * FROM cq_action WHERE id BETWEEN 起始ID AND 结束ID导出为文件。
- 动态地图与NPC配置提取:cq_dynamap、cq_dynanpc、Merchant.txt等若同时存在数据库与文本备份,优先从数据库提取最新数据,再对照ServerEnvir下同名文本做差异合并;部分版本动态NPC生成规则写在Lua脚本目录ServerScriptDynaNpc*.lua中,直接复制对应.lua文件即可。
二、服务端脚本导入修改后方法
• 文本脚本导入:修改完的.txt、.lua脚本覆盖回原目录(如ServerScriptNpcShop.txt覆盖原Shop.txt),注意编码必须为ANSI或UTF-8无BOM(多数老引擎认ANSI),否则中文会乱码导致NPC对话成乱码或动作不触发。覆盖后在服务端控制器点“重新加载NPC脚本”或重启M2Server类核心程序使新脚本生效。
- 数据库脚本表导入:用Navicat打开对应库,选“运行SQL文件”导入先前导出的SQL;若是单行修改cq_action,直接在表数据界面编辑字段(如param、sentence、next_id)点保存;批量导入CSV需勾选“忽略错误”“字段匹配”防止ID冲突,导入后执行FLUSH TABLES或重启数据库服务保证缓存刷新。
- 增量动作脚本合并:新增NPC动作时需保证cq_action中id唯一且与next_id、prev_id链闭合,导入前用文本比对工具(Beyond Compare)确认新增段首尾ID不与现存冲突,再粘贴进cq_action.txt尾部或用SQL INSERT语句写入数据库。
三、客户端脚本与资源提取方法
• 配置文本提取:客户端Data目录下的Chinese.txt(物品名称)、ItemDesc.txt(描述)、MapList.txt(地图列表)、SkillName.txt(技能名)等为明文,直接打开复制;若被打包进PAK,需用PAK编辑器(如Legend of Mir PAK Tool、GOMPAK编辑器)挂载对应Data.pak或Items.pak提取内部.txt并导出到桌面。
- WIL图像与界面脚本提取:用Wil编辑工具(如WinWil、MirWilEditor)打开客户端DataItems.wil、DnItems.wil、stateitem.wil、Shop.wil等,可逐个导出图片为bmp/png,同时Wil文件内附带索引编号即Looks/Shape对应值,提取时记下编号供服务端数据库StdItems.DB对齐。
- 地图文件提取:客户端Map目录下的*.map文件直接复制即可,部分版本将地图分块加密存于PAK,需用对应版本地图提取器解密导出为明文.map再交给服务端覆盖Mir200Map或ServerMap对应目录。
四、客户端修改后资源导入方法
• 文本配置导入:修改完的Chinese.txt、ItemDesc.txt等保存为ANSI编码放回客户端Data目录覆盖原文件,若游戏有缓存机制需删除客户端Cache文件夹内对应缓存再重启客户端生效。
- PAK资源重打包导入:用PAK编辑器打开原Data.pak,将修改后的.txt、新图片.bmp按原目录结构拖入覆盖,保存PAK;注意PAK密码须与服务端登录器配置器里的一致(GOM/GEE类),密码错会导致进游戏黑屏或问号;单文件如Items.pak修改后直接替换原客户端DataItems.pak。
- WIL文件导入:在Wil编辑器中导入新图片到对应.wil,调整索引位置与Looks/Shape数值匹配,保存.wil放回客户端Data目录,覆盖前备份原文件防崩。
五、脚本导入提取常见坑点
- 编码乱码:服务端老引擎脚本必须是ANSI,数据库表若设utf8mb4,导入SQL需在Navicat里勾选“含BOM”或转换编码,否则NPC对话全问号。
• ID链断裂:cq_action导入时next_id指向不存在的id,会导致NPC点完第一句没下文,提取旧动作先画ID链核对再改。
- 动态NPC重复:cq_dynanpc导入重复记录会使地图刷出两个同坐标蛋或商人,导入前DELETE旧相关ID段或设唯一约束。
• PAK密码不一致:客户端补丁PAK密码改了但登录器没同步,进游戏全黑或装备问号,提取时记原密码,导入新资源用同密码重包。
- 缓存未清:客户端常把地图、物品图标缓存在Cache目录,改完资源导入后不删缓存会仍显示旧图,删Cache重登即更。
• 权限不足:服务器上服务端Script目录若设只读,覆盖导入脚本会失败,需右键属性取消只读或以管理员身份覆写。
一、服务端脚本文件提取方法
• 文本类脚本提取:服务端常见脚本位于ServerScript或ServerEnvir目录内,如cq_action.txt、cq_task.txt、cq_dynanpc.txt、cq_dropitemrule.txt、cq_config.txt及npc目录下各独立.txt或.lua文件。直接用Notepad++、EditPlus或VS Code打开对应文件即可查看与复制提取内容,若引擎为二进制加密格式(如部分修改版将动作编译进dat),需用对应版本的解密工具或官方自带导出器先转成明文。
- 数据库内脚本类数据提取:cq_action、cq_announce、cq_ad_log等表存储于MySQL数据库中,使用Navicat、HeidiSQL、phpMyAdmin等工具连接数据库,选中对应表后点“导出”选SQL或CSV格式即可提取全部动作指令与参数;若只提取某类NPC动作,可用SQL语句SELECT * FROM cq_action WHERE id BETWEEN 起始ID AND 结束ID导出为文件。
- 动态地图与NPC配置提取:cq_dynamap、cq_dynanpc、Merchant.txt等若同时存在数据库与文本备份,优先从数据库提取最新数据,再对照ServerEnvir下同名文本做差异合并;部分版本动态NPC生成规则写在Lua脚本目录ServerScriptDynaNpc*.lua中,直接复制对应.lua文件即可。
二、服务端脚本导入修改后方法
• 文本脚本导入:修改完的.txt、.lua脚本覆盖回原目录(如ServerScriptNpcShop.txt覆盖原Shop.txt),注意编码必须为ANSI或UTF-8无BOM(多数老引擎认ANSI),否则中文会乱码导致NPC对话成乱码或动作不触发。覆盖后在服务端控制器点“重新加载NPC脚本”或重启M2Server类核心程序使新脚本生效。
- 数据库脚本表导入:用Navicat打开对应库,选“运行SQL文件”导入先前导出的SQL;若是单行修改cq_action,直接在表数据界面编辑字段(如param、sentence、next_id)点保存;批量导入CSV需勾选“忽略错误”“字段匹配”防止ID冲突,导入后执行FLUSH TABLES或重启数据库服务保证缓存刷新。
- 增量动作脚本合并:新增NPC动作时需保证cq_action中id唯一且与next_id、prev_id链闭合,导入前用文本比对工具(Beyond Compare)确认新增段首尾ID不与现存冲突,再粘贴进cq_action.txt尾部或用SQL INSERT语句写入数据库。
三、客户端脚本与资源提取方法
• 配置文本提取:客户端Data目录下的Chinese.txt(物品名称)、ItemDesc.txt(描述)、MapList.txt(地图列表)、SkillName.txt(技能名)等为明文,直接打开复制;若被打包进PAK,需用PAK编辑器(如Legend of Mir PAK Tool、GOMPAK编辑器)挂载对应Data.pak或Items.pak提取内部.txt并导出到桌面。
- WIL图像与界面脚本提取:用Wil编辑工具(如WinWil、MirWilEditor)打开客户端DataItems.wil、DnItems.wil、stateitem.wil、Shop.wil等,可逐个导出图片为bmp/png,同时Wil文件内附带索引编号即Looks/Shape对应值,提取时记下编号供服务端数据库StdItems.DB对齐。
- 地图文件提取:客户端Map目录下的*.map文件直接复制即可,部分版本将地图分块加密存于PAK,需用对应版本地图提取器解密导出为明文.map再交给服务端覆盖Mir200Map或ServerMap对应目录。
四、客户端修改后资源导入方法
• 文本配置导入:修改完的Chinese.txt、ItemDesc.txt等保存为ANSI编码放回客户端Data目录覆盖原文件,若游戏有缓存机制需删除客户端Cache文件夹内对应缓存再重启客户端生效。
- PAK资源重打包导入:用PAK编辑器打开原Data.pak,将修改后的.txt、新图片.bmp按原目录结构拖入覆盖,保存PAK;注意PAK密码须与服务端登录器配置器里的一致(GOM/GEE类),密码错会导致进游戏黑屏或问号;单文件如Items.pak修改后直接替换原客户端DataItems.pak。
- WIL文件导入:在Wil编辑器中导入新图片到对应.wil,调整索引位置与Looks/Shape数值匹配,保存.wil放回客户端Data目录,覆盖前备份原文件防崩。
五、脚本导入提取常见坑点
- 编码乱码:服务端老引擎脚本必须是ANSI,数据库表若设utf8mb4,导入SQL需在Navicat里勾选“含BOM”或转换编码,否则NPC对话全问号。
• ID链断裂:cq_action导入时next_id指向不存在的id,会导致NPC点完第一句没下文,提取旧动作先画ID链核对再改。
- 动态NPC重复:cq_dynanpc导入重复记录会使地图刷出两个同坐标蛋或商人,导入前DELETE旧相关ID段或设唯一约束。
• PAK密码不一致:客户端补丁PAK密码改了但登录器没同步,进游戏全黑或装备问号,提取时记原密码,导入新资源用同密码重包。
- 缓存未清:客户端常把地图、物品图标缓存在Cache目录,改完资源导入后不删缓存会仍显示旧图,删Cache重登即更。
• 权限不足:服务器上服务端Script目录若设只读,覆盖导入脚本会失败,需右键属性取消只读或以管理员身份覆写。

