Bethesda Tutorial Papyrus Variables and Conditionals/pl
Poradnik Bethesdy - Papyrus - Wprowadzenie do zmiennych i warunków
Strona w języku polskim Wymaga poprawek redakcyjnych lub przetłumaczenia linkowanych stron |
Poradnik Bethesdy - Papyrus - Wprowadzenie do zmiennych i warunków | |
---|---|
seria: Skypty, rozdział: 2 | |
Powrót do spisu poradników | |
Poprzedni poradnik | Następny poradnik |
Przegląd[edit | edit source]
W tym poradniku będziemy kontynuować przykład z poprzedniego poradnika Witaj świecie.
Nauczysz się:
- Jak tworzyć i używać zmiennych
- Jak tworzyć komentarze i notatki do skryptu, aby w przyszłości wiedzieć co dany skrypt robi
- Jak sprawdzić w grze wartości zmiennych z danego skryptu
- Jak używać wyrażeń warunkowych if-then-else sterujących logiką skryptu
Zmienne[edit | edit source]
Zmienne są jak magazyny przechowujące informacje lub obiekty. Można je ustanowić, zwiększać albo zmniejszać ich wartości liczbowe, można się do nich odnosić i wyciągać z nich dane. W naszym przykładzie z Hello World Tutorial dodamy do skryptu zmienną, której będziemy używać do liczenia ile razy gracz aktywował skrypt, a za każdym razem zmienimy wynik działania.
Otwórz właściwości przedmiotu-słupa (referencji), kliknij prawym na skrypt HelloWorldScript w zakładce Script. Wybierz opcję "Edit Source", a otworzy się okno edytowania kodu źródłowego skryptu.
Na razie kod ten wygląda mniej więcej tak:
Scriptname HelloWorldScript extends ObjectReference
{To moj pierwszy prawdziwy skrypt!}
Event OnActivate(ObjectReference akActionRef)
Debug.MessageBox("Witaj świecie!")
endEvent
Dodajmy teraz zmienną. Dopisz poniższą linię tuż nad linią z tekstem "Event OnActivate":
int licznik ;przechowuje liczbe ile razy gracz aktywowal ten obiekt
- int licznik ;przechowuje liczbe... - int określa rodzaj zmiennej. W tym przypadku jest to zmienna typu "Integer," czyli liczba całkowita, dodatnia lub ujemna.
- int licznik ;przechowuje liczbe... - licznik to nazwa naszej nowej zmiennej, którą tworzymy. Za pomocą tej nazwy można się będzie odwołać do naszej zmiennej w innym miejscu w skrypcie.
- int licznik ;przechowuje liczbe... - cały tekst za znakiem średnika (;) jest komentarzem. To oznacza, że skrypt w ogóle nie będzie na ten tekst zwracać uwagi oraz że jest to tylko informacja dla programisty (np. co to jest za zmienna albo po co i jak można jej używać).
Teraz dodajmy linię kodu, która będzie coś robić. Pomiędzy "Event OnActivate..." a "Debug.MessageBox..." dodaj następującą linię:
licznik = licznik + 1
Tym poleceniem mówimy, że niezależnie od tego jaka jest wartość zmiennej licznik, to ma zostać do niej dodane 1, a suma ma zostać ponownie przypisana do wartości zmiennej licznik. Czyli po prostu zwiększamy zmienną całkowitą licznik o 1.
Sprawdzanie wartości zmiennych w grze[edit | edit source]
Upewnij się, że gra nie jest obecnie uruchomiona. Zapisz skrypt. Kliknij na "OK" w oknie właściwości referencji, aby je zamknąć. Następnie naciśnij przycisk Zapisz na pasku narzędzi, aby zapisać plugin.
Uruchom grę i przemieść się do aktywatora. (Przypomnienie: otwórz konsolę naciskając klawisz tyldy (~) i wpisz:
COC MolagBalVoiceCell
Zanim cokolwiek zrobimy, najpierw sprawdzimy wartość naszej zmiennej "licznik", który powinna wynosić 0. Zamknij pasek z konsolą (klawisz ~) i ustaw się swoją postacią tak, aby mieć filar tuż przed sobą. Otwórz konsolę, aktywuj filar (klikając na nim myszką). Na górze ekranu powinna pojawić się nazwa obiektu filara, "'WETempActivator'", oraz ID obiektu w nawiasie.
Teraz wpisz w konsoli:
ShowVars
W konsoli powinna pojawić się mniej więcej taka informacja:
--- Papyrus --------------------- HelloWorldScript: Script state = "" licznik = 0
Jak widać, raport wskazuje że zmienna "licznik" ma wartość 0. Zamknij konsolę (~) i trzy razy aktywuj filar (czyli ma wyświetlić wiadomość powitalną "Witaj świecie!" trzy razy).
Teraz otwórz konsolę i wpisz "ShowVars". Teraz raport powinien pokazać "licznik = 3". Świetnie. Ale co z tego? Cóż, teraz możemy wykorzystać te informacje w naszym skrypcie, aby wyświetlić różne wiadomości na podstawie tego, ile razy kliknięto na filar. Wyjdź z gry i wrócić do edytowania skryptu.
Wyrażenia warunkowe (if-then-else)[edit | edit source]
Teraz dodamy "wyrażenia warunkowa", które dadzą nam większą kontrolę nad tym co się dzieje wewnątrz skryptu. Zamień wiersz "Debug.MessageBox ("Witaj świecie!")" następującymi:
if licznik == 1
Debug.MessageBox("Witaj świecie!")
elseif licznik == 2
Debug.MessageBox("Witaj świecie. Ponownie!")
else
Debug.MessageBox("Witaj świecie. Już dosyć!")
endif
Teraz możemy użyć wartości zmiennej licznik, aby zmienić zachowanie naszego skryptu. W naszym przykładzie pokażemy graczowi różne komunikaty, zależnie który raz kliknął na filar. Jedną ważną rzeczą jest podwójny znak równości (==), używany do sprawdzenia czy lewa strona równa się prawej. Pojedynczy znak równości (=), jak pamiętasz, służy do ustawienia zmiennej (w przypadku zmiennej liczbowej służy do przypisania jej określonej wartości).
Na początku może to wydawać się trudne do zrozumienia. Trzeba umieć rozróżnić do czego służy pojedyncze "równa się", a do czego podwójne. Dlatego jeszcze raz:
- pojedynczy znak równości (=) oznacza: Weź to co jest po prawej i przypisz do zmiennej po lewej stronie znaku;
- podwójny znak równości (==) oznacza zapytanie logiczne: Czy to co jest po lewej stronie jest równe temu co jest po prawej stronie znaków.
Cały skrypt powinien wyglądać teraz tak:
Scriptname HelloWorldScript extends ObjectReference
{To moj pierwszy prawdziwy skrypt!}
int licznik ;przechowuje liczbe ile razy gracz aktywowal ten obiekt
Event OnActivate(ObjectReference akActionRef)
licznik = licznik + 1
if licznik == 1
Debug.MessageBox("Witaj świecie!")
elseif licznik == 2
Debug.MessageBox("Witaj świecie. Ponownie!")
else
Debug.MessageBox("Witaj świecie. Już dosyć!")
endif
endEvent
Możesz uruchomić grę, zrobić COC do obszaru i aktywować filar. Za każdą aktywacją powinna pojawiać się kolejna, inna wiadomość!
Dodatkowe informacje[edit | edit source]
- Więcej informacji o rodzajach podstawowych zmiennych (takich jak "int" - wszystkie są one nazywane Literałami) znajdziesz na stronie "Spis literałów"
- Więcej informacji o rodzajach operatorów (=, += oraz innych) znajdziesz na stronie "Spis operatorów (en)"
- Więcej informacji o rodzajach instrukcji takich jak if-then-else znajdziesz na stronie "Spis instrukcji (en)"
Poprzedni poradnik | Powrót do spisu poradników | Następny poradnik |
Language: | English • français • 日本語 • 한국어 • polski • русский |
---|