Ver código fonte

permissions placing, old files deleted, deathmessages

Marvin Löschenkohl 5 anos atrás
pai
commit
a9fb126d2e

+ 2 - 1
.gitignore

@@ -1,4 +1,5 @@
 meta/
 sounds/soundsjar112.txt
 x509.pem
-configs/
+configs/
+test

+ 0 - 0
cloning.txt → Archiv/cloning.txt


+ 0 - 0
worldedit.txt → Archiv/worldedit.txt


+ 6 - 23
benchmark.txt

@@ -7,29 +7,12 @@ msg("all", " ");
 msg("all", " ");
 
 toggleBenchmark();
-setVar("i", 1);
-setVar("time", time.get());
-while(less($i, 20000))
-{
-    nothing(nothing(), nothing(nothing(), nothing()), nothing());
-    reset();
-    inc("i");
-}
-setVar("time2", time.get());
-benchmark(player.getQuestLeader());
-msg("all", "§6Gesamt: ", sub($time2, $time));
-/*
-waitfor(5);
+time = time.getMillis();
 
-clearbenchmark();
-setVar("i", 1);
-setVar("time", time.get());
-while(less($i, 20000))
-{
-    reset();
-    setVar("i", add($i, 1));
+for(i = 0; i < 20000; i++) {
+    nothing(nothing(), nothing(nothing(), nothing()), nothing());
 }
-setVar("time2", time.get());
-benchmark(player.getQuestLeader());
-msg("all", "§6Gesamt: ", sub($time2, $time));*/
 
+time2 = time.getMillis();
+benchmark(script.getLeader());
+msg("all", "§6Gesamt: ", $time2 - time);

+ 4 - 4
benchmark2.txt

@@ -1,4 +1,4 @@
-setVar("time", time.get());
+time = time.getMillis();
 togglebenchmark();
 nothing(nothing(), nothing(nothing(), nothing()), nothing());
 nothing(nothing(), nothing(nothing(), nothing()), nothing());
@@ -19999,6 +19999,6 @@ nothing(nothing(), nothing(nothing(), nothing()), nothing());
 nothing(nothing(), nothing(nothing(), nothing()), nothing());
 nothing(nothing(), nothing(nothing(), nothing()), nothing());
 nothing(nothing(), nothing(nothing(), nothing()), nothing());
-setVar("time2", time.get());
-benchmark(player.getQuestLeader());
-msg("all", "§6Gesamt: ", sub($time2, $time));
+time2 = time.getMillis();
+benchmark(script.getLeader());
+msg("all", "§6Gesamt: ", $time2 - $time);

+ 0 - 161
copyisland.txt

@@ -1,161 +0,0 @@
-player = script.getLeader();
-player_name = player.getName(player);
-
-list.new(allowed);
-list.add(allowed, "marvinius");
-list.add(allowed, "kajetanjohannes");
-list.add(allowed, "eropster");
-
-if(!list.contains(allowed, player_name)) {
-	term();
-}
-
-command.add("pos1");
-command.add("pos2");
-command.add("copy");
-command.add("paste");
-
-msg("all", "§9Viel Spaß beim Inseln kopieren. Links-/Rechtsklick mit einer Holzschaufel um Eckpunkte festzulegen");
-if(player.getItemAmount(player, true, read.item("WOODEN_SHOVEL")) == 0) {
-	player.giveItem(player, read.item("WOODEN_SHOVEL"));
-}
-event.load("block_click");
-event.load("block_break");
-event.load("custom_command");
-event.load("player_giveup");
-
-@syntax
-msg(player, "§r----= §dCopyIsland §r=----");
-msg(player, "§3/copy §r--> §7Übernimmt markante Punkte zum Kopieren in den Speicher");
-msg(player, "§3/paste §r--> §7Klont die Auswahl korrekt, relativ zu der Location, wo /copy ausgeführt wurde");
-msg(player, "§3/pos1 §r--> §7Setzt deine aktuelle Position auf Pos1");
-msg(player, "§3/pos2 §r--> §7Setzt deine aktuelle Position auf Pos2");
-goto("wait");
-
-@wait
-wait();
-if(event == "block_break" && item.getType(entity.getEquip(player, "hand")) == "minecraft:wooden_shovel") {
-	cancel = true;
-	goto("wait");
-}
-if(event == "player_giveup") {
-	player.speak(player, "§dCopyIsland", "§rCopyisland beendet");
-	term();
-}
-if(event == "custom_command") {
-	if(list.getSize(args) != 0) {
-		goto("syntax");
-	}
-	if(command == "pos1") {
-		loc = entity.getLocation(player);
-		goto("setpos1");
-	}
-	if(command == "pos2") {
-		loc = entity.getLocation(player);
-		goto("setpos2");
-	}
-	if(command == "copy") {
-		goto("copy");
-	}
-	if(command == "paste") {
-		if(worldpos1 != worldpos2) {
-			player.speak(player, "§dCopyIsland", "§rDie ausgewählten Blöcke befinden sich nicht in derselben Welt bzw. die Ecken wurden nicht ausgewählt");
-			goto("wait");
-		}
-		goto("paste");
-	}
-	goto("syntax");
-}
-if(event == "block_click" && item.getType(entity.getEquip(player, "hand")) == "minecraft:wooden_shovel") {
-	loc = block_loc;
-	if(action == "left") {
-		goto("setpos1");
-	} elseif(action == "right") {
-		goto("setpos2");
-	}
-}
-goto("wait");
-
-@setpos1
-x1 = loc.getCoord(loc, "bx");
-y1 = loc.getCoord(loc, "by");
-z1 = loc.getCoord(loc, "bz");
-worldpos1 = loc.getWorld(loc);
-player.speak(player, "§dCopyIsland", concat("§3Pos1: ", text.number(x1), ", ", text.number(y1), ", ", text.number(z1))); 
-goto("wait");
-
-@setpos2
-x2 = loc.getCoord(loc, "bx");
-y2 = loc.getCoord(loc, "by");
-z2 = loc.getCoord(loc, "bz");
-worldpos2 = loc.getWorld(loc);
-player.speak(player, "§dCopyIsland", concat("§3Pos2: ", text.number(x2), ", ", text.number(y2), ", ", text.number(z2))); 
-goto("wait");
-
-@copy
-cloneable = true;
-playerloc1 = entity.getLocation(player);
-counter = 0;
-player.speak(player, "§dCopyIsland", "§rZum Klonen bereit");
-goto("wait");
-
-@paste
-if(!cloneable) {
-	player.speak(player, "§dCopyIsland", "§3Es wurde nichts zum Klonen gespeichert");
-	goto("wait");
-}
-if(x1 > x2) {
-	helper = x2;
-	x2 = x1;
-	x1 = helper;
-}
-if(y1 > y2) {
-	helper = y2;
-	y2 = y1;
-	y1 = helper;
-}
-if(z1 > z2) {
-	helper = z2;
-	z2 = z1;
-	z1 = helper;
-}
-
-i = 0;
-helper = null;
-startloc1 = loc.new(worldpos1, x1, y1, z1);
-playerloc2 = entity.getLocation(player);
-xedgedistance = x2 - x1;
-yedgedistance = y2 - y1;
-zedgedistance = z2 - z1;
-volume = ((xedgedistance + 1) * (yedgedistance + 1)) * (zedgedistance + 1);
-timeall = volume / 30000;
-player.speak(player, "§dCopyIsland", "§r", text.number(volume), " §eBlöcke werden kopiert");
-player.speak(player, "§dCopyIsland", "§3Geschätzte Dauer: §r", text.number(math.round(timeall * 1.633)), "§e Sekunden");
-starttime = time.getMillis();
-
-xdistance1 = x1 - loc.getCoord(playerloc1, "bx");
-ydistance1 = y1 - loc.getCoord(playerloc1, "by");
-zdistance1 = z1 - loc.getCoord(playerloc1, "bz");
-
-world2 = loc.getWorld(playerloc2);
-xstartloc2 = xdistance1 + loc.getCoord(playerloc2, "bx");
-ystartloc2 = ydistance1 + loc.getCoord(playerloc2, "by");
-zstartloc2 = zdistance1 + loc.getCoord(playerloc2, "bz");
-startloc2 = loc.new(world2, xstartloc2, ystartloc2, zstartloc2);
-
-for(x = 0; x <= xedgedistance; x++) {
-	for(y = 0; y <= yedgedistance; y++) {
-		for(z = 0; z <= zedgedistance; z++) {
-			relloc1 = loc.mod(startloc1, x, y, z);
-			relloc2 = loc.mod(startloc2, x, y, z);
-			block.clone(relloc1, relloc2);
-			counter++;
-		}
-	}
-}
-
-cloneable = false;
-player.speak(player, "§dCopyIsland", "§3Done: §r", text.number(counter), "§e blocks affected");
-endtime = time.getMillis();
-player.speak(player, "§dCopyIsland", "§3Benötigte Zeit: §r", text.number(math.round(((endtime - starttime) / 1000))), "§e Sekunden");
-goto("wait");

+ 191 - 0
global/copyisland.txt

