Advertisement
Genral

MonsterRole

Dec 10th, 2023
664
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.96 KB | None | 0 0
  1. public object scoreObj = new object();
  2.  
  3. public uint GetScorePosition(Client.GameClient killer)
  4.         {
  5.             lock (scoreObj)
  6.             {
  7.                 if (this.Hunters == null) return 0;
  8.  
  9.                 var a = Hunters.Values.OrderByDescending(p => p.HunterScore).ToArray();
  10.                 if (!Alive && !logged)
  11.                 {
  12.                     string log = "[Bosses] Name: " + Name + " | Killer: " + killer.Player.Name + " | Hunters: ";
  13.                     foreach (var hunter in a.Take(5))
  14.                         log += hunter.HunterName + "     |      ";
  15.                     Database.ServerDatabase.LoginQueue.Enqueue(log);
  16.                     logged = true;
  17.                 }
  18.                 for (int x = 0; x < a.Length; x++)
  19.                 {
  20.                     if (a[x].HunterUID == killer.Player.UID)
  21.                         return (uint)(x + 1);
  22.                 }
  23.                 return 0;
  24.             }
  25.         }
  26.         public void UpdateScore(ServerSockets.Packet stream, Client.GameClient killer, uint Damage)
  27.         {
  28.             try
  29.             {
  30.                 lock (scoreObj)
  31.                 {
  32.                     if (!Program.RankableFamilyIds.Contains(Family.ID))
  33.                         return;
  34.                     if (this.Hunters == null)
  35.                         this.Hunters = new Dictionary<uint, MsgBossHarmRankingEntry>();
  36.                     if (this.Hunters.ContainsKey(killer.Player.UID))
  37.                     {
  38.                         this.Hunters[killer.Player.UID].HunterScore += Damage;
  39.                     }
  40.                     else if (!this.Hunters.ContainsKey(killer.Player.UID))
  41.                     {
  42.                         this.Hunters.Add(killer.Player.UID, new MsgBossHarmRankingEntry() { HunterUID = killer.Player.UID, HunterScore = Damage, Rank = 0, HunterName = killer.Player.Name, ServerID = killer.Player.ServerID });
  43.                     }
  44.                     if (this.Hunters.Count == 0)
  45.                         return;
  46.                     var array = this.Hunters.Values.OrderByDescending(p => p.HunterScore).ToArray();
  47.                     for (int x = 0; x < array.Length; x++)
  48.                     {
  49.                         array[x].Rank = (uint)(x + 1);
  50.                     }
  51.                     MsgServer.MsgBossHarmRanking Rank = new MsgServer.MsgBossHarmRanking();
  52.                     Rank.MonsterID = this.Family.ID;
  53.                     Rank.Type = (int)MsgBossHarmRanking.RankAction.ShowRespondForTheRest;
  54.                     Rank.Hunters = array;
  55.                     this.Send(stream.CreateBossHarmRankList(Rank));
  56.                     array = null;
  57.                 }
  58.             }
  59.             catch (Exception ex)
  60.             {
  61.                 MyConsole.WriteException(ex);
  62.                 MyConsole.SaveException(ex);
  63.             }
  64.         }
  65.  
  66.   #region [BossRankReward]
  67.         public void GetBossReward(Client.GameClient killer, ServerSockets.Packet stream)
  68.         {
  69.             killer.Player.ConquerPoints += 50;
  70.             killer.SendSysMesage("You have received 5,000 Conquer Points for being the last hitter of " + Name + "!", MsgMessage.ChatMode.TopLeft, MsgMessage.MsgColor.red);
  71.             if (Map == 10250 || Map == 10137)//Deityland
  72.             {
  73.                 foreach (var hunter in Hunters.Values)
  74.                 {
  75.                     if (Database.Server.GamePoll.ContainsKey(hunter.HunterUID))
  76.                     {
  77.                         var client = Database.Server.GamePoll[hunter.HunterUID];
  78.                         switch (this.GetScorePosition(client))
  79.                         {
  80.                             case 1:
  81.                                 client.Player.ConquerPoints += 1500;
  82.                                 //client.Inventory.AddItemWitchStack(4050001, 0, 400, stream);
  83.                                 //client.Inventory.AddItemWitchStack(4040001, 0, 700, stream);
  84.                                 client.Inventory.AddItemWitchStack(3321098, 0, 200, stream);
  85.                                 client.Inventory.AddItemWitchStack(3321107, 0, 100, stream);
  86.                                 client.Inventory.AddItemWitchStack(3321108, 0, 100, stream);
  87.                                 client.SendSysMesage("You have received 7.000,000 Conquer Points  And 200 LegendaryEssence And 100 SpiritStone + ChaosJade for being 1st hunter while defeating " + Name + "!", MsgMessage.ChatMode.TopLeft, MsgMessage.MsgColor.red);
  88.                                 break;
  89.                             case 2:
  90.                                 client.Player.ConquerPoints += 1000;
  91.                                 //client.Inventory.AddItemWitchStack(4050001, 0, 200, stream);
  92.                                 //client.Inventory.AddItemWitchStack(4040001, 0, 550, stream);
  93.                                 client.Inventory.AddItemWitchStack(3321098, 0, 150, stream);
  94.                                 client.Inventory.AddItemWitchStack(3321107, 0, 100, stream);
  95.                                 client.Inventory.AddItemWitchStack(3321108, 0, 100, stream);
  96.                                 client.SendSysMesage("You have received 6.000,000 Conquer Points And 150 LegendaryEssence And 100 SpiritStone + ChaosJade for being 2nd hunter while defeating " + Name + "!", MsgMessage.ChatMode.TopLeft, MsgMessage.MsgColor.red);
  97.                                 break;
  98.                             case 3:
  99.                                 client.Player.ConquerPoints += 500;
  100.                                 //client.Inventory.AddItemWitchStack(4050001, 0, 100, stream);
  101.                                 //client.Inventory.AddItemWitchStack(4040001, 0, 400, stream);
  102.                                 client.Inventory.AddItemWitchStack(3321098, 0, 100, stream);
  103.                                 client.Inventory.AddItemWitchStack(3321107, 0, 100, stream);
  104.                                 client.Inventory.AddItemWitchStack(3321108, 0, 100, stream);
  105.                                 client.SendSysMesage("You have received 5.000,000 Conquer Points  And 100 LegendaryEssence And 100 SpiritStone + ChaosJade for being 3rd hunter while defeating " + Name + "!", MsgMessage.ChatMode.TopLeft, MsgMessage.MsgColor.red);
  106.                                 break;
  107.                         }
  108.                     }
  109.                 }
  110.             }
  111.         }
  112.         #endregion
  113.  
  114. //---------------------------------------------------------------------
  115. public void Dead(ServerSockets.Packet stream, Client.GameClient killer, uint aUID, Role.GameMap GameMap)
  116. //---------------------------------------------------------------------
  117.  
  118.  
  119.  if (Map == 10137)
  120.                     {
  121.                         if (Family.ID == 20300)//nemesys
  122.                             GetBossReward(killer, stream);
  123.                         else if (Family.ID == 20070)//SnowBanshee
  124.                             GetBossReward(killer, stream);
  125.                         else if (Family.ID == 20160)//ThrillingSpook
  126.                             GetBossReward(killer, stream);
  127.  
  128.                     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement