Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 28.02.2012, 15:13   #1 (permalink)
JSR
500 Beiträge1000 Beiträge
 
Registriert seit: 29.10.2008
Beiträge: 1.189
Standard Airstrike

Moin,

Das eine A10 in Arma auch 2000 Meter höhe erreichen kann, wenn sie von einer KI geflogen wird, das weiß ich bereits.
Für alle, die es nicht wissen, hier ein Beispiel:

KI Einheit A10 mit dem Namen "A1"
In die Init-Zeile "A1 flyinHeight 2000"
Das wars auch schon.

Was mich aber an der Sache stört ist...

...die KI fliegt jeden Jet, sobald es in den Angriff geht, auf gewagte 50 Meter höhe und wirft bzw. schiesst dann ihre Bomben/ AGMs ab.

Gibt es eine Möglichkeit ihr beizubringen ihre Bomben und/ oder AGMs auf 2 Km höhe abzuwerfen/ schiessen?

Geändert von JSR (28.02.2012 um 15:15 Uhr).
JSR ist offline   Mit Zitat antworten
Alt 28.02.2012, 15:33   #2 (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

Man will ja auch was treffen, wenn man schießt/abwirft. Das wird aus 2000 Höhe nur bei Laser gelenkten Bomben möglich sein.

Hier hast du Beispiele, da kannst du dran rumbasteln.

Unterstützungen durch Helikopter und Flugzeuge
Vienna ist offline   Mit Zitat antworten
Alt 28.02.2012, 15:51   #3 (permalink)
Imperator fori nocturni - This sucks more than anything that has ever sucked before 10 Jahre hx3
20.000 Beiträge
 
Benutzerbild von burns
 
Registriert seit: 13.04.2003
Ort: Monerica
Alter: 35
Beiträge: 32.223
Standard

Wenns darum geht Bomben aus 2000m Höhe zu werfen, darf man auch gleich einen Gedanken daran verschwenden ob man das dazugehörige Flugzeug dann überhaupt noch sieht.

In >50% aller Fälle (ich kenn keine Mission mit 5000m Sichtweite, besonders keine die darauf angewiesen wäre) sieht man also eh nix, und könnte ebensogut per Script ne Bombe schmeissen und dazu einen "Flugzeug fliegt vorbei" Sound abspielen.

Unterm Strich wird es immer so bleiben das fixed wing KI einfach scheisse fliegt.
Anstatt dann Gott und die Welt verrückt zu machen das KI nicht fliegen kann (mag ich selber nicht), Hirn einschalten und Umleitung bauen. Das ist ArmA.
__________________

burns ist offline   Mit Zitat antworten
Alt 28.02.2012, 16:02   #4 (permalink)
JSR
500 Beiträge1000 Beiträge
 
Registriert seit: 29.10.2008
Beiträge: 1.189
Standard

Nunja, im Endeffekt kann man auf 5000 Meter Sichtweite zocken, solange man Maps wie Fallujah o.ä. zockt. Auch Takistan läuft bei mir relativ gut, nur sind die Bäume etc. dort ein Performencefail. Aber eigentlich auch ohne 5000 Meter Sichtweite...


Aber zum Thema, eigentlich ist der Airstrike nur Nebensache.

Zum Beispiel: die US Army möchte auf dem Airport auf Fallujah landen, vorher schiesst eine A10 aus 2000 Meter (oder vergleichbares) eine AGM ab, oder wirft eine Bombe ab, wie auch immer und die Blackhawks landen danach und die Army sichert soweit es geht den Airport ab.

Ziele der A10 waren z.B. Panzer oder Shilkas, was auch immer. Ist ja nur ein Beispiel.


Es geht mir jetzt eig. dadrum, wie ich der KI das ganze beibringen könnte.
Ich kann mich erinnern, da hat der Apache in Arma 1 mit ACE und anderen Mods einen Panzer auf ca. 1- 2 Km Entfernung abgeschossen... 30 Sekunden später hört man dann langsam den Apache ankommen, doch alle Ziele waren bereits komplett zerschrottet...

Diesen Effekt suche ich grade in Arma 2, ich habe ihn auch schonmal mit einer anderen Kombinationen von Mods in A2 erreicht, soweit ich mich jedenfalls erinneren kann und meine, das ganze nicht mit einem Script hinbekommen zuhaben.
Die KI hat das eig. ganz von alleine gemacht. Sie war dort aber nicht in der extremen Höhe, nur auf der extremen Distanz zum Ziel.

Ansonsten werde ich mir den Script von Vienna mal angucken und sehen, wieviel ich davon verstehe, danke!
JSR ist offline   Mit Zitat antworten
Alt 28.02.2012, 17:29   #5 (permalink)
Newbie
 
Registriert seit: 08.01.2011
Beiträge: 41
Standard Skript für B-52 Strike

Hallo,

ich habe das ganze per Skript gelöst und die Bombe hinter dem Flieger erscheinen lassen. Das Skript nimmt 3 Parameter, die Spawn-Position, das Ziel und die Delete-Position. Die Bomben werde in der while Schleife in der Mitte in 1 Sekunden abgeworfen, dass gibt einen guten Bomben-Teppich.

