Example #1
0
        public static int ZhengBaRequestEnter(int zhanDuiID, out int gameId, out int kuaFuServerID, out string[] ips, out int[] ports)
        {
            gameId        = 0;
            kuaFuServerID = 0;
            ips           = null;
            ports         = null;
            lock (ZhanDuiZhengBa_K.Mutex)
            {
                if (ZhanDuiZhengBa_K.StateMachine.GetCurrState() != 5)
                {
                    if (!Consts.TestMode || ZhanDuiZhengBa_K.StateMachine.GetCurrState() != 6)
                    {
                        return(-2001);
                    }
                }
                ZhanDuiZhengBa_K.JoinRolePkData roleData = ZhanDuiZhengBa_K.TodayJoinRoleDatas.Find((ZhanDuiZhengBa_K.JoinRolePkData _r) => _r.ZhanDuiID == zhanDuiID);
                if (roleData == null || roleData.CurrGameID == 0)
                {
                    return(-4006);
                }
                ZhanDuiZhengBaPkLogData logData = null;
                ZhanDuiZhengBa_K.ThisLoopPkLogs.TryGetValue(roleData.CurrGameID, out logData);
                if (roleData == null || logData == null)
                {
                    return(-4006);
                }
                if (!roleData.WaitReqEnter)
                {
                    return(-2001);
                }
                gameId        = roleData.CurrGameID;
                kuaFuServerID = roleData.ToServerID;
            }
            KuaFuServerInfo serverInfo = KuaFuServerManager.GetKuaFuServerInfo(kuaFuServerID);
            int             result;

            if (null != serverInfo)
            {
                ips = new string[]
                {
                    serverInfo.Ip
                };
                ports = new int[]
                {
                    serverInfo.Port
                };
                result = 0;
            }
            else
            {
                result = -11001;
            }
            return(result);
        }
Example #2
0
        public static int ZhengBaKuaFuLogin(AutoCSer.Net.TcpInternalServer.ServerSocketSender socket, int zhanDuiID, int gameId, int srcServerID, out ZhanDuiZhengBaFuBenData copyData)
        {
            copyData = null;
            lock (ZhanDuiZhengBa_K.Mutex)
            {
                ZhanDuiZhengBa_K.JoinRolePkData roleData = ZhanDuiZhengBa_K.TodayJoinRoleDatas.Find((ZhanDuiZhengBa_K.JoinRolePkData _r) => _r.ZhanDuiID == zhanDuiID && _r.CurrGameID == gameId);
                ZhanDuiZhengBaPkLogData         logData  = null;
                ZhanDuiZhengBa_K.ThisLoopPkLogs.TryGetValue(gameId, out logData);
                if (roleData == null || logData == null)
                {
                    return(-12);
                }
                if (!roleData.WaitReqEnter)
                {
                    return(-12);
                }
                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);
        }
        public bool SavePkLog(ZhanDuiZhengBaPkLogData log)
        {
            bool result;

            if (log == null)
            {
                result = false;
            }
            else
            {
                try
                {
                    string sql = string.Format("INSERT INTO t_zhandui_zhengba_pk_log(month,id,zhanduiid1,zoneid1,zhanduiname1,zhanduiid2,zoneid2,zhanduiname2,result,upgrade,starttime,endtime) VALUES({0},{1},{2},{3},'{4}',{5},{6},'{7}',{8},{9},'{10}','{11}');", new object[]
                    {
                        log.Month,
                        log.ID,
                        log.ZhanDuiID1,
                        log.ZoneID1,
                        log.ZhanDuiName1,
                        log.ZhanDuiID2,
                        log.ZoneID2,
                        log.ZhanDuiName2,
                        log.PkResult,
                        log.UpGrade ? 1 : 0,
                        log.StartTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        log.EndTime.ToString("yyyy-MM-dd HH:mm:ss")
                    });
                    TianTiPersistence.Instance.AddDelayWriteSql(sql, null, null);
                }
                catch (Exception ex)
                {
                    LogManager.WriteLog(LogTypes.Error, "SavePkLog failed!", ex, true);
                    return(false);
                }
                result = true;
            }
            return(result);
        }