@@ -0,0 +1,191 @@
+event.load("block_click");
+event.load("block_break");
+event.load("custom_command");
+
+map.new(cloningplayers);
+mark_item_type = "minecraft:golden_axe";
+
+@wait
+wait();
+player_id = player.getId(player);
+ignoreGoto(event);
+goto("wait");
+
+@block_break
+if(item.getType(entity.getEquip(player, "hand")) == mark_item_type) {
+	if(!perm.has(player, "copyisland")) {
+		goto("wait");
+	}
+	cancel = true;
+}
+goto("wait");
+
+@block_click
+if(item.getType(entity.getEquip(player, "hand")) == mark_item_type) {
+	if(!perm.has(player, "copyisland")) {
+		if(action == "left") {
+			setPos1(player_id, block_loc);
+		} elseif(action == "right") {
+			setPos2(player_id, block_loc);
+		}
+	}
+}
+goto("wait");
+
+@custom_command
+if(command == "copyisland" || command == "ci") {
+	if(!perm.has(player, "copyisland")) {
+		goto("wait");
+	}
+	size = list.getSize(args);
+	if(size == 0) {
+		player.speak(player, "§dCopyIsland", "/copyisland");
+		msg(player, "§3 - copy §rSpeichert die Player-Location relativ zur Auswahl");
+		msg(player, "§3 - paste §rKopiert relativ zur Location, an der /copy ausgeführt wurde");
+		msg(player, "§3 - pos1 §rSetzt Pos1 auf deine aktuelle Position");
+		msg(player, "§3 - pos2 §rSetzt Pos2 auf deine aktuelle Position");
+		goto("wait");
+	}
+	arg0 = list.getIndex(args, 0);
+	if(arg0 == "pos1") {
+		location = entity.getLocation(player);
+		setPos1(player_id, location);
+		goto("wait");
+	}
+	if(arg0 == "pos2") {
+		location = entity.getLocation(player);
+		setPos2(player_id, location);
+		goto("wait");
+	}
+	if(arg0 == "copy") {
+		the_map = getCopymap(player_id);
+		world1 = map.get(the_map, player_id, "world1");
+		world2 = map.get(the_map, player_id, "world2");
+		if(world1 == null || world2 == null) {
+			player.speak(player, "§dCopyIsland", "Auswahl inkorrekt");
+			goto("wait");
+		}
+		from_loc = entity.getLocation(player);
+		addToCloningMap(player_id, "from_loc", from_loc);
+		player.speak(player, "§dCopyIsland", "§rBereit zum Kopieren");
+		goto("wait");
+	}
+	if(arg0 == "paste") {
+		the_map = getCopymap(player_id);
+		x1 = map.get(the_map, player_id, "x1");
+		y1 = map.get(the_map, player_id, "y1");
+		z1 = map.get(the_map, player_id, "z1");
+		world1 = map.get(the_map, player_id, "world1");
+		x2 = map.get(the_map, player_id, "x2");
+		y2 = map.get(the_map, player_id, "y2");
+		z2 = map.get(the_map, player_id, "z2");
+		world2 = map.get(the_map, player_id, "world2");
+		from_loc = map.get(the_map, player_id, "from_loc");
+		
+		if(world1 == null || world2 == null) {
+			player.speak(player, "§dCopyIsland", "Auswahl inkorrekt");
+			goto("wait");
+		}
+		
+		if(x1 > x2) {
+			helper = x2;
+			x2 = x1;
+			x1 = helper;
+		}
+		if(y1 > y2) {
+			helper = y2;
+			y2 = y1;
+			y1 = helper;
+		}
+		if(z1 > z2) {
+			helper = z2;
+			z2 = z1;
+			z1 = helper;
+		}
+
+		copy_from_loc = loc.new(world1, x1, y1, z1); //Von hier wird der 1.Block kopiert
+		x_length = x2 - x1 + 1; //Kantenlänge x-Achse
+		y_length = y2 - y1 + 1; //Kantenlänge y-Achse
+		z_length = z2 - z1 + 1; //Kantenlänge z-Achse
+		
+		//Zeitberechnung
+		volume = x_length * y_length * z_length; //Volumen des ausgewählten Bereichs (oder Anzahl der Blöcke)
+		calc_time = math.round((volume / 30000) * 1.633);
+		player.speak(player, "§dCopyIsland", "§r", text.number(volume), " §eBlöcke werden kopiert");
+		player.speak(player, "§dCopyIsland", "§3Geschätzte Dauer: §r", text.number(calc_time), "§e Sekunden");
+		start_time = time.getMillis();
+
+		//Distanzen zwischen Spieler-Loc von /copy und 1.Block der kopiert wird
+		x_distance1 = x1 - loc.getCoord(from_loc, "bx");
+		y_distance1 = y1 - loc.getCoord(from_loc, "by");
+		z_distance1 = z1 - loc.getCoord(from_loc, "bz");
+
+		//Berechnung wohin der 1.Block gesetzt wird (Spieler-Loc von /paste + Distanzen s.o.)
+		player_loc = entity.getLocation(player); //Paste-Location des Spielers
+		world_copy_to = loc.getWorld(player_loc);
+		x_copy_to = x_distance1 + loc.getCoord(player_loc, "bx");
+		y_copy_to = y_distance1 + loc.getCoord(player_loc, "by");
+		z_copy_to = z_distance1 + loc.getCoord(player_loc, "bz");
+		copy_to = loc.new(world_copy_to, x_copy_to, y_copy_to, z_copy_to); //Hier wird der 1.Block gesetzt
+		
+		counter = 0;
+		for(x = 0; x < x_length; x++) {
+			for(y = 0; y < y_length; y++) {
+				for(z = 0; z < z_length; z++) {
+					relloc1 = loc.mod(copy_from_loc, x, y, z);
+					relloc2 = loc.mod(copy_to_loc, x, y, z);
+					block.clone(relloc1, relloc2);
+					counter++;
+				}
+			}
+		}
+
+		player.speak(player, "§dCopyIsland", "§3Done: §r", text.number(counter), "§e blocks affected");
+		end_time = time.getMillis();
+		player.speak(player, "§dCopyIsland", "§3Benötigte Zeit: §r", text.number(math.round(((end_time - start_time) / 1000))), "§e Sekunden");
+		goto("wait");
+	}
+}
+goto("wait");
+
+function getCopymap(player_id) {
+	the_map = map.get($cloningplayers, player_id);
+	if(the_map == null) {
+		the_map = map.new();
+		map.add($cloningplayers, player_id, the_map);
+	}
+	return the_map;
+}
+
+function addToCloningMap(player_id, var_string, var) {
+	the_map = getCopymap(player_id);
+	map.add(the_map, var_string, var);
+	map.add($cloningplayers, player_id, the_map);
+	return;
+}
+	
+function setPos1(player_id, location) {
+	x1 = loc.getCoord(location, "bx");
+	y1 = loc.getCoord(location, "by");
+	z1 = loc.getCoord(location, "bz");
+	world1 = loc.getWorld(location);
+	addToCloningMap(player_id, "x1", x1);
+	addToCloningMap(player_id, "y1", y1);
+	addToCloningMap(player_id, "z1", z1);
+	addToCloningMap(player_id, "world1", world1);
+	player.speak($player, "§dCopyIsland", concat("§3Pos1: ", text.number(x1), ", ", text.number(y1), ", ", text.number(z1))); 
+	return;
+}
+
+function setPos2(player_id, location) {
+	x2 = loc.getCoord(location, "bx");
+	y2 = loc.getCoord(location, "by");
+	z2 = loc.getCoord(location, "bz");
+	world2 = loc.getWorld(location);
+	addToCloningMap(player_id, "x2", x2);
+	addToCloningMap(player_id, "y2", y2);
+	addToCloningMap(player_id, "z2", z2);
+	addToCloningMap(player_id, "world2", world2);
+	player.speak($player, "§dCopyIsland", concat("§3Pos2: ", text.number(x2), ", ", text.number(y2), ", ", text.number(z2))); 
+	return;
+}

+ 1 - 1
global/doors.txt

@@ -1,4 +1,4 @@
-msg("dev", "§bdoors §rwurde geladen.");
+msg("dev", "§bdoors §rwurde geladen");
 event.load("block_click");
 list.new(doors);
 cancel = "wusi";

+ 0 - 67
global/system/messages.txt

@@ -1,67 +0,0 @@
-msg("dev", "§bMessages §rwurde geladen.");
-
-event.load("player_hurt");
-event.load("player_death");
-map.new(damagecauses);
-list.new(nomessageworlds);
-list.add(nomessageworlds, world.get("games"));
-
-colorcodedeath = "§7";
-
-list.new(defaultdeaths);
-list.add(defaultdeaths, concat(colorcodedeath, " erlag seinen Wunden"));
-list.add(defaultdeaths, concat(colorcodedeath, " wollte nicht mehr leben"));
-list.add(defaultdeaths, concat(colorcodedeath, " hat jetzt keinen Hunger mehr"));
-
-list.new(drowndeaths);
-list.add(drowndeaths, concat(colorcodedeath, " ertrank"));
-list.add(drowndeaths, concat(colorcodedeath, " schluckte zu viel Wasser"));
-
-list.new(falldeaths);
-list.add(falldeaths, concat(colorcodedeath, " fiel der Gravitation zum Opfer"));
-list.add(falldeaths, concat(colorcodedeath, " rutschte auf einer Banane aus"));
-
-//andere damagecauses: fall, outOfWorld, arrow, drown (ertrinken), player, inWall, mob, magic, starve
-map.new(causetolist);
-map.add(causetolist, "fall", falldeaths);
-map.add(causetolist, "drown", drowndeaths);
-map.add(causetolist, "player", list.new());
-
-@wait
-wait();
-fullname = player.getFullName(player);
-ignoreGoto(event);
-goto("wait");
-
-@player_hurt
-world = loc.getWorld(entity.getLocation(player));
-if(!list.contains(nomessageworlds, world)) {
-	map.add(damagecauses, player.getUuid(player_name), player_damage_cause);
-}
-goto("wait");
-
-@player_death
-world = loc.getWorld(entity.getLocation(player));
-if(!list.contains(nomessageworlds, world)) {
-	player_damage_cause = map.get(damagecauses, player.getUuid(player_name));
-	list = map.getOrDefault(causetolist, player_damage_cause, defaultdeaths);
-	if(player_damage_cause == "player") {
-		list.clear(list);
-		list.add(list, concat(fullname, colorcodedeath, " erhielt die letzte Ehre durch §r", sec_player_name));
-		list.add(list, concat(fullname, colorcodedeath, " starb durch die Hand von §r", sec_player_name));
-		list.add(list, concat(fullname, colorcodedeath, " wurde von §r", sec_player_name, colorcodedeath, " getötet"));
-		message = list.getIndex(list, math.random(0, list.getSize(list) - 1));
-	} else {
-		message = concat(fullname, list.getIndex(list, math.random(0, list.getSize(list) - 1)));
-	}
-	speaktoworld(player, world, message);
-}
-goto("wait");
-
-function speaktoworld(player, world, message) { //speaktoworld(player, world, message)
-	players.toWorldList(worldlist, world);
-	for(i = 0; i <= list.getSize(worldlist) - 1; i++) {
-		msg(list.getIndex(worldlist, i), message);
-	}
-	return;
-}

