sf魔域雄霸天下魔域服务端客户端全套官方内部源码 C++

// 帐号服务器,sf魔域雄霸天下设计说明
// 仙剑修,2001.11.12

一、帐号服务器功能分为两部分:

1、客户端登录线程:取得认证ID号AuthenID。
  客户端连接到帐号服务器(以后可改为UDP)
  登录后服务器到帐号数据库查帐号
  返回认证ID号,并断开连接(如出错则返回错误)
  将该认证ID号传给计点线程,转发给游戏服务器,用于玩家登录游戏服务器。

2、实时计点:与游戏服务器连接通讯,计算玩家使用的点数。(可提高线程优先级)
  游戏服务器启动时登录到帐号服务器。
  玩家登录后实时发送计点消息给帐号服务器。
  玩家退出时通知帐号服务器。
  玩家点数耗尽时通知游戏服务器踢人。
  游戏服务器向帐号服务器查询剩余点数(计点、计时、计帐分别处理)

3、主线程:创建两个子线程。处理界面操作。

二、玩家登录时的三方会话
  。客、帐会话:
   。上传:帐户名,口令,游戏服务器名。CMsgAccount
   。下传:帐号ID(错误为0),认证ID(错误时,1为帐号名或口令错,6为点数不足,7为包月超时, 10服务器未开, 11已登录, 12封号, 13计费帐号口令错, 14计费帐号满, 20服务器忙,21服务器满, 999未知(数据库类型错))
      ,游戏服务器IP(或出错文字信息)。CMsgConnect

。帐、游会话:
   。下传:帐号ID,认证ID,客户端IP。CMsgConnect
   。上传:正常时上传开始计费和计费,如不能登录或超时则必须上传一个FEE_END消息。CMsgFee
  ★注意:帐号服务器中的在线表超时时,帐号服务器会重复下传该消息。游戏服务器的超时应该比帐号服务器的超时长。
   但帐号服务器中的在线表不应立即删除,提前删除会丢失同步状态信息。(暂时未回收丢失的在线表,也可半小时后回收)

。客、游会话:
   。上传:帐号ID,认证ID。CMsgConnect
   。下传:多个角色数据。CMsgRole
   。下传:玩家ID(错误为0,不分类)。CMsgLogin

。异常:
   1、客户端登录帐号服务器后,未登录游戏服务器。(游戏服务器要定时删除超时的帐号)
   2、客户端登录游戏服务器后,帐号服务器长期不下传认证ID给游戏服务器。(游戏服务器要定时删除超时的帐号)

三、计点消息(注:暂按此简单方案实施,安全方案详见“当前任务”中)
  。上传消息:
   计点:帐号ID,TYPE(开始,计费,结束,HEARTBEAT)。CMsgFee
     “计费”时减点。“HITBEAT”用计点消息临时代替心跳消息,客户端直接返回相同的包。
   查询:帐号ID。CMsgQueryFee

。下传消息:
   心跳:帐号ID,TYPE(HEARTBEAT)。CMsgFee
   查询:帐号ID,计费类型(计点,包月,ISP计帐),剩余点数(或计帐点数),剩余时间。CMsgQueryFee
     时间为DWORD,(time/10000)表示年,(time/100)%100 表示月, (time)%100表示日。
   踢人:帐号ID,TYPE(KICKOUT)。CMsgFee

四、登录过程
  。登录消息:
   上传:游戏服务器帐户名,口令,游戏服务器域名/IP。CMsgAccount
     可能需要校验游戏服务器IP。
   下传:游戏服务器帐号ID(错误为0,不分类),版本号。CMsgLogin
  。版本消息:(★注意:仅当版本号正确时,游戏服务器才能上传该消息。如失败应立即主动断开SOCKET)
   上传:版本号,游戏服务器名。CMsgLogin
     帐号服务器接收到该消息后,表示游戏服务器已经登录成功。
//   下传:无意义。CMsgConnect
//     暂时仅回传无意义的消息。

五、安全