Example #4
0
        public static List <ZhanDuiZhengBaNtfPkResultData> ZhengBaPkResult(int gameId, int winner1)
        {
            List <ZhanDuiZhengBaNtfPkResultData> result;

            lock (ZhanDuiZhengBa_K.Mutex)
            {
                LogManager.WriteLog(LogTypes.Trace, string.Format("ZhanDuiZhengBa::ZhengBaPkResult,gameid={0},winner1={1}", gameId, winner1), null, true);
                ZhanDuiZhengBaPkLogData log = null;
                if (!ZhanDuiZhengBa_K.ThisLoopPkLogs.TryGetValue(gameId, out log))
                {
                    result = null;
                }
                else if (winner1 != log.ZhanDuiID1 && winner1 != log.ZhanDuiID2)
                {
                    result = null;
                }
                else
                {
                    ZhanDuiZhengBaMatchConfig       matchConfig   = ZhanDuiZhengBa_K._Config.MatchConfigList.Find((ZhanDuiZhengBaMatchConfig _m) => _m.ID == log.ID);
                    ZhanDuiZhengBa_K.JoinRolePkData winJoinRole   = ZhanDuiZhengBa_K.TodayJoinRoleDatas.Find((ZhanDuiZhengBa_K.JoinRolePkData _r) => _r.ZhanDuiID == winner1 && _r.CurrGameID == gameId);
                    ZhanDuiZhengBa_K.JoinRolePkData faildJoinRole = ZhanDuiZhengBa_K.TodayJoinRoleDatas.Find((ZhanDuiZhengBa_K.JoinRolePkData _r) => _r.ZhanDuiID != winner1 && _r.CurrGameID == gameId);
                    if (faildJoinRole != null && winJoinRole != null && faildJoinRole.ZhanDuiID != winJoinRole.ZhanDuiID)
                    {
                        ZhanDuiZhengBaZhanDuiData roleData = ZhanDuiZhengBa_K.SyncData.ZhanDuiList.Find((ZhanDuiZhengBaZhanDuiData _r) => _r.ZhanDuiID == faildJoinRole.ZhanDuiID);
                        if (roleData != null)
                        {
                            int newState = 2;
                            LogManager.WriteLog(LogTypes.Trace, string.Format("ZhanDuiZhengBa::ZhengBaPkResult,gameid={0},zhanduiid={1},newstate={2}", gameId, roleData.ZhanDuiID, newState), null, true);
                            if (ZhanDuiZhengBa_K.Persistence.UpdateRole(ZhanDuiZhengBa_K.SyncData.Month, roleData.ZhanDuiID, roleData.Grade, newState))
                            {
                                roleData.State = newState;
                                ZhanDuiZhengBa_K.SyncData.RoleModTime = TimeUtil.NowDateTime();
                            }
                        }
                        ZhanDuiZhengBa_K.TodayJoinRoleDatas.RemoveAll((ZhanDuiZhengBa_K.JoinRolePkData _r) => _r.ZhanDuiID == faildJoinRole.ZhanDuiID);
                    }
                    if (winJoinRole != null)
                    {
                        bool bSaveUpdate = false;
                        ZhanDuiZhengBaZhanDuiData roleData = ZhanDuiZhengBa_K.SyncData.ZhanDuiList.Find((ZhanDuiZhengBaZhanDuiData _r) => _r.ZhanDuiID == winJoinRole.ZhanDuiID);
                        if (roleData != null)
                        {
                            int newGrade = (int)matchConfig.WillUpGrade;
                            int newState = 1;
                            LogManager.WriteLog(LogTypes.Trace, string.Format("ZhanDuiZhengBa::ZhengBaPkResult,gameid={0},zhanduiid={1},newstate={2}", gameId, roleData.ZhanDuiID, newState), null, true);
                            if (ZhanDuiZhengBa_K.Persistence.UpdateRole(ZhanDuiZhengBa_K.SyncData.Month, roleData.ZhanDuiID, newGrade, newState))
                            {
                                roleData.Grade = newGrade;
                                roleData.State = newState;
                                ZhanDuiZhengBa_K.SyncData.RoleModTime = TimeUtil.NowDateTime();
                                bSaveUpdate = true;
                            }
                        }
                        if (bSaveUpdate)
                        {
                            log.UpGrade = true;
                            ZhanDuiZhengBa_K.TodayJoinRoleDatas.RemoveAll((ZhanDuiZhengBa_K.JoinRolePkData _r) => _r.ZhanDuiID == winJoinRole.ZhanDuiID);
                        }
                    }
                    log.EndTime = TimeUtil.NowDateTime();
                    if (winner1 > 0 && winner1 == log.ZhanDuiID1)
                    {
                        log.PkResult = 1;
                    }
                    else if (winner1 > 0 && winner1 == log.ZhanDuiID2)
                    {
                        log.PkResult = 2;
                    }
                    else
                    {
                        log.PkResult = 0;
                    }
                    ZhanDuiZhengBa_K.SyncData.PKLogList.Add(log);
                    TimeUtil.AgeByDateTime(ref ZhanDuiZhengBa_K.SyncData.PKLogModTime);
                    ZhanDuiZhengBa_K.Persistence.SavePkLog(log);
                    ZhanDuiZhengBa_K.ThisLoopPkLogs.Remove(gameId);
                    result = null;
                }
            }
            return(result);
        }
Example #5
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);
        }