This commit is contained in:
cyw
2026-02-13 14:34:15 +08:00
parent 6ed1953e24
commit f36e3f9df2
5206 changed files with 573757 additions and 16 deletions

View File

@@ -0,0 +1,284 @@
#ifndef _CMD_NiuNiu_GAME_HEAD_FILE_
#define _CMD_NiuNiu_GAME_HEAD_FILE_
#include "Types.h"
#include "DataStream.h"
#pragma pack(1)
//游戏属性;
#define NN_KIND_ID 2 //游戏ID;
#define NN_GAME_PLAYER 5 //游戏人数;
#define NN_GAME_NAME ("牛牛") //游戏名字;
#define NN_MAX_COUNT 5 //扑克数目;
#define NN_FULL_COUNT 52 //最大牌库数量;
#define NN_CTYPE_COUNT 12 //牌型数量;
//扑克掩码;
#define NN_MASK_VALUE 0x0F //数值掩码;
#define NN_MASK_COLOR 0xF0 //花色掩码;
//牌型定义;
#define NIU_TYPE_0 0 //无牛;
#define NIU_TYPE_1 1 //牛一;
#define NIU_TYPE_2 2 //牛二;
#define NIU_TYPE_3 3 //牛三;
#define NIU_TYPE_4 4 //牛四;
#define NIU_TYPE_5 5 //牛五;
#define NIU_TYPE_6 6 //牛六;
#define NIU_TYPE_7 7 //牛七;
#define NIU_TYPE_8 8 //牛八;
#define NIU_TYPE_9 9 //牛九;
#define NIU_TYPE_10 10 //牛牛;
#define NIU_TYPE_WHN 11 //五花牛;
#define NIU_TYPE_SHN 12 //四炸;
#define NIU_TYPE_WXN 13 //五小牛;
#define NN_MAX_NIU_TYPE 13 //最大牛类型;
//玩家相关定义;
#define NN_VIEW_L1_ID 0 //左1玩家;
#define NN_VIEW_L2_ID 1 //左2玩家;
#define NN_VIEW_SELF_ID 2 //自己玩家;
#define NN_VIEW_R3_ID 3 //右2玩家;
#define NN_VIEW_R4_ID 4 //右1玩家;
//开房规则;
#define NN_RULE_HUA_NIU 0x01 //有花牛;
#define NN_RULE_SAN_ZHANG 0x02 //三张牛;
#define NN_RULE_FREE_CHIP 0x04 //自由下注;
#define NN_RULE_NIU_FAN 0x08 //有牛番;
#define NN_BANKER_OWNER 1 //房主坐庄;
#define NN_BANKER_TURNS 2 //轮流坐庄;
#define NN_BANKER_ROB 3 //经典抢庄;
#define NN_BANKER_ROB4 4 //翻4张抢庄;
//游戏状态;
#define NN_GS_TK_FREE GAME_STATUS_FREE //等待开始;
#define NN_GS_TK_SEND_CARD GAME_STATUS_PLAY //发牌状态;
#define NN_GS_TK_ROB_BANKER (GAME_STATUS_PLAY + 1) //抢庄状态;
#define NN_GS_TK_USER_CHIP (GAME_STATUS_PLAY + 2) //下注状态;
#define NN_GS_TK_OPEN_CARD (GAME_STATUS_PLAY + 3) //开牌状态;
#define NN_GS_TK_SHOW_CARD (GAME_STATUS_PLAY + 4) //游戏结束;
#define NN_OPEN_CARD_TIME 20 //开牌时间;
//规则配置参数;
struct tagNinNiuRuleCfg
{
uint16 wGameRule = 0; //游戏规则;
uint16 wBankerRule = 0; //坐庄规则;
uint8 cbMinFreeChip = 0; //最小下注;
uint8 cbMaxFreeChip = 0; //最大下注;
};
//空闲状态;
struct NN_CMD_S_StatusFree
{
SCORE lCellScore; //基础积分;
SCORE lMinFreeChip; //最小可下注;
SCORE lMaxFreeChip; //最大可下注;
uint8 cbHandCardCount; //手牌数量;
bool bActiveStatus[NN_GAME_PLAYER]; //玩家状态;
};
//发牌状态;
struct NN_CMD_S_StatusSend
{
NN_CMD_S_StatusFree stStatusFree; //公共数据;
uint16 wBankerUser; //庄家用户;
uint8 cbSendStatus; //发牌状态;
uint8 cbHandCardData[NN_MAX_COUNT]; //手牌数据;
};
//抢庄状态;
struct NN_CMD_S_StatusRob
{
NN_CMD_S_StatusFree stStatusFree; //公共数据;
uint8 cbRobStatus[NN_GAME_PLAYER]; //抢庄状态 0:没操作1:不抢2:抢;
uint8 cbHandCardData[NN_GAME_PLAYER][NN_MAX_COUNT];//手牌数据;
};
//下注状态;
struct NN_CMD_S_StatusChip
{
NN_CMD_S_StatusFree stStatusFree; //公共数据;
uint16 wBankerUser; //庄家用户;
uint8 cbChipStatus[NN_GAME_PLAYER]; //下注状态;
SCORE lUserChipScore[NN_GAME_PLAYER]; //下注分数;
uint8 cbHandCardData[NN_MAX_COUNT]; //手牌数据;
};
//等待开牌状态;
struct NN_CMD_S_StatusOpen
{
NN_CMD_S_StatusFree stStatusFree; //公共数据;
uint16 wBankerUser; //庄家用户;
SCORE lUserChipScore[NN_GAME_PLAYER]; //下注分数;
uint8 cbOpenStatus[NN_GAME_PLAYER]; //开牌状态;
uint8 cbHandCardType; //牌型;
uint8 cbHandCardData[NN_MAX_COUNT]; //手牌数据;
};
//所有人都开牌;
struct NN_CMD_S_StatusAllOpen
{
NN_CMD_S_StatusFree stStatusFree; //公共数据;
uint16 wBankerUser; //庄家用户;
uint8 cbOpenStatus[NN_GAME_PLAYER]; //开牌状态;
SCORE lUserChipScore[NN_GAME_PLAYER]; //下注分数;
uint8 cbHandCardType[NN_GAME_PLAYER]; //牌型;
uint8 cbHandCardData[NN_GAME_PLAYER][NN_MAX_COUNT];//手牌数据;
};
//////////////////////////////////////////////////////////////////////////
//服务器命令;
#define NN_SUB_S_GAME_START 100 //游戏开始;
#define NN_SUB_S_START_ROB 101 //开始抢庄;
#define NN_SUB_S_USER_ROB 102 //玩家抢庄;
#define NN_SUB_S_START_CHIP 103 //开始下注;
#define NN_SUB_S_USER_CHIP 104 //玩家下注;
#define NN_SUB_S_START_OPEN 105 //开始开牌;
#define NN_SUB_S_OPEN_CARD 106 //玩家开牌;
#define NN_SUB_S_GAME_END 107 //游戏结束;
#define NN_SUB_S_ALL_OPEN_CARD 108 //玩家开牌;
//游戏开始;
struct NN_CMD_S_GameStart
{
uint16 wBankerUser; //庄家用户;
bool bActiveStatus[NN_GAME_PLAYER]; //玩家状态;
uint8 cbHandCardCount; //手牌数量;
uint8 cbHandCardData[NN_MAX_COUNT]; //手牌数据;
};
//玩家抢庄;
struct NN_CMD_S_UserRob
{
uint16 wRobUser; //抢庄玩家;
bool bRobResult; //是否抢庄;
};
//开始下注;
struct NN_CMD_S_StartChip
{
uint16 wBankerUser; //庄家用户;
};
//玩家下注;
struct NN_CMD_S_UserChip
{
uint16 wChipUser; //下注玩家;
SCORE lChipScore; //下注分数;
};
//玩家开牌;
struct NN_CMD_S_OpenCard
{
uint16 wOpenUser; //开牌玩家;
uint8 cbCardType; //手牌类型;
uint8 cbCardData[NN_MAX_COUNT]; //开牌数据;
};
//所有人开牌;
struct NN_CMD_S_AllOpenCard
{
bool bActiveStatus[NN_GAME_PLAYER]; //玩家状态;
uint8 cbCardType[NN_GAME_PLAYER]; //手牌类型;
uint8 cbHandCardData[NN_GAME_PLAYER][NN_MAX_COUNT];//手牌数据;
};
//游戏结束;
struct NN_CMD_S_GameEnd
{
uint8 cbCardType[NN_GAME_PLAYER]; //手牌类型;
uint8 cbHandCardData[NN_GAME_PLAYER][NN_MAX_COUNT]; //手牌数据;
SCORE lAllScore[NN_GAME_PLAYER]; //;
SCORE lGameScore[NN_GAME_PLAYER]; //游戏得分;
SCORE lRevenue[NN_GAME_PLAYER]; //税收;
};
//总结算数据;
struct NN_CMD_S_FinishData
{
bool bActiveStatus[NN_GAME_PLAYER]; //手牌状态;
uint8 cbCardTypeCount[NN_GAME_PLAYER][12]; //牌型数量;
SCORE lTotalScore[NN_GAME_PLAYER]; //总得分;
};
//////////////////////////////////////////////////////////////////////////
//客户端命令;
#define NN_SUB_C_SEND_OVER 1 //发牌完成;
#define NN_SUB_C_ROB_BANKER 2 //玩家抢庄;
#define NN_SUB_C_CHIP_SCORE 3 //玩家下注;
#define NN_SUB_C_OPEN_CARD 4 //玩家开牌;
//用户叫庄;
struct NN_CMD_C_RobBanker
{
bool bRob; //是否抢庄;
};
//用户加注;
struct NN_CMD_C_ChipScore
{
SCORE lScore; //下注数目;
};
//////////////////////////////////////////////////////////////////////////////////
enum EN_NN_RESULT_TYPE
{
NN_RT_ALL_WIN = 0, // 通杀;
NN_RT_ALL_LOSE, // 通赔;
NN_RT_NIUNIU, // 牛牛;
NN_RT_WIN, // 赢;
};
// 游戏解散结构;
struct NN_CMD_S_Private_End_Info
{
WORD wMainChairID; // 房主;
BYTE cbFinishCout; // 完成局数;
bool aryActiveStatus[NN_GAME_PLAYER]; // 手牌状态;
SCORE lAllScore[NN_GAME_PLAYER]; // 总成绩;
BYTE aryResultTypeCount[NN_GAME_PLAYER][4]; // 牌型数量;
void StreamValue(DataStream& kData, bool bSend)
{
if (bSend)
{
kData.pushValue(this, sizeof(NN_CMD_S_Private_End_Info));
}
else
{
kData.popValue(this, sizeof(NN_CMD_S_Private_End_Info));
}
}
};
enum eNNRuleEnum
{
eNNRuleEnum_NULL = 0, //NULL;
eNNRuleEnum_CardAA = 1, //房卡AA;
eNNRuleEnum_BANKER_OWNER = 1 << 1, //房主坐庄;
eNNRuleEnum_BANKER_TURNS = 1 << 2, //轮流坐庄;
eNNRuleEnum_BANKER_ROB = 1 << 3, //经典抢庄;
eNNRuleEnum_BANKER_ROB4 = 1 << 4, //翻4张抢庄;
eNNRuleEnum_NO_SPECIAL_NIU = 1 << 5, //无特殊牛;
eNNRuleEnum_BAYONET = 1 << 6, //拼刺刀;
eNNRuleEnum_WHN = 1 << 7, //五花牛;
eNNRuleEnum_BOMB = 1 << 8, //炸弹;
eNNRuleEnum_WXN = 1 << 9, //五小牛;
};
//////////////////////////////////////////////////////////////////////////////////
#pragma pack()
#endif