Skocz do zawartości
  • 0

Sprawdzanie uzycia komendy


Glicz

Pytanie

Dzień dobry!

Chciałbym do mojego skryptu dodać, że jak w ciągu 10 minut gracz nie wykona pewnej komendy to się coś wykona, tylko nie wiem jak sprawdzić czy w ciągu 10 minut nie użył tej komendy.

 

Z góry dziękuję!

Edytowane przez Michix
Odnośnik do komentarza
https://skript.pl/temat/41134-sprawdzanie-uzycia-komendy/
Udostępnij na innych stronach

6 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
42 minuty temu, Michix napisał:

Dzień dobry!

Chciałbym do mojego skryptu dodać, że jak w ciągu 10 minut gracz nie wykona pewnej komendy to się coś wykona, tylko nie wiem jak sprawdzić czy w ciągu 10 minut nie użył tej komendy.

 

Z góry dziękuję!

on command "/twojakomenda":
	if {odliczanie::%player%} is set:
		set {komenda::%player%} to true

Musisz sobie dostosować w tym komendę.

set {odliczanie::%player%} to now
while player is online:
	if difference between {odliczanie::%player%} and now is greater than or equal to 10 minutes:
		exit loop
		clear {odliczanie::%player%}
		if {komenda::%player%} is not set:
			#twój kod
	wait 1 second

Natomiast to jest pętla odmierzająca czas, wrzuć ją sobie w kod tam, gdzie ma się zaczynać te odliczanie.

Odnośnik do komentarza
https://skript.pl/temat/41134-sprawdzanie-uzycia-komendy/#findComment-257004
Udostępnij na innych stronach

  • 0

Ja bym zrobił coś takiego:

 

every 10 second:
	loop all players
		if {czas.%loop-player%} > 0:
			remove 10 from {czas.%loop-player%}
		if {czas.%loop-player%} <= 0:
			tutaj cos sie wykonuje sobie napisz co chcesz         
            
command /tatwojakomenda [<text>]:
	trigger:
		if {czas.%player%} > 0:
			clear {czas.%player%}
			send "Costam bo nie wiem o co chodzi" to player
	

I teraz dopisujesz wartość {czas.%player%} do Twojej komendy, ktora bedzie wymagała wpisania komendy w przeciągu 10 minut, czyli ustawiasz tą wartość na 600
Czyli: set {czas.%player%} to 600

 

Edit: Kolega wyżej zrobił to lepiej :D

Edytowane przez kiroxtv
Odnośnik do komentarza
https://skript.pl/temat/41134-sprawdzanie-uzycia-komendy/#findComment-257005
Udostępnij na innych stronach

  • 0
13 minut temu, kiroxtv napisał:

Ja bym zrobił coś takiego:

 


every 10 second:
	loop all players
		if {czas.%loop-player%} > 0:
			remove 10 from {czas.%loop-player%}
		if {czas.%loop-player%} <= 0:
			tutaj cos sie wykonuje sobie napisz co chcesz         
            
command /tatwojakomenda [<text>]:
	trigger:
		if {czas.%player%} > 0:
			clear {czas.%player%}
			send "Costam bo nie wiem o co chodzi" to player
	

I teraz dopisujesz wartość {czas.%player%} do Twojej komendy, ktora bedzie wymagała wpisania komendy w przeciągu 10 minut, czyli ustawiasz tą wartość na 600
Czyli: set {czas.%player%} to 600

 

Edit: Kolega wyżej zrobił to lepiej :D

Przewaga pętli while nad periodicalem jest taka, że tą pierwszą można w każdej chwili wstrzymać, natomiast tej drugiej już niezbyt (nie mówię o sprawdzaniu warunków).

Poza tym zdefiniowałeś nową komendę, a tymczasem lepiej jest po prostu sprawdzać eventem czy tę komendę wykonał.

Edytowane przez Kormic
Odnośnik do komentarza
https://skript.pl/temat/41134-sprawdzanie-uzycia-komendy/#findComment-257007
Udostępnij na innych stronach

  • 0
30 minut temu, Kormic napisał:

on command "/twojakomenda":
	if {odliczanie::%player%} is set:
		set {komenda::%player%} to true

Musisz sobie dostosować w tym komendę.


set {odliczanie::%player%} to now
while player is online:
	if difference between {odliczanie::%player%} and now is greater than or equal to 10 minutes:
		exit loop
		clear {odliczanie::%player%}
		if {komenda::%player%} is not set:
			#twój kod
	wait 1 second

Natomiast to jest pętla odmierzająca czas, wrzuć ją sobie w kod tam, gdzie ma się zaczynać te odliczanie.

Chyba nie zrozumiałeś o co mi chodzi. Chce, że jak gracz nie zapłaci "rachunków za dom" (jak kolwiek to nie brzmi) to wykonuje komende na usuniecie domu. Narazie mam coś takiego:

command /plot [<text>]:
	trigger:
		if arg 1 is "auto" or "claim":
			if {dom::%player%} is "false" or not set:
				if %player's balance% >= 50
					execute player command "plot %arg 1%"
					set {dom::%player%} to true
					remove 50 from %player's balance%
					send "2Pomyslnie zakupiono dom!"
					stop
				send "&cNie masz wystarczajacej ilosci monet na koncie! /warp praca"
			else:
				if {dom::%player%} is "true":
					stop
					send "&2Juz posiadasz dom!"
				send "&cWystapil nieznany blad! Przepraszamy!"
		else:
			execute player command "plot %arg 1%"
			
comamnd /zr
	trigger:
		if %player's balance% >= 25
			remove 25 from %player's balance%
			send "&2Pomyslnie zaplacono rachunki za dom!"
			stop
		send "&cNie masz wystarczajacej ilosci monet na koncie! /warp praca"
			
