前言
博主上学那会非常喜欢玩传奇这个游戏,虽然没接受热血点卡版的洗礼,但一点也不影响我对这个游戏的喜爱,传奇私服几乎覆盖了我整个初中、高中时代,多少个闷热的夜晚通宵守在电脑屏幕前,为的就是趁没人的时候,刷几个BOSS,爆点好装备。
由于自己搭建传奇服务端非常简单,所以上学那会就积累了一些自己喜欢玩的服务端版本,在2020年的今天,我又打开了这些十年前的版本,玩起来还是那么经典。传奇的那几个主要的引擎,几乎在2013-2015年之间全部停止更新了,像当时主流的HeroM2引擎以及现在主流的GOM引擎都已不更新,不过GOM引擎功能完善,现在还是有些第三方在做着插件和登录器。而我之前下载的版本用的全都是HeroM2引擎,用起来虽然都没问题,但动态IP这个功能一直很鸡肋。
关于动态IP
如果是用服务器架设那自然是有固定IP的,这里我们不讨论,主要说一说家庭宽带,我们家用宽带都是动态IP,像我这边默认是6天左右换一次IP(据说打电话申请最长可调整一个月),像我这么懒的人,不可能说外网IP换了就去更新重启一下服务端,我肯定是没那毅力的 :smirk: 。这里我看到了引擎控制器上有一个动态IP选项。

我这边的软路由里面是绑定了动态域名解析的,所以外网IP变化之后,域名还是能够重新指向新的IP;GOM引擎果然是强大一些,开启动态IP模式之后,外网IP就算更新了,只需要退一下游戏,重新打开登录器就又连上了 :+1: :+1: :+1: :+1: 。但是HeroM2引擎就没那么强了,开启动态IP模式之后,外网访问是不开门的,卡在这个界面了!

动态IP模式的优点及原理
我自己本身是搭建了一个E3的itx小主机用来做24小时开机的服务器的,但我没有固定IP,那玩意太贵了。这个时候引擎的动态IP模式就很有必要了,他几乎实现了固定IP的体验,不必因为IP的变化而去重启服务端。按照传统操作,就算你登录器上是动态域名,但外网IP变化之后,你还是需要停止服务器,重新配置IP,启动服务器。在重启M2Server的时候,你服务端的挂机信息,怪物信息,一些活动脚本全部都重启了,体验太差,动态IP模式的话只会用户掉线,重新打开登录器登录即可,服务端的信息都还在,体验虽然称不上完美,但已经相当不错了。
动态IP的原理就是登录服务器网关能够自己获取公网IP,用户登录器向服务端请求登录信息,登录服务器网关返回登录IP和端口,用户输入账号密码之后,请求登录网关,门打开之后进游戏。
HeroM2动态IP模式存在的问题
这里我要介绍下家里的网络情况,家里是软路由连接光猫进行拨号的,家里的所有设备通过交换机接入软路由,这是很普遍的大众情况。
HeroM2和GOM都有动态IP模式,但GOM的更加智能,GOM能够在有路由器的情况下自动解析路由器动态IP,这样用户能够得到正确的登录地址。而HeroM2则没有这个功能,HeroM2引擎开启动态IP后,外网卡在开门的界面,卡住之后我打开CMD,输入netstat -ano之后发现登录器访问的登录地址是192.168.2.119:7100,这个是我这台虚拟主机的内网IP,我在公网IP的电脑上肯定是访问不了这个地址的。也就是说HeroM2的动态IP功能是把系统第一张网卡的IP地址返回给用户登录,所以如果你的系统是直连光猫进行宽带拨号的,那这个HeroM2的动态IP功能是能正常使用的,如果中间加了路由器,那这个功能就废了。
解决思路
1、既然是返回第一张网卡的IP地址,那我有没有可能创建一个虚拟网卡,然后把虚拟网卡的IP设置为公网IP,每次更新IP后通过脚本改变这个虚拟网卡的IP地址。这个想法在验证的时候发现没啥用,不管怎么设置虚拟网卡,他返回的都是内网的那个IP地址。
2、既然GOM引擎的功能能正常使用,要不换一个引擎。这个理论是可以实现的,但是工程量浩大,且繁杂,意义不是特别大,不适合我这种懒人。
3、HXM2(幻想引擎)兼任Hero,网关上也有动态动态域名模式。最终因为登录器问题以及乱七八糟的体验,没有折腾下去。
4、能否写一个程序,在每次IP变化之后,重新配置DBServer和LoginSrv的ip,然后关闭DBServer.exe和LoginSrv.exe进程,再重新启动这两个网关,这样主M2Server不受影响,也变相实现了效果!
通过重新配置服务端和启动、关闭服务端,最终验证第四个方法是可行的,我重新配置游戏控制器,搜索服务端文件,发现只修改了5处txt配置文档,分别是:
D:\Mirserver\Mir200\!Servertable.txt //发现Mir200这个配置信息其实没什么影响,直接写了127.0.0.1
D:\Mirserver\DBServer\!serverinfo.txt
D:\Mirserver\DBServer\!addrtable.txt
D:\Mirserver\LoginSrv\!addrtable.txt
D:\Mirserver\LoginSrv\!serveraddr.txt
那我只需要关闭引擎的动态IP功能,写一个程序就可以完成上述操作了。
程序实现
想到要做窗口程序,一开始准备回顾下大学学的C#,看了下Visual Studio的安装包大小,默默地关闭了下载页面,打开了隔壁的易语言编程工具。这里要喊一句:易语言 YES!
对于有编程经验的人来说,易语言入门是真的是毫无门槛,丰富的支持库,只需要敲几行命令就能实现想要的功能,不要太方便!!



