Skocz do zawartości
  • 0

Losowe miejsca pojedyńcze


Pytanie

Witam, mam prośbę aby mi ktoś ogarnoł kilka linijek skryptu, w którym jest 8 zmiennych (8 miejsc, spawnów) które za pomocą set są ustawione na location(x,y,z). I chcę, aby po zapętleniu graczy, każdemu zostało przydzielone 1 miejsce, i tylko jedno dla każdego gracza. Coś w stylu żeby jak ktoś dostanie miejsce, to żeby było blokowane dla innych.

Z góry dzięki.

Odnośnik do komentarza
https://skript.pl/temat/57672-losowe-miejsca-pojedy%C5%84cze/
Udostępnij na innych stronach

4 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 1
5 godzin temu, naujan napisał:

Witam, mam prośbę aby mi ktoś ogarnoł kilka linijek skryptu, w którym jest 8 zmiennych (8 miejsc, spawnów) które za pomocą set są ustawione na location(x,y,z). I chcę, aby po zapętleniu graczy, każdemu zostało przydzielone 1 miejsce, i tylko jedno dla każdego gracza. Coś w stylu żeby jak ktoś dostanie miejsce, to żeby było blokowane dla innych.

Z góry dzięki.

Proszę uprzejmie. Napisałem Panu funkcję realizująca opisane wyżej losowanie. Gracze mają przypisane lokalizacje w zmiennej {randomizedSpawnLocations::%nazwa gracza%} (bądź UUID gracza, w zależności od ustawień w pliku konfiguracyjnym pluginu Skript).

function assignSpawnsToPlayers(playersList: players, locationsList: locations):
	stop if size of {_playersList::*} != size of {_locationsList::*}
	loop {_playersList::*}:
		set {_randomLoc} to random element out of {_locationsList::*}
		set {randomizedSpawnLocations::%loop-value%} to {_randomLoc}
		remove {_randomLoc} from {_locationsList::*}

Załączam również przykład jej wykorzystania. Dodałem komentarze dla łatwiejszego zrozumienia.
Zaznaczam, że ani funkcja, ani poniższy kod ją wykorzystujący, nie były testowane.

command /teleportacja:
	permission: server.command.teleportacja
	trigger:
	
		# Tworzenie 8 lokalizacji, do których gracze będą teleportowani
		
		set {_locList::1} to location at (100, 100, 100) in world "world"
		set {_locList::2} to location at (200, 100, 200) in world "world"
		set {_locList::3} to location at (300, 100, 300) in world "world"
		set {_locList::4} to location at (400, 100, 400) in world "world"
		set {_locList::5} to location at (500, 100, 500) in world "world"
		set {_locList::6} to location at (600, 100, 600) in world "world"
		set {_locList::7} to location at (700, 100, 700) in world "world"
		set {_locList::8} to location at (800, 100, 800) in world "world"
		
		
		# Ustawienie ilości losowanych graczy (zabezpieczenie przed losowaniem 8 graczy,
		# gdy na serwerze jest mniej niż 8)
		
		set {_numberOfRandomPlayers} to min(size of all players, 8)
		
		
		# Wybieranie nie więcej niż 8 losowych graczy na serwerze
		
		while size of {_plList::*} < {_numberOfRandomPlayers}:
			set {_randomPlayer} to random player out of all players
			{_plList::*} doesn't contain {_randomPlayer}
			add {_randomPlayer} to {_plList::*}
			
			
		# Wykorzystanie napisanej wyżej funkcji
		
		assignSpawnsToPlayers({_plList::*}, {_locList::*})
		
		
		# Teleportacja graczy do przydzielonych im lokalizacji
		
		loop {_plList::*}:
			teleport loop-value to {randomizedSpawnLocations::%loop-value%}
			send "&aZostałeś przeteleportowany!" to loop-value

W razie ewentualnych problemów, bądź pytań, proszę śmiało pisać. Chętnie pomogę.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57672-losowe-miejsca-pojedy%C5%84cze/#findComment-343038
Udostępnij na innych stronach

  • 0

Cześć, dzięki wielkie za pomoc. Zapomniałem dodać, że graczy na serwerze będzie tylko 8, i mniej, ponieważ jest to serwer dla znajomych. Jeżeli to cokolwiek zmieni w kodzie, byłbym wdzięczny za zmiankę. 
 

Odnośnik do komentarza
https://skript.pl/temat/57672-losowe-miejsca-pojedy%C5%84cze/#findComment-343039
Udostępnij na innych stronach

  • 1
3 godziny temu, naujan napisał:

Cześć, dzięki wielkie za pomoc. Zapomniałem dodać, że graczy na serwerze będzie tylko 8, i mniej, ponieważ jest to serwer dla znajomych. Jeżeli to cokolwiek zmieni w kodzie, byłbym wdzięczny za zmiankę. 
 

Nie ma za co dziękować. Co do uwagi z ilością graczy - nic to nie zmienia, gdyż i tak skrypt nigdy nie wylosuje więcej niż 8 graczy (użycie funkcji 'min', która wybiera mniejszą liczbę spośród dwóch (lub więcej) podanych).
Zauważyłem jednak, że kod napisany przeze mnie wygląda mało elegancko. Dlatego też poprawiłem niektóre jego elementy.

W razie problemów proszę dać znać.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57672-losowe-miejsca-pojedy%C5%84cze/#findComment-343044
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ę...