Skocz do zawartości
  • 0

Pomoc w ulepszeniu skryptu


Pytanie

Posiadam dobrze działający skrypt na szpital (Kiedy gracz umrze trafia w wyznaczone miejsce na wyznaczony czas po czym wychodzi ze ,,szpitala")  Tylko jest jeden problem i proszę was o pomoc.

Problem:

Gracz po śmierci trafia do szpitala, wszystko dobrze działa do czasu kiedy gracz nie wyjdzie z serwera podczas pobytu w szpitalu (lub jeśli bedzie restart serwera a gracz będzie w szpitalu), wtedy gracz utyka w szpitalu na zawsze i już skrypt go automatycznie nie wypuści.

(chodzi o to aby po wyjściu gracza z serwera skrypt zatrzymał odliczanie do opuszczenia szpitala, a po ponownym dołączeniu gracza kontynuował odliczanie i przeteleportował gracza na {exit.hospital})                   

Proszę o pomoc, z góry dziękuję.

 

Edytowane przez Czupakan
Odnośnik do komentarza
https://skript.pl/temat/51302-pomoc-w-ulepszeniu-skryptu/
Udostępnij na innych stronach

3 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 1

Są trzy szkoły takiego rozwiązania.

1. Jeżeli chcesz aby przetrwać ten czas w grze, to polecam ustawić zmienną na jakąś wartość i zrobić pętlę główną.

on respawn:
	set {zmienna.dla.gracza} to 3600*60
every 1 seconds:
	loop all players:
		if {zmienna.dla.gracza} is larger than 0:
			remove 1 from {zmienna.dla.gracza}
		else:
			#Wyjscie ze szpitala.

Tak by było najprościej, ale jeżeli byś chciał jednak czas realny to można to zrobić na dwa sposoby:

2. Użyć w eventach on join i on respawn pętlę while, tam sprawdzać czy czas już minął:

on respawn:
	set {zmienna.dla.gracza} to now
....
difference between {zmienna.dla.gracza} and now is larger than 1 hour:

i w pętli delay np 1 sekundowy lub więcej.

3. Podobny sposób jak numer 1. Lecz nie bierzemy pętli graczy, tylko pętlę zbiorowej zmiennej. (Tutaj taka mała uwaga, czas będzie odejmowany gdy serwer jest włączony.)

on respawn:
	set {szpital::%player%} to 3600*60
	#code here
on join:
	wait 60 seconds
	if {szpital::%player%} is smaller than or equal to 0:
		#Wyjscie ze szpitala
every 1 second:
	loop {szpital::*}:
		if loop-value is larger than 0:
			remove 1 from {szpital::%loop-index%}
		else:
			if "%loop-index%" parsed as offlineplayer is online:
				#Wyjście ze szpitala

 

Odnośnik do komentarza
https://skript.pl/temat/51302-pomoc-w-ulepszeniu-skryptu/#findComment-315842
Udostępnij na innych stronach

  • 0

Niestety ale te sposoby nie działają, jeśli gracz będący w szpitalu wyjdzie i wejdzie na serwer to skrypt nie wie już że on jest w szpitalu przez co nie odlicza czasu do wyjścia oraz nie wypuszcza gracza.

Może ja coś źle robię, jeśli byłbyś tak miły i połączył te skrypty oraz ustawił lub napisał jakiś to byłbym wdzięczny.

Odnośnik do komentarza
https://skript.pl/temat/51302-pomoc-w-ulepszeniu-skryptu/#findComment-315843
Udostępnij na innych stronach

  • 1
Spoiler
options:
	czas: 60*5 #5 minut
on respawn:
	teleport player to {Spawn.hospital}
	send "&aTrawiles do Szpitala! Musisz poczekac 5 minut!"
	set {hospital::%player%} to {@czas}
	stop
command /sethospital:
	permission: hospital.set
	permission message: "You Don't have Permission!"
	trigger:
		set {Spawn.hospital} to location of player
		send "&aUstawiles Szpital w twojej lokalizacji!"
		stop
command /exithospital:
	permission: Hospital.exit.set
	permission message: "&cYou Don't have Permission!"
	trigger:
		set {exit.hospital} to location of player
		send "&aUstawiles Wyjscie z szpitala!"
command /czashospital:
	trigger:
		if {hospital::%player%} is set:
			send "Pozostalo: %{hospital::%player%}% sekund do wyjscia ze szpitala."
			stop
		send "Nie jestes w szpitalu"
on chat:
	if {hospital::%player%} is set:
		cancel event
every 1 seconds:
	loop all players:
		if {hospital::%loop-player%} is larger than 0:
			remove 1 from {hospital::%loop-player%}
		if {hospital::%loop-player%} is smaller than or equal to 0:
			send "&eMozesz wyjsc ze szpitala!" to loop-player
			clear {hospital::%loop-player%}
			teleport loop-player to {exit.hospital}

 

Powinno działać :) 

Edytowane przez knugi
Poprawka kodu.
Odnośnik do komentarza
https://skript.pl/temat/51302-pomoc-w-ulepszeniu-skryptu/#findComment-315923
Udostępnij na innych stronach

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ę...