Files
wnmj/Servers/游戏组件/房卡牛牛/消息定义/CMD_NiuNiu.h

302 lines
7.9 KiB
C
Raw Normal View History

2026-02-13 14:34:15 +08:00
#ifndef CMD_NiuNiu_h__
#define CMD_NiuNiu_h__
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB6A8>;
#define KIND_ID 2 //<2F><>ϷID;
#define GAME_PLAYER 5 //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
#define GAME_NAME TEXT("<22><><EFBFBD><EFBFBD>ţţ") //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
#define EXPORT_NAME TEXT("NiuNiu") //<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>;
#define MAX_COUNT 5 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
#define FULL_COUNT 52 //<2F>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>;
//<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>;
#define MASK_VALUE 0x0F //<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>;
#define MASK_COLOR 0xF0 //<2F><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>;
//<2F><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>;
#define NIU_TYPE_0 0 //<2F><>ţ;
#define NIU_TYPE_1 1 //ţһ;
#define NIU_TYPE_2 2 //ţ<><C5A3>;
#define NIU_TYPE_3 3 //ţ<><C5A3>;
#define NIU_TYPE_4 4 //ţ<><C5A3>;
#define NIU_TYPE_5 5 //ţ<><C5A3>;
#define NIU_TYPE_6 6 //ţ<><C5A3>;
#define NIU_TYPE_7 7 //ţ<><C5A3>;
#define NIU_TYPE_8 8 //ţ<><C5A3>;
#define NIU_TYPE_9 9 //ţ<><C5A3>;
#define NIU_TYPE_10 10 //ţţ;
#define NIU_TYPE_WHN 11 //<2F>廨ţ;
#define NIU_TYPE_SHN 12 //<2F><>ը;
#define NIU_TYPE_WXN 13 //<2F><>Сţ;
#define MAX_NIU_TYPE 13 //<2F><><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD>;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
#define RULE_HUA_NIU 0x01 //<2F>л<EFBFBD>ţ;
#define RULE_SAN_ZHANG 0x02 //<2F><><EFBFBD><EFBFBD>ţ;
#define RULE_FREE_CHIP 0x04 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע;
#define RULE_NIU_FAN 0x08 //<2F><>ţ<EFBFBD><C5A3>;
#define BANKER_OWNER 1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;
#define BANKER_TURNS 2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;
#define BANKER_ROB 3 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;
#define BANKER_ROB4 4 //<2F><>4<EFBFBD><34><EFBFBD><EFBFBD>ׯ;
enum eNNRuleEnum
{
eNNRuleEnum_CardAA = 1, //<2F><><EFBFBD><EFBFBD>AA;
eNNRuleEnum_BANKER_OWNER = 1 << 1, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;;
eNNRuleEnum_BANKER_TURNS = 1 << 2, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;
eNNRuleEnum_BANKER_ROB = 1 << 3, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;;
eNNRuleEnum_BANKER_ROB4 = 1 << 4, //<2F><>4<EFBFBD><34><EFBFBD><EFBFBD>ׯ;
eNNRuleEnum_NO_SPECIAL_NIU = 1 << 5, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ;
eNNRuleEnum_BAYONET = 1 << 6, //ƴ<>̵<EFBFBD>;
eNNRuleEnum_WHN = 1 << 7, //<2F>廨ţ;
eNNRuleEnum_BOMB = 1 << 8, //ը<><D5A8>;
eNNRuleEnum_WXN = 1 << 9, //<2F><>Сţ;
};
#pragma pack(1)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>;
typedef struct tagGameRuleCfg
{
WORD wGameRule = 0; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
WORD wBankerRule = 0; //<2F><>ׯ<EFBFBD><D7AF><EFBFBD><EFBFBD>;
BYTE cbMinFreeChip = 0; //<2F><>С<EFBFBD><D0A1>ע;
BYTE cbMaxFreeChip = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע;
} tagOpenRuleCfg;
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>;
#define GS_NN_FREE GAME_STATUS_FREE //<2F><><EFBFBD><EFBFBD>״̬;
#define GS_NN_SEND_CARD GAME_STATUS_PLAY //<2F><><EFBFBD><EFBFBD>״̬;
#define GS_NN_ROB_BANKER (GAME_STATUS_PLAY+1) //<2F><>ׯ״̬;
#define GS_NN_USER_CHIP (GAME_STATUS_PLAY+2) //<2F><>ע״̬;
#define GS_NN_OPEN_CARD (GAME_STATUS_PLAY+3) //<2F><><EFBFBD><EFBFBD>״̬;
#define GS_NN_SHOW_CARD (GAME_STATUS_PLAY+4) //<2F><><EFBFBD><EFBFBD>״̬;
//////////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
typedef enum{ CONTINUE_WIN, CONTINUE_LOST, CONTINUE_CANCEL }CONTROL_TYPE;
//<2F><><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD> <20><><EFBFBD>Ƴɹ<C6B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ɹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ч;
typedef enum{ CONTROL_SUCCEED, CONTROL_FAIL, CONTROL_CANCEL_SUCCEED, CONTROL_CANCEL_INVALID }CONTROL_RESULT;
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϊ;
typedef enum{ USER_SITDOWN, USER_STANDUP, USER_OFFLINE, USER_RECONNECT }USERACTION;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
typedef struct
{
CONTROL_TYPE control_type; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
BYTE cbControlCount; //<2F><><EFBFBD>ƾ<EFBFBD><C6BE><EFBFBD>;
bool bCancelControl; //ȡ<><C8A1><EFBFBD><EFBFBD>ʶ;
}USERCONTROL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ϣ;
typedef struct
{
WORD wChairID; //<2F><><EFBFBD><EFBFBD>ID;
WORD wTableID; //<2F><><EFBFBD><EFBFBD>ID;
DWORD dwGameID; //GAMEID;
bool bAndroid; //<2F><><EFBFBD><EFBFBD><EFBFBD>˱<EFBFBD>ʶ;
TCHAR szNickName[LEN_NICKNAME]; //<2F>û<EFBFBD><C3BB>dz<EFBFBD>;
BYTE cbUserStatus; //<2F>û<EFBFBD>״̬;
BYTE cbGameStatus; //<2F><>Ϸ״̬;
}ROOMUSERINFO;
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>;
typedef struct
{
ROOMUSERINFO roomUserInfo; //<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ϣ;
USERCONTROL userControl; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>;
}ROOMUSERCONTROL;
//////////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD>״̬;
struct CMD_S_StatusFree
{
LONG lCellScore; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
LONG lMinFreeChip; //<2F><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ע;
LONG lMaxFreeChip; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע;
BYTE cbHandCardCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
bool bActiveStatus[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
};
//<2F><><EFBFBD><EFBFBD>״̬;
struct CMD_S_StatusSend
{
CMD_S_StatusFree stStatusFree; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
WORD wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>;
BYTE cbSendStatus; //<2F><><EFBFBD><EFBFBD>״̬;
BYTE cbHandCardData[MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//<2F><>ׯ״̬;
struct CMD_S_StatusRob
{
CMD_S_StatusFree stStatusFree; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
BYTE cbRobStatus[GAME_PLAYER]; //<2F><>ׯ״̬ 0:û<><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2:<3A><>;
BYTE cbHandCardData[GAME_PLAYER][MAX_COUNT];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//<2F><>ע״̬;
struct CMD_S_StatusChip
{
CMD_S_StatusFree stStatusFree; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
WORD wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>;
BYTE cbChipStatus[GAME_PLAYER]; //<2F><>ע״̬;
LONG lUserChipScore[GAME_PLAYER];//<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>;
BYTE cbHandCardData[MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>״̬;
struct CMD_S_StatusOpen
{
CMD_S_StatusFree stStatusFree; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
WORD wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>;
LONG lUserChipScore[GAME_PLAYER];//<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>;
BYTE cbOpenStatus[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
BYTE cbHandCardType; //<2F><><EFBFBD><EFBFBD>;
BYTE cbHandCardData[MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬;
struct CMD_S_StatusAllOpen
{
CMD_S_StatusFree stStatusFree; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
WORD wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>;
BYTE cbOpenStatus[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
LONG lUserChipScore[GAME_PLAYER];//<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>;
BYTE cbHandCardType[GAME_PLAYER];//<2F><><EFBFBD><EFBFBD>;
BYTE cbHandCardData[GAME_PLAYER][MAX_COUNT];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
#define SUB_S_GAME_START 100 //<2F><>Ϸ<EFBFBD><CFB7>ʼ;
#define SUB_S_START_ROB 101 //<2F><>ʼ<EFBFBD><CABC>ׯ;
#define SUB_S_USER_ROB 102 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;
#define SUB_S_START_CHIP 103 //<2F><>ʼ<EFBFBD><CABC>ע;
#define SUB_S_USER_CHIP 104 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע;
#define SUB_S_START_OPEN 105 //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>;
#define SUB_S_OPEN_CARD 106 //<2F><><EFBFBD>ҿ<EFBFBD><D2BF><EFBFBD>;
#define SUB_S_GAME_END 107 //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
#define SUB_S_ALL_OPEN_CARD 108 //<2F><><EFBFBD>ҿ<EFBFBD><D2BF><EFBFBD>;
//<2F><>Ϸ<EFBFBD><CFB7>ʼ;
struct CMD_S_GameStart
{
WORD wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>;
bool bActiveStatus[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
BYTE cbHandCardCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
BYTE cbHandCardData[MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;
struct CMD_S_UserRob
{
WORD wRobUser; //<2F><>ׯ<EFBFBD><D7AF><EFBFBD><EFBFBD>;
bool bRobResult; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ׯ;
};
//<2F><>ʼ<EFBFBD><CABC>ע;
struct CMD_S_StartChip
{
WORD wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>;
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע;
struct CMD_S_UserChip
{
WORD wChipUser; //<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>;
LONG lChipScore; //<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>;
};
//<2F><><EFBFBD>ҿ<EFBFBD><D2BF><EFBFBD>;
struct CMD_S_OpenCard
{
WORD wOpenUser; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
BYTE cbCardType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
BYTE cbCardData[MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><CBBF><EFBFBD>;
struct CMD_S_AllOpenCard
{
bool bActiveStatus[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
BYTE cbCardType[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
BYTE cbHandCardData[GAME_PLAYER][MAX_COUNT];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
struct CMD_S_GameEnd
{
BYTE cbCardType[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
BYTE cbHandCardData[GAME_PLAYER][MAX_COUNT];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
LONG lAllScore[GAME_PLAYER]; //<2F><>Ϸ<EFBFBD>÷<EFBFBD>;
LONG lGameScore[GAME_PLAYER]; //<2F><>Ϸ<EFBFBD>÷<EFBFBD>;
LONG lRevenue[GAME_PLAYER]; //˰<><CBB0>;
};
//////////////////////////////////////////////////////////////////////////
//<2F>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
#define SUB_C_SEND_OVER 1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
#define SUB_C_ROB_BANKER 2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;
#define SUB_C_CHIP_SCORE 3 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע;
#define SUB_C_OPEN_CARD 4 //<2F><><EFBFBD>ҿ<EFBFBD><D2BF><EFBFBD>;
//<2F>û<EFBFBD><C3BB><EFBFBD>ׯ;
struct CMD_C_RobBanker
{
bool bRob; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ׯ;
};
//<2F>û<EFBFBD><C3BB><EFBFBD>ע;
struct CMD_C_ChipScore
{
LONG lScore; //<2F><>ע<EFBFBD><D7A2>Ŀ;
};
enum EN_NN_RESULT_TYPE
{
NN_RT_ALL_WIN = 0, // ͨɱ;
NN_RT_ALL_LOSE, // ͨ<><CDA8>;
NN_RT_NIUNIU, // ţţ;
NN_RT_WIN, // Ӯ;
};
// <20><>Ϸ<EFBFBD><CFB7>ɢ<EFBFBD>ṹ;
struct CMD_S_Private_End_Info
{
WORD wMainChairID; // <20><><EFBFBD><EFBFBD>;
BYTE cbFinishCout; // <20><><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>;
bool aryActiveStatus[GAME_PLAYER]; // <20><><EFBFBD><EFBFBD>״̬;
SCORE lAllScore[GAME_PLAYER]; // <20>ܳɼ<DCB3>;
BYTE aryResultTypeCount[GAME_PLAYER][4]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
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 // CMD_NiuNiu_h__