Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.95 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Drawing;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading;
  7. using Conquer_Online_Server.Client;
  8. using Conquer_Online_Server.Interfaces;
  9. using Conquer_Online_Server.Network.GamePackets;
  10.  
  11.  
  12. namespace Conquer_Online_Server.Game
  13. {
  14. public class TreasureBox
  15. {
  16. static Map Map = Kernel.Maps[10002];
  17. const int MAX_BOXES = 10, ITEMS = 1000, CPSMoney = 1001, LEVEL = 1002, DEATH = 1003, STUN = 1004, KICK = 1005;
  18. static int CurrentBoxes = 0;
  19. static Conquer_Online_Server.Interfaces.INpc npc;
  20. static ushort tempX, tempY = 0;
  21. static uint BaseId = 101002;
  22. static List<Point> VaildOnes = new List<Point>();
  23. public static bool OnGoing;
  24.  
  25. public static void Generate()
  26. {
  27. try
  28. {
  29. if (CurrentBoxes < MAX_BOXES)
  30. {
  31. if (Map == null)
  32. {
  33. Map = Kernel.Maps[10002];
  34. return;
  35. }
  36. tempX = (ushort)Kernel.Random.Next(0, Map.Floor.Bounds.Width);
  37. tempY = (ushort)Kernel.Random.Next(0, Map.Floor.Bounds.Height);
  38. if (Map.Floor[tempX, tempY, MapObjectType.Item, null])
  39. {
  40. npc = new Network.GamePackets.NpcSpawn();
  41. npc.UID = BaseId++;
  42. npc.Mesh = (ushort)Kernel.RandFromGivingNums(9307, 9277, 9267, 9287, 9257);
  43. npc.Type = Enums.NpcType.Talker;
  44. npc.MapID = Map.ID;
  45. npc.X = tempX;
  46. npc.Y = tempY;
  47.  
  48. Map.AddNpc(npc);
  49. CurrentBoxes++;
  50. Kernel.SendWorldMessage(new Message("A new treasure box appeared!", Color.Red, 2012));
  51. }
  52. }
  53. }
  54. catch (Exception e)
  55. {
  56. Console.WriteLine(e.ToString());
  57. }
  58.  
  59. }
  60.  
  61. public static void Reward(GameState client)
  62. {
  63. client.Entity.CurrentTreasureBoxes++;
  64. var orders = Kernel.GamePool.Values.OrderByDescending(x => x.Entity.CurrentTreasureBoxes).ToArray();
  65. for (int i = 0; i < orders.Length + 1; i++)
  66. {
  67. if (i == 11) break;
  68. Message msg;
  69.  
  70. if (i == 0)
  71. {
  72. msg = new Message("", System.Drawing.Color.Red, Message.FirstRightCorner);
  73. }
  74. else
  75. {
  76. if (orders[i - 1].Entity.CurrentTreasureBoxes == 0) continue;
  77. msg = new Message("No " + i.ToString() + "- " + orders[i - 1].Entity.Name + " Opened " + orders[i - 1].Entity.CurrentTreasureBoxes.ToString() + " Boxes!", System.Drawing.Color.Red, Message.ContinueRightCorner);
  78. }
  79.  
  80. Kernel.SendWorldMessage(msg, Program.Values, (ushort)10002);
  81. }
  82.  
  83. int prize = 0;
  84.  
  85. if (client.Entity.Level <= 130)
  86. prize = Kernel.RandFromGivingNums(ITEMS, CPSMoney, LEVEL, DEATH, KICK);
  87. else prize = Kernel.RandFromGivingNums(ITEMS, CPSMoney, DEATH, KICK);
  88. #warning TREASURE BOX PRIZE
  89. switch (prize)
  90. {
  91. case LEVEL:
  92. {
  93. if (client.Entity.Level < 130)
  94. {
  95. client.Entity.Level += 1;
  96. Kernel.SendWorldMessage(new Message(client.Entity.Name + " Leveled-up while opening the TreasureBox!", Color.White, Message.Talk));
  97. break;
  98. }
  99. else
  100. break;
  101. }
  102. case CPSMoney:
  103. {
  104. uint amount = (uint)Kernel.RandFromGivingNums(5000, 10000, 15000, 20000, 25000, 30000, 40000, 50000);
  105. if (amount >= 50000)
  106. {
  107. client.Entity.ConquerPoints += 50000;
  108. Kernel.SendWorldMessage(new Message(client.Entity.Name + " got " + amount.ToString() + " CPs while opening the TreasureBox!", Color.White, Message.Talk));
  109. }
  110. break;
  111. }
  112. case ITEMS:
  113. {
  114. Database.ConquerItemBaseInformation temp;
  115. uint itemid = (uint)Kernel.RandFromGivingNums(721020, 700013, 700003, 700033, 183325, 720770, 183495, 184305, 184315, 184375, 187305, 187315, 181395, 184405, 184365);
  116. client.Inventory.Add(itemid, 0, 1);
  117. Database.ConquerItemInformation.BaseInformations.TryGetValue(itemid, out temp);
  118. Kernel.SendWorldMessage(new Message(client.Entity.Name + " got " + temp.Name + " while opening the TreasureBox!", Color.White, Message.Talk));
  119. break;
  120. }
  121. case DEATH:
  122. {
  123. client.Entity.Die(0);
  124. Kernel.SendWorldMessage(new Message(client.Entity.Name + " found DEATH! while opening the TreasureBox!", Color.White, Message.Talk));
  125. break;
  126. }
  127. case KICK:
  128. {
  129. client.Entity.Teleport(1002, 303, 278);
  130. Kernel.SendWorldMessage(new Message(client.Entity.Name + " got KICKED-OUT! while opening the TreasureBox!", Color.White, Message.Talk));
  131. break;
  132. }
  133. }
  134.  
  135. CurrentBoxes--;
  136. client.Entity.ConquerPoints += 20000000;
  137. client.Entity.TreasuerPoints += 1;
  138. }
  139. }
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement