342 lines
9.2 KiB
C
342 lines
9.2 KiB
C
#ifndef CMD_SPARROW_HEAD_FILE
|
|
#define CMD_SPARROW_HEAD_FILE
|
|
|
|
#pragma pack(1)
|
|
//////////////////////////////////////////////////////////////////////////
|
|
//公共宏定义
|
|
|
|
#define KIND_ID 558 //游戏 I D
|
|
#define GAME_PLAYER 4 //游戏人数
|
|
#define GAME_NAME TEXT("万年麻将") //游戏名字
|
|
#define GAME_GENRE (GAME_GENRE_SCORE|GAME_GENRE_MATCH|GAME_GENRE_GOLD) //游戏类型
|
|
|
|
//游戏状态
|
|
#define GS_MJ_FREE GAME_STATUS_FREE //空闲状态
|
|
#define GS_MJ_BATCH (GAME_STATUS_PLAY+1) //洗澡状态
|
|
#define GS_MJ_SICE (GAME_STATUS_PLAY+2) //筛子状态
|
|
#define GS_MJ_PLAY (GAME_STATUS_PLAY+3) //游戏状态
|
|
|
|
#define MAX_COUNT 14 //最大数目
|
|
#define MUST_LEFT_COUNT 1 //预留数目
|
|
#define MAX_INDEX 34 //最大索引
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
#define VERSION_SERVER PROCESS_VERSION(6,0,3) //程序版本
|
|
#define VERSION_CLIENT PROCESS_VERSION(6,0,3) //程序版本
|
|
|
|
//组合子项
|
|
struct tagWeaveItem
|
|
{
|
|
WORD wWeaveKind; //组合类型
|
|
BYTE cbCenterCard; //中心扑克
|
|
BYTE cbPublicCard; //公开标志
|
|
WORD wProvideUser; //供应用户
|
|
};
|
|
|
|
enum eWNMJHURuleEnum
|
|
{
|
|
eWNMJHURuleEnum_Invalid = 0,
|
|
eWNMJHURuleEnum_YingHU = 1,
|
|
eWNMJHURuleEnum_YiBianDaoHU = 2,
|
|
eWNMJHURuleEnum_HunHU = 3,
|
|
};
|
|
|
|
enum eWNMJRuleEnum
|
|
{
|
|
eWNMJRuleEnum_Null = 0, //无效值;
|
|
eWNMJRuleEnum_CardAA = 1, //房卡AA;
|
|
eWNMJRuleEnum_OneTwoFAN = 1 << 1, //1,2翻倍;
|
|
eWNMJRuleEnum_TwoThreeFAN = 1 << 2, //2,3翻倍;
|
|
eWNMJRuleEnum_YingHU = 1 << 3, //硬胡;
|
|
eWNMJRuleEnum_YiBianDaoHU = 1 << 4, //一边倒胡;
|
|
eWNMJRuleEnum_HunHU = 1 << 5, //混子打发;
|
|
eWNMJRuleEnum_ZhiAnGang = 1 << 6, //直暗杠翻倍;
|
|
eWNMJRuleEnum_PlayCount2 = 1 << 7, //2人;
|
|
eWNMJRuleEnum_PlayCount3 = 1 << 8, //3人;
|
|
eWNMJRuleEnum_PlayCount_auto = 1 << 29, //2~4人;
|
|
eWNMJRuleEnum_DaiKaiFang = 1 << 30, //代开房;
|
|
eWNMJRuleEnum_NOSameIPAddr = 1 << 31, //不可以同IP地址;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
//服务器命令结构
|
|
|
|
#define SUB_S_GAME_START 100 //游戏开始
|
|
#define SUB_S_OUT_CARD 101 //出牌命令
|
|
#define SUB_S_SEND_CARD 102 //发送扑克
|
|
#define SUB_S_OPERATE_NOTIFY 104 //操作提示
|
|
#define SUB_S_OPERATE_RESULT 105 //操作命令
|
|
#define SUB_S_GAME_END 106 //游戏结束
|
|
#define SUB_S_TRUSTEE 107 //用户托管
|
|
#define SUB_S_BATCH 108 //洗澡命令
|
|
#define SUB_S_GANG_SCORE 109 //杠分消息;
|
|
#define SUB_S_MASTER_LEFTCARD 114 //剩余牌堆
|
|
|
|
//游戏状态
|
|
struct CMD_S_StatusFree
|
|
{
|
|
SCORE lCellScore; //基础金币
|
|
WORD wBankerUser; //庄家用户
|
|
bool bTrustee[GAME_PLAYER]; //是否托管
|
|
bool bActiveStatus[GAME_PLAYER]; //玩家状态;
|
|
|
|
SCORE lAllTurnScore; //总局得分
|
|
SCORE lLastTurnScore; //上局得分
|
|
|
|
};
|
|
|
|
//游戏状态
|
|
struct CMD_S_StatusBatch
|
|
{
|
|
SCORE lCellScore; //基础金币
|
|
BYTE bComplete; //完成标志
|
|
bool bTrustee[GAME_PLAYER]; //是否托管
|
|
bool bActiveStatus[GAME_PLAYER]; //玩家状态;
|
|
|
|
//历史积分
|
|
SCORE lAllTurnScore[4]; //总局得分
|
|
SCORE lLastTurnScore[4]; //上局得分
|
|
|
|
};
|
|
|
|
//杠牌结果
|
|
struct tagGangCardResult
|
|
{
|
|
BYTE cbCardCount; //扑克数目
|
|
BYTE cbCardData[4]; //扑克数据
|
|
};
|
|
|
|
//游戏状态
|
|
struct CMD_S_StatusPlay
|
|
{
|
|
//游戏变量
|
|
SCORE lCellScore; //单元积分
|
|
WORD wSiceCount; //骰子点数
|
|
WORD wSiceCount2; //骰子点数
|
|
WORD wSiceCount3; //骰子点数
|
|
WORD wBankerUser; //庄家用户
|
|
WORD wCurrentUser; //当前用户
|
|
bool bTrustee[GAME_PLAYER]; //是否托管
|
|
bool bActiveStatus[GAME_PLAYER]; //玩家状态;
|
|
|
|
//风牌记录
|
|
BYTE cbFengCardData[8]; //风牌记录
|
|
BYTE cbFengCardCount; //风牌记录
|
|
|
|
//状态变量
|
|
BYTE cbLeftCardCount; //剩余数目
|
|
BYTE cbActionCard; //动作扑克
|
|
WORD dwActionMask; //动作掩码
|
|
tagGangCardResult GangPaiResult; //杠牌操作
|
|
|
|
//出牌信息
|
|
WORD wOutCardUser; //出牌用户
|
|
BYTE cbOutCardData; //出牌扑克
|
|
BYTE cbDiscardCount[4]; //丢弃数目
|
|
BYTE cbDiscardCard[4][55]; //丢弃记录
|
|
|
|
//扑克数据
|
|
BYTE cbCardCount; //扑克数目
|
|
BYTE cbCardData[MAX_COUNT]; //扑克列表
|
|
BYTE cbSendCardData; //发送扑克
|
|
|
|
//组合扑克
|
|
BYTE cbWeaveCount[4]; //组合数目
|
|
tagWeaveItem WeaveItemArray[4][4]; //组合扑克
|
|
|
|
//历史积分
|
|
SCORE lAllTurnScore[4]; //总局得分
|
|
SCORE lLastTurnScore[4]; //上局得分
|
|
};
|
|
|
|
//游戏开始
|
|
struct CMD_S_GameStart
|
|
{
|
|
WORD wSiceCount; //骰子点数
|
|
|
|
WORD wBankerUser; //庄家用户
|
|
WORD wCurrentUser; //当前用户
|
|
BYTE wUserAction; //用户动作
|
|
tagGangCardResult GangPaiResult; //杠牌操作
|
|
|
|
BYTE cbCardData[MAX_COUNT]; //扑克列表
|
|
|
|
bool bTrustee[GAME_PLAYER]; //是否托管
|
|
bool bActiveStatus[GAME_PLAYER]; //玩家状态;
|
|
};
|
|
|
|
// 录像专用;
|
|
struct CMD_R_GameStart
|
|
{
|
|
WORD wSiceCount; //骰子点数
|
|
|
|
WORD wBankerUser; //庄家用户
|
|
WORD wCurrentUser; //当前用户
|
|
BYTE wUserAction; //用户动作
|
|
|
|
bool bActiveStatus[GAME_PLAYER]; //玩家状态;
|
|
|
|
BYTE cbCardData[GAME_PLAYER][MAX_COUNT]; //扑克列表
|
|
};
|
|
|
|
struct CMD_S_BatchResult
|
|
{
|
|
BYTE cbBatchResult[GAME_PLAYER]; //庄家用户
|
|
};
|
|
|
|
//出牌命令
|
|
struct CMD_S_OutCard
|
|
{
|
|
WORD wOutCardUser; //出牌用户
|
|
BYTE cbOutCardData; //出牌扑克
|
|
};
|
|
|
|
//发送扑克
|
|
struct CMD_S_SendCard
|
|
{
|
|
BYTE cbCardData; //扑克数据
|
|
WORD wActionMask; //动作掩码
|
|
WORD wCurrentUser; //当前用户
|
|
bool cbIsNotGang; //是否杠牌
|
|
tagGangCardResult GangPaiResult; //杠牌操作
|
|
};
|
|
|
|
//操作提示
|
|
struct CMD_S_OperateNotify
|
|
{
|
|
WORD wResumeUser; //还原用户
|
|
WORD dwActionMask; //动作掩码
|
|
BYTE cbActionCard; //动作扑克
|
|
tagGangCardResult GangPaiResult; //杠牌操作
|
|
};
|
|
|
|
//操作命令
|
|
struct CMD_S_OperateResult
|
|
{
|
|
WORD wOperateUser; //操作用户
|
|
WORD wProvideUser; //供应用户
|
|
WORD dwOperateCode; //操作代码
|
|
BYTE cbOperateCard; //操作扑克
|
|
};
|
|
|
|
//杠分消息;
|
|
struct CMD_S_GangScore
|
|
{
|
|
WORD wChairId; //杠牌者;
|
|
BYTE cbXiaYu; //是否暗杠;
|
|
};
|
|
|
|
//游戏结束
|
|
struct CMD_S_GameEnd
|
|
{
|
|
//税收
|
|
SCORE lGameTax; //游戏税收
|
|
bool bActiveStatus[GAME_PLAYER]; //玩家状态;
|
|
|
|
//结束信息
|
|
WORD wProvideUser; //供应用户
|
|
BYTE cbChiHuCard; //供应扑克
|
|
DWORD dwChiHuKind[GAME_PLAYER]; //胡牌类型
|
|
DWORD dwChiHuRight[GAME_PLAYER]; //胡牌类型
|
|
|
|
//积分信息
|
|
SCORE lGameScore[GAME_PLAYER]; //游戏积分
|
|
SCORE lGameScoreEx[GAME_PLAYER]; //奖励分
|
|
SCORE lGameHuScore[GAME_PLAYER]; //胡牌分;
|
|
|
|
//扑克信息
|
|
BYTE cbCardCount[GAME_PLAYER]; //扑克数目
|
|
BYTE cbCardData[GAME_PLAYER][MAX_COUNT]; //扑克数据
|
|
|
|
BYTE cbWeaveItemCount[GAME_PLAYER]; //组合数目
|
|
tagWeaveItem WeaveItemArray[GAME_PLAYER][4]; //组合牌
|
|
|
|
SCORE lAllTurnScore[GAME_PLAYER]; //总局得分
|
|
SCORE lLastTurnScore[GAME_PLAYER]; //上局得分
|
|
|
|
};
|
|
|
|
//用户托管
|
|
struct CMD_S_Trustee
|
|
{
|
|
bool bTrustee; //是否托管
|
|
WORD wChairID; //托管用户
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
//客户端命令结构
|
|
|
|
#define SUB_C_OUT_CARD 1 //出牌命令;
|
|
#define SUB_C_BATCH 2 //洗澡开始;
|
|
#define SUB_C_OPERATE_CARD 3 //操作扑克;
|
|
#define SUB_C_TRUSTEE 4 //用户托管;
|
|
#define SUB_C_BATCH_END 5 //洗澡完毕;
|
|
#define SUB_C_PASS_KING 6 //经过精牌;
|
|
#define SUB_C_MASTER_CHEAKCARD 10 //选择的牌;
|
|
#define SUB_C_MASTER_LEFTCARD 11 //剩余牌堆;
|
|
|
|
//出牌命令
|
|
struct CMD_C_OutCard
|
|
{
|
|
BYTE cbCardData; //扑克数据
|
|
};
|
|
|
|
//洗澡
|
|
struct CMD_C_BATCH
|
|
{
|
|
BYTE cbChipTimes; //买顶倍数
|
|
WORD wCurrentUser; //当前用户
|
|
};
|
|
|
|
//操作命令
|
|
struct CMD_C_OperateCard
|
|
{
|
|
WORD dwOperateCode; //操作代码
|
|
BYTE cbOperateCard; //操作扑克
|
|
};
|
|
|
|
//用户托管
|
|
struct CMD_C_Trustee
|
|
{
|
|
bool bTrustee; //是否托管
|
|
};
|
|
|
|
struct CMD_C_MaterCheckCard
|
|
{
|
|
BYTE cbCheakCard; //操作代码
|
|
};
|
|
|
|
struct MasterLeftCard
|
|
{
|
|
BYTE kMasterCheakCard; // 当前选择;
|
|
BYTE kMasterLeftIndex[MAX_INDEX]; // 排堆;
|
|
};
|
|
|
|
// 游戏解散结构
|
|
struct CMD_S_Private_End_Info
|
|
{
|
|
bool aryActiveStatus[GAME_PLAYER]; //玩家状态;
|
|
BYTE cbAllGangCounts[GAME_PLAYER]; //统计杠的次数;
|
|
BYTE cbZiMoCout[GAME_PLAYER]; //自摸次数;
|
|
BYTE cbDianPaoCout[GAME_PLAYER]; //点炮次数;
|
|
SCORE lAllScore[GAME_PLAYER]; //总成绩;
|
|
SCORE lMaxScore[GAME_PLAYER]; //最高得分;
|
|
|
|
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 |