Browse Source

on_error handling

mloeschenkohl 2 years ago
parent
commit
78f2a8ab8e

+ 2 - 7
codelines.txt

@@ -21,16 +21,11 @@ msg("dev", concat(" §7Archive: ", text.number(code_lines), " lines."));
 all_lines += code_lines;
 
 code_lines = 0;
-sumUpDirectory(file.new("scripts/dev"));
+sumUpDirectory(file.new("scripts/jan"));
 msg("dev", concat(" §7Development: ", text.number(code_lines), " lines."));
 all_lines += code_lines;
 
-code_lines = 0;
-sumUpDirectory(file.new("scripts/configs"));
-msg("dev", concat(" §7Configs: ", text.number(code_lines), " lines."));
-all_lines += code_lines;
-
-code_lines = 14217;
+code_lines = 14461;
 msg("dev", concat(" §eMod: ", text.number(code_lines), " lines."));
 real_lines += code_lines;
 

+ 0 - 9
dev/sword_test.txt

@@ -1,9 +0,0 @@
-weapon = item.getTag("km:melee_weapon");
-msg("dev", weapon);
-
-event.load("block_break");
-
-@wait
-wait();
-msg("dev", item.hasTag(weapon, living.getEquip(player, "hand")));
-goto("wait");

+ 11 - 3
docu_minecraft.php

@@ -4269,15 +4269,23 @@
         <tr>
             <td class="bold">Format</td>
             <td>
-				pet.setTamed(tamable_entity, true, [owner])<br>
-				pet.setTamed(tamable_entity, false)
+				pet.setTamed(tamable_entity, boolean, [owner])
+			</td>
+        </tr>
+		<tr>
+            <td class="bold">Example</td>
+            <td>
+				pet.setTamed(horse, true)<br>
+				pet.setTamed(horse, false)<br>
+				pet.setTamed(horse, true, owner)<br>
+				pet.setTamed(horse, false, owner)<br>
 			</td>
         </tr>
     </table>
 	<table>
         <tr>
             <th class="command">pet.getOwner</th>
-            <th class="desc">returns if a pet is tamed</th>
+            <th class="desc">returns the owner's uuid from an pet</th>
         </tr>
         <tr>
             <td class="bold">Format</td>

+ 0 - 0
fraktal_maker.txt → jan/fraktal_maker.txt


+ 0 - 0
jantest4.txt → jan/jantest4.txt


+ 0 - 0
jantest6.txt → jan/jantest6.txt


+ 0 - 0
dev/lava_test.txt → jan/lava_test.txt


+ 0 - 0
dev/luftballon.txt → jan/luftballon.txt


+ 22 - 22
startscript.txt

@@ -6,34 +6,34 @@ clearscriptvars();
 script.start("system/tables");
 script.start("system/svars");
 script.start("system/perms", "utils/u_general");
-script.startNamed("Playerdata", "system/player_data", "utils/u_general");
-script.startNamed("Chat", "system/chat", "utils/u_general");
+script.startNamed("Playerdata", "utils/u_error", "system/player_data", "utils/u_general");
+script.startNamed("Chat", "utils/u_error", "system/chat", "utils/u_general");
 script.startNamed("Commands", "startcommands");
-script.startNamed("Creative", "system/creative", "utils/u_general");
+script.startNamed("Creative", "utils/u_error", "system/creative", "utils/u_general");
 script.startNamed("Copyisland", "system/copyisland");
-script.startNamed("Damage", "system/damage");
-script.startNamed("Doors", "system/doors", "utils/u_general");
-script.startNamed("Harvest", "system/harvest", "utils/u_general");
-script.startNamed("Hawkeye", "system/hawkeye", "utils/u_general");
-script.startNamed("Herobrine", "system/herobrine", "utils/u_general");
+script.startNamed("Damage", "utils/u_error", "system/damage", "utils/u_general");
+script.startNamed("Doors", "utils/u_error", "system/doors", "utils/u_general");
+script.startNamed("Harvest", "utils/u_error", "system/harvest", "utils/u_general");
+script.startNamed("Hawkeye", "utils/u_error", "system/hawkeye", "utils/u_general");
+script.startNamed("Herobrine", "utils/u_error", "system/herobrine", "utils/u_general");
 script.startNamed("Playtime", "system/playtime");
-script.startNamed("Pumpkin", "system/pumpkin", "utils/u_general");
+script.startNamed("Pumpkin", "utils/u_error", "system/pumpkin", "utils/u_general");
 script.startNamed("Voxel", "system/voxel");
