woaidaima2016 发表于 2017-6-13 11:27:34

新百家乐-控制+机器人【源码】

http://img.woaidaima.com//upload/image/20170519/1495154926512066206.jpghttp://img.woaidaima.com//upload/image/20170519/1495154928141026826.jpg#include "StdAfx.h"
#include "servercontrolitemsink.h"

//////////////////////////////////////////////////////////////////////////
//替代结构
struct tagReplaceCard
{
    BYTE                            cbCardCount;                        //扑克数目
    BYTE                            cbTableCardArray;                //桌面扑克
};

//庄对子
tagReplaceCard CardBankerPairCard[]=
{
    3,3,0x1b,0x25,0x37,0x01,0x11,0x18,
      3,3,0x1c,0x24,0x37,0x01,0x11,0x14,
      3,3,0x25,0x39,0x3b,0x01,0x11,0x19,
      3,3,0x1c,0x2b,0x3a,0x01,0x11,0x18,
      3,2,0x1c,0x25,0x2a,0x03,0x13,0x00,
      3,2,0x34,0x36,0x3a,0x02,0x22,0x00,
      3,2,0x35,0x3a,0x3d,0x02,0x12,0x00,
      3,2,0x26,0x28,0x31,0x02,0x22,0x00,
      3,3,0x22,0x29,0x2c,0x06,0x16,0x1c,
      3,3,0x35,0x3b,0x3c,0x06,0x16,0x32,
      3,3,0x2b,0x34,0x3a,0x06,0x16,0x1d,
      3,2,0x32,0x33,0x39,0x07,0x17,0x00,
      3,3,0x2c,0x33,0x3c,0x0b,0x1b,0x2b,
      3,3,0x34,0x36,0x3c,0x0a,0x2a,0x2b,
      3,3,0x2d,0x32,0x3a,0x0a,0x1a,0x23,
      3,3,0x2d,0x34,0x37,0x0b,0x1b,0x24
};

//庄家代替
tagReplaceCard CardBankerWinCard[]=
{
    2,3,0x25,0x31,0x00,0x01,0x02,0x04,
      3,3,0x09,0x22,0x32,0x01,0x02,0x03,
      3,3,0x18,0x23,0x2c,0x01,0x02,0x0a,
      3,3,0x2b,0x2d,0x35,0x01,0x02,0x04,
      3,3,0x2d,0x32,0x39,0x03,0x09,0x13,
      3,3,0x1a,0x24,0x3d,0x03,0x0a,0x13,
      3,3,0x29,0x32,0x3c,0x03,0x09,0x13,
      3,3,0x2c,0x32,0x39,0x03,0x0a,0x12,
      3,2,0x21,0x24,0x39,0x06,0x0c,0x00,
      3,2,0x1b,0x31,0x3c,0x06,0x0c,0x00,
      3,3,0x1d,0x2b,0x36,0x06,0x0c,0x11,
      3,2,0x2c,0x32,0x3a,0x06,0x0b,0x00,
      3,2,0x1b,0x1d,0x3b,0x0b,0x16,0x00,
      2,3,0x25,0x31,0x00,0x0b,0x15,0x22,
      3,2,0x23,0x29,0x3a,0x0b,0x14,0x00,
      3,2,0x25,0x2d,0x35,0x0b,0x16,0x00
};

//庄天王
tagReplaceCard CardBankerKingCard[]=
{
    2,3,0x25,0x32,0x00,0x01,0x02,0x16,
      3,3,0x23,0x2b,0x39,0x01,0x02,0x06,
      3,3,0x15,0x17,0x35,0x01,0x02,0x05,
      3,3,0x14,0x16,0x37,0x01,0x02,0x05,
      2,2,0x28,0x36,0x00,0x03,0x06,0x00,
      2,2,0x2c,0x34,0x00,0x03,0x06,0x00,
      2,2,0x16,0x27,0x00,0x03,0x06,0x00,
      2,2,0x14,0x1a,0x00,0x03,0x06,0x00,
      2,3,0x37,0x3a,0x00,0x07,0x13,0x29,
      2,2,0x2b,0x36,0x00,0x07,0x12,0x00,
      2,2,0x28,0x29,0x00,0x07,0x12,0x00,
      3,3,0x23,0x2c,0x39,0x07,0x13,0x18,
      2,2,0x1c,0x24,0x00,0x0a,0x19,0x00,
      2,2,0x34,0x3b,0x00,0x0a,0x19,0x00,
      2,2,0x25,0x27,0x00,0x0a,0x19,0x00,
      2,2,0x29,0x36,0x00,0x0a,0x18,0x00
};

