Selaa lähdekoodia

jr and parcour

Marvin Löschenkohl 4 vuotta sitten
vanhempi
commit
fda09be092
5 muutettua tiedostoa jossa 151 lisäystä ja 159 poistoa
  1. 4 5
      global/gamecenter.txt
  2. 72 87
      minigames/jumpnrun/jumpnrun.txt
  3. 59 55
      minigames/parcour/parcour.txt
  4. 15 12
      system/commands.txt
  5. 1 0
      test2.txt

+ 4 - 5
global/gamecenter.txt

@@ -61,7 +61,7 @@ addGameSign("spleefsign2", true, loc.new(gamesworld, -420, 158, -40), "minigames
 addGameSign("spleefsign3", true, loc.new(gamesworld, -421, 158, -40), "minigames/spleef/spleef", "minigames/spleef/spleefmap3", false);
 addGameSign("maednsign1", false, loc.new(gamesworld, -401, 157, -72), "minigames/maedn/maedn", "minigames/maedn/maednmap1", false);
 //addGameSign("ctfsign1", false, loc.new(gamesworld, 13, 75, 64), "minigames/capturetheflag/capturetheflag", "minigames/capturetheflag/ctfmap1", false);
-addGameSign("jrmap", false, loc.new(gamesworld, -413, 158, -40), "minigames/jumpnrun/jumpnrun", "minigames/jumpnrun/jumpnrun", true);
+addGameSign("jrmap", true, loc.new(gamesworld, -413, 158, -40), "minigames/jumpnrun/jumpnrun", "minigames/jumpnrun/jumpnrun", true);
 addGameSign("tjrsign", false, loc.new(gamesworld, -414, 158, -40), "minigames/jumpnrun/todesjumpnrun", "minigames/jumpnrun/todesjumpnrun", true);
 addGameSign("icejrsign", false, loc.new(gamesworld, -415, 158, -40), "minigames/jumpnrun/icejumpnrun", "minigames/jumpnrun/icejumpnrun", true);
 addGameSign("fastbridgesign1", false, loc.new(gamesworld, -405, 158, -75), "minigames/fastbridge/fastbridge", "minigames/fastbridge/region_fastbridgemap1", false);
@@ -71,11 +71,11 @@ addGameSign("rebuildsign2", false, loc.new(gamesworld, -423, 158, -43), "minigam
 addGameSign("catchsign1", false, loc.new(gamesworld, -434, 158, -49), "minigames/catch/catch", "minigames/catch/catchmap1", false);
 addGameSign("catchsign2", false, loc.new(gamesworld, -434, 158, -50), "minigames/catch/catch", "minigames/catch/catchmap2", false);
 addGameSign("leapfrogsign1", false, loc.new(gamesworld, -401, 158, -71), "minigames/leapfrog/leapfrog", "minigames/leapfrog/leapfrogmap1", true);
-addGameSign("parcoursign1", false, loc.new(gamesworld, -413, 157, -40), "minigames/parcour/parcour", "minigames/parcour/parcour_map1", true);
+addGameSign("parcoursign1", true, loc.new(gamesworld, -413, 157, -40), "minigames/parcour/parcour", "minigames/parcour/parcour_map1", true);
 addGameSign("snowsign1", false, loc.new(gamesworld, -401, 158, -72), "minigames/snowgame/snowgame", "minigames/snowgame/region_snowmap1", false);
 addGameSign("halmasign1", true, loc.new(gamesworld, -401, 157, -73), "minigames/halma/halma", "minigames/halma/halma_map1", false);
 addGameSign("halmasign2", true, loc.new(gamesworld, -401, 158, -73), "minigames/halma/halma", "minigames/halma/halma_map2", false);
-addGameSign("shoppingsign1", false, loc.new(gamesworld, -411, 158, -44), "minigames/shoppingchaos/shoppingchaos", "minigames/shoppingchaos/shopping_map1", false);
+addGameSign("shoppingsign1", true, loc.new(gamesworld, -411, 158, -44), "minigames/shoppingchaos/shoppingchaos", "minigames/shoppingchaos/shopping_map1", false);
 
 setScriptVar("gamesigns", gamesignsmap);
 
@@ -205,8 +205,7 @@ if(script_id == null) {
 	script = script.getFromId(script_id);
 }
 if(script == null) {
-	msg("dev", "Should not happen. Error on game_join");
-	msg("dev", "script_ids: ", script_ids);
+	msg("dev", "Should not happen. Error on game_join ", script_ids);
 	map.remove(script_ids, block_loc);
 	goto("startnewgame");
 }

+ 72 - 87
minigames/jumpnrun/jumpnrun.txt

@@ -1,36 +1,21 @@
-event.load("player_is_attacked");
+event.load("living_is_attacked");
 event.load("player_move");
 event.load("player_logout");
 event.load("block_click");
 event.load("player_giveup");
+event.load("player_join");
 
 rankingtable = "jumpranks";
 
-player = script.getLeader();
-player_name = player.getName(player);
-player_id = player.getId(player);
-
-if(player.isSurvival(player)) {
-	if(player.isAdventure(player)) {
-		player.setGamemode(player, "survival");
-	}
-} else {
-	player.setGamemode(player, "survival");
-}
-if(player.hasFly(player)) {
-	player.setFly(player, false);
-}
-
 points = 0;
-gamesworldloc = read.location(ggv("SERVER", "gamesspawn"));
-gamesworld = world.get("games");
-air_item_type = "minecraft:air";
+maxplayers = 1;
+gamesignsmap = getScriptVar("gamesigns");
+gamesignloc = map.get(gamesignsmap, "jrmap");
 gamename = "§aJump'n'Run";
 jump_sound = sound.get("entity.item.pickup");
 sound_category_ambient = sound.getCategory("ambient");
-set.new(jumpblocksset);
 
-list.new(blocks);
+blocks = list.new();
 list.add(blocks, "2:0:0");
 list.add(blocks, "3:0:0");
 list.add(blocks, "4:0:0");
@@ -140,7 +125,7 @@ list.add(blocks, "-1:1:-2");
 list.add(blocks, "-1:1:-3");
 list.add(blocks, "-2:1:-3");
 
-list.new(color_list); //Liste der Farben
+color_list = list.new(); //Liste der Farben
 list.add(color_list, "blue");
 list.add(color_list, "red");
 list.add(color_list, "yellow");
@@ -158,40 +143,12 @@ list.add(color_list, "cyan");
 list.add(color_list, "light_blue");
 list.add(color_list, "pink");
 
-last_record = getPoints(rankingtable, player_id);
-overall_record = getPointsFromRank(rankingtable, 1, "DESC");
-
-@newgame
-points = 0;
-display.add(player, 0, "§6Jump'n'Run");
-display.add(player, 1, "Deine Punkte: §e", text.number(points));
-display.add(player, 2, "Dein Rekord: §e", text.number(last_record));
-display.add(player, 3, "Rekord überhaupt: §e", text.number(overall_record));
-
-title.clear(player);
-title.setTime(player, 20, 20, 20);
-title.setSub(player, "§rRanked");
-title.send(player, gamename);
-player.clearInventory(player);
-entity.setHealth(player, 20);
-player.setHunger(player, 20);
-player.setSaturation(player, 5);
-color_string = list.getIndex(color_list, math.random(0, 15));
-concrete_block = concat("minecraft:", color_string, "_concrete");
-wool_block = concat("minecraft:", color_string, "_wool");
-
-@startblock
-x = math.random(5000, 5100);
-y = math.random(10, 20);
-z = math.random(5000, 5100);
-startblock = loc.new(gamesworld, x, y, z);
-if(set.contains(jumpblocksset, startblock)) {
-	goto("startblock");
+@wait
+wait();
+if(player.hasMinigameId(player, script_id)) {
+	ignoreGoto(event);
 }
-block.set(startblock, concrete_block);
-set.add(jumpblocksset, startblock);
-entity.teleport(player, loc.mod(startblock, 0.5, 1, 0.5));
-previousblock = startblock;
+goto("wait");
 
 @newblock
 split(coords, ":", list.getIndex(blocks, math.random(0, list.getSize(blocks) - 1)));
@@ -199,14 +156,13 @@ x = list.getIndex(coords, 0);
 y = list.getIndex(coords, 1);
 z = list.getIndex(coords, 2);
 newblock = loc.mod(previousblock, x, y, z);
-if(set.contains(jumpblocksset, newblock)) {
+if(block.getType(newblock) != "minecraft:air") {
 	goto("newblock");
 }
 if(loc.getCoord(newblock, "y") > 256) {
 	goto("newblock");
 }
 block.set(newblock, wool_block);
-set.add(jumpblocksset, text.location(startblock));
 sound.spawn(newblock, jump_sound, sound_category_ambient);
 moveloc1 = loc.mod(newblock, 0, 1, 0);
 moveloc2 = loc.mod(newblock, 1, 2, 1);
@@ -217,16 +173,49 @@ if(fallid != null) {
 fallloc1 = loc.mod(moveloc1, -10, -10, -10);
 fallloc2 = loc.mod(moveloc1, 10, -2, 10);
 fallid = event.addMoveData(fallloc1, fallloc2, -1, -1);
-
-@wait
-wait();
-ignoreGoto(event);
 goto("wait");
 
-@player_is_attacked
+@player_join
+@newgame
+points = 0;
+color_string = list.getIndex(color_list, math.random(0, 15));
+concrete_block = concat("minecraft:", color_string, "_concrete");
+wool_block = concat("minecraft:", color_string, "_wool");
+player_id = player.getId(player);
+last_record = getPoints(rankingtable, player_id);
+overall_record = getPointsFromRank(rankingtable, 1, "DESC");
+
+display.add(player, 0, "§6Jump'n'Run");
+display.add(player, 1, "Your Points: §e", text.number(points));
+display.add(player, 2, "Your Record: §e", text.number(last_record));
+display.add(player, 3, "Server Record: §e", text.number(overall_record));
+player.setGamemode(player, "survival");
+player.setFly(player, false);
+title.clear(player);
+title.setTime(player, 20, 20, 20);
+title.send(player, gamename);
+player.clearInventory(player);
+entity.setHealth(player, 20);
+player.setHunger(player, 20);
+player.setSaturation(player, 5);
+
+x = math.random(5000, 5100);
+y = math.random(10, 20);
+z = math.random(5000, 5100);
+startblock = loc.new(world.get("games"), x, y, z);
+block.set(startblock, concrete_block);
+entity.teleport(player, loc.mod(startblock, 0.5, 1, 0.5));
+previousblock = startblock;
+goto("newblock");
+
+@living_is_attacked
+if(!isPlayer(living_entity)) {
+	goto("wait");
+}
+player = living_entity;
 cancel = true;
-player_damage_cause_string = damage.getType(player_damage_cause);
-if(player_damage_cause_string == "outOfWorld") {
+damage_source_type = damage.getType(damage_source);
+if(damage_source_type == "outOfWorld") {
 	//sollte der spieler durch das auffangnetz MoveData:fallid durchfallen und im Void landen, wird er zurückgesetzt
 	gosub("resetcore");
 	goto("newgame");
@@ -242,8 +231,7 @@ if(id == fallid) {
 	gosub("resetcore");
 	goto("newgame");
 }
-block.set(previousblock, air_item_type);
-set.remove(jumpblocksset, previousblock);
+block.set(previousblock, "minecraft:air");
 previousblock = newblock;
 block.set(newblock, concrete_block);
 points++;
@@ -253,43 +241,40 @@ player.setSaturation(player, 5);
 goto("newblock");
 
 @resetcore
-block.set(newblock, air_item_type);
-block.set(previousblock, air_item_type);
-set.remove(jumpblocksset, newblock);
-set.remove(jumpblocksset, previousblock);
+block.set(newblock, "minecraft:air");
+block.set(previousblock, "minecraft:air");
 //Statistik
 playedgames = getPlayedGames(rankingtable, player_id) + 1;
 display.reset(player);
-player.speak(player, gamename, "§r---= §eStatistik §r=---");
-player.speak(player, gamename, concat("§rPunkte: §e", text.number(points)));
 
 if(last_record < points) {
 	record = points;
 	diff = points - last_record;
-	player.speak(player, gamename, concat("§rEigenen Rekord um §e", text.number(diff), "§r übertroffen"));
 } else {
 	record = last_record;
 }
-last_record = record;
-setRanking(rankingtable, player_id, record, playedgames);
-
-player.speak(player, gamename, concat("§rRekord: §e", text.number(record)));
 if(record > overall_record) {
 	overall_record = record;
 }
-player.speak(player, gamename, concat("§rRekord überhaupt: §e", text.number(overall_record)));
+
+minigame.statsHeader(player, gamename, "§e");
+minigame.statsLine(player, "§e", "Points", text.number(points));
+if(diff != null) {
+	msg(player, " §e- §rBeat own record by §e", text.number(diff));
+}
+
+last_record = record;
+setRanking(rankingtable, player_id, record, playedgames);
+
+minigame.statsLine(player, "§e", "Your Record", text.number(record));
+minigame.statsLine(player, "§e", "Server Record", text.number(overall_record));
 return;
 
 @player_giveup
 @player_logout
-entity.teleport(player, gamesworldloc);
 gosub("resetcore");
 
-n = 0;
-while(worker.hasWork()) {
-	waitfor(5);
-	if(++n == 8) {
-		break;
-	}
-}
-term();
+script = script.getFromId(script_id);
+minigame.kickPlayer(script, player);
+minigame.term(script, gamesignloc);
+term();

+ 59 - 55
minigames/parcour/parcour.txt

@@ -1,23 +1,21 @@
-registerRanking(rankingtable);
 gamename = "§6Parcour";
-
-block.setSign(gamesignloc, 2, "1/1");
-block.setSign(gamesignloc, 3, "§6Läuft");
+maxplayers = 1;
 
 event.load("command");
 event.load("player_move");
-event.load("player_is_attacked");
+event.load("living_is_attacked");
 event.load("player_death");
-event.load("player_post_respawn");
+event.load("player_pre_respawn");
 event.load("player_toss");
 event.load("player_logout");
 event.load("player_giveup");
+event.load("player_join");
 event.load("entity_click");
 event.load("block_break");
 event.load("block_place");
 event.load("block_click");
 
-list.new(notallowed);
+notallowed = list.new();
 list.add(notallowed, "fly");
 list.add(notallowed, "gm");
 list.add(notallowed, "gamemode");
@@ -29,10 +27,22 @@ list.add(notallowed, "j");
 list.add(notallowed, "jumpto");	
 
 sign_tag = block.getTag("minecraft:signs");
+delayed_tp = false;
+
+minutes = 0;
+seconds = 0;
+jumpstage = 0;
+starttime = time.getMillis();
 
-player = script.getLeader();
+@wait
+wait();
+if(player.hasMinigameId(player, script_id)) {
+	ignoreGoto(event);
+}
+goto("wait");
 
-list.new(spawnlocs);
+@player_join
+spawnlocs = list.new();
 for(i = 0; i < list.getSize(checkpoints); i++) {
 	location1 = list.getIndex(checkpoints, i);
 	location2 = loc.mod(location1, 1, 1, 1);
@@ -41,38 +51,21 @@ for(i = 0; i < list.getSize(checkpoints); i++) {
 	list.add(spawnlocs, loc.mod(location1, 0.5, 0, 0.5));
 }
 
-minutes = 0;
-seconds = 0;
-starttime = time.getMillis();
 sgv(player, "jr", true);
-player_id = player.getId(player);
-jumpstage = 0;
 entity.teleport(player, list.getIndex(spawnlocs, jumpstage));
 player.clearInventory(player);
-record_time = getPoints(rankingtable, player_id);
+record_time = getPoints(rankingtable, player.getId(player));
 overall_record = getPointsFromRank(rankingtable, 1, "ASC");
 
+player.setGamemode(player, "survival");
+player.setFly(player, false);
 display.add(player, 1, gamename);
-display.add(player, 2, "Rekord überhaupt: ", text.number(math.roundDown(overall_record / 60)), " min ", text.number(math.roundComma(overall_record % 60, 2)), " s");
-display.add(player, 3, "Eigener Rekord: ", text.number(math.roundDown(record_time / 60)), " min ", text.number(math.roundComma(record_time % 60, 2)), " s");
+display.add(player, 2, "Server Record: ", text.number(math.roundDown(overall_record / 60)), " min ", text.number(math.roundComma(overall_record % 60, 2)), " s");
+display.add(player, 3, "Your Record: ", text.number(math.roundDown(record_time / 60)), " min ", text.number(math.roundComma(record_time % 60, 2)), " s");
 display.add(player, 4, concat(text.number(jumpstage), "/", text.number(list.getSize(checkpoints) - 1)));
-display.add(player, 5, concat("§rZeit: 0:00"));
-
-
+display.add(player, 5, concat("§rTime: 0:00"));
 gosub("stage_specific");
-
-if(player.isSurvival(player)) {
-	if(player.isAdventure(player)) {
-		player.setGamemode(player, "survival");
-	}
-} else {
-	player.setGamemode(player, "survival");
-}
 sgoto(1, "loop");
-
-@wait
-wait();
-ignoreGoto(event);
 goto("wait");
 
 @block_click
@@ -105,35 +98,48 @@ goto("wait");
 player.respawn(player);
 goto("wait");
 
-@player_post_respawn
-entity.teleport(player, list.getIndex(spawnlocs, jumpstage));
+@player_pre_respawn
+player.setSpawn(player, list.getIndex(spawnlocs, jumpstage));
 goto("wait");
 
-@player_is_attacked
-player_damage_cause_string = damage.getType(player_damage_cause);
-if(player_damage_cause_string == "hotFloor") {
-	entity.teleport(player, list.getIndex(spawnlocs, jumpstage));
+@living_is_attacked
+if(!isPlayer(living_entity)) {
 	goto("wait");
 }
-if(player_damage_cause_string == "outOfWorld") {
-	cancel = true;
-	entity.teleport(player, list.getIndex(spawnlocs, jumpstage));
+if(delayed_tp) {
 	goto("wait");
 }
-if(player_damage_cause_string == "fall") {
+player = living_entity;
+damage_source_type = damage.getType(damage_source);
+if(damage_source_type == "hotFloor") {
+	goto("delayedTeleport");
+}
+if(damage_source_type == "outOfWorld") {
+	cancel = true;
+	goto("delayedTeleport");
+}
+if(damage_source_type == "fall") {
 	cancel = true;
 	if(jumpstage == 7) {
-		entity.teleport(player, list.getIndex(spawnlocs, jumpstage));
-		goto("wait");
+		goto("delayedTeleport");
 	}
 	goto("wait");
 }
-if(player_damage_cause_string == "arrow") {
+if(damage_source_type == "arrow") {
 	cancel = true;
-	goto("wait");
 }
 goto("wait");
 
+@delayedTeleport
+delayed_tp = true;
+sgoto(1, "delayedTeleport2");
+goto("wait");
+
+@delayedTeleport2
+delayed_tp = false;
+entity.teleport(player, list.getIndex(spawnlocs, jumpstage));
+goto("wait");
+
 @player_move
 player_loc = entity.getLocation(player);
 x = loc.getCoord(player_loc, "bx");
@@ -148,11 +154,10 @@ if(index > jumpstage) {
 	} else {
 		player.speak(player, gamename, "§r", text.number(index), ".Checkpoint erreicht §e", text.number(minutes), ":", text.number(seconds));
 	}
-	display.add(player, 4, concat(text.number(jumpstage), "/", text.number(list.getSize(checkpoints) - 1)));
 	jumpstage = index;
+	display.add(player, 4, concat(text.number(jumpstage), "/", text.number(list.getSize(checkpoints) - 1)));
 	if(jumpstage == list.getSize(checkpoints) - 1) {
 		player.speak(player, gamename, "§rZiel erreicht");
-		player_id = player.getId(player);
 		endtime = time.getMillis();
 		time = (endtime - starttime) / 1000; //in Sekunden
 		if(record_time == 0 || time < record_time) {
@@ -162,7 +167,7 @@ if(index > jumpstage) {
 			}
 			record_time = time;
 		}
-		setRanking(rankingtable, player_id, record_time, -1);
+		setRanking(rankingtable, player.getId(player), record_time, -1);
 
 		msg(player, "§b---= Deine Statistik =---");
 		minutes = math.roundDown(record_time / 60);
@@ -187,9 +192,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)));
 }
 player.setHunger(player, 20);
 player.setSaturation(player, 5);
@@ -198,9 +203,8 @@ goto("wait");
 
 @player_logout
 @player_giveup
-block.setSign(gamesignloc, 2, "0/1");
-block.setSign(gamesignloc, 3, "§2Bereit");
 sgv(player, "jr", false);
-resetplayer(player);
-tptogameslobby(player);
+script = script.getFromId(script_id);
+minigame.kickPlayer(script, player);
+minigame.term(script, gamesignloc);
 term();

+ 15 - 12
system/commands.txt

@@ -398,18 +398,22 @@ if(event == "custom_command") {
 	}
 	affectedname = player_name;
 	affectedplayer = player;
-	tjr = ggv(player, "tjr");
-	if(tjr != null) {
-		if(tjr) {
-			player.speak(player, "§4Dr. Septimus", "§rHättest du wohl gerne. Aber ich habe vorgesorgt. Muahahaha.");
-			goto("wait");
+	if(command != "hub") {
+		tjr = ggv(player, "tjr");
+		if(tjr != null) {
+			if(tjr) {
+				player.speak(player, "§4Dr. Septimus", "§rHättest du wohl gerne. Aber ich habe vorgesorgt. Muahahaha.");
+				goto("wait");
+			}
 		}
 	}
-	jr = ggv(player, "jr");
-	if(jr != null) {
-		if(jr) {
-			player.speak(player, "§6Commands", "§rDie wichtigste Regel im Wettkampf: Sabotage!");
-			goto("wait");
+	if(command != "hub") {
+		jr = ggv(player, "jr");
+		if(jr != null) {
+			if(jr) {
+				player.speak(player, "§6Commands", "§rDie wichtigste Regel im Wettkampf: Sabotage!");
+				goto("wait");
+			}
 		}
 	}
 	//Gildenpvp
@@ -5169,8 +5173,7 @@ if(command == "hub") {
 		script_id = next(iter);
 		script = script.getFromId(script_id);
 		if(script == null) {
-			msg("dev", "Should not happen. Error on /hub");
-			msg("dev", set);
+			msg("dev", "Should not happen. Error on /hub ", set);
 			player.resetMinigames(player);
 			entity.teleport(player, gamesspawn);
 			goto("wait");

+ 1 - 0
test2.txt

@@ -0,0 +1 @@
+sgv(read.player("marvinius"), "jr", false);