传奇单机清除角色物品变量数据命令

来源: 作者: 点击:
传奇单机清数据分几层:清账号、清角色、清背包物品、清变量、清行会、清日志、清数据库表里脏数据。别上来把整个库删了,有时候端里 Map、Envir、Market 跟库是两套,库删了角色没了但 NPC 卖的东西还在,不算真“还原”。

先说游戏内命令。M2 里给自己 GM 权限后,常用:
@clearbag 清自己背包
@clearitem 清身上/背包物品
@delchar 删当前角色
@delaccount 删账号
@reborn 转生/重生类,不等于清数据
@gv 看全局变量
@set 改局部变量
@setglobal 改全局变量
不同引擎命令名字不一样,GOM、GEE、Hero、3K 不是同一套。GOM 里全局变量常用 GLOBALVAL、GLOBALSTR 这种,Hero 里可能是 VAR 整数/字符串那套。想“清变量”,不是敲一个万能命令,而是把变量值写回 0 或空串。

M2 控制台里能做的:
脚本变量清 0:把 Var Integer Human MyVar = 0
全局变量清 0:GlobalVal 1 = 0
全局字符串清空:GlobalStr 1 =
NPC 里写
[@清变量]
IF

ACT

Set [001] 0
Set [002] 0
SetGlobal 1 0
SetGlobalStr 1 <$null>
这样玩家点 NPC 就把自定义变量归位。

数据库层面最彻底。MySQL 端进库:
TRUNCATE TABLE characters;
TRUNCATE TABLE account;
TRUNCATE TABLE guild;
TRUNCATE TABLE guild_member;
TRUNCATE TABLE item;
TRUNCATE TABLE mail;
TRUNCATE TABLE log_login;
TRUNCATE TABLE log_chat;
别 TRUNCATE 配置表、商店表、怪物表、地图表。只清玩家侧:账号、角色、行会、物品、邮件、日志。

SQL Server 端用:
DELETE FROM Characters;
DELETE FROM Guild;
DBCC CHECKIDENT ('Characters', RESEED, 0);
想连自增 ID 也重置就 RESEED。不清配置表、Market 表、MonGen 表、Magic 表。

