前言

  自打自己开始弄手游之后,确实遇到了各种各样的问题。各种坑居多,不过也都算顺利,借助搜索引擎以及各大论坛,差不多都算解决了,还有很多bug,倒也不是短时间内能修复的,而且也无关痛痒,也就懒得再深究了。
  在遇到问题通往解决问题的过程里,真的是痛并快乐着,被问题卡住,真的是寝食难安啊,弄明白原理,自己独立解决之后,感觉也真的很好,可很快就会遇到新的问题,这种感觉。。。真的一言难尽。
  其实网上关于游戏搭建的资料和解决方案很多,不过论坛上大多都收费,而加各种群请教了很多大佬,要么左顾言他,要么有偿价格不菲,这简直触碰我这白嫖党的底线了~知识不应该是人类共享的么!!!
  好了,不扯淡了,凭记忆分享些部分我遇到的问题以及解决方案吧,欢迎讨论补充。

幽冥传奇

  手游幽冥传奇目前也是比较火热的,不过里面坑也不算少,需要修复的已知问题有如下问题:

  1. 一键双区版的2区没法启动
  2. 通天塔每5层闪退
  3. 一直提示飘屏广告
  4. 英雄技能显示不正确(如战士英雄半月弯刀技能)
  5. 很多药水不能使用
  6. 最低阶装备也全屏通报
  7. 英雄战力只显示为物攻、魔攻或者道术
  8. 装备合成只能到宙级
  9. 装备一键回收只能到18阶
  10. (未完待续)

   其中修复了前 6 个,还有些问题在陆续更改。先说下这些吧

一键双区版的2区没法启动

  造成这个问题的原因是原文件里的配置文件格式有问题,将1区的LogicServer目录复制过去,修改一下端口及区号就可以完美修复了。

通天塔每5层闪退

  这个问题应该是之前人修改的时候,在每层加入了元宝奖励,虽然是好心修改,可这也导致每五层的奖励项由原来的3个变为了4个,于是数据库接收到的数据长度就与程序设定的字段数不一致,导致报错退出。
修复方案就是,将每5层的元宝奖励去掉,或者去掉经验或者洗练符什么其他的,保持奖励项仍为3个,即可不再报错。文件修改路径为build_pub\Server\LogicServer\data\config\fuben\SkyTower目录
在这里插入图片描述

飘屏广告

  如果还没开区,则可以在数据库里修改,连接数据库,找到cq_gstatic库就可以看到了。进服公告也可以在这里修改。
如果已经运行一阵子了,那修改数据库就没有用了,也可以修改生成的本地文件来实现修改。文件路径为build_pub\Server\LogicServer\data\notice.txt

英雄技能显示错误

  技能或者物品的显示错误,其实都是在客户端上修改的,不过我们直接去修改客户的客户端还是比较麻烦的,而这个幽冥传奇恰好也支持热更,我们可以用热更的方式,将正确的命名文件放进去,就可以显示正确了。
方案:将www\dev\data\scripts\config\server\language\Zh-CN\Skill.lua中的错误改正,然后用CRC工具算出新更改文件CRC-32的校验值,在list中写入正确的校验值以及字节大小,在打包为list.zip文件,并将新的list.zip文件大小写入version文件中,然后把版本号调高一些就可以自动更新了。

药品使用不了

  这是因为服务端配置出了问题。在服务端中定义了物品的各种属性,一般比较常见的是将物品的type定义错了,例如如果type=102,即为材料,是无法使用的,改为type=103就是药品了,就可以正常吃掉了。有些吃掉没有正确效果的。是因为scriptitem没有定义正确。关于物品的一系列设置都在目录build_pub\Server\LogicServer\data\config\item,详细单个物品设置在子目录ItemClass。物品设置比较复杂,欢迎私下交流,这里不占用篇幅过多介绍了。

低阶物品掉落通告

  也是在build_pub\Server\LogicServer\data\config\item\ItemClass中具体单个文件设置,将其中一个参数dropBroadcast = -1修改为dropBroadcast = 0即可,不要忘记结尾,,否则会报错,启动不了区服。