1、与游戏服务器的断线重连与重新同步
  。游戏服务器需要定时重连接到帐号服务器
  。重新连接后,会重新登录。在上传“版本消息”前,需要上传所有当前玩家消息,以实现完全同步。

2、客户端的攻击
  。记录最近5个(或50个)帐号错误的登录申请的IP地址。每个IP最多可以有10次错误登录,否则锁定5分钟该IP,并写日志和面板警告。
  。可以做一个IP黑名单,禁止某些IP几天。
  。允许从机器上手工封锁IP地址

3、线程安全与自维护策略
  。在面板上显示两个线程的动态数据,以手工了解两个线程的运行状况。
  。可手工重启计点线程或登录线程
  。计点线程检查是否长时间没接收到登录线程发过来的新玩家,否则询问线程是否正常。
  。登录线程检查是否长时间没有计点线程发过来的回应消息,否则询问线程是否正常。

4、防双重登录策略(防炒钱)
  。每次重新登录时,都让玩家进入上一次登录的服务器。利用游戏服务器的防双重登录功能自动“顶”下上一个玩家。
  。游戏服务器必须确认“完全”退出后(从核心退出-LOGOUT,从登录表退出,从底层CONNECT退出),才向帐号服务器上传ENDFEE消息。
  。帐号服务器在线表延时删除(WAITTIME)。以防原游戏服务器在ENDFEE后又“紧随”上传BEGINFEE消息。

六、帐号数据库变更历史日志数据库(暂时做成LOG文件)
  。帐号服务器运行日志
  。游戏服务器登录日志
  。客户端登录日志
  。帐号记点日志

////////////////////////////////////////////////////////////////////////////
设计模块:
 1、游戏服务器:
  与客户端:
   客户端连接:接收到认证ID并与认证ID表核对
  与帐号服务器:
   认证部分:
    认证:接收到认证ID并存于一个队列表中。
    *认证ID表:帐号ID,认证ID,客户端IP。
   计点部分:
    登录、记点、查询、自动重连接。
    *玩家计点表:/*游戏服务器ID*/,角色ID,帐号ID,/*口令*/,认证ID,客户端IP,/*计点类型(计时,包时,计帐)*/,
       开始计点时间,LAST计点时间,结束计点时间,
       结束类型(客户端退出,游戏服务器踢人,帐号服务器踢人),状态(登录中,游戏中)。

2、帐号服务器:
  游戏计点线程:(先创建该线程,因为客户监听线程会传消息过来???)
   与游戏服务器:
    站点连接:登录、记点、查询
   与数据库:
    数据库连接:查询、修改点数
  客户监听线程:
   与客户端:
    客户端连接:查询认证ID
   与数据库:
    数据库连接:查询帐号
  全局变量:
   *玩家在线表:游戏服务器ID,帐号ID,帐户名,口令,当前角色ID,认证ID,客户端IP,
     计点类型(计时,包时,计帐),开始计点时间,LAST计点时间,结束计点时间,
     结束类型(客户端退出,游戏服务器踢人,帐号服务器踢人),状态(登录中,游戏中)

////////////////////////////////////////////////////////////////////////////
网吧计费功能设计说明:
 1、数据库增加licence字段,以支持网吧帐号。网吧帐号的type为3。
 2、在线表中增加“计费帐号”属性,普通帐号的计费帐号同登录名。
 3、增加网吧登录消息_MSG_BARACCOUNT。
 4、为简单起见,暂时先不设计网吧帐号管理对象。每次登录时,即时统计该网吧帐号的已登录数量,并与数据库的licence比较。

网游动力为大家提供:魔域服务端客户端全套官方内部源码 C++下载,该程序经过了站长亲自测试保障了程序的完整性与可靠性,本站除此之外还提供了更多的网游原码下载以及最新的网游新闻资讯推荐信息,如有你需要请移步访问.本站所有的传奇程序都是通过杀毒软件扫描后后才发布的,但是也请大家下载后自行杀毒.

2025-08-12 11:15 点击量:8