PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : vom heli mit boot abspringen


hypercop
25.01.2009, 01:26
Hallo

ich möchte in einem Helikopter einige hundert Meter vor eine Insel geflogen werden. Dort soll der Heli langsam fliegen oder im Schwebeflug verweilen.

An die Aus-/Einstiegslucke des Helikopters beame ich mit dem setpos getpos Befehl ein Schlauchboot, welches darauf ins Wasser fällt.

Ich möchte nun, dass der Spieler vom Innenraum des Helikopters ins Boot gebeamt wird, solange das Boot sich noch im Fall nach unten befindet. Ich hab es mit dem Befehl

soldat1 domoveincargo boot

probiert, aber der Befehl funktioniert nicht, wenn ich mich bereits in einem Fahrzeug befinde.

Hat jemand eine Idee wie ich das anstellen könnte?

Cyborg11
25.01.2009, 01:44
Der Befehl ist ja auch falsch ;)
Der richtige Befehl lautet moveincargo.

Also deine Zeile müsste dann wie folgt ausschauen:
soldat1 moveincargo boot

Mr-Murray
25.01.2009, 10:06
Du kannst das Boot auch unten an den Heli hängen und den Spieler reinsetzen, wenn du magst!!!

DirtyHarryTPC
25.01.2009, 11:36
Du kannst das Boot auch unten an den Heli hängen und den Spieler reinsetzen, wenn du magst!!!


hmmm klingt gut ,und wie gehts :D

Mr-Murray
25.01.2009, 14:11
Aber klar!
Kannst du dir hier herunterladen:

Mapfact Forum - Lob & Kritik zu Mr-Murray´s Armed Assault Editing Guide (http://www.mapfact.net/forum_arma/viewtopic.php?f=3&t=57&start=0)

Du musst statt dem Car eben den Klassennamen des Boot´s einsetzen.


Steht natürlich auch im Editing Guide - Deluxe Edition (http://www.mr-murray.de.vu) unter:

Kapitel 6.18 - Das Vehikeltransportskript - Seite 209


Viel Spaß

Mr-Murray

DirtyHarryTPC
25.01.2009, 14:18
alles klar danke :D

hypercop
25.01.2009, 20:50
@Cyborg11

Ich habe mich im Beitrag verschrieben. Ich meinte natürlich

soldat1 moveincargo boot

Wäre schön gewesen, wenn dass der Fehler gewesen wäre. Schade.

@Mr-Murray

Die Idee, das Boot einfach unter den Helikopter zu kleben, ist nicht schlecht, passt aber leider nicht in meine Mission. Gibt es keinen Befehl, welcher es erlaubt, dass ich aus einem Fahrzeug in ein anderes Fahrzeug gebeamt werde?

Ich hab mir schon überlegt, dass ich den soldat1 per script mit dem Befehl eject aussteigen lasse und ihn kurz darauf in das Boot beame. Das Problem ist, dass der Soldat nach dem Aussteigen am Fallschirm hängt und ich ihn dann wieder nicht in das Boot setzen kann.

hypercop
25.01.2009, 22:13
OK
ich habe eine Lösung. Ich steige über die para.sqs aus, dann werde ich unmittelbar danach über setpos getpos zu einem Helipad gesetzt und 0.01 Sekunden danach in das Boot.

Fertig.

Mr-Murray
25.01.2009, 22:52
Du kannst eine Einheit, egal in welchem Fhz sie gerade sitzt, einfach mit moveincargo ins nächste beamen.

hypercop
25.01.2009, 23:28
Funktioniert nicht. Ich hab es im Edito probiert. Hab einen Heli gesetzt und mich als Soldaten mit soldat moveincargo heli reingesetzt. Dann einen Auslöser Alpha, in dem steht: soldat moveincargo boot. Den Auslöser hab ich auf mehrfach gestellt. Er funktioniert nur, wenn ich nicht im Heli bin.

Mr-Murray
26.01.2009, 08:38
Hmmm... ist mir neu. Werde ich auch mal testen.

Lester
26.01.2009, 09:12
Ist so, man muß sie erst kurz vor die Tür setzen bevor man moveincargo neu zuweisen kann. ;)

Lightman
26.01.2009, 12:05
...und selbst das klappt nicht, wenn sich der Heli im Flug befindet. Mit Action Befehlen herumtricksen tuts da auch nicht. Interressante Sache, wart mir bisher auch neu. Hat vielleicht mit dem Fallschirm als "Vehikel" zu tun, in den man ja normalerweise automatisch gesetzt wird.

Mr-Murray
26.01.2009, 12:30
Ah ok. Siehste mal, man kann ja nicht alles wissen ;)

