Files
mir_server/sdk/commonLib/def/ServerDef.h

193 lines
6.8 KiB
C
Raw Normal View History

2025-01-09 17:45:40 +08:00
#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转发消息类型0ID就是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