|
@@ -1,65 +1,47 @@
|
|
|
-list.new(placedblocks);
|
|
|
-list.new(points);
|
|
|
-map.new(spawn_locs);
|
|
|
+placedblocks = list.new();
|
|
|
+points = list.new();
|
|
|
+spawn_locs = map.new();
|
|
|
|
|
|
rankingtable = "fastbridgeranks";
|
|
|
-registerRanking(rankingtable);
|
|
|
-
|
|
|
-air_item_type = "minecraft:air";
|
|
|
gamename = "§dFastBridge";
|
|
|
start_sound = sound.get("minecraft:block.note_block.harp");
|
|
|
-ambient_sound_category = sound.getCategory("ambient");
|
|
|
|
|
|
gosub("setstart");
|
|
|
-player = script.getLeader();
|
|
|
-player_name = player.getName(player);
|
|
|
-gosub("lobbycore");
|
|
|
goto("simplelobby");
|
|
|
|
|
|
-@lobby
|
|
|
-display.add(player, 0, gamename);
|
|
|
-display.add(player, 1, "§7Map:");
|
|
|
-display.add(player, 2, "§3", mapname);
|
|
|
-return;
|
|
|
-
|
|
|
-@leavelobby
|
|
|
+@specificLobbyHandling
|
|
|
+if(event == "player_join") {
|
|
|
+ display.add(player, 0, gamename);
|
|
|
+ display.add(player, 1, "§7Map:");
|
|
|
+ display.add(player, 2, "§3", mapname);
|
|
|
+}
|
|
|
return;
|
|
|
|
|
|
@finalstart
|
|
|
-player.speak("all", gamename, "§rDas Spiel beginnt");
|
|
|
-block.setSign(gamesignloc, 2, concat(text.number(list.getSize(all)), "/", text.number(maxplayers)));
|
|
|
-block.setSign(gamesignloc, 3, "§6Läuft");
|
|
|
-
|
|
|
-display.reset("all");
|
|
|
-display.add("all", 0, gamename);
|
|
|
+player_list = minigame.getPlayers(script_id);
|
|
|
+minigame.displayResetAll();
|
|
|
+minigame.displayAll(0, gamename);
|
|
|
if(seconds < 10) {
|
|
|
- display.add("all", 1, "Zeit: ", concat(text.number(minutes), ":0", text.number(seconds)));
|
|
|
+ minigame.displayAll(1, concat("Time: ", text.number(minutes), ":0", text.number(seconds)));
|
|
|
} else {
|
|
|
- display.add("all", 1, "Zeit: ", concat(text.number(minutes), ":", text.number(seconds)));
|
|
|
+ minigame.displayAll(1, concat("TIme: ", text.number(minutes), ":", text.number(seconds)));
|
|
|
}
|
|
|
|
|
|
-for(i = 0; i < list.getSize(all); i++) {
|
|
|
- p = list.getIndex(all, i);
|
|
|
- p_id = player.getId(p);
|
|
|
+for(i = 0; i < list.getSize(player_list); i++) {
|
|
|
+ p = player.get(list.getIndex(player_list, i));
|
|
|
+ p_uuid = player.getUuid(p);
|
|
|
+ speakPrefix(p, gamename, "The game has started.");
|
|
|
spawnloc = list.getIndex(spawns, i);
|
|
|
map.add(spawn_locs, p, spawnloc);
|
|
|
entity.teleport(p, spawnloc);
|
|
|
- sound.spawnForPlayer(p, start_sound, ambient_sound_category);
|
|
|
+ sound.spawnForPlayer(p, start_sound, sound_category_ambient);
|
|
|
array = array.new(2);
|
|
|
- array[0] = p_id;
|
|
|
+ array[0] = p_uuid;
|
|
|
array[1] = 0;
|
|
|
list.add(points, array);
|
|
|
|
|
|
- if(player.isSurvival(p)) {
|
|
|
- if(player.isAdventure(p)) {
|
|
|
- player.setGamemode(p, "survival");
|
|
|
- }
|
|
|
- } else {
|
|
|
- player.setGamemode(p, "survival");
|
|
|
- }
|
|
|
- if(player.hasFly(p)) {
|
|
|
- player.setFly(p, false);
|
|
|
- }
|
|
|
+ player.setGamemode(p, "survival");
|
|
|
+ player.setFly(p, false);
|
|
|
|
|
|
title.clear(p);
|
|
|
title.setTime(p, 0, 20, 0);
|
|
@@ -67,8 +49,8 @@ for(i = 0; i < list.getSize(all); i++) {
|
|
|
|
|
|
countdown = 5;
|
|
|
@title
|
|
|
-for(i = 0; i < list.getSize(all); i++) {
|
|
|
- p = list.getIndex(all, i);
|
|
|
+for(i = 0; i < list.getSize(player_list); i++) {
|
|
|
+ p = player.get(list.getIndex(player_list, i));
|
|
|
title.send(p, concat("§4", text.number(countdown)));
|
|
|
}
|
|
|
if(countdown == 0) {
|
|
@@ -84,27 +66,28 @@ if(event == "block_click") {
|
|
|
cancel = true;
|
|
|
}
|
|
|
if(event == "player_logout" || event == "player_giveup") {
|
|
|
- player_id = player.getId(player);
|
|
|
- removeFromPoints(player_id);
|
|
|
- kickplayer(player);
|
|
|
- player.speak("all", gamename, player_name, " §rhat das Spiel verlassen");
|
|
|
- if(list.getSize(all) < minplayers) {
|
|
|
- p = list.getIndex(all, 0);
|
|
|
+ removeFromPoints(player.getUuid(player));
|
|
|
+ script = script.getFromId(script_id);
|
|
|
+ minigame.kickPlayer(script, player);
|
|
|
+ minigame.speakAll(gamename, concat(player_name, " §rhas left the game."));
|
|
|
+ if(list.getSize(player_list) < minplayers) {
|
|
|
+ p = player.get(list.getIndex(player_list, 0));
|
|
|
wincore(p);
|
|
|
}
|
|
|
}
|
|
|
goto("checkstart");
|
|
|
|
|
|
@loadevents
|
|
|
-player.speak("all", gamename, "§rBaue schneller als alle anderen gerade nach vor");
|
|
|
-event.load("player_death");
|
|
|
+minigame.speakAll(gamename, "Build faster than the others in one line.");
|
|
|
event.load("player_pre_respawn");
|
|
|
|
|
|
sgoto(20, "loop");
|
|
|
|
|
|
@checkgame
|
|
|
wait();
|
|
|
-ignoreGoto(event);
|
|
|
+if(player.hasMinigameId(player, script_id)) {
|
|
|
+ ignoreGoto(event);
|
|
|
+}
|
|
|
goto("checkgame");
|
|
|
|
|
|
@block_break
|
|
@@ -115,11 +98,6 @@ goto("checkgame");
|
|
|
player.setSpawn(player, map.get(spawn_locs, player));
|
|
|
goto("checkgame");
|
|
|
|
|
|
-@player_death
|
|
|
-cancel = true;
|
|
|
-player.respawn(player);
|
|
|
-goto("checkgame");
|
|
|
-
|
|
|
@player_is_attacked
|
|
|
player_damage_cause_string = damage.getType(player_damage_cause);
|
|
|
if(player_damage_cause_string == "player") {
|
|
@@ -134,22 +112,20 @@ if(seconds == 0) {
|
|
|
if(minutes == -1) {
|
|
|
sortPoints();
|
|
|
array = list.getIndex(points, 0);
|
|
|
- p_id = array[0];
|
|
|
- p = read.player(player.getNameFromId(p_id));
|
|
|
- wincore(p);
|
|
|
+ wincore(player.get(array[0]));
|
|
|
}
|
|
|
} else {
|
|
|
seconds--;
|
|
|
}
|
|
|
if(seconds < 10) {
|
|
|
- display.add("all", 1, "Zeit: ", concat(text.number(minutes), ":0", text.number(seconds)));
|
|
|
+ minigame.displayAll(1, concat("Time: ", text.number(minutes), ":0", text.number(seconds)));
|
|
|
} else {
|
|
|
- display.add("all", 1, "Zeit: ", concat(text.number(minutes), ":", text.number(seconds)));
|
|
|
+ minigame.displayAll(1, concat("Time: ", text.number(minutes), ":", text.number(seconds)));
|
|
|
}
|
|
|
-for(i = 0; i < list.getSize(all); i++) {
|
|
|
+for(i = 0; i < list.getSize(player_list); i++) {
|
|
|
item.drop(list.getIndex(spawns, i), list.getIndex(colors, i));
|
|
|
ycheck = list.getIndex(ycheck_list, i);
|
|
|
- p = list.getIndex(all, i);
|
|
|
+ p = player.get(list.getIndex(player_list, i));
|
|
|
y = loc.getY(entity.getLocation(p));
|
|
|
if(y < ycheck) {
|
|
|
entity.teleport(p, map.get(spawn_locs, p));
|
|
@@ -174,8 +150,7 @@ if(starty == y) {
|
|
|
} elseif(coord == "z" && startz != z) {
|
|
|
goto("cancelPlacement");
|
|
|
} else {
|
|
|
- player_id = player.getId(player);
|
|
|
- raiseNumber(player_id);
|
|
|
+ raiseNumber(player.getUuid(player));
|
|
|
list.add(placedblocks, block_loc);
|
|
|
goto("checkgame");
|
|
|
}
|
|
@@ -187,70 +162,72 @@ goto("checkgame");
|
|
|
|
|
|
@player_logout
|
|
|
@player_giveup
|
|
|
-kickplayer(player);
|
|
|
-player.speak("all", gamename, player_name, " §rhat das Spiel verlassen");
|
|
|
-if(list.getSize(all) < minplayers) {
|
|
|
- p = list.getIndex(all, 0);
|
|
|
+script = script.getFromId(script_id);
|
|
|
+minigame.kickPlayer(script, player);
|
|
|
+minigame.speakAll(gamename, concat(player_name, " §rhas left the game."));
|
|
|
+if(list.getSize(player_list) < minplayers) {
|
|
|
+ p = player.get(list.getIndex(player_list, 0));
|
|
|
wincore(p);
|
|
|
}
|
|
|
goto("checkgame");
|
|
|
|
|
|
function wincore(winner) {
|
|
|
winner_name = player.getName(winner);
|
|
|
- player.speak("all", $gamename, concat("§b", winner_name, " §rhat gewonnen!"));
|
|
|
+ minigame.speakAll($gamename, concat("§b", winner_name, " §rhas won!"));
|
|
|
|
|
|
for(i = 0; i < list.getSize($placedblocks); i++) {
|
|
|
- block.set(list.getIndex($placedblocks, i), $air_item_type);
|
|
|
+ block.set(list.getIndex($placedblocks, i), "minecraft:air");
|
|
|
}
|
|
|
-
|
|
|
- player.speak("all", $gamename, "§r---= §eStatistik §r=---");
|
|
|
- printPoints();
|
|
|
-
|
|
|
- for(i = 0; i < list.getSize($all); i++) {
|
|
|
- p = list.getIndex($all, i);
|
|
|
- p_id = player.getId(p);
|
|
|
- entity.teleport(p, $gamesworldloc);
|
|
|
- resetplayer(p);
|
|
|
+ for(i = 0; i < list.getSize($player_list); i++) {
|
|
|
+ player_uuid = list.getIndex($player_list, i);
|
|
|
+ player = player.get(player_uuid);
|
|
|
+ player_id = player.getId(player);
|
|
|
|
|
|
- last_record = getPoints($rankingtable, p_id);
|
|
|
- playedgames = getPlayedGames($rankingtable, p_id) + 1;
|
|
|
- record = getNumber(p_id);
|
|
|
+ last_record = getPoints($rankingtable, player_id);
|
|
|
+ playedgames = getPlayedGames($rankingtable, player_id) + 1;
|
|
|
+ record = getNumber(player_uuid);
|
|
|
if(record < last_record) {
|
|
|
record = last_record;
|
|
|
}
|
|
|
- setRanking($rankingtable, p_id, record, playedgames);
|
|
|
+ setRanking($rankingtable, player_id, record, playedgames);
|
|
|
|
|
|
- fbwon = ggv(p, "fbwon");
|
|
|
+ fbwon = ggv(player, "fbwon");
|
|
|
if(fbwon == null) {
|
|
|
fbwon = 0;
|
|
|
}
|
|
|
- if(p == winner) {
|
|
|
+ if(player == winner) {
|
|
|
fbwon += 1;
|
|
|
}
|
|
|
- sgv(p, "fbwon", fbwon);
|
|
|
+ sgv(player, "fbwon", fbwon);
|
|
|
|
|
|
- msg(p, "");
|
|
|
-
|
|
|
- player.speak(p, $gamename, "§eGespielte Spiele§8: §r", text.number(playedgames));
|
|
|
- player.speak(p, $gamename, "§eGewonnene Spiele§8: §r", text.number(fbwon));
|
|
|
- player.speak(p, $gamename, "§eSiegwahrscheinlichkeit§8: §r", text.number(math.roundcomma((fbwon / playedgames) * 100, 2)), "%");
|
|
|
+ minigame.statsHeader(player, $gamename, "§e");
|
|
|
+ for(h = 0; h < list.getSize($player_list); h++) {
|
|
|
+ p_uuid = list.getIndex($player_list, h);
|
|
|
+ p = player.get(p_uuid);
|
|
|
+ p_name = player.getName(p);
|
|
|
+ msg(player, " §e- §r", text.number(getNumber(p_uuid)), " §e", p_name);
|
|
|
+ }
|
|
|
+ msg(player, "");
|
|
|
+ minigame.statsLine(player, "§e", "Won games", text.hover(text.number(fbwon), "Relevant for ranking"));
|
|
|
+ minigame.statsLine(player, "§e", "Played games", text.number(playedgames));
|
|
|
+ if(playedgames != 0) {
|
|
|
+ minigame.statsLine(player, "§e", "Win ratio", concat(text.number(math.roundComma((fbwon / playedgames) * 100, 2)), "%"));
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- block.setSign($gamesignloc, 2, "0/", text.number($maxplayers));
|
|
|
- block.setSign($gamesignloc, 3, "§2Bereit");
|
|
|
entity.removeAll("net.minecraft.entity.item.ItemEntity", $middleloc, $radius);
|
|
|
- term();
|
|
|
+ script = script.getFromId($script_id);
|
|
|
+ minigame.kickAllPlayers(script);
|
|
|
+ minigame.term(script, $gamesignloc);
|
|
|
}
|
|
|
|
|
|
-function removeFromPoints(player_id) {
|
|
|
+function removeFromPoints(player_uuid) {
|
|
|
for(i = 0; i < list.getSize($points); i++) {
|
|
|
array = list.getIndex($points, i);
|
|
|
- if(array[0] == player_id) {
|
|
|
+ if(array[0] == player_uuid) {
|
|
|
list.removeIndex($points, i);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- return;
|
|
|
}
|
|
|
|
|
|
function sortPoints() {
|
|
@@ -271,38 +248,23 @@ function sortPoints() {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- return;
|
|
|
}
|
|
|
|
|
|
-function raiseNumber(player_id) {
|
|
|
+function raiseNumber(player_uuid) {
|
|
|
for(i = 0; i < list.getSize($points); i++) {
|
|
|
array = list.getIndex($points, i);
|
|
|
- if(array[0] == player_id) {
|
|
|
+ if(array[0] == player_uuid) {
|
|
|
array[1] = array[1] + 1;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- return;
|
|
|
}
|
|
|
|
|
|
-function getNumber(player_id) {
|
|
|
+function getNumber(player_uuid) {
|
|
|
for(i = 0; i < list.getSize($points); i++) {
|
|
|
array = list.getIndex($points, i);
|
|
|
- if(array[0] == player_id) {
|
|
|
- number = array[1];
|
|
|
- break;
|
|
|
+ if(array[0] == player_uuid) {
|
|
|
+ return array[1];
|
|
|
}
|
|
|
}
|
|
|
- return number;
|
|
|
-}
|
|
|
-
|
|
|
-function printPoints() {
|
|
|
- for(i = 0; i < list.getSize($all); i++) {
|
|
|
- player = list.getIndex($all, i);
|
|
|
- player_name = player.getName(player);
|
|
|
- player_id = player.getId(player);
|
|
|
- number = getNumber(player_id);
|
|
|
- player.speak("all", $gamename, concat("§e", player_name, " §r", text.number(number)));
|
|
|
- }
|
|
|
- return;
|
|
|
-}
|
|
|
+}
|