Code:
#include "Debug.h"
#include "Functions.h"
#define CIRCLEPOS(x,y,d,r) [x-r*sin(d),y-r*cos(d)]
#define ALT 2000
#define CRUISEALT 2000
#define SETALT(pos) [(pos select 0), (pos select 1), ALT]
#define DIST 4000

private ["_spawnPos", "_bombPos", "_deletePos"];
DEBUG_MSG(["B52: START"])

if ((count _this) > 0) then { _spawnPos = _this select 0; };
if ((count _this) > 1) then { _bombPos = _this select 1; };
if ((count _this) > 2) then { _deletePos = _this select 2; };

bomberType = BOMBER;
bomberGroup = createGroup west;
_spawn = SETALT(_spawnPos);
_all = [_spawn, random(360), bomberType, bomberGroup] call bis_fnc_spawnvehicle;
bomber = _all select 0;
_crew = _all select 1;
_pilot = _crew select 0;

bomber flyInHeight CRUISEALT;

sleep 5;

_WP = bomberGroup addWaypoint [_bombPos, 500];
_WP setWaypointSpeed "NORMAL";
_WP setWaypointType "MOVE";
bomberGroup setCurrentWaypoint _WP;
createMarker ["B52", (getPos bomber)];
"B52" setMarkerShape "ICON";
"B52" setMarkerType "Dot";
"B52" setMarkerText "BOMBER";

[] spawn {
 while {true} do {
  _pos = getPos bomber;
  _markerPos = [ (_pos select 0), (_pos select 1) ];
  "B52" setMarkerPos _markerPos;
  sleep 2;
 };
};


waitUntil { (bomber distance _bombPos < DIST) };
DEBUG_MSG(["B52: start bomb run"])

_i = 0;
while {_i < 50} do {
  _pos = getPos bomber;
  sleep 1;
  BOMB createVehicle _pos;
  _i = _i + 1;
};

DEBUG_MSG(["B52: bomb run complete"])

sleep 5;
_WP = bomberGroup addWaypoint [_deletePos, 0];
_WP setWaypointType "MOVE";
bomberGroup setCurrentWaypoint _WP;

waitUntil { (bomber distance _bombPos < DIST) };
deleteVehicle bomber;
{ deleteVehicle _x; } forEach (units bomberGroup);
deleteGroup bomberGroup;
TeTeT ist offline   Mit Zitat antworten
Alt 28.02.2012, 18:06   #6 (permalink)
500 Beiträge
 
Benutzerbild von Virility92
 
Registriert seit: 22.05.2008
Beiträge: 552
Standard

Zitat von JSR Beitrag anzeigen

Ich kann mich erinnern, da hat der Apache in Arma 1 mit ACE und anderen Mods einen Panzer auf ca. 1- 2 Km Entfernung abgeschossen... 30 Sekunden später hört man dann langsam den Apache ankommen, doch alle Ziele waren bereits komplett zerschrottet...

Diesen Effekt suche ich grade in Arma 2

also ich hab mal im editor ein paar eurofighter mit fullspeed auf ein paar shilkas zufliegen lassen. die sichtweite war bei mir bestimmt auch so auf 2000m oder mehr eingestellt. zuerst kamen wie aus dem nichts die raketen angeflogen und haben die shilkas mal kurz ausgeschalten, kurz darauf kamen die jets dann vorbeigeschossen, war ziemlich cool.
du kannst es ja auch mit raketen machen.
Virility92 ist offline   Mit Zitat antworten
Alt 28.02.2012, 18:24   #7 (permalink)
JSR
500 Beiträge1000 Beiträge
 
Registriert seit: 29.10.2008
Beiträge: 1.189
Standard

Danke schonmal für die ganzen Beiträge.
Ich habe es bisher nur mit Mods getestet und zudem mit ACE... werde morgen ausführlichere Tests durchführen und die ganzen Lösungen ausprobieren! Danke!
JSR ist offline   Mit Zitat antworten
Alt 28.02.2012, 18:46   #8 (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

Zitat von TeTeT Beitrag anzeigen

Code:
...
...
bomberType = BOMBER;
...
...
[] spawn {
 while {true} do {
  _pos = getPos bomber;
  _markerPos = [ (_pos select 0), (_pos select 1) ];
  "B52" setMarkerPos _markerPos;
  sleep 2;
 };
...
...
Hallo TeTeT,

zwei Punkte interessieren mich an deinem Skript.

.) wo kommt der Wert aus BOMBER her?

.) wie wird die while Schleife beendet?
Vienna ist offline   Mit Zitat antworten
Alt 29.02.2012, 18:57   #9 (permalink)
Newbie
 
Registriert seit: 08.01.2011
Beiträge: 41
Standard

Zitat von Vienna Beitrag anzeigen

...
.) wo kommt der Wert aus BOMBER her?

.) wie wird die while Schleife beendet?

BOMBER ist eine Header Datei definiert, die per #include eingebunden wird:
Code:
#define BOMBER "VTE_b52"
#define BOMB "VTE_MK82"
Wenn ich die Mission auf einen anderen Mod anpassen will (z.B. Unsung), dann kann ich recht bequem diese Einstellungen zentral in der Header Datei ändern.

