03.01.2013, 20:29 | #1 (permalink) |
User gesperrt
Registriert seit: 20.10.2009
Ort: Jetzt auch im BIF
Alter: 39
Beiträge: 9.163
|
sqs oder sqf / Was gibt es zu beachten?
Hallo zusammen.
Ich habe mehrfach während meiner Zeit hier im hx3 irgendwo gelesen, dass das sqs Script veraltet ist und kaum jemand mehr sqs benutzt und jetzt nur noch sqf verwendung hat. Jedoch sehe ich immer noch Leute die mit sqs arbeiten.
Ich will jetzt niemanden anprangern der sqs Scripte benutzt bzw. selber schreibt. Nur mein Anliegen ist es darüber mehr zu erfahren. Denn auch im Editing Guide von Mr. Murray sind viele Bsp. als sqs Script geschrieben, weil es ja für Armed Assault ist und dass es eine neue Version der Arma Bibel für Arma 2 wohl leider nicht geben wird. Ich hoffe ihr könnt mir bei meinen Fragen helfen auch, wenn es für den einen oder anderen selbst verständlich ist? |
03.01.2013, 21:01 | #2 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Es sollte in Arma keine Probleme mit der SQS-Syntax geben. Infos hier: http://community.bistudio.com/wiki/sqs
In einem SQS-Skript (SkriptName.sqs) dürfte auch SQF-Syntax entsprechend verwendbar sein. In SQF-Skripten (SkriptName.sqf) wird es bei der Anwendung von SQS-Syntax Probleme geben. |
03.01.2013, 23:43 | #3 (permalink) |
Registriert seit: 06.06.2008
Beiträge: 209
|
SQS-Skripte werden mit exec, SQF-Skripte mit execVM gestartet.
Ansonsten sind SQS-Skripte nur Zeilen basierend, während SQF Block basierend ist. Der einzige Grund noch SQS zu verwenden, ist, dass die entsprechende Person zu faul war SQF zu lernen oder den Vorteil nicht erkennt.
__________________
#include "signatur.h" "I'm not slacking of. My addon is 'pboing'!" |
04.01.2013, 02:17 | #5 (permalink) |
Registriert seit: 16.07.2010
Beiträge: 305
|
Klar, wie sollte man sonst in sqs ein mehrzeiligen Code-Block bilden. Aber das zeigt umso mehr, wie veraltet sqs ist. Außerdem wird am Ende eines sqs Scripts meines Wissens noch ein exit Befehl benötigt.
Geändert von Rockhount (04.01.2013 um 02:25 Uhr). |
04.01.2013, 09:14 | #6 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Ein .sqs Skript benötigt kein exit am Ende. Genau so wenig wie ein .sqf Skript irgend ein ausdrückliches Ende benötigt.
In einem .sqs Skript ist z.B. folgender .sqf Code erlaubt: if (alive player) then {player groupChat format["Hallo %1!",name Player]} for "_i" from 1 to 3 do {player groupChat format["Runde %1!",_i]} solange der "Code-Block" in einer Zeile steht! Wie man sieht ist dabei kein ; am Ende einer Zeile erforderlich. |
04.01.2013, 11:26 | #7 (permalink) |
Registriert seit: 26.11.2006
Ort: Kiel, S-H
Alter: 57
Beiträge: 3.013
|
Das ist richtig *1 , zwingt aber letztendlich den Ersteller seine Scripte für die Verarbeitung logischer zu gestalten so was die Geschwindigkeit deutlich erhöht ist. Anfangs ist das vielleicht etwas gewöhnungsbedürftig, im späteren Verlauf aber zunehmend förderlicher imo. Letztendlich kann man durchaus sagen das die Geschwindigkeit SQS<>SQF so unterscheidlich ist wie Heissluftballon<>Düsenjet. Wenn ich daran denke das ich zu OFP Zeiten den Unterschied zwischen 3 oder 4 Paradrop scripten merklich spüren konnte, muß man sich bei SQF schon reichlich mühe geben um auch nur annäherd etwas derartiges zu erreichen. *1 einen einmaligen Sprung an eine bestimmte Stelle kann man mit einem betimmten Befehl durchaus realisieren via scopename / breakto. Zudem gibt es "Tricks" das man z.B. Unterroutinen erstellt, die man dann mittels call aufrufen kann was dem eigentlichen Sinn von gelabelten Bereichen recht nahe kommt, die Verarbeitungsgeschwindigkeit nochmals erhöht und noch einige andere Möglichkeiten. Das verursacht/-e aber Fehler in der RPT ... solche Unarten sollte man sich ganz schnell abgewöhnen, also bitte immer am Zeilenende ein Semikolon, auch bei SQS. Das mit dem Exit am Ende war afaik nur bei OFP noch notwendig !
__________________
Nur ein Beispiel das zeigt wie BI "support" definiert: https://feedback.bistudio.com/T75547 Geändert von Lester (04.01.2013 um 11:30 Uhr). |
04.01.2013, 12:56 | #8 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Wer in der Lage ist ein SQS-Skript zu schreiben, dem wird der Umstieg auf die SQF-Syntax keine Probleme machen. Es ist im Grunde nur folgendes zu beachten: http://community.bistudio.com/wiki/Control_Structures
Anstelle des Rumgehüpfes mit goto gibt es die while und for Loops. Nicht von den geschweiften Klammern {} verwirren lassen, die grenzen nur den "Code-Bereich" eines Befehles ab. Wenn man diese Klammern entsprechend anordnet, erhöhen sie erheblich die "Lesbarkeit" des Codes. |
04.01.2013, 15:02 | #9 (permalink) |
User gesperrt
Registriert seit: 20.10.2009
Ort: Jetzt auch im BIF
Alter: 39
Beiträge: 9.163
|
Gut danke erstmal für die Antworten.
Wenn ich das jetzt richtig verstanden habe ist sqs also nicht mehr Zeitgemäß. Sollte man solche Skripte allerdings doch noch in eine Mission verbaut haben, würde es auch nicht schlimm sein da man vom Skript schreiben (also ich jedenfalls) keine Ahnung hat und dieses nur per Copy & Paste einfügt. (natürlich mit verweis auf den verfasser des Skriptes) |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|