Exemplo n.º 1
0
 public void Load()
 {
     try
     {
         using (var reader = File.OpenText(@"logs\ranking.txt"))
         {
             string[] line;
             lastExpUpdateTime = new DateTimeOffset(DateTime.Parse(reader.ReadLine()), TimeSpan.FromHours(7));
             line    = reader.ReadLine().Split(',');
             Number1 = new RankRecord {
                 Point = int.Parse(line[0]), Diff = int.Parse(line[1])
             };
             line    = reader.ReadLine().Split(',');
             Number5 = new RankRecord {
                 Point = int.Parse(line[0]), Diff = int.Parse(line[1])
             };
             line     = reader.ReadLine().Split(',');
             Number20 = new RankRecord {
                 Point = int.Parse(line[0]), Diff = int.Parse(line[1])
             };
             line      = reader.ReadLine().Split(',');
             Number100 = new RankRecord {
                 Point = int.Parse(line[0]), Diff = int.Parse(line[1])
             };
             line      = reader.ReadLine().Split(',');
             Number500 = new RankRecord {
                 Point = int.Parse(line[0]), Diff = int.Parse(line[1])
             };
             line           = reader.ReadLine().Split(',');
             MyRank         = int.Parse(line[0]);
             myLastPoint    = int.Parse(line[1]);
             myLastExp      = int.Parse(line[2]);
             myLastExpStore = int.Parse(line[3]);
             myExp          = int.Parse(line[4]);
         }
     }
     catch { }
 }
Exemplo n.º 2
0
        private void RankingListHandler(ranking_getlist api)
        {
            foreach (var player in api.api_list)
            {
                int rate = DecodeRate(player);
                switch (player.api_mxltvkpyuklh)
                {
                case 1:
                    if (Number1.Point < rate)
                    {
                        Number1 = new RankRecord
                        {
                            Point = rate,
                            Diff  = rate - Number1.Point
                        }
                    }
                    ;
                    else if (Number1.Point > rate)
                    {
                        Number1 = new RankRecord
                        {
                            Point = rate,
                            Diff  = 0
                        }
                    }
                    ;
                    break;

                case 5:
                    if (Number5.Point < rate)
                    {
                        Number5 = new RankRecord
                        {
                            Point = rate,
                            Diff  = rate - Number5.Point
                        }
                    }
                    ;
                    else if (Number5.Point > rate)
                    {
                        Number5 = new RankRecord
                        {
                            Point = rate,
                            Diff  = 0
                        }
                    }
                    ;
                    break;

                case 20:
                    if (Number20.Point < rate)
                    {
                        Number20 = new RankRecord
                        {
                            Point = rate,
                            Diff  = rate - Number20.Point
                        }
                    }
                    ;
                    else if (Number20.Point > rate)
                    {
                        Number20 = new RankRecord
                        {
                            Point = rate,
                            Diff  = 0
                        }
                    }
                    ;
                    break;

                case 100:
                    if (Number100.Point < rate)
                    {
                        Number100 = new RankRecord
                        {
                            Point = rate,
                            Diff  = rate - Number100.Point
                        }
                    }
                    ;
                    else if (Number100.Point > rate)
                    {
                        Number100 = new RankRecord
                        {
                            Point = rate,
                            Diff  = 0
                        }
                    }
                    ;
                    break;

                case 500:
                    if (Number500.Point < rate)
                    {
                        Number500 = new RankRecord
                        {
                            Point = rate,
                            Diff  = rate - Number500.Point
                        }
                    }
                    ;
                    else if (Number500.Point > rate)
                    {
                        Number500 = new RankRecord
                        {
                            Point = rate,
                            Diff  = 0
                        }
                    }
                    ;
                    break;
                }
                if (player.api_mtjmdcwtvhdr == Staff.Current.Admiral.Nickname && player.api_itbrdpdbkynm == Staff.Current.Admiral.Comment)
                {
                    if (myLastPoint != rate || MyRank != player.api_mxltvkpyuklh)
                    {
                        MyRank      = player.api_mxltvkpyuklh;
                        myLastPoint = rate;
                        myLastExp   = myLastExpStore;
                        OnPropertyChanged(nameof(MyDiff));
                        OnPropertyChanged(nameof(MyPoint));
                    }
                }
            }
        }
Exemplo n.º 3
0
 public void Load()
 {
     try
     {
         using (var reader = File.OpenText(@"logs\ranking.txt"))
         {
             string[] line;
             lastExpUpdateTime = new DateTimeOffset(DateTime.Parse(reader.ReadLine()), TimeSpan.FromHours(7));
             line = reader.ReadLine().Split(',');
             Number1 = new RankRecord { Point = int.Parse(line[0]), Diff = int.Parse(line[1]) };
             line = reader.ReadLine().Split(',');
             Number5 = new RankRecord { Point = int.Parse(line[0]), Diff = int.Parse(line[1]) };
             line = reader.ReadLine().Split(',');
             Number20 = new RankRecord { Point = int.Parse(line[0]), Diff = int.Parse(line[1]) };
             line = reader.ReadLine().Split(',');
             Number100 = new RankRecord { Point = int.Parse(line[0]), Diff = int.Parse(line[1]) };
             line = reader.ReadLine().Split(',');
             Number500 = new RankRecord { Point = int.Parse(line[0]), Diff = int.Parse(line[1]) };
             line = reader.ReadLine().Split(',');
             MyRank = int.Parse(line[0]);
             MyLastPoint = int.Parse(line[1]);
             myLastExp = int.Parse(line[2]);
             myLastExpStore = int.Parse(line[3]);
             myExp = int.Parse(line[4]);
         }
     }
     catch { }
 }
