Skocz do zawartości
  • 0

Funkcja do zliczania obrony i ataku, czytanie tekstu z lore i zamiana na liczbe. nazwa moba w zmiennej, dodawanie, wyświetlanie i usuwanie przedmiotów ze zmiennej.


Pytanie

Witam
Potrzebuję pomocy w 3 rzeczach.

1. Funkcja do zliczania obrony i ataku.
Posiadam dwie zmienne ({stats::%player%.attack} atak, {stats::%player%.armor} obrona) które wyznaczają ile obrażeń zada i ile zostanie zredukowanych. Potrzebuje pomocy przy napisaniu funkcji która sprawdza ile ataku i obrony miałby dany gracz w zależności od wyposażenia. Skórzana zbroja (hełm i buty +2 do obrony, spodnie i klata + 3 do obrony). Jeśli gracz ma na sobie buty i spodnie to dodatkowo przy otrzymywaniu obrażeń do jego obrony zostanie dodany bonus +5 obrony. Tak samo w przypadku ataku, gdy gracz trzyma drewniany miecz to dodawane jest +2 do ataku, a taki kamienny np. +4 do ataku. Oba przypadki nie mają wpływu na główne zmienne. Dlaczego funkcja? Czytelność kodu w wrażliwym miejscu (tam gdzie chce to wstawić musi być bardzo czytelny) i użycie tego do graczy i mobów. Gracze mają inne umiejętności przeciwko mobom, a inne przeciwko sobie.

2. Czy jest jakaś opcja bym np. zapisał zmienną {stats::zombie.attack} i jakoś przy wydarzeniu on damage: użył sprawdzenia czy ofiara (xD) jest graczem, a jeśli nie to czyta typ moba i wstawia w miejsce zombie?
NP. atakując zombie skrypt odwoła się do zmiennej {stats::zombie.attack}, a atakując pająka do {stats::spider.attack}

3. Jak zrobić prostą komendę która dodaje przedmiot który trzymamy w ręce do zmiennej, możemy też usuwać dane przedmioty z tej zmiennej i wyświetlać co w niej jest. Nie musi być z tworzeniem.
Np. zmienna {boss.[typ moba].drop} i do niej dodajemy przedmioty, usuwamy wybrane i wyświetlamy jakie już są. Nie musi być to super czytelne w postaci 46 diamond o nazwie "1 2 3 nazwa". Byle wyświetliło, że w tej zmiennej siedzi np. diamond, iron swon, coś tam.

4. Mamy przedmiot który ma lore "&cAtak: +3" i chcę by skrypt czytał lore statystyki, a następnie dodawał do ataku gracza. Wiem, że trzeba zmienić tekst na liczbę jednak co jeśli chciałbym:
 a - zastosować dodatnie i ujemne wartości 
 b - czytać niezależnie od linii lore w której jest "atak"

Jak ktoś może pomóc nawet z jednym to dziękuje <3 

3 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
1 godzinę temu, uiuin napisał:

2. Czy jest jakaś opcja bym np. zapisał zmienną {stats::zombie.attack} i jakoś przy wydarzeniu on damage: użył sprawdzenia czy ofiara (xD) jest graczem, a jeśli nie to czyta typ moba i wstawia w miejsce zombie?
NP. atakując zombie skrypt odwoła się do zmiennej {stats::zombie.attack}, a atakując pająka do {stats::spider.attack}

4. Mamy przedmiot który ma lore "&cAtak: +3" i chcę by skrypt czytał lore statystyki, a następnie dodawał do ataku gracza. Wiem, że trzeba zmienić tekst na liczbę jednak co jeśli chciałbym:
 a - zastosować dodatnie i ujemne wartości 
 b - czytać niezależnie od linii lore w której jest "atak"

2.1 Przede wszystkim chcesz wrzucić moby i graczy do jednej zmiennej (błąd). Zmienna powinna być w formacie {stats::mobs::zombie::attack} oraz {stats::players::%player%::attack}. Gdyby gracz miał nick "zombie" wtedy statystyki pobierałoby od zmiennej moba, a nie jego własnej.

