示例#1
0
 public void SendAsyncKuaFuMsg()
 {
     lock (this.Mutex)
     {
         foreach (ClientAgent agent in this.ServerId2ClientAgent.Values)
         {
             int sendCount = 0;
             if (agent.KFCallMsg != null && agent.AgentData.MsgQueue.Count > 0)
             {
                 Queue <KFCallMsg> evQ = agent.AgentData.MsgQueue;
                 do
                 {
                     try
                     {
                         KFCallMsg item = evQ.Peek();
                         if (!agent.KFCallMsg(item))
                         {
                             break;
                         }
                         evQ.Dequeue();
                     }
                     catch (Exception ex)
                     {
                         LogManager.WriteException(ex.ToString());
                         break;
                     }
                 }while (evQ.Count > 0 && sendCount++ < 2000);
             }
         }
     }
 }
示例#2
0
        public bool KFCallMsgFunc(KFCallMsg msg)
        {
            try
            {
                switch (msg.KuaFuEventType)
                {
                case 10039:
                {
                    KFStageData data = msg.Get <KFStageData>();
                    if (null != data)
                    {
                        if (data.BoCaiType == BoCaiTypeEnum.Bocai_CaiShuzi)
                        {
                            BoCaiCaiShuZi.GetInstance().SetStageData(data, true);
                        }
                        else if (data.BoCaiType == BoCaiTypeEnum.Bocai_Dice)
                        {
                            BoCaiCaiDaXiao.GetInstance().SetStageData(data, true);
                        }
                    }
                    else
                    {
                        BoCaiCaiDaXiao.GetInstance().SetStageData(data, true);
                        BoCaiCaiShuZi.GetInstance().SetStageData(data, true);
                    }
                    break;
                }

                case 10040:
                {
                    OpenLottery data2 = msg.Get <OpenLottery>();
                    if (null != data2)
                    {
                        if (data2.BocaiType == 2)
                        {
                            BoCaiCaiShuZi.GetInstance().SetOpenLotteryData(data2, false, false);
                        }
                        else if (data2.BocaiType == 1)
                        {
                            BoCaiCaiDaXiao.GetInstance().SetOpenLotteryData(data2, false, true);
                        }
                    }
                    else
                    {
                        BoCaiCaiDaXiao.GetInstance().SetOpenLotteryData(data2, false, true);
                        BoCaiCaiShuZi.GetInstance().SetOpenLotteryData(data2, false, false);
                    }
                    break;
                }
                }
            }
            catch (Exception ex)
            {
                LogManager.WriteLog(LogTypes.Exception, string.Format("[ljl_博彩]跨服消息{0}", ex.ToString()), null, true);
            }
            return(true);
        }
示例#3
0
 public void PostAsyncEvent(KFCallMsg evItem)
 {
     lock (this.Mutex)
     {
         Queue <KFCallMsg> evQ = this.AgentData.MsgQueue;
         evQ.Enqueue(evItem);
         while (evQ.Count > 100000)
         {
             evQ.Dequeue();
         }
     }
 }
示例#4
0
 public void KFBroadCastMsg(KFCallMsg msg)
 {
     if (msg != null)
     {
         lock (this.Mutex)
         {
             foreach (int sid in this.AllKfServerId)
             {
                 this.SendMsg(sid, msg);
             }
         }
     }
 }
示例#5
0
 public void BroadCastMsg(KFCallMsg msg, int srcServerId = 0)
 {
     lock (this.Mutex)
     {
         foreach (int sid in this.ServerId2ClientAgent.Keys)
         {
             if (sid != srcServerId)
             {
                 this.SendMsg(sid, msg);
             }
         }
     }
 }
示例#6
0
 public void SendMsg(int serverId, KFCallMsg msg)
 {
     lock (this.Mutex)
     {
         lock (this.Mutex)
         {
             ClientAgent agent;
             if (this.ServerId2ClientAgent.TryGetValue(serverId, out agent))
             {
                 agent.PostAsyncEvent(msg);
             }
         }
     }
 }
