示例#1
0
        internal void Initialize()
        {
            _top = new Dictionary <TopParam, SortedByValueDictionary <UserId, decimal> >
            {
                { TopParam.Gold, new SortedByValueDictionary <UserId, decimal>() },
                { TopParam.Monsters, new SortedByValueDictionary <UserId, decimal>() },
                { TopParam.Rooms, new SortedByValueDictionary <UserId, decimal>() },
                { TopParam.Level, new SortedByValueDictionary <UserId, decimal>() }
            };
            foreach (var userId in DatabaseConnection.GetUsersList())
            {
                var user = UserProxy.GetUnsafe(userId);
                _top[TopParam.Gold].Add(userId, user.Info.Gold);
                _top[TopParam.Monsters].Add(userId, user.Info.Statistics.MonsterCount);
                _top[TopParam.Rooms].Add(userId, user.Info.Statistics.RoomsCount);
                _top[TopParam.Level].Add(userId, PackLevel(user.Info.Level.Level, user.Info.Level.ExpirenceCollected));
            }

            UserLevel.OnChanged += (user, level) =>
            {
                _top[TopParam.Level].Add(user.Info.UserId,
                                         PackLevel(user.Info.Level.Level, user.Info.Level.ExpirenceCollected));
            };

            Statistics.OnChanged += user =>
            {
                _top[TopParam.Gold].Add(user.Info.UserId, user.Info.Gold);
                _top[TopParam.Monsters].Add(user.Info.UserId, user.Info.Statistics.MonsterCount);
                _top[TopParam.Rooms].Add(user.Info.UserId, user.Info.Statistics.RoomsCount);
            };
        }
示例#2
0
            private void DisplayTop(StringBuilder sb, IEnumerable <KeyValuePair <UserId, decimal> > top,
                                    Func <User, KeyValuePair <UserId, decimal>, string> formatter)
            {
                var cnt = 0;

                foreach (var topPlayer in top)
                {
                    if (cnt++ > 10)
                    {
                        break;
                    }

                    var usr = UserProxy.GetUnsafe(topPlayer.Key);
                    sb.AppendLine($"<b>{cnt}</b>. {formatter(usr, topPlayer)}");
                }
            }
示例#3
0
        protected override void Enter(User user, string[][] buttons)
        {
            var no   = (int?)(Serializable.Int)GlobalVariables.Variables.Get("voldemort_no") ?? 1;
            var time = DateTimeOffset.FromUnixTimeSeconds(
                (int?)(Serializable.Long)GlobalVariables.Variables.Get("voldemort_time") ?? 0);

            var name     = "неизвестного";
            var playerId = GlobalVariables.Variables.Get("voldemort_killer");

            if (playerId != null)
            {
                name = UserProxy.GetUnsafe((UserId)playerId).Info.Name;
            }

            var timeOffset = DateTimeOffset.Now - time;

            SendMessage(user,
                        "Одно его имя внушает страх, как и все трехстепенные имена, а отсутствие носа только усиливает это ощущение.");
            SendMessage(user,
                        $"Он воскресал уже {no} раз. Его реинкарнация длится уже {timeOffset.TotalMinutes:F2} минут после убийства от руки {name}, и снова умирать он не собирается.");
            SendMessage(user, "Его взгляд совсем не кажется дружелюбным. Похоже, пора расчехлять оружие.", buttons);
        }