Also dann austseigen lassen und neuem Veh zuteilen.

Lester
26.01.2009, 13:55
...und selbst das klappt nicht, wenn sich der Heli im Flug befindet. Mit Action Befehlen herumtricksen tuts da auch nicht. Interressante Sache, wart mir bisher auch neu. Hat vielleicht mit dem Fallschirm als "Vehikel" zu tun, in den man ja normalerweise automatisch gesetzt wird.Korrekt !
Also einfach ein zweites mal aussteigen lassen wenn es auf Luftfahrzeuge angewendet werden soll und gut ist.
Vielelicht klappt ja auch ein getout anstelle des eject, dann sollte es keinen Falli geben. ;)

Lightman
26.01.2009, 14:55
Getout hatte ich auch getestet. Geht auch nicht! :armaaa:
:D

Lester
26.01.2009, 15:14
Das muß wohl der pure Selbsterhaltungstrieb der Einheit vor solchen Selbstmordcommandos sein. :D

Dann bleibt halt nur das doppelte Eject (und natürlich den Falli nicht vergessen zu deleten), das funktioniert dann aber mit Sicherheit ! ;)

Mr-Murray
26.01.2009, 16:54
Nimm mein Fallschrimsript aus dem Editing Guide! Das kann man nämlich auch für normale Fahrzeuge nehmen!

Cyborg11
26.01.2009, 18:52
Hab dir mal ein Skript geschrieben :)

Boot bleibt erst ein bisschen am Heli hängen:
; Hir bitte den Namen des Helis und der Einheit(Spieler) eintragen
gheli = heli;
gunit = p1;

raus = 0;
boot = "PBX" createvehicle [0,0,0];


#loop
boot setpos (gheli modelToWorld [-2.4,1,-3]);
vu = vectorUp gheli;
vd = vectorDir gheli;
boot setvectorup vu;
boot setvectorDir vd;
If (raus == 1) then {goto "next"};
~0.01
goto "loop";

#next
gunit action ["EJECT", heli];
para = vehicle gunit;
gunit action ["EJECT", para];
deletevehicle para;
gunit moveindriver boot;
exit;

Boot fällt gleich:; Hir bitte den Namen der Einheit (Spieler) eintragen
gunit = p1;

boot = "PBX" createvehicle [0,0,0];

gunit action ["EJECT", heli];
para = vehicle gunit;
gunit action ["EJECT", para];
deletevehicle para;
gunit moveindriver boot;
exit;

Weiß eigentlich einer, ob setpos nun synchron im MP ist?

hypercop
28.01.2009, 22:58
Das ist ja verdammt gut Cyborg11. Genau sowas wollt ich. Danke.

Xeno
29.01.2009, 00:22
Weiß eigentlich einer, ob setpos nun synchron im MP ist?
Das ist relativ. Relativ synchron, wenn es nicht zu oft hintereinander benutzt wird und die Lokalität des setPos Objektes gewahrt wird (ob das Script wirklich da läuft wo das Objekt lokal ist, kommt drauf an, was man machen will).

Aber mal eine andere Frage...
Warum benutzt Du nur globale Variablen in einem Script ?

Xeno

Cyborg11
29.01.2009, 17:37
Aber mal eine andere Frage...
Warum benutzt Du nur globale Variablen in einem Script ?

Xeno
Du hast immer etwas an meiner Variablenwahl zu meckern :cool:

