spleef.txt 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. event.load("player_join");
  2. event.load("player_leave");
  3. event.load("player_giveup");
  4. event.load("player_hurt");
  5. event.load("block_click");
  6. list.new("all");
  7. list.new("resetblocks");
  8. gamesworldloc = read.location(ggv("SERVER", "gamesspawn"));
  9. no_quest_msg = true;
  10. started = false;
  11. airblock = read.item("AIR");
  12. gamename = "§9Spleef";
  13. counterindex = 0; //Laufvariable zum Mitzählen, welche Zeit des Startcountdowns als nächsten an der Reihe ist
  14. list.new("starttimes"); //Liste zum schnellen Variieren des Startcountdowns
  15. list.add(starttimes, 7);
  16. list.add(starttimes, 5);
  17. list.add(starttimes, 4);
  18. list.add(starttimes, 3);
  19. list.add(starttimes, 2);
  20. list.add(starttimes, 1);
  21. list.add(starttimes, 0);
  22. @lobby
  23. if(list.getSize(all) >= maxplayers) {
  24. player.speak(player, gamename, "§rDiese Map ist bereits voll.");
  25. player.kick(player);
  26. goto("checklobby");
  27. }
  28. player.speak("all", gamename, concat("§6", player_name, " §rhat das Spiel betreten"));
  29. list.add(all, player_name);
  30. block.setSign(gamesignloc, 2, concat(list.getSize(all), "/", maxplayers));
  31. command("clear ", player_name);
  32. entity.setHealth(player, 20);
  33. player.setHunger(player, 20);
  34. player.setSaturation(player, 5);
  35. entity.teleport(player, lobbyloc);
  36. if(ggv(player, "spleefplayed") == null) {
  37. sgv(player, "spleefplayed", 0);
  38. }
  39. if(ggv(player, "spleefedblocks") == null) {
  40. sgv(player, "spleefedblocks", 0);
  41. }
  42. player.speak(player_name, gamename, "§rDu befindest dich in der ", gamename, " §rLobby.");
  43. if(!started) {
  44. if(list.getSize(all) >= playersneeded) {
  45. goto("startgame");
  46. }
  47. @waiting
  48. started = false;
  49. counterindex = 0;
  50. waitfor = playersneeded - list.getSize(all);
  51. player.speak("all", gamename, "§rEs wird auf ", concat("§6", waitfor), " §rSpieler gewartet.");
  52. }
  53. @checklobby
  54. wait();
  55. if(event == "player_join") {
  56. goto("lobby");
  57. }
  58. if(event == "player_leave" || event == "player_giveup") {
  59. goto("leavelobby");
  60. }
  61. if(event == "block_click" || event == "player_hurt") {
  62. cancel = true;
  63. goto("checklobby");
  64. }
  65. goto("checklobby");
  66. @leavelobby
  67. list.remove(all, player_name);
  68. block.setSign(gamesignloc, 2, concat(list.getSize(all), "/", maxplayers));
  69. if(list.getSize(all) < playersneeded) {
  70. block.setSign(gamesignloc, 3, "§2Wartet");
  71. }
  72. entity.teleport(player, gamesworldloc);
  73. entity.setHealth(player, 20);
  74. player.setHunger(player, 20);
  75. player.setSaturation(player, 5);
  76. player.kick(player);
  77. goto("checklobby");
  78. @startgame
  79. if(list.getSize(all) < playersneeded) {
  80. goto("waiting");
  81. }
  82. started = true;
  83. block.setSign(gamesignloc, 3, "§bStartet");
  84. noticetime = list.getIndex(starttimes, counterindex);
  85. if(noticetime == 5) {
  86. for(i = 0; i <= list.getSize(all) - 1; i++) {
  87. title.setSub(read.player(list.getIndex(all, i)), mapname);
  88. title.send(read.player(list.getIndex(all, i)), gamename);
  89. }
  90. }
  91. if(noticetime == 0) {
  92. goto("finalstart");
  93. }
  94. noticetime2 = list.getIndex(starttimes, inc("counterindex"));
  95. if(noticetime == 1) {
  96. player.speak("all", gamename, concat("§rDas Spiel startet in §6", noticetime, " §rSekunde."));
  97. } else() {
  98. player.speak("all", gamename, concat("§rDas Spiel startet in §6", noticetime, " §rSekunden."));
  99. }
  100. stime = (noticetime - noticetime2) * 20;
  101. sgoto(stime, "startgame");
  102. for(i = 0; i <= list.getSize(all) - 1; i++) {
  103. p = read.player(list.getIndex(all, i));
  104. player.playSound(p, "block.note.bass");
  105. }
  106. goto("checklobby");
  107. @finalstart
  108. no_join = true;
  109. player.speak("all", gamename, "§rDas Spiel läuft.");
  110. block.setSign(gamesignloc, 2, concat(list.getSize(all), "/", maxplayers));
  111. block.setSign(gamesignloc, 3, "§6Läuft");
  112. display.add("all", 0, "Anzahl Spieler");
  113. display.add("all", 1, list.getSize(all));
  114. for(i = 0; i <= list.getSize(all) - 1; i++) {
  115. pname = list.getIndex(all, i);
  116. p = read.player(pname);
  117. entity.teleport(p, list.getIndex(startlocs, i));
  118. if(player.isSurvival(p)) {
  119. if(player.isAdventure(p)) {
  120. command("gamemode survival ", pname);
  121. }
  122. } else() {
  123. command("gamemode survival ", pname);
  124. }
  125. if(player.hasFly(p)) {
  126. command("fly ", pname, " off");
  127. }
  128. setVar(concat(pname, "spleefed"), 0);
  129. }
  130. @checkgame
  131. wait();
  132. if(event == "player_hurt") {
  133. cancel = true;
  134. if(player_damage_cause == "outOfWorld") {
  135. player.speak("all", gamename, concat("§6", player_name, " §rfiel hinunter"));
  136. goto("leavegame");
  137. }
  138. goto("checkgame");
  139. }
  140. if(event == "block_click") {
  141. cancel = true;
  142. if(action == "left") {
  143. if(block_type == spleefable) {
  144. block.set(block_loc, airblock);
  145. list.add(resetblocks, block_loc);
  146. setVar(concat(player_name, "spleefed"), ++concat(player_name, "spleefed"));
  147. }
  148. }
  149. goto("checkgame");
  150. }
  151. if(event == "player_giveup" || event == "player_leave") {
  152. player.speak("all", gamename, concat("§6", player_name, " §rhat das Spiel verlassen"));
  153. goto("leavegame");
  154. }
  155. goto("checkgame");
  156. @leavegame
  157. playedgames = ggv(player, "spleefplayed");
  158. sgv(player, "spleefplayed", ++playedgames);
  159. sgv(player, "spleefedblocks", ggv(player, "spleefedblocks") + getVar(concat(player_name, "spleefed")));
  160. uuid = player.getUuid(player);
  161. wongames = gmap.get("spleefranks", uuid);
  162. if(wongames == null) {
  163. wongames = 0;
  164. gmap.add("spleefranks", uuid, wongames);
  165. }
  166. display.reset(player);
  167. entity.setHealth(player, 20);
  168. player.setHunger(player, 20);
  169. player.setSaturation(player, 5);
  170. player.kick(player);
  171. entity.teleport(player, gamesworldloc);
  172. list.remove(all, player_name);
  173. size = list.getSize(all);
  174. display.add("all", 1, size);
  175. block.setSign(gamesignloc, 2, concat(size, "/", maxplayers));
  176. showstats(player_name, player, uuid);
  177. if(size < playersneeded) {
  178. winnername = list.getIndex(all, 0);
  179. goto("win");
  180. }
  181. if(player_name == waitforplayer) {
  182. goto("nextplayer");
  183. }
  184. goto("checkgame");
  185. @win
  186. block.setSign(gamesignloc, 2, concat("0/", maxplayers));
  187. block.setSign(gamesignloc, 3, "§2Wartet");
  188. winner = read.player(winnername);
  189. winneruuid = player.getUuid(winnername);
  190. display.reset(winner);
  191. playedgames = ggv(winneruuid, "spleefplayed");
  192. sgv(winneruuid, "spleefplayed", ++playedgames);
  193. sgv(winneruuid, "spleefedblocks", ggv(winneruuid, "spleefedblocks") + getVar(concat(winnername, "spleefed")));
  194. wongames = gmap.get("spleefranks", winneruuid);
  195. if(wongames == null) {
  196. wongames = 0;
  197. }
  198. gmap.add("spleefranks", winneruuid, ++wongames);
  199. player.speak("all", gamename, concat("§6", winnername, " §rhat gewonnen"));
  200. entity.teleport(winner, gamesworldloc);
  201. spleefable = read.item(spleefable);
  202. for(i = 0; i <= list.getSize(resetblocks) - 1; i++) {
  203. block.set(list.getIndex(resetblocks, i), spleefable);
  204. reset();
  205. }
  206. showstats(winnername, winner, winneruuid);
  207. term();
  208. @showstats //showstats(player_name, player, uuid)
  209. push(pname, p, uuid, size);
  210. size = popArg();
  211. uuid = popArg();
  212. p = popArg();
  213. pname = popArg();
  214. player.speak(p, gamename, "§7---= §eDeine Statistik §7=--");
  215. msg(p, concat("§7Gespielte Spiele: §e", playedgames));
  216. msg(p, concat("§7Gewonnene Spiele: §e", wongames));
  217. msg(p, concat("§7Gespleefte Blöcke: §e", ggv(uuid, "spleefedblocks")));
  218. if(playedgames != 0 && wongames != 0) {
  219. msg(p, concat("§7Siegwahrscheinlichkeit: §e", text.number(math.roundComma((wongames / playedgames) * 100, 2)), "%"));
  220. }
  221. gmap.toTable("table", "spleefranks");
  222. table.setSortColumn(table, 1);
  223. table.sort(table);
  224. table.reverse(table);
  225. table.setSortColumn(table, 0);
  226. msg(p, concat("§7Rang: §e", table.getIndexOf(table, uuid) + 1));
  227. msg(p, "§7----------------------");
  228. pop("pname", "p", "uuid", "size");
  229. return();