//平
tagReplaceCard CardEqualCard[]=
{
    2,2,0x1d,0x26,0x00,0x01,0x05,0x00,
      3,3,0x15,0x1c,0x29,0x01,0x02,0x11,
      2,2,0x15,0x21,0x00,0x01,0x05,0x00,
      2,2,0x1c,0x26,0x00,0x01,0x05,0x00,
      3,3,0x1a,0x25,0x39,0x03,0x0c,0x11,
      3,3,0x21,0x24,0x39,0x03,0x0c,0x11,
      3,3,0x2a,0x34,0x37,0x03,0x09,0x29,
      3,3,0x0b,0x32,0x3a,0x03,0x09,0x0a,
      2,2,0x1c,0x27,0x00,0x06,0x11,0x00,
      2,2,0x17,0x1a,0x00,0x06,0x11,0x00,
      2,2,0x21,0x25,0x00,0x06,0x1c,0x00,
      2,2,0x36,0x3b,0x00,0x06,0x0c,0x00,
      3,3,0x32,0x38,0x3a,0x0b,0x1c,0x1d,
      3,3,0x26,0x27,0x33,0x0b,0x14,0x22,
      3,3,0x14,0x19,0x1d,0x0c,0x11,0x12,
      3,3,0x2b,0x2d,0x34,0x0b,0x13,0x21
};

//同点平
tagReplaceCard CardSamePointCard[]=
{
    2,2,0x21,0x35,0x00,0x01,0x05,0x00,
      2,2,0x22,0x24,0x00,0x02,0x04,0x00,
      2,2,0x11,0x15,0x00,0x01,0x05,0x00,
      2,2,0x11,0x15,0x00,0x01,0x05,0x00,
      3,3,0x23,0x2b,0x3a,0x03,0x0b,0x1a,
      2,2,0x16,0x1a,0x00,0x06,0x0a,0x00,
      3,3,0x13,0x28,0x39,0x03,0x08,0x09,
      2,2,0x26,0x2c,0x00,0x06,0x0c,0x00,
      2,2,0x29,0x38,0x00,0x09,0x18,0x00,
      2,2,0x38,0x39,0x00,0x08,0x09,0x00,
      3,3,0x29,0x31,0x32,0x09,0x21,0x22,
      2,2,0x38,0x39,0x00,0x08,0x19,0x00,
      2,2,0x27,0x2b,0x00,0x17,0x1b,0x00,
      2,2,0x26,0x2c,0x00,0x16,0x1c,0x00,
      3,3,0x2b,0x32,0x35,0x1b,0x22,0x25,
      2,2,0x32,0x35,0x00,0x12,0x15,0x00
};

//闲对子
tagReplaceCard CardPlayerPairCard[]=
{
    3,3,0x05,0x25,0x3a,0x01,0x02,0x03,
      2,2,0x08,0x28,0x00,0x01,0x05,0x00,
      3,2,0x07,0x17,0x21,0x01,0x03,0x00,
      3,2,0x17,0x27,0x2d,0x01,0x06,0x00,
      3,3,0x25,0x35,0x3c,0x03,0x09,0x15,
      3,3,0x2a,0x3a,0x3d,0x03,0x08,0x14,
      3,3,0x1c,0x2c,0x34,0x03,0x07,0x12,
      3,3,0x21,0x31,0x34,0x03,0x11,0x13,
      2,2,0x23,0x33,0x00,0x06,0x0a,0x00,
      3,2,0x1a,0x2a,0x32,0x06,0x09,0x00,
      3,2,0x17,0x27,0x32,0x05,0x0d,0x00,
      3,2,0x25,0x35,0x3b,0x06,0x0a,0x00,
      2,3,0x28,0x38,0x00,0x0b,0x13,0x17,
      3,3,0x1b,0x2b,0x3c,0x0b,0x0c,0x13,
      3,3,0x21,0x31,0x3b,0x0a,0x13,0x14,
      3,3,0x1c,0x2c,0x32,0x0a,0x0b,0x0c
};

