![]() |
#1 (permalink) |
![]() ![]() Registriert seit: 29.10.2008
Beiträge: 1.192
|
![]()
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). |
![]() |
![]() |
#2 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
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 |
![]() |
![]() |
#3 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 13.04.2003
Ort: Monerica
Alter: 41
Beiträge: 32.947
|
![]()
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. |
![]() |
![]() |
#4 (permalink) |
![]() ![]() Registriert seit: 29.10.2008
Beiträge: 1.192
|
![]()
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! ![]() |
![]() |
![]() |
#5 (permalink) |
![]() Registriert seit: 08.01.2011
Beiträge: 41
|
![]()
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; |
![]() |
![]() |
#6 (permalink) |
![]() Registriert seit: 22.05.2008
Beiträge: 552
|
![]() 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. |
![]() |
![]() |
#8 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]() Hallo TeTeT, zwei Punkte interessieren mich an deinem Skript. .) wo kommt der Wert aus BOMBER her? .) wie wird die while Schleife beendet? |
![]() |
![]() |
#9 (permalink) |
![]() Registriert seit: 08.01.2011
Beiträge: 41
|
![]() BOMBER ist eine Header Datei definiert, die per #include eingebunden wird: Code:
#define BOMBER "VTE_b52" #define BOMB "VTE_MK82" 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 |
![]() |
![]() |
#10 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]() Alles klar. Die Zeile am Skript-Ende: waitUntil { (bomber distance _bombPos < DIST) }; sollte vermutlich für _deletePos sein? |
![]() |
![]() |
#11 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
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. |
![]() |
![]() |
#12 (permalink) |
![]() Registriert seit: 08.01.2011
Beiträge: 41
|
![]() 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 { ... |
![]() |
![]() |
#13 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
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. |
![]() |
![]() |
#14 (permalink) |
![]() Registriert seit: 08.01.2011
Beiträge: 41
|
![]() 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. |
![]() |
Stichworte |
luftschlag, tod von oben |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
![]() |
||||
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 |