Nowa skladnia zblizona jest bardziej do jezykow programowania wysokiego poziomu za pomoca konstrukcji sterujących t.j. petle, "if-y" zamiast instrukcji skoków "goto".
Skrypty sqf zanim sie wykona nalezy skompilowac. Najprostszym sposobem jest instrukcja:
Kod: Zaznacz cały
wsk = [arg1,arg2,...]execVM "skrypt.sqf"
Zasady tworzenia skryptow:
-blokiem nazywamy kod zgupowany w parę nawiasów: {.}
-kazdą instrukcję kończymy średnikiem (blok tez jest instrukcją)
-komentarze tworzymy jak w C, czyli /*komentarz wielolinijkowy*/ lub //komentarz do konca linii lub poleceniem
Kod: Zaznacz cały
comment "komentarz";
Kod: Zaznacz cały
if(warunek)then{
instrukcje;
};
Kod: Zaznacz cały
if(warunek)then{
instrukcja1;
...
}else{
instrukcjaN;
...
};
Kod: Zaznacz cały
_min = if(a<b)then{a}else{b};
Kod: Zaznacz cały
switch(zmienna){
case wartosc1:{instrukcje1;}
...
case wartoscN:{instrukcjeN;}
};
Kod: Zaznacz cały
while{warunek}do{
instrukcje;
};
Kod: Zaznacz cały
for[{ustawienie poczatkowe}, {warunek krecenia sie petli}, {instrukcje po skonczeniu obrotu}]do{
instrukcje;
};
Kod: Zaznacz cały
for[{_i=0}, {_i<liczba_graczy}, {_i=_i+1}]do{
_jednostka = wektor_graczy select _i;
_jednostka addRating -10000;
};
Kod: Zaznacz cały
if(alive player)then{
_text = "zyje";
}else{
_text = "nie zyje";
}
hint _text;
Kod: Zaznacz cały
_text = "";
Kod: Zaznacz cały
~ czas
Kod: Zaznacz cały
sleep czas;
Kod: Zaznacz cały
@czas
Kod: Zaznacz cały
WaitUntil {czas};
W tym pliku sa takze wszelkie inne logi glownie z bledow podczas uruchamiania army (pewnie jego wielkosc mozecie juz liczyc w megabajtach) (ten plik mozna smialo czyscic)
linki:
http://community.bistudio.com/wiki/Control_Structures
http://community.bistudio.com/wiki/Statement
http://community.bistudio.com/wiki/Expression
tekst powstal na podstawie powyzszych linkow i moich przejsc
Mam nadzieje, ze powyzszy tekst sie komus przyda, choc pewnie nie uniknąłem bledow
[dodano]
skrypty sqf ponadto mają możliwość (wydajnego) wielokrotnego użycia, tzn:
żeby wykonać skrypt sqf należy go uprzednio skompilować* (- komenda execVM robi to automatycznie i nie trzeba się o to martwić). Kompilacja to względnie długi process. Dlatego warto raz skompilować a później wielokrotnie wykonywać skompilowany kod
Kod: Zaznacz cały
wskaznik_na_skrypt = compile preprocessFile "skrypt.sqf"
Mozemy taki skompilowany skrypt wywołać w dwojaki sposób:
Kod: Zaznacz cały
[parametry] spawn wskaznik_na_skrypt
Kod: Zaznacz cały
[parametry] call wskaznik_na_skrypt
Ponadto skrypt wywoływany poprzez call nie może zawierać instrukcji sleep oraz waitUntil, w każdym innym przypadku zaleca się używać call.
*kompilacja - w skrócie: proces zamienienia postaci zrozumiałej dla człowieka na szybką postać - lepszą dla komputera