示例#7
0
        private static void ZhanDuiChangeState(EscapeBattle_K.JoinPkData pkData, int state)
        {
            int zhanDuiState = 0;

            if (state >= 5)
            {
                pkData.InGame = false;
                zhanDuiState  = 0;
            }
            pkData.State = zhanDuiState;
            int sid = KuaFuServerManager.GetServerIDFromZoneID(pkData.ZoneId);

            ClientAgentManager.Instance().SendMsg(sid, KFCallMsg.New <int[]>(KuaFuEventTypes.EscapeBattle_GameState, new int[]
            {
                pkData.ZhanDuiID,
                pkData.CurrGameID,
                zhanDuiState
            }));
        }
示例#8
0
 public bool KFCallMsgFunc(KFCallMsg msg)
 {
     try
     {
         int kuaFuEventType = msg.KuaFuEventType;
         if (kuaFuEventType == 10041)
         {
             if (!this.flag)
             {
                 this.receiveStopNum++;
                 TcpCall.TestS2KFCommunication.SendData(1, false);
                 if (this.receiveStopNum % 100 == 0)
                 {
                     Console.ForegroundColor = ConsoleColor.Red;
                     SysConOut.WriteLine(string.Format("结束服务器接收异步消息 {0}", this.receiveStopNum));
                     Console.ForegroundColor = ConsoleColor.White;
                 }
                 return(true);
             }
             string data = msg.Get <string>();
             if (null != data)
             {
                 this.receiveSuNum++;
             }
             else
             {
                 this.receiveErrNum++;
             }
             if (this.receiveErrNum + this.receiveSuNum == 50000)
             {
                 this.endTime = DateTime.Now;
             }
         }
     }
     catch (Exception ex)
     {
         LogManager.WriteLog(LogTypes.Exception, string.Format("[ljl_博彩]跨服消息{0}", ex.ToString()), null, true);
     }
     return(true);
 }
 private static void UpDateTick(object sender)
 {
     try
     {
         char[] ChArray = new char[]
         {
             'A',
             'B',
             'C',
             'D',
             'E',
             'F',
             'G',
             'H',
             'J',
             'K',
             'L',
             'M',
             'N',
             'P',
             'Q',
             'R',
             'S',
             'T',
             'W',
             'V',
             'U',
             'X',
             'Y',
             'Z'
         };
         string str = "";
         for (int i = 0; i < (int)sender; i++)
         {
             str += ChArray[i % ChArray.Length];
         }
         long allnum = 0L;
         long sunum  = 0L;
         while (TestS2KFCommunication.Flag)
         {
             allnum += 1L;
             if (allnum > 50000L)
             {
                 break;
             }
             try
             {
                 ClientAgentManager.Instance().BroadCastMsg(KFCallMsg.New <string>(KuaFuEventTypes.Test, str), 0);
                 sunum += 1L;
             }
             catch (Exception ex)
             {
                 LogManager.WriteException(ex.ToString());
                 Console.WriteLine("UpDateTick Exception");
             }
         }
         Console.WriteLine(string.Format("发送allnum={0}, sunum={1}", allnum - 1L, sunum));
     }
     catch (Exception ex)
     {
         LogManager.WriteException(ex.ToString());
         Console.WriteLine("UpDateTick Exception");
     }
 }
示例#10
0
 public void KFSendStageData()
 {
     ClientAgentManager.Instance().BroadCastMsg(KFCallMsg.New <KFStageData>(KuaFuEventTypes.BoCaiStageChange, this.GetKFStageData()), 0);
 }
示例#11
0
 public void KFSendPeriodsData()
 {
     ClientAgentManager.Instance().BroadCastMsg(KFCallMsg.New <OpenLottery>(KuaFuEventTypes.BoCaiPeriodsData, this.GetOpenLottery()), 0);
 }
