Marvin Löschenkohl 4 anos atrás
pai
commit
f2bbe32a77

+ 36 - 0
Archiv/deathswap.txt

@@ -0,0 +1,36 @@
+msg("dev", "Death swap gestarted");
+@loop
+waitfor(5800);
+for(i = 0; i < 10; i++) {
+	tell(10 - i);
+	waitfor(20);
+}
+deathswap();
+goto("loop");
+
+
+function tell(time) {
+	try {
+		msg(read.player("MentorMentos"), "§cSwap in ", text.number(time), " seconds");
+		msg(read.player("marvinius"), "§cSwap in ", text.number(time), " seconds");
+	} catch {
+		msg("dev", "Death swap terminiert");
+		term();
+	}
+}
+
+function deathswap() {
+	try {
+		player_name1 = "MentorMentos";
+		player_name2 = "marvinius";
+		player1 = read.player(player_name1);
+		player2 = read.player(player_name2);
+		loc1 = entity.getLocation(player1);
+		loc2 = entity.getLocation(player2);
+		entity.teleport(player1, loc2);
+		entity.teleport(player2, loc1);
+	} catch {
+		msg("dev", "Death swap terminiert");
+		term();
+	}
+}

+ 0 - 0
gildenpvp/gpvp.txt → Archiv/gildenpvp/gpvp.txt


+ 0 - 0
utils/u_gpvp.txt → Archiv/gildenpvp/u_gpvp.txt


+ 0 - 123
global/friends.txt

@@ -1,123 +0,0 @@
-executeOnce = databank.prepare("CREATE TABLE IF NOT EXISTS friends (player_id INT NOT NULL, friend_id INT NOT NULL, time BIGINT NOT NULL, PRIMARY KEY (player_id, friend_id), FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);");
-databank.workerExecute(executeOnce);
-
-event.load("custom_command");
-
-map.new(newfriends);
-map.new(aliasmap);
-map.add(aliasmap, "f", "friend");
-
-freundepräfix = "§5Freunde";
-
-msg("dev", "§bFriends §rwurde geladen");
-@wait
-wait();
-if(event == "custom_command") {
-	origin = map.get(aliasmap, command);
-	if(origin != null) {
-		command = origin;
-	}
-	size = list.getSize(args);
-	if(command == "friend") {
-		if(size == 0) {
-			goto("syntax");
-		} else {
-			arg0 = text.toLowerCase(list.getIndex(args, 0));
-			if(arg0 == "add") {
-				goto("add");
-			} elseif(arg0 == "remove") {
-				goto("remove");
-			} elseif(arg0 == "list") {
-				goto("list");
-			} else {
-				goto("syntax");
-			}
-		}
-	}
-}
-goto("wait");
-
-@syntax
-player.speak(player, freundepräfix, "§r/friend ...");
-msg(player, "§5 - add <name> §rMarkiert einen Spieler als Freund");
-msg(player, "§5 - remove <name> §rEntfernt einen Spieler als Freund");
-msg(player, "§5 - list §rListet deine Freunde auf");
-goto("wait");
-
-@add
-if(size != 2) {
-	player.speak(player, freundepräfix, "§r/friend add <name>");
-	goto("wait");
-}
-friend_name = list.getIndex(args, 1);
-if(player_name == friend_name) {
-	player.speak(player, freundepräfix, "§rDu kannst dich nicht selbst einladen");
-	goto("wait");
-}
-player_id = player.getId(player);
-if(!checkIfEverOnline(friend_name)) {
-	player.speak(player, freundepräfix, "§rDieser Spieler war noch nie online");
-	goto("wait");
-}
-friend_id = player.getId(player.getUuid(friend_name));
-if(isAFriend(player_id, friend_id)) {
-	player.speak(player, freundepräfix, "§rDieser Spieler ist bereits dein Freund");
-	goto("wait");
-}
-if(map.contains(newfriends, friend_id)) {
-	if(map.get(newfriends, friend_id) == player_id) {
-		addFriend(player_id, friend_id);
-		map.remove(newfriends, friend_id);
-		player.speak(player, freundepräfix, concat("§rDu bist nun mit §7", friend_name, "§r befreundet"));
-		sendmessage(friend_name, freundepräfix, concat("§rDu bist nun mit §7", player_name, "§r befreundet"), true);
-		goto("wait");
-	}
-}
-map.add(newfriends, player_id, friend_id); //Einlader, Eingeladener
-player.speak(player, freundepräfix, concat("§rDu hast §7", friend_name, "§r eine Einladung geschickt"));
-sendmessage(friend_name, freundepräfix, concat("§7", player_name, "§r möchte dein Freund sein"), true);
-if(isOnline(friend_name)) {
-	friend = read.player(friend_name);
-	msg(friend_name, text.click("§r[§aAnnehmen§r]", concat("/friend add ", player_name)));
-}
-goto("wait");
-
-@list
-if(size != 1) {
-	player.speak(player, commandspräfix, "/friend list");
-} else {
-	player_id = player.getId(player);
-	friendlist = getFriendsList(player_id);
-	listsize = list.getSize(friendlist);
-	if(listsize == 0) {
-		player.speak(player, freundepräfix, "§rDu hast noch keine Freunde");
-	} else {
-		msg(player, "§5Freunde:");
-		for(i = 0; i <= listsize - 1; i++) {
-			msg(player, "§r- ", list.getIndex(friendlist, i));
-		}
-	}
-}
-goto("wait");
-
-@remove
-if(size != 2) {
-	player.speak(player, freundepräfix, "§r/friend remove <name>");
-} else {
-	friend_name = list.getIndex(args, 1);
-	player_id = player.getId(player);
-	if(!checkIfEverOnline(friend_name)) {
-		player.speak(player, freundepräfix, "§rDieser Spieler war noch nie online");
-		goto("wait");
-	}
-	friend_id = player.getId(player.getUuid(friend_name));
-	if(!isAFriend(player_id, friend_id)) {
-		player.speak(player, freundepräfix, "§rDieser Spieler ist nicht dein Freund");
-		goto("wait");
-	}
-	deleteFriend(player_id, friend_id);
-	deleteFriend(friend_id, player_id);
-	player.speak(player, freundepräfix, concat("§rDu bist nun nicht mehr mit §7", friend_name, "§r befreundet"));
-	sendmessage(friend_name, freundepräfix, concat("§rDu bist nun nicht mehr mit §7", player_name, "§r befreundet"), true);
-}
-goto("wait");

