传奇服务端四项设置的具体修改方法

来源: 作者: 点击:
怪物掉的金币不掉地上、直接进背包

这个开关在M2引擎的控制台里,不在数据库也不在爆率文件。

打开M2主控台,按引擎不同路径略有差别:

GOM、GEE、Hero这类主流引擎:M2→选项→怪物设置(有的版本叫"怪物设定")→基本参数,里面有一项叫"怪物死亡金币进入背包",把勾打上。同一页还有一个"金币堆"的数值,控制每堆金币的数量,按自己的需要填。

BLUE引擎:BLUEM2→选项→游戏参数→人物死亡→普通选项,勾"金币直接进包裹"。

勾完点保存,重启一次M2,或者点控制→重新加载。再打死怪,金币就不再落地,直接进背包。

有一点要注意:这个开关只管金币,不管装备。想让装备也直接进背包,那得靠脚本或者拾取宠物之类的机制,标准引擎里没有一键开关。

另外,有些版本的勾选框是反过来的,叫"金币掉落到地上",要保证它是没勾上的状态。改完进游戏实测一次,别只看勾选框。

去掉升级加5点声望

这个基本可以确定是脚本干的,或者M2参数里设了升级赠点。

先查脚本。打开D:\MirServer\Mir200\Envir\Market_Def\QFunction-0.txt,搜索人物升级的触发段落,关键字是@PlayLevelUp,有的版本写成(@PlayLevelUp)。声望相关的命令是CREDITPOINT,找到类似这样的一行:

CREDITPOINT + 5

把它删掉,或者用分号注释掉:

;CREDITPOINT + 5

保存,重启M2或者重新加载NPC脚本。

如果QFunction-0.txt里搜不到PlayLevelUp和CREDITPOINT,换个地方找。有些版本把升级触发写在QManage.txt里,还有些版本写在Envir\QuestDiary下的任务脚本里。直接在Envir整个目录里全文搜索CREDITPOINT,一条一条看过来的究竟是哪处在加声望。

搜索的时候顺手搜一下5这个数字配合CREDITPOINT的组合。有的脚本写得比较绕,不是直接写5,而是用变量或者循环:

[@PlayLevelUp]
#IF
#ACT
CREDITPOINT + 5

也有版本用的是MOV加INC的写法先算后加,这种就得看完整段落才看得懂。

如果脚本里干干净净,那就去M2参数里找。M2→选项→参数设置,翻一翻"升级经验"或者"游戏选项"这几页,有些引擎内置了"每次升级增加属性点""升级增加声望"这类勾选项,数值就是5。把勾去掉就行。

顺带说一句,还有一种是升级加属性点(BonusPoint),和声望(CreditPoint)不是一回事。改之前先确认掉的是声望还是属性点,别改错地方。你看声望点数变5,那就是CreditPoint。

改完的验证方式是拿个测试号升一级,看声望有没有动。如果还在加,说明真正的源头没找到,继续全文搜。

加怪物经验倍数

这里要分清两层,一层是怪物自己的经验值,一层是全服的经验倍率。想整体提快升级,改的是倍率,不用动几十几百个怪物的经验值。

第一种改法,改配置文件。用Notepad++打开D:\MirServer\Mir200!Setup.txt,找到KillMonExpMultiple这一行:

KillMonExpMultiple=100

这个数字除以100才是真实倍率,100就是1倍,200是2倍,1000是10倍。想开5倍就写500。有的版本这个参数在Envir\Exps.ini里,搜索KillMonExpMultiple同样能找到。改完重启M2。

第二种改法,M2控制台里点。M2→选项→参数设置→升级经验,界面上有经验倍数的输入框,直接填数字,改完立即生效,不用重启。这个方法最省事,也最不容易改错文件。

第三种,地图级倍率。只想让某张地图经验高,可以在Envir\MapInfo.txt里对应地图的参数后面加代码:

EXPRATE(200)

200就是2倍,括号里除以100算真实倍数。适合单独给练级地图提速。

第四种,按玩家单独设。用脚本命令KILLMONEXPRATE:

KILLMONEXPRATE 1000 600 1

1000除以100是10倍,600是持续秒数,最后的1表示下线后继续计时。这个一般配合充值或者活动给玩家发经验加成,不用于全服。

反过来说,如果你是想改单个怪物的基础经验值(比如让祖玛教主的基础经验从2000变成5000),那就要动DBC里的Monster.DB。但这里有个老坑:默认Monster.DB的EXP字段是16位整数,最大只能到65535,想填更大的数直接报错或者溢出。

解决办法是用DBC2000打开Monster.DB,把EXP字段删掉重新建一个32位的。步骤是:

