#ifndef CMD_LONGON_HEAD_FILE #define CMD_LONGON_HEAD_FILE #include "../Define/DataStream.h" #include "cocos2d.h" ////////////////////////////////////////////////////////////////////////// #pragma pack(1) ////////////////////////////////////////////////////////////////////////////////// //登录命令 #define MDM_GP_LOGON 1 //广场登录 //登录模式 #define SUB_GP_LOGON_GAMEID 1 //I D 登录 #define SUB_GP_LOGON_ACCOUNTS 2 //帐号登录 #define SUB_GP_REGISTER_ACCOUNTS 3 //注册帐号 #define SUB_GP_LOGON_VISITOR 5 //游客登录 //登录结果 #define SUB_GP_LOGON_SUCCESS 100 //登录成功 #define SUB_GP_LOGON_FAILURE 101 //登录失败 #define SUB_GP_LOGON_FINISH 102 //登录完成 #define SUB_GP_VALIDATE_MBCARD 103 //登录失败 #define SUB_GP_VALIDATE_PASSPORT 104 //登录失败 #define SUB_GP_VERIFY_RESULT 105 //验证结果 #define SUB_GP_MATCH_SIGNUPINFO 106 //报名信息 #define SUB_GP_GROWLEVEL_CONFIG 107 //等级配置 //升级提示 #define SUB_GP_UPDATE_NOTIFY 200 //升级提示 ////////////////////////////////////////////////////////////////////////////////// // #define MB_VALIDATE_FLAGS 0x01 //效验密保 #define LOW_VER_VALIDATE_FLAGS 0x02 //效验低版本 // ////////////////////////////////////////////////////////////////////////////////// //携带信息 CMD_GP_LogonSuccess #define DTP_GP_GROUP_INFO 1 //社团信息 #define DTP_GP_MEMBER_INFO 2 //会员信息 #define DTP_GP_UNDER_WRITE 3 //个性签名 #define DTP_GP_STATION_URL 4 //主页信息 ////////////////////////////////////////////////////////////////////////////////// //列表命令 #define MDM_GP_SERVER_LIST 2 //列表信息 //获取命令 #define SUB_GP_GET_LIST 1 //获取列表 #define SUB_GP_GET_SERVER 2 //获取房间 #define SUB_GP_GET_ONLINE 3 //获取在线 #define SUB_GP_GET_COLLECTION 4 //获取收藏 //获取在线 struct CMD_GP_GetOnline { uint16 wServerCount; //房间数目 uint16 wOnLineServerID[MAX_SERVER]; //房间标识 }; //类型在线 struct CMD_GP_KindOnline { uint16 wKindCount; //类型数目 tagOnLineInfoKind OnLineInfoKind[MAX_KIND]; //类型在线 }; //房间在线 struct CMD_GP_ServerOnline { uint16 wServerCount; //房间数目 tagOnLineInfoServer OnLineInfoServer[MAX_SERVER]; //房间在线 }; //列表信息 #define SUB_GP_LIST_TYPE 100 //类型列表 #define SUB_GP_LIST_KIND 101 //种类列表 #define SUB_GP_LIST_NODE 102 //节点列表 #define SUB_GP_LIST_PAGE 103 //定制列表 #define SUB_GP_LIST_SERVER 104 //房间列表 #define SUB_GP_LIST_MATCH 105 //比赛列表 #define SUB_GP_VIDEO_OPTION 106 //视频配置 //完成信息 #define SUB_GP_LIST_FINISH 200 //发送完成 #define SUB_GP_SERVER_FINISH 201 //房间完成 //在线信息 #define SUB_GR_KINE_ONLINE 300 //类型在线 #define SUB_GR_SERVER_ONLINE 301 //房间在线 #define SUB_GR_ONLINE_FINISH 302 //在线完成 ////////////////////////////////////////////////////////////////////////////////// //服务命令 #define MDM_GP_USER_SERVICE 3 //用户服务 //账号服务 #define SUB_GP_MODIFY_MACHINE 100 //修改机器 #define SUB_GP_MODIFY_LOGON_PASS 101 //修改密码 #define SUB_GP_MODIFY_INSURE_PASS 102 //修改密码 #define SUB_GP_MODIFY_UNDER_WRITE 103 //修改签名 #define SUB_GP_MODIFY_ACCOUNTS 104 //修改帐号 #define SUB_GP_MODIFY_SPREADER 105 //修改推荐人 //修改密码 struct CMD_GP_ModifyLogonPass { uint32 dwUserID; //用户 I D char szDesPassword[LEN_PASSWORD]; //用户密码 char szScrPassword[LEN_PASSWORD]; //用户密码 }; //修改密码 struct CMD_GP_ModifyInsurePass { uint32 dwUserID; //用户 I D char szDesPassword[LEN_PASSWORD]; //用户密码 char szScrPassword[LEN_PASSWORD]; //用户密码 }; //修改推荐人 struct CMD_GP_ModifySpreader { uint32 dwUserID; //用户 I D char szPassword[LEN_PASSWORD]; //用户密码 char szSpreader[LEN_NICKNAME]; //用户密码 }; //修改头像 #define SUB_GP_USER_FACE_INFO 120 //头像信息 #define SUB_GP_SYSTEM_FACE_INFO 121 //系统头像 #define SUB_GP_CUSTOM_FACE_INFO 122 //自定头像 //修改头像 struct CMD_GP_CustomFaceInfo { uint32 dwUserID; //用户 I D char szPassword[LEN_PASSWORD]; //用户密码 char szMachineID[LEN_MACHINE_ID]; //机器序列 uint32 dwCustomFace[FACE_CX*FACE_CY]; //图片信息 }; //比赛服务 #define SUB_GP_MATCH_SIGNUP 200 //比赛报名 #define SUB_GP_MATCH_UNSIGNUP 201 //取消报名 #define SUB_GP_MATCH_SIGNUP_RESULT 202 //报名结果 #define SUB_GP_MATCH_AWARD_LIST 203 //比赛奖励 //签到服务 #define SUB_GP_CHECKIN_QUERY 220 //查询签到 #define SUB_GP_CHECKIN_INFO 221 //签到信息 #define SUB_GP_CHECKIN_DONE 222 //执行签到 #define SUB_GP_CHECKIN_RESULT 223 //签到结果 #define SUB_GP_CHECKIN_AWARD 224 //签到奖励 //新手引导 #define SUB_GP_BEGINNER_QUERY 240 //新手引导签到 #define SUB_GP_BEGINNER_INFO 241 //新手引导信息 #define SUB_GP_BEGINNER_DONE 242 //新手引导执行 #define SUB_GP_BEGINNER_RESULT 243 //新手引导结果 //低保服务 #define SUB_GP_BASEENSURE_LOAD 260 //加载低保 #define SUB_GP_BASEENSURE_TAKE 261 //领取低保 #define SUB_GP_BASEENSURE_PARAMETER 262 //低保参数 #define SUB_GP_BASEENSURE_RESULT 263 //低保结果 //个人资料 #define SUB_GP_USER_INDIVIDUAL 301 //个人资料 #define SUB_GP_QUERY_INDIVIDUAL 302 //查询信息 #define SUB_GP_MODIFY_INDIVIDUAL 303 //修改资料 #define SUB_GP_QUERY_ACCOUNTINFO 304 //个人信息 #define SUB_GP_QUERY_INGAME_SEVERID 305 //游戏状态 #define SUB_GP_WXSHARE_SUCCESS 306 //微信分享成功 #define SUB_GP_WXSHARE_REWARD 307 //微信分享成功奖励 #define SUB_GP_QUERY_IN_UNION 309 //是否在工会; #define SUB_GP_GET_UNION_LIST 310 //获取工会列表; #define SUB_GP_UNION_GAME_LIST 311 //获取工会列表; #define SUB_GP_GET_UNION_ROOM_LIST 312 //获取工会房间列表; #define SUB_GP_GET_AUTO_ROOM_LIST 313 //获取自动房间列表; //银行服务 #define SUB_GP_USER_SAVE_SCORE 400 //存款操作 #define SUB_GP_USER_TAKE_SCORE 401 //取款操作 #define SUB_GP_USER_TRANSFER_SCORE 402 //转账操作 #define SUB_GP_USER_INSURE_INFO 403 //银行资料 #define SUB_GP_QUERY_INSURE_INFO 404 //查询银行 #define SUB_GP_USER_INSURE_SUCCESS 405 //银行成功 #define SUB_GP_USER_INSURE_FAILURE 406 //银行失败 #define SUB_GP_QUERY_USER_INFO_REQUEST 407 //查询用户 #define SUB_GP_QUERY_USER_INFO_RESULT 408 //用户信息 ////////////////////////////////////////////////////////////////////////////////// //银行资料 struct CMD_GP_UserInsureInfo { uint16 wRevenueTake; //税收比例 uint16 wRevenueTransfer; //税收比例 uint16 wServerID; //房间标识 SCORE lUserScore; //用户金币 SCORE lUserInsure; //银行金币 SCORE lTransferPrerequisite; //转账条件 }; //存入金币 struct CMD_GP_UserSaveScore { uint32 dwUserID; //用户 I D SCORE lSaveScore; //存入金币 char szMachineID[LEN_MACHINE_ID]; //机器序列 }; //提取金币 struct CMD_GP_UserTakeScore { uint32 dwUserID; //用户 I D SCORE lTakeScore; //提取金币 char szPassword[LEN_MD5]; //银行密码 char szMachineID[LEN_MACHINE_ID]; //机器序列 }; //转账金币 struct CMD_GP_UserTransferScore { uint32 dwUserID; //用户 I D uint8 cbByNickName; //昵称赠送 0:GAMEID, 1:昵称 SCORE lTransferScore; //转账金币 char szPassword[LEN_MD5]; //银行密码 char szNickName[LEN_NICKNAME]; //目标用户 char szMachineID[LEN_MACHINE_ID]; //机器序列 }; //银行成功 struct CMD_GP_UserInsureSuccess { uint32 dwUserID; //用户 I D SCORE lUserScore; //用户金币 SCORE lUserInsure; //银行金币 char szDescribeString[128]; //描述消息 }; //银行失败 struct CMD_GP_UserInsureFailure { unsigned int lResultCode; //错误代码 char szDescribeString[128]; //描述消息 }; //提取结果 struct CMD_GP_UserTakeResult { uint32 dwUserID; //用户 I D SCORE lUserScore; //用户金币 SCORE lUserInsure; //银行金币 }; //查询银行 struct CMD_GP_QueryInsureInfo { uint32 dwUserID; //用户 I D }; //查询用户 struct CMD_GP_QueryUserInfoRequest { uint8 cbByNickName; //昵称赠送 char szNickName[LEN_NICKNAME]; //目标用户 }; //用户信息 struct CMD_GP_UserTransferUserInfo { uint32 dwTargetGameID; //目标用户 char szNickName[LEN_NICKNAME]; //目标用户 }; //个人信息 struct CMD_GP_UserAccountInfo { //属性资料 uint16 wFaceID; //头像标识 uint32 dwUserID; //用户标识 uint32 dwGameID; //游戏标识 uint32 dwGroupID; //社团标识 uint32 dwCustomID; //自定索引 uint32 dwUserMedal; //用户奖牌 uint32 dwExperience; //经验数值 uint32 dwLoveLiness; //用户魅力 uint32 dwSpreaderID; //推广ID char szPassword[LEN_MD5]; //登录密码 char szAccounts[LEN_ACCOUNTS]; //登录帐号 char szNickName[LEN_NICKNAME]; //用户昵称 char szGroupName[LEN_GROUP_NAME]; //社团名字 char szLogonIp[LEN_ACCOUNTS]; //登录IP //用户成绩 SCORE lUserScore; //用户游戏币 SCORE lUserInsure; //用户银行 SCORE lGrade; //私人场经验 //用户资料 uint8 cbGender; //用户性别 uint8 cbMoorMachine; //锁定机器 char szUnderWrite[LEN_UNDER_WRITE]; //个性签名 //会员资料 uint8 cbMemberOrder; //会员等级 systemtime MemberOverDate; //到期时间 }; //游戏状态 struct CMD_GP_UserInGameServerID { uint32 dwUserID; //用户 I D }; //操作成功 struct CMD_GP_InGameSeverID { uint32 LockKindID; uint32 LockServerID; }; //游戏状态 struct CMD_GP_UserInUnion { uint32 dwUserID; //用户 I D uint32 dwUnionCode; //用户 I D }; struct CMD_GP_InUnion { uint8 cbResultCode; uint32 dwUnionCode; char szDescribeString[128]; //错误消息 }; //获取工会列表 struct CMD_GP_GetUnionList { uint32 dwUserID; //用户 I D }; //获取自动开房列表 struct CMD_GP_GetAutoRoomList { uint32 dwUserID; //用户 I D }; //删除代开信息 struct CMD_GP_DelAutoRoomInfo { uint32 dwIndex; //用户 I D uint16 wServerID; }; //微信分享成功 struct CMD_GP_WXShareSuccess { uint32 dwUserID; char szPassword[LEN_PASSWORD]; //用户密码 }; //微信分享成功奖励 struct CMD_GP_WXShareReward { uint8 cbFKCount; }; ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// //比赛报名 struct CMD_GP_MatchSignup { //比赛信息 uint16 wServerID; //房间标识 uint32 dwMatchID; //比赛标识 uint32 dwMatchNO; //比赛场次 //用户信息 uint32 dwUserID; //用户标识 char szPassword[LEN_MD5]; //登录密码 //机器信息 char szMachineID[LEN_MACHINE_ID]; //机器序列 }; //取消报名 struct CMD_GP_MatchUnSignup { //比赛信息 uint16 wServerID; //房间标识 uint32 dwMatchID; //比赛标识 uint32 dwMatchNO; //比赛场次 //用户信息 uint32 dwUserID; //用户标识 char szPassword[LEN_MD5]; //登录密码 //机器信息 char szMachineID[LEN_MACHINE_ID]; //机器序列 }; //报名结果 struct CMD_GP_MatchSignupResult { bool bSignup; //报名标识 bool bSuccessed; //成功标识 char szDescribeString[128]; //描述信息 }; //报名结果 struct CMD_GP_MatchGetAward { uint32 dwUserID; uint32 dwMatchID; //比赛标识 uint32 dwMatchNO; //比赛场次 }; //排行信息 struct tagMatchAwardkInfo { uint16 MatchRank; //比赛名次 SCORE RewardGold; //奖励金币 uint32 RewardMedal; //奖励元宝 uint32 RewardExperience; //奖励经验 void StreamValue(DataStream& kData, bool bSend) { Stream_VALUE(MatchRank); Stream_VALUE(RewardGold); Stream_VALUE(RewardMedal); Stream_VALUE(RewardExperience); } }; //比赛奖励 struct CMD_GR_MatchAwardList { uint32 dwMatchID; //比赛标识 uint32 dwMatchNO; //比赛场次 std::vector kAwards; void StreamValue(DataStream& kData, bool bSend) { Stream_VALUE(dwMatchID); Stream_VALUE(dwMatchNO); StructVecotrMember(tagMatchAwardkInfo,kAwards); } }; ////////////////////////////////////////////////////////////////////////////////// //自定义字段查询 公告 #define SUB_GP_QUERY_PUBLIC_NOTICE 500 //自定义字段查询 #define SUB_GP_PUBLIC_NOTICE 501 //设置推荐人结果 #define SUB_GP_SPREADER_RESOULT 520 //设置推荐人结果 //赚金排行榜 #define SUB_GP_ADDRANK_GET_AWARD_INFO 540 //获得奖励信息 #define SUB_GP_ADDRANK_BACK_AWARD_INFO 541 //返回奖励信息 #define SUB_GP_ADDRANK_GET_RANK 542 //获得排行 #define SUB_GP_ADDRANK_BACK_RANK 543 //返回排行 //游戏记录 #define SUB_GP_GAME_RECORD_LIST 550 #define SUB_GP_GAME_RECORD_TOTAL 551 #define SUB_GP_GAME_RECORD_CHILD 552 //客服信息 #define SUB_GP_KEFU 600 //客服信息 #define SUB_GP_KEFU_RESULT 601 //客服信息结果 //邮件信息 #define SUB_GP_MESSAGE_LIST 700 //邮件列表 #define SUB_GP_MESSAGE_LIST_RESULT 701 //邮件列表返回 #define SUB_GP_MESSAGE_AWARD 702 //获取排行榜奖励 #define SUB_GP_MESSAGE_AWARD_RESULT 703 //获取排行榜结果 //操作结果 #define SUB_GP_OPERATE_SUCCESS 900 //操作成功 #define SUB_GP_OPERATE_FAILURE 901 //操作失败 //话费兑换 #define SUB_GP_EXCHANGEHUAFEI_GET_LIST_INFO 1000 //获取兑换话费列表 #define SUB_GP_EXCHANGEHUAFEI_BACK 1001 //兑换话费列表返回 //游戏记录 struct CMD_GP_GetGameRecordList { uint32 dwUserID; uint16 wKindID; }; //商城数据 #define SUB_GP_SHOPINFO_GET_LIST_INFO 1100 //获取商城列表 #define SUB_GP_SHOPINFO_BACK 1101 //商城列表返回 struct CMD_GP_BackAddBankAwardInfo { int kRewardGold[3][LEN_ADDRANK]; int kRewardType[3][LEN_ADDRANK]; }; struct CMD_GP_GetAddBank { uint32 dwUserID; //用户 I D char szPassword[LEN_PASSWORD]; //用户密码 int iRankIdex; }; struct CMD_GP_BackAddBank { int iRankIdex; std::vector kNickName; std::vector kUserID; std::vector kFaceID; std::vector kCustomID; std::vector kUserPoint; void StreamValue(DataStream& kData, bool bSend) { Stream_VALUE(iRankIdex); Stream_VALUE(kNickName); Stream_VALUE(kUserID); Stream_VALUE(kFaceID); Stream_VALUE(kCustomID); Stream_VALUE(kUserPoint); } }; struct CMD_GP_GetExchangeHuaFei { uint32 dwUserID; //用户 I D char szPassword[LEN_PASSWORD]; //用户密码 }; struct CMD_GP_BackExchangeHuaFei { std::vector kExchangeID; //兑换id std::vector kUseType; //兑换道具类型 std::vector kUseNum; //兑换道具个数 std::vector kGetType; //兑换商品类型 std::vector kGetNum; //兑换商品个数 std::vector kGoodsName; //兑换商品名称 std::vector kExchangeDesc; //兑换描述 std::vector kImgIcon; //图标名称 std::vector kFlag; //标记 void StreamValue(DataStream& kData, bool bSend) { Stream_VALUE(kExchangeID); Stream_VALUE(kUseType); Stream_VALUE(kUseNum); Stream_VALUE(kGetType); Stream_VALUE(kGetNum); Stream_VALUE(kGoodsName); Stream_VALUE(kExchangeDesc); Stream_VALUE(kImgIcon); Stream_VALUE(kFlag); } }; struct CMD_GP_GetShopInfo { uint32 dwUserID; //用户 I D char szPassword[LEN_PASSWORD]; //用户密码 }; struct CMD_GP_BackShopInfo { std::vector kItemID; //商品id std::vector kItemType; //商品类型 std::vector kOrderID_IOS; //商品订单号 苹果 std::vector kOrderID_Android; //商品订单号 安卓 std::vector kPrice; //商品价格 std::vector kGoodsNum; //商品数量 std::vector kItemTitle; //标题 std::vector kItemDesc; //描述 std::vector kItemIcon; //图标名称 std::vector kItemName; //商品名称 void StreamValue(DataStream& kData, bool bSend) { Stream_VALUE(kItemID); Stream_VALUE(kItemType); Stream_VALUE(kOrderID_IOS); Stream_VALUE(kOrderID_Android); Stream_VALUE(kPrice); Stream_VALUE(kGoodsNum); Stream_VALUE(kItemTitle); Stream_VALUE(kItemDesc); Stream_VALUE(kItemIcon); Stream_VALUE(kItemName); } }; ////////////////////////////////////////////////////////////////////////////////// //携带信息 CMD_GP_UserIndividual #define DTP_GP_UI_NICKNAME 1 //用户昵称 #define DTP_GP_UI_USER_NOTE 2 //用户说明 #define DTP_GP_UI_UNDER_WRITE 3 //个性签名 #define DTP_GP_UI_QQ 4 //Q Q 号码 #define DTP_GP_UI_EMAIL 5 //电子邮件 #define DTP_GP_UI_SEAT_PHONE 6 //固定电话 #define DTP_GP_UI_MOBILE_PHONE 7 //移动电话 #define DTP_GP_UI_COMPELLATION 8 //真实名字 #define DTP_GP_UI_DWELLING_PLACE 9 //联系地址 #define DTP_GP_UI_HEAD_HTTP 10 //头像 #define DTP_GP_UI_IP 11 //IP #define DTP_GP_UI_CHANNEL 12 //渠道号 ////////////////////////////////////////////////////////////////////////////////// //查询信息 struct CMD_GP_QueryIndividual { uint32 dwUserID; //用户 I D }; //查询信息 struct CMD_GP_QueryAccountInfo { uint32 dwUserID; //用户 I D }; //个人资料 struct CMD_GP_UserIndividual { uint32 dwUserID; //用户 I D }; //修改资料 struct CMD_GP_ModifyIndividual { uint8 cbGender; //用户性别 uint32 dwUserID; //用户 I D char szPassword[LEN_PASSWORD]; //用户密码 }; //操作成功 struct CMD_GP_SpreaderResoult { unsigned int lResultCode; //操作代码 SCORE lScore; char szDescribeString[128]; //成功消息 }; //操作成功 struct CMD_GP_OperateSuccess { unsigned int lResultCode; //操作代码 char szDescribeString[128]; //成功消息 }; //操作失败 struct CMD_GP_OperateFailure { unsigned int lResultCode; //错误代码 char szDescribeString[128]; //描述消息 }; //签到奖励 struct DBO_GP_CheckInReward { SCORE lRewardGold[LEN_SIGIN]; //奖励金额 uint8 lRewardType[LEN_SIGIN]; //奖励类型 1金币 2道具 uint8 lRewardDay[LEN_SIGIN]; //奖励天数 }; //查询签到 struct CMD_GP_CheckInQueryInfo { uint32 dwUserID; //用户标识 char szPassword[LEN_PASSWORD]; //登录密码 }; //签到信息 struct CMD_GP_CheckInInfo { uint16 wSeriesDate; //连续日期 uint16 wAwardDate; //物品日期 bool bTodayChecked; //签到标识 SCORE lRewardGold[LEN_SIGIN]; //奖励金额 uint8 lRewardType[LEN_SIGIN]; //奖励类型 1金币 2道具 uint8 lRewardDay[LEN_SIGIN]; //奖励天数 }; //执行签到 struct CMD_GP_CheckInDone { uint32 dwUserID; //用户标识 char szPassword[LEN_PASSWORD]; //登录密码 char szMachineID[LEN_MACHINE_ID]; //机器序列 }; //签到结果 struct CMD_GP_CheckInResult { bool bType; //是否是达到天数领取物品 bool bSuccessed; //成功标识 SCORE lScore; //当前金币 char szNotifyContent[128]; //提示内容 }; ////////////////////////////////////////////////////////////////////////////////// //新手活动 struct CMD_GP_BeginnerQueryInfo { uint32 dwUserID; //用户标识 char szPassword[LEN_PASSWORD]; //登录密码 }; struct CMD_GP_BeginnerInfo { enum AwardType { Type_Gold = 1, Type_Phone = 2, }; uint16 wSeriesDate; //连续日期 bool bTodayChecked; //签到标识 bool bLastCheckIned; //签到标识 SCORE lRewardGold[LEN_BEGINNER]; //奖励金额 uint8 lRewardType[LEN_BEGINNER]; //奖励类型 1金币 2道具 }; struct CMD_GP_BeginnerDone { uint32 dwUserID; //用户标识 char szPassword[LEN_PASSWORD]; //登录密码 char szMachineID[LEN_MACHINE_ID]; //机器序列 }; struct CMD_GP_BeginnerResult { bool bSuccessed; //成功标识 SCORE lAwardCout; //奖励数量 SCORE lAwardType; //奖励类型 char szNotifyContent[128]; //提示内容 }; //领取低保 struct CMD_GP_BaseEnsureTake { uint32 dwUserID; //用户 I D char szPassword[LEN_PASSWORD]; //登录密码 char szMachineID[LEN_MACHINE_ID]; //机器序列 }; //低保参数 struct CMD_GP_BaseEnsureParamter { SCORE lScoreCondition; //游戏币条件 SCORE lScoreAmount; //游戏币数量 uint8 cbTakeTimes; //领取次数 }; //低保结果 struct CMD_GP_BaseEnsureResult { bool bSuccessed; //成功标识 SCORE lGameScore; //当前游戏币 char szNotifyContent[128]; //提示内容 }; //自定义字段查询 公告 struct CMD_GP_QueryNotice { char szKeyName[LEN_NICKNAME]; //关键字 }; struct CMD_GP_PublicNotice { unsigned int lResultCode; //操作代码 char szDescribeString[512]; //成功消息 }; ////////////////////////////////////////////////////////////////////////////////// //远程服务 #define MDM_GP_REMOTE_SERVICE 4 //远程服务 //查找服务 #define SUB_GP_C_SEARCH_DATABASE 100 //数据查找 #define SUB_GP_C_SEARCH_CORRESPOND 101 //协调查找 //时间奖励 #define SUB_GP_C_TIME_AWARD_CHECK 110 //时间奖励信息查询 #define SUB_GP_C_TIME_AWARD_GET 111 //时间奖励领取 //查找服务 #define SUB_GP_S_SEARCH_DATABASE 200 //数据查找 #define SUB_GP_S_SEARCH_CORRESPOND 201 //协调查找 //时间奖励 #define SUB_GP_S_TIME_AWARD_CHECK 210 //时间奖励信息查询结果 #define SUB_GP_S_TIME_AWARD_GET 211 //时间奖励领取结果 //登录模式 #define SUB_MB_LOGON_GAMEID 2 //I D 登录 #define SUB_MB_REGISTER_ACCOUNTS 3 //注册帐号 //登录结果 #define SUB_MB_LOGON_SUCCESS 100 //登录成功 #define SUB_MB_LOGON_FAILURE 101 //登录失败 //升级提示 #define SUB_MB_UPDATE_NOTIFY 200 //升级提示 ////////////////////////////////////////////////////////////////////////////////// //帐号登录 struct CMD_GP_LogonAccounts { //登录信息 uint32 dwPlazaVersion; //广场版本 char szMachineID[LEN_MACHINE_ID]; //机器序列 char szPassword[LEN_MD5]; //登录密码 char szAccounts[LEN_ACCOUNTS]; //登录帐号 char szOpenId[LEN_OPENID]; // char szUnionid[LEN_UNIONID]; uint32 cbValidateFlags; //校验标识 }; //登录失败 struct DBR_GP_LogonError { unsigned int lErrorCode; //错误代码 char szErrorDescribe[128]; //错误消息 }; //I D登录 struct CMD_GP_LogonByUserID { //登录信息 uint32 dwGameID; //游戏 I D char szPassword[LEN_MD5]; //登录密码 uint8 cbValidateFlags; //校验标识 }; //注册帐号 struct CMD_GP_RegisterAccounts { //系统信息 uint32 dwPlazaVersion; //广场版本 char szMachineID[LEN_MACHINE_ID]; //机器序列 char szOpenId[LEN_OPENID]; // char szUnionid[LEN_UNIONID]; //密码变量 char szLogonPass[LEN_MD5]; //登录密码 char szInsurePass[LEN_MD5]; //银行密码 //注册信息 uint16 wFaceID; //头像标识 uint8 cbGender; //用户性别 char szAccounts[LEN_ACCOUNTS]; //登录帐号 char szNickName[LEN_NICKNAME]; //用户昵称 char szSpreader[LEN_ACCOUNTS]; //推荐帐号 char szPassPortID[LEN_PASS_PORT_ID]; //证件号码 char szCompellation[LEN_COMPELLATION]; //真实名字 uint8 cbValidateFlags; //校验标识 }; //游客登录 struct CMD_GP_VisitorLogon { uint16 wFaceID; //头像标识 uint8 cbGender; //用户性别 uint32 dwPlazaVersion; //广场版本 uint8 cbValidateFlags; //校验标识 char szNickName[LEN_NICKNAME]; //用户昵称 char szSpreader[LEN_NICKNAME]; //推广人名 char szPassWord[LEN_PASSWORD]; //登录密码 char szPassWordBank[LEN_PASSWORD]; //登录密码 }; //登陆成功 struct CMD_GP_LogonSuccess { uint16 wFaceID; //头像标识 uint32 dwUserID; //用户 I D uint32 dwGameID; //游戏 I D uint32 dwGroupID; //社团标识 uint32 dwCustomID; //自定标识 uint32 dwUserMedal; //用户奖牌 uint32 dwExperience; //经验数值 uint32 dwLoveLiness; //用户魅力 uint32 dwSpreaderID; //推广ID uint8 cbInsureEnabled; //银行开通 //用户成绩 SCORE lUserScore; //用户金币 SCORE lUserInsure; //用户银行 SCORE lGrade; //私人场经验 bool isLottery; //今天是否参与摇奖; //用户信息 uint8 cbGender; //用户性别 uint8 cbMoorMachine; //锁定机器 char szAccounts[LEN_ACCOUNTS]; //登录帐号 char szNickName[LEN_ACCOUNTS]; //用户昵称 char szGroupName[LEN_GROUP_NAME]; //社团名字 //配置信息 uint8 cbShowServerStatus; //显示服务器状态 uint8 cbWXShareTimes; //微信分享次数 }; //列表配置 struct CMD_GP_ListConfig { uint8 bShowOnLineCount; //显示人数 }; ////////////////////////////////////////////////////////////////////////////////// //列表命令 #define MDM_MB_SERVER_LIST 101 //列表信息 //列表信息 #define SUB_MB_LIST_TYPE 100 //游戏类型 #define SUB_MB_LIST_KIND 101 //种类列表 #define SUB_MB_LIST_NODE 102 //节点列表 #define SUB_MB_LIST_PAGE 103 //定制列表 #define SUB_MB_LIST_SERVER 104 //房间列表 #define SUB_MB_LIST_MATCH 105 //比赛列表 #define SUB_MB_LIST_FINISH 200 //列表完成 ////////////////////////////////////////////////////////////////////////////////// //私人场房间信息 struct CMD_GF_Private_Room_Info { uint8 bPlayCoutIdex; //玩家局数 uint8 bGameTypeIdex; //游戏类型 uint32 bGameRuleIdex; //游戏规则 uint8 bStartGame; uint32 dwPlayCout; //游戏局数 uint32 dwRoomNum; uint32 dwCreateUserID; uint32 dwUnionCode; uint32 dwPlayTotal; //总局数 uint32 dwPlayCost; // 消耗点数 uint8 cbRoomType; // 工会开房欢乐场; uint8 cbUnionGoldOpen; //是否开启欢乐场 SCORE lScoreMultiple; //倍数 SCORE lGameGold; //佣金 uint8 cbBaseScore; //底分 std::vector kWinLoseScore; CMD_GF_Private_Room_Info() { bPlayCoutIdex = 0; bGameTypeIdex = 0; bGameRuleIdex = 0; bStartGame = 0; dwPlayCout = 0; dwRoomNum = 0; dwCreateUserID = 0; dwPlayTotal = 0; dwPlayCost = 0; cbRoomType = 0; cbUnionGoldOpen = 0; lScoreMultiple = 0; lGameGold = 0; cbBaseScore = 0; kWinLoseScore.clear(); } CMD_GF_Private_Room_Info(const CMD_GF_Private_Room_Info& refInfo) { bPlayCoutIdex = refInfo.bPlayCoutIdex; bGameTypeIdex = refInfo.bGameTypeIdex; bGameRuleIdex = refInfo.bGameRuleIdex; bStartGame = refInfo.bStartGame; dwPlayCout = refInfo.dwPlayCout; dwRoomNum = refInfo.dwRoomNum; dwCreateUserID = refInfo.dwCreateUserID; dwPlayTotal = refInfo.dwPlayTotal; dwPlayCost = refInfo.dwPlayCost; cbRoomType = refInfo.cbRoomType; cbUnionGoldOpen = refInfo.cbUnionGoldOpen; lScoreMultiple = refInfo.lScoreMultiple; lGameGold = refInfo.lGameGold; cbBaseScore = refInfo.cbBaseScore; kWinLoseScore.assign(refInfo.kWinLoseScore.begin(), refInfo.kWinLoseScore.end()); } CMD_GF_Private_Room_Info& operator=(const CMD_GF_Private_Room_Info& refInfo) { if (this == &refInfo) { return *this; } bPlayCoutIdex = refInfo.bPlayCoutIdex; bGameTypeIdex = refInfo.bGameTypeIdex; bGameRuleIdex = refInfo.bGameRuleIdex; bStartGame = refInfo.bStartGame; dwPlayCout = refInfo.dwPlayCout; dwRoomNum = refInfo.dwRoomNum; dwCreateUserID = refInfo.dwCreateUserID; dwPlayTotal = refInfo.dwPlayTotal; dwPlayCost = refInfo.dwPlayCost; cbRoomType = refInfo.cbRoomType; cbUnionGoldOpen = refInfo.cbUnionGoldOpen; lScoreMultiple = refInfo.lScoreMultiple; lGameGold = refInfo.lGameGold; cbBaseScore = refInfo.cbBaseScore; kWinLoseScore.assign(refInfo.kWinLoseScore.begin(), refInfo.kWinLoseScore.end()); return *this; } void StreamValue(DataStream& kData, bool bSend) { Stream_VALUE(bPlayCoutIdex); Stream_VALUE(bGameTypeIdex); Stream_VALUE(bGameRuleIdex); Stream_VALUE(bStartGame); Stream_VALUE(dwPlayCout); Stream_VALUE(dwRoomNum); Stream_VALUE(dwCreateUserID); Stream_VALUE(dwPlayTotal); Stream_VALUE(dwPlayCost); Stream_VALUE(cbRoomType); Stream_VALUE(cbUnionGoldOpen); Stream_VALUE(lScoreMultiple); Stream_VALUE(lGameGold); Stream_VALUE(cbBaseScore); StructVecotr(int, kWinLoseScore); } }; //游戏记录 struct CMD_GP_GetGameTotalRecord { uint32 dwUserID; uint32 dwRecordID; }; //欢乐场积分信息 struct CMD_GF_Private_Score_Info { uint8 cbPlayerCount; //玩家数 std::vector kScoreInfoArray;//欢乐积分 CMD_GF_Private_Score_Info() { cbPlayerCount = 0; kScoreInfoArray.clear(); } CMD_GF_Private_Score_Info(const CMD_GF_Private_Score_Info& refInfo) { cbPlayerCount = refInfo.cbPlayerCount; kScoreInfoArray.assign(refInfo.kScoreInfoArray.begin(), refInfo.kScoreInfoArray.end()); } CMD_GF_Private_Score_Info& operator=(const CMD_GF_Private_Score_Info& refInfo) { if (this == &refInfo) { return *this; } cbPlayerCount = refInfo.cbPlayerCount; kScoreInfoArray.assign(refInfo.kScoreInfoArray.begin(), refInfo.kScoreInfoArray.end()); return *this; } void StreamValue(DataStream& kData, bool bSend) { Stream_VALUE(cbPlayerCount); StructVecotr(SCORE, kScoreInfoArray); } }; ///////////////////////////// 注释: 参与网络传输的数据包需要字节对齐 ///////////////////////////////////////////// // 此次开房的每局游戏记录; struct tagPrivateRandRecordChild { uint32 dwKindID; uint32 dwVersion; int iRecordID; int iRecordChildID; std::vector kScore; systemtime kPlayTime; DataStream kRecordGame; std::string kUserDefine; tagPrivateRandRecordChild() { dwKindID = 0; dwVersion = 0; iRecordID = 0; iRecordChildID = 0; kScore.clear(); kRecordGame.clear(); kUserDefine.clear(); } tagPrivateRandRecordChild(const tagPrivateRandRecordChild& refInfo) { dwKindID = refInfo.dwKindID; dwVersion = refInfo.dwVersion; iRecordID = refInfo.iRecordID; iRecordChildID = refInfo.iRecordChildID; kScore.assign(refInfo.kScore.begin(), refInfo.kScore.end()); kPlayTime = refInfo.kPlayTime; kRecordGame.assign(refInfo.kRecordGame.begin(), refInfo.kRecordGame.end()); kUserDefine = refInfo.kUserDefine; } tagPrivateRandRecordChild& operator=(const tagPrivateRandRecordChild& refInfo) { if (this == &refInfo) { return *this; } dwKindID = refInfo.dwKindID; dwVersion = refInfo.dwVersion; iRecordID = refInfo.iRecordID; iRecordChildID = refInfo.iRecordChildID; kScore.assign(refInfo.kScore.begin(), refInfo.kScore.end()); kPlayTime = refInfo.kPlayTime; kRecordGame.assign(refInfo.kRecordGame.begin(), refInfo.kRecordGame.end()); kUserDefine = refInfo.kUserDefine; return *this; } void StreamValue(DataStream& kData, bool bSend) { Stream_VALUE(dwKindID); Stream_VALUE(dwVersion); Stream_VALUE(iRecordID); Stream_VALUE(iRecordChildID); StructVecotr(int, kScore); Stream_VALUE_SYSTEMTIME(kPlayTime); Stream_VALUE(kRecordGame); Stream_VALUE(kUserDefine); } }; // 每次开房统计; struct tagPrivateRandTotalRecord { tagPrivateRandTotalRecord() { dwKindID = 0; dwVersion = 0; iRoomNum = 0; iRecordID = 0; cbGameCount = 0; kScore.clear(); kUserID.clear(); kNickName.clear(); kHeadHttp.clear(); kUserDefine.clear(); } DWORD dwKindID; // 游戏ID; DWORD dwVersion; // 版本号; int iRoomNum; // 房间号; int iRecordID; // 记录ID; BYTE cbGameCount; // 游戏局数; std::vector kScore; // 玩家积分; std::vector kUserID; // 玩家ID; std::vector kNickName; // 玩家昵称; std::vector kHeadHttp; // 微信头像; systemtime kPlayTime; // 游戏时间; std::string kUserDefine; // 其他信息; std::vector kRecordChild; tagPrivateRandTotalRecord(const tagPrivateRandTotalRecord& refInfo) { dwKindID = refInfo.dwKindID; dwVersion = refInfo.dwVersion; iRoomNum = refInfo.iRoomNum; iRecordID = refInfo.iRecordID; cbGameCount = refInfo.cbGameCount; kScore.assign(refInfo.kScore.begin(), refInfo.kScore.end()); kUserID.assign(refInfo.kUserID.begin(), refInfo.kUserID.end()); kNickName.assign(refInfo.kNickName.begin(), refInfo.kNickName.end()); kHeadHttp.assign(refInfo.kHeadHttp.begin(), refInfo.kHeadHttp.end()); kPlayTime = refInfo.kPlayTime; kUserDefine = refInfo.kUserDefine; kRecordChild.assign(refInfo.kRecordChild.begin(), refInfo.kRecordChild.end()); } tagPrivateRandTotalRecord& operator=(const tagPrivateRandTotalRecord& refInfo) { if (this == &refInfo) { return *this; } dwKindID = refInfo.dwKindID; dwVersion = refInfo.dwVersion; iRoomNum = refInfo.iRoomNum; iRecordID = refInfo.iRecordID; cbGameCount = refInfo.cbGameCount; kScore.assign(refInfo.kScore.begin(), refInfo.kScore.end()); kUserID.assign(refInfo.kUserID.begin(), refInfo.kUserID.end()); kNickName.assign(refInfo.kNickName.begin(), refInfo.kNickName.end()); kHeadHttp.assign(refInfo.kHeadHttp.begin(), refInfo.kHeadHttp.end()); kPlayTime = refInfo.kPlayTime; kUserDefine = refInfo.kUserDefine; kRecordChild.assign(refInfo.kRecordChild.begin(), refInfo.kRecordChild.end()); return *this; } void StreamValue(DataStream& kData, bool bSend) { Stream_VALUE(dwKindID); Stream_VALUE(dwVersion); Stream_VALUE(iRoomNum); Stream_VALUE(iRecordID); Stream_VALUE(cbGameCount); StructVecotr(int, kScore); StructVecotr(int, kUserID); Stream_VALUE(kNickName); Stream_VALUE(kHeadHttp); Stream_VALUE_SYSTEMTIME(kPlayTime); Stream_VALUE(kUserDefine); StructVecotrMember(tagPrivateRandRecordChild, kRecordChild); } }; // 总开房记录; struct tagPrivateRandTotalRecordList { uint32 dwUserID; std::vector kList; tagPrivateRandTotalRecordList() { dwUserID = 0; kList.clear(); } tagPrivateRandTotalRecordList(const tagPrivateRandTotalRecordList& refInfo) { dwUserID = refInfo.dwUserID; kList.assign(refInfo.kList.begin(), refInfo.kList.end()); } tagPrivateRandTotalRecordList& operator=(const tagPrivateRandTotalRecordList& refInfo) { if (this == &refInfo) { return *this; } dwUserID = refInfo.dwUserID; kList.assign(refInfo.kList.begin(), refInfo.kList.end()); return *this; } void StreamValue(DataStream& kData, bool bSend) { Stream_VALUE(dwUserID); StructVecotrMember(tagPrivateRandTotalRecord, kList); } }; // 玩家信息; struct tagGameRecordPlayer { uint32 dwUserID; //用户ID; uint32 dwGameID; //游戏标识; uint16 wChairID; //游戏标识; BYTE cbSex; //性别; SCORE lScore; //当前分数; std::string strHead; //头像url; std::string strNickName; //昵称; std::vector cbCardData; //牌值数据; tagGameRecordPlayer() { dwUserID = 0; dwGameID = 0; wChairID = 0; cbSex = 0; lScore = 0; strHead.clear(); strNickName.clear(); cbCardData.clear(); } tagGameRecordPlayer(const tagGameRecordPlayer& refInfo) { dwUserID = refInfo.dwUserID; dwGameID = refInfo.dwGameID; wChairID = refInfo.wChairID; cbSex = refInfo.cbSex; lScore = refInfo.lScore; strHead = refInfo.strHead; strNickName = refInfo.strNickName; cbCardData.assign(refInfo.cbCardData.begin(), refInfo.cbCardData.end()); } tagGameRecordPlayer& operator=(const tagGameRecordPlayer& refInfo) { if (this == &refInfo) { return *this; } dwUserID = refInfo.dwUserID; dwGameID = refInfo.dwGameID; wChairID = refInfo.wChairID; cbSex = refInfo.cbSex; lScore = refInfo.lScore; strHead = refInfo.strHead; strNickName = refInfo.strNickName; cbCardData.assign(refInfo.cbCardData.begin(), refInfo.cbCardData.end()); return *this; } void StreamValue(DataStream& kData, bool bSend) { Stream_VALUE(dwUserID); Stream_VALUE(dwGameID); Stream_VALUE(wChairID); Stream_VALUE(cbSex); Stream_VALUE(lScore); Stream_VALUE(strHead); Stream_VALUE(strNickName); Stream_VALUE(cbCardData); } }; // 操作结果; struct tagGameRecordOperateResult { uint16 wSubCmdID; //消息类型; DataStream subMessageData; //消息内容; tagGameRecordOperateResult() { wSubCmdID = 0; subMessageData.clear(); } tagGameRecordOperateResult(const tagGameRecordOperateResult& refInfo) { wSubCmdID = refInfo.wSubCmdID; subMessageData.assign(refInfo.subMessageData.begin(), refInfo.subMessageData.end()); } tagGameRecordOperateResult& operator=(const tagGameRecordOperateResult& refInfo) { if (this == &refInfo) { return *this; } wSubCmdID = refInfo.wSubCmdID; subMessageData.assign(refInfo.subMessageData.begin(), refInfo.subMessageData.end()); return *this; } void StreamValue(DataStream& kData, bool bSend) { Stream_VALUE(wSubCmdID); Stream_VALUE(subMessageData); } }; // 一局游戏信息; struct tagGameRecord { uint16 wBankerUser; //庄家用户; uint16 wEastUser; //首次东家; CMD_GF_Private_Room_Info roomInfo; //游戏基本信息; std::vector playersVec; //每个玩家的基本信息; std::vector actionVec; //用户操作; tagGameRecord() { wBankerUser = 0; wEastUser = 0; playersVec.clear(); actionVec.clear(); } tagGameRecord(const tagGameRecord& refGameRecord) { wBankerUser = refGameRecord.wBankerUser; wEastUser = refGameRecord.wEastUser; roomInfo = refGameRecord.roomInfo; playersVec.assign(refGameRecord.playersVec.begin(), refGameRecord.playersVec.end()); actionVec.assign(refGameRecord.actionVec.begin(), refGameRecord.actionVec.end()); } bool StreamValue(DataStream& kData, bool bSend) { try { Stream_VALUE(wBankerUser); Stream_VALUE(wEastUser); roomInfo.StreamValue(kData, bSend); StructVecotrMember(tagGameRecordPlayer, playersVec); StructVecotrMember(tagGameRecordOperateResult, actionVec); return true; } catch (...) { return false; } } }; //工会列表; struct tagUnionItem { uint32 dwUserID; //会长ID; uint32 dwUnionCode; //工会码; uint8 cbUnionGoldOpen; //1开启欢乐豆模式,0不开启; uint8 cbUnionOpen; //是否有开房权限 0 无 1 有; SCORE lPeople; //工会人数; SCORE lUnionCard; //工会房卡; char szUnionName[32]; //工会名称; void StreamValue(DataStream& kData, bool bSend) { if (bSend) { kData.pushValue(this, sizeof(tagUnionItem)); } else { kData.popValue(this, sizeof(tagUnionItem)); } } }; struct tagUnionItemList { std::vector kList; tagUnionItemList() { kList.clear(); } tagUnionItemList(const tagUnionItemList& refInfo) { kList.assign(refInfo.kList.begin(), refInfo.kList.end()); } tagUnionItemList& operator=(const tagUnionItemList& refInfo) { if (this == &refInfo) { return *this; } kList.assign(refInfo.kList.begin(), refInfo.kList.end()); return *this; } void StreamValue(DataStream& kData, bool bSend) { StructVecotrMember(tagUnionItem, kList); } }; struct tagUnionGameItem { uint32 dwUnionCode; //工会码; uint8 wKindID; //游戏ID; void StreamValue(DataStream& kData, bool bSend) { if (bSend) { kData.pushValue(this, sizeof(tagUnionGameItem)); } else { kData.popValue(this, sizeof(tagUnionGameItem)); } } }; struct tagUnionGameList { std::vector kList; tagUnionGameList() { kList.clear(); } tagUnionGameList(const tagUnionGameList& refInfo) { kList.assign(refInfo.kList.begin(), refInfo.kList.end()); } tagUnionGameList& operator=(const tagUnionGameList& refInfo) { if (this == &refInfo) { return *this; } kList.assign(refInfo.kList.begin(), refInfo.kList.end()); return *this; } void StreamValue(DataStream& kData, bool bSend) { StructVecotrMember(tagUnionGameItem, kList); } }; struct tagUnionAndGameList { std::vector kUnionList; //std::vector kGameList; tagUnionAndGameList() { kUnionList.clear(); //kGameList.clear(); } tagUnionAndGameList(const tagUnionAndGameList& refInfo) { kUnionList.assign(refInfo.kUnionList.begin(), refInfo.kUnionList.end()); //kGameList.assign(refInfo.kGameList.begin(), refInfo.kGameList.end()); } tagUnionAndGameList& operator=(const tagUnionAndGameList& refInfo) { if (this == &refInfo) { return *this; } kUnionList.assign(refInfo.kUnionList.begin(), refInfo.kUnionList.end()); //kGameList.assign(refInfo.kGameList.begin(), refInfo.kGameList.end()); return *this; } void StreamValue(DataStream& kData, bool bSend) { StructVecotrMember(tagUnionItem, kUnionList); //StructVecotrMember(tagUnionGameItem, kGameList); } }; //房间列表; struct tagRoomItem { uint16 wKindID; //游戏ID; uint32 dwUnionCode; //工会码; uint8 cbUnionGoldOpen; //1开启欢乐豆模式,0不开启; uint8 cbGameOK; //房间状态 1 初始 2 游戏中 8结束 uint32 dwRoomID; //房间ID; uint32 dwGameRule; //游戏规则; uint8 cbPlayCout; //已游戏局数; uint8 cbPlayCoutIdex; //游戏局数; uint8 cbBaseScore; //底分; DWORD dwUserIDs[5]; systemtime InsertTime; //开始时间 char szUnionName[32]; //工会名称; void StreamValue(DataStream& kData, bool bSend) { if (bSend) { kData.pushValue(this, sizeof(tagRoomItem)); } else { kData.popValue(this, sizeof(tagRoomItem)); } } }; struct tagRoomItemList { uint8 cbPlayRoomCount; std::vector kList; tagRoomItemList() { cbPlayRoomCount = 0; kList.clear(); } tagRoomItemList(const tagRoomItemList& refInfo) { cbPlayRoomCount = refInfo.cbPlayRoomCount; kList.assign(refInfo.kList.begin(), refInfo.kList.end()); } tagRoomItemList& operator=(const tagRoomItemList& refInfo) { if (this == &refInfo) { return *this; } cbPlayRoomCount = refInfo.cbPlayRoomCount; kList.assign(refInfo.kList.begin(), refInfo.kList.end()); return *this; } void StreamValue(DataStream& kData, bool bSend) { Stream_VALUE(cbPlayRoomCount); StructVecotrMember(tagRoomItem, kList); } }; //自动房间列表; struct tagAutoRoomItem { uint32 dwIndex; uint16 wKindID; //游戏ID; uint16 wServerID; uint32 dwUnionCode; //工会码; uint8 cbUnionGoldOpen; //1开启欢乐豆模式,0不开启; uint32 dwGameRule; //游戏规则; uint8 cbPlayCoutIdex; //游戏局数; uint8 cbPlayCout; //游戏局数; uint8 cbBaseScore; //底分; char szUnionName[32]; //工会名称; char szCreateTime[32]; //创建时间; void StreamValue(DataStream& kData, bool bSend) { if (bSend) { kData.pushValue(this, sizeof(tagAutoRoomItem)); } else { kData.popValue(this, sizeof(tagAutoRoomItem)); } } }; struct tagAutoRoomItemList { std::vector kList; tagAutoRoomItemList() { kList.clear(); } tagAutoRoomItemList(const tagAutoRoomItemList& refInfo) { kList.assign(refInfo.kList.begin(), refInfo.kList.end()); } tagAutoRoomItemList& operator=(const tagAutoRoomItemList& refInfo) { if (this == &refInfo) { return *this; } kList.assign(refInfo.kList.begin(), refInfo.kList.end()); return *this; } void StreamValue(DataStream& kData, bool bSend) { StructVecotrMember(tagAutoRoomItem, kList); } }; // 自由模式玩家准备开始状态; struct tagAutoUserStatus { bool bStartGame; // 桌子上人状态; }; #pragma pack() #endif