2.2 Przy evencie z damage, musisz rozgraniczyć moby i graczy np. Przez 'if attacker is a player' i jego zaprzeczenie, gdy już sprawdzisz że attacker nie jest graczem (czyli jest entity) jego rodzaj (np. Zombie) powinno zwrócić ci właśnie wyrażenie attacker.

4.1 Pobierasz do zmiennej całe lore przedmiotu (nie mam pojęcia jak to wygląda, ale powinno zwrócić ci albo listę z kolejnymi linijkami lore, ale tekst z linijkami oddzielonymi przez "||". W przypadku drugim musisz dodatkowo podzielić tekst na poszczególne linijki ręcznie - najlepiej wyrażeniem '%string% split at %string%'). Uzyskaną (dowolnym sposobem) listę zapętlasz, szukasz wśród wyników potrzebnej frazy (w tym przypadku "Atak") jeżeli ją zawiera, to zapisujesz wynik do zmiennej, pozbywasz się niechcianego tekstu, ustawiasz zmienną na integera, albo number i masz swoją wartość.

4.2 Jeżeli nazwa będzie zawierała minus czy plus - nie usuwaj go z niej. Skript poradzi sobie z rozpoznaniem liczby - wystarczy ją zawsze dodawać do dowolnej zmiennej. +(-) i tak da ci minus, a +(+) zawsze plus.

  • 0
14 godzin temu, LuckyPotato napisał:

2.1 Przede wszystkim chcesz wrzucić moby i graczy do jednej zmiennej (błąd). Zmienna powinna być w formacie {stats::mobs::zombie::attack} oraz {stats::players::%player%::attack}. Gdyby gracz miał nick "zombie" wtedy statystyki pobierałoby od zmiennej moba, a nie jego własnej.

2.2 Przy evencie z damage, musisz rozgraniczyć moby i graczy np. Przez 'if attacker is a player' i jego zaprzeczenie, gdy już sprawdzisz że attacker nie jest graczem (czyli jest entity) jego rodzaj (np. Zombie) powinno zwrócić ci właśnie wyrażenie attacker.

4.1 Pobierasz do zmiennej całe lore przedmiotu (nie mam pojęcia jak to wygląda, ale powinno zwrócić ci albo listę z kolejnymi linijkami lore, ale tekst z linijkami oddzielonymi przez "||". W przypadku drugim musisz dodatkowo podzielić tekst na poszczególne linijki ręcznie - najlepiej wyrażeniem '%string% split at %string%'). Uzyskaną (dowolnym sposobem) listę zapętlasz, szukasz wśród wyników potrzebnej frazy (w tym przypadku "Atak") jeżeli ją zawiera, to zapisujesz wynik do zmiennej, pozbywasz się niechcianego tekstu, ustawiasz zmienną na integera, albo number i masz swoją wartość.

4.2 Jeżeli nazwa będzie zawierała minus czy plus - nie usuwaj go z niej. Skript poradzi sobie z rozpoznaniem liczby - wystarczy ją zawsze dodawać do dowolnej zmiennej. +(-) i tak da ci minus, a +(+) zawsze plus.

Pierwsze już wiem jak zrobi ;d
Możesz mi pokazać jakiś prosty przykład z tym 4? Prawnie nigdy nie robiłem na lore.

  • 0
34 minuty temu, uiuin napisał:

Pierwsze już wiem jak zrobi ;d
Możesz mi pokazać jakiś prosty przykład z tym 4? Prawnie nigdy nie robiłem na lore.


 

on death of player:
    set {_opis::*} to lore of attacker's tool split at "||"
    if {_opis::2} is "    &2âś´ &fSystem StatTrak &2âś´":
        set {_kill} to number from {_opis::3}
        set {_kill} to {_kill} parsed as number
        add 1 to {_kill}
        set 3st line of lore of attacker's tool to "&eZabitych graczy &b➣ &f%{_kill}%"


command test:
    trigger:
        set {_opis::*} to lore of player's tool split at "||"
        if {_opis::1} is "Witaj":
            if {opis::2} is "kolego":
                send "Dziala?"

 

Masz dwa przykłady powinieneś w miarę zrozumieć, chyba ;)

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ę...