Armed-Assault.de Twitter
 
 
Themen-Optionen Ansicht
Alt 11.10.2010, 12:38   #1 (permalink)
50 Beiträge100 Beiträge
 
Benutzerbild von Doorgunner
 
Registriert seit: 15.02.2010
Ort: Niedersachsen/Kreis NI
Alter: 45
Beiträge: 209
Standard 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.
Nur leider wird dann nur eine einzige Bombe erzeugt.
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];
Für den Rauch:
Code:
Rauch="smokeshell" createVehicle getMarkerPos "Marker1";
Also es sollen die Rauchgranaten und die Flares wenn einmal ausgelöst ununterbrochen hochgehen.

Wie macht man das?
Doorgunner ist offline  
Alt 11.10.2010, 13:59   #2 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Registriert seit: 07.08.2009
Ort: Niedersachsen
Alter: 59
Beiträge: 426
Standard

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;
};
Ob das klappt, kannst du ja mal ausprobieren.
__________________
Panzergrenadiere - Dran! Drauf! Drüber!
Jekko ist offline  
Alt 11.10.2010, 18:27   #3 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 38
Beiträge: 1.737
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

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:
Zitat:

psy = [] execVM "bomben.sqf"

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>>>___
Pfandgiraffe ist offline  
Alt 11.10.2010, 19:31   #4 (permalink)
50 Beiträge100 Beiträge
 
Benutzerbild von Doorgunner
 
Registriert seit: 15.02.2010
Ort: Niedersachsen/Kreis NI
Alter: 45
Beiträge: 209
Standard

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];
noch die Anzahl der Bomben definieren. Weil soweit klappt es ja, nur die Menge stimmt nicht.

So,jetzt muss ich erstmal mit Psychobastards Vorschlägen herumexperementieren.
Doorgunner ist offline  
Alt 11.10.2010, 20:29   #5 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

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).
Vienna ist offline  
Alt 12.10.2010, 07:35   #6 (permalink)
50 Beiträge100 Beiträge
 
Benutzerbild von Doorgunner
 
Registriert seit: 15.02.2010
Ort: Niedersachsen/Kreis NI
Alter: 45
Beiträge: 209
Standard

Jaaa... einfach aber höchst effizient! Genau was ich gesucht hab, danke Vienna!
Doorgunner ist offline  
Alt 12.10.2010, 09:17   #7 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

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}}
Vienna ist offline  
Alt 09.02.2011, 17:07   #8 (permalink)
Newbie
 
Registriert seit: 03.02.2011
Beiträge: 13
Standard

Hey Vienna & co.

Ich finde diese Möglichkeit (
Zitat:

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}}

) 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!
Wobbegong ist offline  
Alt 26.02.2011, 11:52   #9 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

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 
  }
Im Anhang ein Beispiel.

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}
Angehängte Dateien
Dateityp: zip Bombenabwurf2-utes.zip (2,3 KB, 151x aufgerufen)

Geändert von Vienna (26.02.2011 um 12:15 Uhr).
Vienna ist offline  
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ä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


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119