+ 0 - 308
global/system/perms backup.txt

@@ -1,308 +0,0 @@
-perm.clear();
-
-event.load("custom_command");
-command.add("perm");
-marvuuid = player.getUuid("marvinius");
-
-//Default-Rechte
-perm.registerGroup(0, "setbed");
-perm.registerGroup(0, "home");
-perm.registerGroup(0, "kill");
-perm.registerGroup(0, "list");
-perm.registerGroup(0, "pvp");
-perm.registerGroup(0, "lag");
-perm.registerGroup(0, "coords");
-perm.registerGroup(0, "msg");
-perm.registerGroup(0, "answer");
-perm.registerGroup(0, "position");
-perm.registerGroup(0, "seen");
-perm.registerGroup(0, "teleportaccept");
-perm.registerGroup(0, "block");
-perm.registerGroup(0, "afk");
-perm.registerGroup(0, "temperature");
-perm.registerGroup(0, "recipe");
-perm.registerGroup(0, "activeskills");
-perm.registerGroup(0, "skills");
-perm.registerGroup(0, "giveup");
-perm.registerGroup(0, "help");
-perm.registerGroup(0, "spawn"); //deaktiviert, da vespilan welt testwelt für colony: (tools, für default-user nur in welt "vespilan" verwendbar)
-
-//WE-Gruppe: 1 //nicht bearbeiten
-
-//Admin-Rechte
-perm.registerGroup(2, "isAdmin");
-perm.registerGroup(2, "isTeam");
-perm.registerGroup(2, "test");
-perm.registerGroup(2, "adduser");
-perm.registerGroup(2, "blockclear");
-
-//Mods-Rechte
-perm.registerGroup(3, "isMod");
-perm.registerGroup(3, "isTeam");
-perm.registerGroup(3, "effect");
-perm.registerGroup(3, "iteminfo");
-perm.registerGroup(3, "spawn");
-perm.registerGroup(3, "human");
-perm.registerGroup(3, "gamerule");
-perm.registerGroup(3, "weather");
-perm.registerGroup(3, "setspawn");
-perm.registerGroup(3, "heal");
-//perm.registerGroup(3, "tempban");
-perm.registerGroup(3, "teleport");
-perm.registerGroup(3, "spawner");
-perm.registerGroup(3, "summon");
-perm.registerGroup(3, "butcher");
-perm.registerGroup(3, "skull");
-perm.registerGroup(3, "silent");
-perm.registerGroup(3, "sign");
-perm.registerGroup(3, "setwarp");
-perm.registerGroup(3, "delwarp");
-perm.registerGroup(3, "fly");
-perm.registerGroup(3, "fly.other");
-perm.registerGroup(3, "gamemode");
-perm.registerGroup(3, "gamemode.other");
-perm.registerGroup(3, "god");
-perm.registerGroup(3, "more");
-perm.registerGroup(3, "more.other");
-perm.registerGroup(3, "jumpto");
-perm.registerGroup(3, "delhome");
-perm.registerGroup(3, "kill.other");
-perm.registerGroup(3, "hat");
-perm.registerGroup(3, "repair");
-perm.registerGroup(3, "pvp.other");
-perm.registerGroup(3, "lightupdate");
-perm.registerGroup(3, "invsee");
-perm.registerGroup(3, "sethome");
-perm.registerGroup(3, "kick");
-perm.registerGroup(3, "enderchest");
-perm.registerGroup(3, "exp");
-perm.registerGroup(3, "say");
-perm.registerGroup(3, "ban");
-perm.registerGroup(3, "pardon");
-perm.registerGroup(3, "back");
-perm.registerGroup(3, "bed");
-perm.registerGroup(3, "bed.other");
-perm.registerGroup(3, "potion");
-perm.registerGroup(3, "feed");
-perm.registerGroup(3, "memory");
-perm.registerGroup(3, "time");
-perm.registerGroup(3, "top");
-perm.registerGroup(3, "tp");
-perm.registerGroup(3, "tppos");
-perm.registerGroup(3, "user");
-perm.registerGroup(3, "warp");
-perm.registerGroup(3, "book");
-perm.registerGroup(3, "grow");
-perm.registerGroup(3, "enchant");
-perm.registerGroup(3, "speed");
-perm.registerGroup(3, "color");
-perm.registerGroup(3, "usecolor");
-perm.registerGroup(3, "nickname");
-perm.registerGroup(3, "fakerank");
-perm.registerGroup(3, "world");
-perm.registerGroup(3, "block.bypass");
-perm.registerGroup(3, "block.all");
-perm.registerGroup(3, "block.other");
-perm.registerGroup(3, "afk.other");
-perm.registerGroup(3, "datatools");
-perm.registerGroup(3, "villager");
-perm.registerGroup(3, "wand");
-perm.registerGroup(3, "heal_stats");
-perm.registerGroup(3, "job");
-perm.registerGroup(3, "plot.create");
-perm.registerGroup(3, "plot.tag");
-perm.registerGroup(3, "plot.share");
-perm.registerGroup(3, "plot.sign");
-perm.registerGroup(3, "plot.bypass");
-perm.registerGroup(3, "plot.mark");
-perm.registerGroup(3, "plot.info");
-perm.registerGroup(3, "plot");
-perm.registerGroup(3, "magicscroll");
-perm.registerGroup(3, "script");
-perm.registerGroup(3, "give");
-perm.registerGroup(3, "script.error");
-perm.registerGroup(3, "stop");
-perm.registerGroup(3, "remove");
-perm.registerGroup(3, "clear");
-perm.registerGroup(3, "lastseen");
-perm.registerGroup(3, "locate");
-
-//Builder-Rechte
-perm.registerGroup(4, "isBuilder");
-perm.registerGroup(4, "isTeam");
-perm.registerGroup(4, "summon");
-perm.registerGroup(4, "fly");
-perm.registerGroup(4, "gamemode");
-perm.registerGroup(4, "skull");
-perm.registerGroup(4, "sign");
-perm.registerGroup(4, "color");
-perm.registerGroup(4, "usecolor");
-perm.registerGroup(4, "villager");
-perm.registerGroup(4, "grow");
-perm.registerGroup(4, "magicscroll");
-perm.registerGroup(4, "datatools");
-perm.registerGroup(4, "speed");
-
-//VIP-Rechte
-perm.registerGroup(5, "isVIP");
-perm.registerGroup(5, "fly");
-perm.registerGroup(5, "hat");
-perm.registerGroup(5, "lastseen");
-perm.registerGroup(5, "color");
-perm.registerGroup(5, "usecolor");
-perm.registerGroup(5, "plot");
-perm.registerGroup(5, "plot.info");
-perm.registerGroup(5, "locate");
-
-//DEV-Rechte
-perm.registerGroup(6, "isDev");
-perm.registerGroup(6, "isTeam");
-perm.registerGroup(6, "script");
-perm.registerGroup(6, "script.error");
-perm.registerGroup(6, "iteminfo");
-
-//Teleport-Rechte
-perm.registerGroup(7, "canTP");
-perm.registerGroup(7, "back");
-perm.registerGroup(7, "teleport");
-perm.registerGroup(7, "tppos");
-perm.registerGroup(7, "spawn");
-perm.registerGroup(7, "warp");
-perm.registerGroup(7, "setwarp");
-perm.registerGroup(7, "delwarp");
-perm.registerGroup(7, "top");
-perm.registerGroup(7, "jumpto");
-
-//SnuviMaster
-perm.registerGroup(8, "isSnuviMaster");
-
-//PseudoMod
-perm.registerGroup(9, "isPseudoMod"); //Mod ohne reale Permissions
-
-//Ticket-Supporter
-perm.registerGroup(10, "isSupporter");
-
-perm.registerPlayer("51e240f9-ab10-4ea6-8a5d-779319f51257", 1); //kajetan
-perm.registerPlayer("51e240f9-ab10-4ea6-8a5d-779319f51257", 2); //kajetan
-perm.registerPlayer("51e240f9-ab10-4ea6-8a5d-779319f51257", 3); //kajetan
-perm.registerPlayer("51e240f9-ab10-4ea6-8a5d-779319f51257", 4); //kajetan
-perm.registerPlayer("51e240f9-ab10-4ea6-8a5d-779319f51257", 5); //kajetan
-perm.registerPlayer("51e240f9-ab10-4ea6-8a5d-779319f51257", 6); //kajetan
-perm.registerPlayer("51e240f9-ab10-4ea6-8a5d-779319f51257", 7); //kajetan
-perm.registerPlayer("e41b5335-3c74-46e9-a6c5-dafc6334a477", 1); //marvinius
-perm.registerPlayer("e41b5335-3c74-46e9-a6c5-dafc6334a477", 3); //marvinius
-perm.registerPlayer("e41b5335-3c74-46e9-a6c5-dafc6334a477", 4); //marvinius
-perm.registerPlayer("e41b5335-3c74-46e9-a6c5-dafc6334a477", 5); //marvinius
-perm.registerPlayer("e41b5335-3c74-46e9-a6c5-dafc6334a477", 6); //marvinius
-perm.registerPlayer("e41b5335-3c74-46e9-a6c5-dafc6334a477", 7); //marvinius
-perm.registerPlayer("e41b5335-3c74-46e9-a6c5-dafc6334a477", 8); //marvinius
-perm.registerPlayer("e41b5335-3c74-46e9-a6c5-dafc6334a477", 10); //marvinius
-perm.registerPlayer("9a3d753d-2283-4c21-98a3-313f52859fc6", 1); //eropster
-perm.registerPlayer("9a3d753d-2283-4c21-98a3-313f52859fc6", 3); //eropster
-perm.registerPlayer("9a3d753d-2283-4c21-98a3-313f52859fc6", 4); //eropster
-perm.registerPlayer("9a3d753d-2283-4c21-98a3-313f52859fc6", 5); //eropster
-perm.registerPlayer("9a3d753d-2283-4c21-98a3-313f52859fc6", 6); //eropster
-perm.registerPlayer("9a3d753d-2283-4c21-98a3-313f52859fc6", 7); //eropster
-perm.registerPlayer("19a6ce0d-60dc-4f35-a79f-c3589e2f78a2", 1); //FinbarTheViking
-perm.registerPlayer("19a6ce0d-60dc-4f35-a79f-c3589e2f78a2", 3); //FinbarTheViking
-perm.registerPlayer("19a6ce0d-60dc-4f35-a79f-c3589e2f78a2", 4); //FinbarTheViking
-perm.registerPlayer("19a6ce0d-60dc-4f35-a79f-c3589e2f78a2", 5); //FinbarTheViking
-perm.registerPlayer("19a6ce0d-60dc-4f35-a79f-c3589e2f78a2", 6); //FinbarTheViking
-perm.registerPlayer("19a6ce0d-60dc-4f35-a79f-c3589e2f78a2", 7); //FinbarTheViking
-perm.registerPlayer("3968d591-25f4-4b27-a854-36cb5902bea1", 4); //ImKillerKatze
-perm.registerPlayer("3968d591-25f4-4b27-a854-36cb5902bea1", 7); //ImKillerKatze 
-perm.registerPlayer("e4364be3-016e-4751-9965-324a5acb2c4f", 1); //Paiu
-perm.registerPlayer("e4364be3-016e-4751-9965-324a5acb2c4f", 3); //Paiu
-perm.registerPlayer("e4364be3-016e-4751-9965-324a5acb2c4f", 4); //Paiu
-perm.registerPlayer("e4364be3-016e-4751-9965-324a5acb2c4f", 5); //Paiu
-perm.registerPlayer("e4364be3-016e-4751-9965-324a5acb2c4f", 6); //Paiu
-perm.registerPlayer("e4364be3-016e-4751-9965-324a5acb2c4f", 7); //Paiu
-perm.registerPlayer("2cae5ee1-f5dd-417f-9953-5d96f988a543", 3); //xDrake112
-perm.registerPlayer("2cae5ee1-f5dd-417f-9953-5d96f988a543", 7); //xDrake112
-perm.registerPlayer("ba2a132b-4333-4a93-99d1-d510935617e8", 1); //Spielmqcher
-perm.registerPlayer("ba2a132b-4333-4a93-99d1-d510935617e8", 4); //Spielmqcher
-perm.registerPlayer("ba2a132b-4333-4a93-99d1-d510935617e8", 5); //Spielmqcher
-perm.registerPlayer("ba2a132b-4333-4a93-99d1-d510935617e8", 7); //Spielmqcher
-perm.registerPlayer("6de40675-79a8-4506-a1e4-88193aa5aeb1", 1); //TheCreaThor
-perm.registerPlayer("6de40675-79a8-4506-a1e4-88193aa5aeb1", 4); //TheCreaThor
-perm.registerPlayer("6de40675-79a8-4506-a1e4-88193aa5aeb1", 5); //TheCreaThor
-perm.registerPlayer("6de40675-79a8-4506-a1e4-88193aa5aeb1", 7); //TheCreaThor
-perm.registerPlayer("c1f41b29-05ad-4344-b502-1e2a4bcd1908", 1); //seyfahni
-perm.registerPlayer("c1f41b29-05ad-4344-b502-1e2a4bcd1908", 4); //seyfahni
-perm.registerPlayer("c1f41b29-05ad-4344-b502-1e2a4bcd1908", 5); //seyfahni
-perm.registerPlayer("c1f41b29-05ad-4344-b502-1e2a4bcd1908", 7); //seyfahni
-perm.registerPlayer("1befc644-44ca-4989-935a-7aba81c91192", 1); //PascalIsMyName
-perm.registerPlayer("1befc644-44ca-4989-935a-7aba81c91192", 4); //PascalIsMyName
-perm.registerPlayer("1befc644-44ca-4989-935a-7aba81c91192", 5); //PascalIsMyName
-perm.registerPlayer("1befc644-44ca-4989-935a-7aba81c91192", 7); //PascalIsMyName
-perm.registerPlayer("6cc9f8c7-9dfd-44f4-a3f2-af30054411a8", 1); //SirTerence7
-perm.registerPlayer("6cc9f8c7-9dfd-44f4-a3f2-af30054411a8", 4); //SirTerence7
-perm.registerPlayer("6cc9f8c7-9dfd-44f4-a3f2-af30054411a8", 7); //SirTerence7
-perm.registerPlayer("798af2b9-1888-4d00-aeb6-5ae6813febda", 5); //belehla
-perm.registerPlayer("798af2b9-1888-4d00-aeb6-5ae6813febda", 7); //belehla
-perm.registerPlayer("fb01703e-0b3a-4677-9a7e-9e2cec102271", 5); //Pringles Pewolt
-perm.registerPlayer("86da8434-7277-40b3-9a61-c2b50ce7585e", 1); //KleinerStern
-perm.registerPlayer("86da8434-7277-40b3-9a61-c2b50ce7585e", 4); //KleinerStern
-perm.registerPlayer("86da8434-7277-40b3-9a61-c2b50ce7585e", 7); //KleinerStern
-perm.registerPlayer("fbb5daeb-ec55-4050-9bab-84674e179cae", 1); //PuffiBuildings
-perm.registerPlayer("fbb5daeb-ec55-4050-9bab-84674e179cae", 4); //PuffiBuildings
-perm.registerPlayer("fbb5daeb-ec55-4050-9bab-84674e179cae", 7); //PuffiBuildings
-perm.registerPlayer("f19d5b8a-7256-4646-aca0-34be478f9fb4", 1); //Tynechro
-perm.registerPlayer("f19d5b8a-7256-4646-aca0-34be478f9fb4", 4); //Tynechro
-perm.registerPlayer("f19d5b8a-7256-4646-aca0-34be478f9fb4", 7); //Tynechro
-perm.registerPlayer("0f1b685a-1efd-43f2-bc9c-5e07cf668d59", 7); //MOARSL
-msg("dev", "§bperms §rwurden geladen.");
-@wait
-wait();
-if(event == "custom_command") {
-	if(command == "perm") {
-		if(perm.has(player, "isMod")) {
-			if(list.getSize(args) != 3) {
-				player.speak(player, "§6Commands", "§r/perm ...");
-				msg(player, "§r - give <name> <builder/tp>");
-				goto("wait");
-			}
-			if(list.getIndex(args, 0) == "give") {
-				pname = list.getIndex(args, 1);
-				perm = list.getIndex(args, 2);
-				uuid = player.getUuid(pname);
-				if(uuid == null) {
-					player.speak(player, "§6Commands", "§rDieser Spieler existiert nicht");
-					goto("wait");
-				}
-				if(perm == "builder") {
-					perm.registerPlayer(uuid, 1);
-					perm.registerPlayer(uuid, 4);
-				} elseif(perm == "tp") {
-					perm.registerPlayer(uuid, 7);
-				} else {
-					player.speak(player, "§6Commands", "§rDiese Perm steht nicht zur Auswahl. Wähle zwischen 'builder' und 'tp'");
-					goto("wait");
-				}
-				player.speak(player, "§6Commands", "§rDone");
-				teamuuid = player.getUuid(player);
-				//Sendet eine Mail an marvinius
-				sgv("SERVER", "mailid", ggv("SERVER", "mailid") + 1);
-				mailid = ggv("SERVER", "mailid");
-				gdmap.add("mails", mailid, "from", teamuuid);
-				gdmap.add("mails", mailid, "to", marvuuid);
-				gdmap.add("mails", mailid, "readed", "false");
-				gdmap.add("mails", mailid, "time", time.getMillis());
-				gdmap.add("mails", mailid, "message", concat("Perm Request: ", pname, " / ", perm));
-				gdmap.add("mailin", marvuuid, mailid, "wusi");
-				gdmap.add("mailout", teamuuid, mailid, "wusi");
-				p = read.player("marvinius"); //Überprüfung ob marvinius online
-				if(p == null) {
-					goto("wait");  //Spieler nicht online, keine Pushmeldung veranlasst
-				}
-				player.speak(p, "§3Mail", "§rDu hast §b1 §rneue Mail");
-				goto("wait");
-			}
-		} else {
-			player.speak(player, "§6Commands", "§rDir fehlen die Berechtigungen dazu");
-			goto("wait");
-		}
-	}
-	goto("wait");
-}
-goto("wait");

