123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- event.load("player_join");
- event.load("player_leave");
- event.load("player_giveup");
- event.load("player_hurt");
- event.load("block_click");
- list.new("all");
- list.new("resetblocks");
- gamesworldloc = read.location(ggv("SERVER", "gamesspawn"));
- no_quest_msg = true;
- started = false;
- airblock = read.item("AIR");
- gamename = "§9Spleef";
- counterindex = 0; //Laufvariable zum Mitzählen, welche Zeit des Startcountdowns als nächsten an der Reihe ist
- list.new("starttimes"); //Liste zum schnellen Variieren des Startcountdowns
- list.add(starttimes, 7);
- list.add(starttimes, 5);
- list.add(starttimes, 4);
- list.add(starttimes, 3);
- list.add(starttimes, 2);
- list.add(starttimes, 1);
- list.add(starttimes, 0);
- @lobby
- if(list.getSize(all) >= maxplayers) {
- player.speak(player, gamename, "§rDiese Map ist bereits voll.");
- player.kick(player);
- goto("checklobby");
- }
- player.speak("all", gamename, concat("§6", player_name, " §rhat das Spiel betreten"));
- list.add(all, player_name);
- block.setSign(gamesignloc, 2, concat(list.getSize(all), "/", maxplayers));
- command("clear ", player_name);
- entity.setHealth(player, 20);
- player.setHunger(player, 20);
- player.setSaturation(player, 5);
- entity.teleport(player, lobbyloc);
- if(ggv(player, "spleefplayed") == null) {
- sgv(player, "spleefplayed", 0);
- }
- if(ggv(player, "spleefedblocks") == null) {
- sgv(player, "spleefedblocks", 0);
- }
- player.speak(player_name, gamename, "§rDu befindest dich in der ", gamename, " §rLobby.");
- if(!started) {
- if(list.getSize(all) >= playersneeded) {
- goto("startgame");
- }
- @waiting
- started = false;
- counterindex = 0;
- waitfor = playersneeded - list.getSize(all);
- player.speak("all", gamename, "§rEs wird auf ", concat("§6", waitfor), " §rSpieler gewartet.");
- }
- @checklobby
- wait();
- if(event == "player_join") {
- goto("lobby");
- }
- if(event == "player_leave" || event == "player_giveup") {
- goto("leavelobby");
- }
- if(event == "block_click" || event == "player_hurt") {
- cancel = true;
- goto("checklobby");
- }
- goto("checklobby");
- @leavelobby
- list.remove(all, player_name);
- block.setSign(gamesignloc, 2, concat(list.getSize(all), "/", maxplayers));
- if(list.getSize(all) < playersneeded) {
- block.setSign(gamesignloc, 3, "§2Wartet");
- }
- entity.teleport(player, gamesworldloc);
- entity.setHealth(player, 20);
- player.setHunger(player, 20);
- player.setSaturation(player, 5);
- player.kick(player);
- goto("checklobby");
- @startgame
- if(list.getSize(all) < playersneeded) {
- goto("waiting");
- }
- started = true;
- block.setSign(gamesignloc, 3, "§bStartet");
- noticetime = list.getIndex(starttimes, counterindex);
- if(noticetime == 5) {
- for(i = 0; i <= list.getSize(all) - 1; i++) {
- title.setSub(read.player(list.getIndex(all, i)), mapname);
- title.send(read.player(list.getIndex(all, i)), gamename);
- }
- }
- if(noticetime == 0) {
- goto("finalstart");
- }
- noticetime2 = list.getIndex(starttimes, inc("counterindex"));
- if(noticetime == 1) {
- player.speak("all", gamename, concat("§rDas Spiel startet in §6", noticetime, " §rSekunde."));
- } else() {
- player.speak("all", gamename, concat("§rDas Spiel startet in §6", noticetime, " §rSekunden."));
- }
- stime = (noticetime - noticetime2) * 20;
- sgoto(stime, "startgame");
- for(i = 0; i <= list.getSize(all) - 1; i++) {
- p = read.player(list.getIndex(all, i));
- player.playSound(p, "block.note.bass");
- }
- goto("checklobby");
- @finalstart
- no_join = true;
- player.speak("all", gamename, "§rDas Spiel läuft.");
- block.setSign(gamesignloc, 2, concat(list.getSize(all), "/", maxplayers));
- block.setSign(gamesignloc, 3, "§6Läuft");
- display.add("all", 0, "Anzahl Spieler");
- display.add("all", 1, list.getSize(all));
- for(i = 0; i <= list.getSize(all) - 1; i++) {
- pname = list.getIndex(all, i);
- p = read.player(pname);
- entity.teleport(p, list.getIndex(startlocs, i));
- if(player.isSurvival(p)) {
- if(player.isAdventure(p)) {
- command("gamemode survival ", pname);
- }
- } else() {
- command("gamemode survival ", pname);
- }
- if(player.hasFly(p)) {
- command("fly ", pname, " off");
- }
- setVar(concat(pname, "spleefed"), 0);
- }
- @checkgame
- wait();
- if(event == "player_hurt") {
- cancel = true;
- if(player_damage_cause == "outOfWorld") {
- player.speak("all", gamename, concat("§6", player_name, " §rfiel hinunter"));
- goto("leavegame");
- }
- goto("checkgame");
- }
- if(event == "block_click") {
- cancel = true;
- if(action == "left") {
- if(block_type == spleefable) {
- block.set(block_loc, airblock);
- list.add(resetblocks, block_loc);
- setVar(concat(player_name, "spleefed"), ++concat(player_name, "spleefed"));
- }
- }
- goto("checkgame");
- }
- if(event == "player_giveup" || event == "player_leave") {
- player.speak("all", gamename, concat("§6", player_name, " §rhat das Spiel verlassen"));
- goto("leavegame");
- }
- goto("checkgame");
- @leavegame
- playedgames = ggv(player, "spleefplayed");
- sgv(player, "spleefplayed", ++playedgames);
- sgv(player, "spleefedblocks", ggv(player, "spleefedblocks") + getVar(concat(player_name, "spleefed")));
- uuid = player.getUuid(player);
- wongames = gmap.get("spleefranks", uuid);
- if(wongames == null) {
- wongames = 0;
- gmap.add("spleefranks", uuid, wongames);
- }
- display.reset(player);
- entity.setHealth(player, 20);
- player.setHunger(player, 20);
- player.setSaturation(player, 5);
- player.kick(player);
- entity.teleport(player, gamesworldloc);
- list.remove(all, player_name);
- size = list.getSize(all);
- display.add("all", 1, size);
- block.setSign(gamesignloc, 2, concat(size, "/", maxplayers));
- showstats(player_name, player, uuid);
- if(size < playersneeded) {
- winnername = list.getIndex(all, 0);
- goto("win");
- }
- if(player_name == waitforplayer) {
- goto("nextplayer");
- }
- goto("checkgame");
- @win
- block.setSign(gamesignloc, 2, concat("0/", maxplayers));
- block.setSign(gamesignloc, 3, "§2Wartet");
- winner = read.player(winnername);
- winneruuid = player.getUuid(winnername);
- display.reset(winner);
- playedgames = ggv(winneruuid, "spleefplayed");
- sgv(winneruuid, "spleefplayed", ++playedgames);
- sgv(winneruuid, "spleefedblocks", ggv(winneruuid, "spleefedblocks") + getVar(concat(winnername, "spleefed")));
- wongames = gmap.get("spleefranks", winneruuid);
- if(wongames == null) {
- wongames = 0;
- }
- gmap.add("spleefranks", winneruuid, ++wongames);
- player.speak("all", gamename, concat("§6", winnername, " §rhat gewonnen"));
- entity.teleport(winner, gamesworldloc);
- spleefable = read.item(spleefable);
- for(i = 0; i <= list.getSize(resetblocks) - 1; i++) {
- block.set(list.getIndex(resetblocks, i), spleefable);
- reset();
- }
- showstats(winnername, winner, winneruuid);
- term();
- @showstats //showstats(player_name, player, uuid)
- push(pname, p, uuid, size);
- size = popArg();
- uuid = popArg();
- p = popArg();
- pname = popArg();
- player.speak(p, gamename, "§7---= §eDeine Statistik §7=--");
- msg(p, concat("§7Gespielte Spiele: §e", playedgames));
- msg(p, concat("§7Gewonnene Spiele: §e", wongames));
- msg(p, concat("§7Gespleefte Blöcke: §e", ggv(uuid, "spleefedblocks")));
- if(playedgames != 0 && wongames != 0) {
- msg(p, concat("§7Siegwahrscheinlichkeit: §e", text.number(math.roundComma((wongames / playedgames) * 100, 2)), "%"));
- }
- gmap.toTable("table", "spleefranks");
- table.setSortColumn(table, 1);
- table.sort(table);
- table.reverse(table);
- table.setSortColumn(table, 0);
- msg(p, concat("§7Rang: §e", table.getIndexOf(table, uuid) + 1));
- msg(p, "§7----------------------");
- pop("pname", "p", "uuid", "size");
- return();
|