28.08.2009, 14:14 | #21 (permalink) |
Registriert seit: 26.03.2008
Beiträge: 2.822
|
SQF gibt es schon seit ArmA 1
__________________
|
31.08.2009, 19:01 | #23 (permalink) |
Registriert seit: 01.06.2009
Beiträge: 103
|
Du hast ja bereits Links erhalten, die Dir weiterhelfen sollten. Generell ist das BIS-Wiki immer eine gute Quelle zum Nachgucken. Du findest dort zu jedem Thema Infos, wenn sie auch meist nicht so ausführlich sind. Die Unterschiede zwischen sqs und sqf sind mir gar nicht mehr so präsent, da ich schon zulange nur mit sqf arbeite. In sqf hast Du mehr verschiedene Schlaufen/Abfragen zur Verfügung. Es gibt die "if-then-else" und die "switch-do-case" Abfrage. Es gibt die "for-do" Schlaufe in verschiedenen Varianten und die "while-do" so wie die "forEach"- Schlaufe. Das einzige auf was Du bei sqf verzichten musst, ist das "goto", was aber durch die verschiedene Schlaufen mehr als aufgewogen wird. Statt "~" muss man "sleep", statt "@" "waituntil" verwenden und man muss jede Anweisung mit Strichpunkt abschliessen. Die meisten aktuellen Infos bezüglich scripten beziehen sich inzwischen auf den sqf-Syntax, was sicher ein weiterer Grund für das Umsteigen sein dürfte. Ein weiterer Vorteil von sqf ist die Möglichkeit damit Funktionen zu erstellen. Funktionen können mit "call" aufgerufen werden, werden von der CPU prioritär ausgeführt und können einen Rückgabewert liefern. Man sollte allerdings beachten, dass man keine Funktionen erstellt die permanent laufen oder lange Wartezeiten in sich bergen (z.B. sleep mit hohen Werten, waituntil auf welches lange gewartet werde muss, usw.). Ein Funktion sollte kurz und bündig sein, damit sie schnell abgearbeitet ist und die CPU-Ressource wieder freigibt. Der Aufrufende Code (Trigger, Script) wartet auf das Ergebnis der Funktion. Soll eine Funktion einen Wert zurückgeben, so wird dieser am Ende des Funktioncodes angegeben und nicht mit Strichpunkt abgeschlossen. Eine Funktion unterscheidet sich (abgesehen vom Rückgabewert) ansonsten nicht von einem normalen script. Man kann eine Funktion innerhalb eines normalen sqf-scripts schreiben, wenn sie dann auch innerhalb dieses Scripts aufgerufen wird. Im Normalfall lädt man aber Funktionen beim Start einer Mission vor, indem man innerhalb eines Scripts folgenden Syntax schreibt: Code:
FunktionsName= compile preprocessFile "NamedesFunktionsscripts.sqf"; Code:
[] call FunktionsName; Code:
Funktionsergebnis= [] call FunktionsName; So, das war es jetzt aber ;-). Es gäbe bestimmt noch mehr dazu zu sagen, aber vielleicht nützen Dir die Infos doch schon etwas. Oh, fast hätte ich es vergessen. Ich kenn den Editing Guide (den von Murray nehme ich an) nur vom "hörensagen". Ich weiss also nicht ob er tatsächlich nur sqs- Beispiele drin hat. Da es sqf ja schon seit ArmA gibt, wäre es aber wirklich sehr Schaden, wenn die da nicht abghandelt/benutzt werden. Verwendest Du den auch die neuste version dieses Guides, oder "gurkst" Du etwa noch mit der OFP-version davon rum? :-) Oder Deine Frage hat sich nicht auf Code- Beispiele des Guides bezogen, sondern auf den hier in den Beiträgen vorgestellten Code für den Vehikel-Respawn. Dann lautet die Antwort: Ja, das ist bisher alles sqs. Geändert von Asso-Loki (31.08.2009 um 19:13 Uhr). |
04.09.2009, 02:51 | #24 (permalink) |
Registriert seit: 30.08.2009
Ort: Hamburg
Alter: 36
Beiträge: 10
|
Nofu,
wie muss das script von dir aussehen wenn die höhe der position geändert werden soll ich hab mal was ausprobiert hat aber nicht geklappt. Code:
? !(local server) : exit _vehicle = vehicle _this _startpos = getpos _vehicle _direction = getdir _vehicle _typ = typeOf _this #loop ~10 ? (getdammage _vehicle > 0.98) : goto "checkdamage" ? !(canMove _vehicle) : goto "checkmove" ? (fuel _vehicle == 0) : goto "checkfuel" goto "loop" #checkdamage ~10 ? (getdammage _vehicle > 0.98) : goto "destruct" goto "loop" #checkmove ~10 ? (getdammage _vehicle == 1) : goto "destruct" ~120 ? (canMove _vehicle) : goto "loop" goto "destruct" #checkfuel ~10 ? (getdammage _vehicle == 1) : goto "destruct" ~120 ? (fuel _vehicle > 0) : goto "loop" goto "destruct" #destruct ? (getdammage _vehicle < 1) : _vehicle setdammage 1 ~30 deletevehicle _vehicle goto "createnew" #createnew ~10 _new = _typ createVehicle [_startpos select 0, _startpos select 1,0] _new setPos [(getPos this select 0), (getPos this select 1),16] <----- Hier Blind Drauf Los _new setdir _direction _new exec "respawn_vehicle.sqs" exit |
04.09.2009, 22:20 | #26 (permalink) |
Registriert seit: 26.11.2008
Ort: Würzburg
Beiträge: 32
|
Code:
? !(local server) : exit _vehicle = vehicle _this _startpos = getpos _vehicle _direction = getdir _vehicle _typ = typeOf _this _height = _this select 0 #loop ~10 ? (getdammage _vehicle > 0.98) : goto "checkdamage" ? !(canMove _vehicle) : goto "checkmove" ? (fuel _vehicle == 0) : goto "checkfuel" goto "loop" #checkdamage ~10 ? (getdammage _vehicle > 0.98) : goto "destruct" goto "loop" #checkmove ~10 ? (getdammage _vehicle == 1) : goto "destruct" ~120 ? (canMove _vehicle) : goto "loop" goto "destruct" #checkfuel ~10 ? (getdammage _vehicle == 1) : goto "destruct" ~120 ? (fuel _vehicle > 0) : goto "loop" goto "destruct" #destruct ? (getdammage _vehicle < 1) : _vehicle setdammage 1 ~30 deletevehicle _vehicle goto "createnew" #createnew ~10 _new = _typ createVehicle [_startpos select 0, _startpos select 1,0] _new setPos [(getPos _new select 0), (getPos _new select 1), _height] _new setdir _direction _new exec "respawn_vehicle.sqs" exit muss schon des neue object "_new" sein. schätze mal so dürfte des funzen, musst halt die höhe gewünschte höhe in den array schreiben |
09.09.2009, 15:46 | #27 (permalink) |
Registriert seit: 08.06.2009
Beiträge: 66
|
DAS ist krass. Verstehe nur Bahnhof ^^ Gut das ich erst jetzt mit Editing anfange zu experimentiern und zu lernen. und fast alle Beispiele die ich gesehen habe sqf sind (vermutlich xD) Da kann ich gleich das "aktuelle" lernen :-D |
09.09.2009, 23:46 | #28 (permalink) |
Registriert seit: 26.03.2008
Beiträge: 2.822
|
Auf goto muss man trotzdem nicht ganz verzichten. Es gibt bei den Funktionen breakTo Aber ich sagte ja schon mal, dass .sqf die Zukunft ist hehe Nur viele Neulinge fangen lieber mit .sqs an :/
__________________
|
14.09.2009, 22:36 | #29 (permalink) |
moin leute,
ich hab folgendes Problem: Der Respawn klappt schon ganz gut, eigentlich sogar genau so wie ich es will, ABER das Fahrzeug was neu gespawnt wird hat einen festen Namen der für die Mission wichtig ist, aber wenn das Fahrzeug gespawnt wird klappt ein anderes Skript nicht mehr da das neue Fahrzeug nicht mehr den selben Namen hat, wie kann ich dem neu gespawnten Fahrzeug wieder den selben Namen geben ? |
|
14.09.2009, 23:32 | #31 (permalink) |
danke schon mal aber irgendwie klappt’s nicht, wahrscheinlich hab ich einen Fehler gemacht aber ich bin auch nicht so mit Scripting vertraut, vielleicht könnt ihr mir helfen
Code:
#createnew ~5 _new = _typ createVehicle [_startpos select 0, _startpos select 1,0] _new setdir _direction _new SetVehicleVarName _TruckW1; _new exec "skripte\respawn_vehicle.sqs" exit |
|
15.09.2009, 22:40 | #32 (permalink) |
Hier mal die genaue Erklärung:
Ich hab eine Mission mit einem MHQ gebastelt, nun soweit sogut, in der Basis hab ich einen Punkt gemacht von dem ich mich zum MHQ Telepotieren kann. Aber wenn das MHQ zerstört wird und neu gespawnt wird und telepotieren will dann komm ich zu dem Punkt an dem das MHQ zerstört wird, in manchen fällen ist das ja nicht schlecht aber nicht immer ^^. Also irgendwie klappt das nicht das das neue MHQ den neuen Namen bekommt. Code:
#createnew ~5 _new = _typ createVehicle [_startpos select 0, _startpos select 1,0] _new setdir _direction _VarName="TruckW1"; _new SetVehicleVarName _VarName; _new exec "skripte\respawn_vehicle.sqs" exit Code:
_dir = random 359 player SetPos [(getMarkerPos "markerlkwwest" select 0)-5*sin(_dir),(getMarkerPos "markerlkwwest" select 1)-5*cos(_dir)] exit |
|
16.09.2009, 15:47 | #33 (permalink) |
Registriert seit: 26.11.2008
Ort: Würzburg
Beiträge: 32
|
Code:
_VarName = vehiclevarname _new //gehört ganz oben in den block rein ... ... ... _new = _typ createVehicle _startpos _new setdir _startdir _new setpos [(getpos _startpos select 0), (getpos _startpos select 1), 0] _new SetVehicleVarName _VarName; _new Call Compile Format ["%1=_This ; PublicVariable ""%1""",_VarName]; |
22.09.2009, 16:36 | #35 (permalink) |
Registriert seit: 30.08.2009
Ort: Hamburg
Alter: 36
Beiträge: 10
|
Ich hab leider noch immer ein kleines problem.
Undzwar wenn die vehicle neu respawn, springen sie wie verückt rum. Ich hab schon alle höhen ausprobiert ich hab es sogar mit 10.5 oder 11.5 ... Gab es da nicht mal ein consolen menu mit dem man die höhe rausfinden kann, oder hat es was mit dem spawn script zu tuhen, was ich mir aber nicht vorstellen kann sonnst würde er auf der höhe null auch springen. |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Vehicle Respawn | Schradder | Editing | 0 | 07.02.2009 17:46 |
Problem bei Vehicle Respawn!! | Jois[GER] | Editing | 6 | 04.03.2008 14:34 |
Vehicle Respawn | ryboth | Editing | 10 | 28.12.2006 22:25 |
Vehicle Respawn | -BGS-Tyr | Editing | 1 | 07.12.2006 08:32 |
Aufheben von Befehlen? (Editing Frage) | Lonely | Editing | 2 | 10.07.2005 13:51 |