11.10.2010, 12:38 | #1 (permalink) |
Registriert seit: 15.02.2010
Ort: Niedersachsen/Kreis NI
Alter: 45
Beiträge: 209
|
Bombenteppich erzeugen und Endlosschleife
Hallo zusammen, ich hab mal eben zwei Fragen!
1. Ein Flugzeug namens "flieger" soll in 200m Höhe einen Auslöser durchfliegen. Knapp unterhalb des Fliegers sollen so ca. 10 Bomben erzeugt werden. Eigentlich wollt ich folgenden CreateVehicle Befehl für den Auslöser benutzen: Code:
Bombe1="bo_mk82" createVehicle [(getPos flieger select 0),( getPos flieger select 1), 195]; Bombe2="bo_mk82" createVehicle [(getPos flieger select 0),( getPos flieger select 1), 195]; usw. Als nächstes hab ich versucht 10 Auslöser übereinander zu legen. Aber dann werden mal 3, mal 6, und beim nächsten mal wieder nur 4 Bomben gespawnt. Die Auslöser haben die selbe Größe und liegen direkt übereinander, da muß das Flugzeug doch auch alle 10 auslösen. 2. Nu die Frage zur Endlosschleife: Ich möchte Rauchgranaten und Flares via Auslöser hochgehen lassen. Für die Flares: Code:
Flare="f_40mm_red" createVehicle [(getPos NAME select 0),( getPos NAME select 1), 200]; Code:
Rauch="smokeshell" createVehicle getMarkerPos "Marker1"; Wie macht man das? |
11.10.2010, 13:59 | #2 (permalink) |
Registriert seit: 07.08.2009
Ort: Niedersachsen
Alter: 59
Beiträge: 426
|
Vielleicht hilft dir das, habe ich aus einem Mörserscript herauskopiert. Entsprechend die gewünschte "Bombe" eintragen, Zeit anpassen und Marker platzieren (Bombe1Pos, Bombe2Pos usw.). fliegervorhanden ist dann die Bedingung für das starten des bombenteppichscript.sqf.
Code:
if (flieger1vorhanden) then { iniposX = (Bombe1Pos select 0) - 50; iniposY = (Bombe1Pos select 1) - 50; dropPosX = iniposX + (random 100); dropPosY = iniposY + (random 100); shell = "bo_mk82" createVehicle [dropPosX, dropPosY, 150]; sleep 3; iniposX = (Bombe2Pos select 0) - 50; iniposY = (Bombe2Pos select 1) - 50; dropPosX = iniposX + (random 100); dropPosY = iniposY + (random 100); shell = "bo_mk82" createVehicle [dropPosX, dropPosY, 150]; sleep 3; };
__________________
Panzergrenadiere - Dran! Drauf! Drüber! |
11.10.2010, 18:27 | #3 (permalink) |
setze einen auslöser auf der karte und lasse deinen bomber durchfliegen. gebe die bedingungen eben so das der auslöser bei anwesenheit des bombers einmal ausgelöst wird.
schreibe in die aktivierungszeile: hier das bomben.sqf: Code:
if (!isServer) exitWith {}; for [{_loop=0}, {_loop>=10}, {_loop=_loop+1}] do { _bomb = ObjNull; _bomb = "Bo_Mk82" createVehicle [(getPos flieger select 0),( getPos flieger select 1), 195]; sleep 0.5; }; passe evtl. die wartezeit (sleep) etwas an, fals die bomben zu schnell oder zu dicht fallen. ...selbes schema für deine rauchgranaten: Code:
if (!isServer) exitWith {}; while {true} do { _smoke = ObjNull; _smoke = "smokeshell" createVehicle getMarkerPos "Marker1"; sleep 55; }; ...bei den flares empfiehlt sich ein randomsleep: Code:
sleep ((round random 10)+15);
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
11.10.2010, 19:31 | #4 (permalink) |
Registriert seit: 15.02.2010
Ort: Niedersachsen/Kreis NI
Alter: 45
Beiträge: 209
|
Ich danke euch beiden!
Ich hatte gehofft die Bombengeschichte ohne extra Skript abwickeln zu können. Dachte man könnte hier Code:
Bombe1="bo_mk82" createVehicle [(getPos flieger select 0),( getPos flieger select 1), 195]; So,jetzt muss ich erstmal mit Psychobastards Vorschlägen herumexperementieren. |
11.10.2010, 20:29 | #5 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Alles geht in Arma! Kopiere diese Zeile in deinen Auslöser:
TempNul="bo_mk82" spawn {for "_i" from 1 to 10 do {_this createVehicle [(getPos flieger select 0),( getPos flieger select 1), 195]; sleep 1}} Die Zahl nach sleep gibt den Abstand des Abwurfs in Sekunden an. Edit: Deiner Programm-Zeile muss man noch die die Richtung der Bombe angeben, die gleich dem Flieger ist: TempNul="bo_mk82" spawn {for "_i" from 1 to 10 do {_b=_this createVehicle [(getPos flieger select 0),( getPos flieger select 1), 195];_b setDir getDir flieger ;sleep 1}} Geändert von Vienna (11.10.2010 um 20:48 Uhr). |
12.10.2010, 09:17 | #7 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Das Wichtige ist hier der Befehl spawn, mit ihm können "alle" Skript-Befehle in einen Auslöser geschrieben werden!
spawn - Bohemia Interactive Community So kannst du statt der for Schleife auch eine while Schleife laufen lassen. z.B. TempNul=["smokeshell","Marker1"] spawn {while{true}do{_this select 0 createVehicle getMarkerPos (_this select 1);sleep 55}} |
09.02.2011, 17:07 | #8 (permalink) |
Registriert seit: 03.02.2011
Beiträge: 13
|
Hey Vienna & co.
Ich finde diese Möglichkeit ( ) ideal, um die KI einen Airstrike fliegen zu lassen. Mich stört nur etwas, dass die Fallgeschwindigkeit der Bomben so langsam ist. Das sieht dann komisch aus, wenn diese ohne Tempo angeflogen kommen. Nun meine Frage: Kann ich den gespawnten Bomben noch eine Geschwindigkeit (am besten die des Trägerflugzeugs) zuweisen? Mir ist klar, dass ich dann mit der Position des Auslösers etwas experimentieren muss, damit die Bomben ihr Ziel treffen, aber sie kämen dann etwas realistischer angeflogen. Ideal (die Luxuslösung) wäre, das Flugzeug (in meinem Fall eine SU 25 mit 250-kilo Bomben) würde diese per Auslöser auch tatsächlich abwerfen. Ich hatte es über die Syntax "Flieger fire AirBombLauncher" versucht, aber das klappt nicht. In den vielen Threads, die ich zum Thema angesehen hatte, fand ich keine wirkliche Lösung dafür. Wie kann ich sowas bewerkstelligen? Danke schonmal! |
26.02.2011, 11:52 | #9 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Die Bomben "steuern/beschleunigen" erfolgt mit setVelocity.
Bomben.sqf Code:
//Abwurf von Bomben aus Flugobjekt [Vienna 27.02.2011] // Die Bomben werden mit setVelocity beim Start beschleunigt und gelenkt! //Aufruf: [FliegerName,"bo_mk82",Streuung,Abwurfabstand,Bombenanzahl] execVM "Bomben.sqf" // Beispiel für Auslöser: temp = [Heli1,"bo_mk82",10,0.5,5] execVM "Bomben.sqf" if (!isServer) exitWith {}; private["_f","_m","_t","_p","_z","_speed","_steil","_abst","_i","_r","_b","_v"]; _f = _this select 0; // Flugobjektname _m = _this select 1; // Bombenname _t = _this select 2; // Streuung in Grad _p = _this select 3; // Abwurfabstand in Sekunden _z = _this select 4; // Bombenanzahl _speed = 40; // Bombengeschwindigkeit beim Abwurf _steil = -150; // Steilheit des Bombenfluges _abst = 3; // Abstand der Bombe zum Flugobjekt beim Abwurf for "_i" from 1 to (_z) do // Schleife für Abwurf gemäß Bombenanzahl { // Flugrichtung der Bombe und Streuung _r = (getDir _f) - _t + round(random _t*2); // Bombe an der Position und auf Höhe (minus _abst) des Flugobjektes erstellen _b = _m createVehicle [getPos _f select 0,getPos _f select 1,(getPos _f select 2)-_abst]; // Bombe auf Richtung setzen _b setDir _r; // Startgeschwindigkeit und Flugsteilheit der Bombe festlegen _v = velocity _b; _b setVelocity[(_v select 0)+(sin _r*_speed),(_v select 1)+(cos _r*_speed),(_v select 2) + _steil]; // Pause für den Abwurfabstand der Bomben sleep _p } Edit: Wenn die Helis nach dem Abwurf nicht mehr gebraucht werden, dann im letzten Wegpunkt bei "Aktivierung" einfügen: temp = Heliname spawn {deleteVehicle driver _this; deleteVehicle gunner _this; deleteVehicle _this} Geändert von Vienna (26.02.2011 um 12:15 Uhr). |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Boot erzeugen | Phoenixmaster13 | Editing & Scripting | 4 | 11.09.2010 21:06 |
marker über script erzeugen | hypercop | Editing & Scripting | 2 | 28.08.2010 22:40 |
Grünen Rauch erzeugen? | CptMike | Editing & Scripting | 2 | 24.07.2010 21:45 |