Exemplo n.º 4
0
 private void RankingListHandler(ranking_getlist api)
 {
     foreach (var player in api.api_list)
     {
         int rate = DecodeRate(player);
         switch (player.api_mxltvkpyuklh)
         {
             case 1:
                 if (Number1.Point < rate)
                     Number1 = new RankRecord
                     {
                         Point = rate,
                         Diff = rate - Number1.Point
                     };
                 else if (Number1.Point > rate)
                     Number1 = new RankRecord
                     {
                         Point = rate,
                         Diff = 0
                     };
                 break;
             case 5:
                 if (Number5.Point < rate)
                     Number5 = new RankRecord
                     {
                         Point = rate,
                         Diff = rate - Number5.Point
                     };
                 else if (Number5.Point > rate)
                     Number5 = new RankRecord
                     {
                         Point = rate,
                         Diff = 0
                     };
                 break;
             case 20:
                 if (Number20.Point < rate)
                     Number20 = new RankRecord
                     {
                         Point = rate,
                         Diff = rate - Number20.Point
                     };
                 else if (Number20.Point > rate)
                     Number20 = new RankRecord
                     {
                         Point = rate,
                         Diff = 0
                     };
                 break;
             case 100:
                 if (Number100.Point < rate)
                     Number100 = new RankRecord
                     {
                         Point = rate,
                         Diff = rate - Number100.Point
                     };
                 else if (Number100.Point > rate)
                     Number100 = new RankRecord
                     {
                         Point = rate,
                         Diff = 0
                     };
                 break;
             case 500:
                 if (Number500.Point < rate)
                     Number500 = new RankRecord
                     {
                         Point = rate,
                         Diff = rate - Number500.Point
                     };
                 else if (Number500.Point > rate)
                     Number500 = new RankRecord
                     {
                         Point = rate,
                         Diff = 0
                     };
                 break;
         }
         if (player.api_mtjmdcwtvhdr == Staff.Current.Admiral.Nickname && player.api_itbrdpdbkynm == Staff.Current.Admiral.Comment)
         {
             if (MyLastPoint != rate || MyRank != player.api_mxltvkpyuklh)
             {
                 MyRank = player.api_mxltvkpyuklh;
                 MyLastPoint = rate;
                 myLastExp = myLastExpStore;
                 OnPropertyChanged(nameof(MyPoint));
             }
         }
     }
 }
Exemplo n.º 5
0
        public void Rank()
        {
            _service.Info.Worlds.ForEach(w =>
            {
                var watch = Stopwatch.StartNew();

                using var store = _service.DataStore.OpenSession();
                using var batch = store.Batch();
                var characters  = store
                                  .Query <AccountData>()
                                  .Where(d => d.WorldID == w)
                                  .ToList()
                                  .SelectMany(d => store
                                              .Query <Character>()
                                              .Where(c => c.AccountDataID == d.ID)
                                              .ToList())
                                  .ToList();

                var worldRanking = characters
                                   .OrderBy(c => c.Level, OrderByDirection.Descending)
                                   .Select((c, index) => new { CharacterID = c.ID, Rank = index + 1 })
                                   .ToDictionary(r => r.CharacterID, r => r.Rank);
                var jobRanking = new Dictionary <int, int>();

                characters
                .GroupBy(c => c.Job % 1000 / 100)
                .ForEach(job => job
                         .OrderBy(c => c.Level, OrderByDirection.Descending)
                         .Select((c, index) => new { CharacterID = c.ID, Rank = index + 1 })
                         .ToDictionary(r => r.CharacterID, r => r.Rank)
                         .ForEach(kv => jobRanking.Add(kv.Key, kv.Value)));

                characters.ForEach(c =>
                {
                    var ranking = store
                                  .Query <RankRecord>()
                                  .FirstOrDefault(r => r.CharacterID == c.ID);

                    if (ranking == null)
                    {
                        ranking = new RankRecord
                        {
                            CharacterID = c.ID
                        };
                        batch.Insert(ranking);
                    }
                    else
                    {
                        ranking.WorldRankGap = ranking.WorldRank - worldRanking[c.ID];
                        ranking.JobRankGap   = ranking.JobRank - jobRanking[c.ID];
                    }

                    ranking.WorldRank = worldRanking[c.ID];
                    ranking.JobRank   = jobRanking[c.ID];

                    batch.Update(ranking);
                });

                batch.SaveChanges();
                Logger.Info($"Ranked {characters.Count} characters (world {w}) in {watch.ElapsedMilliseconds}ms");
            });
        }