Naja ka. Waren ein paar Testversuche und die gloablen Variablen hatte ich dann für ein zweites Skript gebraucht. Mittlerweilen läuft alles in einem und es funzt atm mit 6 Einheiten.
Nebenbei hab ich es auch geschafft, dass wenn das Squad > als 4 Mann ist (mehr passen nicht in das PBX), dann werden 2 Schlauchboote abgeworfen :naughty:



Version 2 :D

Boot: Zodiac (CRRC, Schlauchboot von BLUFOR)
Skriptvarianten: Mehr als 6 Einheiten (atm zwei Schlauchboote), weniger als 6 (ein Schlauchboot)

Skript für weniger als 6 Einheiten im Squad => 1 Schlauchboot
; ************************************************** **************
; Script file for Armed Assault
; Created by: Cyborg11
; ************************************************** **************

; Skript aufrufen mit:
; boota = this addaction ["Schlauchboot aus dem Heli holen","boot.sqs",1]
; in die Initzeile des Helikopters

; Hier bitte den Namen des Helis und eurer Einheiten eintragen
_gheli = heli;
_gunit1 = p1;
_gunit2 = p2;
_gunit3 = p3;
_gunit4 = p4;
_gunit5 = p5;

; Initialisierung
raus = 0;
_ggrp = group _gunit1;
_cgrp = count units _ggrp;
_booth = _this select 3;

; Abfrage und Weiter im Skript
? (_booth==1 AND _cgrp >=6) : goto "create2";
? (_booth==2 AND _cgrp >=6) : goto "abwurf2";
? (_booth==1) : goto "create";
? (_booth==2) : goto "abwurf";

#create
_boot = "Zodiac" createvehicle [0,0,0];
_gheli removeaction boota;
boota = gheli addaction ["In Schlauchboot einsteigen und abwerfen","boot.sqs",2];
goto "loop";

#loop
_boot setpos (_gheli modelToWorld [-2.5,3.5,-2.5]);
_vu = vectorUp _gheli;
_vd = vectorDir _gheli;
_boot setvectorup _vu;
_boot setvectorDir _vd;
If (_booth==2) then {exit};
~0.01
goto "loop";

#abwurf
; Einheit1
_gunit1 action ["EJECT", _gheli];
_para1 = vehicle _gunit1;
_gunit1 action ["EJECT", _para1];
deletevehicle _para1;
_gunit1 moveindriver _boot;
; Einheit2
_gunit2 action ["EJECT", _gheli];
_para2 = vehicle _gunit2;
_gunit2 action ["EJECT", _para2];
deletevehicle _para2;
_gunit2 moveincargo _boot;
; Einheit3
_gunit3 action ["EJECT", _gheli];
_para3 = vehicle _gunit3;
_gunit3 action ["EJECT", _para3];
deletevehicle _para3;
_gunit3 moveincargo _boot;
; Einheit4
_gunit4 action ["EJECT", _gheli];
_para4 = vehicle _gunit4;
_gunit4 action ["EJECT", _para4];
deletevehicle _para4;
_gunit4 moveincargo _boot;
; Einheit5
_gunit5 action ["EJECT", _gheli];
_para5 = vehicle _gunit5;
_gunit5 action ["EJECT", _para5];
deletevehicle _para5;
_gunit5 moveincargo _boot;
exit;
Skript für mehr als 6 Einheiten im Squad => 2 Schlauchboote
; ************************************************** **************
; Script file for Armed Assault
; Created by: Cyborg11
; ************************************************** **************

; Skript aufrufen mit:
; boota = this addaction ["Schlauchboot aus dem Heli holen","boot.sqs",1]
; in die Initzeile des Helikopters

; Hier bitte den Namen des Helis und eurer Einheiten eintragen
_gheli = heli;
_gunit1 = p1;
_gunit2 = p2;
_gunit3 = p3;
_gunit4 = p4;
_gunit5 = p5;
_gunit6 = p6;

; Initialisierung
raus = 0;
_ggrp = group _gunit1;
_cgrp = count units _ggrp;
_booth = _this select 3;