+ 9 - 8
global/gamecenter.txt

@@ -78,6 +78,7 @@ addGameSign("halmasign1", true, loc.new(gamesworld, -401, 157, -73), "minigames/
 addGameSign("halmasign2", true, loc.new(gamesworld, -401, 158, -73), "minigames/halma/halma", "minigames/halma/halma_map2", false);
 addGameSign("shoppingsign1", true, loc.new(gamesworld, -411, 158, -44), "minigames/shoppingchaos/shoppingchaos", "minigames/shoppingchaos/shopping_map1", false);
 //addGameSign("damesign1", false, loc.new(gamesworld, -411, 158, -44), "minigames/dame/dame", "minigames/dame/dame_map1", false);
+addGameSign("mengersign1", true, loc.new(gamesworld, -432, 158, -53), "minigames/mengerrun/mengerrun", "minigames/mengerrun/menger_map1", false);
 
 setScriptVar("gamesigns", gamesignsmap);
 
@@ -132,7 +133,7 @@ if(command == "game") {
 		arg0 = list.getIndex(args, 0);
 		block_loc = player.getTarget(player, 5, false, false);
 		if(!block.hasTag(sign_tag, block.get(block_loc))) {
-			speakPrefix(player, "§6Games", "Look at a sign.");
+			player.speakPrefix(player, "§6Games", "Look at a sign.");
 			goto("wait");
 		}
 		if(arg0 == "open") {
@@ -153,14 +154,14 @@ if(hand == "OFF_HAND") {
 	goto("wait");
 }
 if(loc.distance(marv_loc, entity.getLocation(player)) < 3) {
-	speakPrefix(player, "§cGamerMarv", "Help! Get me a beer or me out of here!");
+	player.speakPrefix(player, "§cGamerMarv", "Help! Get me a beer or me out of here!");
 }
 goto("wait");
 
 @block_break
 if(set.contains(gamesign_ground_block, block_loc) || map.contains(gamepaths, block_loc)) {
 	cancel = true;
-	speakPrefix(player, "§6Games", "You can´t break this block.");
+	player.speakPrefix(player, "§6Games", "You can´t break this block.");
 	goto("wait");
 }
 goto("wait");
@@ -227,7 +228,7 @@ if(player.isInParty(player)) {
 		party_list = party.getList(player.getPartyId(player));
 		party_size = list.getSize(party_list);
 		if(party_size > maxplayers) {
-			speakPrefix(player, party_prefix, "Not enough space.");
+			player.speakPrefix(player, party_prefix, "Not enough space.");
 			goto("wait");
 		}		
 		minigame.partyJoin(script, player, party_list);
@@ -242,7 +243,7 @@ goto("wait");
 player_loc = entity.getLocation(player);
 if(loc.isInGamesWorld(player_loc)) {
 	resetplayer(player);
-	entity.teleport(player, getServerSpawn());
+	entity.teleport(player, getGamesSpawn());
 }
 goto("wait");
 
@@ -315,7 +316,7 @@ function minigame.joinPlayer(script, player) {
 function minigame.singleJoin(script, player) {
 	player_list = minigame.getPlayers(script.getId(script));
 	if(list.getSize(player_list) >= $maxplayers) {
-		speakPrefix(player, "§6Games", "Not enough space.");
+		player.speakPrefix(player, "§6Games", "Not enough space.");
 		return;
 	}
 	minigame.joinPlayer(script, player);
@@ -328,11 +329,11 @@ function minigame.partyJoin(script, party_leader, party_list) {
 		p = player.get(p_uuid);
 		p_name = player.getName(p);
 		if(!loc.isInGamesWorld(entity.getLocation(p))) {
-			speakPrefix(party_leader, $party_prefix, concat(p_name, "§c is not in the world 'games'."));
+			player.speakPrefix(party_leader, $party_prefix, concat(p_name, "§c is not in the world 'games'."));
 			continue;
 		}
 		if(player.hasMinigame(p)) {
-			speakPrefix(party_leader, $party_prefix, concat(p_name, "§c is in another game."));
+			player.speakPrefix(party_leader, $party_prefix, concat(p_name, "§c is in another game."));
 			continue;
 		}
 		minigame.joinPlayer(script, p);

+ 1 - 1
minigames/hideandseek/hideandseek.txt

@@ -168,7 +168,7 @@ goto("checkgame");
 
 @living_pre_hurt
 defender = player;
-attacker = getPlayerFromDamageSource(damage_source);
+attacker = player.getFromDamageSource(damage_source);
 if(attacker == null) {
 	goto("checkgame");
 }

+ 1 - 1
minigames/hideandseek/hideandseekmap1.txt

@@ -4,7 +4,7 @@ mapname = "Egypt";
 gamesworld = world.get("games");
 lobbyspawnloc = loc.new(gamesworld, 945.5, 87, 973.5);
 gamesignsmap = getScriptVar("gamesigns");
-gamesignloc = map.get(gamesignsmap, "catchsign1");
+gamesignloc = map.get(gamesignsmap, "hideandseeksign1");
 radius = 150;
 middleloc = loc.new(gamesworld, 4000, 100, 2000);
 

+ 1 - 1
minigames/hideandseek/hideandseekmap2.txt

@@ -4,7 +4,7 @@ mapname = "Egypt";
 gamesworld = world.get("games");
 lobbyspawnloc = loc.new(gamesworld, 921.5, 87, 973.5);
 gamesignsmap = getScriptVar("gamesigns");
-gamesignloc = map.get(gamesignsmap, "catchsign2");
+gamesignloc = map.get(gamesignsmap, "hideandseeksign2");
 radius = 150;
 middleloc = loc.new(gamesworld, 3526, 102, 2017);
 

+ 3 - 1
minigames/jumpnrun/todesjumpnrun.txt

@@ -158,7 +158,9 @@ list.add(checkpoints, loc.new(gamesworld, 3965, 101, -5970));
 
 @wait
 wait();
-ignoreGoto(event);
+if(player.hasMinigameId(player, script_id)) {
+	ignoreGoto(event);
+}
 goto("wait");
 
 @player_join

+ 22 - 0
minigames/mengerrun/menger_map1.txt

@@ -0,0 +1,22 @@
+jan_mr_skills = list.new();
+addMengerSkill("Skill1", 118, 3, 2,"jump_boost", null, null, null);
+addMengerSkill("Skill2", 118, 3, 8, "jump_boost", 3, 3, "speed");
+addMengerSkill("Skill3", 118, 3, 21, "jump_boost", 3, 5, "speed");
+addMengerSkill("Skill4", 118, 3, 25, "jump_boost", 3, 7, "speed");
+
+gamesworld = getGamesWorld();
+edge_loc_1 = loc.new(gamesworld, -1242, 242, 3081);
+edge_loc_2 = loc.new(gamesworld, -1000, 0, 3001);
+loc.sort(edge_loc_1, edge_loc_2);
+lobbyspawnloc = loc.new(gamesworld, 926.5, 87, 926.5);
+mapname = "MengerSponge";
+
+gamesignsmap = getScriptVar("gamesigns");
+gamesignloc = map.get(gamesignsmap, "mengersign1");
+
+minplayers = 2;
+maxplayers = 10;
+start_life_time = 240; //sek
+max_life_time = 300; //sek
+
+seeker_amount = 2;

+ 321 - 0
minigames/mengerrun/mengerrun.txt

@@ -0,0 +1,321 @@
+rankingtable = "mrranks";
+
+times = map.new();
+seekerlist = list.new();
+escaperlist = list.new();
+
+gamename = "§9Menger-Run";
+gosub("setstart");
+
+goto("simplelobby");
+
+@finalstart
+player_list = minigame.getPlayers(script_id);
+
+event.load("function_key");
+
+//Temp-Kopie von player_list erstellen
+templist = list.new();
+amount_players = list.getSize(player_list);
+for(i = 0; i < amount_players; i++) {
+	p_uuid = list.getIndex(player_list, i);
+	p = player.get(p_uuid);
+	player.speakPrefix(p, gamename, "The game has started.");
+	list.add(templist, p_uuid);
+	map.add(times, p_uuid, start_life_time);
+	player.setGamemode(p, "adventure");
+	player.setFly(p, false);
+	menger.tpPlayer(p);
+}
+
+if(seeker_amount == minplayers && amount_players == minplayers) {
+	seeker_amount--;
+}
+
+for(i = 0; i < seeker_amount; i++) {
+	p_uuid = list.getIndex(templist, math.random(0, list.getSize(templist) - 1));
+	p = player.get(p_uuid);
+	list.remove(templist, p_uuid);
+	setSeeker(p);
+	player.speakPrefix(p, gamename, "Catch other players!");
+}
+
+for(i = 0; i < list.getSize(templist); i++) {
+	p_uuid = list.getIndex(templist, i);
+	p = player.get(p_uuid);
+	setEscaper(p);
+	player.speakPrefix(p, gamename, "Run away!!!");
+}
+sgoto(20, "loop");
+
+@checkgame
+wait();
+if(event == "living_pre_hurt") {
+	if(!isPlayer(living_entity)) {
+		goto("checkgame");
+	}
+	player = living_entity;
+}
+if(player.hasMinigameId(player, script_id)) {
+	ignoreGoto(event);
+}
+goto("checkgame");
+
+@function_key
+if(key > list.getSize(jan_mr_skills)) {
+	goto("checkgame");
+}
+skill = list.getIndex(jan_mr_skills, key - 1);
+skill_name = skill[0];
+effecttime1 = skill[2]; //s
+amplifier1 = skill[3];
+tech_name1 = skill[4];
+effecttime2 = skill[5]; //s
+amplifier2 = skill[6];
+tech_name2 = skill[7];
+entity.addEffect(player, tech_name1, effecttime1 * 20, amplifier1, false);
+if(tech_name2 != null) {
+	entity.addEffect(player, tech_name2, effecttime2 * 20, amplifier2, false);
+}
+goto("checkgame");
+
+@living_pre_hurt
+defender = player;
+attacker = player.getFromDamageSource(damage_source);
+if(attacker == null) {
+	damage_type = damage.getType(damage_source);
+	if(damage_type == "fall") {
+		cancel = true;
+		goto("checkgame");
+	}
+	if(damage_type == "outOfWorld") {
+		cancel = true;
+		if(list.contains(escaperlist, player.getUuid(defender))) {
+			//Random-Seeker zum Escaper machen
+			p_uuid = list.getIndex(seekerlist, math.random(0, list.getSize(seekerlist) - 1));
+			p = player.get(p_uuid);
+			setEscaper(p);
+			player.speakPrefix(p, gamename, "Run away!!!");
+			//Escaper wird zum Seeker
+			setSeeker(defender);
+			player.speakPrefix(defender, gamename, "Catch other players!");
+			menger.tpPlayer(defender);
+		} else {
+			menger.tpPlayer(defender);
+		}
+	}
+	goto("checkgame");
+}
+defender_uuid = player.getUuid(defender);
+if(!list.contains(player_list, defender_uuid)) {
+	cancel = true;
+	player.speakPrefix(attacker, gamename, "§eIllegal player in game.");
+	goto("checkgame");
+}
+if(!player.hasMinigameId(attacker, script_id)) {
+	goto("checkgame");
+}
+attacker_uuid = player.getUuid(attacker);
+if(defender_uuid == attacker_uuid) {
+	goto("checkgame");
+}
+if(!list.contains(player_list, attacker_uuid)) {
+	player.speakPrefix(defender, gamename, "§eIllegal player in game.");
+	goto("checkgame");
+}
+if(list.contains(seekerlist, attacker_uuid) && list.contains(escaperlist, defender_uuid)) {
+	menger.tpPlayer(defender);
+	setSeeker(defender);
+	player.speakPrefix(defender, gamename, "Catch other players!");
+	setEscaper(attacker);
+	player.speakPrefix(attacker, gamename, "Run away!!!");
+	new_time = map.get(times, attacker_uuid) + 30;
+	if(new_time > max_life_time) {
+		new_time = max_life_time;
+	}
+	map.add(times, attacker_uuid, new_time);
+}
+goto("checkgame");
+
+@block_break
+cancel = true;
+goto("checkgame");
+
+@block_place
+cancel = true;
+goto("checkgame");
+
+@loop
+for(i = 0; i < list.getSize(seekerlist); i++) {
+	player_uuid = list.getIndex(seekerlist, i);
+	player = player.get(player_uuid);
+	seconds = map.get(times, player_uuid) - 1;
+	map.add(times, player_uuid, seconds);
+	if(seconds == 0) {
+		minigame.speakAll(gamename, concat("§6", player.getName(player), "§r's time has run out."));
+		gosub("menger_kick"); 
+	}
+	display.reset(player);
+	display.add(player, 0, gamename);
+	display_index = 1;
+	for(h = 0; h < list.getSize(player_list); h++) {
+		p_uuid = list.getIndex(player_list, h);
+		p = player.get(p_uuid);
+		seconds = map.get(times, p_uuid);
+		minutes = text.number(math.roundDown(seconds / 60));
+		seconds = seconds % 60;
+		if(seconds < 10) {
+			seconds = concat("0", text.number(seconds));
+		} else {
+			seconds = text.number(seconds);
+		}
+		time_string = concat(minutes, ":", seconds);
+		if(list.contains(seekerlist, p_uuid)) {
+			minigame.displayAll(display_index++, concat(time_string, " §e", player.getName(p)));
+		} else {
+			minigame.displayAll(display_index++, concat(time_string, " ", player.getName(p)));
+		}
+	}
+}
+sgoto(20, "loop");
+goto("checkgame");
+
+function setSeeker(player) {
+	setStackIcons(player);
+	player_uuid = player.getUuid(player);
+	entity.setHealth(player, 20);
+	player.setHunger(player, 20);
+	player.setSaturation(player, 5);
+	entity.clearEffects(player);
+	player.clearInventory(player);
+	list.add($seekerlist, player_uuid);
+	list.remove($escaperlist, player_uuid);
+	entity.addEffect(player, "glowing", $max_life_time * 20 * $maxplayers, 1, false);
+	player.setSpeed(player, 2.6 / 20);
+}
+
+function setEscaper(player) {
+	setStackIcons(player);
+	player_uuid = player.getUuid(player);
+	entity.setHealth(player, 20);
+	player.setHunger(player, 20);
+	player.setSaturation(player, 5);
+	entity.clearEffects(player);
+	player.clearInventory(player);
+	list.add($escaperlist, player_uuid);
+	list.remove($seekerlist, player_uuid);
+	entity.addEffect(player, "glowing", $max_life_time * 20 * $maxplayers, 1, false);
+	player.setSpeed(player, 2.5 / 20);
+}
+
+function setStackIcons(player) {
+	for(h = 0; h < list.getSize($jan_mr_skills); h++) {
+		skill = list.getIndex($jan_mr_skills, h);
+		icon_id = skill[1];
+		stacks.set(player, h, icon_id, 0);
+	}
+	stacks.setActive(player, true);
+}
+
+function addMengerSkill(skill_name, icon_id, effecttime1, amplifier1, tech_name1, effecttime2, amplifier2, tech_name2) {
+	skill = array.new(8);
+	skill[0] = skill_name;
+	skill[1] = icon_id;
+	skill[2] = effecttime1; //s
+	skill[3] = amplifier1;
+	skill[4] = tech_name1;
+	skill[5] = effecttime2; //s
+	skill[6] = amplifier2;
+	skill[7] = tech_name2;
+	list.add($jan_mr_skills, skill);
+}
+
+@player_logout
+@player_giveup
+minigame.speakAll(gamename, concat("§6", player.getName(player), " §rhas left the game."));
+gosub("menger_kick"); 
+goto("checkgame");
+
+@menger_kick
+script = script.getFromId(script_id);
+player.setSpeed(player, 0.05);
+minigame.kickPlayer(script, player);
+player_uuid = player.getUuid(player);
+list.remove(seekerlist, player_uuid);
+list.remove(escaperlist, player_uuid);
+showStats(player, false);
+
+current_seekers = list.getSize(seekerlist);
+current_escapers = list.getSize(escaperlist);
+if(list.contains(seekerlist, player_uuid)) {
+	is_seeker = true;
+} else {
+	is_seeker = false;
+}
+
+if(current_seekers == 2 && current_escapers >= 2) {
+	if(is_seeker) {
+		p = player.get(list.getIndex(escaperlist, math.random(0, list.getSize(escaperlist) - 1)));
+		setSeeker(p);
+		player.speakPrefix(p, gamename, "A seeker has left. You are a seeker now.");
+	}
+	return;
+}
+if(current_seekers == 2 && current_escapers == 1) {
+	if(!is_seeker) {
+		p = player.get(list.getIndex(seekerlist, math.random(0, list.getSize(seekerlist) - 1)));
+		setEscaper(p);
+		player.speakPrefix(p, gamename, "An escaper has left. You are an escaper now.");
+	}
+	seeker_amount--;
+	return;
+}
+if(list.getSize(player_list) < minplayers) {
+	winner_uuid = list.getIndex(player_list, 0);
+	goto("win");
+}
+return;
+
+@win
+winner_name = player.getName(winner_uuid);
+winner = player.get(winner_uuid);
+player.speakPrefix(winner, gamename, "§6You won the game.");
+showStats(winner, true);
+player.setSpeed(winner, 0.05);
+script = script.getFromId(script_id);
+minigame.kickPlayer(script, winner);
+minigame.term(script, gamesignloc);
+term();
+
+function showStats(player, won) {
+	/*player_id = player.getId(player);
+	last_record = getPoints($rankingtable, player_id);
+	if(won) {
+		last_record++;
+	}
+	playedgames = getPlayedGames($rankingtable, player_id) + 1;
+	setRanking($rankingtable, player_id, last_record, playedgames);*/
+
+	minigame.statsHeader(player, $gamename, "§e");
+	/*minigame.statsLine(player, "§e", "Played games", text.number(playedgames));
+	minigame.statsLine(player, "§e", "Won games", text.number(last_record));
+	if(playedgames != 0) {
+		minigame.statsLine(player, "§e", "Win ratio", concat(text.number(math.roundComma((last_record / playedgames) * 100, 2)), "%"));
+	}*/
+}
+
+function menger.tpPlayer(player) {
+	world = getGamesWorld();
+	@do
+	x = math.random(loc.getX($edge_loc_1), loc.getX($edge_loc_2));
+	y = math.random(loc.getY($edge_loc_1), loc.getY($edge_loc_2));
+	z = math.random(loc.getZ($edge_loc_1), loc.getZ($edge_loc_2));
+	loc1 = loc.new(world, x, y, z);
+	loc2 = loc.mod(loc1, 0, 1, 0);
+	loc3 = loc.mod(loc1, 0, 2, 0);
+	if(block.isSolid(loc1) && block.isAir(loc2) && block.isAir(loc3)) {
+		entity.teleport(player, loc.mod(loc2, 0.5, 0, 0.5));
+		return;
+	}
+	goto("do");
+}

+ 1 - 0
minigames/parcour/parcour.txt

@@ -1,5 +1,6 @@
 gamename = "§6Parcour";
 maxplayers = 1;
+sign.started(gamesignloc);
 
 event.load("command");
 event.load("player_move");

+ 1 - 0
minigames/shoppingchaos/shoppingchaos.txt

@@ -647,6 +647,7 @@ for(i = 0; i < list.getSize(removed_perms); i++) {
 	perm.registerPlayer(player_uuid, 1);
 	perm.registerPlayer(player_uuid, 15);
 }
+minigame.kickAllPlayers(script);
 minigame.term(script, gamesignloc);
 term();
 

+ 11 - 12
startscript.txt

@@ -6,24 +6,23 @@ script.start("system/limits");
 script.start("system/svars");
 script.start("system/player_data", "utils/u_general");
 script.start("system/perms", "utils/u_general");
-script.start("system/chat", "utils/u_general");
+script.startNamed("Chat", "system/chat", "utils/u_general");
 script.start("system/commands", "utils/u_general", "utils/u_plots", "utils/u_games");
 // system/commands utils/u_general utils/u_plots utils/u_games
-script.start("global/party", "utils/u_general", "utils/u_party");
-script.start("global/copyisland");
-script.start("global/friends", "utils/u_general");
-script.start("system/damage");
-script.start("system/playtime");
-script.start("global/pumpkin");
-script.start("global/voxel");
-script.start("global/ticketsystem", "utils/u_general");
-script.start("global/mailsystem", "utils/u_general");
+script.startNamed("Party", "global/party", "utils/u_general", "utils/u_party");
+script.startNamed("Copyisland", "global/copyisland");
+script.startNamed("Damage", "system/damage");
+script.startNamed("Playtime", "system/playtime");
+script.startNamed("Pumpkin", "global/pumpkin");
+script.startNamed("Voxel", "global/voxel");
+script.startNamed("Ticket", "global/ticketsystem", "utils/u_general");
+script.startNamed("Mails", "global/mailsystem", "utils/u_general");
 script.start("global/chestshops", "utils/u_general", "utils/u_plots");
-script.start("survival/survival", "utils/u_general");
+script.startNamed("Survival", "survival/survival", "utils/u_general");
 script.start("global/gamecenter", "utils/u_general", "utils/u_games", "utils/u_plots", "utils/u_party");
 script.start("global/ranklist", "utils/u_general", "utils/u_games");
 script.startNamed("SpawnQuests", "storydorf/spawn/core", "utils/u_general");
 
 error.setConsolePrint(true);
-debug.setConsolePrint(true);
+debug.setConsolePrint(false);
 term();

+ 45 - 23
survival/survival.txt

@@ -4,6 +4,7 @@ event.load("player_post_respawn");
 event.load("player_login");
 event.load("player_logout");
 event.load("player_move");
+event.load("block_break");
 event.load("block_click");
 event.load("block_drop");
 event.load("entity_mount");
@@ -26,7 +27,7 @@ stairs_tag = block.getTag("minecraft:stairs");
 beds_tag = block.getTag("minecraft:beds");
 half_property = block.getProperty("half");
 
-overworld = world.get("overworld");
+overworld = getOverWorld();
 moveid_gamesspawn = event.addMoveData(loc.new(overworld, 219, 66, 253), loc.new(overworld, 223, 69, 258), 5, -1);
 config = getScriptVar("server_config");
 survival_spawn = read.location(config.getString(config, "surv_spawn", "games:0:0:0"));
@@ -39,25 +40,24 @@ map.add(max_ench_lvl, enchantment.get("efficiency"), 10);
 
 par = particle.get("minecraft:witch");
 piston_sound = sound.get("block.piston.extend");
+adv_tp_sound = sound.get("block.portal.travel");
 sound_category_ambient = sound.getCategory("ambient");
 
 day_index = 0;
 days_list = list.new();
-list.add(days_list, "Monday");
-list.add(days_list, "Tuesday");
-list.add(days_list, "Wednesday");
-list.add(days_list, "Thursday");
-list.add(days_list, "Friday");
-list.add(days_list, "Saturday");
-list.add(days_list, "Sunday");
+list.addAll(days_list, "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
 
 auto_farm_set = set.new();
 set.add(auto_farm_set, "minecraft:wheat_seeds");
-set.add(auto_farm_set, "minecraft:pumpkin_seeds");
 set.add(auto_farm_set, "minecraft:carrot");
 set.add(auto_farm_set, "minecraft:potato");
 set.add(auto_farm_set, "minecraft:beetroot_seeds");
-set.add(auto_farm_set, "minecraft:melon_seeds");
+
+auto_farm_set2 = set.new();
+set.add(auto_farm_set2, "minecraft:wheat");
+set.add(auto_farm_set2, "minecraft:carrots");
+set.add(auto_farm_set2, "minecraft:potatoes");
+set.add(auto_farm_set2, "minecraft:beetroots");
 
 bank_human_name = "Banker";
 adv_human_name = "Adventure";
@@ -98,7 +98,7 @@ while(min >= 20) {
 }
 real_time = min * 60 + sec;
 new_time = real_time * 24000 / 1200;
-world.setTime(world.get("overworld"), new_time);
+world.setTime(getOverWorld(), new_time);
 
 sgoto(1200, "timerloop");
 
@@ -339,6 +339,24 @@ if(inv_id == bankinvid) { //Bankmenü
 }
 goto("wait");
 
+@block_break
+if(!block.hasTag(crops_tag, block)) {
+	goto("wait");
+}
+block_type = block.getType(block_loc);
+if(!set.contains(auto_farm_set2, block_type)) {
+	goto("wait");
+}
+item = entity.getEquip(player, "hand");
+if(!item.hasTag(hoe_tag, item)) {
+	item = entity.getEquip(player, "offhand");
+	if(!item.hasTag(hoe_tag, item)) {
+		goto("wait");
+	}
+}
+cancel = false;
+goto("wait");
+
 @block_click
 if(block.hasTag(beds_tag, block)) {
 	if(action == "right") {
@@ -616,16 +634,15 @@ if(block_type == "minecraft:chest") {
 				if(!onadventure) {
 					alpha = math.random(0, 360);
 					alpha *= math.pi() / 180;
-					x = math.sin(alpha) * 8000 + 0.5;
-					z = math.cos(alpha) * 8000 + 0.5;
+					x = math.round(math.sin(alpha) * 8000) + 0.5;
+					z = math.round(math.cos(alpha) * 8000) + 0.5;
 					y = 255;
-					overworld = world.get("overworld");
-					tp_loc = loc.new(overworld, x, y, z);
-					loc.setY(tp_loc, y);
-					while(!block.isSolid(tp_loc)) {
-						loc.setY(tp_loc, y--);
-					}
-					loc.setY(tp_loc, y++);
+					tp_loc = loc.new(getOverWorld(), x, y, z);
+					while(block.isAir(tp_loc)) {
+						loc.setY(tp_loc, y);
+						y--;
+					}					
+					tp_loc = loc.mod(tp_loc, 0, 1, 0);
 					wall_type = "minecraft:lime_stained_glass";
 					setWalls(block_loc, wall_type);
 					sound.spawn(block_loc, piston_sound, sound_category_ambient);
@@ -717,7 +734,7 @@ if(isPlayer(living_entity)) {
 	if(subcu_amount > 0) {
 		new_subcu_amount = subcu_amount - 1;
 		skill.setAmount(player, "skill.subcu_inv", new_subcu_amount);
-		speakPrefix(player, "§qSkill", concat("Used Subcutaneous Inventory. New amount: ", text.number(new_subcu_amount)));
+		player.speakPrefix(player, "§qSkill", concat("Used Subcutaneous Inventory. New amount: ", text.number(new_subcu_amount)));
 	} else {
 		player.dropInventory(player, loc);
 	}
@@ -739,7 +756,11 @@ if(isPlayer(living_entity)) {
 goto("wait");
 
 @block_drop
-if(player == null || item == null) {
+if(!isPlayer(entity)) {
+	goto("wait");
+}
+player = entity;
+if(item == null) {
 	goto("wait");
 }
 if(!block.hasTag(crops_tag, block)) {
@@ -803,6 +824,7 @@ bool = array[3];
 sound.spawn(block_loc, piston_sound, sound_category_ambient);
 setWalls(block_loc, "minecraft:air");
 teleportPlayer(player, tp_loc, false);
+sound.spawn(tp_loc, adv_tp_sound, sound_category_ambient);
 if(bool) {
 	sgv(player, "onadventure", "true");
 	sgv(player, "adventureloc", text.location(tp_loc));
@@ -825,7 +847,7 @@ now_sec = time.getSecond(now_cal);
 if(now_min == 0 || now_min == 20 || now_min == 40) {
 	day = list.getIndex(days_list, day_index);
 	message = concat("§9It's ", day, " now!");
-	sendMessageToWorld(world.get("overworld"), message);
+	sendMessageToWorld(getOverWorld(), message);
 	if(day_index == 6) {
 		day_index = 0;
 	} else {

Diferenças do arquivo suprimidas por serem muito extensas
+ 221 - 128
system/commands.txt


+ 3 - 3
test.txt

@@ -5,8 +5,8 @@ time = time.getMillis();
 world = world.get("overworld");
 loc = loc.new(world, 0, 0, 0);
 
-gusi = 8192; //bereits generierter Bereich
-wusi = 8192; //zu generierender Bereich
+gusi = 8192 + 16; //bereits generierter Bereich
+wusi = 8192 + 256; //zu generierender Bereich
 
 whole = wusi / 8;
 whole *= whole;
@@ -31,7 +31,7 @@ for(x = -wusi; x < wusi; x += 16) {
 			h = math.roundDown(min / 60);
 			min %= 60;
 			sec %= 60;
-			msg("dev", math.roundComma(c * 100 / whole, 3), "% ", h, "h ", min, "min ", sec, "s");
+			msg("dev", math.roundComma(c * 100 / whole, 3), "% ", text.number(h), "h ", text.number(min), "min ", text.number(sec), "s");
 			
 		}
 	}

+ 0 - 36
test2.txt

@@ -1,36 +0,0 @@
-msg("dev", "Death swap gestarted");
-@loop
-waitfor(5800);
-for(i = 0; i < 10; i++) {
-	tell(10 - i);
-	waitfor(20);
-}
-deathswap();
-goto("loop");
-
-
-function tell(time) {
-	try {
-		msg(read.player("MentorMentos"), "§cSwap in ", text.number(time), " seconds");
-		msg(read.player("marvinius"), "§cSwap in ", text.number(time), " seconds");
-	} catch {
-		msg("dev", "Death swap terminiert");
-		term();
-	}
-}
-
-function deathswap() {
-	try {
-		player_name1 = "MentorMentos";
-		player_name2 = "marvinius";
-		player1 = read.player(player_name1);
-		player2 = read.player(player_name2);
-		loc1 = entity.getLocation(player1);
-		loc2 = entity.getLocation(player2);
-		entity.teleport(player1, loc2);
-		entity.teleport(player2, loc1);
-	} catch {
-		msg("dev", "Death swap terminiert");
-		term();
-	}
-}

+ 2 - 2
utils/u_games.txt

@@ -98,7 +98,7 @@ noticetime2 = list.getIndex(starttimes, ++counterindex);
 if(noticetime == 1) {
 	minigame.speakAll(gamename, concat("The game starts in §b", text.number(noticetime), " §rsecond."));
 } else {
-	minigame.speakAll(gamename, concat("The game starts in §b", text.number(noticetime), " §rsconds."));
+	minigame.speakAll(gamename, concat("The game starts in §b", text.number(noticetime), " §rseconds."));
 }
 stime = (noticetime - noticetime2) * 20;
 sgoto(stime, "startcountdown");
@@ -500,7 +500,7 @@ function minigame.speakAll(prefix, message) {
 	while(hasNext(iter)) {
 		p_uuid = next(iter);
 		p = player.get(p_uuid);
-		speakPrefix(p, prefix, message);
+		player.speakPrefix(p, prefix, message);
 	}
 }
 

+ 88 - 56
utils/u_general.txt

@@ -23,18 +23,20 @@ function isOnline(player_name) {
 	return true;
 }
 
-function setBackPos(player) {
+function setBackPos(player) { //Deprecated
+	backpos.set(player);
+}
+
+function backpos.set(player) {
 	sgv(player, "backpos", text.location(entity.getLocation(player)));
 }
 
-function sendmessage(pname, topic, nachricht, boolean) { //Sendet eine Chat-Nachricht an einen Spieler. boolean = true heißt Mail geht raus, wenn Empfänger nicht online
-	if(isOnline(pname)) {
-		p = read.player(pname);
-		player.speak(p, topic, nachricht);
-	} elseif(boolean) {
-		from_name = player.getName($player);
-		mail.send(from_name, pname, nachricht);
+function backpos.get(player) {
+	location = ggv(affectedplayer, "backpos");
+	if(location != null) {
+		location = read.location(location);
 	}
+	return location;
 }
 
 function getSpacer() {
@@ -146,7 +148,7 @@ function isSurvWorldName(world_name) {
 function getSameInvWorld(world) {
 	world_name = world.getName(world);
 	if(isSurvWorldName(world_name)) {
-		world = world.get("overworld");
+		world = getOverWorld();
 	}
 	return world;
 }
@@ -211,7 +213,11 @@ function setBlockIfNotAir(location, block) {
 	return false;
 }
 
-function teleportPlayer(player, location, backPos) {
+function teleportPlayer(player, location, backPos) { //Deprecated
+	return player.teleport(player, location, backPos) {
+}
+
+function player.teleport(player, location, backPos) {
 	onadventure = ggv(player, "onadventure");
 	if(onadventure != null) {
 		if(onadventure) {
@@ -255,30 +261,6 @@ function getBlockLocation(location) {
 	return loc.new(world, bx, by, bz);
 }
 
-function speakPrefix(player, prefix, message) {
-	msg(player, "§r[", prefix, "§r] ", message);
-}
-
-function sendRadiusMessage(prefix, message, location, radius) {
-	list = players.near(location, radius);
-	for(i = 0; i < list.getSize(list); i++) {
-		player = list.getIndex(list, i);
-		speakPrefix(player, prefix, message);
-	}
-}
-
-function getPlayerFromDamageSource(damage_source) {
-	entity = damage.getImmediateSource(damage_source);
-	if(isPlayer(entity)) {
-		return entity;
-	}
-	entity = damage.getTrueSource(damage_source);
-	if(isPlayer(entity)) {
-		return entity;
-	}
-	return null;
-}
-
 function loc.isAir(location) {
 	type = block.getType(location);
 	return type == "minecraft:air" || type == "minecraft:cave_air";
@@ -327,6 +309,10 @@ function loc.isInGamesWorld(location) {
 	return loc.getWorld(location) == getGamesWorld();
 }
 
+function getOverWorld() {
+	return world.get("overworld");
+}
+
 function getGamesWorld() {
 	return world.get("games");
 }
@@ -1014,14 +1000,14 @@ function setWalls(chest_loc, item_type) {
 }
 
 function removeAdventureDisplay(player) {
-	display.remove(player, 1);
+	display.remove(player, 10);
 }
 
 function addAdventureDisplay(player, location) {
 	x = text.number(loc.getX(location));
 	y = text.number(loc.getY(location));
 	z = text.number(loc.getZ(location));
-	display.add(player, 1, concat("§2Adventure Ziel: §r", x, " ", y, " ", z));
+	display.add(player, 10, concat("§2Adventure Target: §r", x, " ", y, " ", z));
 }
 
 //--------------------------------------------------
@@ -1080,6 +1066,51 @@ function loadData(player_or_id, map, name) {
 //Player-Utils
 //--------------------------------------------------
 
+function sendmessage(pname, topic, nachricht, boolean) { //Deprecated
+	player.sendMessage($player, pname, topic, nachricht, boolean);
+}
+
+function player.sendMessage(from_player, to_name, prefix, message, send_mail) {
+	p = read.player(to_name);
+	if(p == null) {
+		mail.send(player.getName(from_player), to_name, message);
+	} elseif(send_mail) {
+		player.speakPrefix(p, topic, message);
+	}
+}
+
+function speakPrefix(player, prefix, message) { //Deprecated
+	player.speakPrefix(player, prefix, message);
+}
+
+function player.speakPrefix(player, prefix, message) {
+	msg(player, "§r[", prefix, "§r] ", message);
+}
+
+function sendRadiusMessage(prefix, message, location, radius) {
+	list = players.near(location, radius);
+	for(i = 0; i < list.getSize(list); i++) {
+		player = list.getIndex(list, i);
+		player.speakPrefix(player, prefix, message);
+	}
+}
+
+function getPlayerFromDamageSource(damage_source) { //Deprecated
+	return player.getFromDamageSource(damage_source);
+}
+
+function player.getFromDamageSource(damage_source) {
+	entity = damage.getImmediateSource(damage_source);
+	if(isPlayer(entity)) {
+		return entity;
+	}
+	entity = damage.getTrueSource(damage_source);
+	if(isPlayer(entity)) {
+		return entity;
+	}
+	return null;
+}
+
 function player.getJoins(player_or_id) {
 	if(isPlayer(player_or_id)) {
 		player_id = player.getId(player_or_id);
@@ -1208,7 +1239,6 @@ function displayMoney(player, money) {
 	display.add(player, 0, concat("#23-1- ", text.number(a[0])));
 	display.add(player, 1, concat("#24-1- ", text.number(a[1])));
 	display.add(player, 2, concat("#25-1- ", text.number(a[2])));
-	return;
 }
 
 function money.split(money) {
@@ -1397,7 +1427,7 @@ function minigame.addElo(player_or_id, elo) {
 	config.saveAsync(config);
 	if(isPlayer(player_or_id)) {
 		minigame.displayElo(player_or_id, new_elo);
-		speakPrefix(player_or_id, "§tElo", concat("§r+§e", text.number(elo)));
+		player.speakPrefix(player_or_id, "§tElo", concat("§r+§e", text.number(elo)));
 	}
 }
 
@@ -1566,7 +1596,7 @@ function player.removeNickName(player) {
 function sendMessageToWorld(world, message) {
 	world_name = world.getName(world);
 	if(isSurvWorldName(world_name)) {
-		worldlist = players.toWorldList(world.get("overworld"));
+		worldlist = players.toWorldList(getOverWorld());
 		for(i = 0; i < list.getSize(worldlist); i++) {
 			msg(list.getIndex(worldlist, i), message);
 		}
@@ -1589,7 +1619,7 @@ function sendMessageToWorld(world, message) {
 function sendMessageToWorld2(world, message1, message2) {
 	world_name = world.getName(world);
 	if(isSurvWorldName(world_name)) {
-		worldlist = players.toWorldList(world.get("overworld"));
+		worldlist = players.toWorldList(getOverWorld());
 		for(i = 0; i < list.getSize(worldlist); i++) {
 			msg(list.getIndex(worldlist, i), message1, message2);
 		}
@@ -1658,9 +1688,9 @@ function mail.checkForNew(player) {
 	databank.close(stmt);
 	if(newmails > 0) {
 		if(newmails > 1) {
-			speakPrefix(player, "§bMail", concat("§rYou´ve got §b", text.number(newmails), "§r new mails."));
+			player.speakPrefix(player, "§bMail", concat("§rYou´ve got §b", text.number(newmails), "§r new mails."));
 		} else {
-			speakPrefix(player, "§bMail", "§rYou´ve got §b1 §rnew mail.");
+			player.speakPrefix(player, "§bMail", "§rYou´ve got §b1 §rnew mail.");
 		}
 	}
 }
@@ -1669,23 +1699,20 @@ function mail.checkForNew(player) {
 //Friend-Utils
 //--------------------------------------------------
 
-function isAFriend(player_id, friend_id) {
-	temp = false;
+function friend.check(player_id, friend_id) {
 	stmt = databank.prepare("SELECT friend_id FROM friends WHERE player_id = ?;");
 	databank.setInt(stmt, 1, player_id);
 	result = databank.execute(stmt);
-	while(databank.next(result)) {
-		id = databank.getInt(result, 1);
-		if(friend_id == id) {
-			temp = true;
-		}
+	temp = false;
+	if(databank.next(result)) {
+		temp = true;
 	}
 	databank.close(result);
 	databank.close(stmt);
 	return temp;
 }
 
-function addFriend(player_id, friend_id) {
+function friend.add(player_id, friend_id) {
 	nowtime = time.getMillis();
 	
 	stmt1 = databank.prepare("INSERT INTO friends (player_id, friend_id, time) VALUES (?, ?, ?);");
@@ -1701,14 +1728,19 @@ function addFriend(player_id, friend_id) {
 	databank.workerExecute(stmt2);
 }
 
-function deleteFriend(player_id, friend_id) {
-	stmt = databank.prepare("DELETE FROM friends WHERE player_id = ? AND friend_id = ?;");
-	databank.setInt(stmt, 1, player_id);
-	databank.setInt(stmt, 2, friend_id);
-	databank.workerExecute(stmt);
+function friend.delete(player_id, friend_id) {
+	stmt1 = databank.prepare("DELETE FROM friends WHERE player_id = ? AND friend_id = ?;");
+	databank.setInt(stmt1, 1, player_id);
+	databank.setInt(stmt1, 2, friend_id);
+	databank.workerExecute(stmt1);
+	
+	stmt2 = databank.prepare("DELETE FROM friends WHERE player_id = ? AND friend_id = ?;");
+	databank.setInt(stmt2, 1, friend_id);
+	databank.setInt(stmt2, 2, player_id);
+	databank.workerExecute(stmt2);
 }
 
-function getFriendsList(player_id) {
+function friend.getList(player_id) {
 	list.new(list);
 	stmt = databank.prepare("SELECT friend_id FROM friends WHERE player_id = ?;");
 	databank.setInt(stmt, 1, player_id);

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff