Hilfe bei "Heli Evakuierungs Script"
Hi Leute,
nach unzähligen Stunden ohne nennenswerten Fortschritt, wende ich mich jetzt an euch :) Ich schreibe gerade ein einfaches Helikopter Evakuierungs-Script. Der Heli (evac_heli) ist als Objekt vorhanden und steht auf einem Helipad (helipad). Der Player soll via Funk (am besten übers BIS_Communicationmenu) die Evakuierung anfordern. Der Heli soll starten zur Position des 'anfordernden players' fliegen, diesen einsammeln und anschließend zur Landezone (wieder das Helipad) fliegen, dort landen und den Player (und seine, mit ihm eingestiegenen Jungs) rausschmeißen, dann den Motor ausmachen und warten, bis zum nächsten Ruf über Funk. Teil der description.ext: PHP-Code:
PHP-Code:
PHP-Code:
wenn ich auf den eintrag im Comm-menü "Evakuierung" drücke, geschieht nichts. Daher habe ich erstmal ein Trigger erstellt, diesem "Funk Bravo" zugewiesen und darüber das "evac.sqf" ausführen lassen. ich denke mal über Arrays würde das alles besser laufen, aber die checke ich noch nich so richtig... nach betätigen des "Funk Bravo", kommt der Sound zu "EVAC_DENIED" (also abgelehnt), was er eigentlich nur ausführen soll, wenn der helikopter motor bereits läuft (also der heli schon unterwegs ist). dann geht er automatisch weiter im script und führ die andern zwei sounds aus (wobei allerdings der Text nicht funktioniert -.-), startet den motor und macht ihn direkt wieder aus... mehr passiert nicht -.- gerne lade ich hier auch die test-mission dazu hoch. in dieser test-mission geht es auch übrigens um meinen andern post von gestern: PIP - Livefeed - Hilfe Jungs ^^ - HX3 Foren hoffe ihr könnt mir da weiterhelfen.:) PS: das ganze soll möglichst auch multiplayerfähig sein :D |
Schick mal die Testmissi, vielleicht kann ich dir weiterhelfen.
Ich versuche es zumindest ... LG Jan janis.11@gmx.net |
~ im sqf?
Nimm sleep Warum evac_heli action ["engineOn", evac_heli]; ? Sobald der Heli einen WP bekommt, macht er den Motor an. Kannst du eigentlich weglassen. Der Heli hat eine Crew, richtig? Ist der Motor DEFINITV aus? Diese BIS Funktion, was genau bewirkt die? Erstellt die einen AddAction-eintrag oder wie ruft man die auf? Ich frage aus Interesse, da ich diese noch nie benutzt habe. addWaypoint fordert eine Gruppe. Ich bezweifel, dass evac_heli eine "Gruppe" ist, sondern vielmehr der der name des Helis. Probiere mal diese in deiner Init: Code:
anforderung = false; Code:
private ["_wp1","_wp2","_wp3","_wp4"]; Bei dem Löschen der Wegpunkte bin ich mir nicht sicher, ob das sein muss. Probieren geht über studieren. xD Lösche mal deine RPT Einträge. Starte das Script und poste die Fehlermeldung aus der RPT, wenn welche auftauchen |
Zitat:
aber okee ich nehme sleep :) Zitat:
Zitat:
Da es kein leeres Fahrzeug ist, geh ich von aus, das Pilot, Copilot & Gunner drinne sitzen. Der Rotor bewegt sich nicht, das sehe ich über's Lifefeed (Init auf Player, Quelle ist ein Fahnenmast, Ziel der Helikopter). So kann ich ganz einfach kontrollieren ob der (doch recht weit entfernte) Helikopter noch still steht oder sich rührt :D Zitat:
das müsste ich dann wohl über die Arrays lösen oder? zwecks "select 0", "select 1", etc... was bedeutet das hier genau?: Zitat:
Zitat:
ich habe allgemein das "isEngineOn" nur reingenommen, um festzustellen ob der Heli bereits unterwegs ist. Falls ein zweiter Player "Evakuierung" anfordert und der Heli aber grade unterwegs ist, um einen anderen Player zu holen, dann soll die Anfrage verweigert werden (EVAC_DENIED). :rolleyes: Zitat:
PHP-Code:
Zitat:
Zitat:
Was für Möglichkeiten man genau hat, weis ich allerdings selbst nicht :rolleyes: Naja ich werd aufjedenfall nach Feierabend mal ausprobieren was du mir hier vorgeschlagen hast, danke schonmal :daumen: |
Großer, ich habe ganz bewußt mit der Anforderung garbeitet. Wenn du es mit EngineOn machen willst, so tu dies. Hast du dir mein geposteten Vorschlag genau angeschaut? Wie soll das mit der IF-Abfrage denn funktionieren, wenn du unten wieder isEngineOn = false reinschreibst. Obwohl dieser code Quark ist, weil der Syntax so lautet: Boolean = isEngineOn vehicle
Da mit der gruppe ist mir ein Fehler passiert testgruppe = group evac_heli Private bedeutet, die Variablen werden nur in diesem Script genutzt Nein das mit der Gruppe löst du nicht über einen Array in diesem Fall. Lies dir doch mal bitte bei BIS Wiki den Befehl durch. Du gibst den Namen des Fahrzeuges an. Laß dir doch per sideChat die Gruppe des HEli ausgeben. Dürfte irgendetwas mit Aplha 1:1 oder so rauskommen. http://community.bistudio.com/wiki/C...ommands_Arma_3 Edit: Wieso hast do ein do stop drin??? ich bau mal was zusammen.... |
Das ist ein einfaches Abholscript.
Der Heli fliegt direkt zu deiner Position, lädt dich ein und fliegt zurück zu der Position, von der er gestartet ist Aufruf über evac = [heliname] execVM "dof_evac_heli.sqf" Code:
//**********************DOF_EVAC_HELI********************* |
Erstmal ein GROßES Dankeschön an euch, für die schnelle und aufschlußreiche Hilfe :daumen:
Habe jetz schon ein besseres Verständnis für die "Arrays", denn... Zitat:
...mag mir einer noch schnell das "select 0, select 1, etc" bei den arrays erklären :rolleyes::(? grade im bezug auf: Code:
_hubi = _this select 0; Code:
deleteWaypoint [group _hubi , 0]; |
mit dem Aufruf [heliname] exec...
Damit erzeugst du einen Array. Select 0 wählt das erste Element aus 1 das 2. 2 das 3. usw Mal angenommen evac = [heliname, 30 70] execVM "dof_evac.sqf"; zur Verdeutlichung: evac = [select 0, select 1, select 2] .... Code:
... Jetzt habe ich das Script abgeändert. Er wartet nicht bis alle Einheiten eingestiegen sind, sondern nur eine im Array vordefinierte Zeit. Dann fliegt der Heli in einer vordefinierten Höhe davon. waitUntil {getpos _hubi select 2 < 5}; getPos fragt die Position des Helis ab und bekommt einen Array [länge,breite, höhe] select 2 fragt das 3. element dieses array ab. ****************** Eine Script für dich zur Veranschaulichung Stelle dir einen Heli auf die KArte und lasse diesen von a nach b fleigen. in die Init des Helis schreibst du rein: test = [this] execVM "DOF_TEST.sqf"; Code:
private ["_heli"]; |
Vielen Dank dafür.
Jetzt bin ich schon ein ganzes Stück weiter (nicht nur in diese Script hier, sondern allgemein). Werde heute abend leider nicht dazu kommen, das ganze zu testen, da mein Weibchen heute ein wenig aufmerksamkeit haben möchte :lol::confused: Aber werde es die Tage ausprobieren und anschließend hier berichten. Habe ja jetzt 2 Versionen des "Heli-Evac-Scripts", einmal von JanIs (per Email) und einmal von Drunken Officer. :D :daumen: Wenn das alles klappt, muss ich's nur noch hinbekommen das LifeFeed(PiP) auf dem Laptop (oder einem Schild, Tafel, o.ä.) darzustellen und nicht als Minibildschirm im eingenen Screen. Siehe: http://hx3.de/editing-scripting-187/...e-jungs-23281/ |
@Drunken Officer
Dein Script hat IMHO einen kleinen Fehler drin. Anstatt: Code:
waitUntil {{_x in _hubi;} forEach units group player}; Code:
waitUntil {{_x in _hubi} count units group player == count units group player};}; Ansonsten läuft es einwandfrei. :daumen: Just my 2 Cents Greetz Jan |
Hey Jungs,
also das Heli-Evac-Script läuft einwandfrei :) in der aktuellen Fassung sieht es wie folgt aus: Code:
/* - - - - - - - - - - - - - - - - - - - - - - - - - - Ein Soldat (soldat2) soll zu mir rüber laufen. Den Befehl dazu bekommt er über ein addAction-Command, der an einem Objekt (laptop) durch einen Spieler ausgelöst wird. Schaut's euch mal an: Init.sqf - Eintrag: Code:
laptop addAction["<t color='#000000'>Komm her, Soldat!</t>","lauf.sqf", soldat]; Code:
private ["_wp0","_pos","_soldat"]; |
Zitat:
werde dies noch abändern. |
Soooo....
den Fehler in der "lauf.sqf" hab ich selbst gefunden und das ganze mit den Arrays habe ich nun verstanden! eeeeeeendliiiich :ugly: hier nur zur Info wie die "lauf.sqf" jetzt ausschaut: Code:
//Test-Script, um Soldat2 via addAction am Laptop zum Player laufen zu lassen. Der Thread kann jetzt geschlossen werden :) |
Zitat:
Ich wusste ja nicht, dass du lieber die gescriptete Version hättest. Aber egal, Hauptsache es läuft jetzt alles wunschgemäß. |
Ich hab mal versucht euer script in eine Test mission zu packen und hab noch bissl dran rum geschraubt ;)
Steam Workshop :: z_Heli_evacuation_test das was hier oben als Verbesserung rein gesetzt wurde... hat glaub ich einen fehler. Code:
waitUntil {{_x in _hubi} count units group player == count units group player};}; Code:
waitUntil {{{_x in _hubi} count units group player == count units group player};}; |
Jo ich habe da auch weiter gebaut. Meine aktuelle Version, fordert einen Wurf einer Rauchgranate. Es kann wahlweise nach Hause geflogen werden bzw eine neu Lz gewählt werden. Baue gerade noch den Dialog ein.
Die 2. Klammer am Ende ist nutzlos. WaitUntil wird bereits mit der ersten klammer geschlossen. Also die 2. Löschen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 Uhr. |
Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias