关于传奇herodb登陆器引擎的问题,懂的进...

我开了个传奇,一机双F进新区为什么还是会进到老区,是那里的问题高手帮帮忙... 我开了个传奇 ,一机双F 进新区为什么还是会进到老区,是那里的问题

可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

我们先设置一下主机,看我操作

现在一区设置好了 一区就是 主机看清楚了

可以搜一下宇皓数据,网站上有详细的技术文章解答,其实这个问题很简单,你设置的网关有问题

新区和老区的端口要不一样。。新区要新建一个数据库,HERODB1。看你二区放哪个盘,指个路径

端口问题,两个端口设置为一个了,例如一区的端口设置为:7000 二区就必须设置为:7001 或者其他数字 ,如果也设置 7000 ,那么新区的玩家就会进入老区,若还是不明白就加QQ:915832

这是引擎控制台的主窗口,就是之前说的那个4500行代码的单元,对大神来说,这不算什么,对我看来说,光是理清里边的关系就很吃力.我知道也许从程序的架构角度去理解会好一些,但咱不懂那些,只好继续以一个菜鸟的方式按单元\按页面逐项查看,期待能获得一些营养.

接口部分也有近500行代码,虽然我是初学delphi,但也知道把所有的功能和定义都放到一个单元对以后维护带来很大不变,这份代码是谁写的我不清楚,但是至少不像比较标准的架构,除了重复的复制代码,就是一些嵌套的过程中的过程和函数函数,这恰是我所需要的,让我明白了如何去架构一个良好的可维护的程序,以及很容易让别人读懂的程序,突然我想到了程序设计中面条式的复杂结构,至少能让我知道怎么去避免写一些不容易看懂的代码.

可以看出来这么多的界面集成到一个单元是多么的不容易,我觉得可以把界面封装到几个或几组dll里边,界面只实现与VCL状态有关的代码,应该好维护一点,500行声明有400行是界面的控件声明和过程声明,仔细过一遍发现很多过程实现都在窗体控件的方法里边,重用的可能性几乎为零.也许是早期代码的原因,但是有一点我不明白,delphi是很好的面向对象设计的IDE,怎么前辈们就没有想到或利用呢?开始怀疑这个源代码也许是高手写的初级版本,毕竟较成熟的版本很少拿来开源.

窗口自身的单元不用介绍,看界面就知道是干什么的,其定义的其他方法如下:

{定义时间变量,用于启动脚本和备份脚本} {上述几个适用于检测启动的服务的,异常或停止的通过设置状态重新启动} {下边是定义的私有过程,其实可以放到另一个单元} {启动\停止服务,这里是通过设置状态,然后通过定时器启动,启动方法在GShare里边} {发送进程消息,其实就是将服务的启动状态发送到引擎控制带主界面} {加载RunGate网关的设置,因为不是一个,所以猜测Mut应该是多个的意思} {下边几个是读取地图数据用的,暂时有点理解困难} {处理消息用的两个过程}

实现的部分东西比较多,也比较乱,按顺序一个一个学习,RefGameConsole是重新加载所有配置,为引擎启动做准备.

看着上边好多类似的取值方式,让我想到了继承,可惜之前定义的都是结构,不然可以优化多,这个函数倒不用多做说明,太通俗易懂了.

下边几个过程是将设置写入服务配置文件,都是类似的,也不用多想就可以看懂,一共9个,第一个是调用其他8个的过程,就是主界面上保存设置按钮的事件.

启动和停止服务的过程也不是太复杂,不过我看着怎么就那么"复杂",等待都过完一遍后要从头重新写一遍.

//读取服务启动前的初始化状态,以下类似 //RunGate可以启动8个进程,所以用循环读取

接下来的学习就涉及到了服务启动配置文件和启动设置问题,用到的win API较多,尤其是进程的通讯和消息处理,一个函数需要反复调试多遍我才能理解出一点东西,其中的穿插调用也很频繁,自己先将之前的复习一遍,为后边的学习做准备.

参考资料

 

随机推荐