Teraz jest Pt 19 kwi, 2024 16:10


SQS, a SQF?

Archiwum działów sekcji Operation Flashpoint
  • Autor
  • Wiadomość
Offline
Avatar użytkownika

LostBeyondRetri

Porucznik

Porucznik

  • Posty: 254
  • Dołączył(a): Pt 08 cze, 2007 22:22
  • Lokalizacja: Stąd?

SQS, a SQF?

PostPn 30 cze, 2008 20:31

Może mi ktoś wytłumaczyć prostymi słowami czym różnią się pliki SQS, od SQF?
I jak się używa skryptów SQF?
Dokładnie chodzi mi o ten skrypt, po jego użyciu strażnicy reagują na martwe ciała.



Kod: Zaznacz cały
private ["_guards","_hknow","_count1","_man","_i","_i2","_return"];


_guards = (_this select 0);
_hknow = (_this select 1);

_count1 = (count _guards);

_return = false;

// Guards check for deads //
_i = 0;
While { _i < _count1 }
Do
{

_man = (_guards select _i);

if(Not (alive _man) ) then
{
// check if someone sees the dead body
_i2 = 0;
 While { _i2 < _count1 }
 Do
 {
  // guard must be alive and know about the dead body for true returning
  if((alive (_guards select _i2)) And (_guards select _i2) KnowsAbout _man > _hknow) then
  {
   _return = true;
  };
  _i2 = _i2 + 1;
 };

};

   _i = _i + 1;
};


_return
Ostatnio edytowano Wt 08 lip, 2008 12:56 przez LostBeyondRetri, łącznie edytowano 1 raz
Obrazek
Offline
Avatar użytkownika

SaS TrooP

Pułkownik

Pułkownik

  • Posty: 1143
  • Dołączył(a): Wt 06 cze, 2006 17:18
  • Lokalizacja: Wodzisław

PostPn 30 cze, 2008 20:38

Cytat z Podręcznika skryptów SQF Wrsja Podstawowa by Cheetah (kto go nie zna niech spada do lasu):

Everyone with a basic understanding of makings mission in Armed Assault (ArmA) knows how important it can be to make scripts. Scripts can be used to check if a group of units is alive, to update realtime markers on the map or to supply waypoints for an AI group. Since Operation Flashpoint (OFP) there are two types of scripts, sqs and sqf. With the release of ArmA, the SQF files take up dominant position over SQS ones. dominant position over SQS ones. In short the advantages of SQF:

* SQF is faster.
* SQF can be used to make functions and scripts.
* SQF improves the program flow.
* SQF is structured, SQS is rarely as structured as SQF.

"Consider also that SQF works perfectly in ArmA. If you want something more "fine" performance wise, go for sqf, else you may keep with SQS. For example, if you want something to be checked every 30 seconds, you will have no gain at all with SQF, if you want something being executed every 0.001 seconds, go with SQF. If you find yourself confortable with SQF programming flow structure, go with SQF forever. There is at least one exception: scripts to be executed every # seconds and at the end of a dropped particle (particle array), still should be SQS."
- Mandoble
Offline
Avatar użytkownika

LostBeyondRetri

Porucznik

Porucznik

  • Posty: 254
  • Dołączył(a): Pt 08 cze, 2007 22:22
  • Lokalizacja: Stąd?

PostPn 30 cze, 2008 20:44

Poczytałem, ciekawostek się dowiedziałem, ale ja bym chciał trochę bardziej konkretnie.

Czy SQF używam tak samo jak SQS?
Jeśli chodzi o skrypt powyżej, gdzie go użyć i jak?
[] exec "skrypt.sqf" wystarczy?
Obrazek
Offline
Avatar użytkownika

SaS TrooP

Pułkownik

Pułkownik

  • Posty: 1143
  • Dołączył(a): Wt 06 cze, 2006 17:18
  • Lokalizacja: Wodzisław

PostPn 30 cze, 2008 20:55

Tak, ale podział wewnętrzny jest nieco inny. ALe pod OFP .sqf jest raczej mniej potrzebny, dopiero w Armie bez niego ani rusz.
Offline
Avatar użytkownika

Kadryl

Major

Major

  • Posty: 883
  • Dołączył(a): Cz 14 wrz, 2006 14:04
  • Lokalizacja: Wa-wa

PostŚr 10 wrz, 2008 22:00

LostBeyondRetri napisał(a):Poczytałem, ciekawostek się dowiedziałem, ale ja bym chciał trochę bardziej konkretnie.
Czy SQF używam tak samo jak SQS?
Jeśli chodzi o skrypt powyżej, gdzie go użyć i jak?
[] exec "skrypt.sqf" wystarczy?


Sorry odgrzeje bo ciągle sa w tym temacie nieporozumienia, a i przytoczony zapis Cheetaha odnosi sie do problemu w sposób ogólny.

@LostBeyondRetri:
"sgs"
1) skrypt jest nieaktywny do momentu aktywacji go w grze (wywołanie)
2) pozwala na liczne warunki, pętle, zmiany dynamiczne parametrów jednostek w grze itp. Jednym słowem może zmieniać wiele parametrów.
3) uruchamia się go poprzez instrukcję
Kod: Zaznacz cały
[] exec "nazwa_pliku.sqs"


"sqf"
1) funkcja jest aktywna od momentu uruchomienia misji i działa cały czas (rezyduje w pamięci), dlatego Cheetah pisze o jego szybkości.
2) wynikiem działania jest zmiana tylko jednego parametru - najczęściej zmienna logiczna "prawda" lub "fałsz".
3) wywoluje się go przeważnie ze skryptu poprzez instrukcję
Kod: Zaznacz cały
[] call nazwa

pod warunkiem że zdefinujesz instrukcję w pliku: init.sqs następująco:
Kod: Zaznacz cały
nazwa = preprocessFile "nazwa.sqf"


Jednym słowem sqf warto stosować tam gdzie są liczne zmiany 1 parametru dla dużej liczby jednostek w grze itp.

--------------------------
P.S. w nawiazaniu do "zombi skryptu" to co jest najważniejsze do jego zrozumienia

Kod: Zaznacz cały
_return = false
_return to wartość / wynik działania skryptu
Kod: Zaznacz cały
 if((alive (_guards select _i2)) And (_guards select _i2) KnowsAbout _man > _hknow) then
polecenie KnowsAbout jest "esencją" skryptu który sprawdza co wiedzą wszyscy żywi _guards o osobie _man.
Jeżeli _man jest nie żywy (bez ruchu) to wartosć jest 0, w przeciwnym przypadku, gdy się poruszy w zasięgu wzroku _guards, wartosć jest większa od zera aż do 1 - wartosć gdy wiadomo o "_man" wszystko, podstawowo jaka strona konfliktu.
Kod: Zaznacz cały
_return = true;
a tu nasz parametr zostaje zmieniony na prawdę , czyli _man został przez któregoś z _guardinas zauważony i akcja likwidacji została rozpoczeta :)

Powrót do Operation Flashpoint

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 24 gości

cron