+ 0 - 382
global/system/permsnew.txt

@@ -1,382 +0,0 @@
-perm.clear();
-//Notfall-Perms
-perm.registerGroup(6, "script");
-perm.registerGroup(6, "script.error");
-perm.registerPlayer("e41b5335-3c74-46e9-a6c5-dafc6334a477", 6); //marvinius
-perm.registerPlayer("51e240f9-ab10-4ea6-8a5d-779319f51257", 6); //kajetan
-
-event.load("custom_command");
-command.add("perm");
-marvuuid = player.getUuid("marvinius");
-permspräfix = "§zPerms";
-
-list.new(permgroups);
-list.add(permgroups, "worldedit");
-list.add(permgroups, "mod");
-list.add(permgroups, "builder");
-list.add(permgroups, "vip");
-list.add(permgroups, "dev");
-list.add(permgroups, "teleport");
-list.add(permgroups, "supporter");
-groupsstring = text.concatList(permgroups, "/", 0, list.getSize(permgroups) - 1);
-
-map.new(permgroupsmap);
-map.add(permgroupsmap, "worldedit", 1);
-map.add(permgroupsmap, "mod", 3);
-map.add(permgroupsmap, "builder", 4);
-map.add(permgroupsmap, "vip", 5);
-map.add(permgroupsmap, "dev", 6);
-map.add(permgroupsmap, "teleport", 7);
-map.add(permgroupsmap, "supporter", 10);
-
-//default
-perm.registerGroup(0, "setbed");
-perm.registerGroup(0, "home");
-perm.registerGroup(0, "sethome");
-perm.registerGroup(0, "kill");
-perm.registerGroup(0, "list");
-perm.registerGroup(0, "pvp");
-perm.registerGroup(0, "lag");
-perm.registerGroup(0, "coords");
-perm.registerGroup(0, "msg");
-perm.registerGroup(0, "answer");
-perm.registerGroup(0, "position");
-perm.registerGroup(0, "seen");
-perm.registerGroup(0, "teleportaccept");
-perm.registerGroup(0, "block");
-perm.registerGroup(0, "afk");
-perm.registerGroup(0, "temperature");
-perm.registerGroup(0, "recipe");
-perm.registerGroup(0, "activeskills");
-perm.registerGroup(0, "skills");
-perm.registerGroup(0, "giveup");
-perm.registerGroup(0, "help");
-perm.registerGroup(0, "spawn"); //deaktiviert, da vespilan welt testwelt für colony: (tools, für default-user nur in welt "vespilan" verwendbar)
-
-//worldedit
-//Gruppe: 1
-//nicht bearbeiten
-
-//admin
-perm.registerGroup(2, "isAdmin");
-perm.registerGroup(2, "isTeam");
-perm.registerGroup(2, "test");
-perm.registerGroup(2, "adduser");
-perm.registerGroup(2, "blockclear");
-
-//mod
-perm.registerGroup(3, "isMod");
-perm.registerGroup(3, "isTeam");
-perm.registerGroup(3, "effect");
-perm.registerGroup(3, "iteminfo");
-perm.registerGroup(3, "spawn");
-perm.registerGroup(3, "human");
-perm.registerGroup(3, "gamerule");
-perm.registerGroup(3, "weather");
-perm.registerGroup(3, "setspawn");
-perm.registerGroup(3, "heal");
-//perm.registerGroup(3, "tempban");
-perm.registerGroup(3, "teleport");
-perm.registerGroup(3, "spawner");
-perm.registerGroup(3, "summon");
-perm.registerGroup(3, "butcher");
-perm.registerGroup(3, "skull");
-perm.registerGroup(3, "silent");
-perm.registerGroup(3, "sign");
-perm.registerGroup(3, "setwarp");
-perm.registerGroup(3, "delwarp");
-perm.registerGroup(3, "fly");
-perm.registerGroup(3, "fly.other");
-perm.registerGroup(3, "gamemode");
-perm.registerGroup(3, "gamemode.other");
-perm.registerGroup(3, "god");
-perm.registerGroup(3, "more");
-perm.registerGroup(3, "more.other");
-perm.registerGroup(3, "jumpto");
-perm.registerGroup(3, "delhome");
-perm.registerGroup(3, "kill.other");
-perm.registerGroup(3, "hat");
-perm.registerGroup(3, "repair");
-perm.registerGroup(3, "pvp.other");
-perm.registerGroup(3, "lightupdate");
-perm.registerGroup(3, "invsee");
-perm.registerGroup(3, "sethome");
-perm.registerGroup(3, "kick");
-perm.registerGroup(3, "enderchest");
-perm.registerGroup(3, "exp");
-perm.registerGroup(3, "say");
-perm.registerGroup(3, "ban");
-perm.registerGroup(3, "pardon");
-perm.registerGroup(3, "back");
-perm.registerGroup(3, "bed");
-perm.registerGroup(3, "bed.other");
-perm.registerGroup(3, "potion");
-perm.registerGroup(3, "feed");
-perm.registerGroup(3, "memory");
-perm.registerGroup(3, "time");
-perm.registerGroup(3, "top");
-perm.registerGroup(3, "tp");
-perm.registerGroup(3, "tppos");
-perm.registerGroup(3, "user");
-perm.registerGroup(3, "warp");
-perm.registerGroup(3, "book");
-perm.registerGroup(3, "grow");
-perm.registerGroup(3, "enchant");
-perm.registerGroup(3, "speed");
-perm.registerGroup(3, "color");
-perm.registerGroup(3, "usecolor");
-perm.registerGroup(3, "nickname");
-perm.registerGroup(3, "fakerank");
-perm.registerGroup(3, "world");
-perm.registerGroup(3, "block.bypass");
-perm.registerGroup(3, "block.all");
-perm.registerGroup(3, "block.other");
-perm.registerGroup(3, "afk.other");
-perm.registerGroup(3, "datatools");
-perm.registerGroup(3, "villager");
-perm.registerGroup(3, "wand");
-perm.registerGroup(3, "heal_stats");
-perm.registerGroup(3, "job");
-perm.registerGroup(3, "plot.create");
-perm.registerGroup(3, "plot.tag");
-perm.registerGroup(3, "plot.share");
-perm.registerGroup(3, "plot.sign");
-perm.registerGroup(3, "plot.bypass");
-perm.registerGroup(3, "plot.mark");
-perm.registerGroup(3, "plot.info");
-perm.registerGroup(3, "plot");
-perm.registerGroup(3, "magicscroll");
-perm.registerGroup(3, "script");
-perm.registerGroup(3, "give");
-perm.registerGroup(3, "script.error");
-perm.registerGroup(3, "stop");
-perm.registerGroup(3, "remove");
-perm.registerGroup(3, "clear");
-perm.registerGroup(3, "lastseen");
-perm.registerGroup(3, "locate");
-
-//builder
-perm.registerGroup(4, "isBuilder");
-perm.registerGroup(4, "isTeam");
-perm.registerGroup(4, "summon");
-perm.registerGroup(4, "fly");
-perm.registerGroup(4, "gamemode");
-perm.registerGroup(4, "skull");
-perm.registerGroup(4, "sign");
-perm.registerGroup(4, "color");
-perm.registerGroup(4, "usecolor");
-perm.registerGroup(4, "villager");
-perm.registerGroup(4, "grow");
-perm.registerGroup(4, "magicscroll");
-perm.registerGroup(4, "datatools");
-perm.registerGroup(4, "speed");
-
-//vip
-perm.registerGroup(5, "isVIP");
-perm.registerGroup(5, "fly");
-perm.registerGroup(5, "hat");
-perm.registerGroup(5, "lastseen");
-perm.registerGroup(5, "color");
-perm.registerGroup(5, "usecolor");
-perm.registerGroup(5, "plot");
-perm.registerGroup(5, "plot.info");
-perm.registerGroup(5, "locate");
-
-//dev
-perm.registerGroup(6, "isDev");
-perm.registerGroup(6, "isTeam");
-perm.registerGroup(6, "script");
-perm.registerGroup(6, "script.error");
-perm.registerGroup(6, "iteminfo");
-
-//teleport
-perm.registerGroup(7, "canTP");
-perm.registerGroup(7, "back");
-perm.registerGroup(7, "teleport");
-perm.registerGroup(7, "tppos");
-perm.registerGroup(7, "spawn");
-perm.registerGroup(7, "warp");
-perm.registerGroup(7, "setwarp");
-perm.registerGroup(7, "delwarp");
-perm.registerGroup(7, "top");
-perm.registerGroup(7, "jumpto");
-
-//snuvimaster
-perm.registerGroup(8, "isSnuviMaster");
-
-//pseudomod
-perm.registerGroup(9, "isPseudoMod"); //Mod ohne reale Permissions
-
-//supporter
-perm.registerGroup(10, "isSupporter");
-
-for(i = 0; i <= list.getSize(permgroups) - 1; i++) {
-	perm = list.getIndex(permgroups, i);
-	gdmap.toTable(table, "permsread", perm);
-	for(i = 0; i <= table.getSize(table) - 1; i++) {
-		uuid = table.get(table, i, 0);
-		perm.registerPlayer(uuid, map.get(permgroupsmap, perm));
-	}
-}
-
-msg("dev", "§bPermissions §rwurden geladen");
-@wait
-wait();
-if(event == "custom_command") {
-	if(command == "perm") {
-		if(!perm.has(player, "isMod")) {
-			player.speak(player, permspräfix, "§rDir fehlen die Berechtigungen dazu");
-			goto("wait");
-		}
-		size = list.getSize(args);
-		if(list.getSize(args) == 0) {
-			player.speak(player, permspräfix, "§r/perm ...");
-			msg(player, "§z - give <player> <perm>");
-			msg(player, "§z - remove <player>");
-			msg(player, "§z - removeall <player>");
-			msg(player, "§z - list <player>");
-			msg(player, permspräfix, "§r", groupsstring);
-			goto("wait");
-		}
-		arg0 = list.getIndex(args, 0);
-		if(arg0 == "give") {
-			if(size != 3) {
-				player.speak(player, permspräfix, "/perm give <player> <perm>");
-			} else {
-				uuid = player.getUuid(list.getIndex(args, 1));
-				perm = list.getIndex(args, 2);
-				if(!checkifeveronline(uuid)) {
-					player.speak(player, permspräfix, "§rDieser Spieler existiert nicht");
-					goto("wait");
-				}
-				if(!isapermgroup(perm)) {
-					player.speak(permspräfix, groupsstring);
-					goto("wait");
-				}
-				giveperm(uuid, perm);
-				player.speak(player, permspräfix, "§rDone");
-			}
-			goto("wait");
-		}
-		if(arg0 == "remove") {
-			if(size != 2) {
-				player.speak(player, permspräfix, "/perm remove <player>");
-			} else {
-				uuid = player.getUuid(list.getIndex(args, 1));
-				perm = list.getIndex(args, 2);
-				if(!checkifeveronline(uuid)) {
-					player.speak(player, permspräfix, "§rDieser Spieler existiert nicht");
-					goto("wait");
-				}
-				if(!isapermgroup(perm)) {
-					player.speak(permspräfix, groupsstring);
-					goto("wait");
-				}
-				ownuuid = player.getUuid(player);
-				if(ownuuid != marvuuid) {
-					if(uuid == marvuuid) {
-						msg(player, "§cSorry §s¯\_(ツ)_/¯");
-						goto("wait");
-					}
-				}
-				removeperm(uuid, perm);
-				player.speak(player, permspräfix, "§rDone");
-			}
-			goto("wait");
-		}
-		if(arg0 == "removeall") {
-			if(size != 2) {
-				player.speak(player, permspräfix, "/perm removeall <player>");
-			} else {
-				uuid = player.getUuid(list.getIndex(args, 1));
-				if(!checkifeveronline(uuid)) {
-					player.speak(player, permspräfix, "§rDieser Spieler existiert nicht");
-					goto("wait");
-				}
-				ownuuid = player.getUuid(player);
-				if(ownuuid != marvuuid) {
-					if(uuid == marvuuid) {
-						msg(player, "§cSorry §s¯\_(ツ)_/¯");
-						goto("wait");
-					}
-				}
-				removeallperms(uuid);
-				player.speak(player, permspräfix, "§rDone");
-			}
-			goto("wait");
-		}
-		if(arg0 == "list") {
-			if(size != 2) {
-				player.speak(player, permspräfix, "/perm list <player>");
-			} else {
-				pname = list.getIndex(args, 1);
-				uuid = player.getUuid(pname);
-				if(!checkifeveronline(uuid)) {
-					player.speak(player, permspräfix, "§rDieser Spieler existiert nicht");
-					goto("wait");
-				}
-				permslist = getpermslist(uuid);
-				listsize = list.getSize(permslist);
-				if(listsize == 0) {
-					player.speak(player, permspräfix, "§rKeine Permissions vorhanden");
-				} else {
-					player.speak(player, permspräfix, pname);
-					for(i = 0; i <= listsize - 1; i++) {
-						msg(player, " - ", list.getIndex(permslist, i));
-					}
-				}
-			}
-			goto("wait");
-		}
-	}
-}
-goto("wait");
-
-function giveperm(uuid, perm) {
-	permstring = text.toLowerCase(perm);
-	permnumber = map.get($permgroupsmap, permstring);
-	gdmap.add("permsread", permstring, uuid, true);
-	gdmap.add("permslist", uuid, permstring, true);
-	perm.registerPlayer(uuid, permnumber);
-	return;
-}
-
-function removeperm(uuid, perm) {
-	permstring = text.toLowerCase(perm);
-	permnumber = map.get($permgroupsmap, permstring);
-	gdmap.remove("permsread", permstring, uuid);
-	gdmap.remove("permslist", uuid, permstring);
-	perm.unregisterPlayer(uuid, permnumber);
-	return;
-}
-
-function getpermslist(uuid) {
-	gdmap.toTable(table, "permslist", uuid);
-	list.new(permslist);
-	for(i = 0; i <= table.getSize(table) - 1; i++) {
-		list.add(permslist, table.get(table, i, 0));
-	}
-	return permslist;
-}
-
-function removeallperms(uuid) {
-	gdmap.toTable(table, "permslist", uuid);
-	for(i = 0; i <= table.getSize(table) - 1; i++) {
-		removeperm(uuid, table.get(table, i, 0));
-	}
-	return;
-}
-
-function isapermgroup(perm) {
-	if(list.contains($permgroups, text.toLowerCase(perm))) {
-		return true;
-	}
-	return false;
-}
-
-function checkifeveronline(player_name) {
-	if(uuid == null) {
-		return false;
-	}
-	return true;
-}

