Files

329 lines
8.7 KiB
C
Raw Permalink Normal View History

2026-03-03 13:56:44 +08:00
#ifndef CMD_GAME_HEAD_FILE
#define CMD_GAME_HEAD_FILE
#pragma pack(1)
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
#define KIND_ID 200 //<2F><>Ϸ I D
#define GAME_NAME TEXT("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define GAME_PLAYER 3 //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
#define VERSION_SERVER PROCESS_VERSION(6,0,3) //<2F><><EFBFBD><EFBFBD><EFBFBD>
#define VERSION_CLIENT PROCESS_VERSION(6,0,3) //<2F><><EFBFBD><EFBFBD><EFBFBD>
//////////////////////////////////////////////////////////////////////////////////
//<2F><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
#define MAX_COUNT 20 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
#define FULL_COUNT 54 //ȫ<><C8AB><EFBFBD><EFBFBD>Ŀ
//<2F>߼<EFBFBD><DFBC><EFBFBD>Ŀ
#define NORMAL_COUNT 17 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
#define DISPATCH_COUNT 51 //<2F>ɷ<EFBFBD><C9B7><EFBFBD>Ŀ
#define GOOD_CARD_COUTN 22 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
#define MASK_COLOR 0xF0 //<2F><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
#define MASK_VALUE 0x0F //<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
//<2F>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>
#define CT_ERROR 0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CT_SINGLE 1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CT_DOUBLE 2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CT_THREE 3 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CT_SINGLE_LINE 4 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CT_DOUBLE_LINE 5 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CT_THREE_LINE 6 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CT_THREE_TAKE_ONE 7 //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
#define CT_THREE_TAKE_TWO 8 //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
#define CT_FOUR_TAKE_ONE 9 //<2F>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>
#define CT_FOUR_TAKE_TWO 10 //<2F>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>
#define CT_BOMB_CARD 11 //ը<><D5A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CT_MISSILE_CARD 12 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
///////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BCT_DOUBLE_JOKER 201 //˫<><CBAB>
#define BCT_THREE_2 202 //<2F><><EFBFBD><EFBFBD>
#define BCT_SINGLE_JOKER_DOUBLE_2 203 //<2F><><EFBFBD><EFBFBD>˫2
#define BCT_TONGHUASHUN 204 //ͬ<><CDAC>˳
#define BCT_SINGLE_JOKER 205 //<2F><><EFBFBD><EFBFBD>
#define BCT_DOUBLE_2 206 //˫2
#define BCT_SHUNZI 207 //˳<><CBB3>
#define BCT_ALL_LITTLE 208 //ȫС
#define BCT_NORMAL 209 //<2F><>ͨ<EFBFBD><CDA8>
//////////////////////////////////////////////////////////////////////////////////
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
#define GAME_SCENE_FREE GAME_STATUS_FREE //<2F>ȴ<EFBFBD><C8B4><EFBFBD>ʼ
#define GAME_SCENE_CALL GAME_STATUS_PLAY //<2F>з<EFBFBD>״̬
#define GAME_SCENE_PLAY GAME_STATUS_PLAY+1 //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>״̬
struct CMD_S_StatusFree
{
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
LONG lCellScore; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//ʱ<><CAB1><EFBFBD><EFBFBD>Ϣ
BYTE cbTimeOutCard; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
BYTE cbTimeCallScore; //<2F>з<EFBFBD>ʱ<EFBFBD><CAB1>
BYTE cbTimeStartGame; //<2F><>ʼʱ<CABC><CAB1>
BYTE cbTimeHeadOutCard; //<2F>׳<EFBFBD>ʱ<EFBFBD><CAB1>
//<2F><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
SCORE lTurnScore[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
SCORE lCollectScore[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
};
//<2F>з<EFBFBD>״̬
struct CMD_S_StatusCall
{
//ʱ<><CAB1><EFBFBD><EFBFBD>Ϣ
BYTE cbTimeOutCard; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
BYTE cbTimeCallScore; //<2F>з<EFBFBD>ʱ<EFBFBD><CAB1>
BYTE cbTimeStartGame; //<2F><>ʼʱ<CABC><CAB1>
BYTE cbTimeHeadOutCard; //<2F>׳<EFBFBD>ʱ<EFBFBD><CAB1>
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ
LONG lCellScore; //<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
WORD wCurrentUser; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
BYTE cbBankerScore; //ׯ<>ҽз<D2BD>
BYTE cbScoreInfo[GAME_PLAYER]; //<2F>з<EFBFBD><D0B7><EFBFBD>Ϣ
BYTE cbHandCardData[NORMAL_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
bool bUserTrustee[GAME_PLAYER]; //<2F>йܱ<D0B9>־
//<2F><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
SCORE lTurnScore[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
SCORE lCollectScore[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
};
//<2F><>Ϸ״̬
struct CMD_S_StatusPlay
{
//ʱ<><CAB1><EFBFBD><EFBFBD>Ϣ
BYTE cbTimeOutCard; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
BYTE cbTimeCallScore; //<2F>з<EFBFBD>ʱ<EFBFBD><CAB1>
BYTE cbTimeStartGame; //<2F><>ʼʱ<CABC><CAB1>
BYTE cbTimeHeadOutCard; //<2F>׳<EFBFBD>ʱ<EFBFBD><CAB1>
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
LONG lCellScore; //<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
BYTE cbBombCount; //ը<><D5A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>
WORD wCurrentUser; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
BYTE cbBankerScore; //ׯ<>ҽз<D2BD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
WORD wTurnWiner; //ʤ<><CAA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE cbTurnCardCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
BYTE cbTurnCardData[MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>˿<EFBFBD><CBBF><EFBFBD>Ϣ
BYTE cbBankerCard[3]; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
BYTE cbHandCardData[MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
BYTE cbHandCardCount[GAME_PLAYER]; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
//<2F><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
SCORE lTurnScore[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
SCORE lCollectScore[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
bool bUserTrustee[GAME_PLAYER]; //<2F>йܱ<D0B9>־
};
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EEB6A8>
#define SUB_S_GAME_START 100 //<2F><>Ϸ<EFBFBD><CFB7>ʼ
#define SUB_S_CALL_SCORE 101 //<2F>û<EFBFBD><C3BB>з<EFBFBD>
#define SUB_S_BANKER_INFO 102 //ׯ<><D7AF><EFBFBD><EFBFBD>Ϣ
#define SUB_S_OUT_CARD 103 //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
#define SUB_S_PASS_CARD 104 //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
#define SUB_S_GAME_CONCLUDE 105 //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
#define SUB_S_SET_BASESCORE 106 //<2F><><EFBFBD>û<EFBFBD><C3BB><EFBFBD>
#define SUB_S_CHEAT_CARD 107 //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
#define SUB_S_TRUSTEE 108 //<2F>й<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
struct CMD_S_GameStart
{
WORD wStartUser; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
WORD wCurrentUser; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
BYTE cbValidCardData; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
BYTE cbValidCardIndex; //<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
BYTE cbCardData[NORMAL_COUNT]; //<2F>˿<EFBFBD><CBBF>б<EFBFBD>
};
//¼<><C2BC><EFBFBD><EFBFBD>ʼ;
struct CMD_Record_GameStart
{
WORD wStartUser; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
WORD wCurrentUser; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
struct CMD_S_AndroidCard
{
BYTE cbHandCard[GAME_PLAYER][NORMAL_COUNT];//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
BYTE cbBankerCard[3];
WORD wCurrentUser ; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
struct CMD_S_CheatCard
{
WORD wCardUser[GAME_PLAYER ]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE cbUserCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE cbCardData[GAME_PLAYER ][MAX_COUNT]; //<2F>˿<EFBFBD><CBBF>б<EFBFBD>
BYTE cbCardCount[GAME_PLAYER ]; //<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
};
//<2F>û<EFBFBD><C3BB>з<EFBFBD>
struct CMD_S_CallScore
{
WORD wCurrentUser; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
WORD wCallScoreUser; //<2F>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD>
BYTE cbCurrentScore; //<2F><>ǰ<EFBFBD>з<EFBFBD>
BYTE cbUserCallScore; //<2F>ϴνз<CEBD>
};
//ׯ<><D7AF><EFBFBD><EFBFBD>Ϣ
struct CMD_S_BankerInfo
{
WORD wBankerUser; //ׯ<><D7AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wCurrentUser; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
BYTE cbBankerScore; //ׯ<>ҽз<D2BD>
BYTE cbBankerCard[3]; //ׯ<><D7AF><EFBFBD>˿<EFBFBD>
};
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
struct CMD_S_OutCard
{
BYTE cbCardCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
WORD wCurrentUser; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
WORD wOutCardUser; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE cbCardData[MAX_COUNT]; //<2F>˿<EFBFBD><CBBF>б<EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct CMD_S_PassCard
{
BYTE cbTurnOver; //һ<>ֽ<EFBFBD><D6BD><EFBFBD>
WORD wCurrentUser; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
WORD wPassCardUser; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
struct CMD_S_GameConclude
{
//<2F><><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>
LONG lCellScore; //<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
SCORE lGameScore[GAME_PLAYER]; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
SCORE lAllScore[GAME_PLAYER]; //<2F>ܳɼ<DCB3>;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
BYTE bChunTian; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
BYTE bFanChunTian; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
//ը<><D5A8><EFBFBD><EFBFBD>Ϣ
BYTE cbBombCount; //ը<><D5A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE cbEachBombCount[GAME_PLAYER]; //ը<><D5A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ
BYTE cbBankerScore; //<2F>з<EFBFBD><D0B7><EFBFBD>Ŀ
BYTE cbCardCount[GAME_PLAYER]; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
BYTE cbHandCardData[FULL_COUNT]; //<2F>˿<EFBFBD><CBBF>б<EFBFBD>
};
//<2F>й<EFBFBD>
struct CMD_S_TRUSTEE
{
WORD wTrusteeUser; //<2F>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>
bool bTrustee; //<2F>йܱ<D0B9>־
};
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EEB6A8>
#define SUB_C_CALL_SCORE 1 //<2F>û<EFBFBD><C3BB>з<EFBFBD>
#define SUB_C_OUT_CARD 2 //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
#define SUB_C_PASS_CARD 3 //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
#define SUB_C_TRUSTEE 4 //<2F>û<EFBFBD><C3BB>й<EFBFBD>
//<2F>û<EFBFBD><C3BB>з<EFBFBD>
struct CMD_C_CallScore
{
BYTE cbCallScore; //<2F>з<EFBFBD><D0B7><EFBFBD>Ŀ
};
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
struct CMD_C_OutCard
{
BYTE cbCardCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
BYTE cbCardData[MAX_COUNT]; //<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
};
//<2F>й<EFBFBD>
struct CMD_C_TRUSTEE
{
bool bTrustee; //<2F>йܱ<D0B9>־
};
//////////////////////////////////////////////////////////////////////////////////
enum eDDZRuleEnum
{
eDDZRuleEnum_LimitMultiple8 = 1<<1, //8<><38><EFBFBD>ⶥ;
eDDZRuleEnum_NoLimitMultiple = 1 << 2, //<2F><><EFBFBD>ⶥ;
};
//// <20><>Ϸ<EFBFBD><CFB7>ɢ<EFBFBD>
//struct CMD_S_Private_End_Info
//{
// WORD wMainChairID; // <20><><EFBFBD><EFBFBD>
// BYTE cbLandCount[GAME_PLAYER]; // <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// BYTE cbWinCount[GAME_PLAYER]; // ʤ<><CAA4>
// BYTE cbLoseCount[GAME_PLAYER]; // ʧ<><CAA7>
// SCORE lAllScore[GAME_PLAYER]; // <20>ܳɼ<DCB3>
// SCORE lMaxScore[GAME_PLAYER]; // <20><><EFBFBD>ߵ÷<DFB5>
//
// 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));
// }
// }
//};
// <20><>Ϸ<EFBFBD><CFB7>ɢ<EFBFBD>
struct CMD_S_Private_End_Info
{
WORD wMainChairID; // <20><><EFBFBD><EFBFBD>
BYTE cbFinishCout; // <20><><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>
SCORE lAllScore[GAME_PLAYER]; // <20>ܳɼ<DCB3>
SCORE lDetails[GAME_PLAYER][16]; // <20>ɼ<EFBFBD><C9BC><EFBFBD>ϸ(Ŀǰ<C4BF><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16<31><36>)
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