Files
mir_server/sdk/commonLib/def/ServerDef.h
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

193 lines
6.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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