+ 5 - 6
startscript.txt

@@ -7,13 +7,13 @@ world.load("colony");
 world.load("iceworld");
 
 msg("dev", "§0-----------------------------------------------------");
-script.start("system/perms");
+
+script.start("system/perms", "utils/u_perms");
 script.start("system/chat", "utils/ranks");
-script.start("system/commands", "utils/general", "utils/ranks", "utils/plots");
+script.start("system/commands", "utils/general", "utils/ranks", "utils/plots", "utils/u_perms");
 //script.start("global/chatbuffer");
-//script.start("global/tippsystem");
-//script.start("global/tools");
 script.start("global/gamecenter");
+script.start("global/copyisland");
 //script.start("global/skyblock");
 script.start("global/friends", "utils/general", "utils/mail", "utils/friend");
 script.start("system/playtime");
@@ -24,8 +24,7 @@ script.start("global/doors");
 script.start("global/chestshops");
 //script.start("global/system/drops");
 script.start("system/skills", "utils/skills", "utils/jobs", "utils/gpvp", "utils/general", "utils/plots");
-//script.start("global/system/messages");
 //script.start("global/system/ranks");
 //script.start("global/xmas");
 script.start("gildenpvp/gpvp", "utils/gpvp", "utils/general", "utils/mail", "utils/friend", "utils/jobs", "utils/plots");