every 10 hours:
	if {dom::%player%} is "true"
		send "<command:/zr>&cMusisz zaplacic rachunki za dom! Kliknij na ta wiadomosc aby zaplacic!"

i chce do tego "every 10 hours" zrobić, że jak gracz nie użyje komendy /zr w ciągu 10 minut to wykonuje komendę na usunięcie działki (sam ją ustawie)

Edytowane przez Michix
Odnośnik do komentarza
https://skript.pl/temat/41134-sprawdzanie-uzycia-komendy/#findComment-257008
Udostępnij na innych stronach

  • 0
comamnd /zr
	trigger:
		if %player's balance% >= 25
			remove 25 from %player's balance%
			send "&2Pomyslnie zaplacono rachunki za dom!"
			delete {dom.niezaplacony::%player%}
			stop
		send "&cNie masz wystarczajacej ilosci monet na koncie! /warp praca"
			
every 10 hours:
	if {dom::%player%} is "true"
		set {dom.niezaplacony::%player%} to true
		send "<command:/zr>&cMusisz zaplacic rachunki za dom! Kliknij na ta wiadomosc aby zaplacic!"
		wait 10 minutes
		if {dom.niezaplacony::%player%} is true:
			send "&cNiezaplaciles rachunkow!"

Gdy wysyła się wiadomość, ustawia się też specjalna zmienna {dom.niezaplacony} która po dziesięciu minutach jest sprawdzana. Jeżeli wartość tej zmiennej się nie zmieniła, oznacza że gracz nie zapłacił rachunków. Wartość tej zmiennej zmienia się po użyciu komendy /zr

Jednak twój kod nie wygląda na działający (w every 10 hours nie ma player'a, używasz %player's balance% w miejscach gdzie nie ma "", wartości "true" i "false" to nadal tekst, nie zmienna prawda/fałsz)

Odnośnik do komentarza
https://skript.pl/temat/41134-sprawdzanie-uzycia-komendy/#findComment-257020
Udostępnij na innych stronach

  • 0
23 minuty temu, MsMaciek napisał:

comamnd /zr
	trigger:
		if %player's balance% >= 25
			remove 25 from %player's balance%
			send "&2Pomyslnie zaplacono rachunki za dom!"
			delete {dom.niezaplacony::%player%}
			stop
		send "&cNie masz wystarczajacej ilosci monet na koncie! /warp praca"
			
every 10 hours:
	if {dom::%player%} is "true"
		set {dom.niezaplacony::%player%} to true
		send "<command:/zr>&cMusisz zaplacic rachunki za dom! Kliknij na ta wiadomosc aby zaplacic!"
		wait 10 minutes
		if {dom.niezaplacony::%player%} is true:
			send "&cNiezaplaciles rachunkow!"

Gdy wysyła się wiadomość, ustawia się też specjalna zmienna {dom.niezaplacony} która po dziesięciu minutach jest sprawdzana. Jeżeli wartość tej zmiennej się nie zmieniła, oznacza że gracz nie zapłacił rachunków. Wartość tej zmiennej zmienia się po użyciu komendy /zr

Jednak twój kod nie wygląda na działający (w every 10 hours nie ma player'a, używasz %player's balance% w miejscach gdzie nie ma "", wartości "true" i "false" to nadal tekst, nie zmienna prawda/fałsz)

Nie odmierzaj czasu poprzez delaye, to jest jeden z najgorszych sposobów. Jeśli serwer wywali, to delay zostanie wycofany i całkiem możliwe, że gracz uniknie zapłacenia rachunku przez następne 10 godzin.

Co do kodu, spróbuj tak, ale nie mam pewności co do tej pętli 'while' czy aby przypadkiem nie spowoduje spowolnienia pętli 'every 10 hours:'. W każdym bądź razie, sprawdź:

command /plot [<text>]:
	trigger:
		if arg 1 is "auto" or "claim":
			if {dom::%player%} is "false" or not set:
				if player's balance >= 50
					execute player command "plot %arg 1%"
					set {dom::%player%} to true
					remove 50 from player's balance
					send "&2Pomyslnie zakupiono dom!"
					stop
				send "&cNie masz wystarczajacej ilosci monet na koncie! /warp praca"
			else:
				if {dom::%player%} is "true":
					send "&2Juz posiadasz dom!"
					stop
				send "&cWystapil nieznany blad! Przepraszamy!"
		else:
			execute player command "plot %arg 1%"
			
on command "/zr":
	if {odliczanie::%player%} is set:
		set {komenda::%player%} to true			
			
command /zr:
	trigger:
		if player's balance >= 25
			remove 25 from player's balance
			send "&2Pomyslnie zaplacono rachunki za dom!"
			stop
		send "&cNie masz wystarczajacej ilosci monet na koncie! /warp praca"
			
every 10 hours:
	loop all players:
		if {dom::%loop-player%} is "true":
			send "<command:/zr>&cMusisz zaplacic rachunki za dom! Kliknij na ta wiadomosc aby zaplacic!"
			set {odliczanie::%loop-player%} to now
			while loop-player is online:
				if difference between {odliczanie::%loop-player%} and now is greater than or equal to 10 minutes:
					exit loop
					clear {odliczanie::%loop-player%}
					if {komenda::%loop-player%} is not set:
						execute console command "/dom usun %loop-player%"
					else:
						clear {komenda::%loop-player%}
				wait 1 second

 

Odnośnik do komentarza
https://skript.pl/temat/41134-sprawdzanie-uzycia-komendy/#findComment-257023
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ę...