终于可以安心做一个懒人了,有事没事打开登录器上去刷刷怪,这里再夸一句GOM的假人真的做的太真了。。我这搭了好几个版本,登录器晚些放到博客来,有缘的喜欢传奇的可以下载一起玩~
Comments | 19 条评论
有这个命令文本吗,可以发一个给我吗, 你QQ多少啊
有这个命令文本吗,可以发一个给我吗, 你QQ多少啊 我能加你吗 ,要不你加下我QQ 9059951
@中央空调安装 这里就提供了一个思路,实际程序使用过程中有问题,后来春节玩了一个服解瘾了,就没继续折腾了。。主要问题在于断网之后,外网IP获取失败,这个时候程序在网络恢复之后不会继续比较,问题的解决思路是对的。
@hellozjx 这个软件你有吗,可以发一个给我吗9059951@qq.com
在吗 ?
解决HeroM2引擎动态IP模式下外网不开门的问题
我这里用telnet获得光猫超级密码后去光猫上设置了虚拟服务器但是扫描光猫公网IP端口发现对应端口根本没打开换了好几个端口都打不开。
@无名氏 为啥不用路由器进行拨号呢,功能我感觉比光猫好多了呀,普通宽带不同地方的端口屏蔽情况好像也不一样的
兄弟你好 我想请假下 你的登录器配置列表支持填写动态域名吗?微端填写外网ip地方支持填写动态域名吗?
@悔 GOM的应该是可以写域名的。。具体的我也忘了,当时喜欢折腾,后来又没深入弄了。
GOM的动态Ip能在有路由的情况下,自动穿透路由获取外网Ip么?我测了一下没成功,直接填写公网就可以用,不知道楼主用的什么版本号的M2,方便说下么?
@仗剑走天涯 太久没去折腾了,忘记了,应该是1108版吧,GOM是能够获取外网的,HeroM2获取不了,当时的测试好像是这样吧,有点记不清了。。
求大佬发一份这个软件190731160@qq.com 万分感谢!!!
求大佬发一份这个软件190731160@qq.com 万分感谢!!!
@你好 你好,这个当时是用易语言写的,后来发生疫情了,在老家没继续折腾,现在一下子找不到了,在实际使用中会有一些bug就是在断网之后一定时间内没有恢复网络连接会一系列操作错误,这里就提供个思路。
能帮我解决问题吗????
我有个同学也喜欢玩传奇,以前给他开过一个,就他一个人玩,还玩的贼嗨。
不过我没玩过传奇,不懂哪个版本好玩,也不知道怎么给他刷顶级道具,估计开着给我那同学当单机也很快会玩腻。
我喜欢玩CABAL惊天动地,目前也开着一个私服当单机玩,在群晖的虚拟机上,服务端是CENTOS,我是写了个shell脚本,定时检测WAN口IP变化,变了就更新,重启服务,也算是永久开服了。
绍兴打电信客服 可以让IP 长久一点?我家3天左右就变 了
@divib 理论是可以的,但也有可能客服会说没有权限修改啥的,看运气。。
@hellozjx 失败了,,, 客服转技术,技术直接回复:IP全省统一4天一换,不能改
可以分享下 你的传奇端吗?架设给朋友玩下,
他说喜欢玩 90/93 虎威版本,有天宫和终极地图冰雪殿 ,终极装备 虎威一套 虎威戒指,
我不懂传奇