//闲
tagReplaceCard CardPlayerWinCard[]=
{
    3,3,0x09,0x15,0x29,0x01,0x02,0x07,
      3,3,0x0c,0x23,0x2a,0x01,0x02,0x08,
      2,3,0x0d,0x16,0x00,0x01,0x02,0x07,
      2,3,0x11,0x26,0x00,0x01,0x02,0x07,
      3,3,0x26,0x27,0x2a,0x03,0x09,0x0c,
      2,3,0x32,0x34,0x00,0x03,0x08,0x21,
      3,3,0x19,0x32,0x36,0x03,0x08,0x15,
      2,3,0x17,0x19,0x00,0x03,0x08,0x13,
      2,3,0x29,0x38,0x00,0x05,0x18,0x21,
      3,3,0x2b,0x2c,0x36,0x05,0x1a,0x1d,
      2,3,0x2a,0x37,0x00,0x05,0x1b,0x28,
      2,3,0x2c,0x37,0x00,0x05,0x1c,0x1d,
      3,3,0x24,0x27,0x36,0x0b,0x16,0x18,
      3,3,0x2b,0x31,0x36,0x0b,0x16,0x18,
      3,2,0x23,0x32,0x3d,0x0b,0x14,0x00,
      2,2,0x2a,0x37,0x00,0x0b,0x16,0x00
};
//闲天王
tagReplaceCard CardPlayerKingCard[]=
{
    2,2,0x14,0x25,0x00,0x01,0x02,0x00,
      2,2,0x14,0x35,0x00,0x01,0x02,0x00,
      3,3,0x0a,0x25,0x34,0x01,0x02,0x03,
      3,2,0x28,0x33,0x38,0x01,0x02,0x00,
      2,2,0x24,0x35,0x00,0x03,0x09,0x00,
      2,2,0x13,0x16,0x00,0x03,0x09,0x00,
      2,2,0x18,0x21,0x00,0x03,0x09,0x00,
      2,2,0x28,0x2d,0x00,0x03,0x08,0x00,
      2,2,0x19,0x1b,0x00,0x06,0x09,0x00,
      2,2,0x15,0x23,0x00,0x06,0x09,0x00,
      2,2,0x19,0x1a,0x00,0x06,0x09,0x00,
      2,2,0x1a,0x28,0x00,0x06,0x09,0x00,
      3,3,0x19,0x22,0x37,0x0b,0x14,0x16,
      3,2,0x1d,0x21,0x38,0x0b,0x13,0x00,
      3,3,0x34,0x36,0x39,0x0b,0x13,0x28,
      2,2,0x29,0x2d,0x00,0x0b,0x13,0x00
};
//////////////////////////////////////////////////////////////////////////

//
CServerControlItemSink::CServerControlItemSink(void)
{
    //控制变量
    m_cbWinSideControl=0;
    m_nSendCardCount=0;
    m_cbExcuteTimes = 0;
}

CServerControlItemSink::~CServerControlItemSink( void )
{

}

//服务器控制
bool __cdecl CServerControlItemSink::ServerControl(WORD wSubCmdID, const void * pDataBuffer, WORD wDataSize, IServerUserItem * pIServerUserItem, ITableFrame * pITableFrame)
{
    //如果不具有管理员权限 则返回错误
    if( !CUserRight::IsGameCheatUser(pIServerUserItem->GetUserRight()) )
      return false;

    const CMD_C_AdminReq* AdminReq=static_cast(pDataBuffer);
    switch(AdminReq->cbReqType)
    {
    case RQ_RESET_CONTROL:
      {
            m_cbWinSideControl=0;
            m_cbExcuteTimes=0;
            CMD_S_CommandResult cResult;
            cResult.cbAckType=ACK_RESET_CONTROL;
            cResult.cbResult=CR_ACCEPT;
            pITableFrame->SendUserItemData(pIServerUserItem,SUB_S_AMDIN_COMMAND,&cResult,sizeof(CMD_S_CommandResult));
            break;
      }
    case RQ_SET_WIN_AREA:
      {
            if(AdminReq->cbExtendData>0&&AdminReq->cbExtendData<=8)
            {
                m_cbWinSideControl=AdminReq->cbExtendData;
                m_cbExcuteTimes=AdminReq->cbExtendData;
                CMD_S_CommandResult cResult;
                cResult.cbAckType=ACK_SET_WIN_AREA;
                cResult.cbResult=CR_ACCEPT;
                pITableFrame->SendUserItemData(pIServerUserItem,SUB_S_AMDIN_COMMAND,&cResult,sizeof(CMD_S_CommandResult));
            }
            else
            {
                CMD_S_CommandResult cResult;
                cResult.cbAckType=ACK_SET_WIN_AREA;
                cResult.cbResult=CR_REFUSAL;
                pITableFrame->SendUserItemData(pIServerUserItem,SUB_S_AMDIN_COMMAND,&cResult,sizeof(CMD_S_CommandResult));

            }
            break;
      }
    case RQ_PRINT_SYN:
      {
            CMD_S_CommandResult cResult;
            cResult.cbAckType=ACK_PRINT_SYN;
            cResult.cbResult=CR_ACCEPT;
            cResult.cbExtendData=m_cbWinSideControl;
            cResult.cbExtendData=m_cbExcuteTimes;
            pITableFrame->SendUserItemData(pIServerUserItem,SUB_S_AMDIN_COMMAND,&cResult,sizeof(CMD_S_CommandResult));
            break;
      }

    }

    return true;
}

