void CTableFrameSink::CheckXijin() { for (int i=0; i<GAME_PLAYER; i++) { IServerUserItem * pIServerUserItem = m_pITableFrame->GetServerUserItem(i); if (pIServerUserItem == NULL || pIServerUserItem->IsAndroidUser()) continue; if(m_GameLogic.GetBestCardType(m_cbHandCardData[i], MAX_COUNT) >= 10) { m_oLog.Log("玩家[%s]获得喜金座位[%d]身上携带筹码[%d]获得奖励元宝数[%d]",pIServerUserItem->GetAccounts(), pIServerUserItem->GetChairID(), pIServerUserItem->GetUserScore()->lBodyChip, m_lLikeIngot); m_pITableFrame->SendTableData(i,SUB_S_XIJIN,NULL,0); m_pITableFrame->WriteUserTask(i,1,1,m_lLikeIngot); } } }
//游戏开始 void CTableFrameSink::GameStart() { m_oLog.Log("//////-------游戏开始--------////////"); for(int i=0; i<GAME_PLAYER; i++) { IServerUserItem * pIServerUserItem = m_pITableFrame->GetServerUserItem(i); if (pIServerUserItem == NULL) continue; if (!pIServerUserItem->IsAndroidUser()) { m_oLog.Log("玩家[%s] 带入筹码[%I64d]" , pIServerUserItem->GetAccounts() , pIServerUserItem->GetUserScore()->lBodyChip); } } CountDownTime(INVALID_CHAIR); CMD_S_GameStart GameStart; ZeroMemory(&GameStart,sizeof(GameStart)); //强发聚宝盆 //m_oLog.Log("强发状态:%s",m_bMeetConditions?"已经进行过强发,还未清除状态不能强发!":"未进行过强发,可以强发!"); bool bSuccess = false;//= ForceDispathCard(); //m_oLog.Log("1"); while (!bSuccess) { //m_oLog.Log("2"); bSuccess = DispathCard(); } //随机喜金牌 ZeroMemory(m_cbRewardCardData,sizeof(m_cbRewardCardData)); for (int i=0; i<GAME_PLAYER; i++) { if (m_cbPlayStatus[i] == FALSE) continue; m_GameLogic.RandCardList(m_cbRewardCardData[i],MAX_COUNT); } //测试配牌 if (m_bCheat) { for (int i=0; i<GAME_PLAYER; i++) { if (m_cbCheatCardData[i][0] == 0)continue; CopyMemory(m_cbHandCardData[i], m_cbCheatCardData[i],MAX_COUNT); } for (int i=0; i<GAME_PLAYER; i++) { if (m_cbCheatRewardCard[i][0] ==0)continue; { CopyMemory(m_cbRewardCardData[i], m_cbCheatRewardCard[i], MAX_COUNT); } } } m_oLog.Log("原始手牌:"); for(int i=0; i<GAME_PLAYER; i++) { //获取用户 IServerUserItem *pIServerUser=m_pITableFrame->GetServerUserItem(i); if(pIServerUser==NULL) continue; m_oLog.Log("%s手牌:[%s%s][%s%s][%s%s][%s%s][%s%s]---牌型为[%s]",pIServerUser->GetUserData()->szAccounts,cn(m_cbHandCardData[i][0]),vn(m_cbHandCardData[i][0]), cn(m_cbHandCardData[i][1]),vn(m_cbHandCardData[i][1]),cn(m_cbHandCardData[i][2]),vn(m_cbHandCardData[i][2]),cn(m_cbHandCardData[i][3]),vn(m_cbHandCardData[i][3]), cn(m_cbHandCardData[i][4]),vn(m_cbHandCardData[i][4]),CardTypeName(m_GameLogic.GetBestCardType(m_cbHandCardData[i],MAX_COUNT))); } m_oContral.ControlDispath(m_cbHandCardData, m_cbPlayStatus); m_oLog.Log("控制后手牌:"); for(int i=0; i<GAME_PLAYER; i++) { //获取用户 IServerUserItem *pIServerUser=m_pITableFrame->GetServerUserItem(i); if(pIServerUser==NULL) continue; m_oLog.Log("%s手牌:[%s%s][%s%s][%s%s][%s%s][%s%s]---牌型为[%s]",pIServerUser->GetUserData()->szAccounts,cn(m_cbHandCardData[i][0]),vn(m_cbHandCardData[i][0]), cn(m_cbHandCardData[i][1]),vn(m_cbHandCardData[i][1]),cn(m_cbHandCardData[i][2]),vn(m_cbHandCardData[i][2]),cn(m_cbHandCardData[i][3]),vn(m_cbHandCardData[i][3]), cn(m_cbHandCardData[i][4]),vn(m_cbHandCardData[i][4]),CardTypeName(m_GameLogic.GetBestCardType(m_cbHandCardData[i],MAX_COUNT))); } // //发送扑克 for (WORD i=0;i<m_wPlayerCount;i++) { if(m_cbPlayStatus[i]==FALSE)continue; CopyMemory(GameStart.cbPlayStatus, m_cbPlayStatus,sizeof(m_cbPlayStatus)); //派发扑克 CopyMemory(GameStart.cbCardData[i],m_cbHandCardData[i],MAX_COUNT); std::random_shuffle(GameStart.cbCardData[i], GameStart.cbCardData[i]+MAX_COUNT); //派发喜金扑克 CopyMemory(GameStart.cbRewardCardData[i], m_cbRewardCardData[i],MAX_COUNT); //发送数据 m_pITableFrame->SendTableData(i,SUB_S_GAME_START,&GameStart,sizeof(GameStart)); ZeroMemory(GameStart.cbCardData, sizeof(GameStart.cbCardData)); } m_pITableFrame->SendLookonData(INVALID_CHAIR,SUB_S_GAME_START,&GameStart,sizeof(GameStart)); }
void CTableFrameSink::WriteScore() { m_dwOverTime = GetTickCount(); DWORD temp_dwPlayTime = (m_dwOverTime - m_dwJettonTime)/1000; m_pITableFrame->KillGameTimer(IDI_WRITESCORE); //SendTaskIngot(); for (int i=0; i<GAME_PLAYER; i++) { if(m_cbPlayStatus[i] == FALSE) continue; m_lTotalWinScore[i] = m_lUserWinScore[i] - m_lDeskPay; } //聚宝盆 //SendTaskIngot(); LONGLONG lTotalRevenue = 0; for (WORD i=0;i<GAME_PLAYER;i++) { if (m_lTotalWinScore[i] != 0) { enScoreKind nScoreKind = enScoreKind_Draw; nScoreKind = (m_lUserWinScore[i] > 0 )?enScoreKind_Win:enScoreKind_Lost; IServerUserItem * pIServerUserItem = m_pITableFrame->GetServerUserItem(i); if(pIServerUserItem) { m_oLog.Log("玩家[%s] 写入积分[%I64d]" , pIServerUserItem->GetUserData()->szAccounts , m_lTotalWinScore[i]); if(!pIServerUserItem->IsAndroidUser()) { lTotalRevenue += m_lUserRevenue[i]; LONGLONG temp_SysEat=0; temp_SysEat += m_lDeskPay; if (m_lUserWinScore[i] < 0) { temp_SysEat += ((-m_lUserWinScore[i])*m_cbEateRate /100); } //写入积分 m_pITableFrame->WriteUserScore(i,m_lTotalWinScore[i],m_lUserRevenue[i],nScoreKind,temp_dwPlayTime,temp_SysEat,m_lMinbet); } else { //写入积分 m_pITableFrame->WriteUserScore(i,m_lTotalWinScore[i],m_lUserRevenue[i],nScoreKind); } } } } for(int i=0; i<GAME_PLAYER; i++) { IServerUserItem * pIServerUserItem = m_pITableFrame->GetServerUserItem(i); if (pIServerUserItem == NULL) continue; if (!pIServerUserItem->IsAndroidUser()) { m_oLog.Log("玩家[%s] 身上剩余[%I64d]" , pIServerUserItem->GetAccounts() , pIServerUserItem->GetUserScore()->lBodyChip); } } m_oLog.Log("将要写入放分池的系统输赢分[%I64d]" , m_lSysWinScore); //系统输赢放入放分池 m_oContral.ChangeBuffer(m_lSysWinScore); //放入聚宝盆 // if (m_lSysWinScore > 0) // { // AddBuffer(0,m_lSysWinScore*m_cbBufferRate/100); // } if(lTotalRevenue > 0) { // AddBuffer(BIG_BUFFER , lTotalRevenue); // AddBuffer(SMALL_BUFFER , lTotalRevenue); } //设置文件名 TCHAR szPath[MAX_PATH]=TEXT(""); TCHAR szConfigFileName[MAX_PATH]=TEXT(""); GetCurrentDirectory(sizeof(szPath),szPath); _snprintf_s(szConfigFileName,sizeof(szConfigFileName),TEXT("%s\\%d_RatiOx.ini"),szPath,m_pGameServiceOption->wServerID); m_oLog.Log("=============放分池数据[%I64d]写入配置文件[%s]=================" ,m_oContral.GetPoolScore(),szConfigFileName); CString strPoolScore; strPoolScore.Format("%I64d", m_oContral.GetPoolScore()); WritePrivateProfileString(TEXT("SCOREPOOL"), TEXT("ScorePool"),strPoolScore,szConfigFileName); ConcludeGame(); m_oLog.Log("////------------游戏结束----------------------////"); //结束游戏 }
//定时器事件 bool __cdecl CTableFrameSink::OnTimerMessage(WORD wTimerID, WPARAM wBindParam) { switch (wTimerID) { case IDI_FREE: //空闲时间结束 { //开始游戏 m_pITableFrameControl->StartGame(); //启动下注计时器 m_pITableFrame->SetGameTimer(IDI_PLACE_JETTON,TIME_PLACE_JETTON*1000,1,0L); //设置游状态为下注阶段 m_pITableFrame->SetGameStatus(GS_PLACE_JETTON); return true; } case IDI_PLACE_JETTON: //下注时间结束 { //状态判断(防止强退重复设置) if (m_pITableFrame->GetGameStatus()!=GS_GAME_END) { //设置状态 m_pITableFrame->SetGameStatus(GS_GAME_END); //结束游戏 OnEventGameEnd(INVALID_CHAIR,NULL,GER_NORMAL); //设置时间 m_pITableFrame->SetGameTimer(IDI_GAME_END,TIME_GAME_END*1000,1,0L); } return true; } case IDI_GAME_END: //结束游戏 { //写入积分 for ( WORD wUserChairID = 0; wUserChairID < GAME_PLAYER; ++wUserChairID ) { IServerUserItem *pIServerUserItem = m_pITableFrame->GetServerUserItem(wUserChairID); if ( pIServerUserItem == NULL ) continue; //胜利类型 enScoreKind ScoreKind=(m_iUserWinScore[wUserChairID]>0L)?enScoreKind_Win:enScoreKind_Lost; //写入积分 if (m_iUserWinScore[wUserChairID]!=0L) m_pITableFrame->WriteUserScore(wUserChairID,m_iUserWinScore[wUserChairID], m_iUserRevenue[wUserChairID], ScoreKind); //坐庄条件判断。一轮游戏结束,玩家有输有赢。所以需要在申请上庄队列里把输了钱不在满足做庄的玩家清除掉 __int64 iUserScore=pIServerUserItem->GetUserScore()->lScore; if (wUserChairID!=m_wCurrentBanker && iUserScore<m_iApplyBankerCondition) { for (WORD i=0; i<m_ApplyUserArray.GetCount(); ++i) { if (wUserChairID!=m_ApplyUserArray[i]) continue; //从庄家队列删除不符合上庄的玩家 m_ApplyUserArray.RemoveAt(i); //发送消息 CMD_S_CancelBanker CancelBanker; ZeroMemory(&CancelBanker,sizeof(CancelBanker)); //设置变量 lstrcpyn(CancelBanker.szCancelUser,pIServerUserItem->GetAccounts(),CountArray(CancelBanker.szCancelUser)); //发送消息 m_pITableFrame->SendTableData(INVALID_CHAIR, SUB_S_CANCEL_BANKER, &CancelBanker, sizeof(CancelBanker)); m_pITableFrame->SendLookonData(INVALID_CHAIR, SUB_S_CANCEL_BANKER, &CancelBanker, sizeof(CancelBanker)); //提示消息 TCHAR szTipMsg[128]; _sntprintf(szTipMsg,CountArray(szTipMsg),TEXT("由于你的金币数少于坐庄必须金币数(%I64d),你自动下庄!"),m_iApplyBankerCondition); SendGameMessage(wUserChairID,szTipMsg); break; } } } //结束游戏 m_pITableFrame->ConcludeGame(); //切换庄家 ChangeBanker(false); //设置时间 m_dwJettonTime=(DWORD)time(NULL); m_pITableFrame->SetGameTimer(IDI_FREE,TIME_FREE*1000,1,0L); //发送消息 CMD_S_GameFree GameFree; ZeroMemory(&GameFree,sizeof(GameFree)); GameFree.cbTimeLeave=TIME_FREE; GameFree.cbGameRecord = m_iGoalAnimal; GameFree.iGameTimes = m_iGameTimes; m_pITableFrame->SendTableData(INVALID_CHAIR,SUB_S_GAME_FREE,&GameFree,sizeof(GameFree)); m_pITableFrame->SendLookonData(INVALID_CHAIR,SUB_S_GAME_FREE,&GameFree,sizeof(GameFree)); return true; } } return false; }
//用户进贡 bool CTableFrameSink::OnPayTribute(const void * pDataBuffer) { //获取数据 CMD_C_PayTribute *pPayTribute=(CMD_C_PayTribute *)pDataBuffer; WORD wChairID = pPayTribute->wUser; BYTE bPayCard = pPayTribute->bCard; m_bPayNumber++; m_bPayCard[wChairID]=bPayCard; //未全部进贡 if((m_bPayNumber<=m_wPlayerCount&&m_bGameStatus==SHUANG_XIA)|| (m_bPayNumber<=2&&m_bGameStatus==DAN_XIA)||(m_bPayNumber<=2&&m_bGameStatus==OTHER)) { //构造数据 CMD_S_PayTribute PayTribute; PayTribute.bPayStatus = enNone; PayTribute.bCard = bPayCard; PayTribute.wFromUser = wChairID; PayTribute.wCurrentUser = INVALID_CHAIR; PayTribute.wToUser = INVALID_CHAIR; m_GameLogic.RemoveCard(&bPayCard,1,m_bHandCardData[wChairID],m_bCardCount[wChairID]); m_bCardCount[wChairID]--; CopyMemory(PayTribute.bPayType,m_bPayTribute,sizeof(m_bPayTribute)); //发送数据 m_pITableFrame->SendTableData(INVALID_CHAIR,SUB_S_PAY_TRIBUTE,&PayTribute,sizeof(PayTribute)); m_pITableFrame->SendLookonData(INVALID_CHAIR,SUB_S_PAY_TRIBUTE,&PayTribute,sizeof(PayTribute)); } if(pPayTribute->bPayType==enJin_Gong&&((m_bPayNumber>=2&&m_bGameStatus==SHUANG_XIA) ||(m_bPayNumber>=1&&m_bGameStatus==DAN_XIA) ||(m_bPayNumber>=1&&m_bGameStatus==OTHER))) { //构造数据 CMD_S_PayTribute PayTribute; PayTribute.bPayStatus = enHui_Gong; PayTribute.wCurrentUser = INVALID_CHAIR; CopyMemory(PayTribute.bPayType,m_bPayTribute,sizeof(m_bPayTribute)); //单下处理 if(m_bGameStatus==DAN_XIA) { //当前用户 m_wCurrentUser = (m_bRanKing[1]+2)%m_wPlayerCount; //进贡扑克 PayTribute.bCard = m_bPayCard[(m_bRanKing[1]+2)%m_wPlayerCount]; PayTribute.wFromUser = (m_bRanKing[1]+2)%m_wPlayerCount; PayTribute.wToUser = m_bRanKing[0]; m_pITableFrame->SendTableData(PayTribute.wToUser,SUB_S_PAY_TRIBUTE,&PayTribute,sizeof(PayTribute)); m_GameLogic.Add(PayTribute.bCard, m_bHandCardData[PayTribute.wToUser],m_bCardCount[PayTribute.wToUser]); m_bCardCount[PayTribute.wToUser]++; } //平扣处理 else if(m_bGameStatus==OTHER) { //当前用户 m_wCurrentUser = (m_bRanKing[0]+2)%m_wPlayerCount; //进贡扑克 PayTribute.bCard = m_bPayCard[(m_bRanKing[0]+2)%m_wPlayerCount]; PayTribute.wFromUser = (m_bRanKing[0]+2)%m_wPlayerCount; PayTribute.wToUser = m_bRanKing[0]; m_pITableFrame->SendTableData(PayTribute.wToUser,SUB_S_PAY_TRIBUTE,&PayTribute,sizeof(PayTribute)); m_GameLogic.Add(PayTribute.bCard, m_bHandCardData[PayTribute.wToUser],m_bCardCount[PayTribute.wToUser]); m_bCardCount[PayTribute.wToUser]++; } //双下处理 else if(m_bGameStatus==SHUANG_XIA) { BYTE bFirst=m_bRanKing[0],bSecond=m_bRanKing[1]; BYTE bThird=(bFirst+1)%m_wPlayerCount,bFouth=(bSecond+1)%m_wPlayerCount; if(m_GameLogic.GetCardLogicValue(m_bPayCard[bThird])>m_GameLogic.GetCardLogicValue(m_bPayCard[bFouth])) { //当前用户 m_wCurrentUser = bThird; PayTribute.bCard = m_bPayCard[bThird]; PayTribute.wFromUser = bThird; PayTribute.wToUser = bFirst; m_pITableFrame->SendTableData(PayTribute.wToUser,SUB_S_PAY_TRIBUTE,&PayTribute,sizeof(PayTribute)); m_GameLogic.Add(PayTribute.bCard, m_bHandCardData[PayTribute.wToUser], m_bCardCount[PayTribute.wToUser]); m_bCardCount[PayTribute.wToUser]++; PayTribute.bCard = m_bPayCard[bFouth]; PayTribute.wFromUser = bFouth; PayTribute.wToUser = bSecond; m_pITableFrame->SendTableData(PayTribute.wToUser,SUB_S_PAY_TRIBUTE,&PayTribute,sizeof(PayTribute)); m_GameLogic.Add(PayTribute.bCard, m_bHandCardData[PayTribute.wToUser], m_bCardCount[PayTribute.wToUser]); m_bCardCount[PayTribute.wToUser]++; }else { //当前用户 m_wCurrentUser = bFouth; PayTribute.bCard = m_bPayCard[bFouth]; PayTribute.wFromUser = bFouth; PayTribute.wToUser = bFirst; m_pITableFrame->SendTableData(PayTribute.wToUser,SUB_S_PAY_TRIBUTE,&PayTribute,sizeof(PayTribute)); m_GameLogic.Add(PayTribute.bCard, m_bHandCardData[PayTribute.wToUser], m_bCardCount[PayTribute.wToUser]); m_bCardCount[PayTribute.wToUser]++; PayTribute.bCard = m_bPayCard[bThird]; PayTribute.wFromUser = bThird; PayTribute.wToUser = bSecond; m_pITableFrame->SendTableData(PayTribute.wToUser,SUB_S_PAY_TRIBUTE,&PayTribute,sizeof(PayTribute)); m_GameLogic.Add(PayTribute.bCard, m_bHandCardData[PayTribute.wToUser], m_bCardCount[PayTribute.wToUser]); m_bCardCount[PayTribute.wToUser]++; } } } if(pPayTribute->bPayType==enHui_Gong) { //构造数据 CMD_S_PayTribute PayTribute; PayTribute.bPayStatus = enGet_Hui_Gong; PayTribute.wCurrentUser = INVALID_CHAIR; CopyMemory(PayTribute.bPayType,m_bPayTribute,sizeof(m_bPayTribute)); PayTribute.bCard = pPayTribute->bCard; PayTribute.wFromUser = pPayTribute->wUser; PayTribute.wToUser = pPayTribute->wToUser; m_pITableFrame->SendTableData(PayTribute.wToUser,SUB_S_PAY_TRIBUTE,&PayTribute,sizeof(PayTribute)); m_GameLogic.Add(PayTribute.bCard, m_bHandCardData[PayTribute.wToUser], m_bCardCount[PayTribute.wToUser]); m_bCardCount[PayTribute.wToUser]++; //发送系统消息 CMD_S_MESSAGE message; IServerUserItem *pFrom = m_pITableFrame->GetServerUserItem(PayTribute.wFromUser); IServerUserItem *pTo = m_pITableFrame->GetServerUserItem(PayTribute.wToUser); _sntprintf(message.szBuffer,sizeof(message.szBuffer),"用户 %-s 进贡给 %-s", pTo->GetAccounts(),pFrom->GetAccounts()); m_pITableFrame->SendTableData(INVALID_CHAIR,SUB_S_SYSTEM_MESSAGE,&message,sizeof(message)); m_pITableFrame->SendLookonData(INVALID_CHAIR,SUB_S_SYSTEM_MESSAGE,&message,sizeof(message)); } if((m_bPayNumber==4&&m_bGameStatus==SHUANG_XIA)|| (m_bPayNumber==2&&m_bGameStatus==DAN_XIA)||m_bPayNumber==2&&m_bGameStatus==OTHER) { //构造数据 CMD_S_PayTribute PayTribute; PayTribute.bPayStatus = enNone; PayTribute.wCurrentUser = m_wCurrentUser; CopyMemory(PayTribute.bPayType,m_bPayTribute,sizeof(m_bPayTribute)); //发送数据 m_pITableFrame->SendTableData(INVALID_CHAIR,SUB_S_PAY_TRIBUTE,&PayTribute,sizeof(PayTribute)); m_pITableFrame->SendLookonData(INVALID_CHAIR,SUB_S_PAY_TRIBUTE,&PayTribute,sizeof(PayTribute)); } return true; }
//游戏开始 bool __cdecl CTableFrameSink::OnEventGameStart() { //设置状态 m_pITableFrame->SetGameStatus(GS_PLAYING); CMD_S_GameStart GameStart; ZeroMemory(&GameStart,sizeof(GameStart)); m_GameLogic.m_bSeries = m_bSeries.bCurrentSeries|0x20; m_bEnd = false; //混论扑克 BYTE bRandCard[108]; m_GameLogic.RandCardList(bRandCard,CountArray(bRandCard)); //分发扑克 for(WORD i=0;i<m_wPlayerCount;i++) { m_bCardCount[i]=27; CopyMemory(&m_bHandCardData[i],&bRandCard[i*m_bCardCount[i]],sizeof(BYTE)*m_bCardCount[i]); m_GameLogic.SortCardList(m_bHandCardData[i] ,m_bCardCount[i]); } //设置用户 if(m_wBankerUser==INVALID_CHAIR) { GameStart.bLiangPai = true; m_wCurrentUser = rand() % m_wPlayerCount; BYTE bIndex = rand() % 27; GameStart.bLiangCard = m_bHandCardData[m_wCurrentUser][bIndex]; m_wBankerUser = m_wCurrentUser; } else m_wCurrentUser = m_wBankerUser; CMD_S_PayTribute PayTribute; //判断进贡 if(m_bGameStatus == SHUANG_XIA) { m_wCurrentUser = INVALID_CHAIR; BYTE bFirst = m_bRanKing[0]; BYTE bSecond = (bFirst+1)%m_wPlayerCount; BYTE bThree = (bSecond+2)%m_wPlayerCount; //拥有双大王,抗贡 if(m_bHandCardData[bFirst][0]!=0x42&&m_bHandCardData[(bFirst+2)%m_wPlayerCount][0]!=0x42) { CopyMemory(PayTribute.bPayType,m_bPayTribute,sizeof(BYTE)*4); if(m_bHandCardData[bSecond][0]!=0x42) PayTribute.bPayType[bSecond]=0; if(m_bHandCardData[bThree][0]!=0x42) PayTribute.bPayType[bThree]=0; ZeroMemory(m_bPayTribute,sizeof(m_bPayTribute)); m_wCurrentUser = bFirst; } }else if(m_bGameStatus == DAN_XIA) { m_wCurrentUser = INVALID_CHAIR; BYTE bSecond = (m_bRanKing[1]+2)%m_wPlayerCount; //拥有双大王,抗贡 if(m_bHandCardData[bSecond][0]==0x42&&m_bHandCardData[bSecond][1]==0x42) { CopyMemory(PayTribute.bPayType,m_bPayTribute,sizeof(BYTE)*4); ZeroMemory(m_bPayTribute,sizeof(m_bPayTribute)); m_wCurrentUser = m_bRanKing[0]; } }else if(m_bGameStatus == OTHER) { m_wCurrentUser = INVALID_CHAIR; BYTE bSecond = (m_bRanKing[0]+2)%m_wPlayerCount; //拥有双大王,抗贡 if(m_bHandCardData[bSecond][0]==0x42&&m_bHandCardData[bSecond][1]==0x42) { CopyMemory(PayTribute.bPayType,m_bPayTribute,sizeof(BYTE)*4); ZeroMemory(m_bPayTribute,sizeof(m_bPayTribute)); m_wCurrentUser = m_bRanKing[0]; } } //发送扑克 //消息创建 GameStart.wBankerUser = m_wBankerUser; GameStart.wCurrentUser = m_wCurrentUser; GameStart.series = m_bSeries; CopyMemory(GameStart.m_iGameResult,m_iGameResult,sizeof(m_iGameResult)); GameStart.RoomType=enRoomType_Normal; GameStart.wServerType = m_pGameServiceOption->wServerType; for (WORD i=0;i<m_wPlayerCount;i++) { CopyMemory(GameStart.cbCardData,m_bHandCardData[i],sizeof(GameStart.cbCardData)); m_pITableFrame->SendTableData(i,SUB_S_GAME_START,&GameStart,sizeof(GameStart)); m_pITableFrame->SendLookonData(i,SUB_S_GAME_START,&GameStart,sizeof(GameStart)); } //处理进贡 if(m_wCurrentUser==INVALID_CHAIR) { CopyMemory(PayTribute.bPayType,m_bPayTribute,sizeof(BYTE)*4); PayTribute.wCurrentUser = INVALID_CHAIR; PayTribute.bPayStatus = enJin_Gong; PayTribute.wCurrentUser = INVALID_CHAIR; m_pITableFrame->SendTableData(INVALID_CHAIR,SUB_S_PAY_TRIBUTE,&PayTribute,sizeof(PayTribute)); CMD_S_MESSAGE message; IServerUserItem * pIServerUserItem; for(WORD i=0;i<m_wPlayerCount;i++) { if(PayTribute.bPayType[i]==2) { pIServerUserItem=m_pITableFrame->GetServerUserItem(i); _sntprintf(message.szBuffer,sizeof(message.szBuffer),"等待用户 %-s 进贡", pIServerUserItem->GetAccounts()); m_pITableFrame->SendTableData(INVALID_CHAIR,SUB_S_SYSTEM_MESSAGE,&message,sizeof(message)); m_pITableFrame->SendLookonData(INVALID_CHAIR,SUB_S_SYSTEM_MESSAGE,&message,sizeof(message)); } } } //处理抗贡 else if(m_bGameStatus!=0) { PayTribute.bPayStatus=enKang_Gong; m_pITableFrame->SendTableData(INVALID_CHAIR,SUB_S_PAY_TRIBUTE,&PayTribute,sizeof(PayTribute)); m_pITableFrame->SendLookonData(INVALID_CHAIR,SUB_S_PAY_TRIBUTE,&PayTribute,sizeof(PayTribute)); } return true; }