193 lines
6.8 KiB
C
193 lines
6.8 KiB
C
|
|
#ifndef _SERVER_DEF_H_
|
|||
|
|
#define _SERVER_DEF_H_
|
|||
|
|
|
|||
|
|
/*****************************************************
|
|||
|
|
*
|
|||
|
|
* 服务端通用定义文件
|
|||
|
|
*
|
|||
|
|
*****************************************************/
|
|||
|
|
typedef unsigned long long Uint64; //
|
|||
|
|
typedef unsigned int ACCOUNTDATATYPE; //账户的类型
|
|||
|
|
typedef unsigned int ACTORDATATYPE; //角色的类型
|
|||
|
|
|
|||
|
|
namespace jxSrvDef
|
|||
|
|
{
|
|||
|
|
/* 服务器类型定义 */
|
|||
|
|
typedef enum tagServerType
|
|||
|
|
{
|
|||
|
|
InvalidServer = 0, //未定义服务器类型
|
|||
|
|
GateServer = 1, //网关服务器
|
|||
|
|
LogServer = 2, //日志服务器
|
|||
|
|
NameServer = 3, //名称服务器
|
|||
|
|
SessionServer = 4, //会话服务器
|
|||
|
|
DBServer = 5, //数据服务器
|
|||
|
|
GameServer = 6, //游戏服务器
|
|||
|
|
}SERVERTYPE;
|
|||
|
|
|
|||
|
|
|
|||
|
|
/* 获取服务器类型名称字符串 */
|
|||
|
|
inline LPCTSTR getServerTypeName(tagServerType eServerType)
|
|||
|
|
{
|
|||
|
|
switch(eServerType)
|
|||
|
|
{
|
|||
|
|
case GateServer: return _T("网关");
|
|||
|
|
case LogServer: return _T("日志");
|
|||
|
|
case NameServer: return _T("名称");
|
|||
|
|
case SessionServer: return _T("会话");
|
|||
|
|
case DBServer: return _T("数据");
|
|||
|
|
case GameServer: return _T("逻辑");
|
|||
|
|
default: return _T("未知");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* 全局会话状态定义 */
|
|||
|
|
typedef enum tagGlobalSessionState
|
|||
|
|
{
|
|||
|
|
gsWaitQueryChar = 1, //等待连接到DB服务器查询角色
|
|||
|
|
gsSelChar = 2, //已经连接到DB服务器,出于创建、选择角色状态
|
|||
|
|
gsWaitEntryGame = 3, //等待连接游戏服务器
|
|||
|
|
gsInGame = 4, //已经连接游戏服务器开始游戏
|
|||
|
|
}GSSTATE;
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
DBCenter转发消息类型。注意,不要用0作为请求号,默认的心跳包消息ID就是0
|
|||
|
|
*/
|
|||
|
|
typedef enum tagDBCenterRequest
|
|||
|
|
{
|
|||
|
|
DBCenterHeartBeat = 0, // DBCenterClient和DBCenterServer之间的心跳包
|
|||
|
|
DBCenterGateRequest = 100, // DBCenter转发的网关请求,包括选择角色、创建角色、删除角色等请求
|
|||
|
|
DBCenterLogicRequest // DBCenter转发的逻辑请求,包括获取角色基本数据、装备数据等请求
|
|||
|
|
}DBCENTERREQUEST;
|
|||
|
|
|
|||
|
|
/******
|
|||
|
|
* 服务器注册结构,当服务器连接到另一个服务器,
|
|||
|
|
* 需要发送注册服务器的数据结构以便注册服务器,
|
|||
|
|
* 注册服务器成功后才可正常通信。
|
|||
|
|
****************************************************/
|
|||
|
|
typedef struct tagServerRegistData
|
|||
|
|
{
|
|||
|
|
static const INT GT_JianXiaoJiangHu = 0x484A584A;//《剑啸江湖》的游戏ID
|
|||
|
|
INT GameType; //游戏ID,《剑啸江湖》中固定为0x484A584A
|
|||
|
|
INT ServerType; //服务器类型,值为SERVERTYPE枚举类型中的枚举值
|
|||
|
|
INT ServerIndex; //服务器唯一编号(服务器编号仅对游戏服务器有意义)
|
|||
|
|
INT Recv1;
|
|||
|
|
CHAR ServerName[64]; //服务器名称,需包含0终止符
|
|||
|
|
}SERVER_REGDATA, *PSERVER_REGDATA;
|
|||
|
|
|
|||
|
|
/*** 全局异步操作返回值定义 **/
|
|||
|
|
typedef enum tagASyncOPError
|
|||
|
|
{
|
|||
|
|
aeSuccess = 0, //成功
|
|||
|
|
aeLocalInternalError = 1, //本地服务器内部错误
|
|||
|
|
aeServerInternalError = 2, //远程服务器内部错误
|
|||
|
|
aeInvalidName = 3, //名称字符串无效
|
|||
|
|
aeLocalDataBaseError = 4, //本地服务器数据库操作错误
|
|||
|
|
aeServerDataBaseError = 5, //远程服务器数据库操作错误
|
|||
|
|
aeNameInuse = 6, //名称已被使用
|
|||
|
|
aeTimedOut = 0xFFFF, //操作超时(本地定义的错误,异步操作实现的服务器返回的错误)
|
|||
|
|
}ASYNC_OPERROR;
|
|||
|
|
|
|||
|
|
|
|||
|
|
/** 登陆的时候返回的错误码**/
|
|||
|
|
typedef enum tagLoginOPError
|
|||
|
|
{
|
|||
|
|
enSuccess = 0, //操作成功
|
|||
|
|
enPasswdError =1, //密码错误
|
|||
|
|
enNoAccount=2, //没有这个账号
|
|||
|
|
enIsOnline =3, //已经在线
|
|||
|
|
enServerBusy =4, //服务器忙
|
|||
|
|
enServerClose =5, //服务器没有开放
|
|||
|
|
enSessionServerError =6 , //session服务器有问题,比如db没有连接好
|
|||
|
|
enServerNotExisting =7, //不存在这个服务器
|
|||
|
|
enFcmLimited =8 , //账户纳入防沉迷
|
|||
|
|
enSessionServerClose =9, //会话服务器处于关闭状态
|
|||
|
|
enDbServerClose =10, //数据服务器处于关闭状态
|
|||
|
|
enGMLoginFailError =11, //gm在非法的ip登陆
|
|||
|
|
enIpError =12, //ip收到了限制
|
|||
|
|
enIpTooManyConnect =13, //ip连接了太多
|
|||
|
|
enIpMd5Error =14, //Md5计算错误
|
|||
|
|
enSignOutofDate =15, //发过来的时间已经过期了
|
|||
|
|
enTimeFormatError =16, //前面的格式错误
|
|||
|
|
enAccountSeal =17, //登陆过封停的账户
|
|||
|
|
enAccountFull = 18,//当前服务器过载,请选择其他服务器
|
|||
|
|
enServerOnLineCountMAx = 126, //在线达到最大
|
|||
|
|
|
|||
|
|
}SESSION_SERVER_OPERROR;
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*** 定义服务器之间通信消息号的数据类型 **/
|
|||
|
|
typedef WORD INTERSRVCMD;
|
|||
|
|
|
|||
|
|
|
|||
|
|
//定义字符串数据长度
|
|||
|
|
static const int MAX_ACCOUNT_NAME_LENGTH = 80; //最大的账户名字长度
|
|||
|
|
static const int ACCOUNT_NAME_BUFF_LENGTH = 81; //账户的buff长度
|
|||
|
|
|
|||
|
|
typedef char ACCOUNT[ACCOUNT_NAME_BUFF_LENGTH];
|
|||
|
|
|
|||
|
|
static const int MAX_ACTOR_NAME_LENGTH = 32; //最大的玩家名字的长度
|
|||
|
|
static const int ACTOR_NAME_BUFF_LENGTH = 33; //玩家名字的buff长度
|
|||
|
|
static const int ENOUNCE_BUFF_LENGTH = 100; //最大宣言长度
|
|||
|
|
|
|||
|
|
static const int MAX_TOKEN_LENGTH = 48; //运营商的渠道统计的最大长度
|
|||
|
|
|
|||
|
|
typedef char ACTORNAME[ACTOR_NAME_BUFF_LENGTH]; //玩家的名字
|
|||
|
|
|
|||
|
|
typedef char ENOUNCE[ENOUNCE_BUFF_LENGTH]; //帝王宣言
|
|||
|
|
|
|||
|
|
static const int MAX_PASSWD_LENGTH = 64; //最大的密码长度
|
|||
|
|
static const int MAX_GUILD_NAME_LENGTH = 32; //最大的公会的名字
|
|||
|
|
|
|||
|
|
/***
|
|||
|
|
* 逻辑服务器向数据服务器发送创建帮会的数据结构
|
|||
|
|
* 包含创建帮会的必要数据
|
|||
|
|
***************************************************/
|
|||
|
|
typedef struct tagCreateGuildData
|
|||
|
|
{
|
|||
|
|
CHAR sGuildName[33]; //帮会名称,包含0终止字符
|
|||
|
|
CHAR sFoundName[33]; //创始人的名字,插入数据库的时候需要用到
|
|||
|
|
BYTE nZY;
|
|||
|
|
WORD wIcon;
|
|||
|
|
int nIndex;
|
|||
|
|
Uint64 hActor;
|
|||
|
|
unsigned int nActorid;
|
|||
|
|
int nServerIndex;
|
|||
|
|
}CREATEGUILD_DATA, *PCREATEGUILD_DATA;
|
|||
|
|
|
|||
|
|
/*** 会话服务器广播打开会话的数据结构 ***/
|
|||
|
|
typedef struct tagGlobalSessionOpenData
|
|||
|
|
{
|
|||
|
|
INT nGateIndex; //处于网关的编号
|
|||
|
|
INT nSessionId; //全局会话ID
|
|||
|
|
INT nServerIndex; //会话登录的目标服务器
|
|||
|
|
INT nRawServerId; // 角色创建时的服务器ID
|
|||
|
|
LONGLONG nClientIPAddr; //客户端登陆的IP地址,支持IPv6
|
|||
|
|
DWORD dwFCMOnlineSec; //防沉迷系统中不满足下线休息时间而产生的连续在线时间,单位是秒
|
|||
|
|
GSSTATE eState; //会话状态
|
|||
|
|
ACCOUNT sAccount; //会话账号字符串
|
|||
|
|
int nGmLevel; //账户的GM等级
|
|||
|
|
UINT64 lKey; //生效的key
|
|||
|
|
|
|||
|
|
}GLOBALSESSIONOPENDATA, *PGLOBALSESSIONOPENDATA;
|
|||
|
|
|
|||
|
|
/***
|
|||
|
|
/* 游戏网关路由表结构
|
|||
|
|
*******************************************/
|
|||
|
|
typedef struct tagGameServerRoute
|
|||
|
|
{
|
|||
|
|
int nServerIndex; //服务器ID
|
|||
|
|
int nRouteCount; //路由地址数量
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
char sHost[124]; //服务器地址(支持域名)
|
|||
|
|
int nPort; //服务器端口
|
|||
|
|
int nUserCount; // 此路由上的用户数目
|
|||
|
|
} RouteTable[16]; //路由地址表
|
|||
|
|
}GAMESERVERROUTE, *PGAMESERVERROUTE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#endif
|