Arcane.pl
Portal twórców map i modów:
WarCraft 3 StarCraft 2 i innych gier
Napisano: 01.05.2010
Podstawy JASS
Pełna wersja: Jass Tutorial[/color]
[size=150][color=#F4C702]Autor: Im_On_56k
Tłumaczenie: Frizi[/color][/size]
Tutorial na podstawie [color=#F4C702]Jass: Basic[/color]
Ten tutorial zawiera:
[list]
• Wywołanie funkcji
• Zmienne lokalne
• Tworzenie podstawowych funkcji
• Tworzenie i używanie komentarzy
• Używanie zmiennych globalnych
[/list]
A więc zaczynajmy!
[size=150]Podstawowe spojrzenie na Jass[/size]
Stwórz nowy wyzwalacz z Wydarzeniem "Map Initialization" Przekonwertuj go na własny tekst (Edycja->Konwertuj na własny tekst).
Powinno to wyglądać tak:
| function Trig_Untitled_Trigger_001_Actions takes nothing returns nothing endfunction //=========================================================================== function InitTrig_Untitled_Trigger_001 takes nothing returns nothing set gg_trg_Untitled_Trigger_001 = CreateTrigger( ) call TriggerAddAction( gg_trg_Untitled_Trigger_001, function Trig_Untitled_Trigger_001_Actions ) endfunction |
To może się różnić w zależności od nazwy wyzwalacza.
Mój nazywa się Untitled Trigger 001
Teraz zamierzamy dodać do niego akcję wyświetlającą tekst do wszystkich graczy w grze.
| call DisplayTimedTextToForce( GetPlayersAll(), 30, "witaj" ) |
Akcja jest funkcją wywołującą blok kodu, który coś (zależnie od akcji) robi w grze.
więc kiedy chcesz wykonać funkcję piszesz "call" i nazwę funkcji.
| call DisplayTimedTextToForce |
Funkcja DisplayTimedTextToForce posiada 3 parametry, więc musimy jej je podać.
GetPlayersAll() (grupa graczy)
30 (integer lub w wersji polskiej "C")
"witaj" (ciąg)
GetPlayersAll () - określa, którym graczom wyświetli się komunikat, w tym przypadku dotrze on do wszystkich graczy
30 - czas wyświetlania tekstu
"witaj" - wyświetlany tekst
Wszystkie ciągi muszą być zamknięte w podwójnych cudzysłowach (").
Teraz nasz wyzwalacz powinien wyglądać następująco:
| function Trig_Untitled_Trigger_001_Actions takes nothing returns nothing call DisplayTimedTextToForce( GetPlayersAll(), 30, "witaj" ) endfunction //=========================================================================== function InitTrig_Untitled_Trigger_001 takes nothing returns nothing set gg_trg_Untitled_Trigger_001 = CreateTrigger( ) call TriggerAddAction( gg_trg_Untitled_Trigger_001, function Trig_Untitled_Trigger_001_Actions ) endfunction |
[size=150]Zmienne Lokalne[/size]
teraz zabierzmy się za zmienne lokalne.
Zmienne lokalne są to zmienne, które są używane tylko w funkcji, w której zostały zadeklarowane.
| local string mystring |
string - typ zmiennej (ciąg)
mysting - nazwa zmiennej
Istnieje wiele typów zmiennych, ale przedstawię tylko najczęściej używane:
| local string s local integer i local real r local boolean b local location l local group g |
Zmienne lokalne można też ustawić w trakcie deklaracji.
Wygląda to następująco:
| local integer i = 1 |
To deklaruje zmienną "i" typu integer ("C" w wersji polskiej) nadając jej wartość 1
Oto kolejny przykład ustawienia zmiennej (tym razem typu ciąg) podczas deklaracji.
| local string s = "witaj" |
Teraz odrobina praktyki.
By odświeżyć pamięć Spójrz na swój wyzwalacz
| function Trig_Untitled_Trigger_001_Actions takes nothing returns nothing call DisplayTimedTextToForce( GetPlayersAll(), 30, "witaj" ) endfunction //=========================================================================== function InitTrig_Untitled_Trigger_001 takes nothing returns nothing set gg_trg_Untitled_Trigger_001 = CreateTrigger( ) call TriggerAddAction( gg_trg_Untitled_Trigger_001, function Trig_Untitled_Trigger_001_Actions ) endfunction |
Stwórz funkcję lokalną typu string z wartością "witaj"
| local string s = "witaj" |
Upewnij się, że jest w pierwszym wierszu twojej funkcji.
Powinno to wyglądać tak:
| function Trig_Untitled_Trigger_001_Actions takes nothing returns nothing local string s = "witaj" call DisplayTimedTextToForce( GetPlayersAll(), 30, "witaj" ) endfunction //=========================================================================== function InitTrig_Untitled_Trigger_001 takes nothing returns nothing set gg_trg_Untitled_Trigger_001 = CreateTrigger( ) call TriggerAddAction( gg_trg_Untitled_Trigger_001, function Trig_Untitled_Trigger_001_Actions ) endfunction |
Teraz podstaw naszą zmienną lokalną do funkcji wyświetlającej komunikat.
| call DisplayTimedTextToForce( GetPlayersAll(), 30, s ) |
Teraz cała funkjca powinna mieć taką konstrukcję:
| function Trig_Untitled_Trigger_001_Actions takes nothing returns nothing local string s = "witaj" call DisplayTimedTextToForce( GetPlayersAll(), 30, s ) endfunction |
Teraz zastosuj to, czego się nauczyłeś ponownie i podstaw zmienną pod liczbę całkowitą.
Jeżeli wszystko wykonałeś prawidłowo, wynik powinien być podobny:
| function Trig_Untitled_Trigger_001_Actions takes nothing returns nothing local string s = "witaj" local integer i = 30 call DisplayTimedTextToForce( GetPlayersAll(), i, s ) endfunction //=========================================================================== function InitTrig_Untitled_Trigger_001 takes nothing returns nothing set gg_trg_Untitled_Trigger_001 = CreateTrigger( ) call TriggerAddAction( gg_trg_Untitled_Trigger_001, function Trig_Untitled_Trigger_001_Actions ) endfunction |
Twój wyzwalacz powinien po załadowaniu mapy wyświetlać wszystkim graczom tekst "witaj" przez 30 sekund.
[size=150]Funkcje[/size]
Zabierzmy się za funkcję.
Funkcja - blok kodu wykonujący jakieś zadanie
Napiszmy naszą pierwszą funkcję i użyć jej w wyzwalaczu.
Funkcje pisze się zawsze na początku pisania wyzwalacza.
Będziemy odnosić się do funkcji GetPercent Nasza funkcja pobiera 2 zmienne (integer) i oblicza na ich podstawie procent. Dzieli 1 zmienną przez 2 i mnoży razy 100. Tak to wygląda na początku:
| function GetPercent takes integer i, integer i2 returns integer |
"Function" na począdku mówi grze, że GetPercent jest funkcją.
GetPercent to nazwa funkcji.
"takes" to to, co funkcja wymaga od ciebie (parametry funkcji).
Oto przykład:
| [color=blue]call[/color] DisplayTimedTextToForce[color=red]([/color] GetPlayersAll[color=red]()[/color][color=red],[/color] i[color=red],[/color] s [color=red])[/color] |
Funkcja DisplayTimedTextToForce pobiera parametry Grupa Graczy, integer i ciąg.
To widać na tym fragmencie:
| ( GetPlayersAll(), i, s ) |
"returns" jest tym, co funkcja ma zwrócić.
To jest wykorzystywane przy ustawianiu zmiennej.
| local integer i = GetPercent(1,100) |
Zmienna i zostanie ustawiona na 1 (wynik funkcji GetPercent z parametrami 1 i 100).
Teraz dokończmy naszą funkcję. Wkońcu jeszcze nie działa (więc powyższy kod nie będzie poprawny).
| function GetPercent takes integer i, integer i2 returns integer return i/i2*100 |
"return" to kod, który zwraca wartość (ustala końcowy wynik funkcji).
Obliczenia zostały wykonane dzięki operatorom arytmetycznym.
Te najbardziej podstawowe są przedstawione poniżej:
| + - dodawanie - - odejmowanie * - mnożenie / - dzielenie |
Teraz czas zakończyć naszą funkcję.
| function GetPercent takes integer i, integer i2 returns integer return i/i2*100 endfunction |
"endfunction" mówi grze, że funkcja się kończy w tym miejscu.
[size=150]Komentarze[/size]
wszystkie znaki za // (2 ukośniki) są traktowane jako komentarz i nie wpływają w żaden sposób na działanie kodu.
Komentarza nie da się przerwać. Jest zawsze do końca linii. Jest to tzw. komentarz liniowy.
Przykład:
| function GetPercent takes integer i[color=red],[/color] integer i2 returns integer [color=green]//To jest komentarz i nie wpływa on w żaden sposób na działanie funkcji.[/color] [color=blue]return [/color]i/i2*100 endfunction |
[size=150]Używanie zmiennych globalnych[/size]
Prawdopodobnie będziesz potrzebował użyć zmiennych globalnych, jeśli jesteś doświadczonym użytkownikiem Edytora Świata.
Są one jak zmienne lokalne, ale można je użyć w każdym wyzwalaczu.
Aby używać zmienne globalne w jass musisz przed ich nazwą wpisać "udg_".
Dajmy na to mamy zmienną globalną o nazwie MojaZmienna
Aby jej użyć w jass, trzeba wpisać udg_MojaZmienna
Oto przykład użycia zmiennej globalnej (integer) w jass:
| call DisplayTimedTextToForce( GetPlayersAll(), udg_MojaZmienna, "witaj" ) |
Spowoduje to wyświetlenie wszystkim graczom "witaj" przez czas zawarty w zmiennej MojaZmienna (w sekundach).
[color=orange]Autorem wersji angielskiej jest Im_On_56k. Tłumaczenie: Frizi[/color]
Pełna wersja: Jass Tutorial[/color]
|
Na Forum jest 10 użytkowników :: 0 zarejestrowany i 10 gości (oparte na użytkownikach aktywnych przez ostatnie 5 minut) Zarejestrowani użytkownicy: W ciagu ostatnich 24 godzin forum odwiedziło 0 użytkowników: |