301 lines
8.5 KiB
C
301 lines
8.5 KiB
C
#ifndef CMD_LIANGFUTOU_HEAD_FILE
|
||
#define CMD_LIANGFUTOU_HEAD_FILE
|
||
#pragma pack(1)
|
||
//////////////////////////////////////////////////////////////////////////
|
||
//公共宏定义;
|
||
|
||
#define KIND_ID 502 //游戏 ID;
|
||
#define GAME_PLAYER 4 //游戏人数;
|
||
#define GAME_NAME TEXT("十三水") //游戏名字;
|
||
#define GAME_GENRE (GAME_GENRE_SCORE|GAME_GENRE_GOLD|GAME_GENRE_MATCH) //游戏类型;
|
||
#define HAND_CARD_COUNT 13 //扑克数目;
|
||
#define VALID_CHAIR(wChairID) ((wChairID)>=0 && (wChairID)<GAME_PLAYER)
|
||
|
||
#define VERSION_SERVER PROCESS_VERSION(6,0,3) //程序版本;
|
||
#define VERSION_CLIENT PROCESS_VERSION(6,0,3) //程序版本;
|
||
|
||
//游戏状态;
|
||
#define GS_WK_FREE GAME_STATUS_FREE //等待开始;
|
||
#define GS_WK_SEND_CARD GAME_STATUS_PLAY //发牌;
|
||
#define GS_WK_ROB_BANKER (GAME_STATUS_PLAY+1) //抢庄;
|
||
#define GS_WK_USER_CHIP (GAME_STATUS_PLAY+2) //下注;
|
||
#define GS_WK_OPEN_CARD (GAME_STATUS_PLAY+3) //开牌;
|
||
#define GS_WK_COMPARE_CARD (GAME_STATUS_PLAY+4) //比牌;
|
||
|
||
|
||
//////////////////////////////////////////////////////////////////////////////////
|
||
//状态定义;
|
||
#define GAME_SCENE_PLACE_JETTON (GAME_STATUS_PLAY) //等待开始;
|
||
#define GAME_SCENE_GAME_END (GAME_STATUS_PLAY+1) //游戏进行;
|
||
|
||
//////////////////////////////////////////////////////////////////////////
|
||
//////////////////////////////////////////////////////////////////////////
|
||
|
||
//服务器命令结构;
|
||
#define SUB_S_GAME_START 101 //游戏开始;
|
||
#define SUB_S_START_ROB 102 //开始抢庄;
|
||
#define SUB_S_USER_ROB 103 //玩家抢庄;
|
||
#define SUB_S_START_CHIP 104 //开始下注;
|
||
#define SUB_S_USER_CHIP 105 //玩家下注;
|
||
#define SUB_S_SEND_LEFT_CARD 106 //发送剩下的牌;
|
||
#define SUB_S_START_OPEN 107 //开始开牌;
|
||
#define SUB_S_OPEN_CARD 108 //玩家摊牌;
|
||
#define SUB_S_CLASSIC_CMP_CARD 109 //经典玩法比牌;
|
||
#define SUB_S_BANKER_CMP_CARD 110 //带庄家玩法比牌;
|
||
#define SUB_S_GAME_END 111 //游戏结束;
|
||
|
||
|
||
//////////////////////////////////////////////////////////////////////////
|
||
//手牌状态;
|
||
enum tagHandCardStatusEnum
|
||
{
|
||
HAND_STATUS_NULL, //旁观;
|
||
HAND_STATUS_GIVEUP, //放弃;
|
||
HAND_STATUS_DISORDER, //散牌;
|
||
HAND_STATUS_SORTED, //排序牌;
|
||
};
|
||
|
||
//////////////////////////////////////////////////////////////////////////
|
||
|
||
//开房规则枚举;
|
||
enum tagSSSGameRuleEnum
|
||
{
|
||
eSSSGameRuleCardAA = 1, //房卡AA;
|
||
eSSSGameRuleSend7Cards = 1 << 1, //发7张牌;
|
||
eSSSGameRuleRobBanker = 1 << 2, //抢庄;
|
||
eSSSGameRuleTurnBanker = 1 << 3, //轮流坐庄;
|
||
eSSSGameRuleFixBanker = 1 << 4, //霸王庄;
|
||
eSSSGameRuleClassic = 1 << 5 //经典玩法;
|
||
};
|
||
|
||
//////////////////////////////////////////////////////////////////////////
|
||
|
||
//游戏状态;
|
||
typedef struct CMD_S_StatusFree
|
||
{
|
||
WORD wRobBankerTime; //抢庄时间;
|
||
WORD wUserChipTime; //下注时间;
|
||
WORD wBuildCardTime; //配牌时间;
|
||
BYTE cbHandStatus[GAME_PLAYER]; //手牌状态;
|
||
}tagBaseStatus;
|
||
|
||
//抢庄状态;
|
||
struct CMD_S_StatusRob
|
||
{
|
||
tagBaseStatus BaseStatus;
|
||
|
||
BYTE cbRobStatus[GAME_PLAYER]; //抢庄状态 0:没操作,1:不抢,2:抢;
|
||
|
||
BYTE cbCardCount; //扑克数量;
|
||
BYTE cbHandCardData[HAND_CARD_COUNT]; //手牌数据;
|
||
};
|
||
|
||
//下注状态;
|
||
struct CMD_S_StatusChip
|
||
{
|
||
tagBaseStatus BaseStatus;
|
||
WORD wBankerUser; //庄家用户;
|
||
BYTE cbChipStatus[GAME_PLAYER]; //下注状态;
|
||
LONG lUserChipScore[GAME_PLAYER]; //下注分数;
|
||
|
||
BYTE cbCardCount; //扑克数量;
|
||
BYTE cbHandCardData[HAND_CARD_COUNT]; //手牌数据;
|
||
};
|
||
|
||
//发牌状态;
|
||
struct CMD_S_StatusSendCard
|
||
{
|
||
tagBaseStatus BaseStatus;
|
||
|
||
WORD wBankerUser; //庄家用户;
|
||
bool bSendOver; //发牌结束;
|
||
WORD wSpecialType; //特殊牌型;
|
||
|
||
BYTE cbCardCount; //扑克数量;
|
||
BYTE cbHandCardData[HAND_CARD_COUNT]; //扑克牌数据;
|
||
|
||
};
|
||
|
||
//开牌状态;
|
||
struct CMD_S_StatusOpen
|
||
{
|
||
tagBaseStatus BaseStatus;
|
||
|
||
WORD wBankerUser; //庄家用户;
|
||
WORD wSpecialType; //特殊牌型;
|
||
LONG lUserChipScore[GAME_PLAYER]; //下注分数;
|
||
BYTE cbHandCardData[HAND_CARD_COUNT]; //扑克牌数据;
|
||
};
|
||
|
||
//庄家玩家比牌;
|
||
struct CMD_S_BankerCompareCard
|
||
{
|
||
BYTE cbHandStatus[GAME_PLAYER]; //手牌状态;
|
||
BYTE cbFrontCard[GAME_PLAYER][3]; //玩家前墩;
|
||
BYTE cbMidCard[GAME_PLAYER][5]; //玩家中墩;
|
||
BYTE cbBackCard[GAME_PLAYER][5]; //玩家后墩;
|
||
WORD wHandCardType[GAME_PLAYER][3]; //每一道牌类型;
|
||
|
||
BYTE cbBankerCmpResult[GAME_PLAYER][3]; //庄家其他玩家比牌每一道结果;
|
||
BYTE cbOtherCmResult[GAME_PLAYER][3]; //其他玩家与庄家比牌每一道结果;
|
||
};
|
||
|
||
//带庄家玩法比牌状态;
|
||
struct CMD_S_StatusBankerCompare
|
||
{
|
||
WORD wRobBankerTime; //抢庄时间;
|
||
WORD wUserChipTime; //下注时间;
|
||
WORD wBuildCardTime; //配牌时间;
|
||
bool bCompareOver; //比牌结束;
|
||
WORD wBankerUser; //庄家用户;
|
||
|
||
LONG lUserChipScore[GAME_PLAYER]; //下注分数;
|
||
|
||
CMD_S_BankerCompareCard CompareStatus; //比牌状态;
|
||
};
|
||
|
||
//经典玩法比牌;
|
||
struct CMD_S_ClassicCompareCard
|
||
{
|
||
BYTE cbHandStatus[GAME_PLAYER]; //手牌状态;
|
||
WORD wSpecialType[GAME_PLAYER]; //特殊牌型;
|
||
int nSpecialCompareResult[GAME_PLAYER]; //特殊牌型比较结果;
|
||
BYTE cbFrontCard[GAME_PLAYER][3]; //玩家前墩;
|
||
BYTE cbMidCard[GAME_PLAYER][5]; //玩家中墩;
|
||
BYTE cbBackCard[GAME_PLAYER][5]; //玩家后墩;
|
||
WORD wHandCardType[GAME_PLAYER][3]; //每一道牌类型;
|
||
int nCompareResult[GAME_PLAYER][3]; //每一道比较结果;
|
||
bool bDaoshui[GAME_PLAYER]; //倒水;
|
||
int aryShootDaoShu[GAME_PLAYER][GAME_PLAYER]; //用来计算一家和另一家打枪要加的水数;
|
||
BYTE aryShootState[6][2]; //0为赢的玩家,1为输的玩家,值为255为无效玩家;
|
||
BYTE cbShootCount; //几家打枪;
|
||
int cbThreeKillResult[GAME_PLAYER]; //全垒打加减分;
|
||
WORD wAllUser; //全垒打用户;
|
||
};
|
||
|
||
//经典玩法比牌状态;
|
||
struct CMD_S_StatusClassicCompare
|
||
{
|
||
WORD wRobBankerTime; //抢庄时间;
|
||
WORD wUserChipTime; //下注时间;
|
||
WORD wBuildCardTime; //配牌时间;
|
||
bool bCompareOver; //比牌结束;
|
||
|
||
CMD_S_ClassicCompareCard CompareStatus; //比牌状态;
|
||
};
|
||
|
||
//////////////////////////////////////////////////////////////////////////
|
||
|
||
//游戏开始;
|
||
struct CMD_S_GameStart
|
||
{
|
||
WORD wBankerChairID; //庄家ID;
|
||
WORD wSpecialType; //特殊牌型;
|
||
BYTE cbBossCount; //王数量;
|
||
|
||
BYTE cbCardCount; //扑克数量;
|
||
BYTE cbHandCardData[HAND_CARD_COUNT]; //扑克数据;
|
||
BYTE cbHandStatus[GAME_PLAYER]; //手牌状态;
|
||
};
|
||
|
||
//玩家抢庄;
|
||
struct CMD_S_UserRob
|
||
{
|
||
WORD wRobUser; //抢庄玩家;
|
||
bool bRobResult; //是否抢庄;
|
||
};
|
||
|
||
//开始下注;
|
||
struct CMD_S_StartChip
|
||
{
|
||
WORD wBankerUser; //庄家用户;
|
||
};
|
||
|
||
//玩家下注;
|
||
struct CMD_S_UserChip
|
||
{
|
||
WORD wChipUser; //下注玩家;
|
||
LONG lChipScore; //下注分数;
|
||
};
|
||
|
||
//玩家剩余的牌;
|
||
struct CMD_S_SendLeftCard
|
||
{
|
||
BYTE cbLeftCardCount; //剩余的扑克数量;
|
||
BYTE cbLeftCardData[HAND_CARD_COUNT]; //剩余的扑克数据;
|
||
BYTE cbHandCardData[HAND_CARD_COUNT]; //扑克数据;
|
||
};
|
||
|
||
//玩家摊牌;
|
||
struct CMD_S_OpenCard
|
||
{
|
||
WORD wChairID; //摊牌玩家;
|
||
};
|
||
|
||
//游戏结束;
|
||
struct CMD_S_GameEnd
|
||
{
|
||
bool isPrivateEnd; //私人场是否结束;
|
||
BYTE cbHandStatus[GAME_PLAYER]; //手牌状态;
|
||
SCORE lGameScore[GAME_PLAYER]; //游戏积分;
|
||
};
|
||
|
||
|
||
//////////////////////////////////////////////////////////////////////////
|
||
//客户端命令结构;
|
||
#define SUB_C_GETBANK 301 //抢庄命令;
|
||
#define SUB_C_SEND_OVER 302 //发牌结束;
|
||
#define SUB_C_OPEN_CARD 303 //玩家摊牌;
|
||
#define SUB_C_COMPARE_OVER 304 //比牌完成;
|
||
#define SUB_C_ROB_BANKER 305 //玩家抢庄;
|
||
#define SUB_C_CHIP_SCORE 306 //玩家下注;
|
||
|
||
|
||
//分段信息;
|
||
struct CMD_C_OpenCard
|
||
{
|
||
BYTE cbFrontCard[3]; //前墩扑克;
|
||
BYTE cbMidCard[5]; //中墩扑克;
|
||
BYTE cbBackCard[5]; //后墩扑克;
|
||
WORD wSpecialType; //是否是特殊牌;
|
||
};
|
||
|
||
//用户叫庄;
|
||
struct CMD_C_RobBanker
|
||
{
|
||
bool bRob; //是否抢庄;
|
||
};
|
||
|
||
//用户加注;
|
||
struct CMD_C_ChipScore
|
||
{
|
||
LONG lScore; //下注数目;
|
||
};
|
||
|
||
//////////////////////////////////////////////////////////////////////////
|
||
|
||
// 游戏解散结构;
|
||
struct CMD_S_Private_End_Info
|
||
{
|
||
BYTE aryActiveStatus[GAME_PLAYER]; //手牌状态;
|
||
SCORE lUserScore[GAME_PLAYER]; //玩家分数;
|
||
BYTE aryWinTimes[GAME_PLAYER]; //赢次数;
|
||
BYTE aryLoseTimes[GAME_PLAYER]; //输次数;
|
||
BYTE aryShootTimes[GAME_PLAYER]; //打枪次数;
|
||
BYTE aryKillAllTimes[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 |