示例#12
0
        private static bool CreateGameFuBen(DateTime now, params EscapeBattle_K.JoinPkData[] joinArr)
        {
            for (int side = 1; side <= joinArr.Length; side++)
            {
                joinArr[side - 1].Side = side;
                if (joinArr[side - 1].InGame)
                {
                    return(true);
                }
            }
            int toServerId = 0;
            int gameId     = TianTiPersistence.Instance.GetNextGameId();

            if (ClientAgentManager.Instance().AssginKfFuben(EscapeBattle_K.GameType, (long)gameId, 10, out toServerId))
            {
                EscapeBattleFuBenData copyData = new EscapeBattleFuBenData();
                copyData.GameID   = (long)gameId;
                copyData.ServerID = toServerId;
                EscapeBattleNtfEnterData data = new EscapeBattleNtfEnterData();
                data.ToServerId = toServerId;
                data.GameId     = gameId;
                EscapeBattlePkLogData log = new EscapeBattlePkLogData();
                log.Season     = EscapeBattle_K.SyncData.Season;
                log.StartTime  = now;
                log.GameID     = gameId;
                log.ToServerID = toServerId;
                EscapeBattleMatchConfig config = EscapeBattle_K._Config.MatchConfigList[0];
                log.EndTime = now.AddSeconds((double)config.TotalSecs);
                foreach (EscapeBattle_K.JoinPkData joinRole in joinArr)
                {
                    copyData.SideDict[(long)joinRole.ZhanDuiID] = joinRole.Side;
                    copyData.RoleDict.AddRange(TianTi5v5Service.GetZhanDuiMemberIDs(joinRole.ZhanDuiID));
                    joinRole.ToServerID = toServerId;
                    joinRole.CurrGameID = gameId;
                    joinRole.CopyData   = copyData;
                    joinRole.InGame     = true;
                    data.ZhanDuiIDList.Add(joinRole.ZhanDuiID);
                    log.ZhanDuiIDs.Add(joinRole.ZhanDuiID);
                    log.ZoneIDs.Add(joinRole.ZoneId);
                    log.ZhanDuiNames.Add(joinRole.ZhanDuiName);
                    EscapeBattle_K.JoinPkData zhandui;
                    if (EscapeBattle_K.JoinDict.TryGetValue(joinRole.ZhanDuiID, out zhandui))
                    {
                        zhandui.InGame     = true;
                        zhandui.CurrGameID = gameId;
                        zhandui.Side       = joinRole.Side;
                        zhandui.ToServerID = toServerId;
                        zhandui.CopyData   = copyData;
                        zhandui.State      = 3;
                        zhandui.ReadyState = false;
                        zhandui.ReadyNum   = 0;
                    }
                }
                EscapeBattle_K.AsyncEvQ.Enqueue(KFCallMsg.New <EscapeBattleNtfEnterData>(KuaFuEventTypes.EscapeBattle_NotifyEnter, data));
                EscapeBattle_K.ThisLoopPkLogs[gameId] = log;
                if (!EscapeBattle_K.NeedUpdateRank)
                {
                    EscapeBattle_K.NeedUpdateRank = true;
                }
                LogManager.WriteLog(LogTypes.Trace, string.Format("大逃杀第{0}赛季战队成员通知入场,GameID={1},zhanduiIDs={2}", EscapeBattle_K.SyncData.Season, data.GameId, string.Join <int>(",", log.ZhanDuiIDs)), null, true);
                return(true);
            }
            LogManager.WriteLog(LogTypes.Warning, string.Format("大逃杀第{0}赛季分配游戏服务器失败", EscapeBattle_K.SyncData.Season), null, true);
            return(false);
        }
