Beispiel #1
0
 public static int _M2(AutoCSer.Net.TcpInternalServer.ServerSocketSender _sender_, int zhanDuiID, int gameId, int srcServerID, out EscapeBattleFuBenData copyData)
 {
     return(EscapeBattle_K.ZhengBaKuaFuLogin(_sender_, zhanDuiID, gameId, srcServerID, out copyData));
 }
Beispiel #2
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);
        }
Beispiel #3
0
        public static int ZhengBaKuaFuLogin(AutoCSer.Net.TcpInternalServer.ServerSocketSender socket, int zhanDuiID, int gameId, int srcServerID, out EscapeBattleFuBenData copyData)
        {
            copyData = null;
            lock (EscapeBattle_K.Mutex)
            {
                EscapeBattle_K.JoinPkData roleData;
                if (!EscapeBattle_K.JoinDict.TryGetValue(zhanDuiID, out roleData) || roleData.CurrGameID == 0)
                {
                    return(-4006);
                }
                EscapeBattlePkLogData logData = null;
                if (!EscapeBattle_K.ThisLoopPkLogs.TryGetValue(roleData.CurrGameID, out logData))
                {
                    return(-4006);
                }
                copyData = roleData.CopyData;
            }
            KuaFuServerInfo serverInfo = KuaFuServerManager.GetKuaFuServerInfo(srcServerID);
            int             result;

            if (null != serverInfo)
            {
                copyData.IPs = new string[]
                {
                    serverInfo.DbIp,
                    serverInfo.DbIp
                };
                copyData.Ports = new int[]
                {
                    serverInfo.DbPort,
                    serverInfo.LogDbPort
                };
                result = 0;
            }
            else
            {
                result = -11000;
            }
            return(result);
        }
Beispiel #4
0
            public static ReturnValue <int> ZhengBaKuaFuLogin(int zhanDuiID, int gameId, int srcServerID, out EscapeBattleFuBenData copyData)
            {
                AutoWaitReturnValue <KfCall._p4> _wait_ = AutoWaitReturnValue <KfCall._p4> .Pop();

                try
                {
                    AutoCSer.Net.TcpInternalServer.ClientSocketSender _socket_ = KfCall.TcpClient.Sender;
                    if (_socket_ != null)
                    {
                        KfCall._p3 _inputParameter_ = new KfCall._p3
                        {
                            p1 = zhanDuiID,
                            p2 = gameId,
                            p3 = srcServerID
                        };
                        KfCall._p4 _outputParameter_ = default(KfCall._p4);
                        ReturnType _returnType_      = _socket_.WaitGet <KfCall._p3, KfCall._p4>(TcpCall.EscapeBattle_K._c2, ref _wait_, ref _inputParameter_, ref _outputParameter_);
                        copyData = _outputParameter_.p0;
                        return(new ReturnValue <int>
                        {
                            Type = _returnType_,
                            Value = _outputParameter_.Return
                        });
                    }
                }
                finally
                {
                    if (_wait_ != null)
                    {
                        AutoWaitReturnValue <KfCall._p4> .PushNotNull(_wait_);
                    }
                }
                copyData = null;
                return(new ReturnValue <int>
                {
                    Type = ReturnType.ClientException
                });
            }