ranklist.txt 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362
  1. event.load("custom_command");
  2. stats_prefix = "§bStatistic";
  3. inverting_list = list.new();
  4. list.add(inverting_list, "5x5");
  5. list.add(inverting_list, "7x7");
  6. list.add(inverting_list, "10x10");
  7. list.add(inverting_list, "5x5cl");
  8. list.add(inverting_list, "7x7cl");
  9. list.add(inverting_list, "10x10cl");
  10. colorcodes = map.new();
  11. games = list.new();
  12. messages = map.new();
  13. rankingtables = map.new();
  14. ascendingGames = set.new();
  15. ranking.add("§b", "BedWars", "bwranks", "All Kills", false);
  16. ranking.add("§c", "RageMode", "rmranks", "All Kills", false);
  17. ranking.add("§a", "Jump'n'Run", "jumpranks", "Points Record", false);
  18. ranking.add("§5", "Rebuild", "rebuildranks", "All solved patterns", false);
  19. ranking.add("§d", "FastBridge", "fastbridgeranks", "Points Record", false);
  20. ranking.add("§6", "SnowGame", "snowranks", "Kills", false);
  21. ranking.add("§6", "TJR", "tjrranks", "Checkpoints", false);
  22. ranking.add("§b", "IJR", "icejrranks", "Checkpoints", false);
  23. ranking.add("§d", "Letters", "letterranks", "Time", true);
  24. ranking.add("§a", "Sammelfieber", "sfsingle", "Points Record", false);
  25. ranking.add("§2", "Buttons", "buttonranks", "Points Record", false);
  26. ranking.add("§9", "Catch", "fncranks", "Wins", false);
  27. ranking.add("§9", "Inverting", "invertranks", "Points Record", true);
  28. ranking.add("§9", "Spleef", "spleefranks", "Wins", false);
  29. ranking.add("§c", "Knockfight", "knockranks", "All Kills", false);
  30. ranking.add("§9", "Leapfrog", "leapfrogranks", "Points Record", false);
  31. ranking.add("§6", "Parcour", "parcourranks1", "Time", true);
  32. ranking.add("§e", "Halma", "halmaranks", "Wins", false);
  33. ranking.add("§e", "ShoppingChaos", "shoppingranks", "Wins", false);
  34. ranking.register("invertranks5x5");
  35. ranking.register("invertranks7x7");
  36. ranking.register("invertranks10x10");
  37. ranking.register("invertranks5x5cl");
  38. ranking.register("invertranks7x7cl");
  39. ranking.register("invertranks10x10cl");
  40. msg("dev", "§bStatistics §rloaded");
  41. @wait
  42. wait();
  43. if(event == "custom_command") {
  44. command = text.toLowerCase(command);
  45. size = list.getSize(args);
  46. if(command == "stats") {
  47. if(size == 0) {
  48. @statshelp
  49. msg.prefix(player, stats_prefix, "§r/stats ...");
  50. msg(player, "§b - <game> §rShows own stats");
  51. msg(player, "§b - <game> top §rShows Top Ten");
  52. msg(player, "§b - <game> <position> §rShows stats from a position");
  53. msg(player, "§b - <game> <player> §rShows stats from a player");
  54. if(perm.has(player, "stats.remove")) {
  55. msg(player, "§b - <game> <player> remove §rRemoves stats from a player");
  56. }
  57. goto("wait");
  58. }
  59. gamename = list.getIndex(args, 0);
  60. if(!list.contains(games, gamename)) {
  61. msg.prefix(player, stats_prefix, "Unknown game.");
  62. goto("wait");
  63. }
  64. table = map.get(rankingtables, gamename);
  65. if(size == 1) {
  66. p_name = player.getName(player);
  67. playerStatsCore(player, gamename, p_name);
  68. goto("wait");
  69. }
  70. if(size == 2) {
  71. arg1 = list.getIndex(args, 1);
  72. if(isDouble(arg1)) {
  73. if(set.contains(ascendingGames, gamename)) {
  74. order = "ASC";
  75. } else {
  76. order = "DESC";
  77. }
  78. a = ranking.getArrayFromRank(table, arg1, order);
  79. if(a == null) {
  80. msg.prefix(player, stats_prefix, "Invalid rank.");
  81. goto("wait");
  82. }
  83. p_name = player.getNameFromId(a[0]);
  84. playerStatsCore(player, gamename, p_name);
  85. goto("wait");
  86. }
  87. arg1 = text.toLowerCase(arg1);
  88. if(arg1 == "top") {
  89. color = map.get(colorcodes, gamename);
  90. if(gamename == "Inverting") {
  91. msg.prefix(player, concat(color, gamename), "Click for Top Ten");
  92. printClick(player, "Inverting 5x5", "/topinvstats 5x5");
  93. printClick(player, "Inverting 7x7", "/topinvstats 7x7");
  94. printClick(player, "Inverting 10x10", "/topinvstats 10x10");
  95. printClick(player, "Inverting Classic 5x5", "/topinvstats 5x5cl");
  96. printClick(player, "Inverting Classic 7x7", "/topinvstats 7x7cl");
  97. printClick(player, "Inverting Classic 10x10", "/topinvstats 10x10cl");
  98. goto("wait");
  99. }
  100. showTopStats(player, gamename, table);
  101. goto("wait");
  102. }
  103. }
  104. arg1 = list.getIndex(args, 1);
  105. if(!checkIfEverOnline(arg1)) {
  106. msg.prefix(player, stats_prefix, "This player has never been online.");
  107. goto("wait");
  108. }
  109. p_name = player.getName(player.getUuid(arg1));
  110. if(size == 2) {
  111. playerStatsCore(player, gamename, p_name);
  112. goto("wait");
  113. }
  114. if(size == 3) {
  115. arg2 = text.toLowerCase(list.getIndex(args, 2));
  116. if(arg2 == "remove") {
  117. if(table == "invertranks") {
  118. color = map.get(colorcodes, gamename);
  119. msg.prefix(player, concat(color, gamename), concat("Click to remove stats from ", p_name));
  120. printClick(player, "Inverting 5x5", concat("/removeinvstats ", p_name, " 5x5"));
  121. printClick(player, "Inverting 7x7", concat("/removeinvstats ", p_name, " 7x7"));
  122. printClick(player, "Inverting 10x10", concat("/removeinvstats ", p_name, " 10x10"));
  123. printClick(player, "Inverting Classic 5x5", concat("/removeinvstats ", p_name, " 5x5cl"));
  124. printClick(player, "Inverting Classic 7x7", concat("/removeinvstats ", p_name, " 7x7cl"));
  125. printClick(player, "Inverting Classic 10x10", concat("/removeinvstats ", p_name, " 10x10cl"));
  126. goto("wait");
  127. }
  128. p_uuid = player.getUuid(p_name);
  129. p_id = player.getId(p_uuid);
  130. if(table == "rmranks") {
  131. minigame.setWon(p_id, "rm", 0);
  132. } elseif(table == "fastbridgeranks") {
  133. minigame.setWon(p_id, "fb", 0);
  134. } elseif(table == "knockranks") {
  135. minigame.setWon(p_id, "knock", 0);
  136. }
  137. p_id = player.getId(p_uuid);
  138. ranking.removePlayer(p_id, table);
  139. msg.prefix(player, stats_prefix, concat("§e", p_name, "§r from statistic removed."));
  140. goto("wait");
  141. }
  142. }
  143. goto("statshelp");
  144. }
  145. if(command == "sfstats") {
  146. if(size != 2) {
  147. goto("wait");
  148. }
  149. p_name = list.getIndex(args, 0);
  150. if(!checkIfEverOnline(p_name)) {
  151. goto("wait");
  152. }
  153. table = list.getIndex(args, 1);
  154. if(!list.contains(sf_list, table)) {
  155. goto("wait");
  156. }
  157. gamename = "Sammelfieber";
  158. message = map.get(messages, gamename);
  159. color = map.get(colorcodes, gamename);
  160. msg.prefix(player, concat(color, gamename), concat("§eWertung nach: §r", message));
  161. showPlayerStats(player, gamename, table, p_name);
  162. goto("wait");
  163. }
  164. if(command == "topsfstats") {
  165. if(size != 1) {
  166. goto("wait");
  167. }
  168. table = list.getIndex(args, 0);
  169. if(!list.contains(sf_list, table)) {
  170. goto("wait");
  171. }
  172. gamename = "Sammelfieber";
  173. showTopStats(player, gamename, table);
  174. goto("wait");
  175. }
  176. if(command == "removesfstats") {
  177. if(size != 2) {
  178. goto("wait");
  179. }
  180. p_name = list.getIndex(args, 0);
  181. if(!checkIfEverOnline(p_name)) {
  182. goto("wait");
  183. }
  184. table = list.getIndex(args, 1);
  185. if(!list.contains(sf_list, table)) {
  186. goto("wait");
  187. }
  188. gamename = "Sammelfieber";
  189. p_uuid = player.getUuid(p_name);
  190. p_id = player.getId(p_uuid);
  191. p_name = player.getNameFromId(p_id);
  192. ranking.removePlayer(p_id, table);
  193. msg.prefix(player, stats_prefix, concat("§e", p_name, "§r from statistic removed."));
  194. goto("wait");
  195. }
  196. if(command == "invstats") {
  197. if(size != 2) {
  198. goto("wait");
  199. }
  200. p_name = list.getIndex(args, 0);
  201. if(!checkIfEverOnline(p_name)) {
  202. goto("wait");
  203. }
  204. sub_game = list.getIndex(args, 1);
  205. if(!list.contains(inverting_list, sub_game)) {
  206. goto("wait");
  207. }
  208. gamename = "Inverting";
  209. table = map.get(rankingtables, gamename);
  210. table = concat(table, sub_game);
  211. message = map.get(messages, gamename);
  212. color = map.get(colorcodes, gamename);
  213. msg.prefix(player, concat(color, gamename), concat("§eWertung nach: §r", message));
  214. showPlayerStats(player, gamename, table, p_name);
  215. goto("wait");
  216. }
  217. if(command == "topinvstats") {
  218. if(size != 1) {
  219. goto("wait");
  220. }
  221. sub_game = list.getIndex(args, 0);
  222. if(!list.contains(inverting_list, sub_game)) {
  223. goto("wait");
  224. }
  225. gamename = "Inverting";
  226. table = map.get(rankingtables, gamename);
  227. table = concat(table, sub_game);
  228. showTopStats(player, gamename, table);
  229. goto("wait");
  230. }
  231. if(command == "removeinvstats") {
  232. if(size != 2) {
  233. goto("wait");
  234. }
  235. p_name = list.getIndex(args, 0);
  236. if(!checkIfEverOnline(p_name)) {
  237. goto("wait");
  238. }
  239. sub_game = list.getIndex(args, 1);
  240. if(!list.contains(inverting_list, sub_game)) {
  241. goto("wait");
  242. }
  243. gamename = "Inverting";
  244. p_uuid = player.getUuid(p_name);
  245. p_id = player.getId(p_uuid);
  246. p_name = player.getNameFromId(p_id);
  247. table = map.get(rankingtables, gamename);
  248. table = concat(table, sub_game);
  249. ranking.removePlayer(p_id, table);
  250. msg.prefix(player, stats_prefix, concat("§e", p_name, "§r from statistic removed."));
  251. goto("wait");
  252. }
  253. }
  254. goto("wait");
  255. function printClick(player, show_text, command) {
  256. msg(player, text.click(show_text, command));
  257. }
  258. function playerStatsCore(player, gamename, p_name) {
  259. color = map.get($colorcodes, gamename);
  260. if(gamename == "Inverting") {
  261. msg.prefix(player, concat(color, gamename), concat("Click for stats from §b", p_name));
  262. printClick(player, "Inverting 5x5", concat("/invstats ", p_name, " 5x5"));
  263. printClick(player, "Inverting 7x7", concat("/invstats ", p_name, " 7x7"));
  264. printClick(player, "Inverting 10x10", concat("/invstats ", p_name, " 10x10"));
  265. printClick(player, "Inverting Classic 5x5", concat("/invstats ", p_name, " 5x5cl"));
  266. printClick(player, "Inverting Classic 7x7", concat("/invstats ", p_name, " 7x7cl"));
  267. printClick(player, "Inverting Classic 10x10", concat("/invstats ", p_name, " 10x10cl"));
  268. return;
  269. }
  270. table = map.get($rankingtables, gamename);
  271. message = map.get($messages, gamename);
  272. msg.prefix(player, concat(color, gamename), concat("§eWertung nach: §r", message));
  273. showPlayerStats(player, gamename, table, p_name);
  274. }
  275. function showPlayerStats(player, gamename, table, p_name) {
  276. p_id = player.getId(player.getUuid(p_name));
  277. if(set.contains($ascendingGames, gamename)) {
  278. order = "ASC";
  279. } else {
  280. order = "DESC";
  281. }
  282. rang = ranking.getPlayerRank(p_id, table, order);
  283. if(rang == -1) {
  284. msg.prefix(player, $stats_prefix, "No data available.");
  285. } else {
  286. a = ranking.getPlayerStats(p_id, table, "ASC");
  287. points = a[1];
  288. if(gamename == "Letters" || gamename == "Parcour") {
  289. sendTimedRank(player, p_name, rang, points);
  290. } elseif(gamename == "Todesjump") {
  291. points--;
  292. sendRank(player, p_name, rang, points);
  293. } else {
  294. sendRank(player, p_name, rang, points);
  295. }
  296. }
  297. }
  298. function showTopStats(player, gamename, table) {
  299. message = map.get($messages, gamename);
  300. color = map.get($colorcodes, gamename);
  301. if(set.contains($ascendingGames, gamename)) {
  302. list = ranking.getTopTenList(table, "ASC");
  303. } else {
  304. list = ranking.getTopTenList(table, "DESC");
  305. }
  306. if(list.getSize(list) == 0) {
  307. msg.prefix(player, concat(color, gamename), "Nobody played this game.");
  308. return;
  309. }
  310. msg(player, "");
  311. msg.prefix(player, concat(color, gamename), concat("§eWertung nach: §r", message));
  312. for(i = 0; i < 10; i++) {
  313. if(i == list.getSize(list)) {
  314. break;
  315. }
  316. a = list.getIndex(list, i);
  317. p_name = player.getNameFromId(a[0]);
  318. points = a[1];
  319. rang = i + 1;
  320. if(gamename == "Letters" || gamename == "Parcour") {
  321. sendTimedRank(player, p_name, rang, points);
  322. } elseif(gamename == "Todesjump") {
  323. points--;
  324. sendRank(player, p_name, rang, points);
  325. } else {
  326. sendRank(player, p_name, rang, points);
  327. }
  328. }
  329. msg(player, "");
  330. showPlayerStats(player, gamename, table, player.getName(player));
  331. }
  332. function ranking.add(colorcode, name, rankingtable, message, ascending) {
  333. map.add($colorcodes, name, colorcode);
  334. list.add($games, name);
  335. map.add($rankingtables, name, rankingtable);
  336. map.add($messages, name, message);
  337. if(ascending) {
  338. set.add($ascendingGames, name);
  339. }
  340. if(rankingtable == "invertranks") {
  341. return;
  342. }
  343. ranking.register(rankingtable);
  344. }
  345. function sendRank(player, p_name, rang, points) {
  346. msg(player, concat("§6", text.number(rang), " §r", p_name, " §e", text.number(points)));
  347. }
  348. function sendTimedRank(player, p_name, rang, points) {
  349. msg(player, concat("§6", text.number(rang), " §r", p_name, " §e", text.number(math.roundDown(points / 60)), " min ", text.number(math.round(points % 60)), " s"));
  350. }