打开DBC2000,选中Monster.DB,光标点在EXP字段上,点菜单Utilities→Add/Delete Columns→left,在弹出窗口的NAME里选EXP,点Delete,确认。然后在INPUT项里勾上Add,NAME填Exp,TYPE选INTEGER,LENGTH填32,点Add。新字段会跑到表的最右边,用鼠标把它拖回原来的位置。存盘退出。

这一步之前把整个Mud2\DB目录复制一份备份。字段类型一改,如果引擎不认,整个怪物库都读不出来,得靠备份回退。

到这一步就要注意了:改怪物基础经验,服务器里所有玩家的升级速度都会被带起来。如果只是想加速升级,用倍率参数就够了,改Monster.DB反而麻烦。

删DBC里多余的物品

DBC里多余的物品分两种情况,处理方式完全不同,先分清再动手。

情况一,只是数据库里有记录,但游戏里根本刷不出来、商店也不卖。这种是引擎没读到这条记录,或者客户端没有对应的外观文件。删法:

第一步,备份。把D:\MirServer\Mud2\DB整个目录复制一份到别处。

第二步,停服。把M2和登录网关全部关掉。不停服就改物品库,引擎内存里还留着旧数据,改完一下线或者换图又被写回去,等于白改。

第三步,用DBC2000打开StdItems.DB。装好DBC2000后建别名,别名名必须和引擎里配的一致(通常是HeroDB),路径指向Mud2\DB。

第四步,找到要删的物品那一行。建议先记下它的IDX编号和Name。选中整行,按Delete键,或者点菜单的删除记录。删完存盘。

第五步,重启M2,在控制台点控制→重新加载→物品数据库,或者直接重启。然后进游戏检查一下背包、仓库、商店有没有异常。

这一步最容易踩的坑是IDX编号。StdItems.DB的IDX列是引擎内部索引,物品互相引用的地方(怪物爆率文件、商店配置、任务脚本、NPC脚本)用的都是物品名字或者IDX。删掉一个中间编号的物品,后面编号不自动重排,但如果你的版本有通过IDX数字直接写死的脚本,就可能指到别的物品上。所以删之前务必搜一下:

在Envir整个目录里搜这个物品的名字,看看MonItems爆率文件、市场配置(market_def)、任务脚本里有没有引用。有引用的话,那些地方也要跟着删或者改,否则删了数据库里的物品,爆率文件里还写着它,可能出现怪爆出空物品或者报错。

情况二,物品已经不存在了,但游戏里、商店里、怪爆的还是能看到,或者玩家背包里有这么个东西取不下来。这种就不是数据库的问题了,可能是:

客户端补丁还带着这个物品的外观。要去客户端Data目录检查对应的物品图片文件,或者服务端Extract出来的补丁没更新。

角色的存档里还有这个物品的实例记录。这种情况要在角色数据里清,不是清StdItems.DB。

市场(商店)配置里还有这条物品的售卖项。检查Envir\market_def目录下对应的NPC脚本文件。

爆率文件(Envir\MonItems)里还有它。这个最常见,删了数据库里的物品,爆率文件没同步删,怪照样按爆率"爆"这件已经不存在的东西。

所以正确的顺序是:先在MonItems和市场脚本里把引用清掉,再删StdItems.DB里的记录,最后重启加载。顺序反了也不会立刻出错,但会在运行中出现一堆莫名其妙的空爆和报错。

关于批量删,谨慎一点

有人会想用SQL或者数据库工具一口气清掉一大堆多余物品。这里提醒几句:DBC2000不是SQL数据库,没法执行DELETE语句批量按条件删,只能逐条手动删或者在DBC的视图里筛选后删。想批量处理的话,先把StdItems.DB导出成txt,用Notepad++按行处理,处理完再导回空库。

导回这一步最容易出问题,物品库的行格式对字符敏感,多一个空格、用中文空格、行尾多个制表符,都可能让整库读不出来。用Notepad++的话把编码设成ANSI,别用UTF-8,另外用正则查一下全角字符。导回去以后先在测试服跑一遍,看引擎启动日志里有没有"物品数据库加载失败"之类的提示。

四个问题的共同前提

这四项操作都涉及服务端核心文件,动手前把整个MirServer目录复制一份备份,特别是Mud2\DB和Mir200\Envir这两个目录。改完不要在正式服直接上,先用本地单机测一遍,确认能启动、能进游戏、能打怪升级再加人。

真正判断改对没改对的方法只有实测:起个测试号,打几只怪看金币进不进包,升一级看声望加不加,砍怪看经验涨得快不快,翻背包看那件物品还在不在。光看文件里改了没有不算数,引擎有没有读到才是关键。