Polski Česky English Français Русский Español
Home Site Original War Support Community Forums Facebook YouTube Discord
Pierwszy raz tutaj? Przeczytaj to!
» Indeks > Akademia Original War > Modowanie > O edytorze i języku SAIL

O edytorze i języku SAIL

O Edytorze i SAIL'u

Edytor OW pozwala na tworzenie map do Singleplayer oraz Multiplayer. Do tworzenia interakcji mapy z użytkownikiem używany jest język skryptowy SAIL (Scripting AI Language).

SAIL jest bardzo podobny do Pascala. Zawiera wszystkie struktury kontrolne z Pascala: bloki begin-end, if oraz case, pętle while, repeatfor. Są one jednak rozszerzone w stosunku do tych z Pascala. Case jest rozszerzone, opcje mogą być zarówno wyrażeniem jak i stałą. For oprócz standardowego powtarzania poprzez dodanie do określonej liczby może również iterować tablicę danych (Array) (składnia: for zmienna in tablica do).

Składnia SAIL'a jest oparta na Pascalu, ale w niektórych miejscach się różni. Ten tekst ma za zadanie ułatwić naukę podstaw SAIL'a. Uwaga: Wszystkie konstrukcje językowe (np. Begin, End, For, Case, Function) muszą wyglądać tak jak przedstawione w tym tekscie, ale nazwy funkcji własnych oraz zmiennych mogą być jakiekolwiek.

Starting

Ta konstrukcja może zostać użyta tylko raz. Wyznacza ona miejsce od którego SAIL będzie wykonywany.

Starting
Begin
	Wait(1000);
End;

Export

Aby umożliwić wszystkim modułom dostęp do funkcji i zmiennych z wyznaczonego modułu musisz użyć konstrukcji Export (każda "strona" kodu jest nazywana modułem)
Zmienne:

Export moja_zmienna;
Export moja_zmienna1, moja_zmienna2;


Funkcje:

Export Function moja_funkcja;
begin
end;


Funkcje i zmienne wyeksportowane są używane tak samo jak zwykłe. Jedyna różnica to to że sąone dostępne dla wszystkich modułów.

Var

Jeżeli nie chcesz żeby dana zmienna była globalna, musisz użyć konstrukcji Var aby wyznaczyć zmienną. W SAIL'u zmienne nie muszą mieć określonego typu, mogą być czymkolwiek (np. liczbą, tekstem).

Var moja_zmienna;
Var moja_zmienna1, moja_zmienna2;
Function moja_funkcja;
Var moja_zmienna;
begin
end;

Funkcje

W SAIL'u możesz używać funkcji do różnych zadań. Funkcje mogą przyjmować parametry i zwracać wynik.
Bez parametrów:

Function moja_funkcja;
begin
end;


Z parametrami:

Function moja_funkcja(parametr, parametr2);
begin
end;


Z wynikiem:

Function moja_funkcja(parametr);
begin
	Result := parametr;
end;
zmienna := moja_funkcja(5);

Komentarze

Możesz dodawać swoje komentarze do kodu (choćby po to aby pamiętać gdzie co jest) używając "//". Ta konstrukcja działa w jednej linijce. Wszystko po "//" jest oznaczane jako komentarz, aż do końca danej linijki. Komentarze blokowe umieszcza się w "{" i "}"

Wait(10);
// Jakis komentarz

Wait(10); // Komentarz

{ Tu kolejny komentarz,
i następna linia }

// Wait(10); <---- nie zostanie wykonane, poniewaz jest oznaczone jako komentarz

{ Wait(10);
  ta funkcja również się nie wykona.
} 

If Then

Ta struktura kontrolna pozwala na oznaczenie części kodu jako wykonywalnego, jeżeli wyznaczona kondycja jest spełniona.

If moja_zmienna = 5 then
	Wait(1);
If moja_zmienna = moja_zmienna2 then
	Wait(1);
If moja_funkcja("Q1") = 1 then
	Wait(1);


Można również określić akcję, jeżeli podane wymagania nie są spełnione.

If moja_zmienna = 1 then
	Wait(1)
else
	Wait(2);

Begin End

Konstrukcje te są m.in. używane do wyznaczania początka i końca funkcji oraz różnych struktur kontrolnych.

if moja_zmienna = 1 then
begin
	Wait(1);
	Wait(2);
end;

Pętla For Do

Pętle For powtarzają kod w nich zawarty wyznaczoną ilość razy.

For x := 1 to 5 do wait(1);
For x := 1 to 5 do begin
	wait(1);
end;
y := 1;
j := 5;
For x := y to j do begin
	wait(1);
end;

Pętla Repeat Until

Pętle Repeat Until powtarzają zawarty w nich kod dopóki wyznaczony warunek nie zostanie osiągnięty.

x := 0;
Repeat
	x := x + 1;
Until x := 5;

Pętla While Do

Pętle While są takie same jak pętle Repeat Until, tyle że ta pętla nie zostanei wykonana ani razu jeżeli warunek nie jest spełniony na początku.

x := 0;
While x < 5 do begin
x := x + 1;
end;

Case

Ta konstrukcja wykonuje kawałki kodu opierając się na wartości wyznaczonej zmiennej.

case Query('Q1') of 1:begin
		// jakiś kod który zostanie wykonany jeżeli rezultat zapytania zwróci 1 end;
	2:begin
	end;
end;
case twoja_zmienna of 1:begin
		// jak wyżej
	end;
	2:begin
	end;
end;


Można też używac stałych

case twoja_zmienna of unit_human:begin
		// unit_human jest to stała wartość w OW, dzięki temu można łatwo sprawdzić czy dana jednostka to żołnierz
	end;
	unit_vehicle:begin
	end;
end;

Autor: Mari Data utworzenia: 15 czerwiec 2008
» Indeks > Akademia Original War > Modowanie > O edytorze i języku SAIL
Strona wygenerowana w 0.004 sec
11 zapytań do bazy