Skocz do zawartości
  • 0
XANT3R

Skrypt na losowanie vipa za sztabki złota

Pytanie

Użytkownik

Potrzebuję jeszcze skryptu na losowanie vip.

Zasada działania:

Gracz wpisywałby /los, a gracz po pobraniu odpowiedniej liczby sztabek złota (niech będzie ustawione na 5 sztabek złota, potem zmienię) dostawał by los w formie papierka, a po kliknięciu nim mógłby wylosować rangę VIP na 2 dni (Komenda do użycia na dodanie rangi: /pex user nick group add VIP * 2d). Gracz ma mieć 20% szans na wygranie vipa. Najlepiej jakby komenda /los działała co miesiąc i by nikt nie mógł kupić więcej niż jednego losu w miesiącu.

Edytowane przez XANT3R

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

9 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Użytkownik
  • 0
options:
	ilosc : 5
	komenda : pex user %player% group add VIP * 2d

command /los:
	trigger:
		if sender is console:
			send "Niestety tylko dla graczy"
			stop
		else:
			if player has {@ilosc} gold ingot:
				set {_cooldown} to difference between {los::%player%} and now
				if {_cooldown} is less than 30 days:
					send "&7[&6LOS&7] &rMusisz odczekac jeszcze %difference between 30 days and {_cooldown}%"
					stop
				add 1 paper named "&6LOS" to the player's inventory
				remove {@ilosc} gold ingot from player's inventory
				send "&7[&6LOS&7] &rOtrzymales los na VIP'a!"
				set {los::%player%} to now
			else:
				send "&7[&6LOS&7] &rNiestety nie masz wystarczajacej ilosci sztabek zlota: &e{@ilosc}"
on right click:
	if player's tool is paper named "&6LOS":
		remove 1 paper named "&6LOS" from player's inventory
		chance of 20%:
			execute console command "{@komenda}"
			send "&aBrawo! Udalo ci sie wylosowac &6VIPA!" to the player
			stop
		chance of 80%:
			send "&cNiestety nie tym razem :[" to the player
				
command /clearlos [<offlineplayer>]:
	trigger:
		if sender has permissions "los.admin":
			if offlineplayer-arg is set:
				delete {los::%offlineplayer-arg%}
				send "&7[&6LOS&7] &rCooldown zostal usuniety dla gracza: &e%offlineplayer-arg%"
			else:
				send "&7[&6LOS&7] &rPoprawne uzycie: &e/clearlos <nick>"
		else:
			send "&4Nie masz uprawnien!"

 

 

Jedynie dziwnie pokazuje odliczanie, bo to jest tak, że '29 days and 23.94 hours'

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik
  • 0
command /los [<text>]:
	trigger:
		if {los::%player%} = 0:
			if player has 5 gold ingot:
				set {los::%player%} to 30
				add 1 paper named "&6LOS" to the player's inventory
				send "&6Otrzymales los!" to the player
				stop
			else:
				send "&cNiestety nie masz 5x sztabka zlota" to the player
				stop
		else:
  			send "&cNiestety ale musisz jeszcze poczekac: %{los::%player%}% dni" to the player
			stop

every day:
	loop all players:
		if {los::%loop-player%} = 30:
			subtract 1 from {los::%loop-player%}
			if loop-player is online:
				send "&cMinal Tobie juz jeden dzien! Pozostalo: %{los::%loop-player%}%" to the loop-player
		else if {los::%loop-player%} = 0:
			if loop-player is online:
				send "&aJuz mozesz wykorzystac los" to the loop-player
on right click with a paper:
	if name of the player's tool is "&6LOS":
		chance of 20%:
			execute command "pex user %player% group set VIP"
			send "&aWYLOSOWALES &6VIPA!!!!!!!" to the player
			stop
		chance of 80%:
			send "&cNiestety nie udalo Ci sie tym razem." to the player
			add 1 apple named "&cNiestety" to the player
			stop
		stop
	stop

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik
  • 0

@kapi. Wczytuje skrypta, błędów nie było poza tabem którego poprawiłem ale gdy wpisuję /los po raz pierwszy już wyświetla mi komunikat: Niestety ale musisz jeszcze poczekac: <none> dni , w ogóle nie daje mi szansy na losowanie.

Edytowane przez XANT3R

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Moderator
  • 0

Skrypt przygotowany przez @kapi.'ego jest dobry, lecz nie bardzo dobry. Użycie w tym miejscu "every day" jest błędem. Gracz może przy tym nawet nigdy już nie uzyskać dostępu do losu, gdyż zwyczajnie podczas wywoływania tej funkcji nie będzie go na serwerze. Najlepszym sposobem byłoby tutaj po prostu ustawienie zmiennej gracza podczas użycia losu na unix time, a potem przy każdej próbie jego użycia sprawdzać czy od czasu zmiennej do teraz minął już miesiąc. Ten sposób jest najbardziej optymalny, gdyż unikamy tutaj taska, także najbardziej precyzyjny.

By po użyciu losu papier był usuwany z jego ekwipunku dodaj:

remove 1 of player's tool from player's inventory

Przed chance of 20%.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik
  • 0

Jeśli ktoś potrafi zrobić skrypt z zastosowaniem "unix time", to bardzo bym prosił. Skrypt ma odpowiadać za ważny element serwera, więc warto by był zrobiony poprawnie :) Nie twierdzę, że kapi zrobił skrypt źle, ale chciałbym mieć ulepszone to co on wykonał :)

Ważne info: Skrypt ma być wykonywany na 1.13.2 , więc proszę wziąć to pod uwagę.

Edytowane przez BrixNW

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Losowy awatar
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×