战神引擎

  复古传奇手游,差不多战神引擎算是目前做的做好得了,真的是完全的复古,复古到我觉得玩起来有点累。。。不过也正是因为对端游的还原度高,导致比较受追捧,所以端和教程虽然满天飞,但大多收费,流出的一些分享的端,也很多是残端,放出来寻求帮助修复的。所以战神引擎搭建的失败几率真的太高了,问题也五花八门,不尽相同。我这里在服务端是完整版本的前提下,来一一解决一下,为后来人提供一些思路与方案。

mongodb服务

  一般教程中,第一步就是安装mongodb数据库(配必备的.NET环境其实可有可无),一般都是三步:

  • 双击安装包mongodb-win32-x86_64-2008plus-ssl-3.4.9,安装,在双击robomongo-0.9.0-rc10-windows-x86_64安装包,第二个其实是连接工具,不装也不影响我们搭建,安装这个是为了方便小白测试和排错的。
  • 进入mongodb的安装目录下的bin目录找到mongodb的执行文件,创建mongodb服务。也就是按住shift,右键打开命令行工具,输入命令mongod --config "D:\MongoDB\config\mongo.cfg" --serviceName "MongoDB" --install
  • 第三步就是启动mongodb服务了,net start mongodb

   这个的前两步一般都没什么问题,不会出现任何报错,不过第三步的时候我就遇到了问题,提示说服务没有响应控制功能
   我检查了下win下的服务项,路径看下图
在这里插入图片描述
在这里插入图片描述
   mongodb程序路径和配置文件路径都是对的,如果不对的话,确实会报这个错误,导致服务起不来。可是我这不是啊,实在没有办法,最后我尝试之际使用命令行通过指定配置文件的方式来启动mongodb服务,尝试了下,果然可以以前台进程的方式来启动服务,命令为mongod --config "D:\MongoDB\config\mongo.cfg",检查了下默认端口27017,也用robomongo测试了下,是可以连接的。于是这一步算是解决了(可这也为之后,一直进不去游戏留下了隐患,之后再提)。

m2

   所谓m2,其实就是mysql服务。不同的版本启动mysql的方式也不太一样,有的直接用的phpstudy 将apache和mysql一起启动的,这也省去之后做nginx的虚拟主机开多个端口了。有的版本是通过脚本命令行方式启动,如果没有可以尝试自己进到mysqld.exe所在目录,用命令行命令,``mysqld.exe –defaults-file=”D:\m2\mysql\my.ini”前台启动就可以了。如果实在起不来,检查下端口占用情况是否3306端口被占用,或者配置文件my.ini指定的数据库程序路径或者数据库路径不正确。一般来说都不会有太大问题。如果端口被占用,或者启动了其他的数据库,可以将其他数据库的端口改为3307,战神引擎这个端口改成3307之后,DBserver改不了端口,也就链接不了数据库了,所以还是改别的应用的端口吧。密码就是默认密码,我试了那么多版本的端,倒是没有人该多密码,密码都是相同。

m2.0

   这个算是引擎的主程序了之前都是配套数据库罢了,mongodb用来储存账号相关信息,用来验证登录,而游戏人物数据都在mysql中。所以这一步的环节,就是各项服务读取数据库信息后并相互连结,里面东西说复杂也复杂,说简单也很简单。对于初学者来说,真是一步一坑,对于老手来说就没什么难度了。每个目录做什么的,我这里就不再废话了,直接就大家关心的各种问题来做解释吧。

显示获取版本信息失败,请检查网络连接,是否重试

在这里插入图片描述
  这个错误其实很简单,不过这也说明第一步也没弄对啊。一般来说出现这个问题是因为没有获取到project.manifest文件和version.manifest,原因有很多,检查的话可以用浏览器输入你的IP或者域名后跟上面两个文件名,例如http://127.0.0.1/version.manifest(在服务器上的要填公网的ip或者域名)。

  • 如果能正常访问,说明是客户端修改IP没有修改对,去看下客户端\assets\res\project.manifest文件的ip是否修改正确。
  • 如果浏览器也不能访问,则大概率是assets目录位置不对或apache配置文件路径设置有问题,当然也有可能是客户端的project.manifest修改的IP不正确,如果能实现用浏览器访问此文件的得到的内容也为访问路径IP,说明应该配置没问题了。
  • 如果浏览器能访问,手机客户端还有服务器都配置没问题了,还是显示这个报错,那就检查下手机能否联网,或者此APP是否有权限联网,或者用域名的的检测下DNS解析,再或者局域网搭建的看看是不是一个网段(例如忘连接wifi了或者虚拟机设置的NAT模式网卡)

   这个报错很容易解决,以上方案应该囊括了所有情况。

