Files

285 lines
7.5 KiB
C
Raw Permalink Normal View History

2026-02-13 14:34:15 +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 430 //<2F><>Ϸ I D
#define GAME_NAME TEXT("<22><><EFBFBD>Ĵ<EFBFBD>ը") //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define GAME_PLAYER 4 //<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 27 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
#define FULL_COUNT 108 //ȫ<><C8AB><EFBFBD><EFBFBD>Ŀ
#define MAX_NO_JOKER_COUNT 26 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
#define NO_JOKER_COUNT 104 //ȫ<><C8AB><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><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
enum GAME_END_TYPE
{
GAME_END_NULL, //NULL;
GAME_END_ONE_WIN, //<2F><><EFBFBD><EFBFBD>;
GAME_END_TWO_WIN, //˫<><CBAB>;
GAME_END_DRAW, //ƽ<><C6BD>;
GAME_END_NO_BOMB, //ƽ<><C6BD>;
GAME_END_8_BOMB, //ƽ<><C6BD>;
};
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
//<2F><>Ϸ״̬
#define GAME_SCENE_FREE GAME_STATUS_FREE //<2F>ȴ<EFBFBD><C8B4><EFBFBD>ʼ;
#define GAME_SCENE_SEND GAME_STATUS_PLAY //<2F><><EFBFBD><EFBFBD>״̬;
#define GAME_SCENE_CALL_SCORE (GAME_STATUS_PLAY+1) //<2F>з<EFBFBD>״̬;
#define GAME_SCENE_CALL_CARD (GAME_STATUS_PLAY+2) //<2F><><EFBFBD><EFBFBD>״̬;
#define GAME_SCENE_PLAY (GAME_STATUS_PLAY+3) //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
//////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EEB6A8>
#define SUB_S_GAME_START 100 //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
#define SUB_S_OUT_CARD 101 //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
#define SUB_S_PASS_CARD 102 //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
#define SUB_S_GAME_END 103 //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
#define SUB_S_TRUSTEE 104 //<2F>û<EFBFBD><C3BB>й<EFBFBD>
#define SUB_S_CALL_SCORE 105 //<2F>û<EFBFBD><C3BB>з<EFBFBD>;
#define SUB_S_BANKER_INFO 106 //ׯ<><D7AF><EFBFBD><EFBFBD>Ϣ;
#define SUB_S_RANKING 107 //<2F><><EFBFBD><EFBFBD>;
//<2F><><EFBFBD><EFBFBD>״̬
struct CMD_S_StatusFree
{
SCORE lCellScore; //<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
WORD wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>
};
//<2F><><EFBFBD><EFBFBD>״̬;
struct CMD_S_StatusSendCard
{
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ;
LONG lCellScore; //<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>;
WORD wCurrentUser; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>;
BYTE cbHandCardCount[GAME_PLAYER]; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ;
BYTE cbHandCardData[MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>;
bool bUserTrustee[GAME_PLAYER]; //<2F>йܱ<D0B9>־;
};
//<2F>з<EFBFBD>״̬;
struct CMD_S_StatusCallScore
{
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ;
LONG lCellScore; //<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>;
WORD wCurrentUser; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>;
BYTE cbScoreInfo[GAME_PLAYER]; //<2F>з<EFBFBD><D0B7><EFBFBD>Ϣ;
BYTE cbHandCardCount[GAME_PLAYER]; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ;
BYTE cbHandCardData[MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>;
bool bUserTrustee[GAME_PLAYER]; //<2F>йܱ<D0B9>־;
};
//<2F><>Ϸ״̬
struct CMD_S_StatusPlay
{
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
SCORE lCellScore; //<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
WORD wCurrentUser; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
WORD wFriendChairID; //<2F><><EFBFBD><EFBFBD>;
//ׯ<><D7AF><EFBFBD>û<EFBFBD>
WORD wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>
bool bCallCard; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>;
//ʤ<><CAA4><EFBFBD><EFBFBD>Ϣ
WORD wWinCount; //ʤ<><CAA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wWinOrder[GAME_PLAYER]; //ʤ<><CAA4><EFBFBD>б<EFBFBD>
bool bTrustee[GAME_PLAYER]; //<2F>Ƿ<EFBFBD><C7B7>й<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
WORD wTurnWiner; //ʤ<><CAA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool isLastCard; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>;
int cbTurnCardType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE cbTurnCardCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
BYTE cbTurnCardData[MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//BYTE cbMagicCardData[MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
//<2F>˿<EFBFBD><CBBF><EFBFBD>Ϣ
BYTE cbHandCardData[MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
BYTE cbHandCardCount[GAME_PLAYER]; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
BYTE cbPartnerCardData[MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
struct CMD_S_GameStart
{
WORD wCurrentUser; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
SCORE lCellScore; //<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
bool bHasJoker; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
BYTE cbCardCount[GAME_PLAYER]; //<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
BYTE cbCardData[MAX_COUNT]; //<2F>˿<EFBFBD><CBBF>б<EFBFBD>
bool bTrustee[GAME_PLAYER]; //<2F>Ƿ<EFBFBD><C7B7>й<EFBFBD>
};
//¼<><C2BC><EFBFBD><EFBFBD>ʼ;
struct CMD_Record_GameStart
{
WORD wStartUser; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>;
WORD wCurrentUser; //<2F><>ǰ<EFBFBD><C7B0><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 cbCallScore; //<2F>з<EFBFBD>;
};
//ׯ<><D7AF><EFBFBD><EFBFBD>Ϣ;
struct CMD_S_BankerInfo
{
WORD wBankerUser; //ׯ<><D7AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
WORD wCurrentUser; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>;
bool bCallCard; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>;
WORD wFriendChairID[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
BYTE cbFirendCardData; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
struct CMD_S_OutCard
{
bool isLastCard; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>;
int cbCardType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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><EFBFBD>;
struct CMD_S_Ranking
{
WORD wChairID; //<2F><>λ<EFBFBD><CEBB>;
BYTE cbRanking; //<2F><><EFBFBD><EFBFBD>;
};
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
struct CMD_S_GameEnd
{
bool isPrivateEnd; //˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>;
GAME_END_TYPE iGameEndType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
WORD wFriendChairID[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
//<2F><>Ϸ<EFBFBD>ɼ<EFBFBD>
SCORE lGameScore[GAME_PLAYER]; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
SCORE lBombScore[GAME_PLAYER]; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
SCORE lAllScore[GAME_PLAYER]; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
//<2F>˿<EFBFBD><CBBF><EFBFBD>Ϣ
BYTE cbCardCount[GAME_PLAYER]; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
BYTE cbCardData[GAME_PLAYER][MAX_COUNT]; //<2F>˿<EFBFBD><CBBF>б<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
WORD wWinOrder[GAME_PLAYER];
};
//<2F>û<EFBFBD><C3BB>й<EFBFBD>
struct CMD_S_Trustee
{
bool bTrustee; //<2F>Ƿ<EFBFBD><C7B7>й<EFBFBD>
WORD wChairID; //<2F>й<EFBFBD><D0B9>û<EFBFBD>
};
//////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EEB6A8>
#define SUB_C_OUT_CARD 1 //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
#define SUB_C_PASS_CARD 2 //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
#define SUB_C_TRUSTEE 3 //<2F>û<EFBFBD><C3BB>й<EFBFBD>
#define SUB_C_CALL_SCORE 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
{
bool isLastCard; //<2F>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>;
int cbCardType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE cbCardCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
BYTE cbCardData[MAX_COUNT]; //<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
};
//<2F>û<EFBFBD><C3BB>й<EFBFBD>
struct CMD_C_Trustee
{
bool bTrustee; //<2F>Ƿ<EFBFBD><C7B7>й<EFBFBD>
};
enum eDZRuleEnum
{
eDZRuleEnum_CardAA = 1 << 0, //AA;
eDZRuleEnum_NO_JOKER = 1 << 1, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
eDZRuleEnum_MINGBIAN = 1 << 2, //<2F><><EFBFBD><EFBFBD>;
eDZRuleEnum_TO_TWO = 1 << 3, //ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
eDZRuleEnum_NO_BOMB = 1 << 4, //<2F><>ը̯<D5A8><CCAF>;
eDZRuleEnum_LOTTERY_7 = 1 << 5, //<2F><><EFBFBD><EFBFBD>7;
eDZRuleEnum_LOTTERY_10 = 1 << 6, //<2F><><EFBFBD><EFBFBD>10;
eDZRuleEnum_LOTTERY_J = 1 << 7, //<2F><><EFBFBD><EFBFBD>J;
eDZRuleEnum_LOTTERY_K = 1 << 8, //<2F><><EFBFBD><EFBFBD>K;
eDZRuleEnum_EIGHT_BOMB = 1 << 9, //<2F><>ը̯<D5A8><CCAF>;
};
// <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