Skocz do zawartości
  • 0

Skrypt na losowe miejsce respawnu przy pierwszym wejściu na serwer/po śmierci.


Pytanie

8 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
2 minuty temu, Uzi napisał:


Dzień Dobry,
Poprosiłbym o skrypt na losowe miejsce respawnu przy pierwszym wejściu na serwer/po śmierci.
Oczywiście na wersję 1.16.3

:)

Proszę. Funkcja getRandomLoc() autorstwa użytkownika ZiemniaQ.

function getRandomLoc(xmin: integer=-1000, xmax: integer=1000, zmin: integer=-1000, zmax: integer=1000, world: text="world") :: location:
	while {_return} is not set:
		set {_x} to random integer between {_xmin} and {_xmax}
		set {_z} to random integer between {_zmin} and {_zmax}
		set {_loc} to highest block at location at {_x}, 0, {_z} in world ({_world} parsed as world)
		if block at {_loc} != lava or water:
			add 1 to y-loc of {_loc}
			if (block at {_loc}) and (block above block at {_loc}) != lava:
				set {_return} to {_loc}
	return {_return}
	
on first join:
	teleport player to getRandomLoc()
	
on respawn:
	teleport player to getRandomLoc()

 

Edytowane przez Kormic
  • 0
W dniu 22.01.2021 o 18:23, Kormic napisał:

Proszę. Funkcja getRandomLoc() autorstwa użytkownika ZiemniaQ.


function getRandomLoc(xmin: integer=-1000, xmax: integer=1000, zmin: integer=-1000, zmax: integer=1000, world: text="world") :: location:
	while {_return} is not set:
		set {_x} to random integer between {_xmin} and {_xmax}
		set {_z} to random integer between {_zmin} and {_zmax}
		set {_loc} to highest block at location at {_x}, 0, {_z} in world ({_world} parsed as world)
		if block at {_loc} != lava or water:
			add 1 to y-loc of {_loc}
			if (block at {_loc}) and (block above block at {_loc}) != lava:
				set {_return} to {_loc}
	return {_return}
	
on first join:
	teleport player to getRandomLoc()
	
on respawn:
	teleport player to getRandomLoc()

 

po wejściu teleportuje, ale wywala też serwer

  • 0
5 minut temu, Uzi napisał:

po wejściu teleportuje, ale wywala też serwer

Jak się nazywa twój świat? "world"?

Dzieje się to tylko w przypadku wejścia na serwer czy również gdy gracz jest teleportowany przy respawnie?

Czy są jakieś błędy w konsoli przy wywaleniu serwera?

Edytowane przez Kormic
  • 0
5 minut temu, Kormic napisał:

Jak się nazywa twój świat? "world"?

Dzieje się to tylko w przypadku wejścia na serwer czy również gdy gracz jest teleportowany przy respawnie?

Czy są jakieś błędy w konsoli przy wywaleniu serwera?

Miałem właśnie wysyłać:

 

[19:10:51] [Paper Watchdog Thread/ERROR]: --- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH - git-Paper-231 (MC: 1.16.3) ---
[19:10:51] [Paper Watchdog Thread/ERROR]: The server has not responded for 10 seconds! Creating thread dump
[19:10:51] [Paper Watchdog Thread/ERROR]: ------------------------------
[19:10:51] [Paper Watchdog Thread/ERROR]: Server thread dump (Look for plugins here before reporting to Paper!):
[19:10:51] [Paper Watchdog Thread/ERROR]: ------------------------------
[19:10:51] [Paper Watchdog Thread/ERROR]: Current Thread: Server thread
[19:10:51] [Paper Watchdog Thread/ERROR]: PID: 22 | Suspended: false | Native: false | State: RUNNABLE
[19:10:51] [Paper Watchdog Thread/ERROR]: Stack:
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.variables.VariablesMap.getVariable(VariablesMap.java:88)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.variables.Variables.getVariable(Variables.java:322)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.Variable.getRaw(Variable.java:281)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.Variable.get(Variable.java:288)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.Variable.getConverted(Variable.java:432)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.Variable.getAll(Variable.java:661)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.Variable.getArray(Variable.java:653)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.util.Direction$1.get(Direction.java:381)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.util.Direction$1.get(Direction.java:1)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.util.SimpleExpression.getArray(SimpleExpression.java:101)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.util.ConvertedExpression.getArray(ConvertedExpression.java:166)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.expressions.base.WrapperExpression.get(WrapperExpression.java:91)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.util.SimpleExpression.check(SimpleExpression.java:160)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.conditions.CondCompare.check(CondCompare.java:309)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.Condition.run(Condition.java:56)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.Conditional.walk(Conditional.java:51)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.TriggerItem.walk(TriggerItem.java:89)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.Trigger.execute(Trigger.java:57)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.function.ScriptFunction.execute(ScriptFunction.java:90)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.function.Function.execute(Function.java:136)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.function.FunctionReference.execute(FunctionReference.java:266)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.function.ExprFunctionCall.get(ExprFunctionCall.java:44)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.util.SimpleExpression.getArray(SimpleExpression.java:101)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.util.Direction$1.get(Direction.java:381)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.util.Direction$1.get(Direction.java:1)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.util.SimpleExpression.getArray(SimpleExpression.java:101)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.util.SimpleExpression.getSingle(SimpleExpression.java:59)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.effects.EffTeleport.execute(EffTeleport.java:68)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.Effect.run(Effect.java:52)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.TriggerItem.walk(TriggerItem.java:61)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.TriggerItem.walk(TriggerItem.java:89)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.lang.Trigger.execute(Trigger.java:57)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.SkriptEventHandler.check(SkriptEventHandler.java:154)
[19:10:51] [Paper Watchdog Thread/ERROR]: ch.njol.skript.SkriptEventHandler$1.execute(SkriptEventHandler.java:112)
[19:10:51] [Paper Watchdog Thread/ERROR]: co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80)
[19:10:51] [Paper Watchdog Thread/ERROR]: org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70)
[19:10:51] [Paper Watchdog Thread/ERROR]: org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:607)
[19:10:51] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_16_R2.PlayerList.postChunkLoadJoin(PlayerList.java:273)
[19:10:51] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_16_R2.PlayerList.lambda$null$1(PlayerList.java:220)
[19:10:51] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_16_R2.PlayerList$$Lambda$5061/1128552947.run(Unknown Source)
[19:10:51] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_16_R2.PlayerConnection.tick(PlayerConnection.java:154)
[19:10:51] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_16_R2.NetworkManager.a(NetworkManager.java:385)
[19:10:51] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_16_R2.ServerConnection.c(ServerConnection.java:145)
[19:10:51] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_16_R2.MinecraftServer.b(MinecraftServer.java:1383)
[19:10:51] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_16_R2.DedicatedServer.b(DedicatedServer.java:371)
[19:10:51] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_16_R2.MinecraftServer.a(MinecraftServer.java:1211)
[19:10:51] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_16_R2.MinecraftServer.w(MinecraftServer.java:999)
[19:10:51] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_16_R2.MinecraftServer.lambda$a$0(MinecraftServer.java:177)
[19:10:51] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_16_R2.MinecraftServer$$Lambda$3043/1648385724.run(Unknown Source)
[19:10:51] [Paper Watchdog Thread/ERROR]: java.lang.Thread.run(Thread.java:745)
[19:10:51] [Paper Watchdog Thread/ERROR]: ------------------------------