-//script.start("colony/colony");
+//script.start("colony/colony");

+ 65 - 5
system/chat.txt

@@ -1,6 +1,9 @@
 event.load("chat");
 event.load("player_login");
 event.load("player_logout");
+event.load("player_hurt");
+event.load("player_death");
+
 
 cookie = read.item("minecraft:cookie");
 airitem = read.item("minecraft:air");
@@ -25,19 +28,15 @@ list.add(forbiddennames, "null");
 
 map.new(personaljoinmessage);
 map.add(personaljoinmessage, 29, concat("§6 rollt seine Pläne aus")); //eropster
-//map.add(personaljoinmessage, 2, concat("§6 programmiert jetzt Bugs")); //marvinius
 map.add(personaljoinmessage, 2, concat("§6 schaut nach seinem Code")); //marvinius
 map.add(personaljoinmessage, 30, concat("§6 starring as Andi 2.0")); //FinbarTheViking
-//map.add(personaljoinmessage, , concat("§6 stellt jetzt alles auf den Kopf")); //seyfahni
 map.add(personaljoinmessage, 1, concat("§6 besucht seine Kreation")); //kajetan
 map.add(personaljoinmessage, 35, concat("§6 nimmt jetzt den Kampf gegen die Sudokus auf")); //SirTerence7
 
 map.new(personalleavemessage);
 map.add(personalleavemessage, 29, concat("§6 rollt seine Pläne zusammen")); //eropster
-//map.add(personalleavemessage, 2, concat("§6 mag nicht mehr -> zu viele Bugs")); //marvinius
 map.add(personalleavemessage, 2, concat("§6 klopft an den Himmel und horcht auf den Klang")); //marvinius
 map.add(personalleavemessage, 30, concat("§6 war das Nörgeln zu anstrengend")); //FinbarTheViking
-//map.add(personalleavemessage, , concat("§6 ist nun auf Kernseifen-Code-Safari")); //seyfahni
 map.add(personalleavemessage, 1, concat("§6 kehrt ins Reich der Götter zurück")); //kajetan
 map.add(personalleavemessage, 35, concat("§6 zieht sich zum Denken zurück")); //SirTerence7
 
@@ -46,14 +45,42 @@ list.add(joinmessages, concat("§6 hat Mundus Crassus betreten."));
 list.add(joinmessages, concat("§6 ist Mundus Crassus beigetreten."));
 //list.add(joinmessages, concat("§6 hat sich in Mundus Crassus verliebt.")); //Valentinstag
 list.add(joinmessages, concat("§6 hat die dicke Welt betreten."));
+list.add(joinmessages, concat("§6 lässt die Kernseifen-Code-Safari aufleben."));
 list.add(joinmessages, concat("§6 ist bereit, neue Erze zu entdecken."));
+list.add(joinmessages, concat("§6 stellt jetzt alles auf den Kopf."));
 
 list.new(leavemeassages);
 list.add(leavemeassages, concat("§6 hat Mundus Crassus verlassen."));
 //list.add(leavemeassages, concat("§6 ist vor Liebe in Ohnmacht gefallen.")); //Valentinstag
 list.add(leavemeassages, concat("§6 hat die dicke Welt verlassen."));
+list.add(leavemeassages, concat("§6 kam, sah und siegte."));
 list.add(leavemeassages, concat("§6 verblasste im Angesicht des Kupfers."));
 
+map.new(damagecauses);
+list.new(nomessageworlds);
+list.add(nomessageworlds, world.get("games"));
+
+colorcodedeath = "§7";
+
+list.new(defaultdeaths);
+list.add(defaultdeaths, concat(colorcodedeath, " erlag seinen Wunden"));
+list.add(defaultdeaths, concat(colorcodedeath, " wollte nicht mehr leben"));
+list.add(defaultdeaths, concat(colorcodedeath, " hat jetzt keinen Hunger mehr"));
+
+list.new(drowndeaths);
+list.add(drowndeaths, concat(colorcodedeath, " errank"));
+list.add(drowndeaths, concat(colorcodedeath, " schluckte zu viel Wasser"));
+
+list.new(falldeaths);
+list.add(falldeaths, concat(colorcodedeath, " fiel der Gravitation zum Opfer"));
+list.add(falldeaths, concat(colorcodedeath, " rutschte auf einer Banane aus"));
+
+//andere damagecauses: fall, outOfWorld, arrow, drown (ertrinken), player, inWall, mob, magic, starve
+map.new(causetolist);
+map.add(causetolist, "fall", falldeaths);
+map.add(causetolist, "drown", drowndeaths);
+map.add(causetolist, "player", list.new());
+
 msg("dev", "§bChat §rwurde geladen");
 @wait
 wait();
@@ -105,4 +132,37 @@ goto("wait");
 
 @chat
 message = concat(fullname, "§1 | §r", message);
-goto("wait");
+goto("wait");
+
+@player_hurt
+world = loc.getWorld(entity.getLocation(player));
+if(!list.contains(nomessageworlds, world)) {
+	map.add(damagecauses, player.getUuid(player_name), player_damage_cause);
+}
+goto("wait");
+
+@player_death
+world = loc.getWorld(entity.getLocation(player));
+if(!list.contains(nomessageworlds, world)) {
+	player_damage_cause = map.get(damagecauses, player.getUuid(player_name));
+	list = map.getOrDefault(causetolist, player_damage_cause, defaultdeaths);
+	if(player_damage_cause == "player") {
+		list.clear(list);
+		list.add(list, concat(fullname, colorcodedeath, " erhielt die letzte Ehre durch §r", sec_player_name));
+		list.add(list, concat(fullname, colorcodedeath, " starb durch die Hand von §r", sec_player_name));
+		list.add(list, concat(fullname, colorcodedeath, " wurde von §r", sec_player_name, colorcodedeath, " getötet"));
+		message = list.getIndex(list, math.random(0, list.getSize(list) - 1));
+	} else {
+		message = concat(fullname, list.getIndex(list, math.random(0, list.getSize(list) - 1)));
+	}
+	speakToWorld(player, world, message);
+}
+goto("wait");
+
+function speakToWorld(player, world, message) { //speakToWorld(player, world, message)
+	players.toWorldList(worldlist, world);
+	for(i = 0; i <= list.getSize(worldlist) - 1; i++) {
+		msg(list.getIndex(worldlist, i), message);
+	}
+	return;
+}

