Files
wnmj-normal/Classes/Define/CMD_GameServer.h
2026-03-03 13:56:44 +08:00

670 lines
18 KiB
C++

#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<SCORE> lPlayerMaxScore;
std::vector<SCORE> lPlayerWinLose;
std::vector<uint8> 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