战神引擎更新进度100%后卡住

  这个问题也很常见,不过原因倒是比较简单。因为战神引擎的设置,更新用的端口是88,而更新之后获取列表及访问登录是用的8088端口,方便我们更新服务器和游戏服务器分离开来。前者大概率是phpstudy一键的,所以不会出什么问题就可以开始更新。而从客户端的project.manifest获取更新服务器信息更新完之后,会从客户端的mir2.zip及mir264.zip中读取游戏服务器(这三个文件是不是很眼熟~)。而在这里出问题要么就是服务端的8088端口无法访问到,要么就是客户端修改mir2.zipmir264.zip文件时IP没有填对。测试方法还是通过浏览器访问IP:8088端口(英文输入法的冒号),测试是否正常访问,战胜引擎的默认主页是有一个hello world来测试访问的
在这里插入图片描述
  如果可以正常访问,大概率是客户端那两个压缩包里的IP不正确了。教程里一般都写明了,要修改为16位IP,位数不够用0来凑。但是到底怎么算16位IP,而且到底凑在哪,却都没有提到,造成很多误解和困扰。我这里大概说一下,需要注意的有两个地方:

  1. IP中的.也算一位的,所以实际上数字要有13个。
  2. 如果IP为111.222.123.123,可能大家都知道,在最后一个123前补0,即可凑齐6位,为111.222.123.0123。不过如果IP为111.22.123.123这种的呢,0补在哪。大家都说法是都可以,问题是我将两个0补在22的位置变为0022后还是连不上,改为111.22.0123.0123之后就可以连上了。所以我推测这个原则是先从后面补齐,每个数字也不要超过4位。也就是说1.1.1.1补齐的话,应该是1.0001.0001.0001。上面俩肯定正确,不过最后的结论个人推测,没遇到过这么短的ip,没有实践过。欢迎大家批评指正。

  如果端口能访问,客户端也修改正确ip,那就很有很能会遇到下面这个报错——获取开发者区服信息失败

提示获取开发者区服信息失败

在这里插入图片描述
  这个算是战神引擎新手搭建很容易遇到的问题。究其原因,是你没办法访问到D:\mud2.0\logincenter\logincenter_win\config\serverlist.json或者访问到之后无法通过PHP传奇登陆参数去登录。但是造成此问题最大的问题是因为你的服务端是残端或者被人动过手脚。。。
  真的,我遇到几个版本的战神引擎绝对是有人故意改了配置,改法不尽相同,但都会报这个错误。下面列举我遇到的恶意改动。

配置文件被做了手脚

  因为是提示获取开发者区服信息失败,所以我第一个想到的就是文件路径不对,用户客户端定义获取区服信息是通过访问服务器的/serverlist路径。一般来说想访问此路径获取到到此文件有两种方式,一个是在lua程序中定义。另一个是在nginx里面设置alias。
  这两种修改的我都看到过,先说第一种。第一种方式访问区服列表的,nginx只起到一个代理的作用,不指定路径,因为在logincerter_win目录中已经定义好了访问规则,如下图所示,定义了访问/serverlist路径则去访问下application/controllers/serverlist.lua,而文件又定义了serverlist.json的位置,所以就可以正常获取区服表了。

在这里插入图片描述
在这里插入图片描述
  不过我遇到有的版本,估计把这个serverlist.lua文件中的路径设置错误,或者把下面开服表内容删掉。因为不同版本开服表信息并不通用,而且名字要相互间匹配,所以如果没有开服表信息或者是错误的,那就比较难解决了。建议换个端试试吧。
  第二种修改nginx的改动就比较好修复了。这种版本的在nginx的配置文件中定义了alias,来实现访问/serverlist路径可以获取到区服表,但是如果这一条alias如果被删掉了,或者故意改错,那就无法访问到正确的文件了。我遇到过一个版本,也是72的,正常来说应该访问/serverlist路径,直接定义到serverlist.json文件本身,可他这个配置文件却是定义到config目录本身,难怪我看nginx日志一直报403,权限拒绝。
