Browse Source

halma map 2, voxel performance

Marvin Löschenkohl 4 năm trước cách đây
mục cha
commit
2b1e9ecc6d

+ 6 - 3
gildenpvp/gpvp.txt

@@ -36,6 +36,8 @@ DB-Table guild_reward (monatsübersicht der täglichen belohnungen aller spieler
  - day
  - opened		1 = kiste(geöffnet), null = nicht geöffnet oder zukunft
  
+player_data
+ 
 gvar	gildencounter			<"SERVER"> <id>; forlaufende ID, Anzahl aller Gilden und Gruppen
 map		adcooldown				<player_id>, <time>; 180 Sekunden Cooldown für "ad"-Weltnachrichten
 map		bindingmenus			<player_id>, <inv>; Enthält die Hotkey-Invs zum Skills casten
@@ -95,9 +97,10 @@ gamesworld = world.get("games");
 gpvpworld_name = "gpvp_old";
 gpvpworld = world.get(gpvpworld_name);
 
-serverspawn = read.location(ggv("SERVER", "serverspawn")); //Hauptspawn
+config = getScriptVar("server_config");
+serverspawn = read.location(config.getString(config, "serverspawn", "games:0:0:0"));
+gildenspawnloc = read.location(config.getString(config, "gildenspawn", "games:0:0:0"));
 gildenvillagerloc = loc.new(gpvpworld, 960, 53, 918);
-gildenspawnloc = read.location(ggv("SERVER", "gildenspawn"));
 
 answer42loc = loc.new(gpvpworld, 1030, 37, 964);
 grabbyloc = loc.new(gpvpworld, 103, 110, 473);
@@ -2400,11 +2403,11 @@ if(command == "gilde") {
 		worldlist = players.toWorldList(gpvpworld);
 		for(i = 0; i < list.getSize(worldlist); i++) {
 			p = list.getIndex(worldlist, i);
+			player.clearInventory(p);
 			display.reset(p);
 			stacks.setActive(p, false);
 			entity.setName(p, player.getName(p));
 			teleportPlayer(p, serverspawn, true);
-			player.clearInventory(p);
 		}
 		
 		//Artefakt

+ 77 - 273
global/gamecenter.txt

@@ -10,293 +10,85 @@ event.load("player_logout");
 
 registerRanking("jumpranks");
 
-no_player_script = set.new();
-//set.add(no_player_script, buttonssign1);
-//set.add(no_player_script, buttonssign2);
-
 script_ids = map.new();
-list.new(script_players);
-list.new(script_paths);
+script_players = list.new();
+script_paths = list.new();
 gamesign_ground_block = set.new();
 block_click_catcher = set.new();
 
 gamesworld = world.get("games");
 survworld = world.get("overworld");
-serverspawn = read.location(ggv("SERVER", "serverspawn"));
-gamesspawnloc = read.location(ggv("SERVER", "gamesspawn"));
+config = getScriptVar("server_config");
+serverspawn = read.location(config.getString(config, "serverspawn", "games:0:0:0"));
+gamesspawnloc = read.location(config.getString(config, "gamesspawn", "games:0:0:0"));
 moveidfromworldspawn = event.addMoveData(loc.new(gamesworld, -406, 86, 98), loc.new(gamesworld, -402, 88, 99), 5, -1);
 sign_tag = block.getTag("minecraft:wall_signs");
 facing_property = block.getProperty("horizontal_facing");
 
-bwmapsign1 = loc.new(gamesworld, -423, 153, -78);
-bwmapsign2 = loc.new(gamesworld, -423, 153, -79);
-bwmapsign3 = loc.new(gamesworld, -423, 153, -80);
-bwmapsign4 = loc.new(gamesworld, -423, 152, -78);
-bwmapsign5 = loc.new(gamesworld, -423, 152, -79);
-bwmapsign6 = loc.new(gamesworld, -423, 152, -80);
-bwmapsign7 = loc.new(gamesworld, -423, 151, -78);
-letterssign1 = loc.new(gamesworld, -396, 158, -63);
-letterssign2 = loc.new(gamesworld, -396, 158, -62);
-letterssign3 = loc.new(gamesworld, -396, 158, -61);
-maednsign1 = loc.new(gamesworld, -401, 157, -72);
-sfsign1 = loc.new(gamesworld, -398, 158, -47);
-sfsign2 = loc.new(gamesworld, -398, 157, -47);
-sfsign3 = loc.new(gamesworld, -399, 158, -47);
-rmmaploc1 = loc.new(gamesworld, -396, 158, -57);
-rmmaploc2 = loc.new(gamesworld, -396, 158, -56);
-rmmaploc3 = loc.new(gamesworld, -396, 158, -55);
-rmmaploc4 = loc.new(gamesworld, -396, 157, -57);
-jrmap = loc.new(gamesworld, -413, 158, -40);
-tjrsign = loc.new(gamesworld, -414, 158, -40);
-icejrsign = loc.new(gamesworld, -415, 158, -40);
-fastbridgesign1 = loc.new(gamesworld, -405, 158, -75);
-fastbridgesign2 = loc.new(gamesworld, -404, 158, -75);
-rebuildsign1 = loc.new(gamesworld, -423, 158, -42);
-rebuildsign2 = loc.new(gamesworld, -423, 158, -43);
-buttonssign1 = loc.new(gamesworld, -399, 158, -65);
-buttonssign2 = loc.new(gamesworld, -398, 158, -65);
-fleencatchsign1 = loc.new(gamesworld, -434, 158, -49);
-fleencatchsign2 = loc.new(gamesworld, -434, 158, -50);
-invertingsign1 = loc.new(gamesworld, -396, 158, -51);
-invertingsign2 = loc.new(gamesworld, -396, 158, -50);
-invertingsign3 = loc.new(gamesworld, -396, 158, -49);
-invertingclsign1 = loc.new(gamesworld, -396, 157, -51);
-invertingclsign2 = loc.new(gamesworld, -396, 157, -50);
-invertingclsign3 = loc.new(gamesworld, -396, 157, -49);
-spleefsign1 = loc.new(gamesworld, -419, 158, -40);
-spleefsign2 = loc.new(gamesworld, -420, 158, -40);
-spleefsign3 = loc.new(gamesworld, -421, 158, -40);
-knockfightsign1 = loc.new(gamesworld, -396, 157, -63);
-knockfightsign2 = loc.new(gamesworld, -396, 157, -62);
-knockfightsign3 = loc.new(gamesworld, -396, 157, -61);
-ctfsign1 = loc.new(gamesworld, 13, 75, 64);
-leapfrogsign1 = loc.new(gamesworld, -401, 158, -71);
-snowsign1 = loc.new(gamesworld, -401, 158, -72);
-parcoursign1 = loc.new(gamesworld, -413, 157, -40);
-halmasign1 = loc.new(gamesworld, -401, 157, -73);
-shoppingsign1 = loc.new(gamesworld, -411, 158, -44);
-
 gamesignsmap = map.new();
-map.add(gamesignsmap, "bwmapsign1", bwmapsign1);
-map.add(gamesignsmap, "bwmapsign2", bwmapsign2);
-map.add(gamesignsmap, "bwmapsign3", bwmapsign3);
-map.add(gamesignsmap, "bwmapsign4", bwmapsign4);
-map.add(gamesignsmap, "bwmapsign5", bwmapsign5);
-map.add(gamesignsmap, "bwmapsign6", bwmapsign6);
-map.add(gamesignsmap, "bwmapsign7", bwmapsign7);
-map.add(gamesignsmap, "letterssign1", letterssign1);
-map.add(gamesignsmap, "letterssign2", letterssign2);
-map.add(gamesignsmap, "letterssign3", letterssign3);
-map.add(gamesignsmap, "sfsign1", sfsign1);
-map.add(gamesignsmap, "sfsign2", sfsign2);
-map.add(gamesignsmap, "sfsign3", sfsign3);
-map.add(gamesignsmap, "rmmaploc1", rmmaploc1);
-map.add(gamesignsmap, "rmmaploc2", rmmaploc2);
-map.add(gamesignsmap, "rmmaploc3", rmmaploc3);
-map.add(gamesignsmap, "rmmaploc4", rmmaploc4);
-map.add(gamesignsmap, "jrmap", jrmap);
-map.add(gamesignsmap, "tjrsign", tjrsign);
-map.add(gamesignsmap, "icejrsign", icejrsign);
-map.add(gamesignsmap, "fastbridgesign1", fastbridgesign1);
-map.add(gamesignsmap, "fastbridgesign2", fastbridgesign2);
-map.add(gamesignsmap, "rebuildsign1", rebuildsign1);
-map.add(gamesignsmap, "rebuildsign2", rebuildsign2);
-map.add(gamesignsmap, "buttonssign1", buttonssign1);
-map.add(gamesignsmap, "buttonssign2", buttonssign2);
-map.add(gamesignsmap, "maednsign1", maednsign1);
-map.add(gamesignsmap, "fleencatchsign1", fleencatchsign1);
-map.add(gamesignsmap, "fleencatchsign2", fleencatchsign2);
-map.add(gamesignsmap, "invertingsign1", invertingsign1);
-map.add(gamesignsmap, "invertingsign2", invertingsign2);
-map.add(gamesignsmap, "invertingsign3", invertingsign3);
-map.add(gamesignsmap, "invertingclsign1", invertingclsign1);
-map.add(gamesignsmap, "invertingclsign2", invertingclsign2);
-map.add(gamesignsmap, "invertingclsign3", invertingclsign3);
-map.add(gamesignsmap, "spleefsign1", spleefsign1);
-map.add(gamesignsmap, "spleefsign2", spleefsign2);
-map.add(gamesignsmap, "spleefsign3", spleefsign3);
-map.add(gamesignsmap, "knockfightsign1", knockfightsign1);
-map.add(gamesignsmap, "knockfightsign2", knockfightsign2);
-map.add(gamesignsmap, "knockfightsign3", knockfightsign3);
-//map.add(gamesignsmap, "ctfsign1", ctfsign1);
-map.add(gamesignsmap, "leapfrogsign1", leapfrogsign1);
-map.add(gamesignsmap, "snowsign1", snowsign1);
-map.add(gamesignsmap, "parcoursign1", parcoursign1);
-map.add(gamesignsmap, "halmasign1", halmasign1);
-map.add(gamesignsmap, "shoppingsign1", shoppingsign1);
-
-setScriptVar("gamesigns", gamesignsmap);
+openedgames = map.new();
+gamepaths = map.new();
+gamemappaths = map.new();
+singleplayergames = set.new();
 
-map.new(openedgames);
-map.add(openedgames, bwmapsign1, true);
-map.add(openedgames, bwmapsign2, true);
-map.add(openedgames, bwmapsign3, true);
-map.add(openedgames, bwmapsign4, true);
-map.add(openedgames, bwmapsign5, true);
-map.add(openedgames, bwmapsign6, true);
-map.add(openedgames, bwmapsign7, true);
-map.add(openedgames, letterssign1, true);
-map.add(openedgames, letterssign2, true);
-map.add(openedgames, letterssign3, true);
-map.add(openedgames, sfsign1, true);
-map.add(openedgames, sfsign2, true);
-map.add(openedgames, sfsign3, true);
-map.add(openedgames, rmmaploc1, true);
-map.add(openedgames, rmmaploc2, true);
-map.add(openedgames, rmmaploc3, true);
-map.add(openedgames, rmmaploc4, true);
-map.add(openedgames, jrmap, true);
-map.add(openedgames, tjrsign, true);
-map.add(openedgames, icejrsign, true);
-map.add(openedgames, fastbridgesign1, true);
-map.add(openedgames, fastbridgesign2, true);
-map.add(openedgames, rebuildsign1, true);
-map.add(openedgames, rebuildsign2, true);
-map.add(openedgames, buttonssign1, true);
-map.add(openedgames, buttonssign2, true);
-map.add(openedgames, maednsign1, false);
-map.add(openedgames, fleencatchsign1, true);
-map.add(openedgames, fleencatchsign2, true);
-map.add(openedgames, invertingsign1, true);
-map.add(openedgames, invertingsign2, true);
-map.add(openedgames, invertingsign3, true);
-map.add(openedgames, invertingclsign1, true);
-map.add(openedgames, invertingclsign2, true);
-map.add(openedgames, invertingclsign3, true);
-map.add(openedgames, spleefsign1, true);
-map.add(openedgames, spleefsign2, true);
-map.add(openedgames, spleefsign3, true);
-map.add(openedgames, knockfightsign1, true);
-map.add(openedgames, knockfightsign2, true);
-map.add(openedgames, knockfightsign3, true);
-map.add(openedgames, ctfsign1, false);
-map.add(openedgames, leapfrogsign1, true);
-map.add(openedgames, snowsign1, true);
-map.add(openedgames, parcoursign1, true);
-map.add(openedgames, halmasign1, true);
-map.add(openedgames, shoppingsign1, true);
+addGameSign("bwmapsign1", true, loc.new(gamesworld, -423, 153, -78), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap1", false);
+addGameSign("bwmapsign2", true, loc.new(gamesworld, -423, 153, -79), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap2", false);
+addGameSign("bwmapsign3", true, loc.new(gamesworld, -423, 153, -80), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap3", false);
+addGameSign("bwmapsign4", true, loc.new(gamesworld, -423, 152, -78), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap4", false);
+addGameSign("bwmapsign5", true, loc.new(gamesworld, -423, 152, -79), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap5", false);
+addGameSign("bwmapsign6", true, loc.new(gamesworld, -423, 152, -80), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap6", false);
+addGameSign("bwmapsign7", true, loc.new(gamesworld, -423, 151, -78), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap6", false);
+addGameSign("letterssign1", true, loc.new(gamesworld,-396, 158, -63), "minigames/letters/letters", "minigames/letters/region_lettersmap1", true);
+addGameSign("letterssign2", true, loc.new(gamesworld,-396, 158, -62), "minigames/letters/letters", "minigames/letters/region_lettersmap2", true);
+addGameSign("letterssign3", true, loc.new(gamesworld,-396, 158, -61), "minigames/letters/letters", "minigames/letters/region_lettersmap3", true);
+addGameSign("rmmaploc1", true, loc.new(gamesworld, -396, 158, -57), "minigames/ragemode/ragemode", "minigames/ragemode/region_rmmap1", false);
+addGameSign("rmmaploc2", true, loc.new(gamesworld, -396, 158, -56), "minigames/ragemode/ragemode", "minigames/ragemode/region_rmmap2", false);
+addGameSign("rmmaploc3", true, loc.new(gamesworld, -396, 158, -55), "minigames/ragemode/ragemode", "minigames/ragemode/region_rmmap3", false);
+addGameSign("rmmaploc4", true, loc.new(gamesworld, -396, 157, -57), "minigames/ragemode/ragemode", "minigames/ragemode/region_rmmap4", false);
+addGameSign("rmmaploc4", true, loc.new(gamesworld, -396, 157, -57), "minigames/ragemode/ragemode", "minigames/ragemode/region_rmmap4", false);
+addGameSign("sfsign1", true, loc.new(gamesworld, -398, 158, -47), "minigames/sammelfieber/sammelfieber", "minigames/sammelfieber/sfmap1", true);
+addGameSign("sfsign2", true, loc.new(gamesworld, -398, 157, -47), "minigames/sammelfieber/sammelfieber", "minigames/sammelfieber/sfmap2", true);
+addGameSign("sfsign3", true, loc.new(gamesworld, -399, 158, -47), "minigames/sammelfieber/sammelfieber", "minigames/sammelfieber/sfmap3", false);
+addGameSign("buttonssign1", false, loc.new(gamesworld, -399, 158, -65), "minigames/buttons/buttons", "minigames/buttons/buttonsmap1", true);
+addGameSign("buttonssign2", false, loc.new(gamesworld, -398, 158, -65), "minigames/buttons/buttons", "minigames/buttons/buttonsmap2", true);
+addGameSign("knockfightsign1", true, loc.new(gamesworld, -396, 157, -63), "minigames/knockfight/knockfight", "minigames/knockfight/knockmap1", false);
+addGameSign("knockfightsign2", true, loc.new(gamesworld, -396, 157, -62), "minigames/knockfight/knockfight", "minigames/knockfight/knockmap2", false);
+addGameSign("knockfightsign3", true, loc.new(gamesworld, -396, 157, -61), "minigames/knockfight/knockfight", "minigames/knockfight/knockmap3", false);
+addGameSign("invertingsign1", true, loc.new(gamesworld, -396, 158, -51), "minigames/inverting/inverting", "minigames/inverting/invertingmap1", true);
+addGameSign("invertingsign2", true, loc.new(gamesworld, -396, 158, -50), "minigames/inverting/inverting", "minigames/inverting/invertingmap2", true);
+addGameSign("invertingsign3", true, loc.new(gamesworld, -396, 158, -49), "minigames/inverting/inverting", "minigames/inverting/invertingmap3", true);
+addGameSign("invertingclsign1", true, loc.new(gamesworld, -396, 157, -51), "minigames/inverting/inverting", "minigames/inverting/invertingclmap1", true);
+addGameSign("invertingclsign2", true, loc.new(gamesworld, -396, 157, -50), "minigames/inverting/inverting", "minigames/inverting/invertingclmap2", true);
+addGameSign("invertingclsign3", true, loc.new(gamesworld, -396, 157, -49), "minigames/inverting/inverting", "minigames/inverting/invertingclmap3", true);
+addGameSign("spleefsign1", true, loc.new(gamesworld, -419, 158, -40), "minigames/spleef/spleef", "minigames/spleef/spleefmap1", false);
+addGameSign("spleefsign2", true, loc.new(gamesworld, -420, 158, -40), "minigames/spleef/spleef", "minigames/spleef/spleefmap2", false);
+addGameSign("spleefsign3", true, loc.new(gamesworld, -421, 158, -40), "minigames/spleef/spleef", "minigames/spleef/spleefmap3", false);
+addGameSign("maednsign1", false, loc.new(gamesworld, -401, 157, -72), "minigames/maedn/maedn", "minigames/maedn/maednmap1", false);
+//addGameSign("ctfsign1", false, loc.new(gamesworld, 13, 75, 64), "minigames/capturetheflag/capturetheflag", "minigames/capturetheflag/ctfmap1", false);
+addGameSign("jrmap", true, loc.new(gamesworld, -413, 158, -40), "minigames/jumpnrun/jumpnrun", "minigames/jumpnrun/jumpnrun", true);
+addGameSign("tjrsign", true, loc.new(gamesworld, -414, 158, -40), "minigames/jumpnrun/todesjumpnrun", "minigames/jumpnrun/todesjumpnrun", true);
+addGameSign("icejrsign", true, loc.new(gamesworld, -415, 158, -40), "minigames/jumpnrun/icejumpnrun", "minigames/jumpnrun/icejumpnrun", true);
+addGameSign("fastbridgesign1", true, loc.new(gamesworld, -405, 158, -75), "minigames/fastbridge/fastbridge", "minigames/fastbridge/region_fastbridgemap1", false);
+addGameSign("fastbridgesign2", true, loc.new(gamesworld, -404, 158, -75), "minigames/fastbridge/fastbridge", "minigames/fastbridge/region_fastbridgemap2", false);
+addGameSign("rebuildsign1", true, loc.new(gamesworld, -423, 158, -42), "minigames/rebuild/rebuild", "minigames/rebuild/rebuildmap1", false);
+addGameSign("rebuildsign2", true, loc.new(gamesworld, -423, 158, -43), "minigames/rebuild/rebuild", "minigames/rebuild/rebuildmap2", false);
+addGameSign("fleencatchsign1", true, loc.new(gamesworld, -434, 158, -49), "minigames/fnc/fnc", "minigames/fnc/fncmap1", false);
+addGameSign("fleencatchsign2", true, loc.new(gamesworld, -434, 158, -50), "minigames/fnc/fnc", "minigames/fnc/fncmap2", false);
+addGameSign("leapfrogsign1", true, loc.new(gamesworld, -401, 158, -71), "minigames/leapfrog/leapfrog", "minigames/leapfrog/leapfrogmap1", true);
+addGameSign("parcoursign1", true, loc.new(gamesworld, -413, 157, -40), "minigames/parcour/parcour", "minigames/parcour/parcour_map1", true);
+addGameSign("snowsign1", true, loc.new(gamesworld, -401, 158, -72), "minigames/snowgame/snowgame", "minigames/snowgame/region_snowmap1", true);
+addGameSign("halmasign1", true, loc.new(gamesworld, -401, 157, -73), "minigames/halma/halma", "minigames/halma/halma_map1", true);
+addGameSign("shoppingsign1", true, loc.new(gamesworld, -411, 158, -44), "/shoppingchaos/shoppingchaos", "minigames/shoppingchaos/shopping_map1", true);
 
-map.new(gamepaths);
-map.add(gamepaths, bwmapsign1, "minigames/bedwars/bedwars");
-map.add(gamepaths, bwmapsign2, "minigames/bedwars/bedwars");
-map.add(gamepaths, bwmapsign3, "minigames/bedwars/bedwars");
-map.add(gamepaths, bwmapsign4, "minigames/bedwars/bedwars");
-map.add(gamepaths, bwmapsign5, "minigames/bedwars/bedwars");
-map.add(gamepaths, bwmapsign6, "minigames/bedwars/bedwars");
-map.add(gamepaths, bwmapsign7, "minigames/bedwars/bedwars");
-map.add(gamepaths, letterssign1, "minigames/letters/letters");
-map.add(gamepaths, letterssign2, "minigames/letters/letters");
-map.add(gamepaths, letterssign3, "minigames/letters/letters");
-map.add(gamepaths, sfsign1, "minigames/sammelfieber/sammelfieber");
-map.add(gamepaths, sfsign2, "minigames/sammelfieber/sammelfieber");
-map.add(gamepaths, sfsign3, "minigames/sammelfieber/sammelfieber");
-map.add(gamepaths, rmmaploc1, "minigames/ragemode/ragemode");
-map.add(gamepaths, rmmaploc2, "minigames/ragemode/ragemode");
-map.add(gamepaths, rmmaploc3, "minigames/ragemode/ragemode");
-map.add(gamepaths, rmmaploc4, "minigames/ragemode/ragemode");
-map.add(gamepaths, jrmap, "minigames/jumpnrun/jumpnrun");
-map.add(gamepaths, tjrsign, "minigames/jumpnrun/todesjumpnrun");
-map.add(gamepaths, icejrsign, "minigames/jumpnrun/icejumpnrun");
-map.add(gamepaths, fastbridgesign1, "minigames/fastbridge/fastbridge");
-map.add(gamepaths, fastbridgesign2, "minigames/fastbridge/fastbridge");
-map.add(gamepaths, rebuildsign1, "minigames/rebuild/rebuild");
-map.add(gamepaths, rebuildsign2, "minigames/rebuild/rebuild");
-map.add(gamepaths, buttonssign1, "minigames/buttons/buttons");
-map.add(gamepaths, buttonssign2, "minigames/buttons/buttons");
-map.add(gamepaths, maednsign1, "minigames/maedn/maedn");
-map.add(gamepaths, fleencatchsign1, "minigames/fnc/fnc");
-map.add(gamepaths, fleencatchsign2, "minigames/fnc/fnc");
-map.add(gamepaths, invertingsign1, "minigames/inverting/inverting");
-map.add(gamepaths, invertingsign2, "minigames/inverting/inverting");
-map.add(gamepaths, invertingsign3, "minigames/inverting/inverting");
-map.add(gamepaths, invertingclsign1, "minigames/inverting/inverting");
-map.add(gamepaths, invertingclsign2, "minigames/inverting/inverting");
-map.add(gamepaths, invertingclsign3, "minigames/inverting/inverting");
-map.add(gamepaths, spleefsign1, "minigames/spleef/spleef");
-map.add(gamepaths, spleefsign2, "minigames/spleef/spleef");
-map.add(gamepaths, spleefsign3, "minigames/spleef/spleef");
-map.add(gamepaths, knockfightsign1, "minigames/knockfight/knockfight");
-map.add(gamepaths, knockfightsign2, "minigames/knockfight/knockfight");
-map.add(gamepaths, knockfightsign3, "minigames/knockfight/knockfight");
-//map.add(gamepaths, ctfsign1, "minigames/capturetheflag/capturetheflag");
-map.add(gamepaths, leapfrogsign1, "minigames/leapfrog/leapfrog");
-map.add(gamepaths, snowsign1, "minigames/snowgame/snowgame");
-map.add(gamepaths, parcoursign1, "minigames/parcour/parcour");
-map.add(gamepaths, halmasign1, "minigames/halma/halma");
-map.add(gamepaths, shoppingsign1, "minigames/shoppingchaos/shoppingchaos");
-
-map.new(gamemappaths);
-map.add(gamemappaths, bwmapsign1, "minigames/bedwars/region_bwmap1");
-map.add(gamemappaths, bwmapsign2, "minigames/bedwars/region_bwmap2");
-map.add(gamemappaths, bwmapsign3, "minigames/bedwars/region_bwmap3");
-map.add(gamemappaths, bwmapsign4, "minigames/bedwars/region_bwmap4");
-map.add(gamemappaths, bwmapsign5, "minigames/bedwars/region_bwmap5");
-map.add(gamemappaths, bwmapsign6, "minigames/bedwars/region_bwmap6");
-map.add(gamemappaths, bwmapsign7, "minigames/bedwars/region_bwmap7");
-map.add(gamemappaths, letterssign1, "minigames/letters/region_lettersmap1");
-map.add(gamemappaths, letterssign2, "minigames/letters/region_lettersmap2");
-map.add(gamemappaths, letterssign3, "minigames/letters/region_lettersmap3");
-map.add(gamemappaths, sfsign1, "minigames/sammelfieber/sfmap1");
-map.add(gamemappaths, sfsign2, "minigames/sammelfieber/sfmap2");
-map.add(gamemappaths, sfsign3, "minigames/sammelfieber/sfmap3");
-map.add(gamemappaths, rmmaploc1, "minigames/ragemode/region_rmmap1");
-map.add(gamemappaths, rmmaploc2, "minigames/ragemode/region_rmmap2");
-map.add(gamemappaths, rmmaploc3, "minigames/ragemode/region_rmmap3");
-map.add(gamemappaths, rmmaploc4, "minigames/ragemode/region_rmmap4");
-map.add(gamemappaths, jrmap, "minigames/jumpnrun/jumpnrun");
-map.add(gamemappaths, tjrsign, "minigames/jumpnrun/todesjumpnrun");
-map.add(gamemappaths, icejrsign, "minigames/jumpnrun/icejumpnrun");
-map.add(gamemappaths, fastbridgesign1, "minigames/fastbridge/region_fastbridgemap1");
-map.add(gamemappaths, fastbridgesign2, "minigames/fastbridge/region_fastbridgemap2");
-map.add(gamemappaths, rebuildsign1, "minigames/rebuild/rebuildmap1");
-map.add(gamemappaths, rebuildsign2, "minigames/rebuild/rebuildmap2");
-map.add(gamemappaths, buttonssign1, "minigames/buttons/buttonsmap1");
-map.add(gamemappaths, buttonssign2, "minigames/buttons/buttonsmap2");
-map.add(gamemappaths, maednsign1, "minigames/maedn/maednmap1");
-map.add(gamemappaths, fleencatchsign1, "minigames/fnc/fncmap1");
-map.add(gamemappaths, fleencatchsign2, "minigames/fnc/fncmap2");
-map.add(gamemappaths, invertingsign1, "minigames/inverting/invertingmap1");
-map.add(gamemappaths, invertingsign2, "minigames/inverting/invertingmap2");
-map.add(gamemappaths, invertingsign3, "minigames/inverting/invertingmap3");
-map.add(gamemappaths, invertingclsign1, "minigames/inverting/invertingclmap1");
-map.add(gamemappaths, invertingclsign2, "minigames/inverting/invertingclmap2");
-map.add(gamemappaths, invertingclsign3, "minigames/inverting/invertingclmap3");
-map.add(gamemappaths, spleefsign1, "minigames/spleef/spleefmap1");
-map.add(gamemappaths, spleefsign2, "minigames/spleef/spleefmap2");
-map.add(gamemappaths, spleefsign3, "minigames/spleef/spleefmap3");
-map.add(gamemappaths, knockfightsign1, "minigames/knockfight/knockmap1");
-map.add(gamemappaths, knockfightsign2, "minigames/knockfight/knockmap2");
-map.add(gamemappaths, knockfightsign3, "minigames/knockfight/knockmap3");
-//map.add(gamemappaths, ctfsign1, "minigames/capturetheflag/ctfmap1");
-map.add(gamemappaths, leapfrogsign1, "minigames/leapfrog/leapfrogmap1");
-map.add(gamemappaths, snowsign1, "minigames/snowgame/region_snowmap1");
-map.add(gamemappaths, parcoursign1, "minigames/parcour/parcour_map1");
-map.add(gamemappaths, halmasign1, "minigames/halma/halma_map1");
-map.add(gamemappaths, shoppingsign1, "minigames/shoppingchaos/shopping_map1");
+no_player_script = set.new();
+set.add(no_player_script, loc.new(gamesworld, -399, 158, -65)); //buttonssign1
+//set.add(no_player_script, buttonssign2);
 
-set.new(singleplayergames);
-set.add(singleplayergames, letterssign1);
-set.add(singleplayergames, letterssign2);
-set.add(singleplayergames, letterssign3);
-set.add(singleplayergames, leapfrogsign1);
-set.add(singleplayergames, invertingsign1);
-set.add(singleplayergames, invertingsign2);
-set.add(singleplayergames, invertingsign3);
-set.add(singleplayergames, knockfightsign1);
-set.add(singleplayergames, knockfightsign2);
-set.add(singleplayergames, knockfightsign3);
-set.add(singleplayergames, sfsign1);
-set.add(singleplayergames, sfsign2);
-set.add(singleplayergames, buttonssign1);
-set.add(singleplayergames, buttonssign2);
-set.add(singleplayergames, jrmap);
-set.add(singleplayergames, tjrsign);
-set.add(singleplayergames, icejrsign);
-set.add(singleplayergames, parcoursign1);
+setScriptVar("gamesigns", gamesignsmap);
 
-iterator = map.iterator(gamemappaths);
-while(hasNext(iterator)) {
-	entry = next(iterator);
+iter = map.iterator(gamemappaths);
+while(hasNext(iter)) {
+	entry = next(iter);
 	gamesignloc = map.getKey(entry);
 	facing = block.getState(gamesignloc, facing_property);
 	if(facing == "north") {
@@ -310,7 +102,7 @@ while(hasNext(iterator)) {
 	}
 	set.add(gamesign_ground_block, ground_block);
 	try {
-		if(map.get(openedgames, gamesignloc) == true) {
+		if(map.get(openedgames, gamesignloc)) {
 			block.setSign(gamesignloc, 3, "§2Bereit");
 		} else {
 			block.setSign(gamesignloc, 3, "§cGeschlossen");
@@ -420,9 +212,11 @@ if(set.contains(no_player_script, block_loc)) {
 		} else {
 			script = script.start(pfad, "utils/u_games", "utils/u_party", "utils/u_general");
 		}
+		map.add(script_ids, block_loc, script.getId(script));
 	} else {
 		script = script.getFromId(script_id);
 	}
+	script.setVar(script, "script_id", script_id);
 	//Den Spieler dem Script hinzufügen
 	scriptJoin(script, player);
 	goto("wait");
@@ -495,3 +289,13 @@ if(script == null) {
 	script.join(script, player);
 }
 goto("wait");
+
+function addGameSign(map_string, opened, sign_loc, core_path, map_path, singleplayer) {
+	map.add($gamesignsmap, map_string, sign_loc);
+	map.add($openedgames, sign_loc, opened);
+	map.add($gamepaths, sign_loc, core_path);
+	map.add($gamemappaths, sign_loc, map_path);
+	if(singleplayer) {
+		set.add($singleplayergames, sign_loc);
+	}
+}

+ 48 - 116
global/voxel.txt

@@ -26,6 +26,7 @@ if(item.getType(entity.getEquip(player, "hand")) == "km:plus_green") {
 goto("wait");
 
 @doshit
+starttime = time.getMillis();
 time = time.getMillis();
 loc = entity.getLocation(player);
 world = loc.getWorld(loc);
@@ -35,15 +36,17 @@ loc.setY(loc, loc.getCoord(loc, "by") + 1);
 loc.setZ(loc, loc.getCoord(loc, "bz"));
 list = list.new();
 
-radius = 3;
-for(y = -radius; y <= radius; y += 0.25) {
-	for(x = -radius; x <= radius; x += 0.25) {
+radius = 3.5;
+for(y = -radius; y <= radius; y += 0.5) {
+	for(x = -radius; x <= radius; x += 0.5) {
 		other_loc = loc.mod(loc, x, y, 0);
-		if(loc.distance(loc, other_loc) < radius - 0.5) {
+		if(loc.distance(loc, other_loc) < radius) {
 			list.add(list, other_loc);
 		}
 	}
 }
+msg("dev", "Kopfliste ", time.getMillis() - time, "ms");
+time = time.getMillis();
 
 yaw = loc.getYaw(loc);
 pitch = loc.getPitch(loc);
@@ -55,30 +58,31 @@ while(yaw >= 360) {
 }
 yaw = yaw * math.pi() / 180;
 pitch = pitch * math.pi() / 180;
-for(i = 0; i < list.getSize(list); i++) {
-	other_loc = list.getIndex(list, i);
-	x = loc.getX(other_loc) - loc.getX(loc);
-	y = loc.getY(other_loc) - loc.getY(loc);
-	z = loc.getZ(other_loc) - loc.getZ(loc);
-	vector = matrixMulVector(createRotationX(-pitch), x, y, z);
-	vector = matrixMulVector(createRotationY(-yaw), vector[0], vector[1], vector[2]);
-	list.setIndex(list, i, loc.mod(loc, vector[0], vector[1], vector[2]));
-	vector[0] += loc.getX(loc);
-	vector[1] += loc.getY(loc);
-	vector[2] += loc.getZ(loc);
-	look_loc = projectLook(look, world, vector);
-	if(look_loc == null) {
-		list.removeIndex(list, i);
-		i--;
-	} else {
-		list.setIndex(list, i, look_loc);
+matrix = matrix.newRotationY(-yaw);
+matrix = matrix.mul(matrix, matrix.newRotationX(-pitch));
+list2 = list.new();
+vector = vector.new(0, 0, 0);
+iter = list.iterator(list);
+while(hasNext(iter)) {
+	other_loc = next(iter);
+	vector.set(vector, loc.getX(other_loc) - loc.getX(loc), loc.getY(other_loc) - loc.getY(loc), loc.getZ(other_loc) - loc.getZ(loc));
+	matrix.mulVector(matrix, vector);
+	loc.set(other_loc, loc.getX(loc) + vector.getX(vector), loc.getY(loc) + vector.getY(vector), loc.getZ(loc) + vector.getZ(vector));
+	check = loc.trace(other_loc, look[0], look[1], look[2], 60, last);
+	if(check) {
+		list.add(list2, other_loc);
 	}
 }
+list = list2;
+msg("dev", "MatrixMul ", time.getMillis() - time, "ms");
+time = time.getMillis();
 
-for(i = 0; i < list.getSize(list); i++) {
-	set_loc = list.getIndex(list, i);
-	block.setState(set_loc, state, true);
+iter = list.iterator(list);
+while(hasNext(iter)) {
+	block.setState(next(iter), state, true);
 }
+msg("dev", "Setzen ", time.getMillis() - time, "ms");
+time = time.getMillis();
 
 lowest_x = 5000000;
 lowest_y = 5000000;
@@ -86,8 +90,9 @@ lowest_z = 5000000;
 highest_x = -5000000;
 highest_y = -5000000;
 highest_z = -5000000;
-for(i = 0; i < list.getSize(list); i++) {
-	set_loc = list.getIndex(list, i);
+iter = list.iterator(list);
+while(hasNext(iter)) {
+	set_loc = next(iter);
 	x = loc.getX(set_loc);
 	y = loc.getY(set_loc);
 	z = loc.getZ(set_loc);
@@ -104,96 +109,23 @@ lowest_z--;
 highest_x++;
 highest_y++;
 highest_z++;
-for(k = 0; k < 3; k++) {
-	for(x = lowest_x; x <= highest_x; x++) {
-		for(y = lowest_y; y <= highest_y; y++) {
-			for(z = lowest_z; z <= highest_z; z++) {
-				smooth_loc = loc.new(world, x, y, z);
-				//neighbours includes the original block
-				neighbours = 27 - block.countAir(smooth_loc);
-				if(neighbours <= 11) {
-					block.setState(smooth_loc, air_state, true);
-				} elseif(neighbours >= 16) {
-					block.setState(smooth_loc, stone_state, true);
-				}
-			}
-		}
-	}
-}
-msg("dev", "Fertig ", time.getMillis() - time, "ms");
-goto("wait");
-
-function isNeighbour(loc, x, y, z) {
-	if(block.isAir(loc.mod(loc, x, y, z))) {
-		return 0;
-	}
-	return 1;
-}
-
-function math.min(x, y) {
-	if(x < y) {
-		return x;
-	}
-	return y;
-}
-
-function math.max(x, y) {
-	if(x > y) {
-		return x;
-	}
-	return y;
-}
-
-function createRotationY(yaw) {
-	a = array.new(3, 3);
-	a[0, 0] = math.cos(yaw);
-	a[0, 1] = 0;
-	a[0, 2] = math.sin(yaw);
-	a[1, 0] = 0;
-	a[1, 1] = 1;
-	a[1, 2] = 0;
-	a[2, 0] = -math.sin(yaw);
-	a[2, 1] = 0;
-	a[2, 2] = math.cos(yaw);
-	return a;
-}
-
-function createRotationX(pitch) {
-	a = array.new(3, 3);
-	a[0, 0] = 1;
-	a[0, 1] = 0;
-	a[0, 2] = 0;
-	a[1, 0] = 0;
-	a[1, 1] = math.cos(pitch);
-	a[1, 2] = math.sin(pitch);
-	a[2, 0] = 0;
-	a[2, 1] = -math.sin(pitch);
-	a[2, 2] = math.cos(pitch);
-	return a;
-}
-
-function matrixMulVector(matrix, x, y, z) {
-	a = array.new(3);
-	a[0] = x * matrix[0, 0] + y * matrix[0, 1] + z * matrix[0, 2];
-	a[1] = x * matrix[1, 0] + y * matrix[1, 1] + z * matrix[1, 2];
-	a[2] = x * matrix[2, 0] + y * matrix[2, 1] + z * matrix[2, 2];
-	return a;
-}
+msg("dev", "MinMax ", time.getMillis() - time, "ms");
+time = time.getMillis();
 
-function projectLook(look, world, vector) {
-	loc = loc.new(world, vector[0], vector[1], vector[2]);
-	for(i = 0; i < 60; i++) {
-		if(!block.isAir(loc)) {
-			if($last) {
-				loc.addX(loc, -look[0]);
-				loc.addY(loc, -look[1]);
-				loc.addZ(loc, -look[2]);
-			}
-			return loc;
+for(k = 0; k < 5; k++) {
+	iter = loc.iterator(world, lowest_x, lowest_y, lowest_z, highest_x, highest_y, highest_z);
+	while(hasNext(iter)) {
+		smooth_loc = next(iter);
+		//neighbours includes the original block
+		neighbours = 19 - block.countAir(smooth_loc);
+		if(neighbours <= 8) {
+			block.setState(smooth_loc, air_state, true);
+		} elseif(neighbours >= 12) {
+			block.setState(smooth_loc, stone_state, true);
 		}
-		loc.addX(loc, look[0]);
-		loc.addY(loc, look[1]);
-		loc.addZ(loc, look[2]);
 	}
-	return null;
-}
+}
+msg("dev", "Smoothen ", time.getMillis() - time, "ms");
+msg("dev", "Gesamt ", time.getMillis() - starttime, "ms");
+msg("dev", "-------------------");
+goto("wait");

+ 19 - 19
minigames/buttons/buttons.txt

@@ -12,23 +12,8 @@ clicked = 0;
 checked = 0;
 tfn = 5; //timeForNext in sec
 factor = 0.985; //neuer tfn *= factor; Faktor, um den tfn vermindert wird
-
-player = script.getLeader();
-
-gamename = "§2Buttons";
-entity.teleport(player, startloc);
-display.reset(player);
-display.add(player, 1, gamename);
-display.add(player, 2, "Time for Click");
-display.add(player, 3, math.roundComma(tfn, 2));
-display.add(player, 4, "Punkte: ", text.number(clicked));
-entity.setHealth(player, 20);
-player.setHunger(player, 20);
-player.setSaturation(player, 5);
-player.speak(player, "§2Buttons", "§rKlicke den Knopf an, bevor die Zeit abläuft");
-player.clearInventory(player);
-
 sgoto(tfn * 20, "gameover");
+script_id = script.getId(script);
 
 @nextbutton
 while(toclick == lastclick) {
@@ -41,11 +26,26 @@ if(direction == "x") {
 	markedloc = loc.mod(toclick, 0, 0, number);
 	block.set(markedloc, markblock);
 }
-goto("wait");
-
 @wait
 wait();
-ignoreGoto(event);
+if(hasScriptId(player, script_id)) {
+	ignoreGoto(event);
+}
+goto("wait");
+
+@player_join
+gamename = "§2Buttons";
+entity.teleport(player, startloc);
+display.reset(player);
+display.add(player, 1, gamename);
+display.add(player, 2, "Time for Click");
+display.add(player, 3, math.roundComma(tfn, 2));
+display.add(player, 4, "Punkte: ", text.number(clicked));
+entity.setHealth(player, 20);
+player.setHunger(player, 20);
+player.setSaturation(player, 5);
+player.speak(player, "§2Buttons", "§rKlicke den Knopf an, bevor die Zeit abläuft");
+player.clearInventory(player);
 goto("wait");
 
 @block_click

+ 1 - 1
minigames/buttons/buttonsmap1.txt

@@ -27,4 +27,4 @@ westen  1  // -x
 
 //In welche Richtung schauen die Knöpfe?
 direction = "z"; 	//x oder z
-number = 1; 		//-1 oder 1
+number = 1; 		//-1 oder 1

+ 2 - 22
minigames/halma/halma.txt

@@ -7,6 +7,7 @@ gamename = "§eHalma";
 air_item_type = "minecraft:air";
 pling_sound = sound.get("minecraft:block.note_block.pling");
 sound_category_ambient = sound.getCategory("ambient");
+pointed_loc = loc.new(gamesworld, 0, 0, 0); //Default-Wert, um Error zu verhindern
 
 gosub("setstart");
 
@@ -326,28 +327,7 @@ function showstats(player, won) { //Player player, Boolean won
 	return;
 }
 
-
-//Startpos nördlichste Postition
-function generateField(startpos, ox, oz) {
-    base = startpos;
-    for(y = 0; y < 3; y++)
-    {
-        base -= oz;
-        for(x = 0; x < 2 + y; x++)
-        {
-            base += ox;
-            genField(base);
-        } 
-    }   
-    
-    base -= oz;
-    base -= 9 * x + ox;
-    
-    // weitere felder nach ähnlichem schema
-}
-
-function getPair(a, b)
-{
+function getPair(a, b) {
       c = array.new(2);
       c[0] = a;
       c[1] = b;

+ 145 - 150
minigames/halma/halma_map1.txt

@@ -5,31 +5,21 @@ mapname = "Sternenhalma";
 maxplayers = 3;
 minplayers = 2;
 
+ox = 2; //Differenz der Felder in x-Richtung
+oz = 3; //Differenz der Felder in z-Richtung
+
 //Mögliche Differenzen in x und z Richtung
 possible_move_differences = list.new();
-a = array.new(2);
-a[0] = 4;
-a[1] = 0;
-list.add(possible_move_differences, a);
-b = array.new(2);
-b[0] = 2;
-b[1] = 3;
-list.add(possible_move_differences, b);
+list.add(possible_move_differences, getPair(ox, oz));
+list.add(possible_move_differences, getPair(4, 0));
 //Ab hier hüpft die Spielfigur
 jumping_index = 2;
-c = array.new(2);
-c[0] = 4;
-c[1] = 6;
-list.add(possible_move_differences, c);
-d = array.new(2);
-d[0] = 8;
-d[1] = 0;
-list.add(possible_move_differences, d);
+list.add(possible_move_differences, getPair(2*ox, 2*oz));
+list.add(possible_move_differences, getPair(8, 0));
 
 gamesworld = world.get("games");
 lobbyspawnloc = loc.new(gamesworld, 1014, 82, 1032);
 spawn_loc = loc.new(gamesworld, 3974.5, 97.5, 2974.5);
-pointed_loc = loc.new(gamesworld, 3966, 96, 2962); //Default-Wert, um Error zu verhindern
 
 point_block = "minecraft:glowstone";
 basic_block = "minecraft:black_concrete";
@@ -58,108 +48,113 @@ map.add(colors_map, 0, "§c");
 map.add(colors_map, 1, "§t");
 map.add(colors_map, 2, "§a");
 
+north_loc = loc.new(gamesworld, 3974, 97, 2950); //nördlichster punkt
 red_start_locs = list.new();
-list.add(red_start_locs, loc.new(gamesworld, 3966, 97, 2962));
-list.add(red_start_locs, loc.new(gamesworld, 3970, 97, 2962));
-list.add(red_start_locs, loc.new(gamesworld, 3974, 97, 2962));
-list.add(red_start_locs, loc.new(gamesworld, 3978, 97, 2962));
-list.add(red_start_locs, loc.new(gamesworld, 3982, 97, 2962));
-list.add(red_start_locs, loc.new(gamesworld, 3968, 97, 2959));
-list.add(red_start_locs, loc.new(gamesworld, 3972, 97, 2959));
-list.add(red_start_locs, loc.new(gamesworld, 3976, 97, 2959));
-list.add(red_start_locs, loc.new(gamesworld, 3980, 97, 2959));
-list.add(red_start_locs, loc.new(gamesworld, 3970, 97, 2956));
-list.add(red_start_locs, loc.new(gamesworld, 3974, 97, 2956));
-list.add(red_start_locs, loc.new(gamesworld, 3978, 97, 2956));
-list.add(red_start_locs, loc.new(gamesworld, 3972, 97, 2953));
-list.add(red_start_locs, loc.new(gamesworld, 3976, 97, 2953));
-list.add(red_start_locs, loc.new(gamesworld, 3974, 97, 2950));
-
+list.add(red_start_locs, north_loc);
+list.add(red_start_locs, loc.mod(north_loc, -ox, 0, oz));
+list.add(red_start_locs, loc.mod(north_loc, ox, 0, oz));
+list.add(red_start_locs, loc.mod(north_loc, -2*ox, 0, 2*oz));
+list.add(red_start_locs, loc.mod(north_loc, 0, 0, 2*oz));
+list.add(red_start_locs, loc.mod(north_loc, 2*ox, 0, 2*oz));
+list.add(red_start_locs, loc.mod(north_loc, 3*ox, 0, 3*oz));
+list.add(red_start_locs, loc.mod(north_loc, -ox, 0, 3*oz));
+list.add(red_start_locs, loc.mod(north_loc, ox, 0, 3*oz));
+list.add(red_start_locs, loc.mod(north_loc, 3*ox, 0, 3*oz));
+list.add(red_start_locs, loc.mod(north_loc, -4*ox, 0, 4*oz));
+list.add(red_start_locs, loc.mod(north_loc, -2*ox, 0, 4*oz));
+list.add(red_start_locs, loc.mod(north_loc, 0, 0, 4*oz));
+list.add(red_start_locs, loc.mod(north_loc, 2*ox, 0, 4*oz));
+list.add(red_start_locs, loc.mod(north_loc, 4*ox, 0, 4*oz));
+
+south_loc =  loc.new(gamesworld, 3974, 97, 2998); //südlichster punkt
 red_aim_locs = list.new();
-list.add(red_aim_locs, loc.new(gamesworld, 3966, 97, 2986));
-list.add(red_aim_locs, loc.new(gamesworld, 3970, 97, 2986));
-list.add(red_aim_locs, loc.new(gamesworld, 3974, 97, 2986));
-list.add(red_aim_locs, loc.new(gamesworld, 3978, 97, 2986));
-list.add(red_aim_locs, loc.new(gamesworld, 3982, 97, 2986));
-list.add(red_aim_locs, loc.new(gamesworld, 3968, 97, 2989));
-list.add(red_aim_locs, loc.new(gamesworld, 3972, 97, 2989));
-list.add(red_aim_locs, loc.new(gamesworld, 3976, 97, 2989));
-list.add(red_aim_locs, loc.new(gamesworld, 3980, 97, 2989));
-list.add(red_aim_locs, loc.new(gamesworld, 3970, 97, 2992));
-list.add(red_aim_locs, loc.new(gamesworld, 3974, 97, 2992));
-list.add(red_aim_locs, loc.new(gamesworld, 3978, 97, 2992));
-list.add(red_aim_locs, loc.new(gamesworld, 3972, 97, 2995));
-list.add(red_aim_locs, loc.new(gamesworld, 3976, 97, 2995));
-list.add(red_aim_locs, loc.new(gamesworld, 3974, 97, 2998));
-
+list.add(red_aim_locs, south_loc);
+list.add(red_aim_locs, loc.mod(south_loc, -ox, 0, -oz));
+list.add(red_aim_locs, loc.mod(south_loc, ox, 0, -oz));
+list.add(red_aim_locs, loc.mod(south_loc, -2*ox, 0, -2*oz));
+list.add(red_aim_locs, loc.mod(south_loc, 0, 0, -2*oz));
+list.add(red_aim_locs, loc.mod(south_loc, 2*ox, 0, -2*oz));
+list.add(red_aim_locs, loc.mod(south_loc, 3*ox, 0, -3*oz));
+list.add(red_aim_locs, loc.mod(south_loc, -ox, 0, -3*oz));
+list.add(red_aim_locs, loc.mod(south_loc, ox, 0, -3*oz));
+list.add(red_aim_locs, loc.mod(south_loc, 3*ox, 0, -3*oz));
+list.add(red_aim_locs, loc.mod(south_loc, -4*ox, 0, -4*oz));
+list.add(red_aim_locs, loc.mod(south_loc, -2*ox, 0, -4*oz));
+list.add(red_aim_locs, loc.mod(south_loc, 0, 0, -4*oz));
+list.add(red_aim_locs, loc.mod(south_loc, 2*ox, 0, -4*oz));
+list.add(red_aim_locs, loc.mod(south_loc, 4*ox, 0, -4*oz));
+
+north_loc = loc.new(gamesworld, 3958, 97, 2974); //nördlichster punkt
 blue_start_locs = list.new();
-list.add(blue_start_locs, loc.new(gamesworld, 3950, 97, 2986));
-list.add(blue_start_locs, loc.new(gamesworld, 3954, 97, 2986));
-list.add(blue_start_locs, loc.new(gamesworld, 3958, 97, 2986));
-list.add(blue_start_locs, loc.new(gamesworld, 3962, 97, 2986));
-list.add(blue_start_locs, loc.new(gamesworld, 3966, 97, 2986));
-list.add(blue_start_locs, loc.new(gamesworld, 3952, 97, 2983));
-list.add(blue_start_locs, loc.new(gamesworld, 3956, 97, 2983));
-list.add(blue_start_locs, loc.new(gamesworld, 3960, 97, 2983));
-list.add(blue_start_locs, loc.new(gamesworld, 3964, 97, 2983));
-list.add(blue_start_locs, loc.new(gamesworld, 3954, 97, 2980));
-list.add(blue_start_locs, loc.new(gamesworld, 3958, 97, 2980));
-list.add(blue_start_locs, loc.new(gamesworld, 3962, 97, 2980));
-list.add(blue_start_locs, loc.new(gamesworld, 3956, 97, 2977));
-list.add(blue_start_locs, loc.new(gamesworld, 3960, 97, 2977));
-list.add(blue_start_locs, loc.new(gamesworld, 3958, 97, 2974));
-
+list.add(blue_start_locs, north_loc);
+list.add(blue_start_locs, loc.mod(north_loc, -ox, 0, oz));
+list.add(blue_start_locs, loc.mod(north_loc, ox, 0, oz));
+list.add(blue_start_locs, loc.mod(north_loc, -2*ox, 0, 2*oz));
+list.add(blue_start_locs, loc.mod(north_loc, 0, 0, 2*oz));
+list.add(blue_start_locs, loc.mod(north_loc, 2*ox, 0, 2*oz));
+list.add(blue_start_locs, loc.mod(north_loc, 3*ox, 0, 3*oz));
+list.add(blue_start_locs, loc.mod(north_loc, -ox, 0, 3*oz));
+list.add(blue_start_locs, loc.mod(north_loc, ox, 0, 3*oz));
+list.add(blue_start_locs, loc.mod(north_loc, 3*ox, 0, 3*oz));
+list.add(blue_start_locs, loc.mod(north_loc, -4*ox, 0, 4*oz));
+list.add(blue_start_locs, loc.mod(north_loc, -2*ox, 0, 4*oz));
+list.add(blue_start_locs, loc.mod(north_loc, 0, 0, 4*oz));
+list.add(blue_start_locs, loc.mod(north_loc, 2*ox, 0, 4*oz));
+list.add(blue_start_locs, loc.mod(north_loc, 4*ox, 0, 4*oz));
+
+south_loc =  loc.new(gamesworld, 3990, 97, 2974); //südlichster punkt
 blue_aim_locs = list.new();
-list.add(blue_aim_locs, loc.new(gamesworld, 3982, 97, 2962));
-list.add(blue_aim_locs, loc.new(gamesworld, 3986, 97, 2962));
-list.add(blue_aim_locs, loc.new(gamesworld, 3990, 97, 2962));
-list.add(blue_aim_locs, loc.new(gamesworld, 3994, 97, 2962));
-list.add(blue_aim_locs, loc.new(gamesworld, 3998, 97, 2962));
-list.add(blue_aim_locs, loc.new(gamesworld, 3984, 97, 2965));
-list.add(blue_aim_locs, loc.new(gamesworld, 3988, 97, 2965));
-list.add(blue_aim_locs, loc.new(gamesworld, 3992, 97, 2965));
-list.add(blue_aim_locs, loc.new(gamesworld, 3996, 97, 2965));
-list.add(blue_aim_locs, loc.new(gamesworld, 3986, 97, 2968));
-list.add(blue_aim_locs, loc.new(gamesworld, 3990, 97, 2968));
-list.add(blue_aim_locs, loc.new(gamesworld, 3994, 97, 2968));
-list.add(blue_aim_locs, loc.new(gamesworld, 3988, 97, 2971));
-list.add(blue_aim_locs, loc.new(gamesworld, 3992, 97, 2971));
-list.add(blue_aim_locs, loc.new(gamesworld, 3990, 97, 2974));
-
+list.add(blue_aim_locs, south_loc);
+list.add(blue_aim_locs, loc.mod(south_loc, -ox, 0, -oz));
+list.add(blue_aim_locs, loc.mod(south_loc, ox, 0, -oz));
+list.add(blue_aim_locs, loc.mod(south_loc, -2*ox, 0, -2*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, 0, 0, -2*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, 2*ox, 0, -2*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, 3*ox, 0, -3*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, -ox, 0, -3*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, ox, 0, -3*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, 3*ox, 0, -3*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, -4*ox, 0, -4*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, -2*ox, 0, -4*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, 0, 0, -4*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, 2*ox, 0, -4*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, 4*ox, 0, -4*oz));
+
+north_loc = loc.new(gamesworld, 3990, 97, 2974); //nördlichster punkt
 green_start_locs = list.new();
-list.add(green_start_locs, loc.new(gamesworld, 3982, 97, 2986));
-list.add(green_start_locs, loc.new(gamesworld, 3986, 97, 2986));
-list.add(green_start_locs, loc.new(gamesworld, 3990, 97, 2986));
-list.add(green_start_locs, loc.new(gamesworld, 3994, 97, 2986));
-list.add(green_start_locs, loc.new(gamesworld, 3998, 97, 2986));
-list.add(green_start_locs, loc.new(gamesworld, 3984, 97, 2983));
-list.add(green_start_locs, loc.new(gamesworld, 3988, 97, 2983));
-list.add(green_start_locs, loc.new(gamesworld, 3992, 97, 2983));
-list.add(green_start_locs, loc.new(gamesworld, 3996, 97, 2983));
-list.add(green_start_locs, loc.new(gamesworld, 3986, 97, 2980));
-list.add(green_start_locs, loc.new(gamesworld, 3990, 97, 2980));
-list.add(green_start_locs, loc.new(gamesworld, 3994, 97, 2980));
-list.add(green_start_locs, loc.new(gamesworld, 3988, 97, 2977));
-list.add(green_start_locs, loc.new(gamesworld, 3992, 97, 2977));
-list.add(green_start_locs, loc.new(gamesworld, 3990, 97, 2974));
-
+list.add(green_start_locs, north_loc);
+list.add(green_start_locs, loc.mod(north_loc, -ox, 0, oz));
+list.add(green_start_locs, loc.mod(north_loc, ox, 0, oz));
+list.add(green_start_locs, loc.mod(north_loc, -2*ox, 0, 2*oz));
+list.add(green_start_locs, loc.mod(north_loc, 0, 0, 2*oz));
+list.add(green_start_locs, loc.mod(north_loc, 2*ox, 0, 2*oz));
+list.add(green_start_locs, loc.mod(north_loc, 3*ox, 0, 3*oz));
+list.add(green_start_locs, loc.mod(north_loc, -ox, 0, 3*oz));
+list.add(green_start_locs, loc.mod(north_loc, ox, 0, 3*oz));
+list.add(green_start_locs, loc.mod(north_loc, 3*ox, 0, 3*oz));
+list.add(green_start_locs, loc.mod(north_loc, -4*ox, 0, 4*oz));
+list.add(green_start_locs, loc.mod(north_loc, -2*ox, 0, 4*oz));
+list.add(green_start_locs, loc.mod(north_loc, 0, 0, 4*oz));
+list.add(green_start_locs, loc.mod(north_loc, 2*ox, 0, 4*oz));
+list.add(green_start_locs, loc.mod(north_loc, 4*ox, 0, 4*oz));
+
+south_loc =  loc.new(gamesworld, 3958, 97, 2974); //südlichster punkt
 green_aim_locs = list.new();
-list.add(green_aim_locs, loc.new(gamesworld, 3950, 97, 2962));
-list.add(green_aim_locs, loc.new(gamesworld, 3954, 97, 2962));
-list.add(green_aim_locs, loc.new(gamesworld, 3958, 97, 2962));
-list.add(green_aim_locs, loc.new(gamesworld, 3962, 97, 2962));
-list.add(green_aim_locs, loc.new(gamesworld, 3966, 97, 2962));
-list.add(green_aim_locs, loc.new(gamesworld, 3952, 97, 2965));
-list.add(green_aim_locs, loc.new(gamesworld, 3956, 97, 2965));
-list.add(green_aim_locs, loc.new(gamesworld, 3960, 97, 2965));
-list.add(green_aim_locs, loc.new(gamesworld, 3964, 97, 2965));
-list.add(green_aim_locs, loc.new(gamesworld, 3954, 97, 2968));
-list.add(green_aim_locs, loc.new(gamesworld, 3958, 97, 2968));
-list.add(green_aim_locs, loc.new(gamesworld, 3962, 97, 2968));
-list.add(green_aim_locs, loc.new(gamesworld, 3956, 97, 2971));
-list.add(green_aim_locs, loc.new(gamesworld, 3960, 97, 2971));
-list.add(green_aim_locs, loc.new(gamesworld, 3958, 97, 2974));
-
+list.add(green_aim_locs, south_loc);
+list.add(green_aim_locs, loc.mod(south_loc, -ox, 0, -oz));
+list.add(green_aim_locs, loc.mod(south_loc, ox, 0, -oz));
+list.add(green_aim_locs, loc.mod(south_loc, -2*ox, 0, -2*oz));
+list.add(green_aim_locs, loc.mod(south_loc, 0, 0, -2*oz));
+list.add(green_aim_locs, loc.mod(south_loc, 2*ox, 0, -2*oz));
+list.add(green_aim_locs, loc.mod(south_loc, 3*ox, 0, -3*oz));
+list.add(green_aim_locs, loc.mod(south_loc, -ox, 0, -3*oz));
+list.add(green_aim_locs, loc.mod(south_loc, ox, 0, -3*oz));
+list.add(green_aim_locs, loc.mod(south_loc, 3*ox, 0, -3*oz));
+list.add(green_aim_locs, loc.mod(south_loc, -4*ox, 0, -4*oz));
+list.add(green_aim_locs, loc.mod(south_loc, -2*ox, 0, -4*oz));
+list.add(green_aim_locs, loc.mod(south_loc, 0, 0, -4*oz));
+list.add(green_aim_locs, loc.mod(south_loc, 2*ox, 0, -4*oz));
+list.add(green_aim_locs, loc.mod(south_loc, 4*ox, 0, -4*oz));
 start_locs = map.new();
 map.add(start_locs, 0, red_start_locs);
 map.add(start_locs, 1, blue_start_locs);
@@ -170,41 +165,41 @@ map.add(aim_locs, 0, red_aim_locs);
 map.add(aim_locs, 1, blue_aim_locs);
 map.add(aim_locs, 2, green_aim_locs);
 
+loc = loc.new(gamesworld, 3968, 97, 2965); //von den nördlichsten punkten der westlichste
 center_locs = list.new();
-list.add(center_locs, loc.new(gamesworld, 3968, 97, 2983));
-list.add(center_locs, loc.new(gamesworld, 3972, 97, 2983));
-list.add(center_locs, loc.new(gamesworld, 3976, 97, 2983));
-list.add(center_locs, loc.new(gamesworld, 3980, 97, 2983));
-list.add(center_locs, loc.new(gamesworld, 3966, 97, 2980));
-list.add(center_locs, loc.new(gamesworld, 3970, 97, 2980));
-list.add(center_locs, loc.new(gamesworld, 3974, 97, 2980));
-list.add(center_locs, loc.new(gamesworld, 3978, 97, 2980));
-list.add(center_locs, loc.new(gamesworld, 3982, 97, 2980));
-list.add(center_locs, loc.new(gamesworld, 3964, 97, 2977));
-list.add(center_locs, loc.new(gamesworld, 3968, 97, 2977));
-list.add(center_locs, loc.new(gamesworld, 3972, 97, 2977));
-list.add(center_locs, loc.new(gamesworld, 3976, 97, 2977));
-list.add(center_locs, loc.new(gamesworld, 3980, 97, 2977));
-list.add(center_locs, loc.new(gamesworld, 3984, 97, 2977));
-list.add(center_locs, loc.new(gamesworld, 3962, 97, 2974));
-list.add(center_locs, loc.new(gamesworld, 3966, 97, 2974));
-list.add(center_locs, loc.new(gamesworld, 3970, 97, 2974));
-list.add(center_locs, loc.new(gamesworld, 3974, 97, 2974));
-list.add(center_locs, loc.new(gamesworld, 3978, 97, 2974));
-list.add(center_locs, loc.new(gamesworld, 3982, 97, 2974));
-list.add(center_locs, loc.new(gamesworld, 3986, 97, 2974));
-list.add(center_locs, loc.new(gamesworld, 3964, 97, 2971));
-list.add(center_locs, loc.new(gamesworld, 3968, 97, 2971));
-list.add(center_locs, loc.new(gamesworld, 3972, 97, 2971));
-list.add(center_locs, loc.new(gamesworld, 3976, 97, 2971));
-list.add(center_locs, loc.new(gamesworld, 3980, 97, 2971));
-list.add(center_locs, loc.new(gamesworld, 3984, 97, 2971));
-list.add(center_locs, loc.new(gamesworld, 3966, 97, 2968));
-list.add(center_locs, loc.new(gamesworld, 3970, 97, 2968));
-list.add(center_locs, loc.new(gamesworld, 3974, 97, 2968));
-list.add(center_locs, loc.new(gamesworld, 3978, 97, 2968));
-list.add(center_locs, loc.new(gamesworld, 3982, 97, 2968));
-list.add(center_locs, loc.new(gamesworld, 3968, 97, 2965));
-list.add(center_locs, loc.new(gamesworld, 3972, 97, 2965));
-list.add(center_locs, loc.new(gamesworld, 3976, 97, 2965));
-list.add(center_locs, loc.new(gamesworld, 3980, 97, 2965));
+list.add(center_locs, loc.mod(loc, 2*ox, 0, 0));
+list.add(center_locs, loc.mod(loc, 4*ox, 0, 0));
+list.add(center_locs, loc.mod(loc, 6*ox, 0, 0));
+list.add(center_locs, loc.mod(loc, -ox, 0, oz));
+list.add(center_locs, loc.mod(loc, ox, 0, oz));
+list.add(center_locs, loc.mod(loc, 3*ox, 0, oz));
+list.add(center_locs, loc.mod(loc, 5*ox, 0, oz));
+list.add(center_locs, loc.mod(loc, 7*ox, 0, oz));
+list.add(center_locs, loc.mod(loc, -2*ox, 0, 2*oz));
+list.add(center_locs, loc.mod(loc, 0, 0, 2*oz));
+list.add(center_locs, loc.mod(loc, 2*ox, 0, 2*oz));
+list.add(center_locs, loc.mod(loc, 4*ox, 0, 2*oz));
+list.add(center_locs, loc.mod(loc, 6*ox, 0, 2*oz));
+list.add(center_locs, loc.mod(loc, 8*ox, 0, 2*oz));
+list.add(center_locs, loc.mod(loc, -3*ox, 0, 3*oz));
+list.add(center_locs, loc.mod(loc, -ox, 0, 3*oz));
+list.add(center_locs, loc.mod(loc, ox, 0, 3*oz));
+list.add(center_locs, loc.mod(loc, 3*ox, 0, 3*oz));
+list.add(center_locs, loc.mod(loc, 5*ox, 0, 3*oz));
+list.add(center_locs, loc.mod(loc, 7*ox, 0, 3*oz));
+list.add(center_locs, loc.mod(loc, 9*ox, 0, 3*oz));
+list.add(center_locs, loc.mod(loc, -2*ox, 0, 4*oz));
+list.add(center_locs, loc.mod(loc, 0, 0, 4*oz));
+list.add(center_locs, loc.mod(loc, 2*ox, 0, 4*oz));
+list.add(center_locs, loc.mod(loc, 4*ox, 0, 4*oz));
+list.add(center_locs, loc.mod(loc, 6*ox, 0, 4*oz));
+list.add(center_locs, loc.mod(loc, 8*ox, 0, 4*oz));
+list.add(center_locs, loc.mod(loc, -ox, 0, 5*oz));
+list.add(center_locs, loc.mod(loc, ox, 0, 5*oz));
+list.add(center_locs, loc.mod(loc, 3*ox, 0, 5*oz));
+list.add(center_locs, loc.mod(loc, 5*ox, 0, 5*oz));
+list.add(center_locs, loc.mod(loc, 7*ox, 0, 5*oz));
+list.add(center_locs, loc.mod(loc, 0, 0, 6*oz));
+list.add(center_locs, loc.mod(loc, 2*ox, 0, 6*oz));
+list.add(center_locs, loc.mod(loc, 4*ox, 0, 6*oz));
+list.add(center_locs, loc.mod(loc, 6*ox, 0, 6*oz));

+ 142 - 138
minigames/halma/halma_map2.txt

@@ -5,8 +5,8 @@ mapname = "Sternenhalma";
 maxplayers = 3;
 minplayers = 2;
 
-ox = 2; //Differenz der Felder in x-Richtung
-oz = 3; //Differenz der Felder in z-Richtung
+ox = 1; //Differenz der Felder in x-Richtung
+oz = 2; //Differenz der Felder in z-Richtung
 
 //Mögliche Differenzen in x und z Richtung
 possible_move_differences = list.new();
@@ -18,9 +18,8 @@ list.add(possible_move_differences, getPair(2*ox, 2*oz));
 list.add(possible_move_differences, getPair(8, 0));
 
 gamesworld = world.get("games");
-lobbyspawnloc = loc.new(gamesworld, 1013, 82, 1031);
-spawn_loc = loc.new(gamesworld, 3974.5, 97.5, 2974.5);
-pointed_loc = loc.new(gamesworld, 3966, 96, 2962); //Default-Wert, um Error zu verhindern
+lobbyspawnloc = loc.new(gamesworld, 1013, 82, 1049);
+spawn_loc = loc.new(gamesworld, 4514.5, 97.5, 3019.5);
 
 point_block = "minecraft:glowstone";
 basic_block = "minecraft:black_concrete";
@@ -49,108 +48,113 @@ map.add(colors_map, 0, "§c");
 map.add(colors_map, 1, "§t");
 map.add(colors_map, 2, "§a");
 
+north_loc = loc.new(gamesworld, 4514, 97, 3003); //nördlichster punkt
 red_start_locs = list.new();
-list.add(red_start_locs, loc.new(gamesworld, 3966, 97, 2962));
-list.add(red_start_locs, loc.new(gamesworld, 3970, 97, 2962));
-list.add(red_start_locs, loc.new(gamesworld, 3974, 97, 2962));
-list.add(red_start_locs, loc.new(gamesworld, 3978, 97, 2962));
-list.add(red_start_locs, loc.new(gamesworld, 3982, 97, 2962));
-list.add(red_start_locs, loc.new(gamesworld, 3968, 97, 2959));
-list.add(red_start_locs, loc.new(gamesworld, 3972, 97, 2959));
-list.add(red_start_locs, loc.new(gamesworld, 3976, 97, 2959));
-list.add(red_start_locs, loc.new(gamesworld, 3980, 97, 2959));
-list.add(red_start_locs, loc.new(gamesworld, 3970, 97, 2956));
-list.add(red_start_locs, loc.new(gamesworld, 3974, 97, 2956));
-list.add(red_start_locs, loc.new(gamesworld, 3978, 97, 2956));
-list.add(red_start_locs, loc.new(gamesworld, 3972, 97, 2953));
-list.add(red_start_locs, loc.new(gamesworld, 3976, 97, 2953));
-list.add(red_start_locs, loc.new(gamesworld, 3974, 97, 2950));
-
+list.add(red_start_locs, north_loc);
+list.add(red_start_locs, loc.mod(north_loc, -ox, 0, oz));
+list.add(red_start_locs, loc.mod(north_loc, ox, 0, oz));
+list.add(red_start_locs, loc.mod(north_loc, -2*ox, 0, 2*oz));
+list.add(red_start_locs, loc.mod(north_loc, 0, 0, 2*oz));
+list.add(red_start_locs, loc.mod(north_loc, 2*ox, 0, 2*oz));
+list.add(red_start_locs, loc.mod(north_loc, 3*ox, 0, 3*oz));
+list.add(red_start_locs, loc.mod(north_loc, -ox, 0, 3*oz));
+list.add(red_start_locs, loc.mod(north_loc, ox, 0, 3*oz));
+list.add(red_start_locs, loc.mod(north_loc, 3*ox, 0, 3*oz));
+list.add(red_start_locs, loc.mod(north_loc, -4*ox, 0, 4*oz));
+list.add(red_start_locs, loc.mod(north_loc, -2*ox, 0, 4*oz));
+list.add(red_start_locs, loc.mod(north_loc, 0, 0, 4*oz));
+list.add(red_start_locs, loc.mod(north_loc, 2*ox, 0, 4*oz));
+list.add(red_start_locs, loc.mod(north_loc, 4*ox, 0, 4*oz));
+
+south_loc =  loc.new(gamesworld, 4514, 97, 3035); //südlichster punkt
 red_aim_locs = list.new();
-list.add(red_aim_locs, loc.new(gamesworld, 3966, 97, 2986));
-list.add(red_aim_locs, loc.new(gamesworld, 3970, 97, 2986));
-list.add(red_aim_locs, loc.new(gamesworld, 3974, 97, 2986));
-list.add(red_aim_locs, loc.new(gamesworld, 3978, 97, 2986));
-list.add(red_aim_locs, loc.new(gamesworld, 3982, 97, 2986));
-list.add(red_aim_locs, loc.new(gamesworld, 3968, 97, 2989));
-list.add(red_aim_locs, loc.new(gamesworld, 3972, 97, 2989));
-list.add(red_aim_locs, loc.new(gamesworld, 3976, 97, 2989));
-list.add(red_aim_locs, loc.new(gamesworld, 3980, 97, 2989));
-list.add(red_aim_locs, loc.new(gamesworld, 3970, 97, 2992));
-list.add(red_aim_locs, loc.new(gamesworld, 3974, 97, 2992));
-list.add(red_aim_locs, loc.new(gamesworld, 3978, 97, 2992));
-list.add(red_aim_locs, loc.new(gamesworld, 3972, 97, 2995));
-list.add(red_aim_locs, loc.new(gamesworld, 3976, 97, 2995));
-list.add(red_aim_locs, loc.new(gamesworld, 3974, 97, 2998));
-
+list.add(red_aim_locs, south_loc);
+list.add(red_aim_locs, loc.mod(south_loc, -ox, 0, -oz));
+list.add(red_aim_locs, loc.mod(south_loc, ox, 0, -oz));
+list.add(red_aim_locs, loc.mod(south_loc, -2*ox, 0, -2*oz));
+list.add(red_aim_locs, loc.mod(south_loc, 0, 0, -2*oz));
+list.add(red_aim_locs, loc.mod(south_loc, 2*ox, 0, -2*oz));
+list.add(red_aim_locs, loc.mod(south_loc, 3*ox, 0, -3*oz));
+list.add(red_aim_locs, loc.mod(south_loc, -ox, 0, -3*oz));
+list.add(red_aim_locs, loc.mod(south_loc, ox, 0, -3*oz));
+list.add(red_aim_locs, loc.mod(south_loc, 3*ox, 0, -3*oz));
+list.add(red_aim_locs, loc.mod(south_loc, -4*ox, 0, -4*oz));
+list.add(red_aim_locs, loc.mod(south_loc, -2*ox, 0, -4*oz));
+list.add(red_aim_locs, loc.mod(south_loc, 0, 0, -4*oz));
+list.add(red_aim_locs, loc.mod(south_loc, 2*ox, 0, -4*oz));
+list.add(red_aim_locs, loc.mod(south_loc, 4*ox, 0, -4*oz));
+
+north_loc = loc.new(gamesworld, 4506, 97, 3019); //nördlichster punkt
 blue_start_locs = list.new();
-list.add(blue_start_locs, loc.new(gamesworld, 3950, 97, 2986));
-list.add(blue_start_locs, loc.new(gamesworld, 3954, 97, 2986));
-list.add(blue_start_locs, loc.new(gamesworld, 3958, 97, 2986));
-list.add(blue_start_locs, loc.new(gamesworld, 3962, 97, 2986));
-list.add(blue_start_locs, loc.new(gamesworld, 3966, 97, 2986));
-list.add(blue_start_locs, loc.new(gamesworld, 3952, 97, 2983));
-list.add(blue_start_locs, loc.new(gamesworld, 3956, 97, 2983));
-list.add(blue_start_locs, loc.new(gamesworld, 3960, 97, 2983));
-list.add(blue_start_locs, loc.new(gamesworld, 3964, 97, 2983));
-list.add(blue_start_locs, loc.new(gamesworld, 3954, 97, 2980));
-list.add(blue_start_locs, loc.new(gamesworld, 3958, 97, 2980));
-list.add(blue_start_locs, loc.new(gamesworld, 3962, 97, 2980));
-list.add(blue_start_locs, loc.new(gamesworld, 3956, 97, 2977));
-list.add(blue_start_locs, loc.new(gamesworld, 3960, 97, 2977));
-list.add(blue_start_locs, loc.new(gamesworld, 3958, 97, 2974));
-
+list.add(blue_start_locs, north_loc);
+list.add(blue_start_locs, loc.mod(north_loc, -ox, 0, oz));
+list.add(blue_start_locs, loc.mod(north_loc, ox, 0, oz));
+list.add(blue_start_locs, loc.mod(north_loc, -2*ox, 0, 2*oz));
+list.add(blue_start_locs, loc.mod(north_loc, 0, 0, 2*oz));
+list.add(blue_start_locs, loc.mod(north_loc, 2*ox, 0, 2*oz));
+list.add(blue_start_locs, loc.mod(north_loc, 3*ox, 0, 3*oz));
+list.add(blue_start_locs, loc.mod(north_loc, -ox, 0, 3*oz));
+list.add(blue_start_locs, loc.mod(north_loc, ox, 0, 3*oz));
+list.add(blue_start_locs, loc.mod(north_loc, 3*ox, 0, 3*oz));
+list.add(blue_start_locs, loc.mod(north_loc, -4*ox, 0, 4*oz));
+list.add(blue_start_locs, loc.mod(north_loc, -2*ox, 0, 4*oz));
+list.add(blue_start_locs, loc.mod(north_loc, 0, 0, 4*oz));
+list.add(blue_start_locs, loc.mod(north_loc, 2*ox, 0, 4*oz));
+list.add(blue_start_locs, loc.mod(north_loc, 4*ox, 0, 4*oz));
+
+south_loc =  loc.new(gamesworld, 4522, 97, 3019); //südlichster punkt
 blue_aim_locs = list.new();
-list.add(blue_aim_locs, loc.new(gamesworld, 3982, 97, 2962));
-list.add(blue_aim_locs, loc.new(gamesworld, 3986, 97, 2962));
-list.add(blue_aim_locs, loc.new(gamesworld, 3990, 97, 2962));
-list.add(blue_aim_locs, loc.new(gamesworld, 3994, 97, 2962));
-list.add(blue_aim_locs, loc.new(gamesworld, 3998, 97, 2962));
-list.add(blue_aim_locs, loc.new(gamesworld, 3984, 97, 2965));
-list.add(blue_aim_locs, loc.new(gamesworld, 3988, 97, 2965));
-list.add(blue_aim_locs, loc.new(gamesworld, 3992, 97, 2965));
-list.add(blue_aim_locs, loc.new(gamesworld, 3996, 97, 2965));
-list.add(blue_aim_locs, loc.new(gamesworld, 3986, 97, 2968));
-list.add(blue_aim_locs, loc.new(gamesworld, 3990, 97, 2968));
-list.add(blue_aim_locs, loc.new(gamesworld, 3994, 97, 2968));
-list.add(blue_aim_locs, loc.new(gamesworld, 3988, 97, 2971));
-list.add(blue_aim_locs, loc.new(gamesworld, 3992, 97, 2971));
-list.add(blue_aim_locs, loc.new(gamesworld, 3990, 97, 2974));
-
+list.add(blue_aim_locs, south_loc);
+list.add(blue_aim_locs, loc.mod(south_loc, -ox, 0, -oz));
+list.add(blue_aim_locs, loc.mod(south_loc, ox, 0, -oz));
+list.add(blue_aim_locs, loc.mod(south_loc, -2*ox, 0, -2*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, 0, 0, -2*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, 2*ox, 0, -2*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, 3*ox, 0, -3*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, -ox, 0, -3*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, ox, 0, -3*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, 3*ox, 0, -3*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, -4*ox, 0, -4*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, -2*ox, 0, -4*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, 0, 0, -4*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, 2*ox, 0, -4*oz));
+list.add(blue_aim_locs, loc.mod(south_loc, 4*ox, 0, -4*oz));
+
+north_loc = loc.new(gamesworld, 4522, 97, 3019); //nördlichster punkt
 green_start_locs = list.new();
-list.add(green_start_locs, loc.new(gamesworld, 3982, 97, 2986));
-list.add(green_start_locs, loc.new(gamesworld, 3986, 97, 2986));
-list.add(green_start_locs, loc.new(gamesworld, 3990, 97, 2986));
-list.add(green_start_locs, loc.new(gamesworld, 3994, 97, 2986));
-list.add(green_start_locs, loc.new(gamesworld, 3998, 97, 2986));
-list.add(green_start_locs, loc.new(gamesworld, 3984, 97, 2983));
-list.add(green_start_locs, loc.new(gamesworld, 3988, 97, 2983));
-list.add(green_start_locs, loc.new(gamesworld, 3992, 97, 2983));
-list.add(green_start_locs, loc.new(gamesworld, 3996, 97, 2983));
-list.add(green_start_locs, loc.new(gamesworld, 3986, 97, 2980));
-list.add(green_start_locs, loc.new(gamesworld, 3990, 97, 2980));
-list.add(green_start_locs, loc.new(gamesworld, 3994, 97, 2980));
-list.add(green_start_locs, loc.new(gamesworld, 3988, 97, 2977));
-list.add(green_start_locs, loc.new(gamesworld, 3992, 97, 2977));
-list.add(green_start_locs, loc.new(gamesworld, 3990, 97, 2974));
-
+list.add(green_start_locs, north_loc);
+list.add(green_start_locs, loc.mod(north_loc, -ox, 0, oz));
+list.add(green_start_locs, loc.mod(north_loc, ox, 0, oz));
+list.add(green_start_locs, loc.mod(north_loc, -2*ox, 0, 2*oz));
+list.add(green_start_locs, loc.mod(north_loc, 0, 0, 2*oz));
+list.add(green_start_locs, loc.mod(north_loc, 2*ox, 0, 2*oz));
+list.add(green_start_locs, loc.mod(north_loc, 3*ox, 0, 3*oz));
+list.add(green_start_locs, loc.mod(north_loc, -ox, 0, 3*oz));
+list.add(green_start_locs, loc.mod(north_loc, ox, 0, 3*oz));
+list.add(green_start_locs, loc.mod(north_loc, 3*ox, 0, 3*oz));
+list.add(green_start_locs, loc.mod(north_loc, -4*ox, 0, 4*oz));
+list.add(green_start_locs, loc.mod(north_loc, -2*ox, 0, 4*oz));
+list.add(green_start_locs, loc.mod(north_loc, 0, 0, 4*oz));
+list.add(green_start_locs, loc.mod(north_loc, 2*ox, 0, 4*oz));
+list.add(green_start_locs, loc.mod(north_loc, 4*ox, 0, 4*oz));
+
+south_loc =  loc.new(gamesworld, 4506, 97, 3019); //südlichster punkt
 green_aim_locs = list.new();
-list.add(green_aim_locs, loc.new(gamesworld, 3950, 97, 2962));
-list.add(green_aim_locs, loc.new(gamesworld, 3954, 97, 2962));
-list.add(green_aim_locs, loc.new(gamesworld, 3958, 97, 2962));
-list.add(green_aim_locs, loc.new(gamesworld, 3962, 97, 2962));
-list.add(green_aim_locs, loc.new(gamesworld, 3966, 97, 2962));
-list.add(green_aim_locs, loc.new(gamesworld, 3952, 97, 2965));
-list.add(green_aim_locs, loc.new(gamesworld, 3956, 97, 2965));
-list.add(green_aim_locs, loc.new(gamesworld, 3960, 97, 2965));
-list.add(green_aim_locs, loc.new(gamesworld, 3964, 97, 2965));
-list.add(green_aim_locs, loc.new(gamesworld, 3954, 97, 2968));
-list.add(green_aim_locs, loc.new(gamesworld, 3958, 97, 2968));
-list.add(green_aim_locs, loc.new(gamesworld, 3962, 97, 2968));
-list.add(green_aim_locs, loc.new(gamesworld, 3956, 97, 2971));
-list.add(green_aim_locs, loc.new(gamesworld, 3960, 97, 2971));
-list.add(green_aim_locs, loc.new(gamesworld, 3958, 97, 2974));
-
+list.add(green_aim_locs, south_loc);
+list.add(green_aim_locs, loc.mod(south_loc, -ox, 0, -oz));
+list.add(green_aim_locs, loc.mod(south_loc, ox, 0, -oz));
+list.add(green_aim_locs, loc.mod(south_loc, -2*ox, 0, -2*oz));
+list.add(green_aim_locs, loc.mod(south_loc, 0, 0, -2*oz));
+list.add(green_aim_locs, loc.mod(south_loc, 2*ox, 0, -2*oz));
+list.add(green_aim_locs, loc.mod(south_loc, 3*ox, 0, -3*oz));
+list.add(green_aim_locs, loc.mod(south_loc, -ox, 0, -3*oz));
+list.add(green_aim_locs, loc.mod(south_loc, ox, 0, -3*oz));
+list.add(green_aim_locs, loc.mod(south_loc, 3*ox, 0, -3*oz));
+list.add(green_aim_locs, loc.mod(south_loc, -4*ox, 0, -4*oz));
+list.add(green_aim_locs, loc.mod(south_loc, -2*ox, 0, -4*oz));
+list.add(green_aim_locs, loc.mod(south_loc, 0, 0, -4*oz));
+list.add(green_aim_locs, loc.mod(south_loc, 2*ox, 0, -4*oz));
+list.add(green_aim_locs, loc.mod(south_loc, 4*ox, 0, -4*oz));
 start_locs = map.new();
 map.add(start_locs, 0, red_start_locs);
 map.add(start_locs, 1, blue_start_locs);
@@ -161,41 +165,41 @@ map.add(aim_locs, 0, red_aim_locs);
 map.add(aim_locs, 1, blue_aim_locs);
 map.add(aim_locs, 2, green_aim_locs);
 
+loc = loc.new(gamesworld, 4511, 97, 3013); //von den nördlichsten punkten der westlichste
 center_locs = list.new();
-list.add(center_locs, loc.new(gamesworld, 3968, 97, 2983));
-list.add(center_locs, loc.new(gamesworld, 3972, 97, 2983));
-list.add(center_locs, loc.new(gamesworld, 3976, 97, 2983));
-list.add(center_locs, loc.new(gamesworld, 3980, 97, 2983));
-list.add(center_locs, loc.new(gamesworld, 3966, 97, 2980));
-list.add(center_locs, loc.new(gamesworld, 3970, 97, 2980));
-list.add(center_locs, loc.new(gamesworld, 3974, 97, 2980));
-list.add(center_locs, loc.new(gamesworld, 3978, 97, 2980));
-list.add(center_locs, loc.new(gamesworld, 3982, 97, 2980));
-list.add(center_locs, loc.new(gamesworld, 3964, 97, 2977));
-list.add(center_locs, loc.new(gamesworld, 3968, 97, 2977));
-list.add(center_locs, loc.new(gamesworld, 3972, 97, 2977));
-list.add(center_locs, loc.new(gamesworld, 3976, 97, 2977));
-list.add(center_locs, loc.new(gamesworld, 3980, 97, 2977));
-list.add(center_locs, loc.new(gamesworld, 3984, 97, 2977));
-list.add(center_locs, loc.new(gamesworld, 3962, 97, 2974));
-list.add(center_locs, loc.new(gamesworld, 3966, 97, 2974));
-list.add(center_locs, loc.new(gamesworld, 3970, 97, 2974));
-list.add(center_locs, loc.new(gamesworld, 3974, 97, 2974));
-list.add(center_locs, loc.new(gamesworld, 3978, 97, 2974));
-list.add(center_locs, loc.new(gamesworld, 3982, 97, 2974));
-list.add(center_locs, loc.new(gamesworld, 3986, 97, 2974));
-list.add(center_locs, loc.new(gamesworld, 3964, 97, 2971));
-list.add(center_locs, loc.new(gamesworld, 3968, 97, 2971));
-list.add(center_locs, loc.new(gamesworld, 3972, 97, 2971));
-list.add(center_locs, loc.new(gamesworld, 3976, 97, 2971));
-list.add(center_locs, loc.new(gamesworld, 3980, 97, 2971));
-list.add(center_locs, loc.new(gamesworld, 3984, 97, 2971));
-list.add(center_locs, loc.new(gamesworld, 3966, 97, 2968));
-list.add(center_locs, loc.new(gamesworld, 3970, 97, 2968));
-list.add(center_locs, loc.new(gamesworld, 3974, 97, 2968));
-list.add(center_locs, loc.new(gamesworld, 3978, 97, 2968));
-list.add(center_locs, loc.new(gamesworld, 3982, 97, 2968));
-list.add(center_locs, loc.new(gamesworld, 3968, 97, 2965));
-list.add(center_locs, loc.new(gamesworld, 3972, 97, 2965));
-list.add(center_locs, loc.new(gamesworld, 3976, 97, 2965));
-list.add(center_locs, loc.new(gamesworld, 3980, 97, 2965));
+list.add(center_locs, loc.mod(loc, 2*ox, 0, 0));
+list.add(center_locs, loc.mod(loc, 4*ox, 0, 0));
+list.add(center_locs, loc.mod(loc, 6*ox, 0, 0));
+list.add(center_locs, loc.mod(loc, -ox, 0, oz));
+list.add(center_locs, loc.mod(loc, ox, 0, oz));
+list.add(center_locs, loc.mod(loc, 3*ox, 0, oz));
+list.add(center_locs, loc.mod(loc, 5*ox, 0, oz));
+list.add(center_locs, loc.mod(loc, 7*ox, 0, oz));
+list.add(center_locs, loc.mod(loc, -2*ox, 0, 2*oz));
+list.add(center_locs, loc.mod(loc, 0, 0, 2*oz));
+list.add(center_locs, loc.mod(loc, 2*ox, 0, 2*oz));
+list.add(center_locs, loc.mod(loc, 4*ox, 0, 2*oz));
+list.add(center_locs, loc.mod(loc, 6*ox, 0, 2*oz));
+list.add(center_locs, loc.mod(loc, 8*ox, 0, 2*oz));
+list.add(center_locs, loc.mod(loc, -3*ox, 0, 3*oz));
+list.add(center_locs, loc.mod(loc, -ox, 0, 3*oz));
+list.add(center_locs, loc.mod(loc, ox, 0, 3*oz));
+list.add(center_locs, loc.mod(loc, 3*ox, 0, 3*oz));
+list.add(center_locs, loc.mod(loc, 5*ox, 0, 3*oz));
+list.add(center_locs, loc.mod(loc, 7*ox, 0, 3*oz));
+list.add(center_locs, loc.mod(loc, 9*ox, 0, 3*oz));
+list.add(center_locs, loc.mod(loc, -2*ox, 0, 4*oz));
+list.add(center_locs, loc.mod(loc, 0, 0, 4*oz));
+list.add(center_locs, loc.mod(loc, 2*ox, 0, 4*oz));
+list.add(center_locs, loc.mod(loc, 4*ox, 0, 4*oz));
+list.add(center_locs, loc.mod(loc, 6*ox, 0, 4*oz));
+list.add(center_locs, loc.mod(loc, 8*ox, 0, 4*oz));
+list.add(center_locs, loc.mod(loc, -ox, 0, 5*oz));
+list.add(center_locs, loc.mod(loc, ox, 0, 5*oz));
+list.add(center_locs, loc.mod(loc, 3*ox, 0, 5*oz));
+list.add(center_locs, loc.mod(loc, 5*ox, 0, 5*oz));
+list.add(center_locs, loc.mod(loc, 7*ox, 0, 5*oz));
+list.add(center_locs, loc.mod(loc, 0, 0, 6*oz));
+list.add(center_locs, loc.mod(loc, 2*ox, 0, 6*oz));
+list.add(center_locs, loc.mod(loc, 4*ox, 0, 6*oz));
+list.add(center_locs, loc.mod(loc, 6*ox, 0, 6*oz));

+ 3 - 39
startscript.txt

@@ -1,46 +1,10 @@
 clearscriptvars();
 
 setMOTD("§6ask before you think");
-//wusi
-limit.clear();
-limit.set("ghast", 4);
-limit.set("husk", 10);
-limit.set("blaze", 10);
-limit.set("zombie", 15);
-limit.set("zombie_pigman", 25);
-limit.set("magma_cube", 5);
-limit.set("drowned", 5);
-limit.set("skeleton", 15);
-limit.set("wither_skeleton", 5);
-limit.set("creeper", 5);
-limit.set("spider", 15);
-limit.set("slime", 5);
-limit.set("enderman", 5);
-limit.set("wolf", 5);
-limit.set("witch", 10);
-limit.set("stray", 10);
-limit.set("zombie_villager", 10);
-
-limit.set("cow", 40);
-limit.set("chicken", 40);
-limit.set("sheep", 40);
-limit.set("pig", 40);
-limit.set("horse", 20);
-limit.set("rabbit", 40);
-limit.set("turtle", 40);
-
-limit.set("dolphin", 10);
-limit.set("salmon", 10);
-limit.set("tropical_fish", 10);
-limit.set("parrot", 10);
-limit.set("bat", 10);
-limit.set("squid", 10);
-limit.set("cod", 10);
-limit.set("pufferfish", 5);
-
-
-script.start("system/player_data");
+		
+script.start("system/limits");
 script.start("system/svars");
+script.start("system/player_data");
 script.start("system/perms", "utils/u_general");
 script.start("system/chat", "utils/u_general", "utils/u_gpvp");
 script.start("system/commands", "utils/u_general", "utils/u_plots", "utils/u_gpvp", "utils/u_survival");

+ 2 - 1
survival/survival.txt

@@ -23,7 +23,8 @@ half_property = block.getProperty("half");
 
 gamesworld = world.get("games");
 moveidsurvival = event.addMoveData(loc.new(gamesworld, -399, 89, 110), loc.new(gamesworld, -400, 91, 114), 5, -1);
-survival_spawn = read.location(ggv("SERVER", "surv_spawn"));
+config = getScriptVar("server_config");
+survival_spawn = read.location(config.getString(config, "surv_spawn", "games:0:0:0"));
 overworld = world.get("overworld");
 adventure_chest_loc = loc.new(overworld, 240, 80, 234);
 adventure_aim_loc = loc.new(overworld, 237, 76, 237);

+ 12 - 9
system/commands.txt

@@ -185,10 +185,11 @@ crops_tag = block.getTag("minecraft:crops");
 dirt_tag = block.getTag("forge:dirt");
 chest_type = "minecraft:chest";
 wheat_item_type = "minecraft:wheat";
-gamesspawn = read.location(ggv("SERVER", "gamesspawn"));
-serverspawn = read.location(ggv("SERVER", "serverspawn"));
-gildenspawn = read.location(ggv("SERVER", "gildenspawn"));
-survival_spawn = read.location(ggv("SERVER", "surv_spawn"));
+config = getScriptVar("server_config");
+gamesspawn = read.location(config.getString(config, "gamesspawn", "games:0:0:0"));
+serverspawn = read.location(config.getString(config, "serverspawn", "games:0:0:0"));
+gildenspawn = read.location(config.getString(config, "gildenspawn", "games:0:0:0"));
+survival_spawn = read.location(config.getString(config, "surv_spawn", "games:0:0:0"));
 lock_prefix = "§yLock";
 
 gpvpworld_name = "gpvp_old";
@@ -2023,7 +2024,7 @@ elseif(arg0 == "gilden") {
 	} catch {
 		nothing();
 	}
-	script.start("gildenpvp/gpvp", "utils/u_general", "utils/u_gpvp", "utils/u_plots", "utils/u_skills");
+	script.start("gildenpvp/gpvp", "utils/u_general", "utils/u_gpvp", "utils/u_plots", "utils/u_skills", "utils/u_player_data");
 }
 elseif(arg0 == "hunter") {
 	try {
@@ -4791,18 +4792,20 @@ if(size != 1) {
 }
 arg0 = list.getIndex(args, 0);
 new_spawn = text.location(entity.getLocation(player));
+config = getScriptVar("server_config");
 if(arg0 == "games") {
-	sgv("SERVER", "gamesspawn", new_spawn);
+	config.set(config, "gamesspawn", new_spawn);
 	player.speak(player, "§6Commands", "Der Games-Spawn wurde neu gesetzt.");
 } elseif(arg0 == "server") {
-	sgv("SERVER", "serverspawn", new_spawn);
+	config.set(config, "serverspawn", new_spawn);
 	player.speak(player, "§6Commands", "Der Server-Spawn wurde neu gesetzt.");
-} elseif(arg0 == "gpvp_old") {
-	sgv("SERVER", "gildenspawn", new_spawn);
+} elseif(arg0 == "gpvp") {
+	config.set(config, "gildenspawn", new_spawn);
 	player.speak(player, "§6Commands", "Der Gilden-Spawn wurde neu gesetzt.");
 } else {
 	goto("setspawnhelp");
 }
+config.saveAsync(config);
 goto("wait");
 
 @server

+ 0 - 83
system/jobs.txt

@@ -1,83 +0,0 @@
-/*job.registerJob(0, "Testberuf");
-job.registerSkill(0, 0, 1, 1);
-job.registerSkill(0, 2, 1, 1);
-job.registerSkill(0, 3, 2, 1);
-job.registerSkill(0, 53, 4, 1);
-job.registerSkill(0, 54, 4, 1);
-job.registerSkill(0, 55, 4, 1);
-
-job.registerJob(2, "Jäger"); //Skill Explosiver Pfeil fehlt
-job.registerSkill(2, 56, 1, 1);
-job.registerSkill(2, 57, 1, 1);
-job.registerSkill(2, 58, 1, 1);
-job.registerSkill(2, 59, 1, 1);
-job.registerSkill(2, 60, 1, 1);
-job.registerSkill(2, 61, 1, 1);
-job.registerSkill(2, 62, 1, 1);
-job.registerSkill(2, 63, 1, 1);
-job.registerSkill(2, 64, 1, 1);
-job.registerSkill(2, 65, 1, 1);
-job.registerSkill(2, 66, 1, 1);
-job.registerSkill(2, 67, 1, 1);
-job.registerSkill(2, 68, 1, 1);
-job.registerSkill(2, 69, 1, 1);
-job.registerSkill(2, 70, 1, 1);
-job.registerSkill(2, 71, 1, 1);
-
-job.registerJob(3, "Schurke"); //Skill Todesblüte fehlt
-job.registerSkill(3, 72, 1, 1);
-job.registerSkill(3, 73, 1, 1);
-job.registerSkill(3, 74, 1, 1);
-job.registerSkill(3, 75, 1, 1);
-job.registerSkill(3, 76, 1, 1);
-job.registerSkill(3, 77, 1, 1);
-job.registerSkill(3, 78, 1, 1);
-job.registerSkill(3, 79, 1, 1);
-job.registerSkill(3, 80, 1, 1);
-job.registerSkill(3, 81, 1, 1);
-job.registerSkill(3, 82, 1, 1);
-job.registerSkill(3, 83, 1, 1);
-job.registerSkill(3, 84, 1, 1);
-job.registerSkill(3, 85, 1, 1);
-job.registerSkill(3, 86, 1, 1);
-job.registerSkill(3, 87, 1, 1);
-
-job.registerJob(4, "Barbar");
-job.registerSkill(4, 88, 1, 1);
-job.registerSkill(4, 89, 1, 1);
-job.registerSkill(4, 90, 1, 1);
-job.registerSkill(4, 91, 1, 1);
-job.registerSkill(4, 92, 1, 1);
-job.registerSkill(4, 93, 1, 1);
-job.registerSkill(4, 94, 1, 1);
-job.registerSkill(4, 95, 1, 1);
-job.registerSkill(4, 96, 1, 1);
-job.registerSkill(4, 97, 1, 1);
-job.registerSkill(4, 98, 1, 1);
-job.registerSkill(4, 99, 1, 1);
-job.registerSkill(4, 100, 1, 1);
-job.registerSkill(4, 101, 1, 1);
-job.registerSkill(4, 102, 1, 1);
-job.registerSkill(4, 103, 1, 1);
-
-job.registerJob(5, "Krieger");
-job.registerSkill(5, 104, 1, 1);
-job.registerSkill(5, 105, 1, 1);
-job.registerSkill(5, 106, 1, 1);
-job.registerSkill(5, 107, 1, 1);
-job.registerSkill(5, 108, 1, 1);
-job.registerSkill(5, 109, 1, 1);
-job.registerSkill(5, 110, 1, 1);
-job.registerSkill(5, 111, 1, 1);
-job.registerSkill(5, 112, 1, 1);
-job.registerSkill(5, 113, 1, 1);
-job.registerSkill(5, 114, 1, 1);
-job.registerSkill(5, 115, 1, 1);
-job.registerSkill(5, 116, 1, 1);
-job.registerSkill(5, 117, 1, 1);
-job.registerSkill(5, 118, 1, 1);
-job.registerSkill(5, 119, 1, 1);
-
-job.registerJob(6, "Magier");
-job.registerJob(7, "Mönch");
-*/

+ 36 - 0
system/limits.txt

@@ -0,0 +1,36 @@
+//wusi
+limit.clear();
+limit.set("ghast", 4);
+limit.set("husk", 10);
+limit.set("blaze", 10);
+limit.set("zombie", 15);
+limit.set("zombie_pigman", 25);
+limit.set("magma_cube", 5);
+limit.set("drowned", 5);
+limit.set("skeleton", 15);
+limit.set("wither_skeleton", 5);
+limit.set("creeper", 5);
+limit.set("spider", 15);
+limit.set("slime", 5);
+limit.set("enderman", 5);
+limit.set("wolf", 5);
+limit.set("witch", 10);
+limit.set("stray", 10);
+limit.set("zombie_villager", 10);
+
+limit.set("cow", 40);
+limit.set("chicken", 40);
+limit.set("sheep", 40);
+limit.set("pig", 40);
+limit.set("horse", 20);
+limit.set("rabbit", 40);
+limit.set("turtle", 40);
+
+limit.set("dolphin", 10);
+limit.set("salmon", 10);
+limit.set("tropical_fish", 10);
+limit.set("parrot", 10);
+limit.set("bat", 10);
+limit.set("squid", 10);
+limit.set("cod", 10);
+limit.set("pufferfish", 5);

+ 1 - 1
system/player_data.txt

@@ -2,7 +2,7 @@ function loadData(player, map, name) {
 	player_id = player.getId(player);
 	config = map.get(map, player_id);
 	if(config == null) {
-		config = config.new(concat("configs/player_data/", name), player_id);
+		config = config.new(concat("scripts/configs/player_data/", name), player_id);
 		if(config.exists(config)) {
 			config.load(config);
 		}

+ 6 - 1
system/svars.txt

@@ -1,7 +1,12 @@
+config = config.new("scripts/configs", "server");
+if(config.exists(config)) {
+	config.load(config);
+}
+setScriptVar("server_config", config);
+
 setScriptVar("script_players", map.new());
 setScriptVar("nicknames", map.new());
 setScriptVar("rmInventories", map.new());
-setScriptVar("air_item_type", "minecraft:air");
 setScriptVar("last_exe_times", map.new());
 setScriptVar("showcoords_list", list.new());
 

+ 1 - 1
test.txt

@@ -6,7 +6,7 @@ world = world.get("overworld");
 loc = loc.new(world, 0, 0, 0);
 
 gusi = 4352; //bereits generierter Bereich
-wusi = 4352; //zu generierender Bereich
+wusi = 6000; //zu generierender Bereich
 
 whole = wusi / 8;
 whole *= whole;

+ 6 - 0
test3.txt

@@ -0,0 +1,6 @@
+config = config.new("scripts/configs", "server");
+if(config.exists(config)) {
+	config.load(config);
+}
+config.set(config, "serverspawn", ggv("SERVER", "serverspawn"));
+msg("dev", config.save(config));

+ 17 - 1
utils/u_games.txt

@@ -468,10 +468,26 @@ function getTeamWithLowestPeople(team_lists, numberofteams) {
 
 function scriptJoin(script, player) {
 	script_id = script.getId(script);
-	id_set = data.get(player, "script_ids");
+	id_set = data.get(player, "scripts_set");
+	if(id_set == null) {
+		id_set = set.new();
+	}
 	set.add(id_set, script_id);
 	map = getScriptVar("script_players");
 	player_list = map.getOrDefault(map, script_id, list.new());
 	list.add(player_list, player.getUuid(player));
 	map.add(map, script_id, player_list);
+	script.setVar(script, "player", player);
+	script.callEvent("player_join", script);
+}
+
+function hasScriptId(player, script_id) {
+	id_set = data.get(player, "scripts_set");
+	if(id_set == null) {
+		return false;
+	}
+	if(set.contains(id_set, script_id)) {
+		return true;
+	}
+	return false;
 }

+ 0 - 12
utils/u_gpvp.txt

@@ -293,18 +293,6 @@ function getGuildTag(gilden_id) {
 	return tag;
 }
 
-function getAllGuildPlayerIds() {
-	list.new(list);
-	stmt = databank.prepare("SELECT player_id FROM gildenplayer;");
-	result = databank.execute(stmt);
-	while(databank.next(result)) {
-		list.add(list, databank.getInt(result, 1));
-	}
-	databank.close(result);
-	databank.close(stmt);
-	return list;
-}
-
 function getAllGuildIds() {
 	list.new(list);
 	stmt = databank.prepare("SELECT gilden_id FROM gilden;");