示例#13
0
        private static bool CreateGameFuBen(DateTime now, ZhanDuiZhengBaMatchConfig matchConfig, ZhanDuiZhengBa_K.JoinRolePkData joinRole1, ZhanDuiZhengBa_K.JoinRolePkData joinRole2)
        {
            bool result;

            if (joinRole1.CurrGameID > 0)
            {
                result = true;
            }
            else
            {
                int betterZhanDuiID = (joinRole1.Rank < joinRole2.Rank) ? joinRole1.ZhanDuiID : joinRole2.ZhanDuiID;
                int toServerId      = 0;
                int gameId          = TianTiPersistence.Instance.GetNextGameId();
                if (ClientAgentManager.Instance().AssginKfFuben(ZhanDuiZhengBa_K.GameType, (long)gameId, 10, out toServerId))
                {
                    ZhanDuiZhengBaFuBenData copyData = new ZhanDuiZhengBaFuBenData();
                    copyData.GameID = (long)gameId;
                    copyData.SideDict[(long)joinRole1.ZhanDuiID] = 1;
                    copyData.SideDict[(long)joinRole2.ZhanDuiID] = 2;
                    copyData.BetterZhanDuiID = betterZhanDuiID;
                    copyData.ConfigID        = matchConfig.ID;
                    copyData.JoinGrade       = (int)matchConfig.JoinGrade;
                    copyData.NewGrade        = (int)matchConfig.WillUpGrade;
                    copyData.ServerID        = toServerId;
                    copyData.RoleDict.AddRange(TianTi5v5Service.GetZhanDuiMemberIDs(joinRole1.ZhanDuiID));
                    if (joinRole1.ZhanDuiID != joinRole2.ZhanDuiID)
                    {
                        copyData.RoleDict.AddRange(TianTi5v5Service.GetZhanDuiMemberIDs(joinRole2.ZhanDuiID));
                    }
                    joinRole1.ToServerID   = (joinRole2.ToServerID = toServerId);
                    joinRole1.CurrGameID   = (joinRole2.CurrGameID = gameId);
                    joinRole1.CopyData     = (joinRole2.CopyData = copyData);
                    joinRole1.WaitReqEnter = (joinRole2.WaitReqEnter = true);
                    ZhanDuiZhengBaNtfEnterData data = new ZhanDuiZhengBaNtfEnterData();
                    data.ZhanDuiID1 = joinRole1.ZhanDuiID;
                    data.ZhanDuiID2 = joinRole2.ZhanDuiID;
                    data.ToServerId = toServerId;
                    data.GameId     = gameId;
                    data.Day        = ZhanDuiZhengBa_K.SyncData.RealActID;
                    ZhanDuiZhengBa_K.AsyncEvQ.Enqueue(KFCallMsg.New <ZhanDuiZhengBaNtfEnterData>(KuaFuEventTypes.ZhanDuiZhengBa_NotifyEnter, data));
                    LogManager.WriteLog(LogTypes.Info, string.Format("战队争霸第{0}轮战队成员通知入场,zhanduiID1={1},zhanduiID2={2}", ZhanDuiZhengBa_K.SyncData.RealActID, joinRole1.ZhanDuiID, joinRole2.ZhanDuiID), null, true);
                    ZhanDuiZhengBaPkLogData log = new ZhanDuiZhengBaPkLogData();
                    log.Month           = ZhanDuiZhengBa_K.SyncData.Month;
                    log.ID              = ZhanDuiZhengBa_K.SyncData.RealActID;
                    log.ZhanDuiID1      = joinRole1.ZhanDuiID;
                    log.ZoneID1         = joinRole1.ZoneId;
                    log.ZhanDuiName1    = joinRole1.RoleName;
                    log.ZhanDuiID2      = joinRole2.ZhanDuiID;
                    log.ZoneID2         = joinRole2.ZoneId;
                    log.ZhanDuiName2    = joinRole2.RoleName;
                    log.StartTime       = now;
                    log.BetterZhanDuiID = betterZhanDuiID;
                    log.GameID          = (long)gameId;
                    ZhanDuiZhengBa_K.ThisLoopPkLogs[gameId] = log;
                    result = true;
                }
                else
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("战队争霸第{0}轮分配游戏服务器失败,zhanduiID1={1},zhanduiID2={2}", ZhanDuiZhengBa_K.SyncData.RealActID, joinRole1.ZhanDuiID, joinRole2.ZhanDuiID), null, true);
                    result = false;
                }
            }
            return(result);
        }