写了第一篇配置指南之后,很多人向我咨询有关战网搭建的问题。于是觉得很有必要把若干常见的问题,和常用的进阶配置汇总一下,以方便更多人。
1.游戏版本和PVPGN与D2GS版本的问题。
PVPGN建议选择1.8.2及以上的版本,最新的标准版为1.8.5可以在http://pvpgn.berlios.de/index.php?page=files查找下载,如果玩的人较多,建议使用MySql版,小范围测试和体验的,任意版本都可以。游戏版本和D2GS的版本是对应的,也就是说如果你要搭建1.10版的暗黑的战网,那么你就要用1.10的D2GS,1.10版本的D2GS请到http://d2dev.dlg.cn/查找下载。支持1.11b游戏版本的,由Marsgod大人继onlyer之后通过反汇编的形式改进,最新版本build(43)可以在http://www.pvpgn.pl/d2gs/查找下载,1.12a的用户较少,这里就略过不提。
错误的PVPGN版本与D2GS版本的搭配,会造成PVPGN启动失败,以及诸多的游戏问题;错误游戏版本可能会造成PVPGN、D2CS或者D2DBS启动失败,也可能造成进入游戏后登录战网,无法创建人物,或者创建了人物无法进入游戏等问题。 这里要提醒大家注意的是:你的服务器端,尤其是D2GS,必需放在一个可用的暗黑2游戏文件夹当中。如果你的暗黑2没法玩单机的话,那么创建战网后,必然导致排队1的问题,也就是D2GS.EXE无法正常启动。
2.配置文件的相关问题。
简单的可用配置,需要修改以下文件:d2gs.reg(应该位于游戏目录下d2gs.reg修改完成后需要双击添加进注册表)、d2cs.conf、d2dbs.conf、realm.conf(应该位于pvpgn/conf目录下),这三个文件每次修改后都需要重新启动服务端才可以生效。
客户端可以登录战网,可以注册新账号并登录,但是提示无国度,或无法法连接国度服务器的及类似问题,多数是由配置文件修改不完全,配置错误引起的;还有可能是因为IP地址的错误引起的。
内网搭建服务器,并且要求内网和外网都可以访问的,需要修改address_translation.conf文件(位于pvpgn/conf目录下),找到所有类似于#192.168.1.100:4000 internetip:4000 192.168.1.0/24 ANY的行,去掉行首的#号,192.168.1.100改成服务器的内网IP,internetip改成外网IP,192.168.1.0/24这里是重点,如果你的内网只有192.168.1.x这个网段,这里就应该是192.168.1.0/24,如果是192.168.0.x这个网段,就应该改成192.168.0.0/24,如果有多个网段,通过路由互联的,网段之间要用小写逗号隔开。如192.168.0.0/24, 192.168.1.0/24。另外要注意的就是,服务器端用到的端口,请先在路由器或者防火墙中映射好,4000、6112~6114……。
创建游戏总是排队1,或者只能创建1个游戏,再创建就排队;这多是因为d2gs.reg修改不当造成的,记事本打开d2gs.reg,找到"MaxGames"=dword:00000001,修改为"MaxGames"=dword:00000064(这里是16进制,64=100),记得修改完成后双击注册,并重启服务端。
其它原因引用攻略中的一段文字
游戏排第一位的问题 这是个最让人头痛的问题,但大部分还是能解决的!出现排位1的问题要从以下几个方面入手
1;没有gs或者gs没有启动
2;gs配置不对,修改注册表文件d2gs.ren中的ip为你的d2cs的ip地址
3;d2dbs.conf和d2cs.conf中没有添加gameservlist
4;gs版本和d2cs不配套
5;gs console中设定的maxuser和maxgame有误
6;使用了安装版的暗黑游戏(包括正版),我遇到过这样的问题。
7;导入的GS端的注册表文件{d2gs.reg}中 "D2CSSecrect"="NENU" 这个选项非空或者和国度名不符
8;在Win64位操作系统中搭建服务器后出现排队1问题的,请访问此链接:Win64位操作系统无法运行暗黑2战网D2GS的解决办法
找不到国度,大多数是d2cs或d2dbs服务的故障,而可能导致故障的原因有很多种,这就需要检查d2cs.log、d2dbs.log文件(位于pvpgn/conf/var目录下),打开日志文件,重点查找“erro”、“fail”字眼的行,大致分析出出错的原因。其它PVPGN相关的服务也经常需要用到日志文件排错,可以先删除现有的日志文件,然后重历错误,再检查新的日志文件。
另外,下载的D2GS压缩包中,通常都带一个“暗黑服务器攻略V0.3.chm”帮助文件,这是个新手搭建战网的好参考,建议多看看。 怎么使用MySQL作为用户数据库呢,在pvpgn/conf目录中找到bnetd.conf,删除原有的生效的storage_path(特点是前面没有#号),找到# storage_path = sql:mode=mysql;host=127.0.0.1;name=PVPGN;user=pvpgn;pass=pvpgnrocks;default=0;prefix=pvpgn_一句,去年前面的#号,修改host为MySQL服务器的IP,name为数据库名(要先在mysql中创建一个同名的空数据库),user用户名,pass密码,其它不用动。
3.战网游戏问题
再说排队1,最近遇到把服务端放在一个1.11b的覆盖补丁里面,而不是一个完整可用的1.11b游戏目录里面,结果导致总是排队1的问题,主要体现就是,进程管理器中的d2gs.exe总是上下乱跳,那是因为d2gs服务总是启动它。
可以进入战网,也可以创建人物,并且创建游戏后也不排队,但总是创建游戏失败:这通常是游戏版本错误或者游戏文件不完全造成的。检查你的d2gs.log文件,寻找Failed字样,来判断真正产生错误的原因。最近遇到因为d2dbs无法存取用户人物存档文件造成总是创建游戏失败的问题。这样的需要先检查有没有启动d2dbs,或者启动之后有没有出错。(最近在一个server2003服务器上配bn,发现权限问题也会导致游戏的创建失败,有两个权限要设置,一是pvpgn文件夹要有“Everyone“的完全控制权限,二是d2cs服务登录账号的权限)
战网中,选择人物双击进入后的屏幕左半部的文字,可以通过修改news.txt来更改,更改后请将编码改为ascii,进入频道之后左半部分显示的motd可以通过修改bnmotd.txt来更改,bnmotd.exe每行必需以%I开头,其中的一些语法可以参考pvpgn\docs\bnmotd.txt;新闻和motd文件都位于pvpgn\conf目录下。创建游戏后屏幕左上角显示的欢迎信息需要修改d2gs.reg中的"MOTD"项。
如何添加一个战网管理员。非数据库版本的,要修改usr目录下的同名acc文件,用记事本打开,在最后一行加入"BNET\\auth\\admin"="true",MySQL数据库版的,要打开pvpgn_bnet表,找到你的同名acc,修改auth_admin字段,并修改为true。关于管理员命令,这里就不细说了,可以去网上查。
如何Telnet管理战网,pvpgn战网的telnet有两种,一种是telnet到gs,一种是telnet到pvpgn;到gs的这一种需要在命令模式输入"telnet gsip 8888"来登录(gsip就是你gs的IP地址),默认密码是"abc123"。第二种要修改bnetd.conf文件,找到#telnetaddrs = ":23"一句,去掉前面的#号,在:23前面加入服务器的外网IP,如果是内网管理,就加入内网IP,用户名和密码就是管理员acc和pass(这种跟你在游戏中进入频道聊天是一样的)。
如何防止更多的bot,这个除了用最新的带d2warden的d2gs1.11b(bulid43)之外,可能目前没有太好办法。不过43的warden已经可以防止d2jsp等早先流行的bot。另外91d2战网利用PVPGN的versioncheck功能来检测是d2load是否bot启动,但这种方法对相关技术的要求较高,并且需非常熟悉versioncheck。
如何初始化ladder的排名,这个非常简单。假设你定在2010年1月1日00:00:00要对服务器重新开荒,请打开b2cs.conf文件,找到ladder_start_time行,把后面的0改成2010-01-01 00:00:00(format: yyyy-mm-dd hh:mm:ss)然后,删除pvpgn/var/ladders中的所有文件。(注意,当修改了天梯开始时间之后,在这个时间之前所创建的所有char,都将变成非天梯人物)
出DC的相关设置,请参考我早先的总结 http://www.cnblogs.com/shalves/p/5147804.html
4.多国度互联,共享人物数据相关研究。
2009年10月31日:今天正好有时间,初步研究了一下多国度互联共享人物数据的问题。得出结论如下:
要在主服务器上运行N个独立的D2CS,并且每个CS的配置文件d2cs.conf中,关于人物存档的路径,要和主服务器上其它CS的路径一致,也可以用为D2CS.EXE快捷方式,并为这个快捷方式的目标加" -c c:\diablo2\pvpgn\conf\d2cs2.conf ”参数的方法来启动多个D2CS(就像给d2loader加 -w -ns之类的启动参数一样)。你的每一份d2cs.conf中的serveraddr项都要使用一个不同的端口。要在国度服务器上运行一个独立的D2GS。 在配置国度服务器的时候,建议先按照单机的步骤,测试可用了,再配置成独立gs的国度服务器。
下面我举一个例子来说明怎么搭建多国度并且共享人物数据。
假设你有两台电脑作为服务器,pc1和pc2。pc1的ip地址为192.168.1.101,pc2的为102。
再假设你的pc1和pc2上都已经各有了一个可用的单国度,分别为d2server1和d2server2(怎么配置单国度服务器端请参考我的配置指南)。
再假设你想将pc1设为主服务器,就是战网的6112端口服务器。
那么先修改pc1上的pvpgn/conf/realm.conf文件,在原有的国度下面添加一条"d2server2" "d2 close battle net" 192.168.1.102:6115,修改完成后保存。还要修改pvpgn/conf/d2dbs.conf文件,找到gameservlist项,在原有的IP地址后面加一个逗号,并添加pc2的IP 192.168.1.102(像这样的gameservlist = 192.168.1.101,192.168.1.102)。
然后copy一份pvpgn/conf/d2cs.conf文件,重命名为d2cs2.conf。在里面修改realmname项为你的第二国度名称d2server2;修改servaddrs项,IP不要动,把端口号改为6115;再修改gameservlist项,把IP改为pc2的IP 192.168.1.102。
找到pvpgn/d2cs.exe,为其创建一个快捷方式,并为快捷方式增加启动参数 -c c:\diablo2\pvpgn\conf\d2cs2.conf,(注意-c前面有空格,这里的路径你应该按照你实际的路径来,这个d2cs2.conf就是刚才copy并修改的那一份)。
再转到pc2上来,找到pc2上服务器端的d2gs.reg;先注册一下,然后运行regedit打开注册表编辑器,按照HKEY_LOCAL_MACHINE\SOFTWARE\D2Server\D2GS的位置去找D2GS项。找到后展开,在右侧修改里面的内容。修改D2CSIP和D2DBSIP项,为pc1的IP 192.168.1.101;修改D2CSPort项为十进制的6115;
最后要做的就是保证pc2上的服务端与pc1上服务端中间D2Server.ini是一致的。
到这里配置工作就完成了,先在pc1上依次启动pvpgn、d2dbs、d2cs、d2gs服务(或者用我建议的start server.bat);然后再启动那个加了参数的d2cs.exe的快捷方式。最后,启动pc2上的d2gs服务。 客户端所用的注册表文件,里面应该用pc1的ip,因为pc1是主服务器,启动了pvpgn。希望你是一次就配置成功了的!
另外我还小研究了一下多国度不共享人物数据的方法,而且我觉得这样似乎比共享数据更有意思。下面说说大概原理。
大家都知道d2cs主要负责国度和char,看名字Diablo 2 Character Server就明白了嘛。d2dbs主要负责数据交互和人物的存取;pvpgn主要负责开平台、6112端口、和负责acc;也就是说如果pc1上已经运行了pvpgn,那么pc1就是主服务器,这个时候pc1上配置了realm.conf(添加一个国度,比如"d2server2" "d2 close battle net" 192.168.1.102:6113),pc2上如果正确配置了d2cs.conf文件(主要是里面的bnetdaddr,要是pc1的IP);当pc1上的服务端启动之后 ,再启动pc2上的d2cs.exe,就会发现多了一个国度,并且这个国度里没有人物数据。创建新的人物之后,文件被保存到pc2的pvpgn/var/charsave中去了。这就实现了不共享人物数据;再在pc2上再启动d2gs服务和d2dbs.exe(这两个的配置都不用修改,不启动d2dbs.exe会无法创建游戏),就完成了一个多国度不共享人物数据的战网。
5.我最近打包的简单配置版。
请到91D2论坛下载http://bbs.91d2.cn/read-htm-tid-748127-page-e.html#a,这是我10月18日,打包的KT-D2版本,里面附带了傻瓜式的配置说明。
2012年1月3日 :断断续续还是有很多网友向我求助,本来我有心做一个一键安装包,但无耐我只是一个.net 程序员,就算做一个exe,还要让用户再安装.net框架,有点得不尝失了。所以,今天还是做了一个更傻瓜的安装包,只需要修改IP地址和复制文件就可以了。省去了用户自己去下载和整理服务端的麻烦。
下载地址:http://ishare.iask.sina.com.cn/f/22578217.html
版本:Pvpgn1.8.5 + D2gs1.11b(build46),客户端支持 暗黑破坏神2毁灭之王v1.11b
说明:还是一个压缩包,包内有安装说明,一切照安装说明来就可以了。因为时间关系没有测试,有发现问题的,及时跟帖指出。
2013年补充:
-
在帐号文件增加了"BNET\\auth\\admin"="true"但是执行GM命令却提示“This Command is reserved for admins”
解决办法,再往文件中增加两条: "BNET\\auth\\command_groups"="255" "BNET\\auth\\operator"="true"
最终版本(原创文章,转载请注明出处http://hi.baidu.com/roleya/blog/item/a0dade1738730603c93d6dd7.html)