-script.startNamed("Sitting", "system/sitting", "utils/u_general");
-script.startNamed("Ticket", "system/tickets", "utils/u_general");
-script.startNamed("Mails", "system/mailsystem", "utils/u_general");
-script.startNamed("Shops", "system/chestshops", "utils/u_general");
-script.startNamed("Survival", "system/survival", "utils/u_general");
-script.startNamed("Gamecenter", "system/gamecenter", "utils/u_general", "utils/u_games");
-script.startNamed("Ranklist", "system/ranklist", "utils/u_general", "utils/u_games");
-script.startNamed("Story", "system/story", "utils/u_general");
-script.startNamed("QuestsAdmont", "story/admont/core", "utils/u_general", "utils/u_quest");
-script.startNamed("QuestsSchiffbruch", "story/schiffbruch/core", "utils/u_general", "utils/u_quest");
+script.startNamed("Sitting", "utils/u_error", "system/sitting", "utils/u_general");
+script.startNamed("Ticket", "utils/u_error", "system/tickets", "utils/u_general");
+script.startNamed("Mails", "utils/u_error", "system/mailsystem", "utils/u_general");
+script.startNamed("Shops", "utils/u_error", "system/chestshops", "utils/u_general");
+script.startNamed("Survival", "utils/u_error", "system/survival", "utils/u_general");
+script.startNamed("Gamecenter", "utils/u_error", "system/gamecenter", "utils/u_general", "utils/u_games");
+script.startNamed("Ranklist", "utils/u_error", "system/ranklist", "utils/u_general", "utils/u_games");
+script.startNamed("Story", "utils/u_error", "system/story", "utils/u_general");
+script.startNamed("QuestsAdmont", "utils/u_error", "story/admont/core", "utils/u_general", "utils/u_quest");
+script.startNamed("QuestsSchiffbruch", "utils/u_error", "story/schiffbruch/core", "utils/u_general", "utils/u_quest");
 script.startNamed("Workberries", "system/workberries");
-script.startNamed("Timber", "system/timber", "utils/u_general");
-script.startNamed("Loom", "system/loom");
+script.startNamed("Timber", "utils/u_error", "system/timber", "utils/u_general");
+script.startNamed("Loom", "utils/u_error", "system/loom", "utils/u_general");
 script.startNamed("Gamerules", "system/gamerules");
-script.startNamed("Scheduler", "system/scheduler", "utils/u_general");
+script.startNamed("Scheduler", "utils/u_error", "system/scheduler", "utils/u_general");
 
 script.startNamed("ReleaseLoop", "system/release_loop");
 

+ 2 - 0
system/chat.txt

@@ -1,3 +1,5 @@
+@start
+error_counter = 0;
 event.load("chat");
 event.load("player_login");
 event.load("player_logout");

+ 43 - 21
system/commands.txt

@@ -1,3 +1,20 @@
+error_counter = 0;
+@on_error
+error_counter++;
+if(error_counter > 1) {
+	snuvi.debug("Error Handler activated");
+	if(event == "custom_command") {
+		set.add(failed_cmds, command);
+		goto("wait");
+	}
+	snuvi.debug("Restarting script...");
+	error_counter++;
+	if(error_counter >= 100) {
+		snuvi.debug("Script terminated. Endless loop.");
+		term();
+	}
+}
+
 waitfor(5); //Verhindert Endlos-Schleife durch "/start commands"
 
 setCommandHelps();
@@ -282,6 +299,7 @@ invseeids = set.new();
 ride_set = set.new();
 fields = set.new();
 vanish_set = set.new();
+failed_cmds = set.new();
 skip_night_set = set.new();
 afk_checker_map = map.new();
 
@@ -438,6 +456,10 @@ if(event == "custom_command") {
 		perm.no(player, command);
 		goto("wait");
 	}
+	if(set.contains(failed_cmds, command)) {
+		msg.prefix(player, prefix_commands, "§cCommand temporarly deactivated due to failure.");
+		goto("wait");
+	}
 	sender = player;
 	sender_name = player.getName(player);
 	affectedname = player.getName(player);