Envir 里的变量文件也要清:
Envir/UserData/*.txt 角色扩展数据
Envir/Market_prices 别清,是商店
Envir/Market_saves 玩家市场挂售要清就删文件
Envir/GuildBase 行会数据
Envir/Castle 沙巴克数据
Envir/QuestDiary 里自己写的变量别手删段,只把值改 0
Mir200/Envir/Map 不清,地图不是玩家数据
Mir200/Data 是装备/特效资源,不清
Mir200/Map 是地图文件,不清

想“像刚下的一键端”那样干净,做法:
1. 关所有网关和 M2
2. 删 Mir200/Envir/UserData 下玩家文件
3. 删 Mir200/Envir/GuildBase
4. 删 Mir200/Envir/Castle
5. 删 Mir200/Log 下日志
6. 数据库里清 account/characters/guild/item/mail/log_*
7. 启动服务端,建新号就是空世界

只清“变量数据”不清角色:
进 M2 → 脚本变量 → 把 Human 变量、Global 变量、Integer 变量、String 变量全设 0 / 空。很多服主做的“清 CD、清任务进度、清首充标记、清累充金额、清沙巴克次数”就是改这些变量,不是删号。

常见变量名:
首充标记 FirstPay = 0
累充金额 TotalPay = 0
每日签到 DaySign = 0
转生次数 ZhuanSheng = 0
切割值 CutValue = 0
攻沙次数 SiegeCount = 0
这些都在 QuestDiary 或 M2 变量管理器里。自己写的版本就在 QuestDiary 里搜 Set [xxx] 看逻辑,然后写个清变量 NPC 把它们全置 0。

想通过 GM 命令清别人数据:
@Kill 别人没用,是杀人
@DelChar 角色名 删角色
@ClearItem 角色名 清物品
@SetLevel 角色名 1 变 1 级
@SetMoney 角色名 0 金币清零
@DelGuild 行会名 删行会
具体看引擎帮助文件,GEE 的 GM 命令文档最全,GOM 其次,Hero 老端命令散在 Merchandize 和 QuestDiary 里。

脚本里批量清全服变量例子:
[@清全服变量]
IF

ACT

FOR 1 TO 200
SetGlobal <$STR(N)> 0
SetGlobalStr <STR(N)> <null>
其实不同引擎不支持这么写,GOM 可用 QFunction 里循环,Hero 用 Label + Goto。新手别硬写循环,直接 M2 里手动把 GlobalVal 1-500 设 0 最稳。

配置文件里也有“假变量”:
!Setup.txt 里经验倍数、爆率倍数不是玩家变量
GameConfig.txt 里在线人数、开区时间不是玩家数据
Envir/MonItems 是怪物爆率,不是角色数据
Env/AdminList 是 GM 列表,删了你就没权限

单机想重来一遍:
方案 A 轻清:清账号表 + 删 UserData + 全局变量归零,版本配置保留。
方案 B 中清:方案 A + 删行会/沙巴克/市场/邮件/日志。
方案 C 硬清:关服,备份 Envir/Map/Data/Magic/Market 后,数据库整库删表重建,服务端只留原端自带示例 NPC。
方案 D 核清:删端重下,最干净但最费事。

新手推荐方案 A+B。C 容易把 Market_Def 里商店 NPC 存的数据一起搞乱,D 是端本身有毒/改烂了才用。

清数据后角色进游戏还显示旧物品,原因:
客户端缓存没清,登录器缓存了角色面板
服务端没真重启,M2 还挂着旧内存
数据库连错库,你清了 mir2_test,端连的是 mir2
Item 表清了但角色 blob 里还存装备,部分老引擎角色装备写在 characters 表字段里,要 UPDATE characters SET body=0,herobody=0

MySQL 修角色装备字段:
UPDATE characters SET Weapon=0,Helmet=0,Armor=0,LeftHand=0,RightHand=0,Necklace=0,Ring1=0,Ring2=0,Bracelet1=0,Bracelet2=0,ItemBag='' WHERE Name='角色名';

SQL Server:
UPDATE Characters SET Weapon=0,Armor=0,Helmet=0,LeftRing=0,RightRing=0 WHERE CharName='角色名';

想清“任务进度/活动进度”但留等级装备:
别删号,改字段。比如每日任务次数、周任务标记、首杀标记单独存 UserData/任务.txt,删这个文件就行。

M2 自带“清理垃圾数据”:
M2 → 数据管理 → 清理无效角色
M2 → 数据管理 → 清理离线超 N 天
M2 → 物品管理 → 清理地面物品
M2 → 行会管理 → 解散空行会
M2 → 日志管理 → 清空日志
这些比手敲 SQL 安全,一键端新手先用界面再学 SQL。

地面物品清不掉:
Map 里地上掉落存在 GameSrv 内存 + DropItem 表,关服再开还在,是因为 DropItem 表没清。
DELETE FROM droplog;
或端里叫 ItemDrop、GroundItem,看表名。

变量清了刷新还回来:
QuestDiary 里 OnLogin 段又给变量赋值了。比如登录自动 Set [首充] 0 但另一段 Set [在线奖励] +1,你清完一上线又被脚本写回去。真要空状态,改 QuestDiary 登录段,暂时注释掉赋值行。

自己写“清档 NPC”最实用:
[@main]
清角色数据\n清全局变量\n清行会沙巴克\n清日志
[@清角色]
ACT

DelChar <$USERNAME>
[@清全局]
ACT

SetGlobal 1 0
...
[@清行会]
ACT

DelGuildAll
不同引擎命令不存在 DelGuildAll 就循环读行会名再 DelGuild。

备份顺序别反:
先关服 → 备库 → 备 Envir → 备 Mir200/Data → 再清。清完发现商店 NPC 不卖东西了,八成把 Market_Def 或 Market_Saves 误删了。Market_Def 是 NPC 定义,Market_Saves 是交易/拍卖状态,前者不能清,后者能清。

最稳单机清档流程:
1. 点 M2 关所有网关
2. 导库:mysqldump 或附加库复制
3. 删 characters/account/guild/item/mail/log_*
4. 删 Mir200/Envir/UserData/*
5. 删 Mir200/Envir/GuildBase/*
6. 删 Mir200/Envir/Castle/*
7. 删 Mir200/Log/*
8. M2 里全局变量 1-300 设 0
9. 重启服务端
10. 新号进,首充/累充/签到/转生/切割全是初始值

记牢:清“玩家数据”和清“服务端版本”是两件事。玩家数据在库 + UserData + 行会文件;版本配置在 Envir/QuestDiary、Market_Def、MonGen、MapInfo、MonItems、Magic。前者可清,后者清了服就残。

命令记几个够用:
清自己背包:@clearbag
删自己号:@delchar
删账号:@delaccount
清金币:@setgold 0
清等级:@setlevel 1
清全身装备:M2 里脱装或 SQL 置 0
清全局变量:M2 变量管理器设 0
清登录变量:改 QuestDiary 的 [@Login] 段
清地面物品:M2 清理地面物品
清离线角色:M2 清理无效角色
清行会:M2 行会管理解散 / @delguild 行会名

自己弄单机版,别被“清变量”三个字吓住。变量就是脚本里存的计数器,清了就是归零;角色就是库里一行;物品就是角色字段或 item 表;行会就是 guild 表加 GuildBase 文件;日志就是 log 表。一层层对,就能从“满号满行会满邮件”回到“刚开服啥都没有”。

要是你改过 Pay、Cut、ZS、SAB 这种自定义系统,清档时还得进它们对应的 txt/json:累充.json、转生数据.txt、切割数据.txt、沙巴克次数.txt。一键端作者爱把数据塞 Envir/UserData/插件名/ 下面,清档前全局搜自己加的系统名,别只清 characters 表,结果“角色是 1 级但首充送的刀刀切割还在”,就是这个原因。

最后提醒:清之前一定关 M2 再动库。M2 开着你 DELETE 完,它内存里角色还在,玩家在线还能动,你以为清了,重启又从内存写回一部分,看起来“清不干净”。关服、清库、清文件、再起服,才是真清干净。