传奇服务器删除列表行会名脚本命令与文件清理数据库操作全解

来源: 作者: 点击:
删除列表中的行会名在传奇服务端维护中涉及多种场景:清理过期数据、重置开区环境、移除测试行会、处理合区后的重复行会。不同场景适用的方法不同,脚本命令适合在游戏运行中动态操作列表文件,文件清理适合彻底清空全部行会数据,数据库操作适合使用SQL结构的引擎版本。下面按方法类型逐一说明。

脚本命令删除列表中的行会名

DELGUILDLIST是GOM引擎和BLUE引擎中用于从列表文件里删除行会名称的核心命令。这个命令的作用范围是列表文件,比如行会争霸名单、攻城申请名单等以文本形式记录行会名称的文件。命令格式非常简单,在脚本的#ACT段中直接写DELGUILDLIST 文件名即可。

标准的脚本写法如下:

```
[@DELGUILDLIST]
#IF
#ACT
DELGUILDLIST 行会争霸.TXT
```

执行这条命令后,引擎会读取当前玩家的行会名称,然后在指定的文本文件中查找这个名称并删除。也就是说,这个命令删除的是当前玩家所属行会在列表中的记录,不能指定删除其他行会的名称。与之配套的命令有CHECKGUILDLIST用于检查行会是否在列表中,ADDGUILDLIST用于将行会名称加入列表,三个命令配合使用可以完整管理列表文件中的行会条目。

使用DELGUILDLIST时需要注意几点。文本文件名必须和实际存在的文件完全一致,包括扩展名的大小写。如果文件不存在,命令不会报错但也不会执行任何操作。文本文件必须存放在服务端的QuestDiary目录下,命令中的路径是相对于这个目录的。列表文件本身不能被删除,只能通过命令清空其中的内容,文件被删除后相关功能会直接失效。

飞霜引擎中有一个不同的命令PPPDELGUILD,这个命令可以直接删除指定的行会,不需要当前玩家属于该行会。命令格式为PPPDELGUILD 行会名称,行会名称必须是完整的准确名称,不能使用模糊匹配。使用方法示例:

```
[@删除行会]
#ACT
mov S$行会名 斗法
PPPDELGUILD S$行会名
sendmsg 6 删除成功

[@删除不成功]
#IF
#ACT
PPPDELGUILD 不存在的行会
sendmsg 6 行会不存在,脚本不生效
```

这个命令要求行会名称必须完全匹配,如果填写的名称在服务端中不存在,命令不会执行任何操作,也不会报错。使用前建议先用行会查询命令确认目标行会的准确名称。

文件清理彻底删除全部行会数据

脚本命令只能操作列表文件中的记录,如果要彻底清除服务端中所有行会数据,需要直接操作文件系统。行会数据的存储位置在MirServer\Mir200\GuildBase目录下,这个目录中包含两个关键部分。

GuildList.txt文件记录了当前服务器中所有行会的名称列表,每一行是一个行会的名字。要清空所有行会,打开这个文件,删除全部内容后保存。注意不能删除这个文件本身,只能清空内容。文件被删除后引擎启动时会找不到行会列表文件,导致行会功能整体异常。

Guilds文件夹中存放的是每个行会的详细数据文件,包括行会成员名单、行会仓库记录、行会职位信息等。每个行会对应一个独立的文件,文件名通常就是行会名称。要彻底清空行会数据,需要删除这个文件夹下的所有文件。删除后行会的所有成员信息、仓库物品记录、职位分配都会消失,不可恢复。

执行文件清理的标准操作顺序是:先停止M2Server和所有相关进程,确保文件没有被占用;然后清空GuildList.txt的内容;再删除Guilds文件夹下的所有文件;最后重新启动M2Server。如果在服务端运行状态下直接删除文件,可能出现文件锁定导致删除失败,或者引擎在运行中重新写入数据造成清理不彻底。

沙巴克行会数据的清理是独立于普通行会的。沙巴克占领记录存储在MirServer\Mir200\Castle目录下,具体文件是SabukW.txt。清空行会数据时如果需要同时清除沙巴克归属,打开这个文件,找到OwnGuild=这一行,等号后面的内容就是当前占领沙巴克的行会名称,把这部分内容清空后保存。

数据库层面的行会数据删除