In der Tat terminiert die while Schleife nicht, statt auf true sollte ich besser die Existenz des Markers überprüfen und den beim Delete des Bombers löschen. Danke fürs Finden

TeTeT
TeTeT ist offline   Mit Zitat antworten
Alt 29.02.2012, 19:35   #10 (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

Zitat von TeTeT Beitrag anzeigen

BOMBER ist eine Header Datei definiert, die per #include eingebunden wird:

Code:
#define BOMBER "VTE_b52"
#define BOMB "VTE_MK82"
Wenn ich die Mission auf einen anderen Mod anpassen will (z.B. Unsung), dann kann ich recht bequem diese Einstellungen zentral in der Header Datei ändern.

In der Tat terminiert die while Schleife nicht, statt auf true sollte ich besser die Existenz des Markers überprüfen und den beim Delete des Bombers löschen. Danke fürs Finden

TeTeT
Alles klar. Die Zeile am Skript-Ende:

waitUntil { (bomber distance _bombPos < DIST) };

sollte vermutlich für _deletePos sein?
Vienna ist offline   Mit Zitat antworten
Alt 29.02.2012, 19:43   #11 (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

Für hohe Flugzeuge birgt der distance-Befehl einen zu großen Fehler, wenn man den Abstand zu einem Ziel abfragt. Wird z.B. für 1000m abgefragt und das Flugzeug fliegt 1500m hoch, dann löst die Abfrage gar nicht aus. So ist es besser, wenn man die Auslösung über einen Triggerbereich durchführt.

Im Anhang ein Beispiel für einen Bombereinsatz. Es sind keine simulierten Explosionen, sondern die Bomben fallen vom Himmel, da ist der Bomber schon übers Ziel hinweg.

Im Skript kann man eine Zeile aktivieren, mit der der Spieler im Flugzeug mitfliegen kann. Auch sind einige Textausgaben im Skript vorhanden, welche man nach dem Test deaktivieren sollte. Der Bomberflug wird auf der Karte angezeigt.

Im Editor sind 3 Logic-Objecte für die Positionen gesetzt, die dem Skript als Parameter übergeben werden. Auch die Flughöhe und der Radius für den Auslöser sind Parameter.

Aufgerufen wird das Skript über einen Funk-Auslöser. Man kann gleich unmittelbar hintereinander mit dem Auslöser mehrere Bomber erstellen.
Angehängte Dateien
Dateityp: zip __Bomber-utes.zip (3,0 KB, 53x aufgerufen)
Vienna ist offline   Mit Zitat antworten
Alt 29.02.2012, 20:23   #12 (permalink)
Newbie
 
Registriert seit: 08.01.2011
Beiträge: 41
Standard

Zitat von Vienna Beitrag anzeigen

Alles klar. Die Zeile am Skript-Ende:

waitUntil { (bomber distance _bombPos < DIST) };

sollte vermutlich für _deletePos sein?

Ja, ist ein weiterer Fehler. So wird der Bomber wohl nie gelöscht, denn an _bombPos war er ja bereits. Ich habe leider keinen Zugriff auf ArmA zur Zeit und bin mir nicht sicher wie ich die Endlos Schleife umgehe. Vielleicht so:
Code:
while {!isNull bomber} do {
...
Funktioniert natürlich nur, falls deleteVehicle auch bomber of null setzt...
TeTeT ist offline   Mit Zitat antworten
Alt 29.02.2012, 21:20   #13 (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

while {alive bomber} do {... Wenn der Bomber gelöscht wird, dann bricht auch die Schleife ab.

Was ich auch nicht verstehe sind die zahlreichen globalen Variablen. Das geht doch alles ohne solche. Dann kann man mit dem Skript mehrere Bomber gleichzeitig auf die Reise schicken.
Vienna ist offline   Mit Zitat antworten
Alt 01.03.2012, 19:03   #14 (permalink)
Newbie
 
Registriert seit: 08.01.2011
Beiträge: 41
Standard

Zitat von Vienna Beitrag anzeigen

Was ich auch nicht verstehe sind die zahlreichen globalen Variablen. Das geht doch alles ohne solche. Dann kann man mit dem Skript mehrere Bomber gleichzeitig auf die Reise schicken.

Das stimmt, ich hatte am Anfang das Debugging global laufen lassen aus Init.sqf und habe dann keine Zeit darauf verwendet das Skript neu zu faktorieren. Dazu hatte ich nicht vor mehrere Bomber zu senden, aber ich sehe dass das Skript mit lokalen Variablen vielseitiger ist.
TeTeT ist offline   Mit Zitat antworten
Antwort

Stichworte
luftschlag, tod von oben


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
Luftunterstützung mit Laserdesignator CptMike Editing & Scripting 0 28.12.2010 16:18
Anfänger braucht Hilfe bei Modding für Armed Assault Classic FrechDachs91 Editing 1 06.09.2010 21:12
editing guide airstrike in OA miromanu Editing & Scripting 4 07.07.2010 19:58


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