Example #1
0
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);
		}
	}
}
Example #2
0
//人工智能游戏动作
bool __cdecl CTableFrameSink::OnPerformAIGameAction()
{
	//机器人判断
	IServerUserItem * pIServerUserItem = m_pITableFrame->GetServerUserItem(m_wCurrentUser);
	if(pIServerUserItem == NULL || 
		pIServerUserItem->IsAIUser() == false || 
		pIServerUserItem->GetUserStatus() != US_PLAY)
		return false;
	WORD wChairID = pIServerUserItem->GetChairID();
	if(wChairID == INVALID_CHAIR)
		return false;

	WORD wCurrentWiner=DeduceWiner(0,4);
	//判断当前赢家
	if(wCurrentWiner == wChairID)
	{
	}
	else
	{
		DWORD wGameUser = m_pITableFrame->GetAIKillGameUserChairID();
		//机器人智商-相当几率放弃
		if(wGameUser == wCurrentWiner && CAIUtil::DetectionProbability(m_pGameServiceOption->cbAILevel))
		{
			//发送消息
			OnGameMessage(SUB_C_GIVE_UP, NULL, 0, pIServerUserItem);

			return true;
		}
		else
		{

		}
	}
	//获取金币	
	LONG lTurnMaxGold = 1;
	if (m_bSendCardCount<=2)
	{
		lTurnMaxGold=m_fMaxGold/4L;
		if(lTurnMaxGold <= m_pGameServiceOption->dwCellScore)
		{
			lTurnMaxGold = m_pGameServiceOption->dwCellScore;
		}
	}
	else if (m_bSendCardCount==3) lTurnMaxGold=m_fMaxGold/2L;
	else lTurnMaxGold=m_fMaxGold;

	lTurnMaxGold=lTurnMaxGold-m_fTableGold[wChairID*2+1];
	lTurnMaxGold = __max(lTurnMaxGold,m_fTurnBasicGold);

	lTurnMaxGold = lTurnMaxGold - m_fTurnBasicGold;
	lTurnMaxGold += 1;
	LONG lGold=0;
	if(lTurnMaxGold!=0)
	{
		lGold= (wCurrentWiner == wChairID) ? (((rand() % (LONG)lTurnMaxGold)/2)  + lTurnMaxGold/2): (rand() % ((LONG)lTurnMaxGold)/4);
	}
	else
	{
		//lGold = 1;
	}
	lGold=lGold + m_fTurnBasicGold;
	lGold=__max(lGold,m_fTurnBasicGold);


	//发送数据
	CMD_C_AddGold AddPoint;
	AddPoint.fGold=lGold;
	OnGameMessage(SUB_C_ADD_GOLD,&AddPoint,sizeof(AddPoint), pIServerUserItem);

	return true;
}