; Abfrage und Weiter im Skript
? (_booth==1 AND _cgrp >=6) : goto "create2";
? (_booth==2 AND _cgrp >=6) : goto "abwurf2";
? (_booth==1) : goto "create";
? (_booth==2) : goto "abwurf";

#create
_boot = "Zodiac" createvehicle [0,0,0];
_gheli removeaction boota;
boota = gheli addaction ["In Schlauchboot einsteigen und abwerfen","boot.sqs",2];
goto "loop";

#loop
_boot setpos (_gheli modelToWorld [-2.5,3.5,-2.5]);
_vu = vectorUp _gheli;
_vd = vectorDir _gheli;
_boot setvectorup _vu;
_boot setvectorDir _vd;
If (_booth==2) then {exit};
~0.01
goto "loop";

#abwurf
; Einheit1
_gunit1 action ["EJECT", _gheli];
_para1 = vehicle _gunit1;
_gunit1 action ["EJECT", _para1];
deletevehicle _para1;
_gunit1 moveindriver _boot;
; Einheit2
_gunit2 action ["EJECT", _gheli];
_para2 = vehicle _gunit2;
_gunit2 action ["EJECT", _para2];
deletevehicle _para2;
_gunit2 moveincargo _boot;
; Einheit3
_gunit3 action ["EJECT", _gheli];
_para3 = vehicle _gunit3;
_gunit3 action ["EJECT", _para3];
deletevehicle _para3;
_gunit3 moveincargo _boot;
; Einheit4
_gunit4 action ["EJECT", _gheli];
_para4 = vehicle _gunit4;
_gunit4 action ["EJECT", _para4];
deletevehicle _para4;
_gunit4 moveincargo _boot;
; Einheit5
_gunit5 action ["EJECT", _gheli];
_para5 = vehicle _gunit5;
_gunit5 action ["EJECT", _para5];
deletevehicle _para5;
_gunit5 moveincargo _boot;
exit;


#create2
_boot = "Zodiac" createvehicle [0,0,0];
_boot2 = "Zodiac" createvehicle [0,0,0];
_gheli removeaction boota;
boota = gheli addaction ["In Schlauchboote einsteigen und abwerfen","boot.sqs",2];
goto "loop2";

#loop2
_boot setpos (_gheli modelToWorld [-2.5,-1,-2.5]);
_vu = vectorUp _gheli;
_vd = vectorDir _gheli;
_boot setvectorup _vu;
_boot setvectorDir _vd;
_boot2 setpos (_gheli modelToWorld [-2.5,4,-2.5]);
_vu = vectorUp _gheli;
_vd = vectorDir _gheli;
_boot2 setvectorup _vu;
_boot2 setvectorDir _vd;
If (_booth==2) then {exit};
~0.01
goto "loop2";

#abwurf2
; Einheit1
_gunit1 action ["EJECT", _gheli];
_para1 = vehicle _gunit1;
_gunit1 action ["EJECT", _para1];
deletevehicle para1;
_gunit1 moveindriver _boot;
; Einheit2
_gunit2 action ["EJECT", _gheli];
_para2 = vehicle _gunit2;
_gunit2 action ["EJECT", _para2];
deletevehicle _para2;
_gunit2 moveincargo _boot;
; Einheit3
_gunit3 action ["EJECT", _gheli];
_para3 = vehicle _gunit3;
_gunit3 action ["EJECT", _para3];
deletevehicle _para3;
_gunit3 moveincargo _boot;
; Einheit4
_gunit4 action ["EJECT", _gheli];
_para4 = vehicle _gunit4;
_gunit4 action ["EJECT", _para4];
deletevehicle _para4;
_gunit4 moveincargo _boot;
; Einheit5
_gunit5 action ["EJECT", _gheli];
_para5 = vehicle _gunit5;
_gunit5 action ["EJECT", _para5];
deletevehicle _para5;
_gunit5 moveincargo _boot;
; Einheit6
_gunit6 action ["EJECT", _gheli];
_para6 = vehicle _gunit6;
_gunit6 action ["EJECT", _para6];
deletevehicle _para6;
_gunit6 moveindriver _boot2;
exit;