+ 150 - 2
system/commands.txt

@@ -1,6 +1,7 @@
 waitfor(1);
 command.clear();
 
+command.add("perm");
 command.add("setrank");
 command.add("tpall");
 command.add("tipp");
@@ -85,8 +86,11 @@ command.add("itemdb");
 command.add("elytra");
 command.add("top");
 command.add("games");
+command.add("copyisland");
+command.add("ci");
 
 list.new(command_list);
+list.add(command_list, "perm");
 list.add(command_list, "setrank");
 list.add(command_list, "tpall");
 list.add(command_list, "tipp");
@@ -154,6 +158,7 @@ list.add(command_list, "heal");
 list.add(command_list, "butcher");
 list.add(command_list, "world");
 list.add(command_list, "elytra");
+list.add(command_list, "copyisland");
 
 event.load("inv_click");
 event.load("missing_perm");
@@ -166,6 +171,7 @@ event.load("player_login");
 event.load("player_logout");
 
 map.new(aliasmap);
+map.add(aliasmap, "ci", "copyisland");
 map.add(aliasmap, "mem", "memory");
 map.add(aliasmap, "tp", "teleport");
 map.add(aliasmap, "gm", "gamemode");
@@ -205,6 +211,34 @@ map.new(plotpos2);
 map.new(invseeids);
 set.new(fields);
 
+list.new(permgroups);
+list.add(permgroups, "mod");
+list.add(permgroups, "supporter");
+list.add(permgroups, "builder");
+list.add(permgroups, "worldedit");
+list.add(permgroups, "teleport");
+list.add(permgroups, "vip");
+list.add(permgroups, "dev");
+groupsstring = text.concatList(permgroups, "/", 0, list.getSize(permgroups) - 1);
+
+map.new(permgroupsmap);
+map.add(permgroupsmap, "worldedit", 1);
+map.add(permgroupsmap, "mod", 2);
+map.add(permgroupsmap, "builder", 3);
+map.add(permgroupsmap, "vip", 4);
+map.add(permgroupsmap, "dev", 5);
+map.add(permgroupsmap, "teleport", 6);
+map.add(permgroupsmap, "supporter", 9);
+
+map.new(permgroupsmap2);
+map.add(permgroupsmap2, 1, "worldedit");
+map.add(permgroupsmap2, 2, "mod");
+map.add(permgroupsmap2, 3, "builder");
+map.add(permgroupsmap2, 4, "vip");
+map.add(permgroupsmap2, 5, "dev");
+map.add(permgroupsmap2, 6, "teleport");
+map.add(permgroupsmap2, 9, "supporter");
+
 executeOnce = databank.prepare("CREATE TABLE IF NOT EXISTS logoutdata (player_id INT NOT NULL PRIMARY KEY, logouttime BIGINT, FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);");
 databank.workerExecute(executeOnce);
 executeOnce2 = databank.prepare("CREATE TABLE IF NOT EXISTS tipps (tipp_key VARCHAR(20) PRIMARY KEY, tipp_value VARCHAR(255));");
@@ -308,6 +342,120 @@ rank = list.getIndex(args, 1);
 setRank(player_name, rank);
 goto("wait");
 
+@perm
+if(size == 0) {
+	@perm_syntax
+	player.speak(player, "§zPerms", "§r/perm ...");
+	msg(player, "§z - give <player> <perm>");
+	msg(player, "§z - remove <player>");
+	msg(player, "§z - removeall <player>");
+	msg(player, "§z - list <player>");
+	msg(player, "§z perm §r", groupsstring);
+	goto("wait");
+}
+arg0 = list.getIndex(args, 0);
+if(arg0 == "give") {
+	if(size != 3) {
+		player.speak(player, "§zPerms", "/perm give <player> <perm>");
+	} else {
+		p_name = list.getIndex(args, 1);
+		perm = list.getIndex(args, 2);
+		if(!checkIfEverOnline(p_name)) {
+			player.speak(player, "§zPerms", "§rDieser Spieler existiert nicht");
+			goto("wait");
+		}
+		if(!isAPermGroup(perm)) {
+			player.speak(player, "§zPerms", groupsstring);
+			goto("wait");
+		}
+		p_id = player.getId(player.getUuid(p_name));
+		perm_id = map.get(permgroupsmap, perm);
+		if(hasPermAlready(p_id, perm_id)) {
+			player.speak(player, "§zPerms", "§rPerm bereits hinzugefügt");
+			goto("wait");
+		}
+		givePerm(p_id, perm_id);
+		player.speak(player, "§zPerms", "§rDone");
+	}
+	goto("wait");
+}
+if(arg0 == "remove") {
+	if(size != 3) {
+		player.speak(player, "§zPerms", "/perm remove <player> <perm>");
+	} else {
+		p_name = list.getIndex(args, 1);
+		perm = list.getIndex(args, 2);
+		if(!checkIfEverOnline(p_name)) {
+			player.speak(player, "§zPerms", "§rDieser Spieler existiert nicht");
+			goto("wait");
+		}
+		if(!isAPermGroup(perm)) {
+			player.speak(player, "§zPerms", groupsstring);
+			goto("wait");
+		}
+		p_id = player.getId(player.getUuid(p_name));
+		//Wenn marvinius eine Permission entfernt wird, wird dies blockiert, ausgenommen er tut dies selbst
+		player_id = player.getId(player);
+		if(player_id != 2) {
+			if(p_id == 2) {
+				msg(player, "§cSorry §s¯\_(ツ)_/¯");
+				goto("wait");
+			}
+		}
+		perm_id = map.get(permgroupsmap, perm);
+		removePerm(p_id, perm_id);
+		player.speak(player, "§zPerms", "§rDone");
+	}
+	goto("wait");
+}
+if(arg0 == "removeall") {
+	if(size != 2) {
+		player.speak(player, "§zPerms", "/perm removeall <player>");
+	} else {
+		p_name = list.getIndex(args, 1);
+		if(!checkIfEverOnline(p_name)) {
+			player.speak(player, "§zPerms", "§rDieser Spieler existiert nicht");
+			goto("wait");
+		}
+		//Wenn marvinius Permissions entfernt werden, wird dies blockiert, ausgenommen er tut dies selbst
+		p_id = player.getId(player.getUuid(p_name));
+		player_id = player.getId(player);
+		if(player_id != 2) {
+			if(p_id == 2) {
+				msg(player, "§cSorry §s¯\_(ツ)_/¯");
+				goto("wait");
+			}
+		}
+		removeAllPerms(p_id);
+		player.speak(player, "§zPerms", "§rDone");
+	}
+	goto("wait");
+}
+if(arg0 == "list") {
+	if(size != 2) {
+		player.speak(player, "§zPerms", "/perm list <player>");
+	} else {
+		p_name = list.getIndex(args, 1);
+		if(!checkIfEverOnline(p_name)) {
+			player.speak(player, "§zPerms", "§rDieser Spieler existiert nicht");
+			goto("wait");
+		}
+		p_id = player.getId(player.getUuid(p_name));
+		permslist = getPermsFromPlayer(p_id);
+		listsize = list.getSize(permslist);
+		if(listsize == 0) {
+			player.speak(player, "§zPerms", "§rKeine Permissions vorhanden");
+		} else {
+			player.speak(player, "§zPerms", p_name);
+			for(i = 0; i < listsize; i++) {
+				msg(player, " - ", map.get(permgroupsmap2, list.getIndex(permslist, i)));
+			}
+		}
+	}
+	goto("wait");
+}
+goto("perm_syntax");
+
 @tpall
 online_list = players.toList();
 list.remove(online_list, player);
