event.load("custom_command"); stats_prefix = "§b§sStatistic"; inverting_list = list.new(); list.add(inverting_list, "5x5"); list.add(inverting_list, "7x7"); list.add(inverting_list, "10x10"); list.add(inverting_list, "5x5cl"); list.add(inverting_list, "7x7cl"); list.add(inverting_list, "10x10cl"); colorcodes = map.new(); games = list.new(); messages = map.new(); rankingtables = map.new(); ascendingGames = set.new(); ranking.add("§b", "BedWars", "bwranks", "All Kills", false); ranking.add("§c", "RageMode", "rmranks", "All Kills", false); ranking.add("§a", "Jump'n'Run", "jumpranks", "Points Record", false); ranking.add("§5", "Rebuild", "rebuildranks", "All solved patterns", false); ranking.add("§d", "FastBridge", "fastbridgeranks", "Points Record", false); ranking.add("§6", "SnowGame", "snowranks", "Kills", false); ranking.add("§6", "TJR", "tjrranks", "Checkpoints", false); ranking.add("§b", "IJR", "icejrranks", "Checkpoints", false); ranking.add("§d", "Letters", "letterranks", "Time", true); ranking.add("§a", "Sammelfieber", "sfsingle", "Points Record", false); ranking.add("§2", "Buttons", "buttonranks", "Points Record", false); ranking.add("§9", "Catch", "fncranks", "Wins", false); ranking.add("§9", "Inverting", "invertranks", "Points Record", true); ranking.add("§9", "Spleef", "spleefranks", "Wins", false); ranking.add("§c", "Knockfight", "knockranks", "All Kills", false); ranking.add("§9", "Leapfrog", "leapfrogranks", "Points Record", false); ranking.add("§6", "Parcour", "parcourranks1", "Time", true); ranking.add("§e", "Halma", "halmaranks", "Wins", false); ranking.add("§e", "ShoppingChaos", "shoppingranks", "Wins", false); ranking.register("invertranks5x5"); ranking.register("invertranks7x7"); ranking.register("invertranks10x10"); ranking.register("invertranks5x5cl"); ranking.register("invertranks7x7cl"); ranking.register("invertranks10x10cl"); msg("dev", "§bStatistics §rloaded"); @wait wait(); if(event == "custom_command") { command = text.toLowerCase(command); size = list.getSize(args); if(command == "stats") { if(size == 0) { @statshelp msg.prefix(player, stats_prefix, "§r/stats ..."); msg(player, "§b§s - <§b§tgame§b§s> §rShows own stats"); msg(player, "§b§s - <§b§tgame§b§s> top §rShows Top Ten"); msg(player, "§b§s - <§b§tgame§b§s> <§b§tposition§s> §rShows stats from a position"); msg(player, "§b§s - <§b§tgame§b§s> <§b§tplayer§s> §rShows stats from a player"); if(perm.has(player, "stats.remove")) { msg(player, "§b§s - <§b§tgame§b§s> <§b§tplayer§s> remove §rRemoves stats from a player"); } goto("wait"); } gamename = list.getIndex(args, 0); if(!list.contains(games, gamename)) { msg.prefix(player, stats_prefix, "Unknown game."); goto("wait"); } table = map.get(rankingtables, gamename); if(size == 1) { p_name = player.getName(player); playerStatsCore(player, gamename, p_name); goto("wait"); } if(size == 2) { arg1 = list.getIndex(args, 1); if(isDouble(arg1)) { if(set.contains(ascendingGames, gamename)) { order = "ASC"; } else { order = "DESC"; } a = ranking.getArrayFromRank(table, arg1, order); if(a == null) { msg.prefix(player, stats_prefix, "Invalid rank."); goto("wait"); } p_name = player.getNameFromId(a[0]); playerStatsCore(player, gamename, p_name); goto("wait"); } arg1 = text.toLowerCase(arg1); if(arg1 == "top") { color = map.get(colorcodes, gamename); if(gamename == "Inverting") { msg.prefix(player, concat(color, gamename), "Click for Top Ten"); printClick(player, "Inverting 5x5", "/topinvstats 5x5"); printClick(player, "Inverting 7x7", "/topinvstats 7x7"); printClick(player, "Inverting 10x10", "/topinvstats 10x10"); printClick(player, "Inverting Classic 5x5", "/topinvstats 5x5cl"); printClick(player, "Inverting Classic 7x7", "/topinvstats 7x7cl"); printClick(player, "Inverting Classic 10x10", "/topinvstats 10x10cl"); goto("wait"); } showTopStats(player, gamename, table); goto("wait"); } } arg1 = list.getIndex(args, 1); if(!checkIfEverOnline(arg1)) { msg.prefix(player, stats_prefix, "This player has never been online."); goto("wait"); } p_name = player.getName(player.getUuid(arg1)); if(size == 2) { playerStatsCore(player, gamename, p_name); goto("wait"); } if(size == 3) { arg2 = text.toLowerCase(list.getIndex(args, 2)); if(arg2 == "remove") { if(table == "invertranks") { color = map.get(colorcodes, gamename); msg.prefix(player, concat(color, gamename), concat("Click to remove stats from ", p_name)); printClick(player, "Inverting 5x5", concat("/removeinvstats ", p_name, " 5x5")); printClick(player, "Inverting 7x7", concat("/removeinvstats ", p_name, " 7x7")); printClick(player, "Inverting 10x10", concat("/removeinvstats ", p_name, " 10x10")); printClick(player, "Inverting Classic 5x5", concat("/removeinvstats ", p_name, " 5x5cl")); printClick(player, "Inverting Classic 7x7", concat("/removeinvstats ", p_name, " 7x7cl")); printClick(player, "Inverting Classic 10x10", concat("/removeinvstats ", p_name, " 10x10cl")); goto("wait"); } p_uuid = player.getUuid(p_name); p_id = player.getId(p_uuid); if(table == "rmranks") { minigame.setWon(p_id, "rm", 0); } elseif(table == "fastbridgeranks") { minigame.setWon(p_id, "fb", 0); } elseif(table == "knockranks") { minigame.setWon(p_id, "knock", 0); } p_id = player.getId(p_uuid); ranking.removePlayer(p_id, table); msg.prefix(player, stats_prefix, concat("§e", p_name, "§r from statistic removed.")); goto("wait"); } } goto("statshelp"); } if(command == "sfstats") { if(size != 2) { goto("wait"); } p_name = list.getIndex(args, 0); if(!checkIfEverOnline(p_name)) { goto("wait"); } table = list.getIndex(args, 1); if(!list.contains(sf_list, table)) { goto("wait"); } gamename = "Sammelfieber"; message = map.get(messages, gamename); color = map.get(colorcodes, gamename); msg.prefix(player, concat(color, gamename), concat("§eWertung nach: §r", message)); showPlayerStats(player, gamename, table, p_name); goto("wait"); } if(command == "topsfstats") { if(size != 1) { goto("wait"); } table = list.getIndex(args, 0); if(!list.contains(sf_list, table)) { goto("wait"); } gamename = "Sammelfieber"; showTopStats(player, gamename, table); goto("wait"); } if(command == "removesfstats") { if(size != 2) { goto("wait"); } p_name = list.getIndex(args, 0); if(!checkIfEverOnline(p_name)) { goto("wait"); } table = list.getIndex(args, 1); if(!list.contains(sf_list, table)) { goto("wait"); } gamename = "Sammelfieber"; p_uuid = player.getUuid(p_name); p_id = player.getId(p_uuid); p_name = player.getNameFromId(p_id); ranking.removePlayer(p_id, table); msg.prefix(player, stats_prefix, concat("§e", p_name, "§r from statistic removed.")); goto("wait"); } if(command == "invstats") { if(size != 2) { goto("wait"); } p_name = list.getIndex(args, 0); if(!checkIfEverOnline(p_name)) { goto("wait"); } sub_game = list.getIndex(args, 1); if(!list.contains(inverting_list, sub_game)) { goto("wait"); } gamename = "Inverting"; table = map.get(rankingtables, gamename); table = concat(table, sub_game); message = map.get(messages, gamename); color = map.get(colorcodes, gamename); msg.prefix(player, concat(color, gamename), concat("§eWertung nach: §r", message)); showPlayerStats(player, gamename, table, p_name); goto("wait"); } if(command == "topinvstats") { if(size != 1) { goto("wait"); } sub_game = list.getIndex(args, 0); if(!list.contains(inverting_list, sub_game)) { goto("wait"); } gamename = "Inverting"; table = map.get(rankingtables, gamename); table = concat(table, sub_game); showTopStats(player, gamename, table); goto("wait"); } if(command == "removeinvstats") { if(size != 2) { goto("wait"); } p_name = list.getIndex(args, 0); if(!checkIfEverOnline(p_name)) { goto("wait"); } sub_game = list.getIndex(args, 1); if(!list.contains(inverting_list, sub_game)) { goto("wait"); } gamename = "Inverting"; p_uuid = player.getUuid(p_name); p_id = player.getId(p_uuid); p_name = player.getNameFromId(p_id); table = map.get(rankingtables, gamename); table = concat(table, sub_game); ranking.removePlayer(p_id, table); msg.prefix(player, stats_prefix, concat("§e", p_name, "§r from statistic removed.")); goto("wait"); } } goto("wait"); function printClick(player, show_text, command) { msg(player, text.click(show_text, command)); } function playerStatsCore(player, gamename, p_name) { color = map.get($colorcodes, gamename); if(gamename == "Inverting") { msg.prefix(player, concat(color, gamename), concat("Click for stats from §b§s", p_name)); printClick(player, "Inverting 5x5", concat("/invstats ", p_name, " 5x5")); printClick(player, "Inverting 7x7", concat("/invstats ", p_name, " 7x7")); printClick(player, "Inverting 10x10", concat("/invstats ", p_name, " 10x10")); printClick(player, "Inverting Classic 5x5", concat("/invstats ", p_name, " 5x5cl")); printClick(player, "Inverting Classic 7x7", concat("/invstats ", p_name, " 7x7cl")); printClick(player, "Inverting Classic 10x10", concat("/invstats ", p_name, " 10x10cl")); return; } table = map.get($rankingtables, gamename); message = map.get($messages, gamename); msg.prefix(player, concat(color, gamename), concat("§eWertung nach: §r", message)); showPlayerStats(player, gamename, table, p_name); } function showPlayerStats(player, gamename, table, p_name) { p_id = player.getId(player.getUuid(p_name)); if(set.contains($ascendingGames, gamename)) { order = "ASC"; } else { order = "DESC"; } rang = ranking.getPlayerRank(p_id, table, order); if(rang == -1) { msg.prefix(player, $stats_prefix, "No data available."); } else { a = ranking.getPlayerStats(p_id, table, "ASC"); points = a[1]; if(gamename == "Letters" || gamename == "Parcour") { sendTimedRank(player, p_name, rang, points); } elseif(gamename == "Todesjump") { points--; sendRank(player, p_name, rang, points); } else { sendRank(player, p_name, rang, points); } } } function showTopStats(player, gamename, table) { message = map.get($messages, gamename); color = map.get($colorcodes, gamename); if(set.contains($ascendingGames, gamename)) { list = ranking.getTopTenList(table, "ASC"); } else { list = ranking.getTopTenList(table, "DESC"); } if(list.getSize(list) == 0) { msg.prefix(player, concat(color, gamename), "Nobody played this game."); return; } msg(player, ""); msg.prefix(player, concat(color, gamename), concat("§eWertung nach: §r", message)); for(i = 0; i < 10; i++) { if(i == list.getSize(list)) { break; } a = list.getIndex(list, i); p_name = player.getNameFromId(a[0]); points = a[1]; rang = i + 1; if(gamename == "Letters" || gamename == "Parcour") { sendTimedRank(player, p_name, rang, points); } elseif(gamename == "Todesjump") { points--; sendRank(player, p_name, rang, points); } else { sendRank(player, p_name, rang, points); } } msg(player, ""); showPlayerStats(player, gamename, table, player.getName(player)); } function ranking.add(colorcode, name, rankingtable, message, ascending) { map.add($colorcodes, name, colorcode); list.add($games, name); map.add($rankingtables, name, rankingtable); map.add($messages, name, message); if(ascending) { set.add($ascendingGames, name); } if(rankingtable == "invertranks") { return; } ranking.register(rankingtable); } function sendRank(player, p_name, rang, points) { msg(player, concat("§6", text.number(rang), " §r", p_name, " §e", text.number(points))); } function sendTimedRank(player, p_name, rang, points) { 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")); }