在这里插入图片描述
  所以需要将后面路径补齐,正确的为alias D:\mud2.0\logincenter\logincenter_win\config\serverlist.json;,记得nginx配置文件每行分号结尾。
  不过也有版本修复了上面的问题后还是不能正常登录,我倒也没发现到底是哪里被做了手脚。不过这个logincenter_win目录倒是通用的,找一个没被做手脚的,将里面的serverlist.json、serverlist.lua换成自己的,就可以用了,非要修复反而很麻烦,毕竟搞破坏比修好容易太多了。

战神引擎区服列表为空或不显示

  最开始显示了测试服务器登录,也输入了要进入的区服,还提示了是否进入”XXXX”,点了确定进去之后,区服列表竟然是空的。这个问题大概率是因为serverlist配置的不对,检查下serverlist.json吧,版本名字都要匹配。
在这里插入图片描述
  客户端如果用的版本不一致到也有可能出现这种情况。

战神引擎获取该区补丁失败

  这个问题就是上面的截图中的那个ConfigName条目里填写的文件获取不到了。如果能到这一步,说明端口连通应该是没问题的,应该有两方面原因

  1. 检查nginx配置文件,有没有如下代码
          location /downloadconfig {
            alias D:\mud2.0\logincenter\ClientConfig;
            allow all;
            autoindex on;
            autoindex_localtime on;
        }
  2. 查看D:\mud2.0\logincenter\ClientConfig目录下有没有ConfigName条目后面跟着的对应文件,如果有其他名字的文件,改上面的截图中的那个ConfigName条目就可以了。

战神引擎选择完区服之后不开门

  好不容易连接上了服务器,区服信息也显示了,历尽千辛万苦到最后,竟然半天没人开门。这真是气到吐血啊。
  出现此问题,肯定是因为mongodb出了问题,连接不上。

mongodb自身问题

  上面提到,当时启动mongodb是一直报错,后来用命令方式启动起的端口和服务。这样虽然以前台进程方式启动了mongodb服务,也可以通过测试,甚至连接进去查看数据,可以好像战神引擎不认。。。
  其实我mongodb一直无法启动的时候就应该想到,为什么无法用服务方式启动。那是因为云主机默认只有一个C盘,我当时不是纯净系统,上面还跑着其他端,没法直接从C盘压缩卷再创建一个D盘,于是我是通过共享目录在映射网络磁盘的方式,生成了一个D盘(其实还是C盘下的一个目录而已),而这样虽然mongodb通过命令行可以启动,但是等到系统服务方式启动的时候,他就不认这个映射关系了(我用subst命令生成本地磁盘也试了,还是不能访问)。就相当于找不到数据库或者配置文件了。类似linux中很多配置文件中不能存在软链接一个原理吧。
  所以解决方案就是通过原路径C盘目录下来指定配置文件(毕竟文件本来就在C盘),而不是D盘目录下的那个路径了。或者直接把mongodb整个数据库和配置文件目录都拷贝到C盘任一目录下,毕竟这个服务只是需要一个端口来连接就可以了,具体数据库在哪无所谓的。
  修改之后,以服务的方式启动,战神引擎就可以正确连接mongodb数据库,也就可以往里面写入账号信息了。不开门就是因为连接不上mongodb数据库,无法写入信息。

mongodb连接端口被人改掉了。

  如果mongodb本身没有问题,还有就是这一种情况,连接mongodb的端口被人换了。 大家都是用的都是别人设置好的脚本来启动,也不需要检查各种配置文件,而有人把其中配置文件的端口换掉,你自己验证还是很难发现的。
在这里插入图片描述
  请检查此文件中的端口是否是默认端口27017,我遇到了个还是72家族的1.85版本这个端口竟然写的27099,通过27099端口怎么也不可能连接到mongodb去验证的!卖端就算了,还要逼你掏钱修复买教程,真的太损了。

其他原因

  毕竟搞破坏太容易,一人作恶,百人都挡不住啊。还很有可能是其他地方也被改掉了,我目前没遇到而已。欢迎大家修改补充。

  如果有用,请帮我点赞~

  本次就说这么多吧,之后有想起来的再令行补充,不过实在修复不了也不必太执着。。。


一个低调的男人