Files
2026-03-03 13:56:44 +08:00

301 lines
8.5 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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