@@ -3017,63 +3039,63 @@ elseif(arg0 == "chat") {
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Chat", "system/chat", "utils/u_general");
+	script.startNamed("Chat", "utils/u_error", "system/chat", "utils/u_general");
 }
 elseif(arg0 == "creative") {
 	script = script.get("Creative");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Creative", "system/creative", "utils/u_general");
+	script.startNamed("Creative", "utils/u_error", "system/creative", "utils/u_general");
 }
 elseif(arg0 == "damage") {
 	script = script.get("Damage");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Damage", "system/damage");
+	script.startNamed("Damage", "utils/u_error", "system/damage", "utils/u_general");
 }
 elseif(arg0 == "doors") {
 	script = script.get("Doors");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Doors", "system/doors", "utils/u_general");
+	script.startNamed("Doors", "utils/u_error", "system/doors", "utils/u_general");
 }
 elseif(arg0 == "games") {
 	script = script.get("Gamecenter");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Gamecenter", "system/gamecenter", "utils/u_general", "utils/u_games");
+	script.startNamed("Gamecenter", "utils/u_error", "system/gamecenter", "utils/u_general", "utils/u_games");
 }
 elseif(arg0 == "harvest") {
 	script = script.get("Harvest");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Harvest", "system/harvest", "utils/u_general");
+	script.startNamed("Harvest", "utils/u_error", "system/harvest", "utils/u_general");
 }
 elseif(arg0 == "hawkeye") {
 	script = script.get("Hawkeye");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Hawkeye", "system/hawkeye", "utils/u_general");
+	script.startNamed("Hawkeye", "utils/u_error", "system/hawkeye", "utils/u_general");
 }
 elseif(arg0 == "herobrine") {
 	script = script.get("Herobrine");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Herobrine", "system/herobrine", "utils/u_general");
+	script.startNamed("Herobrine", "utils/u_error", "system/herobrine", "utils/u_general");
 }
 elseif(arg0 == "loom") {
 	script = script.get("Loom");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Loom", "system/loom");
+	script.startNamed("Loom", "utils/u_error", "system/loom", "utils/u_general");
 }
 elseif(arg0 == "perms") {
 	script.start("system/perms", "utils/u_general");
@@ -3083,80 +3105,80 @@ elseif(arg0 == "pumpkin") {
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Pumpkin", "system/pumpkin", "utils/u_general");
+	script.startNamed("Pumpkin", "utils/u_error", "system/pumpkin", "utils/u_general");
 }
 elseif(arg0 == "stats") {
 	script = script.get("Ranklist");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Ranklist", "system/ranklist", "utils/u_general", "utils/u_games");
+	script.startNamed("Ranklist", "utils/u_error", "system/ranklist", "utils/u_general", "utils/u_games");
 }
 elseif(arg0 == "scheduler") {
 	script = script.get("Scheduler");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Scheduler", "system/scheduler", "utils/u_general");
+	script.startNamed("Scheduler", "utils/u_error", "system/scheduler", "utils/u_general");
 }
 elseif(arg0 == "shop") {
 	script = script.get("Shops");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Shops", "system/chestshops", "utils/u_general");
+	script.startNamed("Shops", "utils/u_error", "system/chestshops", "utils/u_general");
 }
 elseif(arg0 == "mails") {
 	script = script.get("Mails");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Mails", "system/mailsystem", "utils/u_general");
+	script.startNamed("Mails", "utils/u_error", "system/mailsystem", "utils/u_general");
 }
 elseif(arg0 == "ticket") {
 	script = script.get("Ticket");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Ticket", "system/tickets", "utils/u_general");
+	script.startNamed("Ticket", "utils/u_error", "system/tickets", "utils/u_general");
 }
 elseif(arg0 == "timber") {
 	script = script.get("Timber");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Timber", "system/timber", "utils/u_general");
+	script.startNamed("Timber", "utils/u_error", "system/timber", "utils/u_general");
 }
 elseif(arg0 == "story") {
 	script = script.get("Story");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Story", "system/story", "utils/u_general");
+	script.startNamed("Story", "utils/u_error", "system/story", "utils/u_general");
 	script = script.get("QuestsAdmont");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("QuestsAdmont", "story/admont/core", "utils/u_general", "utils/u_quest");
+	script.startNamed("QuestsAdmont", "utils/u_error", "story/admont/core", "utils/u_general", "utils/u_quest");
 	script = script.get("QuestsSchiffbruch");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("QuestsSchiffbruch", "story/schiffbruch/core", "utils/u_general", "utils/u_quest");
+	script.startNamed("QuestsSchiffbruch", "utils/u_error", "story/schiffbruch/core", "utils/u_general", "utils/u_quest");
 }
 elseif(arg0 == "sitting") {
 	script = script.get("Sitting");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Sitting", "system/sitting", "utils/u_general");
+	script.startNamed("Sitting", "utils/u_error", "system/sitting", "utils/u_general");
 }
 elseif(arg0 == "survival") {
 	script = script.get("Survival");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Survival", "system/survival", "utils/u_general");
+	script.startNamed("Survival", "utils/u_error", "system/survival", "utils/u_general");
 }
 elseif(arg0 == "voxel") {
 	script = script.get("Voxel");

+ 34 - 4
system/damage.txt

@@ -5,6 +5,20 @@ event.load("entity_join");
 
 entities_list = list.new();
 
+permanent_name = set.new();
+set.add(permanent_name, "villager");
+set.add(permanent_name, "wandering_trader");
+
+permanent_tamed_name = set.new();
+set.add(permanent_tamed_name, "wolf");
+set.add(permanent_tamed_name, "cat");
+set.add(permanent_tamed_name, "horse");
+set.add(permanent_tamed_name, "donkey");
+set.add(permanent_tamed_name, "mule");
+set.add(permanent_tamed_name, "skeleton_horse");
+set.add(permanent_tamed_name, "zombie_horse");
+set.add(permanent_tamed_name, "parrot");
+
 msg("dev", "§bDamage §rloaded.");
 @wait
 wait();
@@ -20,7 +34,6 @@ if(isLiving(animal) && !isPlayer(animal)) {
 }
 goto("wait");
 
-
 @entity_join
 if(isLiving(entity) && !isPlayer(entity)) {
 	updateEntityName(entity);
@@ -75,16 +88,33 @@ function updateEntityName(living_entity) {
 	heart_index = text.indexOf(entity_name, "❤", 0);
 	if(heart_index == -1) {
 		//Kein Herz gefunden
-		entity.setName(living_entity, concat(health, "/", max_health, " §c❤\n", entity_name), true);
+		setEntityName(living_entity, health, max_health, entity_name);
 		return;
 	}
 		
 	next_new_line = text.indexOf(entity_name, "\n", heart_index);
 	if(next_new_line == -1) {
 		//Rechts vom Herz keine New-Line gefunden
-		entity.setName(living_entity, concat(health, "/", max_health, " §c❤"), true);
+		setEntityName(living_entity, health, max_health, null);
 		return;
 	}
 	entity_name = text.subString(entity_name, next_new_line + 1, text.length(entity_name));
-	entity.setName(living_entity, concat(health, "/", max_health, " §c❤\n", entity_name), true);
+	setEntityName(living_entity, health, max_health, entity_name);
+}
+
+function setEntityName(living_entity, health, max_health, entity_name) {
+	entity_type = entity.getType(living_entity);
+	permanent = false;
+	if(set.contains($permanent_name, entity_type)) {
+		permanent = true;
+	} elseif(set.contains($permanent_tamed_name, entity_type)) {
+		if(pet.isTamed(living_entity)) {
+			permanent = true;
+		}
+	}
+	if(entity_name == null) {
+		entity.setName(living_entity, concat(health, "/", max_health, " §c❤"), permanent);
+		return;
+	}
+	entity.setName(living_entity, concat(health, "/", max_health, " §c❤\n", entity_name), permanent);
 }

+ 0 - 4
system/hawkeye.txt

@@ -1,7 +1,3 @@
-/*TODO:
-undo?
-*/
-
 /*
 /hawkeye search <parameters>
 Parameters Examples:

+ 1 - 0
system/skills.txt

@@ -0,0 +1 @@
+//Hier werden alle Events abgefangen und beeinflusst, je nachdem ob ein Skill aktiv ist oder nicht

+ 4 - 4
system/survival.txt

@@ -358,11 +358,11 @@ if(!isPlayer(living_entity)) {
 		goto("wait");
 	}
 	pet_type = entity.getType(living_entity);
-	if(pet_type == "wolf" || pet_type == "cat") {
+	if(pet_type == "wolf" || pet_type == "cat" || pet_type == "parrot" || pet_type == "horse") {
 		if(pet.isTamed(living_entity)) {
-			owner = pet.getOwner(living_entity);
-			if(owner == damager) {
-				if(player.getNoPetDamage(player)) {
+			owner_uuid = pet.getOwner(living_entity);
+			if(owner_uuid == player.getUuid(damager)) {
+				if(player.getNoPetDamage(damager)) {
 					cancel = true;
 				}
 			}

+ 0 - 0
system/vote.txt


+ 17 - 9
test.txt

@@ -1,11 +1,19 @@
-event.load("container_click");
+msg("dev", "start");
 
-@wait
-wait();
+function throw() {
+	 msg("wusi");
+}
+throw();
+msg("dev", "never");
 
-msg("dev", type);
-msg("dev", event);
-msg("dev", slot);
-cancel = true;
-
-goto("wait");
+@on_error
+msg("dev", error_stacktrace);
+msg("dev", error_message);
+msg("dev", error_name);
+msg("dev", error_function);
+if(1 == 2) {
+    msg("dev", "if");
+} else {
+    msg("dev", "else");
+}
+msg("dev", "end");

+ 11 - 0
utils/u_error.txt

@@ -0,0 +1,11 @@
+error_counter = 0;
+@on_error
+error_counter++;
+if(error_counter > 1) {
+	snuvi.debug("Error Handler activated");
+	snuvi.debug("Restarting script...");
+	if(error_counter >= 100) {
+		snuvi.debug("Script terminated. Endless loop.");
+		term();
+	}
+}

+ 3 - 0
utils/u_skills.txt

@@ -0,0 +1,3 @@
+function executeSkill(player, skillname) {
+	
+}