예제 #1
0
        //获取主城战力排行榜数据
        public IEnumerator GetFightRankList(Coroutine coroutine, RankCharacterProxy charProxy, GetFightRankListInMessage msg)
        {
            var proxy = charProxy;

            var serverId = SceneExtension.GetServerLogicId(msg.Request.ServerId);
            var type     = msg.Request.RankType;

            PlayerLog.WriteLog(proxy.CharacterId, "----------Rank----------GetFightRankList----------{0},{1}", serverId, type);

            var timeNow = System.DateTime.Now;
            var record  = DataTable.Table.GetServerName(serverId);

            if (null != record)
            {
                var             startTime = System.DateTime.Parse(record.OpenTime);
                System.TimeSpan span      = (timeNow - startTime);
                if (startTime.Date.Equals(timeNow.Date))
                {
                    if (timeNow.Day == startTime.Day)
                    {
                        msg.Reply();
                        yield break;
                    }
                }
            }

            var needServerName         = false;
            List <DBRank_One> tempList = null;

            tempList = ServerRankManager.GetFightRankList(serverId, type);

            if (tempList == null)
            {
                msg.Reply();
                yield break;
            }
            msg.Response.RankType = type;
            List <int> professCount = new List <int>();

            foreach (var one in tempList)
            {
                if (professCount.Count >= 3)
                {
                    break;
                }
                if (one == null)
                {
                    Logger.Error("GetRankList serverId={0},type={1}", serverId, type);
                    continue;
                }
                var rankMessage = new RankOne
                {
                    Id   = one.Guid,
                    Name = one.Name //ServerRankManager.GetName(serverId, one.Guid),
                };
                if (type == (int)RankType.Level)
                {
                    rankMessage.Value = (int)(one.Value / Constants.RankLevelFactor);
                }
                else if (type == (int)RankType.CityLevel)
                {
                    rankMessage.Value = (int)(one.Value / Constants.RankLevelFactor);
                }
                else if (type == (int)RankType.Arena)
                {
                    rankMessage.Value = one.FightPoint;
                }
                else
                {
                    rankMessage.Value = (int)one.Value;
                }

                if (needServerName && one.ServerId > 0)
                {
                    var tbServerName = Table.GetServerName(one.ServerId);
                    if (tbServerName != null)
                    {
                        rankMessage.ServerName = tbServerName.Name;
                    }
                }

                var dbSceneSimple = RankServer.Instance.SceneAgent.GetSceneSimpleData(rankMessage.Id, 0);
                yield return(dbSceneSimple.SendAndWaitUntilDone(coroutine));

                if (dbSceneSimple.State == MessageState.Reply)
                {
                    if (dbSceneSimple.ErrorCode == (int)ErrorCodes.OK)
                    {
                        if (rankMessage.Name == "")
                        {
                            rankMessage.Name = dbSceneSimple.Response.Name;
                            one.Name         = dbSceneSimple.Response.Name;
                        }

                        int typeId = dbSceneSimple.Response.TypeId;
                        if (!professCount.Contains(typeId))
                        {
                            professCount.Add(typeId);
                            msg.Response.RankData.Add(rankMessage);
                        }
                    }
                }
                else
                {
                    if (rankMessage.Name == "")
                    {
                        //未找到
                        rankMessage.Name = "^301036";
                        one.Name         = "^301036";
                    }
                }
            }

            msg.Reply();
        }