使用SQL数据库结构的引擎版本,行会数据除了存储在文件系统中,还会写入数据库表。常见的行会相关数据表包括Guild表、GuildList表、GuildMember表以及TBL_GUILDLIST等。这些表分别存储行会基础信息、行会列表、成员关系和行会请求数据。

清空数据库中的行会数据需要使用数据库管理工具,比如Navicat或HeidiSQL,连接到引擎使用的数据库后,找到对应的表执行清空操作。以Guild表为例,右键点击表名选择清空表或执行DELETE FROM Guild语句,表中的所有行会记录会被删除。GuildMember表同样处理,清空后所有行会成员关系解除。需要特别注意的是,执行清空操作前必须确认已经停止了服务端进程,否则引擎可能在清空过程中重新写入数据,导致清理不完整。

Access数据库结构的引擎版本,行会数据存储在GuildData.db文件中。这个文件位于DBServer目录下,直接删除这个文件可以清除全部行会数据,但部分引擎在启动时会检测到这个文件缺失并自动创建一个空文件,另一些引擎则可能因为文件缺失而报错。稳妥的做法是用Access打开GuildData.db,删除其中所有记录后保存,而不是直接删除文件本身。

GM命令在游戏内删除行会

如果只需要删除个别行会,不需要清理全部数据,使用GM命令是最直接的方式。大部分引擎支持在游戏聊天框中输入GM命令来删除行会,常用命令包括@删除行会 行会名称和@DeleteGuild 行会名称。执行后系统会提示确认,确认后该行会被立即解散,所有成员被移出行会。

HERO引擎的GM命令中还有@ReloadGuildAll用于刷新所有行会信息,修改行会文件后使用这个命令可以让引擎重新读取行会数据,不需要重启M2Server。这个命令在手动编辑了GuildList.txt或Guilds文件夹中的文件后非常有用,可以避免重启服务端带来的停机时间。

不同引擎的操作差异

HERO引擎和LEGEND引擎的行会数据管理以文件操作为主,清空GuildList.txt和Guilds文件夹是标准流程。脚本命令中DELGUILDLIST可用,但没有PPPDELGUILD这类直接删除指定行会的命令。GM命令中@删除行会支持指定行会名称删除。

GOM引擎在文件操作基础上增加了数据库层面的支持,部分版本的行会数据同时写入数据库表。清理时需要文件和数据库两边都处理,只清理一边会出现数据不一致,表现为行会列表已清空但数据库中还保留着成员关系记录,下次有玩家创建同名行会时可能出现成员自动关联的异常。脚本命令中DELGUILDLIST和CHECKGUILDLIST是标准配置。

GEE引擎的数据清理主要通过引擎主控制台的数据管理菜单完成。打开GeeEngine.exe登录后,找到数据管理下的行会数据清理选项,勾选需要清理的项目后执行清理。这种图形化操作方式比手动编辑文件更安全,引擎会自动处理文件锁定和数据一致性问题,不需要手动停止和重启服务端。

BLUE引擎的行会数据管理结合了文件系统和脚本命令两种方式,GuildBase目录下的文件存储实际数据,脚本命令操作列表文件。BLUE引擎的DELGUILDLIST命令用法和GOM引擎一致。

清理后的验证步骤

清理完成后需要验证操作是否生效。启动M2Server,在游戏内使用GM命令查看所有行会列表,确认列表为空或只保留了需要保留的行会。创建一个测试行会,检查行会功能是否正常,包括创建、加入成员、行会聊天、行会仓库使用。如果创建行会时提示行会名称已存在但列表中看不到这个行会,说明Guilds文件夹中还有残留文件,或者数据库中的行会记录没有被完全清除。

文件清理后GuildList.txt文件必须存在且内容为空,不能删除文件本身。Guilds文件夹可以清空但文件夹本身要保留。沙巴克数据清理后SabukW.txt中的OwnGuild=后面应该为空。检查GuildBase目录下的文件时间戳,确认修改操作确实写入了磁盘,没有因为权限问题导致写入失败。

操作前的备份要求

删除行会数据属于不可逆操作,执行前必须备份。需要备份的内容包括MirServer\Mir200\GuildBase整个目录,以及数据库中的Guild、GuildMember、GuildList等相关表的数据。备份方式建议直接复制GuildBase文件夹到其他位置,数据库表使用导出功能生成SQL文件保存。备份完成后确认备份文件可以正常打开和读取,避免备份文件损坏导致恢复失败。