Gość ZiemniaQ Opublikowano 19 sierpnia 2019 Udostępnij Opublikowano 19 sierpnia 2019 (edytowane) Przedstawiam funkcję, która tworzy losowe punkty zawierające się w wybranym obszarze. Zwraca gotową lokalizację: Pierwsza wersja, funkcja generuje lokalizację z dwóch przeciwległych współrzędnych prostokąta: Spoiler function getRandomLoc(xmin: integer=-1000, xmax: integer=1000, zmin: integer=-1000, zmax: integer=1000, world: text="world") :: location: while {_return} is not set: set {_x} to random integer between {_xmin} and {_xmax} set {_z} to random integer between {_zmin} and {_zmax} set {_loc} to highest block at location at {_x}, 0, {_z} in world ({_world} parsed as world) if block at {_loc} != lava or water: add 1 to y-loc of {_loc} if (block at {_loc}) and (block above block at {_loc}) != lava: set {_return} to {_loc} return {_return} Argumenty funkcji: Współrzędne x oraz z, pomiędzy którymi będzie wygenerowana lokalizacja: 1. minimalna x (liczba całkowita, domyślnie: -1000) 2. maksymalna x (liczba całkowita, domyślnie: +1000) 3. minimalna z (liczba całkowita, domyślnie: -1000) 4. maksymalna z (liczba całkowita, domyślnie: +1000) Nazwa świata, w którym zostanie wygenerowana: 5. (tekst, domyślnie: world) Druga wersja, funkcja generuje lokalizację wewnątrz okręgu o zadanym środku i promieniu: Spoiler function getRandomRoundLoc(x: integer=0, z: integer=0, radius: integer=1000, world: text="world") :: location: while {_return} is not set: set {_dist} to random integer between 0 and {_radius} set {_angle} to random number between 0 and 360 set {_newX} to {_x} + (sin({_angle}) * {_dist}) set {_newZ} to {_z} + (cos({_angle}) * {_dist}) set {_loc} to highest block at location at {_newX}, 0, {_newZ} in world ({_world} parsed as world) if block at {_loc} != lava or water: add 1 to y-loc of {_loc} if (block at {_loc}) and (block above block at {_loc}) != lava: set {_return} to {_loc} return {_return} Argumenty funkcji: Współrzędne x oraz z środka okrędu: 1. współrzędna x (liczba całkowita, domyślnie: 0) 2. współrzędna z (liczba całkowita, domyślnie: 0) Promień okręgu: 3. (liczba całkowita, domyślnie: 1000) Nazwa świata, w którym zostanie wygenerowana: 4. (tekst, domyślnie: world) Przykłady użycia: Komenda /rtp z użyciem domyślnych argumentów: command /rtp [<text>]: trigger: teleport player to getRandomLoc() #lub teleport player to getRandomRoundLoc() Komenda /rtp z użyciem własnych argumentów: command /rtp [<text>]: trigger: teleport player to getRandomLoc(0, 100, 0, 100, "Spawn") #lub teleport player to getRandomRoundLoc(100, -6443, 5000, "Survival") Wymagania: Skript w wersji przynajmniej 2.2 dev 34 Edytowane 7 października 2019 przez ZiemniaQ Funkcja generująca lokalizację wewnątrz okręgu. Cytuj Odnośnik do komentarza https://skript.pl/temat/34573-pyrartp-generowanie-losowych-wsp%C3%B3%C5%82rz%C4%99dnych/ Udostępnij na innych stronach Więcej opcji udostępniania...
xRealDie_ 1 Opublikowano 22 sierpnia 2019 Udostępnij Opublikowano 22 sierpnia 2019 Przydatny skrypt, na pewno użyję na swoim serwerze. HeezQ 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/34573-pyrartp-generowanie-losowych-wsp%C3%B3%C5%82rz%C4%99dnych/#findComment-222762 Udostępnij na innych stronach Więcej opcji udostępniania...
Gość ZiemniaQ Opublikowano 7 października 2019 Udostępnij Opublikowano 7 października 2019 Update Cytuj Odnośnik do komentarza https://skript.pl/temat/34573-pyrartp-generowanie-losowych-wsp%C3%B3%C5%82rz%C4%99dnych/#findComment-225722 Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ą.