Jak wchodzę na serwer pierwszy raz tak się dzieje. Wcześniej używałem podobnego skryptu też od Ciebie (zmodyfikowałem go tam) i jakoś działał 4 miesiące na tej wersji z tymi pluginami ;/ świat nazywa się "world"

  • 0
1 minutę temu, Uzi napisał:

Jak wchodzę na serwer pierwszy raz tak się dzieje. Wcześniej używałem podobnego skryptu też od Ciebie (zmodyfikowałem go tam) i jakoś działał 4 miesiące na tej wersji z tymi pluginami ;/ świat nazywa się "world"

W takim razie spróbujemy opóźnić teleportację.

function getRandomLoc(xmin: integer=-1000, xmax: integer=1000, zmin: integer=-1000, zmax: integer=1000, world: text="world") :: location:
	while {_return} is not set:
		set {_x} to random integer between {_xmin} and {_xmax}
		set {_z} to random integer between {_zmin} and {_zmax}
		set {_loc} to highest block at location at {_x}, 0, {_z} in world ({_world} parsed as world)
		if block at {_loc} != lava or water:
			add 1 to y-loc of {_loc}
			if (block at {_loc}) and (block above block at {_loc}) != lava:
				set {_return} to {_loc}
	return {_return}
	
on first join:
	wait 1 tick
	teleport player to getRandomLoc()
	
on respawn:
	set respawn location to getRandomLoc()

Jeżeli nie pomoże, zwiększ delay na przykładowo 'wait 10 ticks', 'wait 1 second', itd.

  • 0

ŁEO ŁEO
 

świat world:

  • albo nie istnieje
  • albo jest pusty
  • albo jest zalany wodą / lawą
Edytowane przez PanMaruda
  • 0
Teraz, PanMaruda napisał:

ŁEO ŁEO
 

świat world:

  • albo nie istnieje
  • albo jest pusty
  • albo jest zalany wodą

- istnieje,
- są bloczki
- nie,

wszedłem na drugim koncie i wywaliło ;/

  • 0
Teraz, Uzi napisał:

- istnieje,
- są bloczki
- nie,

wszedłem na drugim koncie i wywaliło ;/

wywala bo jest funkcja while....

sprawdź to - (ale skoro while nie działa to coś musi być nie tak i pewnie ten skrypt będzie wywalał brak lokacji)
 

function getRandomLoc(xmin: integer=-1000, xmax: integer=1000, zmin: integer=-1000, zmax: integer=1000, world: text="world") :: location:
	loop 500 times:
		{_return} is not set
		set {_x} to random integer between {_xmin} and {_xmax}
		set {_z} to random integer between {_zmin} and {_zmax}
		set {_loc} to highest block at location at {_x}, 0, {_z} in world ({_world} parsed as world)
		if block at {_loc} != lava:
			add 1 to y-loc of {_loc}
			if (block at {_loc}) and (block above block at {_loc}) != lava:
				set {_return} to {_loc}
	return {_return}
	
on rightclick:
	set {_} to getRandomLoc()
	if {_} is set:
		teleport player to {_}
		send "&ateleportowano do losowej lokalizacji"
	else:
		send "&cNiestety nie udało się wygenerować losowej lokalizacji"

sprawdź to sobie - działa po kliknięciu prawym przyciskiem myszki

dodatkowo wypisz wersję skripta i posiadane dodatki

zobacz czy teleportuje, czy działa i tak dalej jak nie to pisz
 

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...