Skocz do zawartości
  • 0

usuwanie danego itemu z ekwipunku gracza


Pytanie

mam problem z moim skryptem na auto zamianę bloków
 

próbuję zrobić żeby jak gracz ma 64 bloki dirta to daje mu jeden skompresowany blok ale skrypt bierze skompresowane bloki jako zwykłe bloki i je też zabiera z ekwipunku gracza. wie ktoś może jak zrobić żeby skrypt zabierał tylko te zwykłe bloki? 

Odnośnik do komentarza
https://skript.pl/temat/57891-usuwanie-danego-itemu-z-ekwipunku-gracza/
Udostępnij na innych stronach

3 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
21 godzin temu, block18c napisał:

próbuję zrobić żeby jak gracz ma 64 bloki dirta to daje mu jeden skompresowany blok ale skrypt bierze skompresowane bloki jako zwykłe bloki i je też zabiera z ekwipunku gracza. wie ktoś może jak zrobić żeby skrypt zabierał tylko te zwykłe bloki? 

Jeżeli "skompresowany" wariant bloku ma być blokiem tego samego typu, jedynym wyjściem jest zapętlenie wszystkich przedmiotów w ekwipunku gracza i zliczanie ile zwykłej ziemi gracz ma w ekwipunku. Tutaj z pewnością przyda się te wyrażenie.

Zagłębiając się w szczegóły, warto wspomnieć, że można to zrobić na dwa sposoby: leniwy i elegancki.

Leniwy sposób polegałby na zapętleniu przedmiotów w ekwipunku gracza dwa razy. Pierwsza pętla służyłaby policzeniu zwykłych bloków ziemi w ekwipunku gracza (czyli sprawdzeniu czy gracz ma w ogóle 64 bloki zwykłej ziemi w ekwipunku), a drugie usuwaniu zwykłych bloków z ekwipunku gracza tak długo aż skrypt nie usunie 64 bloków.

Elegancki sposób wiązałby się ze sprawdzaniem slotów w ekwipunku gracza od 0 do 35. Należałoby dodawać indeksy slotów z blokami zwykłej ziemi do jakiejś lokalnej listy tak długo aż nie zliczymy 64 bloków. Po ukończeniu pętli należałoby ustawić sloty o zapisanych indeksach na powietrze.

Oczywiście zawsze istnieje prawdopodobieństwo w przypadku obu rozwiązań, że ostatni slot (przedmiot) wraz z resztą slotów (przedmiotów) da nam więcej niż 64 bloki. Wtedy należy odpowiednio zmiejszyć ilość bloków ziemi w tym slocie (przedmiocie) tak, aby dopełnić do liczby 64.
Jeśli nie jest to zrozumiałe, proszę wyobrazić sobie przykład, że gracz ma 3 sloty z blokami ziemi:

slot nr 13 - 25 zwykłych bloków ziemi
slot nr 28 - 29 zwykłych bloków ziemi
slot nr 31 - 18 zwykłych bloków ziemi
---
Łącznie w tych 3 slotach: 72 zwykłe bloki ziemi.
Wniosek: możemy ustawić sloty 13 i 28 jako powietrze, a ze slotu 31 należy zabrać 10 bloków ziemi.

Dodam, że odjęcie w przykładzie tych 10 bloków ziemi można zrealizować w poniższy sposób:

options:
	compressedDirtAmount: 64
    
# [...]

# {_totalSum} = 72
set slot 31 of player's inventory to ({_totalSum} - {@compressedDirtAmount}) of dirt

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57891-usuwanie-danego-itemu-z-ekwipunku-gracza/#findComment-344044
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

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