Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.82 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using MCGalaxy;
  5. using MCGalaxy.Events.PlayerEvents;
  6. using System.Threading;
  7.  
  8. namespace PluginBuildBattleCode {
  9. public sealed class Core : Plugin_Simple {
  10.  
  11. int checkForNoPlayers = 0;
  12. int numberOfPlayers = 0;
  13. int integer = 0;
  14. int integer2 = 0;
  15. int choice1 = 0;
  16. int choice2 = 0;
  17. int choice3 = 0;
  18. int themeVoting = 0;
  19. int themeWinnerID = 0;
  20. string themeWinner = "";
  21.  
  22. List<int> votesFor = new List<int>();
  23. List<int> themeVoteList = new List<int>();
  24. List<string> builders = new List<string>();
  25.  
  26. public override string creator { get { return "Herobrine"; } }
  27. public override string name { get { return "BuildBattleCode"; } }
  28. public override string MCGalaxy_Version { get { return "1.8.9.7"; } }
  29.  
  30. public override void Load(bool startup) {
  31. OnPlayerSpawningEvent.Register(HandlePlayerSpawning, Priority.Low);
  32. OnPlayerChatEvent.Register(HandlePlayerChat, Priority.Low);
  33. }
  34.  
  35. public override void Unload(bool shutdown) {
  36. OnPlayerSpawningEvent.Unregister(HandlePlayerSpawning);
  37. OnPlayerChatEvent.Unregister(HandlePlayerChat);
  38. }
  39. void HandlePlayerSpawning(Player p, ref Position pos, ref byte yaw, ref byte pitch, bool respawning) {
  40. if (p.level.name != "build_battle") return;
  41. if (respawning) return;
  42.  
  43. // below is code to calcute the number of people currently playing on build battle.
  44. // numberOfPlayers is used to find which pod to spawn the player in, and it is not always the real number of builders on build battle. It changes, especially when used to respawn a player that had already been playing, that left and rejoined. To find the true number of players, use: builders.Count();
  45. // "builders" list counts all players, so it will include the current player and other players...
  46. checkForNoPlayers = 0;
  47. Player[] players = PlayerInfo.Online.Items;
  48. string buildBattleValue = "build_battle";
  49. foreach (Player pl in players) {
  50. if (pl.level.name == buildBattleValue) {
  51. checkForNoPlayers = checkForNoPlayers + 1;
  52. }
  53. }
  54. if (checkForNoPlayers == 1) {
  55. numberOfPlayers = 0;
  56. builders.Clear();
  57. builders.Add(p.truename);
  58. } else {
  59. if (builders.Contains(p.truename)) {
  60. numberOfPlayers = builders.FindIndex(p.truename.StartsWith);
  61. } else {
  62. numberOfPlayers = numberOfPlayers + 1;
  63. builders.Add(p.truename);
  64. }
  65. }
  66.  
  67. //------------------testing purposes-------------
  68. //Console.WriteLine("builders.Count");
  69. //Console.WriteLine("numberOfPlayers");
  70. //Console.WriteLine("checkForNoPlayers");
  71. //Console.WriteLine(builders.Count);
  72. //Console.WriteLine(numberOfPlayers);
  73. //Console.WriteLine(checkForNoPlayers);
  74. //-------------------testing purposes-----------
  75.  
  76.  
  77.  
  78.  
  79. // below is code to spawn the player in the build battle arena.
  80. if (numberOfPlayers > 15) {
  81.  
  82. } else {
  83. if (numberOfPlayers < 4) {
  84. integer = 18;
  85. integer2 = 18 + (36 * numberOfPlayers);
  86. pos = Position.FromFeet(integer * 32 + 16, 33 * 32 + 16, integer2 * 32 + 16);
  87.  
  88. //------------------testing purposes-------------
  89. //Console.WriteLine("integer");
  90. //Console.WriteLine("integer2");
  91. //Console.WriteLine(integer);
  92. //Console.WriteLine(integer2);
  93. //-------------------testing purposes-----------
  94.  
  95. } else if (numberOfPlayers < 8) {
  96. integer = 54;
  97. integer2 = 18 + (36 * (numberOfPlayers - 4));
  98. pos = Position.FromFeet(integer * 32 + 16, 33 * 32 + 16, integer2 * 32 + 16);
  99. } else if (numberOfPlayers < 12) {
  100. integer = 90;
  101. integer2 = 18 + (36 * (numberOfPlayers - 8));
  102. pos = Position.FromFeet(integer * 32 + 16, 33 * 32 + 16, integer2 * 32 + 16);
  103. } else if (numberOfPlayers < 16) {
  104. integer = 126;
  105. integer2 = 18 + (36 * (numberOfPlayers - 12));
  106. pos = Position.FromFeet(integer * 32 + 16, 33 * 32 + 16, integer2 * 32 + 16);
  107. }
  108. }
  109.  
  110. new Thread(() => StartThemeVote(p)).Start();
  111.  
  112.  
  113. StartRoundCountdown();
  114. return;
  115. }
  116.  
  117. void StartThemeVote(Player p) {
  118. //Console.WriteLine("Got to Theme Vote!");
  119. themeVoting = 1;
  120. List<string> themes = new List<string>(File.ReadAllLines("plugins/buildBattleThemes.txt"));
  121. Chat.MessageLevel(p.level, "%0-----------%c Theme Vote %0-----------");
  122. Chat.MessageLevel(p.level, " %eType %11%e, %22%e, or %33");
  123. Random randomTheme = new Random();
  124. choice1 = randomTheme.Next(0, themes.Count + 1);
  125. choice2 = randomTheme.Next(0, themes.Count + 1);
  126. choice3 = randomTheme.Next(0, themes.Count + 1);
  127. Chat.MessageLevel(p.level, "%1(" + themes[choice1] + ") %2(" + themes[choice2] + ") %3(" + themes[choice3] + ")");
  128. Chat.MessageLevel(p.level, "%0-------------------------------------");
  129. for (int i = 1; i < builders.Count + 1; i++) {
  130. themeVoteList.Add(0);
  131. }
  132. Console.WriteLine(builders.Count);
  133. Console.WriteLine(themeVoteList.Count);
  134.  
  135. Player[] players = PlayerInfo.Online.Items;
  136. for (int i = 10; i > -1; i--) {
  137. foreach (Player pl in players) {
  138. if (pl.level.name == "build_battle" && i == 0) {
  139. pl.SendCpeMessage(CpeMessageType.BottomRight1, "");
  140. continue;
  141. }
  142. if (pl.level.name != "build_battle") continue;
  143. pl.SendCpeMessage(CpeMessageType.BottomRight1, "%6You have %c" + i + "s %6left to vote.");
  144. }
  145. Thread.Sleep(1000);
  146. }
  147. themeVoting = 0;
  148.  
  149. votesFor.Clear();
  150. votesFor.Add(0);
  151. votesFor.Add(0);
  152. votesFor.Add(0);
  153.  
  154. // for (int i = 0; i < themeVoteList.Count; i++) {
  155. // if (themeVoteList[i] == 0) continue;
  156. // votesFor[themeVoteList[i]] = votesFor[themeVoteList[i]] + 1;
  157. // }
  158. // if (votesFor[1] >= votesFor[2] && votesFor[1] >= votesFor[3]) {
  159. // themeWinner = themes[choice1];
  160. // themeWinnerID = 1;
  161. // } else if (votesFor[2] >= votesFor[1] && votesFor[2] >= votesFor[3]) {
  162. // themeWinner = themes[choice2];
  163. // themeWinnerID = 2;
  164. // } else {
  165. // themeWinner = themes[choice3];
  166. // themeWinnerID = 3;
  167. // }
  168.  
  169. Player[] players2 = PlayerInfo.Online.Items;
  170. foreach (Player pl in players2) {
  171. if (pl.level.name != "build_battle") continue;
  172. pl.SendCpeMessage(CpeMessageType.Announcement, "%oTheme is %e" + themeWinner);
  173.  
  174. }
  175. Chat.MessageLevel(p.level, "%0----------%c Vote Results %0----------");
  176.  
  177. Chat.MessageLevel(p.level, "%e" + themeWinner + " %awon with a total of %c" + votesFor[themeWinnerID] + " %avotes.");
  178. Chat.MessageLevel(p.level, "%0-------------------------------------");
  179.  
  180. }
  181. void HandlePlayerChat (Player p, string message) {
  182. if (themeVoting == 0) return;
  183. if (p.level.name != "build_battle") return;
  184. if (!builders.Contains(p.truename)) return;
  185. message = message.ToLower();
  186. if (message == "1" || message == "one") {
  187. if (themeVoteList[builders.FindIndex(p.truename.StartsWith)] == 0) {
  188. Player.Message(p, "%aVoted for %echoice 1");
  189. } else {
  190. Player.Message(p, "%aChanged vote to %echoice 1");
  191. }
  192. themeVoteList[builders.FindIndex(p.truename.StartsWith)] = 1;
  193. p.cancelchat = true;
  194. } else if (message == "2" || message == "two") {
  195. if (themeVoteList[builders.FindIndex(p.truename.StartsWith)] == 0) {
  196. Player.Message(p, "%aVoted for %echoice 2");
  197. } else {
  198. Player.Message(p, "%aChanged vote to %echoice 2");
  199. }
  200. themeVoteList[builders.FindIndex(p.truename.StartsWith)] = 2;
  201. p.cancelchat = true;
  202. } else if (message == "3" || message == "three") {
  203. if (themeVoteList[builders.FindIndex(p.truename.StartsWith)] == 0) {
  204. Player.Message(p, "%aVoted for %echoice 3");
  205. } else {
  206. Player.Message(p, "%aChanged vote to %echoice 3");
  207. }
  208. themeVoteList[builders.FindIndex(p.truename.StartsWith)] = 3;
  209. p.cancelchat = true;
  210. } else {
  211. return;
  212. }
  213. }
  214. void StartRoundCountdown() {
  215.  
  216. }
  217. }
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement