219 lines
6.0 KiB
C
219 lines
6.0 KiB
C
#ifndef CMD_ZJH_h__
|
|
#define CMD_ZJH_h__
|
|
#pragma once
|
|
|
|
//宏定义;
|
|
#define KIND_ID 6 //游戏ID;
|
|
#define GAME_PLAYER 5 //游戏人数;
|
|
#define GAME_NAME TEXT("诈金花") //游戏名字;
|
|
#define EXPORT_NAME TEXT("ZJH") //导出名称;
|
|
#define VERSION_SERVER PROCESS_VERSION(6,0,3) //程序版本;
|
|
#define VERSION_CLIENT PROCESS_VERSION(6,0,3) //程序版本;
|
|
|
|
//扑克;
|
|
#define MAX_COUNT 3 //扑克数目;
|
|
#define FULL_COUNT 52 //扑克总数;
|
|
#define MASK_COLOR 0xF0 //花色掩码;
|
|
#define MASK_VALUE 0x0F //数值掩码;
|
|
|
|
//牌型;
|
|
#define CT_ERROR 0 //无效类型;
|
|
#define CT_SINGLE 1 //单牌类型;
|
|
#define CT_DOUBLE 2 //对子类型;
|
|
#define CT_SHUN_ZI 3 //顺子类型;
|
|
#define CT_JIN_HUA 4 //金花类型;
|
|
#define CT_SHUN_JIN 5 //顺金类型;
|
|
#define CT_BAO_ZI 6 //豹子类型;
|
|
#define CT_SPECIAL 7 //235类型;
|
|
|
|
//游戏状态;
|
|
#define GS_ZJH_FREE GAME_STATUS_FREE //空闲状态;
|
|
#define GS_ZJH_SEND_CARD GAME_STATUS_PLAY //发牌阶段;
|
|
#define GS_ZJH_PLAYING (GAME_STATUS_PLAY+1) //游戏进行;
|
|
|
|
//游戏进行状态;
|
|
#define ST_GAMING_NULL 0 //旁观;
|
|
#define ST_GAMING_HIDDEN 1 //暗牌;
|
|
#define ST_GAMING_LOOK 2 //看牌;
|
|
#define ST_GAMING_LOSE 3 //比牌输;
|
|
#define ST_GAMING_GIVEUP 4 //放弃;
|
|
|
|
//操作类型;
|
|
#define OPERATE_NULL 0x00 //无效;
|
|
#define OPERATE_GIVEUP 0x01 //放弃;
|
|
#define OPERATE_LOOK 0x02 //看牌;
|
|
#define OPERATE_FOLLOW 0x04 //跟注;
|
|
#define OPERATE_ADD_CHIP 0x08 //加注;
|
|
#define OPERATE_COMPARE_CARD 0x10 //比牌;
|
|
|
|
//服务器命令码;
|
|
#define SUB_S_GAME_START 100 //游戏开始;
|
|
#define SUB_S_START_CHIP 101 //开始下注;
|
|
#define SUB_S_GIVE_UP 102 //放弃跟注;
|
|
#define SUB_S_USER_CHIP 103 //加注结果;
|
|
#define SUB_S_LOOK_CARD 104 //看牌跟注;
|
|
#define SUB_S_COMPARE_CARD 105 //比牌跟注;
|
|
#define SUB_S_GAME_END 106 //游戏结束;
|
|
#define SUB_S_CHEAT_CARD 111 //作弊消息;
|
|
|
|
//客户端命令码;
|
|
#define SUB_C_SEND_OVER 1 //发牌结束;
|
|
#define SUB_C_USER_OPERATE 2 //用户操作;
|
|
#define SUB_C_MASTER_CONTROL 10 //作弊控制;
|
|
|
|
#pragma pack(1)
|
|
//开房规则枚举;
|
|
enum tagZJHGameRuleEnum
|
|
{
|
|
eZJHGameRuleCardAA = 1, // 房卡AA
|
|
eZJHGameRuleCompareRound1 = 1 << 1, // 1轮比牌;
|
|
eZJHGameRuleCompareRound2 = 1 << 2, // 2轮比牌;
|
|
eZJHGameRuleCompareRound3 = 1 << 3, // 3轮比牌;
|
|
eZJHGameRuleOpenCardRound5 = 1 << 4, // 5轮开牌;
|
|
eZJHGameRuleOpenCardRound10 = 1 << 5, // 10轮开牌;
|
|
eZJHGameRuleOpenCardRound15 = 1 << 6, // 15轮开牌;
|
|
eZJHGameRuleLookCardRound0 = 1 << 7, // 不闷牌;
|
|
eZJHGameRuleLookCardRound2 = 1 << 8, // 闷2轮牌;
|
|
eZJHGameRuleLookCardRound3 = 1 << 9, // 闷3轮牌;
|
|
};
|
|
|
|
|
|
//游戏状态;
|
|
typedef struct CMD_S_StatusFree
|
|
{
|
|
LONG lCellScore; //基础积分;
|
|
BYTE cbCurRound; //当前轮数;
|
|
BYTE cbMaxRound; //最大轮数;
|
|
LONG lCurChipScore; //当前注数;
|
|
LONG lMaxChipScore; //最大可下注;
|
|
WORD wOperTimeOut; //操作超时时间;
|
|
}StatusBase;
|
|
|
|
//发牌状态;
|
|
struct CMD_S_StatusSendCard
|
|
{
|
|
StatusBase stBase; //基础信息;
|
|
bool bSendOver; //发牌结束;
|
|
WORD wBankerUser; //庄家用户;
|
|
BYTE cbGamingStatus[GAME_PLAYER]; //玩家游戏状态;
|
|
LONG lUserChipScore[GAME_PLAYER]; //玩家下注;
|
|
};
|
|
|
|
//游戏状态;
|
|
struct CMD_S_StatusPlay
|
|
{
|
|
StatusBase stBase; //基础信息
|
|
WORD wBankerUser; //庄家用户
|
|
WORD wCurrentUser; //当前玩家
|
|
DWORD dwOperateCode; //操作码
|
|
BYTE cbGamingStatus[GAME_PLAYER]; //玩家游戏状态
|
|
BYTE cbHandCardData[MAX_COUNT]; //扑克数据
|
|
LONG lUserChipScore[GAME_PLAYER]; //玩家下注
|
|
};
|
|
|
|
//游戏开始;
|
|
struct CMD_S_GameStart
|
|
{
|
|
BYTE cbCurRound; //当前轮数;
|
|
WORD wBankerUser; //庄家用户;
|
|
LONG lCurChipScore; //当前下注;
|
|
BYTE cbGamingStatus[GAME_PLAYER]; //玩家游戏状态;
|
|
LONG lUserChipScore[GAME_PLAYER]; //玩家下注;
|
|
};
|
|
|
|
//开始下注;
|
|
typedef struct CMD_S_StartChip
|
|
{
|
|
BYTE cbCurRound; //当前轮数;
|
|
WORD wCurrentUser; //当前用户;
|
|
DWORD dwOperateCode; //操作掩码;
|
|
LONG lCurChipScore; //当前下注;
|
|
}ChipInfo;
|
|
|
|
//用户下注;
|
|
struct CMD_S_ChipScore
|
|
{
|
|
WORD wChipUser; //加注用户;
|
|
LONG lChipScore; //下注筹码;
|
|
LONG lTtlChipScore; //总的下注;
|
|
DWORD dwOperateCode; //操作类型;
|
|
ChipInfo stChipInfo; //当前下注信息;
|
|
};
|
|
|
|
//用户放弃;
|
|
struct CMD_S_GiveUp
|
|
{
|
|
WORD wGiveUpUser; //放弃玩家;
|
|
ChipInfo stChipInfo; //当前下注信息;
|
|
};
|
|
|
|
//看牌数据包;
|
|
struct CMD_S_LookCard
|
|
{
|
|
WORD wLookUser; //看牌玩家;
|
|
BYTE cbCardData[MAX_COUNT]; //玩家扑克;
|
|
ChipInfo stChipInfo; //当前下注信息;
|
|
};
|
|
|
|
//比牌数据包;
|
|
struct CMD_S_CompareCard
|
|
{
|
|
bool bWin; //输赢结果;
|
|
WORD wChairID; //比牌者;
|
|
WORD wCompareUser; //被比牌者;
|
|
LONG lChipScore; //下注筹码;
|
|
LONG lTtlChipScore; //总的下注;
|
|
ChipInfo stChipInfo; //当前下注信息;
|
|
};
|
|
|
|
//游戏结束;
|
|
struct CMD_S_GameEnd
|
|
{
|
|
bool isPrivateEnd; //私人场是否结束;
|
|
BYTE cbGamingStatus[GAME_PLAYER]; //玩家游戏状态;
|
|
BYTE cbCardType[GAME_PLAYER]; //玩家牌型;
|
|
BYTE cbHandCardData[GAME_PLAYER][MAX_COUNT]; //用户扑克;
|
|
LONG lGameScore[GAME_PLAYER]; //玩家游戏得分;
|
|
LONG lXiScore[GAME_PLAYER]; //喜钱;
|
|
};
|
|
|
|
//用户操作;
|
|
struct CMD_C_UserOperate
|
|
{
|
|
DWORD dwCode; //操作码;
|
|
LONG lData; //操作参数;
|
|
};
|
|
|
|
|
|
//机器人扑克;
|
|
struct CMD_S_CheatCardInfo
|
|
{
|
|
BYTE cbGamingStatus[GAME_PLAYER]; //玩家游戏状态;
|
|
BYTE cbHandCardData[GAME_PLAYER][MAX_COUNT]; //用户扑克;
|
|
};
|
|
|
|
// 游戏解散结构;
|
|
struct CMD_S_Private_End_Info
|
|
{
|
|
BYTE aryActiveStatus[GAME_PLAYER]; //手牌状态;
|
|
SCORE aryWinScore[GAME_PLAYER]; //赢分;
|
|
SCORE aryXiScore[GAME_PLAYER]; //喜钱;
|
|
SCORE aryTotalScore[GAME_PLAYER]; //总得分;
|
|
|
|
void StreamValue(DataStream& kData, bool bSend)
|
|
{
|
|
if (bSend)
|
|
{
|
|
kData.pushValue(this, sizeof(CMD_S_Private_End_Info));
|
|
}
|
|
else
|
|
{
|
|
kData.popValue(this, sizeof(CMD_S_Private_End_Info));
|
|
}
|
|
}
|
|
};
|
|
|
|
#pragma pack()
|
|
|
|
#endif // CMD_ZJH_h__
|