//需要控制
bool __cdecl CServerControlItemSink::NeedControl()
{
    if (m_cbWinSideControl > 0 && m_cbWinSideControl <= 8="" m_cbexcutetimes=""> 0)
    {
      return true;
    }
    return false;
   
}

//返回控制区域
bool __cdecl CServerControlItemSink::ControlResult(BYTE    cbTableCardArray[], BYTE cbCardCount[])
{
    switch(m_cbWinSideControl)
    {
    case 1:
      {
            //闲对子
            BYTE cbIndex=rand()%CountArray(CardPlayerPairCard);
            CopyMemory(cbCardCount,CardPlayerPairCard.cbCardCount,sizeof(BYTE)*2);
            CopyMemory(cbTableCardArray,CardPlayerPairCard.cbTableCardArray,sizeof(CardPlayerPairCard.cbTableCardArray));
            break;
      }
    case 2:
      {
            //闲
            BYTE cbIndex=rand()%CountArray(CardPlayerWinCard);
            CopyMemory(cbCardCount,CardPlayerWinCard.cbCardCount,sizeof(BYTE)*2);
            CopyMemory(cbTableCardArray,CardPlayerWinCard.cbTableCardArray,sizeof(CardPlayerWinCard.cbTableCardArray));
            break;
      }
    case 3:
      {
            //闲天王
            BYTE cbIndex=rand()%CountArray(CardPlayerKingCard);
            CopyMemory(cbCardCount,CardPlayerKingCard.cbCardCount,sizeof(BYTE)*2);
            CopyMemory(cbTableCardArray,CardPlayerKingCard.cbTableCardArray,sizeof(CardPlayerKingCard.cbTableCardArray));
            break;
      }
    case 4:
      {
            //平家胜利
            BYTE cbIndex=rand()%CountArray(CardEqualCard);
            CopyMemory(cbCardCount,CardEqualCard.cbCardCount,sizeof(BYTE)*2);
            CopyMemory(cbTableCardArray,CardEqualCard.cbTableCardArray,sizeof(CardEqualCard.cbTableCardArray));
            break;
      }
    case 5:
      {
            //同点平
            BYTE cbIndex=rand()%CountArray(CardSamePointCard);
            CopyMemory(cbCardCount,CardSamePointCard.cbCardCount,sizeof(BYTE)*2);
            CopyMemory(cbTableCardArray,CardSamePointCard.cbTableCardArray,sizeof(CardSamePointCard.cbTableCardArray));
            break;
      }
    case 6:
      {
            //庄对子
            BYTE cbIndex=rand()%CountArray(CardBankerPairCard);
            CopyMemory(cbCardCount,CardBankerPairCard.cbCardCount,sizeof(BYTE)*2);
            CopyMemory(cbTableCardArray,CardBankerPairCard.cbTableCardArray,sizeof(CardBankerPairCard.cbTableCardArray));
            break;
      }
    case 7:
      {
            //庄家胜利
            BYTE cbIndex=rand()%CountArray(CardBankerWinCard);
            CopyMemory(cbCardCount,CardBankerWinCard.cbCardCount,sizeof(BYTE)*2);
            CopyMemory(cbTableCardArray,CardBankerWinCard.cbTableCardArray,sizeof(CardBankerWinCard.cbTableCardArray));
            break;
      }
    case 8:
      {
            //庄天王
            BYTE cbIndex=rand()%CountArray(CardBankerKingCard);
            CopyMemory(cbCardCount,CardBankerKingCard.cbCardCount,sizeof(BYTE)*2);
            CopyMemory(cbTableCardArray,CardBankerKingCard.cbTableCardArray,sizeof(CardBankerKingCard.cbTableCardArray));
            break;
      }
    default:ASSERT(FALSE); return false;
    }

    m_cbExcuteTimes--;
    return true;
}
页: [1]
查看完整版本: 新百家乐-控制+机器人【源码】