传奇NPC出售物品混乱修改教程去除多余商品

来源: 作者: 点击:
NPC卖的东西乱七八糟,药店卖布衣,首饰店卖终极武器,这确实是版本文件配置混乱导致的典型问题。能自己在家开服玩,说明服务端启动这些基础操作没问题。现在要改这个,不需要懂编程,只需要找到正确的文件,删掉几行代码就行。下面直接给你拆解修改NPC商品列表的完整步骤。

**第一步:找到NPC配置文件的位置**

所有NPC的配置都藏在服务端的两个文件夹里,你得先找到它们。

打开你的服务端根目录,一般是`D:\MirServer`或`D:\mirserver`。顺着路径找到`D:\MirServer\Mir200\Envir\`文件夹。这里面有两个关键文件:

一个是`MerChant.txt`,这个文件记录了所有交易型NPC(比如药店、武器店、首饰店)放在地图的哪个位置,长什么样子。另一个是`market_def`文件夹,这里面存放着每个NPC具体的功能脚本,包括他们卖什么东西。

你要改的商品列表,就在`market_def`文件夹里。

**第二步:定位具体要修改的NPC脚本文件**

打开`market_def`文件夹,你会看到一堆以“-地图编号”结尾的文本文件,比如“盟重省_药店-3.txt”、“比奇省_武器店-0.txt”等。后面的数字代表地图编号,比如3是土城,0是比奇。

找到你那个卖乱七八糟东西的NPC对应的文件。比如药店乱卖东西,就找文件名里带“药店”字样的文件;首饰店乱卖终极装备,就找带“首饰店”或“项链店”、“戒指店”字样的文件。

**第三步:修改NPC脚本里的商品列表**

用记事本打开你要修改的NPC脚本文件。文件内容分为两部分:开头是NPC的功能选项,比如`[@main]`、`[@buy]`这些;文件末尾是商品列表。

直接拉到文件最底部,你会看到类似这样的格式:
```
;名称 数量 时间
木剑 10 10
八荒 10 10
凝霜 10 10
炼狱 10 10
;屠龙 10 10
```

这里每一行代表一件商品。`木剑`是物品名称,第一个`10`是库存数量(0表示无限),第二个`10`是刷新时间(单位应该是小时或毫秒,不同引擎有差异)。

要删除不该出现的商品,直接把那一整行删掉就行。比如首饰店里有“屠龙”,找到“屠龙 10 10”这一行,删掉,保存文件。

如果想让某个商品暂时不显示但保留代码,可以在行首加上分号`;`,这行就会被注释掉,游戏里不会显示。

**第四步:理解NPC的商品分类规则**

你可能会发现,明明删光了不该卖的东西,保存后进游戏一看,又刷出来了?那是因为NPC脚本文件的开头有一行“商品分类代码”在作怪。

打开脚本文件,看最开头,通常会有这样的代码:
```
%100
+5
+6
+43
; -------------(这里必须空一行)
```

这里的`%100`代表物价是原价的100%。下面的`+数字`定义了这类NPC允许交易的商品类型。比如:
- `+5 +6 +43`:兵器店,允许买卖武器
- `+0 +42`:药店,允许买卖药剂
- `+19 +20 +21`:项链店,允许买卖项链
- `+22 +23`:戒指店,允许买卖戒指
- `+24 +26`:手镯店,允许买卖手镯
- `+10 +11`:衣服店,允许买卖衣服
- `+3 +4`:书店,允许买卖图书
- `+3 +25 +30`:杂货店,允许买卖杂货

如果你的药店脚本开头有`+5 +6 +43`(武器店的分类),那它自然会卖武器。如果首饰店脚本开头有`+0 +42`(药店的分类),那它卖药就正常了。

**解决方案**:找到对应NPC脚本文件,把开头的这些`+数字`改成它本来该有的分类。比如药店只留`+0 +42`,把其他`+数字`删掉。首饰店只留`+19 +20 +21`(项链店)或`+22 +23`(戒指店),删掉多余的。

**第五步:重新加载NPC配置**

修改完文件后,必须让服务端重新读取这些配置,否则游戏里没变化。

打开正在运行的M2Server程序(就是那个白色的引擎控制台)。在菜单栏找到“控制”或“查看”选项,点击“重新加载所有NPC”或“重新加载商人数据”。有些版本需要点击“重新加载” -> “NPC脚本”或“交易NPC”。

如果不确定怎么操作,最保险的办法是:关闭所有服务端程序,重新启动整个服务器。启动后进游戏查看NPC,应该就恢复正常了。

**第六步:验证修改结果**

进游戏找到刚才修改的NPC,点开查看出售列表。如果还有不该出现的东西,说明要么脚本文件没改对,要么你改错文件了(比如改的是土城的药店,但实际那个NPC在比奇)。回到第二步,确认文件名和NPC对得上。

如果NPC干脆不显示或点不开,检查脚本文件格式。确保商品列表前有一行空行,确保每行格式是“物品名称 数量 时间”,确保没有乱码或多余字符。

另外注意,物品名称必须和服务端数据库里的名称完全一致,多一个空格或少一个字都会导致不显示。