Skocz do zawartości
  • 0

Odliczanie czasu w komendzie


Pytanie

Witam, generalnie potrzebuję napisać to w taki sposób, żeby wartość po 5 minutach była ustawiona na false, problemem specjalnym to nie jest, zaś problemem jest variables, który pokazywałby ile czasu ochrony pvp zostało dla gracza po wpisaniu samej komendy /pvp. Proszę o pomoc!

 

Edytowane przez TakiJakTy
TakiJakTy

Wstawiam na code.skript.pl

Notatka dodana przez TakiJakTy

Odnośnik do komentarza
https://skript.pl/temat/36110-odliczanie-czasu-w-komendzie/
Udostępnij na innych stronach

1 odpowiedź na to pytanie

Rekomendowane odpowiedzi

  • 0

Tego nie można robić poprzez 'wait x seconds', nie dość że procesor obciąża to jeszcze łatwo zbugować. Trzeba zapisać sobie aktualny czas do zmiennej (najlepiej uniksowy w formie sekund) i potem sprawdzać czy czas danego wydarzenia (np. uderzenia gracza) jest większy o 300 sekund od czasu w zmiennej.

command /ochrona [<text>]:
	trigger:
		if arg 1 is "on":

			#teraz sprawdzamy czy zmienna z czasem istnieje, żeby nie było później błędów z nullem
			if {ochrona::%player%} is not set:

				#możemy ją sobie ustawić na np. 1, byle tylko była to liczba całkowita mniejsza od aktualnego czasu (który będzie dużą kilkucyfrową liczbą)
				set {ochrona::%player%} to 1

			#teraz trzeba zapisać aktualny czas w sekundach do zmiennej
			set {_now} to unix timestamp of now

			#sprawdzamy czy różnica pomiędzy aktualnym czasem, a czasem ze zmiennej gracza jest mniejszy niż 300 (sekund), jeżeli tak to ochrona gracza jest wyłączona, i może ją aktywować
			if ({_now} - {ochrona::%player%}) > 300:

				#ustawiamy zmienną gracza na aktualny czas
				set {ochrona::%player%} to {_now}
				send "&aAktywowałeś ochronę pvp"

			else:

				#różnica między aktualnym czasem, a zmienną gracza zwróci pozostały czas ochrony
				send "&cAktualnie jesteś jeszcze chroniony przez %({_now} - {ochrona::%player%})% sekund"


on damage of player:
	if attacker is a player:

		#zapisujemy czas do zmiennej i sprawdzamy czy różnica jest mniejsza od 300
		set {_now} to unix timestamp of now
		if ({_now} - {ochrona::%attacker%}) < 300:
			cancel event
			send "&cNie możesz atakować, masz włączoną ochronę przez %({_now} - {ochrona::%attacker%})% sekund"

		#i dla ofiary tak samo

 

Edytowane przez PanMaruda
Odnośnik do komentarza
https://skript.pl/temat/36110-odliczanie-czasu-w-komendzie/#findComment-231435
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Odpowiedz na pytanie...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

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