Exemple #1
0
        private static List <int> AIGetPai(LandLordUser myu, List <int> _lastDiscard, int _lastpos)
        {
            List <int> _ret             = new List <int>();
            List <int> _lastDiscardtemp = new List <int>(_lastDiscard);

            if (_lastDiscardtemp == null)
            {
                _lastDiscardtemp = new List <int>();
            }
            if (_lastpos == myu._Pos)
            {
                _lastDiscardtemp = new List <int>();
            }

            _ret = LandLord.GetTipList(myu._shouPaiArr, _lastDiscard);
            if (_ret.Count != 0)
            {
                LordPokerTypeEnum _ltype = LandLord.GetLordType(_ret);
                if (_ltype == LordPokerTypeEnum.Error)
                {
                    TraceLogEx.Error("201702212024 fetal error  " + JsonUtils.Serialize(myu._shouPaiArr) + "tip for" + JsonUtils.Serialize(_lastDiscard) + " LordPokerTypeEnum.Error  :" + JsonUtils.Serialize(_ret));
                }
            }
            return(_ret);
        }
Exemple #2
0
        public void RobotDealMSG(object UserIDandStrMSG)
        {
            object[] objArr = new object[4];
            objArr = (object[])UserIDandStrMSG;
            int    UserID = (int)objArr[0];
            string strMSG = (string)objArr[1];

            _us = (UserStatus)objArr[2];
            myu = (LandLordUser)objArr[3];
            try
            {
                RobotDealMSGEx(UserID, strMSG);
            }
            catch (Exception ex)
            { TraceLogEx.Error(ex, "201611122210ll"); }
        }
Exemple #3
0
        /// <summary>
        /// 摹仿客户端 消息处理  不加锁
        /// </summary>
        /// <param name="UserID"></param>
        /// <param name="strMSG"></param>
        private void RobotDealMSGEx(int UserID, string strMSG)
        {
            sc_base _csdata = JsonUtils.Deserialize <sc_base>(strMSG);

            if (_csdata == null)
            {
                TraceLogEx.Error(" 201206062216ll " + UserID);
                return;
            }

            switch (_csdata.fn)
            {
            case "sc_entertable_n":     //自动 准备
                ////Thread.Sleep(100);
                ////sc_entertable_n _entertable = JsonUtils.Deserialize<sc_entertable_n>(strMSG);
                ////LandLordTable myt001 = LandLordLobby.instance.GetTableByRoomIDandTableID(myu._roomid, myu._tableID);
                ////if (myt001 != null && myu._Pos == _entertable.pos) myt001.GetReady(myu._userid); //  自己的进房间通知才准备
                break;

            case "sc_ready_ll_n":
                break;

            case "sc_tablestart_ll_n":

                break;

            case "sc_cangetbanker_ll":
                Thread.Sleep(1100);
                sc_cangetbanker_ll _cangetbanker    = JsonUtils.Deserialize <sc_cangetbanker_ll>(strMSG);
                LandLordTable      myt_cangetbanker = LandLordLobby.instance.GetTableByRoomIDandTableID(myu._roomid, myu._tableID);

                //默认AI 直接抢庄
                if (myt_cangetbanker != null)
                {
                    if (_cangetbanker.pos == myu._Pos && !_cangetbanker.closefun)
                    {
                        myt_cangetbanker.GetBanker(myu._userid, true);                                                               //抢庄
                    }
                }
                break;

            case "sc_getbanker_ll_n":       //
                break;

            case "sc_canaddrate_ll_n":    //处理自己的加倍情况
                Thread.Sleep(1500);
                sc_canaddrate_ll_n _canaddrate    = JsonUtils.Deserialize <sc_canaddrate_ll_n>(strMSG);
                LandLordTable      myt_canaddrate = LandLordLobby.instance.GetTableByRoomIDandTableID(myu._roomid, myu._tableID);

                //默认AI 直接加倍
                if (myt_canaddrate != null)
                {
                    myt_canaddrate.AddRate(myu._userid, true);     //加倍
                }
                break;

            case "sc_addrate_ll_n":
                break;

            case "sc_candiscard_ll_n":
                Thread.Sleep(700);
                sc_candiscard_ll_n _candiscard    = JsonUtils.Deserialize <sc_candiscard_ll_n>(strMSG);
                LandLordTable      myt_candiscard = LandLordLobby.instance.GetTableByRoomIDandTableID(myu._roomid, myu._tableID);

                //默认AI 直接抢庄
                if (myt_candiscard != null)
                {
                    if (_candiscard.pos == myu._Pos && !_candiscard.closefun)
                    {
                        List <int> _DiscardMine = AIGetPai(myu, _candiscard._lastcard, myt_candiscard._judge._lastDiscardPos);
                        if (!myt_candiscard.DisCard(myu._userid, _DiscardMine))
                        {
                            TraceLogEx.Error("201702212024 fetal error  " + JsonUtils.Serialize(_DiscardMine));
                        }
                    }
                }
                break;

            case "sc_discard_ll_n":
                break;

            case "sc_end_ll_n":
                Thread.Sleep(1400);
                LandLordTable myt0014 = LandLordLobby.instance.GetTableByRoomIDandTableID(myu._roomid, myu._tableID);
                if (myt0014 != null)
                {
                    myt0014.GetReady(myu._userid);                      //
                }
                break;

            case "sc_applyexittable_n":    //AI 都同意所有游戏解散
                Thread.Sleep(900);
                sc_applyexittable_n _applyExit      = JsonUtils.Deserialize <sc_applyexittable_n>(strMSG);
                LandLordTable       _applyexitTable = LandLordLobby.instance.GetTableByRoomIDandTableID(myu._roomid, myu._tableID);
                if (_applyexitTable != null)
                {
                    _applyexitTable.DealExitTable(myu._userid, true);
                }
                break;

            case "sc_dealexittable_n": break;

            case "sc_exittable_n":    //AI 在有人退出的情况下,全都退出

                break;

            case "sc_one_exittable_n": break;

            case "sc_chat_n": break;

            case "sc_disconnect_n": break;

            case "sc_warning_n": break;

            case "020":      //此桌结束了,正常结束
                break;

            default:
                TraceLogEx.Error("201206190957BF AI 未处理,strSID:" + _csdata.fn);
                break;
            }
        }