예제 #2
0
        //获取排行榜列表
        public IEnumerator GetRankList(Coroutine coroutine, RankCharacterProxy charProxy, GetRankListInMessage msg)
        {
            var proxy = charProxy;

            var serverId = SceneExtension.GetServerLogicId(msg.Request.ServerId);
            var type     = msg.Request.RankType;

            PlayerLog.WriteLog(proxy.CharacterId, "----------Rank----------GetRankList----------{0},{1}", serverId, type);

            var needServerName         = false;
            List <DBRank_One> tempList = null;

            if (type == (int)RankType.DailyGift || type == (int)RankType.WeeklyGift ||
                type == (int)RankType.TotalGift)
            {
                needServerName = true;
                tempList       = ServerRankManager.GetTotalRankData(type, 1, 100);
            }
            else
            {
                tempList = ServerRankManager.GetRankDataByServerId(serverId, type, 1, 100);
            }

            if (tempList == null)
            {
                msg.Reply();
                yield break;
            }
            msg.Response.RankType = type;
            foreach (var one in tempList)
            {
                if (one == null)
                {
                    Logger.Error("GetRankList serverId={0},type={1}", serverId, type);
                    continue;
                }
                var rankMessage = new RankOne
                {
                    Id   = one.Guid,
                    Name = one.Name //ServerRankManager.GetName(serverId, one.Guid),
                };
                if (type == (int)RankType.Level)
                {
                    rankMessage.Value = (int)(one.Value / Constants.RankLevelFactor);
                }
                else if (type == (int)RankType.CityLevel)
                {
                    rankMessage.Value = (int)(one.Value / Constants.RankLevelFactor);
                }
                else if (type == (int)RankType.Arena)
                {
                    rankMessage.Value = one.FightPoint;
                }
                else
                {
                    rankMessage.Value = (int)one.Value;
                }

                if (needServerName && one.ServerId > 0)
                {
                    var tbServerName = Table.GetServerName(one.ServerId);
                    if (tbServerName != null)
                    {
                        rankMessage.ServerName = tbServerName.Name;
                    }
                }

                if (rankMessage.Name == "")
                {
                    var dbSceneSimple = RankServer.Instance.SceneAgent.GetSceneSimpleData(rankMessage.Id, 0);
                    yield return(dbSceneSimple.SendAndWaitUntilDone(coroutine));

                    if (dbSceneSimple.State == MessageState.Reply)
                    {
                        rankMessage.Name = dbSceneSimple.Response.Name;
                        one.Name         = dbSceneSimple.Response.Name;
                    }
                    else
                    {
                        //未找到
                        rankMessage.Name = "^301036";
                        one.Name         = "^301036";
                    }
                }
                msg.Response.RankData.Add(rankMessage);
            }
            msg.Reply();
        }
예제 #3
0
        //获取某排行榜数据
        public IEnumerator SSGetServerRankData(Coroutine coroutine, RankService _this, SSGetServerRankDataInMessage msg)
        {
            var serverId = msg.Request.ServerId;
            var type     = msg.Request.Ranktype;
            var tempList = ServerRankManager.GetRankDataByServerId(serverId, type, 1, 100);

            if (tempList == null)
            {
                msg.Reply();
                yield break;
            }
            foreach (var one in tempList)
            {
                if (one == null)
                {
                    Logger.Error("GetRankList serverId={0},type={1}", serverId, type);
                    continue;
                }
                msg.Response.RankType = type;
                var rankMessage = new RankOne
                {
                    Id   = one.Guid,
                    Name = one.Name //ServerRankManager.GetName(serverId, one.Guid),
                };
                if (type == (int)RankType.Level)
                {
                    rankMessage.Value = (int)(one.Value / Constants.RankLevelFactor);
                }
                else if (type == (int)RankType.CityLevel)
                {
                    rankMessage.Value = (int)(one.Value / Constants.RankLevelFactor);
                }
                else if (type == (int)RankType.Arena)
                {
                    rankMessage.Value = one.FightPoint;
                }
                else
                {
                    rankMessage.Value = (int)one.Value;
                }
                if (rankMessage.Name == "")
                {
                    var dbSceneSimple = RankServer.Instance.SceneAgent.GetSceneSimpleData(rankMessage.Id, 0);
                    yield return(dbSceneSimple.SendAndWaitUntilDone(coroutine));

                    if (dbSceneSimple.State == MessageState.Reply)
                    {
                        rankMessage.Name = dbSceneSimple.Response.Name;
                        one.Name         = dbSceneSimple.Response.Name;
                    }
                    else
                    {
                        //未找到
                        rankMessage.Name = "^301036";
                        one.Name         = "^301036";
                    }
                }
                msg.Response.RankData.Add(rankMessage);
            }
            msg.Reply();
        }