Explorar o código

letters, inverting

Marvin Löschenkohl %!s(int64=4) %!d(string=hai) anos
pai
achega
629475cca2

+ 9 - 9
global/gamecenter.txt

@@ -34,9 +34,9 @@ addGameSign("bwmapsign4", false, loc.new(gamesworld, -423, 152, -78), "minigames
 addGameSign("bwmapsign5", false, loc.new(gamesworld, -423, 152, -79), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap5", false);
 addGameSign("bwmapsign6", false, loc.new(gamesworld, -423, 152, -80), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap6", false);
 addGameSign("bwmapsign7", false, loc.new(gamesworld, -423, 151, -78), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap7", false);
-addGameSign("letterssign1", false, loc.new(gamesworld,-396, 158, -63), "minigames/letters/letters", "minigames/letters/region_lettersmap1", true);
-addGameSign("letterssign2", false, loc.new(gamesworld,-396, 158, -62), "minigames/letters/letters", "minigames/letters/region_lettersmap2", true);
-addGameSign("letterssign3", false, loc.new(gamesworld,-396, 158, -61), "minigames/letters/letters", "minigames/letters/region_lettersmap3", true);
+addGameSign("letterssign1", true, loc.new(gamesworld,-396, 158, -63), "minigames/letters/letters", "minigames/letters/region_lettersmap1", true);
+addGameSign("letterssign2", true, loc.new(gamesworld,-396, 158, -62), "minigames/letters/letters", "minigames/letters/region_lettersmap2", true);
+addGameSign("letterssign3", true, loc.new(gamesworld,-396, 158, -61), "minigames/letters/letters", "minigames/letters/region_lettersmap3", true);
 addGameSign("rmmaploc1", false, loc.new(gamesworld, -396, 158, -57), "minigames/ragemode/ragemode", "minigames/ragemode/region_rmmap1", false);
 addGameSign("rmmaploc2", false, loc.new(gamesworld, -396, 158, -56), "minigames/ragemode/ragemode", "minigames/ragemode/region_rmmap2", false);
 addGameSign("rmmaploc3", false, loc.new(gamesworld, -396, 158, -55), "minigames/ragemode/ragemode", "minigames/ragemode/region_rmmap3", false);
@@ -50,12 +50,12 @@ addGameSign("buttonssign2", true, loc.new(gamesworld, -398, 158, -65), "minigame
 addGameSign("knockfightsign1", false, loc.new(gamesworld, -396, 157, -63), "minigames/knockfight/knockfight", "minigames/knockfight/knockmap1", false);
 addGameSign("knockfightsign2", false, loc.new(gamesworld, -396, 157, -62), "minigames/knockfight/knockfight", "minigames/knockfight/knockmap2", false);
 addGameSign("knockfightsign3", false, loc.new(gamesworld, -396, 157, -61), "minigames/knockfight/knockfight", "minigames/knockfight/knockmap3", false);
-addGameSign("invertingsign1", false, loc.new(gamesworld, -396, 158, -51), "minigames/inverting/inverting", "minigames/inverting/invertingmap1", true);
-addGameSign("invertingsign2", false, loc.new(gamesworld, -396, 158, -50), "minigames/inverting/inverting", "minigames/inverting/invertingmap2", true);
-addGameSign("invertingsign3", false, loc.new(gamesworld, -396, 158, -49), "minigames/inverting/inverting", "minigames/inverting/invertingmap3", true);
-addGameSign("invertingclsign1", false, loc.new(gamesworld, -396, 157, -51), "minigames/inverting/inverting", "minigames/inverting/invertingclmap1", true);
-addGameSign("invertingclsign2", false, loc.new(gamesworld, -396, 157, -50), "minigames/inverting/inverting", "minigames/inverting/invertingclmap2", true);
-addGameSign("invertingclsign3", false, loc.new(gamesworld, -396, 157, -49), "minigames/inverting/inverting", "minigames/inverting/invertingclmap3", true);
+addGameSign("invertingsign1", true, loc.new(gamesworld, -396, 158, -51), "minigames/inverting/inverting", "minigames/inverting/invertingmap1", true);
+addGameSign("invertingsign2", true, loc.new(gamesworld, -396, 158, -50), "minigames/inverting/inverting", "minigames/inverting/invertingmap2", true);
+addGameSign("invertingsign3", true, loc.new(gamesworld, -396, 158, -49), "minigames/inverting/inverting", "minigames/inverting/invertingmap3", true);
+addGameSign("invertingclsign1", true, loc.new(gamesworld, -396, 157, -51), "minigames/inverting/inverting", "minigames/inverting/invertingclmap1", true);
+addGameSign("invertingclsign2", true, loc.new(gamesworld, -396, 157, -50), "minigames/inverting/inverting", "minigames/inverting/invertingclmap2", true);
+addGameSign("invertingclsign3", true, loc.new(gamesworld, -396, 157, -49), "minigames/inverting/inverting", "minigames/inverting/invertingclmap3", true);
 addGameSign("spleefsign1", true, loc.new(gamesworld, -419, 158, -40), "minigames/spleef/spleef", "minigames/spleef/spleefmap1", false);
 addGameSign("spleefsign2", true, loc.new(gamesworld, -420, 158, -40), "minigames/spleef/spleef", "minigames/spleef/spleefmap2", false);
 addGameSign("spleefsign3", true, loc.new(gamesworld, -421, 158, -40), "minigames/spleef/spleef", "minigames/spleef/spleefmap3", false);

+ 1 - 3
minigames/buttons/buttons.txt

@@ -85,16 +85,14 @@ setRanking(rankingtable, player_id, record, playedgames);
 minigame.statsHeader(player, gamename, "§e");
 minigame.statsLine(player, "§e", "Points", text.number(clicked));
 minigame.statsLine(player, "§e", "Your record", text.number(last_record));
-minigame.statsLine(player, "§e", "Played games", text.number(playedgames));
 if(diff != null) {
 	msg(player, " §e- §rBeat own record by §e", text.number(diff));
 }
+minigame.statsLine(player, "§e", "Played games", text.number(playedgames));
 
 @player_giveup
 @player_logout
 block.set(markedloc, originblock);
-resetplayer(player);
-player.tpGamesLobby(player);
 script = script.getFromId(script_id);
 minigame.kickPlayer(script, player);
 minigame.term(script, gamesignloc);

+ 23 - 19
minigames/inverting/inverting.txt

@@ -1,9 +1,5 @@
 rankingtable = concat("invertranks", map);
-registerRanking(rankingtable);
-
-block.setSign(gamesignloc, 2, "1/1");
-block.setSign(gamesignloc, 3, "§bLäuft");
-player = script.getLeader();
+sign.started(gamesignloc);
 
 x1 = loc.getX(edge1);
 y1 = loc.getY(edge1);
@@ -16,26 +12,32 @@ event.load("block_break");
 event.load("block_click");
 event.load("player_giveup");
 event.load("player_logout");
+event.load("player_join");
 
 gamename = "§9Inverting";
 lapis_block_type = "minecraft:lapis_block";
 redstone_block_type = "minecraft:redstone_block";
 gosub("newfield");
 clicked = 0;
-display.add(player, 0, gamename);
-display.add(player, 1, "§rZüge:");
-display.add(player, 2, text.number(clicked));
-gamesworldloc = read.location(ggv("SERVER", "gamesspawn"));
-entity.teleport(player, tploc);
 fields = xlength * zlength;
 
 @wait
 wait();
+if(!player.hasMinigameId(player, script_id)) {
+	goto("wait");
+}
+if(event == "player_join") {
+	resetplayer(player);
+	display.add(player, 0, gamename);
+	display.add(player, 1, "Swaps:");
+	display.add(player, 2, text.number(clicked));
+	entity.teleport(player, tploc);
+	goto("wait");
+}
 if(event == "player_giveup" || event == "player_logout") {
-	tptogameslobby(player);
-	block.setSign(gamesignloc, 2, "0/1");
-	block.setSign(gamesignloc, 3, "§2Bereit");
-	display.reset(player);
+	script = script.getFromId(script_id);
+	minigame.kickPlayer(script, player);
+	minigame.term(script, gamesignloc);
 	term();
 }
 if(event == "block_break") {
@@ -125,18 +127,20 @@ playedgames = getPlayedGames(rankingtable, player_id) + 1;
 if(last_record == 0 || clicked < last_record) {
 	if(last_record != 0) {
 		diff = last_record - clicked;
-		player.speak(player, gamename, concat("§rNeuer Rekord! -", text.number(diff)));
 	}
 	last_record = clicked;
 }
 setRanking(rankingtable, player_id, last_record, playedgames);
 
 minigame.statsHeader(player, gamename, "§e");
-minigame.statsLine(player, "§e", "Züge", text.number(clicked));
-minigame.statsLine(player, "§e", "Dein Rekord", text.number(last_record));
-minigame.statsLine(player, "§e", "Gelöste Felder", text.number(playedgames));
+minigame.statsLine(player, "§e", "Swaps", text.number(clicked));
+minigame.statsLine(player, "§e", "Your record", text.number(last_record));
+if(diff != null) {
+	msg(player, " §e- §rBeat own record by §e", text.number(diff));
+}
+minigame.statsLine(player, "§e", "Won games", text.number(playedgames));
 
 clicked = 0;
 display.add(player, 2, text.number(clicked));
 gosub("newfield");
-goto("wait");
+goto("wait");

+ 1 - 0
minigames/inverting/invertingclmap1.txt

@@ -9,3 +9,4 @@ tploc = loc.new(gamesworld, 2003.5, 101, 2016.5);
 gamesignsmap = getScriptVar("gamesigns");
 gamesignloc = map.get(gamesignsmap, "invertingclsign1");
 map = "5x5cl";
+maxplayers = 1;

+ 1 - 0
minigames/inverting/invertingclmap2.txt

@@ -9,3 +9,4 @@ tploc = loc.new(gamesworld, 1982.5, 101, 2017.5);
 gamesignsmap = getScriptVar("gamesigns");
 gamesignloc = map.get(gamesignsmap, "invertingclsign2");
 map = "7x7cl";
+maxplayers = 1;

+ 1 - 0
minigames/inverting/invertingclmap3.txt

@@ -9,3 +9,4 @@ tploc = loc.new(gamesworld, 1959, 101, 2018);
 gamesignsmap = getScriptVar("gamesigns");
 gamesignloc = map.get(gamesignsmap, "invertingclsign3");
 map = "10x10cl";
+maxplayers = 1;

+ 1 - 0
minigames/inverting/invertingmap1.txt

@@ -9,3 +9,4 @@ tploc = loc.new(gamesworld, 2003.5, 101, 1996.5);
 gamesignsmap = getScriptVar("gamesigns");
 gamesignloc = map.get(gamesignsmap, "invertingsign1");
 map = "5x5";
+maxplayers = 1;

+ 1 - 0
minigames/inverting/invertingmap2.txt

@@ -9,3 +9,4 @@ tploc = loc.new(gamesworld, 1982.5, 101, 1995.5);
 gamesignsmap = getScriptVar("gamesigns");
 gamesignloc = map.get(gamesignsmap, "invertingsign2");
 map = "7x7";
+maxplayers = 1;

+ 1 - 0
minigames/inverting/invertingmap3.txt

@@ -9,3 +9,4 @@ tploc = loc.new(gamesworld, 1959, 101, 1994);
 gamesignsmap = getScriptVar("gamesigns");
 gamesignloc = map.get(gamesignsmap, "invertingsign3");
 map = "10x10";
+maxplayers = 1;

+ 51 - 58
minigames/letters/letters.txt

@@ -1,41 +1,24 @@
-block.setSign(gamesignloc, 2, "1/1");
-block.setSign(gamesignloc, 3, "§6Läuft");
+sign.started(gamesignloc);
+rankingtable = "letterranks";
 
-list.new(letters);
-list.new(letters2);
+letters = list.new();
+letters2 = list.new();
 list.addAll(letters, "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
 list.addAll(letters2, "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
 
-player = script.getLeader();
-player_id = player.getId(player);
-
-rankingtable = "letterranks";
-registerRanking(rankingtable);
-
 event.load("block_click");
 event.load("player_logout");
 event.load("player_giveup");
+event.load("player_join");
 counter = 0;
 minutes = 0;
 seconds = 0;
 if(!fixsigns) {
-	list.new(logcoords);
-	list.new(signcoords);
-	list.new(sign_facing);
+	logcoords = list.new();
+	signcoords = list.new();
+	sign_facing = list.new();
 }
-air_item_type = "minecraft:air";
-gamesworldloc = read.location(ggv("SERVER", "gamesspawn"));
 gamename = "§dLetters";
-title.setTime(player, 20, 0, 20);
-title.setSub(player, mapname);
-title.send(player, gamename);
-nextletter = list.getIndex(letters, counter);
-display.add(player, 1, gamename);
-display.add(player, 2, "§rFortschritt:");
-display.add(player, 3, concat(text.number(counter), "/26"));
-display.add(player, 4, concat("§rGesucht: ", nextletter));
-display.add(player, 5, concat("§rZeit: 0:00"));
-player.clearInventory(player);
 log_tag = block.getTag("minecraft:logs");
 sign_tag = block.getTag("minecraft:signs");
 
@@ -63,19 +46,19 @@ if(!fixsigns) {
 	xedgedistance = x2 - x1;
 	zedgedistance = z2 - z1;
 
-	for(x = 0; x <= xedgedistance - 1; x++) {
-		for(z = 0; z <= zedgedistance - 1; z++) {
+	for(x = 0; x < xedgedistance; x++) {
+		for(z = 0; z < zedgedistance; z++) {
 			relloc = loc.mod(edge1, x, 0, z);
 			if(block.hasTag(log_tag, block.get(relloc))) {
 				list.add(logcoords, relloc);
 			}
 			if(block.hasTag(sign_tag, block.get(relloc))) {
-				block.set(relloc, air_item_type);
+				block.set(relloc, "minecraft:air");
 			}
 		}
 	}
 
-	for(i = 0; i <= list.getSize(logcoords) - 1; i++) {
+	for(i = 0; i < list.getSize(logcoords); i++) {
 		x = 0;
 		z = 0;
 		y = math.random(0, 3);
@@ -102,7 +85,7 @@ if(!fixsigns) {
 		}
 	}
 
-	for(i = 0; i <= list.getSize(signcoords) - 1; i++) {
+	for(i = 0; i < list.getSize(signcoords); i++) {
 		temploc = list.getIndex(signcoords, i);
 		facing = list.getIndex(sign_facing, i);
 		block.set(temploc, concat("minecraft:oak_wall_sign[facing=", facing, "]"));
@@ -111,20 +94,35 @@ if(!fixsigns) {
 		list.removeIndex(letters2, tempindex);
 	}
 } elseif(fixsigns) {
-	for(i = 0; i <= list.getSize(signcoords) - 1; i++) {
+	for(i = 0; i < list.getSize(signcoords); i++) {
 		temploc = list.getIndex(signcoords, i);
 		tempindex = math.random(0 , list.getSize(letters2) - 1);
 		block.setSign(temploc, 0, list.getIndex(letters2, tempindex));
 		list.removeIndex(letters2, tempindex);
 	}
 }
-
-entity.teleport(player, spawnloc);
 sgoto(20, "loop");
 
 @wait
 wait();
-ignoreGoto(event);
+if(player.hasMinigameId(player, script_id)) {
+	ignoreGoto(event);
+}
+goto("wait");
+
+@player_join
+entity.teleport(player, spawnloc);
+resetplayer(player);
+title.setTime(player, 20, 0, 20);
+title.setSub(player, mapname);
+title.send(player, gamename);
+nextletter = list.getIndex(letters, counter);
+display.add(player, 1, gamename);
+display.add(player, 2, "Progress:");
+display.add(player, 3, concat(text.number(counter), "/26"));
+display.add(player, 4, concat("Find: ", nextletter));
+display.add(player, 5, concat("Time: 0:00"));
+player.clearInventory(player);
 goto("wait");
 
 @loop
@@ -134,9 +132,9 @@ if(seconds == 60) {
 	seconds = 0;
 }
 if(seconds < 10) {
-	display.add(player, 5, concat("§rZeit: ", text.number(minutes), ":0", text.number(seconds)));
+	display.add(player, 5, concat("Time: ", text.number(minutes), ":0", text.number(seconds)));
 } else {
-    display.add(player, 5, concat("§rZeit: ", text.number(minutes), ":", text.number(seconds)));
+    display.add(player, 5, concat("Time: ", text.number(minutes), ":", text.number(seconds)));
 }
 sgoto(20, "loop");
 goto("wait");
@@ -147,7 +145,7 @@ if(block.hasTag(sign_tag, block.get(block_loc))) {
 	letter = block.getSign(block_loc, 0);
 	if(letter == nextletter) {
 		counter++;
-		player.speak(player, gamename, "§rFortschritt: ", text.number(counter), "/26");
+		speakPrefix(player, gamename, concat("Progress: ", text.number(counter), "/26"));
 		display.add(player, 3, concat(text.number(counter), "/26"));
 		entity.setHealth(player, 20);
 		player.setHunger(player, 20);
@@ -155,48 +153,43 @@ if(block.hasTag(sign_tag, block.get(block_loc))) {
 		if(counter == 26) {
 			time = minutes * 60 + seconds;
 			tpl = math.roundComma(time / 26, 2);
+			player_id = player.getId(player);
 			playedgames = getPlayedGames(rankingtable, player_id) + 1;
 			last_record = getPoints(rankingtable, player_id);
-			
-			player.speak(player, gamename, "§r---= §eStatistik §r=---");
-			player.speak(player, gamename, concat("§eZeit: §r", text.number(minutes), " min ", text.number(seconds), " s"));
-			player.speak(player, gamename, concat("§eTime per Letter: §r", text.number(tpl), " s"));
-			
 			if(last_record == 0 || time < last_record) {
 				record = time;
 				diff = last_record - time;
-				player.speak(player, gamename, concat("§eEigenen Rekord um §r", text.number(diff), "§e s übertroffen"));
 			} else {
 				record = last_record;
 			}
-			
 			setRanking(rankingtable, player_id, record, playedgames);
-			
 			rec_mins = math.roundDown(record / 60);
 			rec_secs = math.roundComma(record % 60, 2);
-			player.speak(player, gamename, concat("§eDein Rekord: §r", text.number(rec_mins), " min ", text.number(rec_secs), " s"));
-			player.speak(player, gamename, concat("§eGespielte Spiele: §r", text.number(playedgames)));
 			
+			minigame.statsHeader(player, gamename, "§e");
+			minigame.statsLine(player, "§e", "Time", concat(text.number(minutes), " min ", text.number(seconds), " s"));
+			minigame.statsLine(player, "§e", "Time per Letter", concat(text.number(tpl), " s"));
+			minigame.statsLine(player, "§e", "Your record", concat(text.number(rec_mins), " min ", text.number(rec_secs), " s"));
+			if(diff != null) {
+				msg(player, " §e- §rBeat own record by §e", concat(text.number(diff), " s"));
+			}
+			minigame.statsLine(player, "§e", "Played games", text.number(playedgames));
 			goto("player_giveup");
 		}
 		nextletter = list.getIndex(letters, counter);
-		display.add(player, 4, concat("§rGesucht: ", nextletter));
+		display.add(player, 4, concat("Find: ", nextletter));
 	}
 }
 goto("wait");
 
 @player_logout
 @player_giveup
-display.reset(player);
-tptogameslobby(player);
-resetplayer(player);
-block.setSign(gamesignloc, 2, "0/1");
-block.setSign(gamesignloc, 3, "§2Wartet");
 if(!fixsigns) {
-	for(i = 0; i <= list.getSize(signcoords) - 1; i++) {
-		block.set(list.getIndex(signcoords, i), air_item_type);
+	for(i = 0; i < list.getSize(signcoords); i++) {
+		block.set(list.getIndex(signcoords, i), "minecraft:air");
 	}
 }
-block.setSign(gamesignloc, 2, "0/1");
-block.setSign(gamesignloc, 3, "§2Wartet");
-term();
+script = script.getFromId(script_id);
+minigame.kickPlayer(script, player);
+minigame.term(script, gamesignloc);
+term();

+ 1 - 0
minigames/letters/region_lettersmap1.txt

@@ -6,3 +6,4 @@ gamesworld = world.get("games");
 edge1 = loc.new(gamesworld, 1976, 101, -6008);
 edge2 = loc.new(gamesworld, 2004, 101, -5986);
 spawnloc = loc.new(gamesworld, 2002, 101, -5998, 90, 0);
+maxplayers = 1;

+ 1 - 0
minigames/letters/region_lettersmap2.txt

@@ -6,3 +6,4 @@ gamesworld = world.get("games");
 edge1 = loc.new(gamesworld, 2006, 101, -5005);
 edge2 = loc.new(gamesworld, 2028, 101, -5021);
 spawnloc = loc.new(gamesworld, 2028, 101, -5013, 90, 0);
+maxplayers = 1;

+ 2 - 1
minigames/letters/region_lettersmap3.txt

@@ -4,8 +4,9 @@ gamesignsmap = getScriptVar("gamesigns");
 gamesignloc = map.get(gamesignsmap, "letterssign3");
 gamesworld = world.get("games");
 spawnloc = loc.new(gamesworld, 2010.5, 101, -5505, 90, 0);
+maxplayers = 1;
 
-list.new(signcoords);
+signcoords = list.new();
 list.add(signcoords, loc.new(gamesworld, 2007, 103, -5501));
 list.add(signcoords, loc.new(gamesworld, 2005, 104, -5503));
 list.add(signcoords, loc.new(gamesworld, 2005, 103, -5505));