@@ -523,7 +671,7 @@ if(size != 1) {
 arg0 = list.getIndex(args, 0);
 if(arg0 == "commands") {
 	script = script.get("scripts/system/commands.txt");
-	script.start("system/commands", "utils/general", "utils/ranks", "utils/plots");
+	script.start("system/commands", "utils/general", "utils/ranks", "utils/plots", "utils/u_perms");
 	script.term(script);
 }
 elseif(arg0 == "games") {
@@ -551,7 +699,7 @@ elseif(arg0 == "chat") {
 	script.start("system/chat", "utils/ranks");
 }
 elseif(arg0 == "perms") {
-	script.start("system/perms");
+	script.start("system/perms", "utils/u_perms");
 }
 elseif(arg0 == "skills") {
 	try {

+ 0 - 37
system/joins.txt

@@ -1,37 +0,0 @@
-event.load("chat");
-event.load("player_login");
-event.load("player_logout");
-
-gamesworld = world.get("games");
-serverspawn = read.location(ggv("SERVER", "serverspawn"));
-
-executeOnce = databank.prepare("CREATE TABLE IF NOT EXISTS chatranks (player_id INT NOT NULL PRIMARY KEY, rank VARCHAR(20), FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);");
-databank.workerExecute(executeOnce);
-
-msg("dev", "§bChat §rwurde geladen");
-@wait
-wait();
-if(event == "player_login") {
-	player_id = player.getId(player.getUuid(player));
-	rank = getRank(player_id);
-	msg("online", concat("[", rank, "§r] ", player_name, "§6 hat MundusCrassus betreten"));
-	first_join = ggv(player, "firstjoin");
-	if(first_join == null) {
-		entity.teleport(player, serverspawn);
-		msg("online", "§bWillkommen am Server ", player_name);
-		sgv(player, "firstjoin", true);
-	}
-}
-elseif(event == "player_logout") {
-	player_id = player.getId(player.getUuid(player));
-	rank = getRank(player_id);
-	msg("online", concat("[", rank, "§r] ", player_name, "§6 hat MundusCrassus verlassen"));
-	//Backpos
-	dgv(player, "backpos");
-}
-elseif(event == "chat") {
-	player_id = player.getId(player.getUuid(player));
-	rank = getRank(player_id);
-	message = concat("[", rank, "§r] ", player_name, "§1 | §r", message);
-}
-goto("wait");

+ 36 - 59
system/perms.txt

@@ -1,8 +1,30 @@
-perm.clear();
+//-------------------------
+// Gruppe 0 Default, hat jeder Spieler
+// Gruppe 1 Worldedit, nicht bearbeiten!
+//-------------------------
 
-//event.load("custom_command");
-//command.add("perm");
-//marvuuid = player.getUuid("marvinius");
+executeOnce = databank.prepare("CREATE TABLE IF NOT EXISTS playerperms (player_id INT NOT NULL, perm_id INT NOT NULL, PRIMARY KEY(player_id, perm_id), FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);");
+databank.workerExecute(executeOnce);
+
+waitfor(10);
+
+list.new(permgroups);
+list.add(permgroups, "mod");
+list.add(permgroups, "supporter");
+list.add(permgroups, "builder");
+list.add(permgroups, "worldedit");
+list.add(permgroups, "teleport");
+list.add(permgroups, "vip");
+list.add(permgroups, "dev");
+
+map.new(permgroupsmap);
+map.add(permgroupsmap, "worldedit", 1);
+map.add(permgroupsmap, "mod", 2);
+map.add(permgroupsmap, "builder", 3);
+map.add(permgroupsmap, "vip", 4);
+map.add(permgroupsmap, "dev", 5);
+map.add(permgroupsmap, "teleport", 6);
+map.add(permgroupsmap, "supporter", 9);
 
 //Default-Rechte
 perm.registerGroup(0, "bug");
@@ -54,6 +76,8 @@ perm.registerGroup(0, "games");
 
 //Mods-Rechte
 perm.registerGroup(2, "isMod");
+perm.registerGroup(2, "perm");
+perm.registerGroup(2, "copyisland");
 perm.registerGroup(2, "cli");
 perm.registerGroup(2, "plant");
 perm.registerGroup(2, "grow");
@@ -232,28 +256,18 @@ perm.registerGroup(10, "test");
 perm.registerGroup(10, "adduser");
 perm.registerGroup(10, "blockclear");
 
-
 //Guild-Mod
 perm.registerGroup(11, "isGuildMod");
 
-perm.registerPlayer("51e240f9-ab10-4ea6-8a5d-779319f51257", 1); //kajetan
-perm.registerPlayer("51e240f9-ab10-4ea6-8a5d-779319f51257", 2); //kajetan
-perm.registerPlayer("51e240f9-ab10-4ea6-8a5d-779319f51257", 3); //kajetan
-perm.registerPlayer("51e240f9-ab10-4ea6-8a5d-779319f51257", 5); //kajetan
-perm.registerPlayer("51e240f9-ab10-4ea6-8a5d-779319f51257", 10); //kajetan
-perm.registerPlayer("51e240f9-ab10-4ea6-8a5d-779319f51257", 11); //kajetan
-perm.registerPlayer("e41b5335-3c74-46e9-a6c5-dafc6334a477", 1); //marvinius
-perm.registerPlayer("e41b5335-3c74-46e9-a6c5-dafc6334a477", 2); //marvinius
-perm.registerPlayer("e41b5335-3c74-46e9-a6c5-dafc6334a477", 3); //marvinius
-perm.registerPlayer("e41b5335-3c74-46e9-a6c5-dafc6334a477", 5); //marvinius
+//Perms auf Spieler registrieren
+registerAllPerms();
+
 perm.registerPlayer("e41b5335-3c74-46e9-a6c5-dafc6334a477", 7); //marvinius
-perm.registerPlayer("e41b5335-3c74-46e9-a6c5-dafc6334a477", 9); //marvinius
 perm.registerPlayer("e41b5335-3c74-46e9-a6c5-dafc6334a477", 11); //marvinius
-perm.registerPlayer("9a3d753d-2283-4c21-98a3-313f52859fc6", 2); //eropster
-perm.registerPlayer("9a3d753d-2283-4c21-98a3-313f52859fc6", 1); //eropster
-perm.registerPlayer("9a3d753d-2283-4c21-98a3-313f52859fc6", 3); //eropster
-perm.registerPlayer("9a3d753d-2283-4c21-98a3-313f52859fc6", 9); //eropster
+perm.registerPlayer("51e240f9-ab10-4ea6-8a5d-779319f51257", 10); //kajetan
+perm.registerPlayer("51e240f9-ab10-4ea6-8a5d-779319f51257", 11); //kajetan
 perm.registerPlayer("9a3d753d-2283-4c21-98a3-313f52859fc6", 11); //eropster
+
 perm.registerPlayer("19a6ce0d-60dc-4f35-a79f-c3589e2f78a2", 2); //FinbarTheViking
 perm.registerPlayer("19a6ce0d-60dc-4f35-a79f-c3589e2f78a2", 3); //FinbarTheViking
 perm.registerPlayer("19a6ce0d-60dc-4f35-a79f-c3589e2f78a2", 5); //FinbarTheViking
@@ -282,42 +296,5 @@ perm.registerPlayer("fbb5daeb-ec55-4050-9bab-84674e179cae", 6); //PuffiBuildings
 perm.registerPlayer("f19d5b8a-7256-4646-aca0-34be478f9fb4", 3); //Tynechro
 perm.registerPlayer("f19d5b8a-7256-4646-aca0-34be478f9fb4", 6); //Tynechro
 perm.registerPlayer("0f1b685a-1efd-43f2-bc9c-5e07cf668d59", 6); //MOARSL
-msg("dev", "§bperms §rwurden geladen.");
-term();
-@wait
-wait();
-if(event == "custom_command") {
-	if(command == "perm") {
-		if(!perm.has(player, "isMod")) {
-			player.speak(player, "§6Commands", "§rDir fehlen die Berechtigungen dazu");
-			goto("wait");
-		}
-		if(list.getSize(args) != 3) {
-			player.speak(player, "§6Commands", "§r/perm ...");
-			msg(player, "§r - give <name> <builder/tp>");
-			goto("wait");
-		}
-		if(list.getIndex(args, 0) == "give") {
-			pname = list.getIndex(args, 1);
-			perm = list.getIndex(args, 2);
-			uuid = player.getUuid(pname);
-			if(uuid == null) {
-				player.speak(player, "§6Commands", "§rDieser Spieler existiert nicht");
-				goto("wait");
-			}
-			if(perm == "builder") {
-				perm.registerPlayer(uuid, 3);
-			} elseif(perm == "tp") {
-				perm.registerPlayer(uuid, 6);
-			} else {
-				player.speak(player, "§6Commands", "§rDiese Perm steht nicht zur Auswahl. Wähle zwischen 'builder' und 'tp'");
-				goto("wait");
-			}
-			player.speak(player, "§6Commands", "§rDone");
-			sendMail(player_name, "marvinius", concat("Perm Request: ", pname, " / ", perm));
-			goto("wait");
-		}
-	}
-	goto("wait");
-}
-goto("wait");
+
+msg("dev", "§bPermissions §rwurden eingelesen");

+ 0 - 8
test.txt

@@ -1,8 +0,0 @@
-/*event.load("player_logout");
-script = script.get("scripts/test.txt");
-script.join(script, read.player("FinbarTheViking"));
-
-@wait
-wait();
-msg("dev", event);
-goto("wait");*/

+ 0 - 0
test2.txt


+ 67 - 0
utils/u_perms.txt

@@ -0,0 +1,67 @@
+function givePerm(player_id, perm_id) {
+	givePermStatement = databank.prepare("INSERT INTO playerperms (player_id, perm_id) VALUES (?,?);");
+	databank.setInt(givePermStatement, 1, player_id);
+	databank.setInt(givePermStatement, 2, perm_id);
+	databank.workerExecute(givePermStatement);
+	perm.registerPlayer(player.getUuidFromID(player_id), perm_id);
+	return;
+}
+
+function removePerm(player_id, perm_id) {
+	removePermStatement = databank.prepare("DELETE FROM playerperms WHERE player_id = ? AND perm_id = ?;");
+	databank.setInt(removePermStatement, 1, player_id);
+	databank.setInt(removePermStatement, 2, perm_id);
+	databank.workerExecute(removePermStatement);
+	perm.unregisterPlayer(player.getUuidFromID(player_id), perm_id);
+	return;
+}
+
+function removeAllPerms(player_id) {
+	permslist = getPermsFromPlayer(player_id);
+	for(i = 0; i < list.getSize(permslist); i++) {
+		removePerm(player_id, list.getIndex(permslist, i));
+	}
+	return;
+}
+
+function isAPermGroup(permstring) {
+	if(list.contains($permgroups, text.toLowerCase(permstring))) {
+		return true;
+	}
+	return false;
+}
+
+function getPermsFromPlayer(player_id) {
+	list.new(permslist);
+	getPermsStatement = databank.prepare("SELECT perm_id FROM playerperms WHERE player_id = ?;");
+	databank.setInt(getPermsStatement, 1, player_id);
+	result = databank.execute(getPermsStatement);
+	while(databank.next(result)) {
+		list.add(permslist, databank.getInt(result, 1));
+	}
+	databank.close(result);
+	databank.close(getPermsStatement);
+	return permslist;
+}
+
+function hasPermAlready(player_id, perm_id) {
+	permslist = getPermsFromPlayer(player_id);
+	if(list.contains(permslist, perm_id)) {
+		return true;
+	} else {
+		return false;
+	}
+}
+
+function registerAllPerms() {
+	registerAllPermsStatement = databank.prepare("SELECT * FROM playerperms;");
+	result = databank.execute(registerAllPermsStatement);
+	while(databank.next(result)) {
+		player_id = databank.getInt(result, 1);
+		perm_id = databank.getInt(result, 2);
+		perm.registerPlayer(player.getUuidFromID(player_id), perm_id);
+	}
+	databank.close(result);
+	databank.close(registerAllPermsStatement);
+	return;
+}