Files
wnmj/Servers/游戏组件/万年麻将/消息定义/CMD_Sparrow.h

342 lines
9.2 KiB
C
Raw Normal View History

2026-02-13 14:34:15 +08:00
#ifndef CMD_SPARROW_HEAD_FILE
#define CMD_SPARROW_HEAD_FILE
#pragma pack(1)
//////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB6A8>
#define KIND_ID 558 //<2F><>Ϸ I D
#define GAME_PLAYER 4 //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
#define GAME_NAME TEXT("<22><><EFBFBD><EFBFBD><EFBFBD>齫") //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
#define GAME_GENRE (GAME_GENRE_SCORE|GAME_GENRE_MATCH|GAME_GENRE_GOLD) //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
//<2F><>Ϸ״̬
#define GS_MJ_FREE GAME_STATUS_FREE //<2F><><EFBFBD><EFBFBD>״̬
#define GS_MJ_BATCH (GAME_STATUS_PLAY+1) //ϴ<><CFB4>״̬
#define GS_MJ_SICE (GAME_STATUS_PLAY+2) //ɸ<><C9B8>״̬
#define GS_MJ_PLAY (GAME_STATUS_PLAY+3) //<2F><>Ϸ״̬
#define MAX_COUNT 14 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
#define MUST_LEFT_COUNT 1 //Ԥ<><D4A4><EFBFBD><EFBFBD>Ŀ
#define MAX_INDEX 34 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct tagWeaveItem
{
WORD wWeaveKind; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE cbCenterCard; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
BYTE cbPublicCard; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
WORD wProvideUser; //<2F><>Ӧ<EFBFBD>û<EFBFBD>
};
enum eWNMJHURuleEnum
{
eWNMJHURuleEnum_Invalid = 0,
eWNMJHURuleEnum_YingHU = 1,
eWNMJHURuleEnum_YiBianDaoHU = 2,
eWNMJHURuleEnum_HunHU = 3,
};
enum eWNMJRuleEnum
{
eWNMJRuleEnum_Null = 0, //<2F><>Чֵ;
eWNMJRuleEnum_CardAA = 1, //<2F><><EFBFBD><EFBFBD>AA;
eWNMJRuleEnum_OneTwoFAN = 1 << 1, //1,2<><32><EFBFBD><EFBFBD>;
eWNMJRuleEnum_TwoThreeFAN = 1 << 2, //2,3<><33><EFBFBD><EFBFBD>;
eWNMJRuleEnum_YingHU = 1 << 3, //Ӳ<><D3B2>;
eWNMJRuleEnum_YiBianDaoHU = 1 << 4, //һ<>ߵ<EFBFBD><DFB5><EFBFBD>;
eWNMJRuleEnum_HunHU = 1 << 5, //<2F><><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>;
eWNMJRuleEnum_ZhiAnGang = 1 << 6, //ֱ<><D6B1><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>;
eWNMJRuleEnum_PlayCount2 = 1 << 7, //2<><32>;
eWNMJRuleEnum_PlayCount3 = 1 << 8, //3<><33>;
eWNMJRuleEnum_PlayCount_auto = 1 << 29, //2~4<><34>;
eWNMJRuleEnum_DaiKaiFang = 1 << 30, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
eWNMJRuleEnum_NOSameIPAddr = 1 << 31, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬIP<49><50>ַ;
};
//////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define SUB_S_GAME_START 100 //<2F><>Ϸ<EFBFBD><CFB7>ʼ
#define SUB_S_OUT_CARD 101 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define SUB_S_SEND_CARD 102 //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
#define SUB_S_OPERATE_NOTIFY 104 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
#define SUB_S_OPERATE_RESULT 105 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define SUB_S_GAME_END 106 //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
#define SUB_S_TRUSTEE 107 //<2F>û<EFBFBD><C3BB>й<EFBFBD>
#define SUB_S_BATCH 108 //ϴ<><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define SUB_S_GANG_SCORE 109 //<2F>ܷ<EFBFBD><DCB7><EFBFBD>Ϣ;
#define SUB_S_MASTER_LEFTCARD 114 //ʣ<><CAA3><EFBFBD>ƶ<EFBFBD>
//<2F><>Ϸ״̬
struct CMD_S_StatusFree
{
SCORE lCellScore; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>
bool bTrustee[GAME_PLAYER]; //<2F>Ƿ<EFBFBD><C7B7>й<EFBFBD>
bool bActiveStatus[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
SCORE lAllTurnScore; //<2F>ֵܾ÷<D6B5>
SCORE lLastTurnScore; //<2F>Ͼֵ÷<D6B5>
};
//<2F><>Ϸ״̬
struct CMD_S_StatusBatch
{
SCORE lCellScore; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE bComplete; //<2F><><EFBFBD>ɱ<EFBFBD>־
bool bTrustee[GAME_PLAYER]; //<2F>Ƿ<EFBFBD><C7B7>й<EFBFBD>
bool bActiveStatus[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
//<2F><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
SCORE lAllTurnScore[4]; //<2F>ֵܾ÷<D6B5>
SCORE lLastTurnScore[4]; //<2F>Ͼֵ÷<D6B5>
};
//<2F><><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>
struct tagGangCardResult
{
BYTE cbCardCount; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
BYTE cbCardData[4]; //<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
};
//<2F><>Ϸ״̬
struct CMD_S_StatusPlay
{
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
SCORE lCellScore; //<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
WORD wSiceCount; //<2F><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>
WORD wSiceCount2; //<2F><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>
WORD wSiceCount3; //<2F><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>
WORD wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>
WORD wCurrentUser; //<2F><>ǰ<EFBFBD>û<EFBFBD>
bool bTrustee[GAME_PLAYER]; //<2F>Ƿ<EFBFBD><C7B7>й<EFBFBD>
bool bActiveStatus[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
//<2F><><EFBFBD>Ƽ<EFBFBD>¼
BYTE cbFengCardData[8]; //<2F><><EFBFBD>Ƽ<EFBFBD>¼
BYTE cbFengCardCount; //<2F><><EFBFBD>Ƽ<EFBFBD>¼
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
BYTE cbLeftCardCount; //ʣ<><CAA3><EFBFBD><EFBFBD>Ŀ
BYTE cbActionCard; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
WORD dwActionMask; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGangCardResult GangPaiResult; //<2F><><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
WORD wOutCardUser; //<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
BYTE cbOutCardData; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
BYTE cbDiscardCount[4]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
BYTE cbDiscardCard[4][55]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
//<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
BYTE cbCardCount; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
BYTE cbCardData[MAX_COUNT]; //<2F>˿<EFBFBD><CBBF>б<EFBFBD>
BYTE cbSendCardData; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
BYTE cbWeaveCount[4]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
tagWeaveItem WeaveItemArray[4][4]; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
//<2F><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
SCORE lAllTurnScore[4]; //<2F>ֵܾ÷<D6B5>
SCORE lLastTurnScore[4]; //<2F>Ͼֵ÷<D6B5>
};
//<2F><>Ϸ<EFBFBD><CFB7>ʼ
struct CMD_S_GameStart
{
WORD wSiceCount; //<2F><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>
WORD wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>
WORD wCurrentUser; //<2F><>ǰ<EFBFBD>û<EFBFBD>
BYTE wUserAction; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
tagGangCardResult GangPaiResult; //<2F><><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>
BYTE cbCardData[MAX_COUNT]; //<2F>˿<EFBFBD><CBBF>б<EFBFBD>
bool bTrustee[GAME_PLAYER]; //<2F>Ƿ<EFBFBD><C7B7>й<EFBFBD>
bool bActiveStatus[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
};
// ¼<><C2BC>ר<EFBFBD><D7A8>;
struct CMD_R_GameStart
{
WORD wSiceCount; //<2F><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>
WORD wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>
WORD wCurrentUser; //<2F><>ǰ<EFBFBD>û<EFBFBD>
BYTE wUserAction; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
bool bActiveStatus[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
BYTE cbCardData[GAME_PLAYER][MAX_COUNT]; //<2F>˿<EFBFBD><CBBF>б<EFBFBD>
};
struct CMD_S_BatchResult
{
BYTE cbBatchResult[GAME_PLAYER]; //ׯ<><D7AF><EFBFBD>û<EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct CMD_S_OutCard
{
WORD wOutCardUser; //<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
BYTE cbOutCardData; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
struct CMD_S_SendCard
{
BYTE cbCardData; //<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
WORD wActionMask; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wCurrentUser; //<2F><>ǰ<EFBFBD>û<EFBFBD>
bool cbIsNotGang; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
tagGangCardResult GangPaiResult; //<2F><><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
struct CMD_S_OperateNotify
{
WORD wResumeUser; //<2F><>ԭ<EFBFBD>û<EFBFBD>
WORD dwActionMask; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE cbActionCard; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
tagGangCardResult GangPaiResult; //<2F><><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct CMD_S_OperateResult
{
WORD wOperateUser; //<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
WORD wProvideUser; //<2F><>Ӧ<EFBFBD>û<EFBFBD>
WORD dwOperateCode; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE cbOperateCard; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
};
//<2F>ܷ<EFBFBD><DCB7><EFBFBD>Ϣ;
struct CMD_S_GangScore
{
WORD wChairId; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
BYTE cbXiaYu; //<2F>Ƿ񰵸<C7B7>;
};
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
struct CMD_S_GameEnd
{
//˰<><CBB0>
SCORE lGameTax; //<2F><>Ϸ˰<CFB7><CBB0>
bool bActiveStatus[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
WORD wProvideUser; //<2F><>Ӧ<EFBFBD>û<EFBFBD>
BYTE cbChiHuCard; //<2F><>Ӧ<EFBFBD>˿<EFBFBD>
DWORD dwChiHuKind[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwChiHuRight[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
SCORE lGameScore[GAME_PLAYER]; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
SCORE lGameScoreEx[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SCORE lGameHuScore[GAME_PLAYER]; //<2F><><EFBFBD>Ʒ<EFBFBD>;
//<2F>˿<EFBFBD><CBBF><EFBFBD>Ϣ
BYTE cbCardCount[GAME_PLAYER]; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
BYTE cbCardData[GAME_PLAYER][MAX_COUNT]; //<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
BYTE cbWeaveItemCount[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
tagWeaveItem WeaveItemArray[GAME_PLAYER][4]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SCORE lAllTurnScore[GAME_PLAYER]; //<2F>ֵܾ÷<D6B5>
SCORE lLastTurnScore[GAME_PLAYER]; //<2F>Ͼֵ÷<D6B5>
};
//<2F>û<EFBFBD><C3BB>й<EFBFBD>
struct CMD_S_Trustee
{
bool bTrustee; //<2F>Ƿ<EFBFBD><C7B7>й<EFBFBD>
WORD wChairID; //<2F>й<EFBFBD><D0B9>û<EFBFBD>
};
//////////////////////////////////////////////////////////////////////////
//<2F>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define SUB_C_OUT_CARD 1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
#define SUB_C_BATCH 2 //ϴ<>ʼ;
#define SUB_C_OPERATE_CARD 3 //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>;
#define SUB_C_TRUSTEE 4 //<2F>û<EFBFBD><C3BB>й<EFBFBD>;
#define SUB_C_BATCH_END 5 //ϴ<><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
#define SUB_C_PASS_KING 6 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
#define SUB_C_MASTER_CHEAKCARD 10 //ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
#define SUB_C_MASTER_LEFTCARD 11 //ʣ<><CAA3><EFBFBD>ƶ<EFBFBD>;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct CMD_C_OutCard
{
BYTE cbCardData; //<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
};
//ϴ<><CFB4>
struct CMD_C_BATCH
{
BYTE cbChipTimes; //<2F>򶥱<EFBFBD><F2B6A5B1><EFBFBD>
WORD wCurrentUser; //<2F><>ǰ<EFBFBD>û<EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct CMD_C_OperateCard
{
WORD dwOperateCode; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE cbOperateCard; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
};
//<2F>û<EFBFBD><C3BB>й<EFBFBD>
struct CMD_C_Trustee
{
bool bTrustee; //<2F>Ƿ<EFBFBD><C7B7>й<EFBFBD>
};
struct CMD_C_MaterCheckCard
{
BYTE cbCheakCard; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
struct MasterLeftCard
{
BYTE kMasterCheakCard; // <20><>ǰѡ<C7B0><D1A1>;
BYTE kMasterLeftIndex[MAX_INDEX]; // <20>Ŷ<EFBFBD>;
};
// <20><>Ϸ<EFBFBD><CFB7>ɢ<EFBFBD>
struct CMD_S_Private_End_Info
{
bool aryActiveStatus[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
BYTE cbAllGangCounts[GAME_PLAYER]; //ͳ<>ƸܵĴ<DCB5><C4B4><EFBFBD>;
BYTE cbZiMoCout[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
BYTE cbDianPaoCout[GAME_PLAYER]; //<2F><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>;
SCORE lAllScore[GAME_PLAYER]; //<2F>ܳɼ<DCB3>;
SCORE lMaxScore[GAME_PLAYER]; //<2F><><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));
}
}
};
extern void MyLog(TCHAR *szLog, ...);
//////////////////////////////////////////////////////////////////////////
#pragma pack()
#endif