Cyborg11
01.05.2009, 13:45
Hm ... ich hab da ein kleines Problem und zwar, wollte ich mein Skript mal auf .sqf umschreiben. Soweit, so gut. Es klappt ja auch alles. Boot wird erstellt, bleibt erstmal hängen bis zur nächsten Action, Trupp steigt danach aus. Soo hier ist das Problem:
Und zwar bleibt das Boot einfach am Heli hängen und keiner meiner Soldaten wird in das Boot gebeamt :/ Dadurch fallen dann alle Soldaten auf den Boden und sterben dadurch. Habe die Vermutung, dass das zuerst laufende Skript (läuft ja dann zweimal) in der While-Schleife feststecken bleibt und die Abfrage einfach missachtet ...

ArmA.rpt gibt übrigens das aus:
p1: Getting out while IsMoveOutInProgress
p2: Getting out while IsMoveOutInProgress
p3: Getting out while IsMoveOutInProgress
p4: Getting out while IsMoveOutInProgress
p5: Getting out while IsMoveOutInProgress

Und hier mal mein .sqf Beispielskript:
//////////////////////////////////////////////////////////////////
// Function file for Armed Assault
// Created by: Cyborg11
//////////////////////////////////////////////////////////////////

// Skript aufrufen mit:
// boota = this addaction ["Schlauchboot aus dem Heli holen","boot.sqf",1]
// in die Initzeile des Helikopters

// Einheitennamen
_gheli = heli;
_gunit1 = p1;
_gunit2 = p2;
_gunit3 = p3;
_gunit4 = p4;
_gunit5 = p5;
_gunit6 = p6;

// Initialisierung
raus = 0;
_ggrp = group _gunit1;
_cgrp = count units _ggrp;
_booth = _this select 3;
//hint format ["Gruppe: %1\nAnzahl: %2\n_booth = %3",_ggrp,_cgrp,_booth];

// Erstellen eines Bootes
switch (_booth) do {
case 1: {
hint "Ist auf 1.";
_boot = "Zodiac" createvehicle (_gheli modelToWorld [-2.5,3.5,-2.5]);
_gheli removeaction boota;
boota = _gheli addaction ["In Schlauchboot einsteigen und abwerfen","boot.sqf",2];
While {_booth==1} do {
If (_booth==2) exitwith{};
_boot setpos (_gheli modelToWorld [-2.5,3.5,-2.5]);
_vu = vectorUp _gheli;
_vd = vectorDir _gheli;
_boot setvectorup _vu;
_boot setvectorDir _vd;
hint format ["Position Boot: %1", position _boot];
sleep 0.01;
};
};
case 2: {
hint "Ist auf 2.";
_gunit1 action ["EJECT", _gheli];
_para1 = vehicle _gunit1;
_gunit1 action ["EJECT", _para1];
deletevehicle _para1;
_gunit1 moveindriver _boot;

_gunit2 action ["EJECT", _gheli];
_para2 = vehicle _gunit2;
_gunit2 action ["EJECT", _para2];
deletevehicle _para2;
_gunit2 moveincargo _boot;

_gunit3 action ["EJECT", _gheli];
_para3 = vehicle _gunit3;
_gunit3 action ["EJECT", _para3];
deletevehicle _para3;
_gunit3 moveincargo _boot;

_gunit4 action ["EJECT", _gheli];
_para4 = vehicle _gunit4;
_gunit4 action ["EJECT", _para4];
deletevehicle _para4;
_gunit4 moveincargo _boot;

_gunit5 action ["EJECT", _gheli];
_para5 = vehicle _gunit5;
_gunit5 action ["EJECT", _para5];
deletevehicle _para5;
_gunit5 moveincargo _boot;
};
};


PS: Ich weiß, dass ich das mit den Einheitennamen besser regeln kann. Das kommt aber erst danach, wenn das Skript auch so funzt, wie es soll :D
SQS Variante funktioniert ja einwandfrei, wollte es aber gerne in SQF haben ;)