#ifndef CMD_GAME_SERVER_HEAD_FILE #define CMD_GAME_SERVER_HEAD_FILE #include "DataStream.h" #include "Define.h" #include "Struct.h" #include "Property.h" ////////////////////////////////////////////////////////////////////////////////// //登录命令 #pragma pack(1) ////////////////////////////////////////////////////////////////////////////////// #define MDM_CM_SYSTEM 1000 //系统命令 #define SUB_CM_SYSTEM_MESSAGE 1 //系统消息 #define SUB_CM_ACTION_MESSAGE 2 //动作消息 #define SUB_CM_DOWN_LOAD_MODULE 3 //下载消息 //类型掩码 #define SMT_CHAT 0x0001 //聊天消息 #define SMT_EJECT 0x0002 //弹出消息 #define SMT_GLOBAL 0x0004 //全局消息 #define SMT_PROMPT 0x0008 //提示消息 #define SMT_TABLE_ROLL 0x0010 //滚动消息 //控制掩码 #define SMT_CLOSE_ROOM 0x0100 //关闭房间 #define SMT_CLOSE_GAME 0x0200 //关闭游戏 #define SMT_CLOSE_LINK 0x0400 //中断连接 //系统消息 struct CMD_CM_SystemMessage { uint16 wType; //消息类型 uint16 wLength; //消息长度 char szString[1024]; //消息内容 }; ////////////////////////////////////////////////////////////////////////////////// #define MDM_GR_LOGON 1 //登录信息 //登录模式 #define SUB_GR_LOGON_USERID 1 //I D 登录 #define SUB_GR_LOGON_MOBILE 2 //手机登录 #define SUB_GR_LOGON_ACCOUNTS 3 //帐户登录 //登录结果 #define SUB_GR_LOGON_SUCCESS 100 //登录成功 #define SUB_GR_LOGON_FAILURE 101 //登录失败 #define SUB_GR_LOGON_FINISH 102 //登录完成 //升级提示 #define SUB_GR_UPDATE_NOTIFY 200 //升级提示 ////////////////////////////////////////////////////////////////////////////////// // //房间 ID 登录 struct CMD_GR_LogonUserID { uint32 dwPlazaVersion; //广场版本 uint32 dwFrameVersion; //框架版本 uint32 dwProcessVersion; //进程版本 //登录信息 uint32 dwUserID; //用户 I D char szPassword[LEN_MD5]; //登录密码 char szMachineID[LEN_MACHINE_ID]; //机器序列 uint16 wKindID; //类型索引 }; //登录成功消息 struct CMD_GR_LogonSuccess { // unsigned int dwUserID; //用户 I D uint32 dwUserRight; //用户权限 uint32 dwMasterRight; //管理权限 }; //登录失败 struct CMD_GR_LogonError { unsigned int lErrorCode; //错误代码 char szErrorDescribe[128]; //错误消息 }; ////////////////////////////////////////////////////////////////////////////////// //配置命令 #define MDM_GR_CONFIG 2 //配置信息 #define SUB_GR_CONFIG_COLUMN 100 //列表配置 #define SUB_GR_CONFIG_SERVER 101 //房间配置 #define SUB_GR_CONFIG_PROPERTY 102 //道具配置 #define SUB_GR_CONFIG_FINISH 103 //配置完成 #define SUB_GR_CONFIG_USER_RIGHT 104 //玩家权限 ////////////////////////////////////////////////////////////////////////////////// //列表配置 struct CMD_GR_ConfigColumn { uint8 cbColumnCount; //列表数目 tagColumnItem ColumnItem[MAX_COLUMN]; //列表描述 }; //房间配置 struct CMD_GR_ConfigServer { //房间属性 uint16 wTableCount; //桌子数目 uint16 wChairCount; //椅子数目 //房间配置 uint16 wServerType; //房间类型 uint32 dwServerRule; //房间规则 }; //道具配置 struct CMD_GR_ConfigProperty { uint8 cbPropertyCount; //道具数目 tagPropertyInfo PropertyInfo[MAX_PROPERTY]; //道具描述 }; //玩家权限 struct CMD_GR_ConfigUserRight { uint32 dwUserRight; //玩家权限 }; ////////////////////////////////////////////////////////////////////////////////// #define MDM_GR_USER 3 //用户信息 //用户动作 #define SUB_GR_USER_RULE 1 //用户规则 #define SUB_GR_USER_LOOKON 2 //旁观请求 #define SUB_GR_USER_SITDOWN 3 //坐下请求 #define SUB_GR_USER_STANDUP 4 //起立请求 #define SUB_GR_USER_INVITE 5 //用户邀请 #define SUB_GR_USER_INVITE_REQ 6 //邀请请求 #define SUB_GR_USER_REPULSE_SIT 7 //拒绝玩家坐下 #define SUB_GR_USER_KICK_USER 8 //踢出用户 #define SUB_GR_USER_INFO_REQ 9 //请求用户信息 #define SUB_GR_USER_CHAIR_REQ 10 //请求更换位置 #define SUB_GR_USER_CHAIR_INFO_REQ 11 //请求椅子用户信息 //起立请求 struct CMD_GR_UserStandUp { uint16 wTableID; //桌子位置 uint16 wChairID; //椅子位置 uint8 cbForceLeave; //强行离开 }; //用户状态 #define SUB_GR_USER_ENTER 100 //用户进入 #define SUB_GR_USER_SCORE 101 //用户分数 #define SUB_GR_USER_STATUS 102 //用户状态 #define SUB_GR_SIT_FAILED 103 //请求失败 #define SUB_GR_USER_LOCATION 104 //同步地里位置 //用户分数 struct CMD_GR_UserScore { uint32 dwUserID; //用户标识 tagUserScore UserScore; //积分信息 }; //聊天命令 #define SUB_GR_USER_CHAT 201 //聊天消息 #define SUB_GR_USER_EXPRESSION 202 //表情消息 #define SUB_GR_WISPER_CHAT 203 //私聊消息 #define SUB_GR_WISPER_EXPRESSION 204 //私聊表情 #define SUB_GR_COLLOQUY_CHAT 205 //会话消息 #define SUB_GR_COLLOQUY_EXPRESSION 206 //会话表情 //道具命令 #define SUB_GR_PROPERTY_BUY 300 //购买道具 #define SUB_GR_PROPERTY_SUCCESS 301 //道具成功 #define SUB_GR_PROPERTY_FAILURE 302 //道具失败 #define SUB_GR_PROPERTY_MESSAGE 303 //道具消息 #define SUB_GR_PROPERTY_EFFECT 304 //道具效应 #define SUB_GR_PROPERTY_TRUMPET 305 //喇叭消息 #define SUB_GR_GLAD_MESSAGE 400 //喜报消息 //用户聊天 struct CMD_GF_C_UserChat { uint16 wChatLength; //信息长度 uint32 dwChatColor; //信息颜色 uint32 dwTargetUserID; //目标用户 char szChatString[LEN_USER_CHAT]; //聊天信息 }; //用户聊天 struct CMD_GF_S_UserChat { uint16 wChatLength; //信息长度 uint32 dwChatColor; //信息颜色 uint32 dwSendUserID; //发送用户 uint32 dwTargetUserID; //目标用户 char szChatString[LEN_USER_CHAT]; //聊天信息 }; //用户表情 struct CMD_GF_C_UserExpression { bool isExpression; //是否是表情 true 表情 false 快捷语 uint16 wItemIndex; //表情索引 uint32 dwTargetUserID; //目标用户 }; //用户表情 struct CMD_GF_S_UserExpression { bool isExpression; //是否是表情 true 表情 false 快捷语 uint16 wItemIndex; //表情索引 uint32 dwSendUserID; //发送用户 uint32 dwTargetUserID; //目标用户 }; //用户语音聊天 struct CMD_GR_C_TableTalk { uint8 cbChairID; //座位 DataStream kDataStream; //语音数据 void StreamValue(DataStream& kData, bool bSend) { Stream_VALUE(cbChairID); Stream_VALUE(kDataStream); } }; //请求坐下 struct CMD_GR_UserSitDown { uint16 wTableID; //桌子位置 uint16 wChairID; //椅子位置 char szTablePass[PASS_LEN]; //桌子密码 }; //用户状态 struct CMD_GR_UserStatus { uint32 dwUserID; //用户标识 tagUserStatus UserStatus; //用户状态 }; struct IPC_GF_UserInfo { uint8 cbCompanion; //用户关系 tagUserInfoHead UserInfoHead; //用户信息 }; //请求失败 struct CMD_GR_RequestFailure { unsigned int lErrorCode; //错误代码 char szDescribeString[256]; //描述信息 }; ////////////////////////////////////////////////////////////////////////////////// //状态命令 #define MDM_GR_STATUS 4 //状态信息 #define SUB_GR_TABLE_INFO 100 //桌子信息 #define SUB_GR_TABLE_STATUS 101 //桌子状态 ////////////////////////////////////////////////////////////////////////////////// //桌子信息 struct CMD_GR_TableInfo { uint16 wTableCount; //桌子数目 tagTableStatus TableStatusArray[512]; //桌子状态 }; //桌子状态 struct CMD_GR_TableStatus { uint16 wTableID; //桌子号码 tagTableStatus TableStatus; //桌子状态 }; ////////////////////////////////////////////////////////////////////////////////// //比赛命令 #define MDM_GR_MATCH 9 //比赛命令 #define SUB_GR_MATCH_FEE 400 //报名费用 #define SUB_GR_MATCH_NUM 401 //等待人数 #define SUB_GR_LEAVE_MATCH 402 //退出比赛 #define SUB_GR_MATCH_INFO 403 //比赛信息 #define SUB_GR_MATCH_WAIT_TIP 404 //等待提示 #define SUB_GR_MATCH_RESULT 405 //比赛结果 #define SUB_GR_MATCH_STATUS 406 //比赛状态 #define SUB_GR_MATCH_GOLDUPDATE 409 //金币更新 #define SUB_GR_MATCH_ELIMINATE 410 //比赛淘汰 #define SUB_GR_MATCH_JOIN_RESOULT 411 //加入结果 //费用提醒 struct CMD_GR_Match_Fee { SCORE lMatchFee; //报名费用 char szNotifyContent[128]; //提示内容 }; //费用提醒 struct CMD_GR_Match_JoinResoult { uint16 wSucess; }; //比赛人数 struct CMD_GR_Match_Num { uint32 dwWaitting; //等待人数 uint32 dwTotal; //开赛人数 }; //赛事信息 struct CMD_GR_Match_Info { char szTitle[4][64]; //信息标题 uint16 wGameCount; //游戏局数 uint16 wRank; //当前名次 }; //提示信息 struct CMD_GR_Match_Wait_Tip { SCORE lScore; //当前积分 uint16 wRank; //当前名次 uint16 wCurTableRank; //本桌名次 uint16 wUserCount; //当前人数 uint16 wCurGameCount; //当前局数 uint16 wGameCount; //总共局数 uint16 wPlayingTable; //游戏桌数 char szMatchName[LEN_SERVER]; //比赛名称 }; //比赛结果 struct CMD_GR_MatchResult { SCORE lGold; //金币奖励 uint32 dwIngot; //元宝奖励 uint32 dwExperience; //经验奖励 char szDescribe[256]; //得奖描述 }; //最多描述 //金币更新 struct CMD_GR_MatchGoldUpdate { SCORE lCurrGold; //当前金币 SCORE lCurrIngot; //当前元宝 uint32 dwCurrExprience; //当前经验 }; ////////////////////////////////////////////////////////////////////////////////// //私人场命令 #define MDM_GR_PRIVATE 10 //比赛命令 #define SUB_GR_PRIVATE_INFO 401 //私人场信息 #define SUB_GR_CREATE_PRIVATE 402 //创建私人场 #define SUB_GR_CREATE_PRIVATE_SUCESS 403 //创建私人场成功 #define SUB_GR_JOIN_PRIVATE 404 //加入私人场 #define SUB_GF_PRIVATE_ROOM_INFO 405 //私人场房间信息 #define SUB_GR_PRIVATE_DISMISS 406 //私人场请求解散 #define SUB_GF_GM_PRIVATE_END 407 //私人场结算(发送游戏内统计信息) #define SUB_GR_RRIVATE_AGAIN 408 //创建私人场 #define SUB_GR_PRIVATE_DISMISS_RESULT 409 //私人场解散结果 #define SUB_GR_PRIVATE_HAS_CREATED 410 //私人场已创建 #define SUB_GR_CREATE_AUTO_ROOM 411 //创建代开信息 #define SUB_GR_CREATE_AUTO_RESULTE 412 //创建代开结果 #define SUB_GR_DEL_AUTO_ROOM_INFO 413 //删除代开信息 #define SUB_GR_AUTO_USER_STATUS 414 //自由人数玩家状态; #define SUB_GR_AUTO_USER_READY 415 //自由人数玩家准备状态; #define SUB_GF_PRIVATE_SCORE_INFO 416 //私人场积分 //私人场信息 struct CMD_GR_Private_Info { uint16 wKindID; uint8 bPlayCout[4]; //玩家局数 SCORE lPlayCost[4]; //消耗点数 char szGameType[4][32]; //游戏类型 char szGameRule[4][32]; //游戏规则 }; struct CMD_GR_Private_Ready { bool bStart; // 是不是申请开始; bool bReady; // 是否同意开始; }; struct CMD_GR_Private_ReadyInfo { uint16 wChairID; // 申请开始座位号; uint8 cbReady[MAX_CHAIR]; // 默认0等待选择 1同意 2拒绝 }; enum RoomType { Type_Private, Type_Public, }; enum ePrivateTableCommonRule { ePrivateTableCommonRule_CardAA = 1, //房卡AA; ePrivateTableCommonRule_auto = 1 << 29, //代开房; ePrivateTableCommonRule_DaiKaiFang = 1 << 30, //代开房; ePrivateTableCommonRule_NOSameIPAddr = 1 << 31, //不可以同IP地址; }; enum ePrivateRoomScoreType { ePrivateRoomScoreType_Default = 1, //默认类型; ePrivateRoomScoreType_SetOneTime = 1 << 1, //进入房间时设置一次; ePrivateRoomScoreType_EveryTime = 1 << 2, //每局开始时都设置一次; }; //创建房间 struct CMD_GR_Create_Private { uint32 dwUnionCode; //工会ID; uint8 cbUnionGoldOpen; //欢乐场; uint8 cbGameType; //游戏类型(私人场) uint8 bPlayCoutIdex; //游戏局数(0:8,1:16) uint8 bGameTypeIdex; //游戏类型 uint32 bGameRuleIdex; //游戏规则 uint8 cbEnterRoomScoreType; //进房间时的分数类型; SCORE lInitEnterRoomScore; //进入房间时的分数; uint8 cbBaseScore; //底分; }; //创建房间 struct tagCreatePrivate { uint16 wServerID; //服务器ID CMD_GR_Create_Private CMD_Private; //创建信息 }; //创建带开 struct CMD_GR_AutoRoomInfo { uint16 wKindID; //服务器ID uint32 dwUserID; //会长ID; uint8 cbGameType; //游戏类型(私人场) uint8 bPlayCoutIdex; //游戏局数(0:8,1:16) uint8 bGameTypeIdex; //游戏类型 uint32 bGameRuleIdex; //游戏规则 uint8 cbEnterRoomScoreType; //进房间时的分数类型; SCORE lInitEnterRoomScore; //进入房间时的分数; uint8 cbBaseScore; //底分; }; //创建失败 struct CMD_GR_AutoResulte { SCORE lErrorCode; //错误代码 char szDescribeString[128]; //描述消息 }; //创建房间 struct CMD_GR_Create_Private_Sucess { SCORE lCurSocre; //当前剩余 uint32 dwRoomNum; //房间ID }; //创建房间 struct CMD_GR_Join_Private { uint32 dwRoomNum; //房间ID }; //解散房间 struct CMD_GR_Dismiss_Private { uint8 bDismiss; //解散 }; //重新加入 struct CMD_GR_Again_Private { char stHttpChannel[LEN_NICKNAME]; CMD_GR_Again_Private() { zeromemory(stHttpChannel,sizeof(stHttpChannel)); } }; //私人场解散信息 struct CMD_GF_Private_Dismiss_Info { CMD_GF_Private_Dismiss_Info() { zeromemory(this,sizeof(CMD_GF_Private_Dismiss_Info)); } uint32 dwDissUserCout; uint32 dwDissChairID[MAX_CHAIR]; uint32 dwNotAgreeUserCout; uint32 dwNotAgreeChairID[MAX_CHAIR]; }; //私人场解散结果 struct CMD_GF_Private_Dismiss_Result { bool bSuccess; }; #define MAX_PRIVATE_ACTION 8 //私人场结算信息 struct CMD_GF_Private_End_Info { bool bNextJiang; //是否开始下一将 std::vector lPlayerMaxScore; std::vector lPlayerWinLose; std::vector lPlayerAction; void StreamValue(DataStream& kData, bool bSend) { Stream_VALUE(bNextJiang); Stream_VALUE(lPlayerMaxScore); Stream_VALUE(lPlayerWinLose); Stream_VALUE(lPlayerAction); } }; // 请求公会房间; struct CMD_GR_GetUnionRoomInfo { uint32 dwUserID; //玩家ID; uint32 dwUnionCode; //工会ID; }; ////////////////////////////////////////////////////////////////////////////////// //框架命令 #define MDM_GF_FRAME 100 //框架命令 ////////////////////////////////////////////////////////////////////////////////// //框架命令 //用户命令 #define SUB_GF_GAME_OPTION 1 //游戏配置 #define SUB_GF_USER_READY 2 //用户准备 #define SUB_GF_LOOKON_CONFIG 3 //旁观配置 #define SUB_GF_USER_LOCATION 4 //地里位置 #define SUB_GF_PING_TIME 5 //PING时间戳; #define SUB_GF_CHANGE_TABLE 6 //换桌子; #define SUB_GF_USER_START_READY 7 //用户开始游戏; #define SUB_GF_USER_NO_READY 8 //用户拒绝 //PING时间戳结构; struct CMD_GF_C_PingTime { uint32 dwPingCount; //ping次数; }; struct CMD_GF_S_PingTime { uint32 dwPingCount; //ping次数; }; //#00FF00 //#FFFF00 //#FF0000 //游戏配置 struct CMD_GF_GameOption { uint8 cbAllowLookon; //旁观标志 uint32 dwFrameVersion; //框架版本 uint32 dwClientVersion; //游戏版本 }; //用户地理位置信息; struct CMD_GF_C_UserLocation { SCORE lAccuracy; //精度; SCORE lLatitude; //经度; SCORE lLongitude; //纬度; char szAddress[LEN_DWELLING_PLACE]; //地理位置; }; struct CMD_GF_S_UserLocation { DWORD dwTargetUserID; //目标用户; SCORE lAccuracy; //精度; SCORE lLatitude; //经度; SCORE lLongitude; //纬度; char szAddress[LEN_DWELLING_PLACE]; //地理位置; }; //聊天命令 #define SUB_GF_USER_CHAT 10 //用户聊天 #define SUB_GF_USER_EXPRESSION 11 //用户表情 #define SUB_GR_TABLE_TALK 12 //用户聊天 //游戏信息 #define SUB_GF_GAME_STATUS 100 //游戏状态 #define SUB_GF_GAME_SCENE 101 //游戏场景 #define SUB_GF_LOOKON_STATUS 102 //旁观状态 //游戏环境 struct CMD_GF_GameStatus { uint8 cbGameStatus; //游戏状态 uint8 cbAllowLookon; //旁观标志 }; //系统消息 #define SUB_GF_SYSTEM_MESSAGE 200 //系统消息 #define SUB_GF_ACTION_MESSAGE 201 //动作消息 ////////////////////////////////////////////////////////////////////////////////// //游戏命令 #define MDM_GF_GAME 200 //游戏命令 ////////////////////////////////////////////////////////////////////////////////// //携带信息 //其他信息 #define DTP_GR_TABLE_PASSWORD 1 //桌子密码 //用户属性 #define DTP_GR_NICK_NAME 10 //用户昵称 #define DTP_GR_GROUP_NAME 11 //社团名字 #define DTP_GR_UNDER_WRITE 12 //个性签名 #define DTP_GR_HEAD_HTTP 13 //头像HTTP //附加信息 #define DTP_GR_USER_NOTE 20 //用户备注 #define DTP_GR_CUSTOM_FACE 21 //自定头像 ////////////////////////////////////////////////////////////////////////////////// //请求错误 #define REQUEST_FAILURE_NORMAL 0 //常规原因 #define REQUEST_FAILURE_NOGOLD 1 //金币不足 #define REQUEST_FAILURE_NOSCORE 2 //积分不足 #define REQUEST_FAILURE_PASSWORD 3 //密码错误 ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// #pragma pack() #endif