+ All Categories
Transcript
Page 1: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

2

Page 2: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

E D I T I N G G U I D Eby Mr-Murray

3© Sascha “Mr-Murray” Hoffmann 2008

Page 3: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Vorwort

Der Inhalt dieser Editieranleitung wird dir das Leben im Armed Assault Editor wesentlichangenehmer gestalten. Du hast hiermit die Möglichkeit auch ohneProgrammierkenntnisse schnell und einfach anspruchsvolle Missionen für Armed Assaultzu erstellen.

Ganz richtig, ohne Programmierkenntnisse! Gewisse Vorkenntnisse aus dem VorgängerOperation Flashpoint wären natürlich von Vorteil, sind aber nicht zwingend notwendig.In dieser Anleitung werden dir die Teilbereiche des Editors erläutert und anhand vonBeispielen näher erklärt. Dazu werden dir die nahezu unbegrenzten Möglichkeitenaufgezeigt, die du in diesem Spiel und dem Editor hast.

Du wirst mit ein bisschen Geschick, Ideenreichtum und Kreativität deine eigenenSzenarien umsetzen und dank der Kameramöglichkeiten und dem Einbinden eigenerSounddateien Missionen erstellen, die schon fast mit einem Hollywoodfilm zu vergleichensind und den Spieler in seinen Bann ziehen werden.

Dynamische Missionen erstellen, bei denen bei jedem Start das Wetter oder die Uhrzeitanders ist, dass Erfüllen von Missionszielen bei jedem Spielablauf verschieden abläuftund dass bestimmte Einheiten oder der Spieler bei jedem Neustart an einer anderenPosition der Insel startet, sollte hiermit für dich kein Problem mehr sein.

Jetzt liegt es nur noch an deinem Ideenreichtum, deiner Kreativität und natürlich dir, guteMissionen erstellen zu können. Ein Drehbuch, Szenario oder eine Story für deine Missionist hier nicht enthalten, dass musst du dir schon selbst ausdenken. Ansonsten hast du mitdem Editor und dieser Anleitung alles, was du brauchst um deine Ideen umzusetzen. Undwenn mal was nicht klappt, Editor aus, Spiel an und einfach mal entspannt in den Kriegziehen.

Dieses Spiel baut als Operation-Flashpoint-Nachfolger mit eigens entwickelterProgrammiersprache auf seinen Vorgänger auf. Es sind zwar hier und da Änderungenerfolgt und viele Neuheiten eingeflossen, aber vom Grundkonzept ist alles nahezu gleichgeblieben. Der Editor ist, wie auch bei seinem Vorgänger, mit gleicher übersichtlicher undbenutzerfreundlicher Oberfläche zu bewundern. Und auch die Missionsordner und derInhalt dieser, sind vom Grundsatz her gleich geblieben. Doch lies, probier und editier dichselbst mit Hilfe dieser Anleitung durch die Welt von Armed-Assault.

Viel Erfolg und Spaß mit dem Editor wünschen Bohemia Interactive und Mr-Murray.

4

Vorwort

Page 4: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Anmerkung

Diese Anleitung ist als Einführung in den Armed Assault Editor gedacht und soll geradedem Editieranfänger den Umgang mit dem Editor erleichtern. Hier aufgeführte Skripteoder Abläufe sind frei erfunden und können selbstverständlich weiterentwickelt undverbessert werden.

Natürlich gibt es noch weit mehr Möglichkeiten im Editierbereich von Armed Assault alshier im Buch erläutert, wobei ich hier auf die offizielle Wiki

http://community.bistudio.com/wiki

verweisen möchte, die immer auf dem aktuellen Stand ist, was Editing, Scripting undsonstiges rund um Armed Assault betrifft. Hier wurde lediglich das grundlegendste miteingebunden und ein paar Blicke über den Tellerrand gegeben, die dich anregen und aufeigene Ideen bringen sollen. Sämtliche Skripte aus Kapitel 6 stehen im offiziellen Forum(www.forum.german-gamers-club.de) für dich zum Download bereit.

Danksagung

Ich möchte mich mit diesem Editing Guide bei allen Operation Flashpoint und natürlichArmed Assault Fans, die dem Spiel bis heute treu geblieben sind, bedanken. Meinnächster Dank gilt dem großartigen Team von Bohemia Interactive, ohne die es ein Spieldieses Umfangs und somit diese Anleitung gar nicht geben würde.

Ein weiterer Dank richtet sich an das gesamte Mapfact-Team, BadAss, Chneemann,Flashpoint_K, JörgF., Kriegerdaemon, LockheedMartin$ch, MCPXXL, OneManGang, Silola,Sniping-Jack, Raedor, Lester und Wüstenfuchs und unseren helfenden HändenMemphisBelle, Simba, Marco-Polo-IV, Parvus, Sgt.Ace und SNKMan, welche mich in denletzten Jahren tatkräftig unterstützt haben.

Wobei hier ein besonderer Dank Raedor, Chneemann und den offiziellen BIS-Betatesterngilt, die mir bei diversen Problemen mit Armed Assault tatkräftig zur Seite standen. Einweiterer ganz besonderer Dank geht an MemphisBelle, Metal0130 und Matt Rochelle fürdie hervorragende englische Übersetzung und Andre Scheufeld, Andreas Holzwart,Rastavovich sowie Wolle für den hervorragenden Support.

Des Weiteren bedanke ich mich noch bei allen Freunden und Bekannten und besondersbei meiner Familie und meiner Freundin, die mich in der Zeit der Realisierung diesesWerkes tatkräftig unterstützt und motiviert haben.

Euer Sascha “Mr-Murray” Hoffmann

5

Anmerkungen

Danksagungen

Page 5: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

6

Im Rahmen der Neuauflage dieses Buches entschied ich kurzerhand die Community aufirgend eine besondere Art mit ins Buch zu integrieren. Da es leider nicht vieleMöglichkeiten dafür gibt, entschied ich mich, nach Rücksprache mit Morphicon dazu,dass dies am besten mit einem Bilderwettbewerb erfolgen könnte.

Ich bedanke mich hiermit nochmal bei allen Teilnehmern, die am Wettbewerbteilgenommen haben und auch bei Armed-Assault.de für die Realisierung undUmsetzung des Wettbewerbs auf selbiger Seite.

Im gesamten Buchverlauf der vorausgegangenen Buchversion 1.02 sind die Ergebnissedes Wettberwerbs zumeist auf den Kapitelverzeichnissen, aber auch in den Kapiteln, zubewundern.

Die drei nun folgenden Bilder stellen die Plätze 1 bis 3 dar, welche von der Community alsbeste Bilder gevotet wurden. Die Gewinner sind keine anderen als:

Platz 1: Marcus-Ergalla (Aljosha Rall)

Platz 2: Mr. Burns (Andreas Schmitz)

Platz 3: Stoned Boy (Frank Nobis)

Platz 1: Marcus-Ergalla

Community Screenshot Contest

Page 6: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

7

Platz 2: Mr Burns

Platz 3: Stoned Boy

Page 7: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kapitel 1: Der Einstieg

1.1 Die Oberfläche 161.2 Einheiten einfügen 201.3 Gruppen einfügen 261.4 Auslöser einfügen 271.5 Wegpunkte einfügen 301.6 Synchronisieren 351.7 Markierungen einfügen 361.8 Einheiten und Objekte drehen 391.9 Einheiten und Marker verbinden 39

1.10 Einheiten mit Wegpunkten bearbeiten 40

Kapitel 2: Die Dateien

2.1 Der Missionsordner 422.2 Die Mission.sqm 432.3 Die Description.ext 482.4 Die Stringtable.csv 512.5 Die Init.sqs 532.6 Das Skript (.sqs) 542.7 Die Funktion (.sqf ) 552.8 Das Paa-Format 552.9 Die PBO 56

2.10 Die Sounddateien 562.11 Die Lip-Dateien 572.12 Der Overview 582.13 Das Briefing 59

Kapitel 3: Die Waffen – Fahrzeuge – Einheiten – Objekte

3.1 Die Handwaffen und statische Waffen 643.2 Die Waffenbezeichnungsliste 683.3 Einheiten bewaffnen und ausrüsten 703.4 Die Waffen- und Munitionskiste 713.5 Fahrzeuge be- und entladen 713.6 Waffenauswahl im Briefing 723.7 Die Fahrzeugklassen 733.8 Die Fahrzeugwaffen 763.9 Die Einheitsklassen 77

3.10 Die Shellklassen 803.11 Die Objekt- und Gebäudeklassen 813.12 Die Pflanzenklassen 88

8

Inhaltsverzeichnis

Page 8: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

3.13 Die Steinklassen 903.14 Die Schilderklassen 913.15 Waffen- und Magazintypen ausgeben lassen 923.16 Abgefeuerten Typ ausgeben lassen 923.17 Hat Einheit Waffe? 923.18 Primär- bzw. Sekundärwaffe einer Einheit 933.19 Hat Einheit Munition? 933.20 Mine erzeugen 933.21 Waffen und Magazine erzeugen 943.22 Waffenblickrichtung ausgeben lassen 95

Kapitel 4: Die Mission

4.1 Der Missionsname 974.2 Der Missionsstart 974.3 Das Missionszubehör 984.4 Die Missionswertung 994.5 Die Missionsziele 994.6 Mission beenden 1014.7 Mission speichern 103

Kapitel 5: Das Missionszubehör

5.1 Leeres oder verschlossenes Fahrzeug 1065.2 Fahrer/Beifahrer eines Fahrzeugs 1065.3 Einheit hat Fahrzeugverbot 1065.4 Einheit in Fahrzeug? 1075.5 Fahrzeug fährt erst, wenn Einheit eingestiegen ist 1075.6 Gruppe zu Missionsbeginn im Fahrzeug 1085.7 Ein- und Aussteigen lassen 1085.8 Geschwindigkeit einer Einheit 1085.9 Geschwindigkeit ausgeben lassen 108

5.10 Einheit bleibt stehen 1095.11 Einheiten starten bzw. stoppen 1095.12 Einheit bewegt sich zum Bestimmungsort 1105.13 Streife laufen, fahren oder fliegen 1105.14 Fluchtverhalten einer Einheit oder Gruppe 1105.15 Einheiten, Objekte, Auslöser u. Marker versetzen 1115.16 Objekte versenken oder höher setzen 1115.17 Flughöhe einer Einheit 1125.18 Punktgenaue Helikopterlandung 1125.19 Einheit begibt sich in ein Gebäude 1125.20 Einheit verlässt eine Gruppe oder tritt anderer bei 113

9

Page 9: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

5.21 Einheit ein Ziel zuweisen 1135.22 Einheit wendet sich anderer zu 1145.23 Einheit wählt Waffe 1145.24 Einer Einheit Schaden zufügen bzw. heilen 1145.25 Einrichten einer Todeszone 1155.26 Das Prüfen eines Bereiches 1155.27 Einheiten in einem Bereich ansprechen 1155.28 Einheitsstatus speichern oder laden 1165.29 Bekanntheitsgrad einer Einheit 1175.30 Freundlicher Feind 1175.31 Befreundete Parteien 1185.32 Der Alarm 1195.33 Tod als Bedingung 1205.34 Distanz zweier Einheiten oder Objekte 1205.35 Einem Fahnenmast eine Fahne zuweisen 1205.36 Brennende Feuerstelle 1215.37 Spielbare Einheit hinzufügen oder entfernen 1215.38 Spielerseite, -namen, typ auslesen bzw. ausgeben 1215.39 Spielereingabe unterdrücken 1215.40 Karte auf den Monitor erzwingen 1215.41 Sichtweite ändern 1225.42 Wetter einstellen 1225.43 Datum und Uhrzeit einstellen 1235.44 Zeitlupe oder Zeitsprint 1235.45 Einheiten und Objekte erzeugen 1245.46 Flares, Rauch und Explosionen erzeugen 1265.47 Einheiten und Objekte löschen 1275.48 Funkmenü verändern 1275.49 Einer Gruppe ein Rufzeichen zuweisen 1285.50 Funkspruch abgeben 1295.51 Sound erstellen 1295.52 Eigenen Sound einbinden 1305.53 Identität festlegen 1345.54 Mimiken 1355.55 Der Actionbefehl 1365.56 Der Animationsbefehl 1395.57 KI abschalten 1445.58 SetVelocity 1445.59 Der Informationstext 1445.60 Einheit bleibt liegen, kniet oder steht 1445.61 ID´s verwenden 1455.62 Einheiten in Gebäuden platzieren 1485.63 Einheit begibt sich zu Gebäudeposition 153

10

Page 10: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

5.64 Position auslesen 1535.65 Der Eventhandler 1555.66 Texteinblendarten 1575.67 Stringtable Grundwerte 1585.68 Wegpunkte erzeugen 1595.69 Auslöser erzeugen 1605.70 Marker erzeugen 1625.71 Rund ums Vehikel 1655.72 Lichtquellen erzeugen 1675.73 Staub erzeugen 1675.74 Rauch erzeugen 1685.75 Feuer erzeugen 1695.76 Dienstgrad vergeben 1715.77 Einheit benutzt Fernglas 1725.78 Einheit ein Fahrzeug zuweisen 1725.79 Einheit ein Team zuweisen 1735.80 Einheit gibt Befehle 1745.81 Hat Einheit Schaden erhalten? 1745.82 Der Flugverkehr 1755.83 Grasdetails heruntersetzen 1765.84 Objekte schräg platzieren 1765.85 Mission verschlüsseln bzw. freischalten 1775.86 Leerer Scheinwerfer mit Licht 177

Kapitel 6: Die Missions Specials

6.1 Die Fallschirmspringer 1796.2 Das GPS-System 1806.3 Der Actionmenüeintrag 1816.4 Der Rucksack 1816.5 Zufallspositionen 1856.6 Der Mapclick 1876.7 Die Artillerie 1896.8 Tote Einheiten bzw. Fahrzeuge löschen 1946.9 Spielbeschleunigung dauerhaft unterdrücken 195

6.10 Der Bullet Mode 1966.11 Das Feindmeldeskript 1976.12 Der Airstrike 1986.13 Der Airvehiclecreator 2016.14 Der Scheinwerfer 2036.15 Der Zeitzähler 2046.16 Das House-Patrol-Script 2056.17 Das Minen-Skript 2086.18 Das Vehikeltransportskript 209

11

Page 11: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

6.19 Das Möwenskript 2136.20 Das Insektenskript 2156.21 Der Bombenleger 2166.22 Der Aufklärer 2176.23 Einheit ergibt sich 2186.24 Der Teleport 2216.25 Das Verfolgungsskript 222

Kapitel 7: Multiplayer

7.1 Die Multiplayermission 2247.2 Die Respawnpunkte 2247.3 Flexible Respawnpunkte 2257.4 Die MP-Description.ext 2267.5 Die Respawnarten 2277.6 Das Deathmatch 2277.7 Multiplayerbereich festlegen 2287.8 Zeit und Wertung 2297.9 Punkte vergeben bzw. anzeigen lassen 231

7.10 Die Zeitanzeige 2327.11 Der Class Header 2337.12 Der Respawndialog 2337.13 Stringtable MP Grundwerte 2347.14 Fahrzeug-Respawn 2357.15 Mr-Murray´s Fahrzeug-Respawn 2367.16 Flaggen Grundinformationen 2387.17 Capture The Flag 2407.18 Die Publicvariable 2467.19 Allgemeines 2477.20 Die Steuerungsbefehle 2497.21 Bewaffnung im MP 2507.22 Spielerbezogene Textmitteilung 2517.23 Join In Progress (JIP) 252

Kapitel 8: Das Camscripting

8.1 Die Steuerung 2558.2 Die Kamerakoordinaten 2568.3 Kamera erstellen 2578.4 Die erste Szene 2588.5 Kamera an ein Fahrzeug/Einheit heften 2608.6 Text- und Einblendeffekte 2618.7 Kamera-Effekte 2628.8 Preload - Objekte und Positionen vorladen 262

12

Page 12: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

13

8.9 Kartenanimation ausführen 263

Kapitel 9: Scripting

9.1 Die Variable 2659.2 Wahrheitswerte 2669.3 Logische Operatoren 2679.4 Die While-Do-Schleife 2689.5 Der Zähler 2689.6 If-Then-Else 2689.7 Der Delay 2699.8 Random 2699.9 WaitUntil 269

9.10 Die Klammer 2709.11 Das Semikolon 2719.12 Der Array 2719.13 Funktionen-Grundwissen 274

Kapitel 10: Dialoge

10.1 Was sind eigentlich Dialoge 27910.2 Basisdefinitionen (Konstanten) 28010.3 Basisklassen und Subklassen 28310.4 Die Schriftarten 28610.5 Eine Grafik einblenden 28710.6 Einen Text einblenden 28810.7 Visieransichten einblenden 28910.8 Eigene Landkarte einblenden 29110.9 Einen Button definieren 292

10.10 Einen Rahmen definieren 29410.11 Die Videosequenz 297

Kapitel 11: Allgemeines

11.1 Eigenes Profil 29911.2 Die ArmA Cheats 30111.3 Der MOD-Ordner 30211.4 Die Verwendung von Addons 30311.5 Der Missionsrelease 30411.6 Die ArmA.rpt 30511.7 Das Natoalphabet 30611.8 Die Dienstgradabzeichen 30711.9 Die Squad.xml 308

11.10 Die Startparameter 31111.11 Tastenkombinationen, Tipps und Tricks 313

Page 13: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Stichwortverzeichnis 314

Syntaxverzeichnis 322

Impressum 332

14

Page 14: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kapitel 1- Der Einstieg -

Dieses Kapitel soll dir zunächst mehr Übersicht und Durchblick über die Oberfläche desEditors verschaffen und dich auf die weiteren Kapitel vorbereiten. Mit Hilfe dieses Kapitelswirst du einen sicheren Umgang mit der Oberfläche des Editors erlangen und erste guteErgebnisse erzielen. Es erläutert dir zunächst die Hauptfunktionen der einzelnenBereiche.

1.1 Die Oberfläche 161.2 Einheiten einfügen 201.3 Gruppen einfügen 261.4 Auslöser einfügen 271.5 Wegpunkte einfügen 301.6 Synchronisieren 351.7 Markierungen einfügen 361.8 Einheiten und Objekte drehen 391.9 Einheiten und Marker verbinden 391.10 Einheiten mit Wegpunkten bearbeiten 40

15

Kap

itel1

Page 15: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Die Oberfläche des Editors ist, wie man sieht, recht überschaubar und sehrbenutzerfreundlich aufgebaut. In Zusammenarbeit mit der Maus, den Pfeil- und F-Tastenhat man die Möglichkeit relativ schnell die einzelnen Bereiche und Unterbereicheanzuwählen um damit zu arbeiten.

Im Bereich Info definiert man Dinge wie Wetter, Datum, Uhrzeit,Jahreszeit und auf welcher Seite die Widerstandseinheitenkämpfen. Des Weiteren gibt man hier den Namen der Missionund darunter eine kurze Beschreibung der Mission mit an. Hierist es möglich ein Startwetter festzulegen und anzugeben, wiees sich im späteren Missionsverlauf ändern soll. Der Nebel lässtsich hierbei unabhängig von dem Wetter einstellen. DasVerstellen der Jahreszeiten hat unter anderen auch Änderungenauf den Wasserstand und die Helligkeit zu den verschiedenen Uhrzeiten zur Folge. Wieauch im echten Leben, sind die Tage im Sommer länger als im Winter.

Nachrichtendienst

Name der MissionBeschreibung der Mission

Datum und Uhrzeit

WettervorhersageGegenwärtiges Wetter

Gegenwärtiger Nebel

Späteres Wetter

Späterer Nebel

Seite der Racs(Widerstand)

16

1.1 - Die Oberfläche

Page 16: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

F-TastenMit Hilfe der F-Tasten 1 bis 6 wählt man die Untermenüs an. Dieser Abschnitt sollzunächst eine grobe Erläuterung der F-Tasten darstellen, welche im Laufe des Kapitelsnoch einzeln und näher erklärt werden.

17

Kap

itel1

1 ermöglicht es Einheiten, Fahrzeuge undObjekte auf die Karte zu setzen und individuelleinzustellen.

2 hat gleich zwei Funktionen. Zum einen kannman damit gleich ganze Gruppen auf die Kartesetzen und zum anderen dient 2 alsVerbindungstool, mit welchem man Einheitenund Auslöser verbinden kann.

3 Mit 3 setzt man Auslöser, welche man sehrflexibel und für viele Aktionen verwendenkann. Als Beispiel soll hier das Funkmenüdienen, welches unter anderem ja auch in denAuslösern definiert wird.

4 Mit der 4-Taste weist man Einheiten oderauch einer Logik Wegpunkte zu, welche siedann nacheinander abarbeiten und je nachDefinition an gewissen Stellen Aktionendurchführen oder auslösen

5 ist eine Funktion, welche gerne übersehenwird, obwohl sie sehr nützlich ist. Sieermöglicht es Wegpunkte und Auslöser aufeinander abzustimmen. Demnach würde dernächste Wegpunkt erst angelaufen werden,wenn der damit verbundene Wegpunkt oderAuslöser bereits ausgelöst wurde.

6 Die 6-Taste führt ins Untermenü der Marker,mit welchem die Karte sehr taktisch gestaltetwerden kann und dem Spieler ein wenigmehr Übersicht über die Mission gibt.

Page 17: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

EinsatzIm oberen Abschnitt wählt man zunächst den Arbeitsbereich aus. Hier hat man dieAuswahl zwischen Einleitung, Einsatz und Abspann gewonnen und Abspann verloren.Es stehen also vier Karten pro Mission zur Verfügung, welche genutzt werden können.Dies ist sehr vorteilhaft, denn es spart eine Menge Performance, da die Einleitungs- bzw.Abspann-Einheiten und -Objekte nicht auf der eigentlichen Missionskarte sind. Zusätzlichhat man somit auch gleich mehr Übersicht beim Editieren auf der Hauptkarte.

Ein weiterer Punkt ist, dass der Spieler beim mehrfachen Spielen der Mission das Introirgendwann nicht mehr sehen mag und dann die Möglichkeit hat, dieses per Leertastewegzuklicken. Würde das Intro auf der Hauptkarte erstellt, wäre ihm dies nicht möglichund er müsste die Sequenz jedes Mal bis zum Ende schauen, was auf Dauer etwasdemotivierend sein kann.

LadenMit Laden lädt man, wie der Name schon sagt, seine Missionen in den Editor. Natürlichmuss diese auch im Ordner C:\EigeneDateien\ArmA\Benutzer\Missions vorhandensein. Sprich, man muss zunächst seine Mission abgespeichert haben. Denn nach derInstallation des Spiels ist dieser Ordner noch leer!

Fertige Missionen, welche im ArmA-Hauptmenü zum Spielen ausgewählt werdenkönnen, kann man ohne ein PBO-Tool nicht in den Editor laden. Diese müssen dazu erstmit einem solchen Tool entpackt werden.

ZusammenführenZusammenführen steht auch für Importieren. Man kann hiermit eine andere Mission bzw.die Einheiten, Objekte, Auslöser, Wegpunkte, Marker usw. aus einer anderen Missionimportieren. Importiert wird hierbei alles, was auf dieser Karte zu finden ist, jedoch nichtder Ordnerinhalt.

Das Zusammenführen ist sehr nützlich, wenn man beispielsweise eine sehr komplexeMission, die eine Weile zum Laden benötigt, editiert. Wenn man nun an einer Positionnoch ein paar Objekte platzieren und ausrichten möchte, müsste man teilweise ewigwarten bis die Mission zur Vorschau startet. Aus diesem Grund ist es sinnvoll eine zweiteMap anzulegen, welche man dann als Mission2 abspeichert und dort die Objekte setztund ausrichtet. Ist man damit fertig, importiert man diese Mission danach einfach aufseine Hauptmissionskarte.

Eine weitere gute Möglichkeit ist, wenn man sich Vorlagen anlegt. Also zum BeispielKarten auf welchen nur bestimmte Dinge vorgefertigt sind. Zum Beispiel einselbsterstelltes Lager oder ähnliches. Man kann dies dann immer auf seine aktuelle Mapimportieren ohne es nochmal neu erstellen zu müssen.

18

Page 18: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

SpeichernMit Speichern wird die Mission abgespeichert. Hierbei kann man auswählen, ob dieMission zunächst als Editormission abgespeichert oder schon als fertige Mehrspieler-bzw. Einzelspielermission exportiert werden soll. Während Editormissionen im VerzeichnisC:\EigeneDateien\ArmA\Missions hinterlegt werden, findet man seine exportiertenMehrspielermissionen im Spieleverzeichnis unter MP-Missions und seineEinzelspielermission im Verzeichnis Missions wieder. Auf dem Bild sieht man den OrdnerMissions unter„Eigene Dateien“.

ZurücksetzenMit Zurücksetzen säubert man die Karte. Die Karte wird damit wieder in ihren Urzustandversetzt. Dabei wird lediglich alles was auf der Karte ist gelöscht. Der Missionsordner samtInhalt bleibt aber weiterhin vorhanden.

ID´s zeigenMit dem Button ID´s zeigen lässt man sich die ID´s der Objekte auf der Karte anzeigen.Denn jedes Objekt auf der Karte hat eine ID, mit welcher man es ansprechen kann. Diesmacht es möglich dem Objekt Schaden zuzufügen oder zu prüfen, ob es noch am Lebenoder, anders gesagt, noch existent ist.

Texturen zeigenHiermit lassen sich die Texturen einer Karte anzeigen. Jede Variante, also mit Texturenanzeigen oder ohne, hat gewisse Vor- und Nachteile beim Editieren. Letztendlich mussjeder für sich entscheiden, wie er lieber editieren möchte.

VorschauMit Vorschau kommt man in die Missionsvorschau, also direkt in die Mission, die mangerade editiert und kann sich so sein Editierergebnis anschauen und testen.

WeiterHiermit wechselt man die letzte Vorschau zurück. Änderungen, die man bis dahin imEditor vorgenommen hat, sind dann noch nicht sichtbar.

BeendenMit Beenden verlässt man den Editor und kommt zurück zum Hauptmenü.

19

Kap

itel1

Page 19: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Mit der Taste 1 oder per Mausklick wählt man das Untermenü Einheit an, um eineEinheit, ein Objekt, ein leeres Fahrzeug, eine Logik oder ähnliches einzufügen. Hier ist esmöglich sämtliche Einstellungen für jede Einheit individuell vorzunehmen.

Seite Auswahl der SeiteOsten OsteinheitenWesten WesteinheitenWiderstand WiderstandZivil ZivilistenLeer Leere VehikelLogik Logik

Klasse Art der EinheitLuft Helikopter, FlugzeugMunition Waffen- u. MunitionGepanzert PanzerAuto Autos, Krad, LkwMen SoldatenMinen MinenObjekte Statische ObjekteSchiffe BooteSounds SoundsStatisch Geschütze, MG´sUnterstützung Support-Lkw´s

Kontrolle - Spieler oder SpielbarHier wählt man aus, ob man Spieler dieser Einheit sein soll oder ob diese Einheit spielbarbzw. nicht spielbar, also eine KI ist.

Spielbare Einheiten werden beispielsweise für Multiplayermissionen benötigt, bei denenja für die Spieler mehrere Einheiten zur Auswahl stehen müssen. FürSingleplayermissionen ist Playable nötig, wenn man den Characterswitch nutzen möchte.Der Spieler kann dann in der fertigen Mission zwischen den spielbaren Soldatenumherschalten und diese einzeln steuern und in Position bringen.

Player SpielerPlayable SpielbarNon Playable Nicht Spielbar

20

1.2 - Einheiten einfügen (1)

Page 20: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Bei Fahrzeugen hat man zusätzlich die Auswahl, als was der Spieler im Fahrzeug sitzen sollund kann dies somit sofort festlegen.

Player as Driver Spieler als FahrerPlayer as Pilot Spieler als PilotPlayer as Gunner Spieler als Schütze

Fahrzeugstatus - Einstellung des Fahrzeugs

Default VoreinstellungLocked AbgeschlossenUnlocked Nicht abgeschlossen

Die Syntax für externes Ansteuern über ein Skript oder eine Initzeile sieht wie folgt aus:

NNaammee lloocckk ttrruuee Fahrzeug verschlossenNNaammee lloocckk ffaallssee Fahrzeug offen

Dienstgrad - Dienstgrad der jeweiligen Einheit Hier wird der Rang bzw. Dienstgrad der jeweiligen Einheit eingestellt. Die Einheit mit demhöchsten Dienstgrad ist automatisch der Gruppenführer der Gruppe. Beförderungen imSpielverlauf werden im Kapitel 5.76 ausführlich erläutert.

Private SoldatCorporal GefreiterSergeant FeldwebelLieutenant LeutnantCaptain HauptmannMajor MajorColonel Oberst

Die Syntax für das Vergeben eines Ranges sieht dabei wie folgt aus:

Player setRank "Sergeant"

Einheit - Art der EinheitNachdem man bei Klasse festgelegt hat, ob das Objekt ein Soldat oder Fahrzeug ist, kannman hier die Art des Objektes auswählen. Je nach Klassen-Auswahl ist hier dieUnterauswahl anders. Bei Infanterie hat man die Auswahl der Soldaten vom Grenadierbis zum Scharfschützen, bei Fahrzeuge die Auswahl zwischen verschiedenenFahrzeugen und so weiter.

21

Kap

itel 1

Page 21: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Speziell - Besonderheit einer Einheit Hier lassen sich gleich verschiedene Einstellungen vornehmen, die beim Editieren gerneübersehen werden. Denn hier ist es nicht nur möglich einzustellen, ob ein Flugzeug oderHelikopter beim Start fliegt, sondern noch weit mehr.

Keine Würde man sich eine Einheit mit dem Spezial „Keine“unterstellen und sie irgendwo weit weg auf die Karte stellen,würde sie sich, wenn sie weiß wo sich der Leader befindet, aufden Weg zu ihm begeben. Anders bei Formation…

In Formation Ist beim Spezial der unterstellten Einheit „In Formation“ausgewählt, wird die Einheit gleich, egal wo sie auf der Kartesteht, an ihrer Formationsstelle neben dem Leader stehen.

Im Laderaum Setzt man eine Gruppe auf eine Karte, von der eine Einheit einFahrzeug ist (muss nicht der Leader sein), und wählt bei allenanderen Einheiten bei Spezial „Im Laderaum“ aus, werden alleEinheiten der Gruppe in dem Fahrzeug sitzen.

Fliegen Ein Flugzeug oder ein Heli sind bei Missionsstart gleich in derLuft.

Name - Name der EinheitHier wird der Name der jeweiligen Einheit oder des Objektes angegeben. Dieser ist sehrwichtig, wenn man diese Einheit per Skript oder ähnliches anprechen möchte. Der hierangegebene Wert ist gleichzeitig eine globale Variable.

Fähigkeiten - Fähigkeiten einer EinheitHier definiert man die Fähigkeiten einer Einheit. Diese bestimmt, wie gut diese schießen,reagieren und so weiter. Die Fähigkeiten werden mit einem Wert zwischen 0 und 1definiert. 0 steht für weniger gut und 1 für sehr gut.

In Syntaxform schaut das Ganze wie folgt aus:

Name setSkill 0.8

Name setUnitAbility 0.6

Es ist auch möglich einen Zufallsskill einzustellen. Dazu müsste man in derInitialisierungszeile der Einheit folgende Syntax eingeben:

this setSkill (Random 0.6)

Jetzt würde der Einheit ein Zufallsskill im Bereich von 0 bis 0.6 zugewiesen.

22

Page 22: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Azimut - Die Blickrichtung einer EinheitHier legt man beim Einstellen der Einheit eine grobe Blickrichtung fest und kann somitauch gleich den Blickrichtungswert sehen. Die Blickrichtungswerten sind, wie im realenLeben auch, von 0 bis 360 Grad definiert. Bestätigt man nun mit OK, sieht man die Einheitmit der ausgewählten Blickrichtung auf der Karte.

Wenn man diese im Nachhinein nochmal drehen möchte, weil sie doch nicht in dierichtige Richtung schaut, geht das auch in Kombination mit der Maus und der Shift-Taste.Dazu bleibt man auf der Karte und klickt sich nicht per Doppelklick ins Einheiten-Untermenü, sondern wählt die Einheit an, indem man sie nur ein Mal anklickt. Jetzt hältman die Shift-Taste und die linke Maustaste gedrückt und bewegt die Maus. Die Einheitwird sich nun mit Hilfe der Mausbewegungen frei drehen lassen.

Zum Drehen von mehreren Einheiten oder Objekten gilt das gleiche Prinzip. Dazumarkiert man alle zu drehenden Einheiten und bewegt dann die Maus mit gedrückterlinker Maustaste.

Eine andere Möglichkeit eine Einheit beispielsweise in einer Sequenz auszurichten wäre:

NNaammee sseettDDiirr WWeerrttName setFormDir WWeerrtt

Hierzu kann man den Wert aus dem Einheiten-Untermenü mit der TastenkombinationStrg + CC kopieren und für Wert einfügen.

Initialisierung - Die InitialisierungszeileJede Einheit bzw. jedes Objekt hat eine Initialisierungszeile. Befehle, welche dorteingetragen werden, werden beim Missionsstart sofort ausgeführt. Von hier aus kannman unter anderem Skripte starten oder wie oben bei Fähigkeiten eine Zufallsskillsyntaxangeben. Generell lohnt es sich eine Init.sqs im Missionsordner zu erstellen, welche dieInitalisierungsdatei der Mission darstellt und ohne angeben einer Syntax beimMissionsstart automatisch ausgeführt wird. Eine nähere Erklärung der Init.sqs findet manim Kapitel 2.5 – Die Init.sqs. Befehle werden hier generell mit einem ; getrennt!

Sogar während einer laufenden Mission ist es möglich einen Eintrag in derInitialisierungszeile einer Einheit vorzunehmen und ausführen zu lassen. Dazu nutzt manzunächst den setVehicleInit-Befehl und zum Aufrufen dann processInitCommands.

Player setVehicleInit "Player say 'Sound1' "; processInitCommands;

Beschreibung - Die InfozeileIn dieser Zeile gibt man einen Namen oder eine kleine Beschreibung zur jeweiligenEinheit an. Diese Beschreibung wird dann angezeigt, wenn die Einheit als spielbareEinheit definiert wurde und man das Switchmenü öffnet.

23

Kap

itel 1

Page 23: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Gesundheit/Panzerung - Der GesundheitsstatusMit dem Schieberegler lässt sich der Gesundheits- bzw. Panzerungsstatus einer Einheitfestlegen. Einheiten können also schon verletzt auf die Karte gestellt werden oder ebenFahrzeuge, wenn sie als Wrack dienen sollen, ohne jegliche Panzerung. Der Wert wirdebenfalls wieder von 0 bis 1 definiert und lässt sich auch extern des Einheiten-Untermenüs mit einer Syntax festlegen. Diese schaut wie folgt aus:

NNaammee sseettDDaammaaggee 11

Nun hätte die Einheit, der Panzer oder das Objekt einen Schadenswert von 1 und ist totoder zerstört. Diesen Wert kann man natürlich wieder zurücksetzen und mit

NNaammee sseettDDaammaaggee 00

wäre die Einheit nun wieder geheilt oder repariert. Selbstverständlich können auchZwischenwerte verwendet werden. Mit 0.5 wäre die Einheit halt nur zur Hälfte geheiltbzw. repariert usw.

Support:Supportfahrzeuge wie Treibstoff-, Munitions- und Reparaturfahrzeuge können mit einemWert von 0 bis 1 versehen werden. Ist dieser 0, kann man diese nicht mehr zum Tanken,Reparieren oder Aufmunitionieren nutzen. Mit der Syntax

NNaammee sseettRReeppaaiirrCCaarrggoo 11

weist man einem Reparatur-Lkw einen Reparaturwert zu.

Treibstoff - Der TankstatusHier stellt man die Treibstoffmenge ein, die ein Fahrzeug haben soll. Diese lässt sichebenfalls extern mit einer Syntax ansteuern, welche wie folgt aussieht:

NNaammee sseettFFuueell 00 steht für einen leeren TankNNaammee sseettFFuueell 11 steht für einen vollen Tank

Support:

NNaammee sseettFFuueellCCaarrggoo 00..33 weist Tank-Lkw einen Füllwert zu

Munition - Der MunitionsstatusEinstellung der Munitionsmenge, die die Einheit beim Missionsstart haben soll.

Support:

NNaammee sseettAAmmmmooCCaarrggoo 00..77 weist Munitions-Lkw einen Füllwert zu

24

Page 24: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Anwesenheit - Wahrscheinlichkeit der AnwesenheitHier lässt sich die Wahrscheinlichkeit der Anwesenheit einer Einheit in Prozent ein-stellen. Stellt man den Regler auf die Mitte, wird die Einheit mit einer Wahrscheinlichkeitvon 50% auf der Karte sein. Dies bringt sehr viel Dynamik ins Spiel, da man nievorhersagen kann, ob die Einheit oder Einheiten wirklich auch auf der Karte sind.

Anwesenheit - Bedingung der AnwesenheitEinheit ist nur anwesend, wenn eine Bedingung erfüllt ist. Diese Bedingung wird hierbeibeim Missionsstart abgefragt. Gibt man hier CadetMode ein, wird die Einheit nur imCadetMode auf der Karte sein.

Radius der Platzierung - Platzierungsradius der EinheitHier stellt man den Radius ein, in welchem die Einheit beim Spielstart stehen soll. DieseEinheit wird dann bei jedem Spielstart irgendwo in dem Radius erscheinen.

Info-Alter - Bekanntheitsgrad einer EinheitInfo-Alter bestimmt den Bekanntheitsgrad einer Einheit. Es sagt also aus, was dieGegnerseite über diese Einheit weiß und wie aktuell diese Information ist. Dabei gibt esfolgende Auswhlmöglichkeiten:

"ACTUAL" "5 MIN" "10 MIN" "15 MIN"

"30 MIN" "60 MIN" "120 MIN" "UNKNOWN"

Das Info-Alter lässt sich auch anhand einer Syntax vergeben. Diese lautet dann wie folgt:

Player setTargetAge "10 MIN"

25

Kap

itel 1

Page 25: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Mit der Taste 2 wählt man das Untermenü Gruppen an, welches es einem ermöglichtgleich ganze Gruppen einzufügen. Dies spart eine Menge Zeit, da man nicht jede Einheiteinzeln einsetzen muss. Hier gibt es für jede Seite vordefinierte Gruppen, welche mandann einfügen kann. Natürlich ist es auch möglich diese Gruppen nach belieben zubearbeiten. Eine Gruppe zu vergrößern, zu verkleinern oder alle Einheiten einer Gruppeindividuell einzustellen und zu bewaffnen ist sehr leicht zu handeln.

Nachdem man sich bei Seite für eine Seite entschieden hat, hat man bei Typ die Wahlzwischen einer Infanterie-, Panzer, oder Helikoptergruppe, welche man so sehr schnelleinfügen kann.

Bei Name hat man dann die Möglichkeit sich eine von fünf Typen auszusuchen.

Hier hat man zum Beispiel bei West und Ost die Auswahl zwischen:

Basistrupp Gemischte InfanteriegruppeWaffentrupp Kleinere InfanteriegruppeSpezialtrupp SpezialeinheitMotorisierte Patrouille Infanteriegruppe mit FahrzeugPanzergrenadiertrupp Infanteriegruppe mit Schützenpanzer

Eine ähnliche Auswahl hat man neben den Infanterietruppen natürlich auch unter denPanzerplatoons oder den Luftgeschwadern. Bei den Air Squadrons muss man daraufachten, dass bei den einzelnen Vehikeln das Spezial auf Fliegen steht, wenn diese gleichzu Missionsbeginn fliegen sollen.

Mit Azimut stellt man hierbei wieder, wie auch bei anderen Einheiten, die Blickrichtungder Gruppe ein.

26

1.3 - Gruppen einfügen (2)

Page 26: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Den Auslöser kann man als Ein- bzw. Ausschalter oder Prüfutensil benutzen. Er ermöglichtunter anderem auch das Einfügen der Funksprüche von Alpha bis Juliett. Von derFunktionsweise her unterscheiden sich Auslöser und Wegpunkte bis auf ein paar Extrasnicht sonderlich. Der Auslöser ermöglicht es im Missionsablauf gewisse Aktionen zustarten oder zu stoppen. Mit Hilfe des Untermenüs Effekte hat man sogar die MöglichkeitSounds, Musik, Ressourcen einspielen zu lassen oder auch Videoanimationen zu starten. Mit der Aktivierungszeile hat man zusätzlich die Möglichkeit beim Betreten desAuslöserbereiches Skripte oder ähnliches zu starten oder beim Verlassen desAuslöserbereiches bei Deaktivierung wieder zu stoppen.

Zudem kann man den Auslöser auch als Lineal benutzen, wenn man z.B. mehrere Objektegerade aneinander setzen möchte. Dazu würde man z.B. bei Achse A den Wert 100 undbei Achse B den Wert 1 angeben. Jetzt hat man ein prima Lineal oder Abstandsmesser.

Achse A/Achse B Wirkungsbereich

Winkel Winkel

Ellipse/Rechteck Form der Fläche

Einmal/Mehrfach Anzahl der Auslösung

Aktivierung durch WestenOstenWiderstandZivilistenSpiellogikJederFunk A–JErobert von WestenErobert von OstenErobert von Widestand

Art der Aktivierung

Vorhanden Auslöser wird aktiviert, wenn bei Aktivierung zum Beispiel Westausgewählt wurde und eine westliche Einheit denAuslöserbereich betritt.

Nicht vorhanden Auslöser wird deaktiviert, wenn bei Aktivierung zum BeispielWest ausgewählt wurde und keine westliche Einheit mehr in demAuslöserbereich ist.

Entdeckt durch Entdeckt durch Westen, Osten, Widerstand oder Zivilisten. Wirdman im festgelegten Auslöserbereich durch eine im Auslöserfestgelegt Seite entdeckt, werden die Aktionen ausgeführt, dieim Auslöser definiert sind.

27

Kap

itel 1

1.4 - Auslöser einfügen (3)

Page 27: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Countdown/Timeout - ZählerHier wird festgelegt, ob der Auslöser gleich bei Auslösung oder erst nach Ablauf einerfestgelegten Zeit ausgelöst werden soll. Durch die Möglichkeit einen Min, Mid und Max-Wert einzugeben hat man auch hier wieder eine gewisse Dynamik. Während der Min-Wert für die mindeste Wartezeit steht, stehen der Mid-Wert für den Mittelwert und derMax-Wert für den Maximalwert der Wartezeit. Durch Angabe aller drei Werte kann mandie Auslösung dem Zufall überlassen. Gibt man überall den gleichen Wert ein, so wirdder Auslöser nach Ablauf der angegebenen Zeit auslösen.

Typ - Auslösertyp

Keine KeineVon Westen bewacht Geschützt durch WestenVon Osten bewacht Geschützt durch OstenVon Widerstand bewacht Geschützt durch WiderstandSchalter SchaltenEnde 1 bis 6 Ende einer MissionVerlieren Verloren am Ende

Text - Der AuslösertextDen Auslösertext kann man im Editor lesen, wenn man mit der Maus über dasAuslöserfähnchen fährt. Er soll die Orientierung auf komplexen Karten erleichtern. Manmuss so nicht jeden Auslöser wieder öffnen und schauen was darin definiert ist, sondernerkennt ihn so am selbst festgelegten Namen schnell wieder.

Des Weiteren wird hier der Text für das Funkmenü definiert. Wenn man also mehrere derFunksprüche verwendet, kann man diese hier entsprechend benennen und man sieht inder späteren Mission besser welcher Funkspruch für welche Aktion vorgesehen ist.

Zum Beispiel:

Auslöser 1: Aktivierung: Radio AlphaText: Artillerie anfordern

Auslöser 2: Aktivierung: Radio BravoText: Unterstützung anfordern

Beim Funkgerät auf der Kartenansicht würde jetzt Artillerie anfordern und Unterstützunganfordern stehen, was ein gewisses Maß an Übersicht gewährleistet.

Name - Der AuslösernameDer Name eines Auslösers ist wichtig, wenn man diesen auf irgendeine Art ansprechenmöchte. Wenn man ihn beispielsweise versetzen oder löschen will. Mehr zum Versetzenoder Löschen eines Auslösers gibt es auf Seite 30 zu lesen.

28

Page 28: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Bedingung - Die BedingungDas Angeben einer Bedingung ermöglicht es einen Auslöser sozusagen auf „Stand by“zu setzen oder ihn etwas prüfen zu lassen. Dabei würde der Auslöser erst starten, wenndiese Bedingung erfüllt ist. Die Angabe von Bedingungen kann hierbei ganz verschiedenaussehen. Zum Einen kann man hier die Variante Verwendung einer Variablen undzum Anderen das Prüfung einer Bedingung verwenden. Die Bedigungszeile beinhaltetbereits automatisch das IF bzw. ?. Daher wird in dieser Zeile kein ? verwendet!

Verwendung einer VariablenGibt man in der Bedingungszeile eine Variable an, wird der Auslöser erst ausgelöst, wenndiese erfüllt, also true ist. Wenn in der Bedingungszeile beispielsweise die Variable Angriffsteht, wartet der Auslöser, bis Angriff auf true geschaltet wurde.

Irgendwo auf der Karte muss dazu bei Aktivierung eines Auslösers, eines Wegpunktesoder in einem Skript die Variable Angriff also zunächst auf true gesetzt werden, damitdieser aktiviert wird. Das macht man mit folgender Syntax:

Angriff=true

Der Auslöser wurde nun aktiviert und startet die Aktionen, die darin definiert wurden.

Prüfung einer BedingungEine andere Variante ist die Prüfung, ob eine Bedingung erfüllt ist. Zugegeben, eineVariable ist ja auch eine Bedingung, die geprüft und erfüllt werden muss. Hierbei ist eineBedingung im vorstellbaren Sinne gemeint, welche man quasi als vorstellbare Aktiondefinieren kann. Zum Beispiel, dass Soldat1 nicht mehr lebt oder der Spieler(Player) imFahrzeug Jeep1 sitzt. Dies würde dann wie folgt aussehen:

Bedingung: Spieler sitz in Jeep1:

Player in Jeep1 oder vehicle Player == Jeep1

Bedingung: Soldat1 lebt nicht mehr:

not alive Soldat1 oder !(alive Soldat1)

Bei AktivierungIn dieser Zeile kann man fast alles definieren, was ausgeführt werden soll, wenn derAuslöser ausgelöst wird. Das Starten eines Skriptes, eine Bedingung auf true schaltenusw.. Es ist also möglich so ziemlich jede Syntax hier anzugeben, die Armed Assault zubieten hat. Natürlich gibt es auch Grenzen, aber da kann man ja dann auf ein Skriptausweichen. Auch der Übersicht halber, ist es oftmals besser auf ein Skript auszuweichen,wenn hier zum Beispiel unzählige Befehle oder ähnliches angegeben werden.

29

Kap

itel 1

Page 29: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Bei DeaktivierungNatürlich kann man bei einem Auslöser auch eine Aktion starten lassen, wenn dieserdeaktiviert wird. Als Beispiel dient hier mal die Variante mit einem Actionmenüeintrag.Wenn der Spieler den Auslöserbereich betritt, soll er einen Actionmenüeintrag namensEintrag bekommen und wenn er den Bereich wieder verlässt, soll er wieder gelöschtwerden. Dazu vergibt man:

bbeeii AAkkttiivviieerruunngg:: IIDD==PPllaayyeerr aaddddAAccttiioonn [[""EEiinnttrraagg"",,""sskkrriipptt..ssqqss""]]bbeeii DDeeaakkttiivviieerruunngg:: PPllaayyeerr rreemmoovveeAAccttiioonn IIDD

Auslöser versetzen oder löschenAuslöser lassen sich bei Bedarf verschieben oder auch löschen. Dazu muss der Auslösermit einem Namen versehen werden, um ihn direkt ansprechen zu können. Dazu werdenunter anderem folgende Befehlszeilen verwendet:

Auslösername setPos getPos NameOder in Koordinatenform:

Auslösername setPos [x,y,z]

30

1.5 - Wegpunkte einfügen (4)

Mit den Wegpunkten legt man nicht nurdie Route fest, auf welcher sich eineEinheit bewegen soll, sondern auchEinstellungen wie Verhalten, Formation,Kampfmodus und Geschwindigkeit.

Ein Wegpunkt kann von der Funktions-weise her mit einem Auslöser verglichenwerden.

Wenn die jeweilige Einheit ihrenWegpunkt erreicht hat, wird eine Aktionausgeführt bzw. begibt sie sich weiter zuihrem nächsten Wegpunkt.

Hinzu kommen aber noch eine Mengeweiterer Definitionsmöglichkeiten, wiezum Beispiel Soundeffekte oder Musikam jeweiligen Wegpunkt abzuspielenoder ähnliches.

Page 30: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 1

Typ Auswählen - Die AktionenHier lassen sich für jeden Wegpunkt individuelle Einstellungen festlegen, welche eineEinheit beim Erreichen des Wegpunktes ausführen soll.

Move BewegenDestroy ZerstörenGet in EinsteigenSeek and destroy Suchen und ZerstörenJoin AnschließenJoin and lead Anschließen und führenGet out AussteigenCycle WiederholenLoad LadenUnload EntladenTransport unload Transport entladenHold HaltenSentry AufklärenGuard BewachenTalk SprechenScripted GeskriptetSupport UnterstützenGet in next In Nähestes einsteigenReleased Entlassen

Aufklären BesonderheitWeist man einer Einheit/Gruppe einen solchen Wegpunkt zu, wird sie bis zu diesem Punktlaufen und dort auf Feindkontakt warten, bevor sie zum Nächsten weiterläuft.

WegpunktfolgeBeim Anklicken dieser Option, kann man sämtliche Wegpunkte einer Einheit mitjeweiliger Aktion auf einem Blick sehen und im Nachhinein sogar die Abfolge ändern,indem man einfach eine andere Zahl auswählt.

BeschreibungDies ist die Beschreibung eines Wegpunktes. Was hier eingetragen wird, wird dann späternur im Cadet-Mode angezeigt werden und erleichtert dem Anfänger das Spielen und dieOrientierung in einer großen und komplexen Mission.

Beispiel: Zerstören Sie das Ziel

31

Page 31: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

KampfmodusHier definiert man den Kampfmodus, den eine Einheit oder Gruppe haben soll.

Nie schießen BlueNicht schießen GreenNicht schießen, Angriff nach eigenem Ermessen WhiteFeuer eröffnen YellowFeuer eröffnen, eigenständ. Angriff Red

Die Syntax, um das Verhalten per Auslöser oder Skript festzulegen, schaut hierbei wiefolgt aus:

Name setCombatMode "Blue"

VerhaltenHier lässt sich das Verhalten einer Einheit oder Gruppe definieren, wobei man folgendeAuswahlmöglichkeiten hat:

Careless AchtlosSafe SicherAware WachsamCombat KampfStealth Tarnung

Natürlich lässt sich das Verhalten auch wieder per Auslöser oder Skript definieren. DieSyntax hierfür lautet:

Name setBehaviour "Careless"

FormationDiverse Situationen auf dem Schlachtfeld erfordern gewisse Formationen, welche in derjeweiligen Situation von Vorteil sind. Diese schauen wie folgt aus, wobei der Leader hierin grün zu sehen ist:

Columm - Kolonne Staggered Columm - Gestaffelte Kolonne

Wedge - Keil Vee - V-Förmig

32

Page 32: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Echelon Left - Staffel links Echelon Right - Staffel rechts

Line - Reihe Delta - 3-Reihig Column (Kolonne Kompakt)

Natürlich kann man einer Gruppe auch eine Formation per Auslöser oder Skript zuweisen.Das Ganze schaut dann in Sytaxform wie folgt aus:

Name setFormation "Line"

GeschwindigkeitHiermit wird die Geschwindigkeit einer Einheit am jeweiligen Wegpunkt definiert. ZumBeispiel ist es möglich, einer Einheit zum Wegpunkt 1 eine langsame und zum Wegpunkt2 eine schnellere Geschwindigkeit zu geben. Dabei hat man die Auswahl zwischen dreiVarianten.

Auto / Limited / Normal / Full

Hierbei ist es auch wieder möglich das Ganze in einem Auslöser oder Skript zu definieren.Syntax:

Name setSpeedMode "Limited"

PlatzierungsradiusDer Radius eines Wegpunktes bringt wieder ein wenig mehr Dynamik ins Spiel. Hierbeiwird in dem Bereich der festgelegt wird eine Zufallsposition bestimmt, die bei jedemMissionsstart anders ist. Dies bedeutet dass, wenn man dort zum Beispiel den Wert 100angibt, ein Wegpunktradius von 100 Metern definiert wird, in dem der Wegpunktdynamisch gesetzt wird.

Timeout - VerzögerungDie Verzögerung bis zur Auslösung in Sekunden. Gibt man bei allen drei Positionen dengleichen Wert an, so ist die Auszeit dem Wert entsprechend lang. Durch das Angebenverschiedener Werte wird der jeweilige Wegpunkt per Zufallszeit aktiviert. Zufallszeitzwischen Min und Max mit Tendenz zum Mittelwert.

Min Mindestzeit bis zur AktivierungMax Maximale Zeit bis zur AktivierungMid Mittelwert

33

Kap

itel 1

Page 33: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Das Verwenden der Zufallszeit bringt wieder einen gewissen Grad an Spannung ins Spiel,da man nie genau vorhersagen kann, wann die Einheiten auf der jeweiligen Stelle derKarte ankommen. Kombiniert mit dem Platzierungsradius und der Bedingung derAnwesenheit hat man sogar noch mehr Dynamik. Denn nun weiß man nicht, ob es dieEinheit gibt, wohin sie Punktgenau läuft und wann sie kommt. Gerade dynamischeMissionen haben einen hohen Spannungs- und Wiederspielgrad. ArmA besitzt anhandsolcher Möglichkeiten die besten Vorraussetzungen dafür, seine Missionen so dynamischwie möglich zu gestalten.

BedingungDas Angeben einer Bedingung ermöglicht es einen Wegpunkt sozusagen auf „Stand by“zu setzen oder ihn etwas prüfen zu lassen. Dabei würde der Wegpunkt erst aktiviert, wenndiese Bedingung erfüllt ist. Das Verwenden einer Bedingung ist bereits unter Bedingungbeim Auslöser erklärt.

Bei AktivierungIn dieser Zeile kann man fast alles definieren, was ausgeführt werden soll, wenn derWegpunkt ausgelöst wird. Das Starten eines Skriptes, eine Bedingung auf true schaltenusw. usw. Es ist also möglich so ziemlich jede Syntax hier anzugeben, die Armed Assaultzu bieten hat. Natürlich gibt es auch Grenzen, aber da kann man ja dann auf ein Skriptausweichen. Auch der Übersicht wegen, ist es oftmals besser auf ein Skript auszuweichen,wenn hier zum Beispiel, unzählige Befehle angegeben werden oder ähnliches.

SkriptDiese Zeile ermöglicht die Verwendung von Syntaxes, wie sie sonst nur in Skriptenverwendet werden können.

Wegpunkt zeigenWegpunkte lassen sich anzeigen oder verbergen. Hierbei kann man festlegen, ob sie nurim Cadet-Mode, generell oder gar nicht sichtbar sind.

Never Show Wird nie angezeigtShow in Cadet Mode Nur im Cadet ModeAlways Show Wird immer angezeigt

Anschließen und führenMan setzt dazu zunächst zwei Gruppen auf die Karte, die an irgendeiner Position zu einerGruppe verschmelzen sollen. Jede Gruppe bekommt jetzt einen Wegpunkt irgendwo aufder Karte. Bei dem einen Wegpunkt definiert man nun Anschließen und bei demanderen Wegpunkt Anschließen und führen.

34

Page 34: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Jetzt müssen die beiden Wegpunkte synchronisiert werden. Dazu ist dieSynchronisation (5) notwendig, mit welcher die beiden Wegpunkte nun aufeinanderabgestimmt werden. Wenn nun beide Gruppen ihre Wegpunkte erreicht haben und nocham Leben sind, werden sie zu einer Gruppe. Vorausgesetzt die Gruppen sind nicht zugroß. Die maximale Gruppengröße in Armed Assault beträgt inklusive Leader 144Einheiten. Auf der Karte sieht das Ganze dann etwa so aus:

Die Möglichkeit Wegpunkte mit Wegpunkten oder Wegpunkte mit Auslösern zusynchronisieren, wird gerne übersehen. Dank dieser Funktion kann man sich nämlichverschiedene Variablen sparen und man sieht auf einem Blick, wer wann wie starten darf.

Auf dem Bild sieht man 2 Gruppen, die aus verschiedenen Richtungen kommen, aber dasgleiche Ziel angreifen sollen. Jetzt soll die eine Gruppe am Wegpunkt verweilen, bis dieandere Gruppe ihren Wegpunkt erreicht hat. Dazu wählt man mit 5 dasSynchronisieren an, klickt mit der linken Maustaste auf den Wegpunkt der Gruppe 1,hält die Maus gedrückt und zieht einen Strich zum Wegpunkt der Gruppe 2. DieSynchronisation wird dann mit einer blauen Linie angezeigt. Sobald die Gruppe 1 nunihren Wegpunkt erreicht hat, wird sie warten, bis Gruppe 2 ihren Wegpunkt erreicht hat.

35

Kap

itel 1

1.6 - Sychronisieren (5)

Page 35: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Gleichermaßen läuft dies bei der Auslöser-Wegpunkt-Kombination. Die Gruppe würdeerst weiterlaufen, wenn der Auslöser ausgelöst wurde. Man muss also nicht bei demWegpunkt einer Gruppe eine Variable (z.B. Grp1go) angeben und dann in derAktivierungszeile des Auslösers Grp1go=true angeben, damit die Gruppe losläuft, wennder Auslöser ausgelöst wird.

Die 5-Variante ist doch viel einfacher und schneller. Ob der Auslöser dabei durch eineEinheit, ein Objekt oder Funk aktiviert wird ist dabei egal.

Bei folgendem Bild werden drei Gruppen und ein Funkauslöser aufeinander abgestimmt.Wenn alle drei Gruppen ihre Position erreicht haben, gibt der Spieler per Funk 0-0-1 denBefehl zum Angriff. Erst dann werden sich die Gruppen zu ihrem nächsten Wegpunkt,also das Ziel, weiter bewegen.

Mit den Markern gestaltet man die zu Anfang noch jungfräuliche Karte zur taktischenKarte um. Sie zeigt dem Spieler den Ablauf der Mission, die Ziele oder ähnliche Sachen an.Dies macht den Missionsablauf noch übersichtlicher. Hierbei empfiehlt es sich jedemMarker einen Namen zu geben.

Diese Marker lassen sich später mit dem Briefing verlinken. Klickt man dann später aufeinen der Briefing-Links, wandert das Fadenkreuz auf der Karte zu dem zugehörigenMarker.

36

1.7 - Markierungen einfügen (6)

Page 36: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

NameHier wird der Name des Markers angegeben, welcher später unter anderem für dieVerknüpfung mit dem Briefing gebraucht, damit die Ziele durch das Fadenkreuz auf derKarte gezeigt werden können oder welcher es ermöglicht den Marker zu versetzen oderihm ein anderes Symbol zuzuweisen.

ArtDie Auswahl der Art des Markers. Dies kann statt einem Symbol auch ein Kreis oder einRechteck sein, mit dem man eine größere Fläche markieren kann. Zum Beispiel einFeindgebiet oder ähnliches.

FarbeFarbe des Markers. Die Farben beschränken sich hierbei auf rot, schwarz, grün, blau,gelb und weiß

SymbolHier eine Übersicht der verschiedenen taktischen Zeichen mit Bezeichnung:

Kap

itel 1

37

Head- Command AirTeam Infantry Mainten- Light Heavy Supply Town Vehiclequarter Team Team ance Team Team Team Team

Move Defend Attack Depot Camp Fire Salvage Repair Supply DestroyedMission Vehicle

Pick Up Marker Join End Unknown Warning Empty

Start Objective Destroy Flag Arrow Dot Empty

Page 37: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Mit diesen taktischen Zeichen in Verbindung mit großflächigen Markern(Ellipse/Rectangle) hat man schnell eine übersichtliche Karte geschaffen. Die englischenBezeichnungen sind zugleich auch die Klassennamen der Marker. Außer bei Objective!Objective hat seitens BIS den Klassennamen Flag bekommen.

Achse A/Achse BHier wird die Größe des Markers eingestellt.

WinkelHier hat man die Möglichkeit den Winkel des Markers zu bestimmen.

TextHier wird der Text angegeben, der später auf der Karte lesbar sein soll. Zum Beispiel: ZielAlpha. Mit folgender Syntax ist es sogar möglich dem Marker den Spielernamen oderEinheitennamen zuzuweisen:

"S1M" setMarkerText Name S1

Dabei liest das Spiel den Spielernamen der Einheit mit Namen S1 automatisch aus.

Dynamische PositionenSetzt man mehrere Marker auf die Karte und verbindet diese mit F2 (siehe Kapitel 1.9)mit einer Einheit, steht die Einheit bei jedem Start an einer anderen Markerposition.

Marker versetzen, ändern oder löschenMarker lassen sich während des Spielverlaufs vom Symbol her ändern, versetzen oderauch löschen. Als Beispiel dient hier mal die Erfüllung eines Missionsziels, bei welchemman den Marker von rot in grün einfärben oder ihn einfach löschen könnte.

Dazu muss ein Marker erstmal benannt werden. Dieser heißt jetzt für die folgendaufgeführten Syntaxformbeispiele mal Marker1. Man hat jetzt eine Menge vonMöglichkeiten diesen anzusprechen. Dies kann wieder von einem Wegpunkt, Auslöseroder auch Skript erfolgen. Hierbei gibt es unter anderem folgende Syntaxformen:

38

Objective - Ziel (Flag)Flag1 - FahneDot - PunktDestroy - ZerstörenStart - StartEnd - Ende Warning - AchtungJoin - BeitretenPickUp - AuflesenUnknown - UnbekanntMarker - Markierung

Arrow - PfeilEmpty - LeerSelect - Leerer KreisVehicle - VehikelDefend - VerteidigenMove - BewegenAttack - AngreifenHeadquarters - StabDepot - DepotCamp - LagerTown - Stadt

SalvageVehicle - Bergungs FhzRepairVehicle - Reparatur FhzSupplyVehicle - VersorgungsFhzDestroyedVehicle - Zerstörtes FhzMaintenanceTeam - ReparaturCommandTeam - FührungsstabSupplyTeam - VersorgerInfantryTeam - InfanterieLightTeam - Leichte Inf.HeavyTeam - Schwere Inf.AirTeam - LuftabwehrFireMission - Firemission

Page 38: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Marker wird zur Position [x,y] versetzt:

"Marker1" setMarkerPos [x,y]

Marker zur Position von Objekt Ziel versetzt:

"Marker1" setMarkerPos getPos Ziel

Marker1 wird zur Position von Marker2 versetzt:

"Marker1" setMarkerPos getMarkerPos "Marker2"

Setzt Art und Aussehen von Marker1:

"Marker1" setMarkerType "Start"

Ändert die Farbe des Markers:

"Marker1" setMarkerColor "ColorBlue"

Ändert die Markergröße in [Höhe, Breite]

"Marker1" setMarkerSize [2,4]

Löscht den Marker:

deleteMarker "Marker1"

Zum Drehen einer Einheit oder ganzen Gruppen und Objekten, markiert man diesezunächst, drückt dann die Shift-Taste, klickt dann mit der linken Maustaste auf eineder Einheiten oder ein Objekt, hält diese gedrückt und bewegt das Fadenkreuz in diejeweilige Richtung. So ist es auch möglich mehrere Einheiten oder Gruppen gleichzeitigzu drehen. Dazu markiert man diese und macht alles so, wie zuvor beschrieben.

Einzelne Einheiten lassen sich im Editor je nach Bedarf zu Gruppen verbinden oder auchwieder trennen. Dazu wählt man zunächst die Taste 2, klickt mit der linken Maustasteauf die Einheit, hält die Taste gedrückt und zieht den Verbindungsstrich zu der Einheitmit der diese verbunden werden soll oder einfach ins Leere, wenn man diese eine Einheitvon einer Gruppe trennen möchte. Auf diese Weise kann man auch eine Einheit oder einObjekt mit einem Auslöser verbinden, wenn dieser beispielsweise nur von dieser einenEinheit bzw. diesem einen Objekt ausgelöst werden soll.

39

Kap

itel 1

1.8 - Einheiten und Objekte drehen

1.9 - Einheiten und Marker verbinden

Auf dem linken Bild sieht man,wie eine Einheit gerade mit einerGruppe verbunden wird und aufdem Rechten, wie ein Auslöserobjektbezogen angelegt wurde.

Page 39: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Das Gleiche geht nun auch mit Einheiten und Markern. Das Besondere hieran ist, das mander Einheit oder dem Objekt damit mehrere Zugfallspositionen zuweisen kann. Verbindetman die Einheit beispielsweise mit 3 Markern, kann diese Einheit beim Spielstartentweder an der ursprünglich gesetzten Position oder an einer der 3 Zufallspositionenstehen. Dies spart ein Skript und bietet gleichzeitig Dynamik.

Wenn man eine Einheit bereits mit einem Wegpunkt versehen hat und möchte diese imNachhinein bearbeiten, wird man schnell feststellen, dass sich stets das Wegpunktmenüöffnet, aber nicht das Einheitsmenü.

Dazu fährt man einfach mit dem Fadenkreuz auf die Einheit, drückt die Shift-Taste undhält diese gedrückt. Jetzt sieht man, dass sich die Bezeichnung ändert. Klickt man nundoppelt auf die Einheit, wird sich das Einheitsmenü öffnen.

40

1.10 - Einheiten mit Wegpunkten bearbeiten

Page 40: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kapitel 2- Die Dateien -

Nachdem du im Kapitel 1 in die Oberfläche eingeführt wurdest, wird dich dieses Kapiteleine Ebene tiefer, nämlich zum Standgerüst einer Mission führen. Hier werden dir dieeinzelnen Dateien erklärt, die für eine Mission wichtig sind. In ihnen werden unteranderem wichtige Informationen gespeichert und konfiguriert.

2.1 Der Missionsordner 422.2 Die Mission.sqm 432.3 Die Description.ext 482.4 Die Stringtable.csv 512.5 Die Init.sqs 532.6 Das Skript (.sqs) 542.7 Die Funktion (.sqf ) 542.8 Das Paa-Format 552.9 Die PBO 562.10 Die Sounddateien 562.11 Die Lip-Dateien 572.12 Das Overview 582.13 Das Briefing 59

41

Kap

itel 2

Page 41: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

In einem Missionsordner werden alle Dateien abgelegt, die für eine Mission benötigtwerden. Es bietet sich hierfür an viele Ordner anzulegen, um dadurch eine bessereÜbersicht zu gewährleisten. Um dies zu erreichen, sollte man für jeden der Dateitypen,also Musik, Sounds, Skripte, Szenen, Bilder usw., einen extra Ordner anlegen. Wichtig istauch, dass man alle Dateinamen klein schreibt. Ein fertiger Missionsordner schaut dannetwa so aus:

Die hier zu lesenden Dateinamen sind vorgegeben und nicht variabel! Lediglich das BildTitle.paa und die Ordner könnten anders benannt werden. Hier mal die näher erläutertenDateibedeutungen:

Mission.sqm MissionskoordinatenDescription.ext Missionskonfiguration

(Musik, Sound, Waffen, Identitäten, Ressourcen usw.)Stringtable.csv Textausgabe für mehrsprachige MissionenBriefing.html Briefing beim MissionsstartOverview.html Missionsinfo in MissionsauswahlmenüTitel.paa Overview Bild

Die verschiedenen Briefingdateien stellen das Briefing in verschiedenen Sprachen dar.Wenn man seine Mission natürlich nur mit einer Sprache ausstatten will, genügt dieBriefing.html, der Rest der HTML-Dateien kann dann gelöscht werden. Bei nur einerSprache ist es egal, ob man in der Briefing.html deutsch, englisch oder sonstigesverwendet. Mehr aber im Kapitel 2.13 im Unterbereich „Das Briefing“.

Music Für MusikdateienSound Für Soundateien (z.B. Sprache oder Effekte)Scripts Für die Skripte (.sqs)Scenes Für die Zwischensequenzen (z.B. Intro, Outro usw.)Function Für die Funktionen (.sqf )Pictures Für die Bilder (z.B. Titel.paa)

Möchte man eine Datei aus einem Unterordner aufrufen, gibt man in der Syntax denjeweiligen Ordner, dann Backslash und die jeweilige Datei an. Zum Beispiel das Aufrufeneines Skriptes:

[] exec “scripts\script.sqs“

42

2.1 - Der Missionsordner

Page 42: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Die Mission.sqm ist die wichtigste von allen Dateien, denn darin sind alle wichtigenInformationen und Koordinaten einer Mission gespeichert. Darunter sind unter anderemInformationen der im Editor gesetzten Einheiten, Objekte, Marker, Wegpunkte, Auslöserusw. enthalten. Des Weiteren findet man am Anfangsbereich noch diverse andereInformationen, wie verwendete Addons oder unter Info den Missionsnamen, Wetter undUhrzeit.

Die Erläuterungen in diesem Unterkapitel könnten ein wenig schwieriger sein, aber sollenkeinesfalls vom Editieren abschrecken. Man muss diese Datei nicht unbedingt auswendigbeherrschen, aber ein paar Kenntnisse erleichtern das Editieren in einigen Bereichenungemein.

Der AnfangsbereichAuf der Folgeseite sieht man den Anfangsbereich einer Mission.sqm im Bereich ClassMission. Zunächst werden die verwendeten Addons gelistet. Hier sind nur original ArmA-Addons zu sehen.

Achtung! Lädt man ein externes Addon, das eine schlecht gemachte Config.ccp hat, beimMissionsstart mit, kann es vorkommen, dass sich dieses Addon einfach mit in die Listeeinträgt, obwohl es in der Mission nicht verwendet wird. Man kann es dann einfachmarkieren und herauslöschen.

Das Problem kommt dann, wenn ein anderer Spieler diese Mission spielen möchte unddas Addon nicht hat. Die Mission kann dann nicht geladen werden und der Download warumsonst. Dieses Problem gab es gerade in Operation Flashpoint sehr oft. Spieler, die keineAhnung vom Editing haben, werden so eine Mission schnell beiseite legen und sich eineandere runterladen.

Nach den Addons folgend kommt man zur Class Intel, in welcher unter anderem

Briefingname

Widerstandseinstellung

Startwetter

Späteres Wetter

Späterer Nebel

Sichtweite

Datum

Uhrzeit

definiert sind.

43

addOns[]={

"cacharacters","sara",

};addOnsAuto[]={

"cacharacters","sara"

};randomSeed=8635907;class Intel{

briefingName="@STR_M11_Name";resistanceWest=0.000000;startWeather=0.000000;forecastWeather=0.000000;forecastFog=0.375187;viewDistance=1000.000000;month=6;day=2;hour=3;minute=50;

};

Kap

itel 2

2.2 - Die Mission.sqm

Page 43: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Neben der Class Mission gibt es noch die Class Intro, Class OutroWin undOutroLoose, die vom Aufbau her genauso sind, wie die Class Mission. Hier sind jedochdie Einheiten, Wegpunkte usw. für die jeweilige Sequenz definiert.

Es ist möglich Änderungen direkt in der Mission.sqm vorzunehmen. Dabei ist es wichtig,dass man die Änderungen richtig vornimmt. Wenn man das Ergebnis danach im Editorsehen will, muss man die Mission dort erst neu laden.

Sollte das Spiel beim Laden komplett abstürzen, ist wohl ein Fehler unterlaufen. Deshalbbietet es sich an vorher immer eine Kopie der Mission.sqm zu machen, um später einefunktionierende Datei zu haben.

Einheits- und ObjektklassenNach dem Anfangsbereich kommt man in der Class Mission in den Unterbereich ClassGroups und damit in den Unterbereich Class Vehicles in welcher die Einheiten, Objekteund die dazugehörigen Wegpunkte definiert sind.

Wie man sieht, sind hier sämtliche Informationen für diese Einheit namens S1 definiert.Hier die Erläuterung der Begriffe:

Items=1 Zeigt die Anzahl der Items der Class Groups an. Also die Anzahl der Gesamtgruppen aller Seiten auf einer Karte

Class Item0 Ist die Gruppe 0. Die nächste Gruppe hieße Class Item1Side Die Seite der jeweiligen Gruppe. Auch eine einzelne Einheit wird

als Gruppe definiert und angegeben!Class vehicles Sagt aus, dass es sich um ein Vehikel handeltItems=1 Die Anzahl der Items(Einheiten) der Gruppe Class Item0 an

44

class Groups{items=22;class Item0{

side="WEST";class Vehicles{

items=1;class Item0{

position[]={7973.895020,4.460081,9351.659180};id=0;side="WEST";vehicle="SoldierWB";player="PLAYER COMMANDER";leader=1;rank="CORPORAL";skill=0.200000;text="aP";init="this addWeapon ""binocular"";

};};

};

Page 44: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Class Item0 Class Item0 ist Leader der Gruppe Class Item0. Der demLeader unterstellte Soldat ist Class Item1, der nächste ClassItem2 usw.

Presence Wahrscheinlichkeit der Anwesenheit (Nicht bei Spieler!)Position YXZ-Koordinaten des Spielers in der Anordnung X Z YAzimut Blickrichtung der Einheit (Wert definierbar von 0 bis 360)ID ID der EinheitSide SpielerseiteVehicle Art der EinheitPlayer SpielerLeader Gibt an, ob die Einheit ein Leader ist.Skill Fähigkeit der Einheit (Wert definierbar von 0 bis 1)Health Gesundheitsstatus (Wert definierbar von 0 bis 1)Ammo Munitionsstatus (Wert definierbar von 0 bis 1)Text Name der Einheit (Variable)Init Die Initzeile der Einheit (Angabe einer Syntax etc.)

Wegpunkt-KlassenUnter der jeweiligen Gruppe sind die zu der Gruppe gehörigen Wegpunkte angeordnet.Diese sind von der Anordnung her den Einheiten gleich, aber eben von derZusammenstellung etwas anders.

Wie man sieht, sind hier sämtliche Informationen für diesen Wegpunkt der Gruppedefiniert. Der nächste Wegpunkt schaut, je nach Einstellung wieder ganz anders aus. Hierdie dazugehörigen Erläuterungen:

Items=1 Zeigt die Anzahl der Items der Class Waypoints an. Also dieAnzahl der gesamten Wegpunkte der Gruppe.

45

class Waypoints{items=1;class Item0{

position[]={7970.289551,4.731988,9346.483398};placement=50.000000;CombatMode="RED";Speed="FULL";combat="COMBAT";description="Hold this position!";expActiv="[] exec""scripts\script.sqs";class Effects{timeoutMin=10.000000;timeoutMid=3.000000;timeoutMax=30.000000:};showWP="NEVER";

};};

Kap

itel 2

Page 45: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Class Item0 Class Item0 ist der erste Wegpunkt. Der zweite würde dannClass Item1, der übernächste Class Item2 usw. heißen.

Position YXZ-Koordinaten des Wegpunktes, in der Anordnung XZY.Placement Ist der zufallsbedingte Platzierungsradius des Wegpunktes.CombatMode Der jeweilige Kampfmodus der Gruppe ab diesem Wegpunkt.Formation Die jeweilige Formation der Gruppe ab diesem Wegpunkt.Speed Die Geschwindigkeit der Gruppe ab diesem Wegpunkt.Combat Das jeweilige Verhalten der Gruppe ab diesem Wegpunkt.Description Die Beschreibung des Wegpunktes, welche man, wenn der

Wegpunkt im Spiel angezeigt wird, lesen kann.ExpActiv Die Aktivierungszeile des Wegpunktes, die bei Auslösung des

Wegpunktes ausgelöst wird. Hier wird ein Skript mit NamenScript.sqs aus dem Ordner Scripts aktiviert.

TimeOutMin Die kürzeste Auslösezeit des Wegpunktes in SekundenTimeOutMid Der Mittelwert der Auslösezeit des Wegpunktes in SekundenTimeOutMax Die maximalste Auslösezeit des Wegpunktes in SekundenShowWP Gibt an, ob der der Wegpunkt im Spiel angezeigt wird oder nicht.

Bei diesem Wegpunkt wurden keine Effekte definiert. Diese sind dann bei den Auslöser-klassen mit erklärt.

Marker-KlassenNach den Gruppen und den dazugehörigen Wegpunkten folgt die Klasse der Marker. Abhier werden sämtliche Marker aufgelistet, die in der Mission gesetzt werden. Das Ganzesieht etwa so aus:

Hier die Beschreibung der einzelnen Punkte:

Items=1 Zeigt die Anzahl der Items der Class Markers an. Also die Anzahlder gesamten Marker in der Mission

Class Item0 Class Item0 ist der erste Marker. Der zweite würde dann ClassItem1, der übernächste Class Item2 usw. heißen.

Position YXZ-Koordinaten des Markers, in der Anordnung XZY.

46

class Markers{

items=28;class Item0{

position[]={2452.061035,0.760200,3673.595703};name="TargetOne";text="Objective Alpha";type="Flag";a=2.000000b=2.000000angle=0.100000

};};

Page 46: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Name Der Name des Markers.Text Die Beschreibung des Markers, die man später auf der Karte liest Type Die Art des Markers. Hier ein Fadenkreuz.a Die Größe des Markers in X-Richtungb Die Größe des Markers in Y-RichtungAngle Der Winkel des Markers.

Auslöser-KlassenDiese sind von der Sache her ähnlich wie ein Wegpunkt zu betrachten und auch dieAnordnung ist, wie man sehen kann, fast gleich. Hier sind auch mal Effekte mit aktiviertworden, um diese mal in der Mission.sqm sehen zu können.

Items=1 Zeigt die Anzahl der Items der Class Sensors an. Also die Anzahlder gesamten Auslöser auf der Karte.

Class Item0 Class Item0 ist der erste Auslöser. Der zweite würde dann ClassItem1, der übernächste Class Item2 heißen usw.

a Die Größe des Auslösers in X-Richtungb Die Größe des Auslösers in Y-RichtungActivationBy Aktivierung durch „WEST“TimeOutMin Die mindest Auslösezeit des AuslösersTimeOutMid Der Mittelwert der Auslösezeit des AuslösersTimeOutMax Die maximalste Auslösezeit des AuslösersAge UnknownName Der Name des AuslösersExpCond Die Bedingung der Auslösung. Hier die Variable Var1.ExpActiv Die Aktivierungszeile des Auslösers, die bei der Auslösung des

Auslösers ausgelöst wird. Hier wird ein Skript mit NamenSkript.sqs aus dem Ordner Scripts aktiviert.

ExpDesactiv Die Deaktivierungszeile des Auslösers. Hier kann man denAuslöser wieder deaktivieren.

47

Kap

itel 2

class Sensors{

items=53;class Item0{

position[]={8012.703613,6.300000,9301.049805};a=100.000000;b=100.000000;activationBy="WEST";timeoutMin=10.000000;timeoutMid=3.000000;timeoutMax=30.000000:age="UNKNOWN";name="DetectorOne";expCond="Var1";expActiv="[] exec ""scripts\script.sqs""";expDesactiv="[] exec ""scripts\animation-end.sqs""";

};};

Page 47: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Die Description.ext ist für unsere Mission genauso wichtig wie die Mission.sqm. In ihrwerden zwar nicht die Einheiten gesetzt, aber eine Menge wichtiger Dinge definiert.Diese ist zuständig für das Vordefinieren von Musik, Sounds, Respawn, Ressourcen, dasAuswählen von Waffen im Briefing, den Accessoires (Kompass usw.) und diversen anderenDingen, die man zum Spielen benötigt.

Die Description.ext wird in dem Missionsordner der jeweiligen Mission angelegt. Dazuerstellt man eine neue Textdatei und benennt diese in Description.ext um. Ganz wichtighierbei ist, dass man diese mit einem Texteditor (z.B. Notepad) bearbeitet und nicht mitWord oder Excel!

Hier wird die Description.ext aus Übersichtsgründen nur grob erklärt. Zu den Einzelheitensiehe in den jeweiligen Kapiteln nach, darin sind die Unterbereiche sehr ausführlicherläutert.

Missionsstarttext Kapitel 4.2Missionswertung Kapitel 4.4Identitäten Kapitel 5.53Musik Kapitel 5.52Sound Kapitel 5.52Respawn Kapitel 7.2Waffenauswahl im Briefing Kapitel 3.6

Es ist, je nach Mission, nicht notwendig alle Bereiche in die Datei einzubauen. Man nimmtnur das, was für die Mission benötigt wird. Damit spart man sich zum Einen eine MengeArbeit und zum Anderen auch gleich mögliche Fehlerquellen, die dabei auftauchenkönnen. Für eine Einzelspielermission ist es schließlich völlig überflüssig, wenn man denRespawn mit angibt.

Es ist auf jeden Fall darauf zu achten, dass alle Klammern { die geöffnet werden, auchwieder geschlossen }; werden. Andernfalls stürzt ArmA sofort ab! Auch andere Fehlermachen sich teilweise durch einen Absturz bemerkbar! Deshalb ist hier eingewissenhaftes Arbeiten angesagt.

Möchte man Missionszubehör, wie den Kompass oder die Uhr in der Mission verbergenoder verfügbar machen, macht man das mit 1 oder true für aktiv/sichtbar oder mit 0oder false für inaktiv/unsichtbar.

Hinter die beiden // oder einem Semikolon ; hat man die Möglichkeit etwas zu schreiben,was ArmA ignoriert. Dies lediglich dient der Übersicht in Form einer Überschrift, die manbei einer großen Description schnell verlieren kann.

Hat man nun Änderungen in der Datei vorgenommen und wieder in den Editorgewechselt, muss man die Mission erst nochmal speichern oder neu laden, damit die

48

2.3 - Die Description.ext

Page 48: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Änderungen wirksam werden. Sollte das Spiel dabei abstürzen, nicht gleich die Geduldverlieren und einfach kurz nach dem Fehler suchen. Deshalb ist es sinnvoll einenAbschnitt nach dem anderen zu definieren. Somit weiß man sofort, dass der Abschnittbetroffen ist, den man gerade bearbeitet hat.

Hier sieht man, wie eine Description.ext in etwa aussehen kann.

49

// ====================== Description.ext =====================>Debriefing = 1;OnloadIntro = 1;OnLoadIntroTime = 1;OnLoadMissionTime = 1;Saving = 0;// === Titlecut ==============================================>OnloadIntro= M r - M u r r a y p r o u d l y p r e s e n t sonLoadMission= A R M E D A S S A U L T// === Punktvergabe ==========================================>minScore=200avgScore=2500maxScore=6000// === Missionszubehör =======================================>ShowCompass = 1;ShowMap = 1;ShowGPS = 1;ShowWatch = 1;// === Respawn ===============================================>respawn=3;respawndelay=10;// === Waffen ================================================>class Weapons {

class M4{

count = 4;}; class Javelin{

count = 2;};

};// === Magazine ===============================================>class Magazines {

class 20Rnd_556x45_Stanag{

count = 10;};class Javelin{

count = 6;};

};// === Musik ================================================>class CfgMusic

{tracks[]= { Track1,Track2};

class Track1{

name = "Track1";sound[] = {\music\track1.ogg, db+0, 1.0};

};

Kap

itel 2

Page 49: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

50

class Track2{

name = "Track2";sound[] = {\music\track2.ogg, db+0, 1.0};

};};// === Sounds ===============================================>class CfgSounds{

sounds[]= {Sound1};class Sound1{

name = "Sound1";sound[] = {\sounds\sound1.ogg, db+0, 1.0};

};};// === Radio ================================================>class CfgRadio{

sounds[] = { };};// === Umgebung =============================================>class CfgSFX{

sounds[] = {};};class CfgEnvSounds{

sounds[] = {};};// === Identitäten ==========================================>class CfgIdentities{

class MrMurray{

name = "MrMurray";face = "Face33";glasses = "none";speaker = "Dan";pitch = 1.00;

};

class Memphisbelle{

name = "Memphisbelle";face = "Face10";glasses = "none";speaker = "Howard";pitch = 1.00;

};

class Dan{

name = "Dan";face = "Face22";glasses = "none";speaker = "Russell";pitch = 1.00;

};

};

// End Of File

Page 50: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Die Stringtable.csv dient zum Hinterlegen von Textvariablen. Sie ermöglicht es,verschiedene Sprachen in eine Mission einzubinden oder einfach nur Text zu hinterlegen.Diese Datei sollte dabei generell mit dem Texteditor bearbeitet werden! Windows schlägtaber standardmäßig Excel als Bearbeitungsprogramm vor.

Wenn man diese Datei nun bearbeiten will, muss man auf diverse Kleinigkeiten achten.Zunächst definiert man den Kopf mit den jeweiligen Sprachen. Dabei achte man darauf,dass diese mit Kommas getrennt werden.

LANGUAGE,English,German,Czech,Notes

Auch in der jeweiligen Zeile werden die Sprachen nun durch ein Komma getrennt und in" " gesetzt. In der Praxis sieht das dann in der jeweiligen Zeile so aus:

STR_Titel,"Night Patrol","Nacht Patrouille","...",Missionsname

Hier sieht man nun ganz gut, wie das ausschaut. Am Anfang die Adresse, mit STR_Titel,dann folgend die Sprachen und zum Schluss noch eine Beschreibung, die zurOrientierung beiträgt. STR_ wird dabei generell zuerst angegeben. Das Wort Titel dahinterist Variable und kann daher frei definiert werden. Eine Textzeile für einen Text in einerMission könnte dann so aussehen:

STR_Mission_1,"Hold Position!","Position halten!","…",Missionstext1

Möchte man den Text zum Beispiel beim Laden der Mission aufrufen, gibt man folgendeSyntax an:

onLoadMission=$STR_Titel;

STR_Titel kann also als individuelle Adresse gesehen werden, welche man angibt, wennman den Text in die Mission einbinden möchte. Dieser würde dann in der jeweiligausgewählten und vordefinierten Sprache ausgegeben. Das @ vor STR_ verwendet manim Editorbereich, also in einem Auslöser oder Wegpunkt, während man in einer Configoder der Description.ext das $ Zeichen verwendet.

Aus dem Editor Text aufrufen: @STR_TitelAus der Description bzw. einer Config: $STR_Titel

Bei dem folgenden Bild, wurde ein Wegpunkt mit Text versehen, welcher direkt aus derStringtable bezogen wird, welche dafür wie folgt definiert wurde:

STR_Mission_1,"Hold Position!","Position halten!","…",Missionstext1

51

Kap

itel 2

2.4 - Die Stringtable.csv

Page 51: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Bei dem Wegpunkt wurde dabei folgendes in die Description-Zeile geschrieben:

@STR_ Mission_1

Wie man hier sehen kann, wird der Text dann direkt so in die Mission übergeben.

Natürlich ist es hierbei auch möglich in einem Satz oder Text einen Zeilenumbruchanzugeben, was gleich etwas besser aussieht. Dazu verwendet man lediglich ein \n

STR_Mission_1,"Hold Position\nand wait for orders!","","…",Missionstext1

Hier wurde eine Texteinblendung verwendet, was in der Mission dann so aussieht:

Hier nochmal ein kurzes Dateibeispiel einer Stringtable aus einer originalen ArmedAssault Mission, wobei man hier sehr gut erkennen kann, dass darin nur eine Sprachedefiniert wurde.

Im Kapitel 5.67 findet sich eine Auswahl von Stringtable Grundwerten, welche direkt inArmA hinterlegt sind. Ebenso auch im Kapitel 7.13 in welchem aber nur MP-Werteaufgelistet sind. Diese kann man ganz einfach für seine Mission verwenden, ohne eigeneStringtablewerte erstellen zu müssen.

52

LANGUAGE,English,Notes

STR_M11_Name,"Night Patrol",Mission NameSTR_M11_OnLoad,"You're on duty tonight",OnloadSTR_M12_OnLoad,"Don´tsleep and keep your eyes open!",Onload

COMMENT, -------------- Main Mission -------------

STRCAMP_OBJSTART,Guard the military installation,STRM_07an01,"Southern sector, Sahrani",prebriefingSTRM_07an02,"NATO base in La Riviere, Sahrani",prebriefingSTRM_07an03,"Near Paraiso - One hour later, Sahrani",prebriefing

Page 52: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Die Init.sqs kann sozusagen als Initialisierungsdatei angesehen werden, welche beimMissionsstart automatisch abgerufen wird und nicht gesondert gestartet werden muss.Diese Datei bringt eine Menge Übersicht mit sich, da man nun nicht alle Befehle in dieInitzeile einer Einheit oder des Spielers schreiben muss, welche dann, je nach Menge, sehrunübersichtlicht werden würde. Denn gerade beim Spieler sammeln sich oftmals eineMenge Befehle an. Aber was schreibt man denn nun alles dieses Skript? Eigentlich alles,was beim Missionsstart sofort ausgeführt, also initialisiert werden soll.

Wie man sieht, sind im folgenden Beispiel nun ein GPS-System, die Spielbeschleunigungund die Verdeckung der Missionsziele 1-3 vordefiniert. Zudem wird hier noch zumEditieren die Teleport.sqs gestartet, die uns das Editieren und Testen erleichtern soll. Diesesollte logischerweise dann später deaktiviert oder entfernt werden.

Natürlich kann man hier noch weit mehr vordefinieren, als oben angegeben. Zum Beispieldas Verhalten von Einheiten, die Bewaffnung, Variablen, Einheitsstatus löschen,Funktionen laden und so weiter. Diese Datei sollte nur mal als Beispiel dienen. Alle hierangegebenen Skript oder ähnliches müssen natürlich extra geschrieben werden bzw. dieMissionsziele auch so vordefiniert und benannt werden.

Wie man außerdem sieht, ist hier alles sehr übersichtlich gehalten. Dabei wird alles, washinter einem Semikolon steht, von ArmA ignoriert und dient hier als Beschreibung um dieÜbersicht zu behalten.

53

;EinblendungtitleCut [" ", "BLACK IN"]; titleFadeOut 4

;Funktion vorladenSearchLight = compile preprocessFile "Searchlight.sqf";

;Identität zuweisenPlayer setIdentity "Mr-Murray";

;Missionsziele werden verdeckt"MZiel1" ObjStatus "Hidden";"MZiel2" ObjStatus "Hidden";"MZiel3" ObjStatus "Hidden";

;GPS-System[] exec "marker.sqs";

;Spielbeschleunigung unterdrücken[] exec "time.sqs";

;Editierskript. Wichtig! Nur für die Editierzeit, später entfernen bzw. deaktivieren!!!;Teleport[] exec "teleport.sqs";;Ende

Kap

itel 2

2.5 - Die Init.sqs

Page 53: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

2.6 - Das Skript

2.7 - Die Funktion

54

Ein Skript ist lediglich eine Datei im Missionsordner, welches für bestimmte Zweckegeschrieben ist. Dieser Abschnitt erklärt nicht das Skripten selbst, sondern beschreibtlediglich die Datei und wie man diese aufruft. Mehr zum Thema Scripting findet sich imKapitel 9.

Die Skripte in Armed Assault enden, wie auch schon bei Operation Flashpoint, mit derEndung .sqs. Zum Erstellen eines Skriptes erstellt man zunächst eine Textdatei, die mandann einfach umbenennt. Windows wird die Datei dann als unbekanntes Formatdeklarieren. Dem entgegnet man dann mit der Windowsmöglichkeit Rechtsklick undanschließend „Öffnen mit“ und wählt dort als Standardprogramm den Texteditor aus.

Im Laufe der nächsten Kapitel wird man noch mit dem einen oder anderen Skript vertrautgemacht und wird verstehen um was es dabei geht. In einem Skript kann man sich dannrelativ frei austoben, obwohl es natürlich auch hier Grenzen gibt.

Die Init.sqs als solches ist ja schon ein Skript, welches ohne Verwendung einer Syntaxautomatisch beim Missionsstart von ArmA aufgerufen wird. Auch die Mission.sqm oderdie Description.ext sind ja sozusagen auch irgendwo Skripte, nur halt mit einer anderenEndung und Funktion.

Möchte man nun ein Skript per Auslöser, Wegpunkt oder aus einem anderen Skriptaufrufen, benötigt man diese Syntax:

[] exec "scripte\meinskript.sqs"

oderthis exec "scripte\meinskript.sqs"

Nachdem das Skript aufgerufen wurde, wird es seine Befehle abarbeiten und dann jenach Funktion und Ablauf dann am Skriptende, wo exit stehen sollte, beendet.

Die Funktion kann man von der Sache her mit einem Skript vergleichen. In beiden sindBefehle hinterlegt, aber es gibt doch kleine aber feine Unterschiede. Genauso wie einPorsche und ein Käfer. Beides sind zunächst Autos, aber wenn man ins Detail geht, sowird man schnell feststellen, dass der Porsche dem Fortschritt nach weiter ist.

Der Unterschied besteht im Wesentlichen darin, dass SQS-Skripte jedes Mal gelesenwerden, wenn sie aufgerufen werden und die SQF-Funktionen nur einmal in den Speichergeladen werden. Während bei Operation Flashpoint noch größtenteils auf SQS-Basisgearbeitet wurde, wird bei Armed Assault empfohlen mehr auf SQF-Basis zu arbeiten.

Page 54: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Anwendungsmäßig sind Funktionen so zu benutzen, dass sie eine bestimmte Aufgabelösen und dies mit einem so kurzen und bündigen Schreibaufwand wie möglich. Hinzukommt, dass man diese Funktion dann auch in anderen Missionen jederzeit verwendenkann, ohne sie umschreiben zu müssen. Man schreibt sie lediglich ein einziges Mal zumErfüllen eines ganz bestimmten Zweckes. Beispielsweise ist es möglich mit Hilfe einerFunktion einen Vektor zu berechnen. Oder auch viele andere Bereiche lassen sich mitFunktionen wesentlich einfacher realisieren. Es ist besser viele kleine Funktionen zuhaben, als nur ein langes Skript. Hierbei geht es weniger um die Performance. Wichtigerist die Wiederverwertbarkeit dieser Funktion.

Mehr zum Thema Funktionen kann man im Kapitel 9.13 nachlesen.

Das Paa-Format ist lediglich eine Bilddatei, wie auch das Jpg-Format. In Armed Assault sind größtenteils alle Grafiken im Paa- oder Pac-Format vorzufinden. Hierzu gehören selbstverständlich auch die Texturen sämtlicheObjekte in Armed Assault.

Im Unterkapitel „Der Missionsordner“ dieses Kapitels ist eine Grafik zu sehen, auf der eine Datei namens Title.paazu sehen ist. Diese Grafik ist für das Overview vorgesehen und ist in der Overview.html so definiert. Dieses Bild siehtman, wenn man im Einzelmissionsmenü eine Mission zumSpielen auswählt.

Der Name für dieses Bild ist aber variabel und müsste dann dementsprechend auch so inder Overview.html angegeben werden. Mehr dazu aber in diesem Kapitel 2.12 imUnterbereich „Der Overview“. Arma unterstützt, wie auch schon Operation Flashpoint,das Jpg-Format. Man kann also auch Bilder in diesem Format einbinden. Ganz wichtig istes darauf zu achten, dass die angegebene Bildergröße passt. ArmA nimmt teilweise nurGrafiken an, die einen Zweierpotenzwert haben. Aber in manchen Bereichen gibt es auchAusnahmen, wie z.B. im Briefing oder Overview. Zweierpotenzen sind:2,4,8,16,32,64,128,256,... usw. Als Beispiel mal diese Formate:

64x64 128x128 128x64 256x256

Zum Betrachten und zum Bearbeiten von Paa- bzw. Pac-Dateien verweise ich auf dieArmed Assault Fanseiten, auf denen man die entsprechenden Tools finden wird.

Kap

itel 2

2.8 - Das Paa-Format

55

Page 55: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Die PBO ist eine gepackte Datei in der alle Dateien, die sich vorher beim Editieren einerMission im Missionsordner angesammelt haben, verpackt sind. Man könnte sie also miteiner Rar- oder Zip-Datei vergleichen, nur dass die gepackten Dateien von der Größe hernicht verkleinert werden.

Die PBO entsteht, wenn man seine fertige Mission im Editor als Single- oderMultiplayermission abspeichert. Während Singleplayermissionen im VerzeichnisArmA/Missions hinterlegt werden, sind die Multiplayermissionen im VerzeichnisArmA/MPMissions zu finden.

PBO´s beschränken sich natürlich nicht nur auf die Missionen. Auch sämtliche Addonsvon Armed Assault sind, wie auch schon in Operation Flashpoint, in PBO´s gepackt. DieseDateien lassen sich mit Hilfe von diversen Tools packen und auch wieder entpacken. Sodass man beispielsweise schon vorhandene Missionen oder Addons entpacken und ausihnen lernen bzw. Skripte oder ähnliches verwenden kann. Für die Tools verweise ichwieder auf die Armed Assault Fanseiten.

Der überwiegende Teil der Sounddateien in Armed Assault ist im Wss-Format oder Ogg-Format konvertiert. Es ist aber auch möglich Wavedateien zu verwenden. Jedoch sollteman hier auf die Größe der Datei achten, da man ja die Mission auch irgendwann zumDownload anbieten möchte.

Das Wss- oder Ogg-Format ist hierfür genau das richtige, weil die Dateien je nachSoundlänge eine minimale Größe haben. Dies ermöglicht die Verwendung von vielenSounds in einer Mission, ohne dass diese am Ende eine überdimensionale Dateigrößehat. Eine nähere Erklärung zum Einbinden von Sounds findet man im Kapitel 5.52 imBereich -Eigenen Sound einbinden-.

Sounddateien, bis auf Musik, sollten Mono mit einer Frequenz von 44.100 kHz konvertiertsein. Mono daher, damit man den Entfernungseffekt nutzen kann. Möchte man nämlichein Objekt oder eine Einheit mit

Name say "Soundname"

etwas sagen bzw. erklingen lassen, würde man es auf der ganzen Karte hören, was jaunlogisch wäre. Deshalb Mono! Sind die Dateien also Stereo, erklingen die Sounds global.

Die Konvertierungsprogramme für diese Dateien findet man auf den Armed AssaultFanseiten oder auch sonst bei anderen Anbietern im Internet.

56

2.9 - Die PBO

2.10 - Die Sounddateien

Page 56: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 2

Die Lip-Datei ist für die Bewegung der Lippen zuständig. Jede Sounddatei, die für dieSprachausgabe ausgelegt ist, kann mit einer Lip-Datei versehen werden, damit sich dieLippen der jeweiligen Einheit beim Sprechen auch bewegen.

Hierbei gibt es lediglich 3 Werte(1,2,3), die man dafür benötigt. Zuerst legt man dieFramerate der einzelnen Bewegungsbilder, hier mit dem Wert 0.040, fest. Man kanndiesen Wert quasi als Zeitabschnitt bezeichnen. Alle 0.040 Sekunden bzw. Frames ändertsich nun die Mundbewegung. Nach der Festlegung der Framezeit beginnt der eigentlicheBewegungsablauf der Lippen, welche die Öffnungsgrade 0 bis 3 haben. Wobei der Wert0 für geschlossenen und 3 für weit geöffneten Mund steht.

Hier wurde eine Sounddatei verwendet, die genau eine Sekunde lang ist. Teilt man 1Sekunde durch 0.040 so erhält man 25. Hier sind aber gar keine 25 Zeilen enthalten,sondern nur 20. Das liegt daran, dass man es auch so schreiben kann:

Zum Beispiel von Zeit 0.560 setzt man den Lippenwert 1 und pausiert bis Zeit 0.720 undsetzt dann den Lippenwert 2. Hier wurde also eine 4 Frame lange Bewegungspause derLippen einsetzt.

Dieses Beispiel ist ja nur für eine Sekunde. Man kann sich dann schon vorstellen, wie langeine 10 oder 15 Sekunden lange Lip-Datei aussehen kann.

Damit man das aber alles nicht per Hand machen muss, gibt es Tools, die für die Erstellungsolcher Dateien konzipiert sind. Hier verweise ich mal wieder auf die Armed AssaultFanseiten, auf denen man die entsprechenden Tools finden und runterladen kann.

57

frame = 0.0400.000, 00.040, 10.080, 20.120, 30.160, 20.200, 10.240, 00.280, 10.320, 20.360, 1

weiter -->

0.400, 00.440, 10.480, 30.520, 00.560, 1

4 Frame-Pausen0.720, 2

2 Frame-Pausen0.800, 10.840, 20.920, 11.000, 2

2.11 - Die LIP-Dateien

Page 57: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Das Overview ist der Abschnitt, den man bei der Einzelspielermissionsauswahl als kurzenInfoteil zur Mission sehen kann. Dieser wird in der Overview.html zusammen mit einemBild erstellt. Im Spiel sieht das dann etwa wie auf dem Bild aus.

Rechts ist die Missionsauswahl und links die Info mit Bild zu der Mission zu sehen.

Zum Erstellen eines Overviews wären gewisse Html-Kenntnisse von Vorteil, aber auchwer sich damit nicht auskennt, bekommt das ohne weiteres hin. Am besten ist es immer,wenn man sich die Overview aus einer anderen Mission herauskopiert, einfachumschreibt und mit einen eigenem Bild versieht.

Zu Beginn erstellt man zunächst einmal eine Textdatei, welche man später, wenn manalles fertig konfiguriert hat, dann in Overview.html umbenennt. Diese Textdatei öffnetman dann und trägt dort etwa folgenden Quelltext ein, welcher aus einer original ArmedAssault Mission stammt.

58

<html><head><meta http-equiv="Content-Type"content="text/html; charset=windows-1250"><meta name="GENERATOR" content="VB"><title>Overview</title></head><body bgcolor="#FFFFFF"><br><!--Nachtwache--><br><p align="center"><img src="Title.paa" width="230" height="115"></p><BR><p><! ---Missionsinfo>Wieder steht eine langweilige Nachtwache an. Es ist eine warme Nacht…<! ---Ende Missionsinfo></p></body></html>

2.12 - Das Overview

Page 58: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 2

Die Briefing.html, die das Briefing direkt zur jeweiligen Mission darstellt, ist schon etwasumfangreicher als die Overview.html zu schreiben. Sie umfasst wesentlich mehr Text inForm von Informationen zur Mission und die dazugehörigen Missionsziele.

Im folgend zu sehenden Briefingausschnitt sieht man ganz gut den Missionsinfotext unddarunter die Missionsziele, von welchen das Erste bereits abgehakt ist und die anderennoch zu erfüllen sind. Mehr Informationen zu den Missionszielen gibt es im Kapitel 4.5.Hier geht es zunächst erstmal darum eine Briefing.html zu erstellen und diese zuverstehen.

Der einfachste Weg hierzu ist, wenn man sich eine Briefing.html aus einer schonbestehenden Mission herauskopiert und diese an seine eigenen Bedürfnisse bzw. Missionanpasst. Ein weiter einfacher Weg wäre, eines der vielen Briefingtools, die es auf denArmed Assault Fanseiten zum Download gibt, zu verwenden.

Möchte man ein vorhandenes Briefing ändern, klickt man mit Rechtsklick auf die Dateiund wählt “Öffnen mit” und öffnet die HTML-Datei dann ganz einfach mit dem Texteditor.

Trotz allem folgt hier jetzt der trockene Weg zum Erstellen eines Briefings. Im Briefingselbst gibt es ja, wie man oben sieht, den Abschnitt Plan und den Abschnitt Notes. Beidestellen zwei verschiedene Seiten dar, die aber in einer Datei verarbeitet werden.

Zum Erstellen eines Briefings wird zunächst wieder eine ganz normale Textdatei benötigt.Diese wird zunächst wieder normal als Textdatei geöffnet und in ihr der Quelltext nachden eigenen Bedürfnissen verfasst. Nach Abschluss der Arbeit, wird die Datei geschlossenund in Briefing.html umbenannt.

59

2.13 - Das Briefing

Page 59: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Wie man im Kapitel 2.1 -Der Missionsordner- sehen kann, gibt es mehrereBriefingdateien, welche in den jeweiligen Sprachen verfasst sind. Normalerweise ist inder normal benannten Briefing.html alles in Englisch geschrieben. Aber wenn man nureine Sprache für seine Mission vordefiniert, ist es egal welche Sprache darin vorkommt.Möchte man beispielsweise mehrere Sprachen einbinden, so sollte man sich schon andie Regel halten und die Dateien dementsprechend benennen.

Briefing.German.htmlOverview.German.htmlBriefing.France.htmlOverview.France.html

Das englische Briefing und Overview würde in diesem Fall einfach nur wie folgt benannt:

Briefing.html Overview.html

Auf den folgenden zwei Seiten ist nun das passende Briefing zum Briefingbild auf derVorseite zu sehen. Es wurden lediglich die Notizen hinzugefügt, die im Bild als Notesbenannt sind. Mit ein wenig Geduld, Ideenreichtum und Kreativität kann jeder mit einbisschen Übung ein gut ausgefeiltes Briefing erstellen.

So kann ein Briefing einer Mission später im Quelltext etwa aussehen:

60

<html><head><meta http-equiv="Content-Type"content="text/html; charset=windows-1250"><meta name="GENERATOR" content="vb"><title>Briefing</title></head><body bgcolor="#FFFFFF"><h2><a name="Main"></a></h2><! --- Die Notizen – ab hier werden die Notizen(Notes) eingetragen.><h6>Damn that’s my first shooting lesson.<br> </h6><! --- Ende der Notizen><hr><! --- Der Missionsplan – Ab hier wird die Missionsbeschreibung angegeben.><p><a name="Plan"></a>Successfully finish weapon qualification.<br>

Page 60: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

61

Expert Marksman rifle qualification required to unlock sniper course in line 6.</p><hr><! --- Die Missionsziele – Ab hier erfolgt die Eintragung der Missionsziele><p><a name="OBJ_1"></a> Listen to your drill instructor until he lets you go.</p><hr><p><a name="OBJ_2"></a> Qualify with rifle in line 1.</p><hr><p><a name="OBJ_3"></a> Qualify with automatic weapon in line 2.</p><hr><p><a name="OBJ_4"></a> Qualify with granade launcher in line 3.</p><hr><p><a name="OBJ_5"></a> Familiarize with hand granades in line 4.</p><hr><p><a name="OBJ_6"></a> Qualify with M9 pistol in line 5.</p><hr>

<! --- Ende des Missionsplans><! --- Abschlussbriefing – Festlegung des Abschlussbriefings><hr><br><h2><p><a name="Debriefing:End1">Qualified</a></p></h2><br><p>

Now I'm a qualified infantryman. </p><br><hr><br><h2><p><a name="Debriefing:End2">Title</a></p></h2><br><p></p><br><hr><br><h2><p><a name="Debriefing:End3">Title</a></p></h2><br><p></p><br><hr><br><h2><p><a name="Debriefing:End4">Title</a></p></h2><br><p></p><br><hr><br><h2><p><a name="Debriefing:End5">Title</a></p></h2><br><p></p><br><hr><br><h2><p><a name="Debriefing:End6">Give UP</a></p></h2><br><p>I gave it up. The infantry training is boring.</p><br><! --- END debriefing ---></body></html>

Kap

itel 2

Page 61: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Mit <html> und <head> wird die Html-Datei zunächst eröffnet. Danach folgen einigehier jetzt nicht so wichtige Standartzeilen. Die Hintergrundfarbe wird mit <bodybgcolor="#FFFFFF"> definiert, obwohl die bei Armed Assault ohnehin fest ist. Vielwichtiger ist zum Beispiel <br>, was für einen Zeilenumbruch steht. Hinzu kommen nochBefehle wie <hr> für eine horizontale Linie, welche man aber nicht sehen kann, dann das<p>, welches für einen Absatz steht und zu guter letzt das <a>, welches einen Linkhervorhebt. Mann hat ja die Möglichkeit Wörter mit Marker zu verbinden, wo das Faden-kreuz dann hinwandert, wenn man diesen Link im Briefing anklickt.

Folgend ein kurzes Beispiel:Hat man im Briefing beispielsweise einen Marker mit dem Namen Ziel gesetzt, verlinktman diesen im Briefing wie folgt. Der Satz im Briefing lautet: Erobern Sie das Ziel. Vondiesem Satz soll das Wort Ziel mit dem Marker namens Ziel verlinkt werden. Im Quelltextsieht das dann so aus:

Erobern Sie das <a href="marker:ziel">Ziel</a>

Wie man sieht, ist der Marker namens Ziel angegeben und zwischen dem <a> und </a>das Wort Ziel. Wenn man jetzt im Briefing auf das Wort Ziel klickt, wandert das Fadenkreuzbeim Anklicken auf den Marker namens Ziel, wie auf dem unteren Bild sehr gut zu sehenist. Befehle, die mit einem Backslash versehen sind, beenden die jeweilige Aktion.

62

Page 62: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kapitel 3– Waffen – Fahrzeuge – Einheiten – Objekte –

Nachdem du in den ersten beiden Kapiteln mit der Oberfläche und den Dateien vertrautgemacht wurdest, kommen wir nun zu den etwas spezielleren Bereichen. Du bist nunfähig Einheiten zu setzen, diese mit Wegpunkten zu verbinden und weißt sogar, inwelchen Dateien du welchen Bereich finden und konfigurieren kannst. Hier werden dirnun alle Bereiche erläutert, die mit Waffen, Fahrzeugen, Einheiten und Objektenverbunden sind.

3.1 Die Handwaffen und statische Waffen 643.2 Die Waffenbezeichnungsliste 683.3 Einheiten bewaffnen und ausrüsten 703.4 Die Waffen- und Munitionskiste 713.5 Fahrzeuge be- und entladen 713.6 Waffenauswahl im Briefing 723.7 Die Fahrzeugklassen 733.8 Die Fahrzeugwaffen 763.9 Die Einheitsklassen 773.10 Die Shellklassen 803.11 Die Objekt- und Gebäudeklassen 813.12 Die Pflanzenklassen 883.13 Die Steinklassen 903.14 Die Schilderklassen 913.15 Waffen- und Magazintypen ausgeben lassen 923.16 Abgefeuerten Typ ausgeben lassen 923.17 Hat Einheit Waffe? 923.18 Primär- bzw Sekundärwaffe einer Einheit 933.19 Hat Einheit Munition 933.20 Minen erzeugen 933.21 Waffen und Magazine erzeugen 943.22 Waffenblickrichtung ausgeben lassen 95

63

Kap

itel 3

Page 63: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Hier eine Übersicht sämtlicher Hand- und Statikwaffen, mit den jeweiligenBezeichnungen, den Magazinen und dem Zubehör.

WESTEN / WIDERSTAND – Leichte Handwaffen

Waffe: M16A2 M16A2GL M4GL - M4A1GLMagazin: 20Rnd_556x45_Stanag 20Rnd_556x45_Stanag 20Rnd_556x45_Stanag

30Rnd_556x45_Stanag 30Rnd_556x45_Stanag 30Rnd_556x45_StanagGranate: 1Rnd_HE_M203 1Rnd_HE_M203Flares: FlareWhite_M203 FlareWhite_M203

FlareGreen_M203 FlareGreen_M203FlareRed_M203 FlareRed_M203FlareYellow_M203 FlareYellow_M203

Waffe: M4 M4A1SD M4AIMMagazin: 20Rnd_556x45_Stanag 20Rnd_556x45_Stanag 20Rnd_556x45_Stanag

30Rnd_556x45_Stanag 30Rnd_556x45_Stanag 30Rnd_556x45_Stanag30Rnd_556x45_StanagSD 30Rnd_556x45_StanagSD 30Rnd_556x45_StanagSD

Waffe: M16A4 - M4A1 M16A4_GL M16A4_ACG_GLMagazin: 20Rnd_556x45_Stanag 20Rnd_556x45_Stanag 20Rnd_556x45_Stanag

30Rnd_556x45_Stanag 30Rnd_556x45_Stanag 30Rnd_556x45_StanagGranate: 1Rnd_HE_M203 1Rnd_HE_M203Flares: FlareWhite_M203 FlareWhite_M203

FlareGreen_M203 FlareGreen_M203FlareRed_M203 FlareRed_M203FlareYellow_M203 FlareYellow_M203

Waffe: M16A4_ACG MP5A5 MP5SDMagazin: 20Rnd_556x45_Stanag 30Rnd_9x19_MP5 30Rnd_9x19_MP5

30Rnd_556x45_Stanag 30Rnd_9x19_MP5SD 30Rnd_9x19_MP5SD

64

3.1 - Die Handwaffen und statische Waffen

Page 64: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Waffe: M4SPR M249 M240Magazin: 20Rnd_556x45_Stanag 20Rnd_556x45_Stanag 100Rnd_762x51_M240

30Rnd_556x45_Stanag 30Rnd_556x45_Stanag30Rnd_556x45_StanagSD 30Rnd_556x45_StanagSD

200Rnd_556x45_M249

Waffe: G36a G36C G36KMagazin: 30Rnd_556x45_ G36 30Rnd_556x45_G36 30Rnd_556x45_ G36

Waffe: M24 M107Magazin: 5Rnd_762x51_M24 10Rnd_127x99_M107

Waffe: M9 M9SDMagazin: 15Rnd_9x19_M9 15Rnd_9x19_M9

15Rnd_9x19_M9SD 15Rnd_9x19_M9SD

WESTEN / WIDERSTAND – Schwere Handwaffen

Waffe: Stinger M136 JavelinMagazin: Stinger M136 Javelin

WESTEN / WIDERSTAND – Statische Waffen

Waffe: M119 M2StaticMG SearchLightM2HD_mini_TriPod

Magazin: 30Rnd_105mmHE_M119 100Rnd_127x99_M2

65

Kap

itel 3

Page 65: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Waffe: MK19_TriPod TOW_TriPod Stinger_PodMagazin: 48Rnd_40mm_MK19 6Rnd_TOW_Tripod 2Rnd_Stinger

OSTEN – Leichte Handwaffen

Waffe: AK74 AK74GL AKS74UMagazin: 30Rnd_545x39_AK 30Rnd_545x39_AK 30Rnd_545x39_AKGranate: 1Rnd_HE_GP25Flares: FlareWhite_GP25

FlareGreen_GP25FlareRed_GP25FlareYellow_GP25

Waffe: AKS74UN PK SVDMagazin: 30Rnd_545x39_AK 100Rnd_762x54_PK 10Rnd_762x54_SVD

30Rnd_545x39_AKSD

Waffe: AKS74PSO KSVKMagazin: 30Rnd_545x39_AK 5Rnd_127x108_KSVK

Waffe: Makarov MakarovSDMagazin: 8Rnd_9x18_Makarov 8Rnd_9x18_Makarov

8Rnd_9x18_MakarovSD 8Rnd_9x18_MakarovSD

66

Page 66: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

OSTEN – Schwere Handwaffen

Waffe: 6G30 RPG7V StrelaMagazin: 6Rnd_HE_6G30 PG7V Strela

OSTEN – Statische Waffen

Waffe: D30 DSHKM DSHkM_Mini_TriPodMagazin: 30Rnd_122mmHE_D30 50Rnd_127x107_DSHKM 50Rnd_127x107_DSHKM

Waffe: TOW_TriPod_East Stinger_Pod_East AGSMagazin: 6Rnd_TOW_Tripod 2Rnd_Stinger 29Rnd_30mm_AGS30

Ausrüstung allgemein

Waffe: LaserDesignator NVGoggles BinocularMagazin: LaserBatteries

Waffe: Handgrenade HandGrenadeTimed PipebombMagazin: Handgrenade HandGrenadeTimed Pipebomb

Waffe: Mine MineE SmokeShellMagazin: Mine MineE SmokeShell

SmokeShellRedSmokeShellGreen

67

Kap

itel 3

Page 67: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Hier nochmal die Handwaffen und Magazine in Listenform mit kurzer Bemerkung dazu.Natürlich macht es bei einer Waffe ohne Schalldämpfer keinen Sinn ein Magazin mit demAnhang SD zu vergeben.

Westen / Widerstand

68

Waffenklasse Bezeichnung MunitionM16A2

M16A4

M16A4_ACG

M4

M4A1

M4A1SD

M4AIM

M4SPR

M16A2

M16A4

M16A4 - Zielfernrohr

M 4 - Standard

M 4 A1 - Standard

M 4 - Schalldämpfer

M4 - Aimpoint

M 4 - Zielfernrohr

Magazin: 20Rnd_556x45_Stanag30Rnd_556x45_Stanag30Rnd_556x45_StanagSD

M16A2GL

M16A4_GL

M16A4_ACG_GL

M4GL

M4A1GL

Sturmgewehremit Granatwerfer

Magazin: 20Rnd_556x45_Stanag30Rnd_556x45_Stanag30Rnd_556x45_StanagSD

Granate: 1Rnd_HE_M203

Flares: FlareWhite_M203FlareGreen_M203 FlareRed_M203FlareYellow_M203

M249 M249 SAW Magazin: 20Rnd_556x45_Stanag30Rnd_556x45_Stanag200Rnd_556x45_M24930Rnd_556x45_StanagSD

M240 M240 Magazin: 100Rnd_762x51_M240G36a

G36C

G36K

G 36 – Standard

G 36 - Kommando

G 36 – Kommando II

Magazin: 30Rnd_556x45_G36

M24 Scharfschützengewehr Magazin: 5Rnd_762x51_M24M107 Scharfschützengewehr Magazin: 10Rnd_127x99_M107MP5A5

MP5SD

MP5 - StandardMP5 -Schalldämpfer

Magazin: 30Rnd_9x19_MP530Rnd_9x19_MP5SD

M9M9SD

Pistole

Pistole - Schalldämpfer

Magazin: 15Rnd_9x19_M915Rnd_9x19_M9SD

M136 M136 - Panzerfaust Magazin: M136

Javelin Javelin - Panzerfaust Magazin: JavelinStinger Stinger - Fliegerfaust Magazin: Stinger

3.2 - Die Waffenbezeichnungsliste

Page 68: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Osten

Ausrüstung

69

Waffenklasse Bezeichnung MunitionAK74 AK 74 Magazin: 30Rnd_545x39_AKAK74GL AK 74

mit GranatwerferMagazin: 30Rnd_545x39_AK

Granate: 1Rnd_HE_GP25

Flares: FlareWhite_GP25FlareGreen_GP25 FlareRed_GP25FlareYellow_GP25

AKS74UAKS74UN

AKS 74 U - StandardAKS74UN - Schalldämpfer

Magazin: 30Rnd_545x39_AK30Rnd_545x39_AKSD

AKS74PSO AKS74 - Zielfernrohr Magazin: 30Rnd_545x39_AK AK74PSOPK MG Magazin: 100Rnd_762x54_PKKSVK Scharfschützengewehr Magazin: 5Rnd_127x108_KSVK

SVD Scharfschützengewehr Magazin: 10Rnd_762x54_SVD

MakarovMakarovSD

PistolePistole - Schalldämpfer

Magazin: 8Rnd_9x18_Makarov8Rnd _9x18_MakarovSD

6G30 Granatwerfer Magazin: 6Rnd_HE_6G30RPG7V Panzerfaust Magazin: RPG7V

Strela Fliegerabwehr Magazin: Strela

Waffenklasse Bezeichnung MunitionHandgrenade Handgranate HandgrenadeHandGrenadeTimed Handgranate (zeitverzögert) HandGrenadeTimedGrenade Granate GrenadeTimeBomb Zeitbombe TimeBombPipeBomb Sprengsatz PipeBombSmokeShell Weiße Rauchgranate SmokeShellSmokeShellRed Rote Rauchgranate SmokeShellRedSmokeShellGreen Grüne Rauchgranate SmokeShellGreenMine Panzermine MineMineE Schützenmine MineEBinocular Fernglas BinocularNVgoggles Nachsichtgerät NVgogglesLaserDesignator Lasermarkiergerät LaserBatteriesCarHorn Autohupe CarHornSportCarHorn Sportautohupe SportCarHornTruckHorn Lkw-Hupe TruckHornBikeHorn Fahrradklingel BikeHorn

Kap

itel 3

Page 69: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Sämtliche Einheiten aus Armed Assault lassen sich be- bzw. entwaffnen. Dazu muss manwissen, dass eine Einheit immer nur ein Gewehr tragen kann. Als zweite große Waffe kannmaximal eine Panzer- oder Flugabwehrwaffe mitgeführt werden. Man kann einer Einheitalso erst eine Waffe zuteilen, wenn man zuvor eine andere entfernt hat. Diese kann mandabei einzeln oder auch komplett entfernen.

Mit folgender Syntax entfernt man eine einzelne Waffe:

this removeWeapon "M4" oder Name removeWeapon "M4"

Die Magazine, Handgranaten usw. bleiben dabei weiterhin vorhanden. Würde man dieserEinheit nun eine Waffe zuweisen, die die gleichen Magazine benötigt, wäre diese gleichzu Anfang geladen, was nicht immer so ist. Wenn man nämlich mit dem Befehl

removeAllWeapons Name

arbeitet, werden der Einheit alle Waffen und alle Magazine abgenommen. Wenn mandiese Einheit nun bewaffnen möchte, muss man eine gewisse Reihenfolge beachten, dadie Waffe sonst zu Missionsbeginn nicht geladen sein wird. Man gibt zuerst die Magazineund erst zuletzt die Waffe an! Nachdem man bei der Einheit nun das M4 entfernt hat,weist man ihr mit dieser Syntax eine neue zu:

this addWeapon "M4A1SD" oder Name addWeapon "M4A1SD";

Die Eintragungen kann man in der Initzeile der jeweiligen Einheit oder auch woandersvornehmen. Als Beispiel in Skripten, Auslösern oder Wegpunkten.

Zum Entfernen eines Magazins gilt diese:

this removeMagazine "30Rnd_556x45_Stanag"

und zum zuweisen eines neuen Magazins diese Syntax:

this addMagazine "30Rnd_556x45_StanagSD"

Möchte man alle oder nur einige Magazine entfernen, kann man auch folgende Syntaxnutzen. Dabei gelten wieder alle werte zwischen 0 und 1.

Name setVehicleAmmo 0.5

Natürlich treffen diese Befehle nicht nur auf die Waffen, sondern auch auf die nötigeAusrüstung zu. Der normale Soldat trägt in der Regel kein Fernglas oder Nachtsichtgerätbei sich. Da aber ein Fernglas in den Weiten von Sahrani sehr von Vorteil wäre und auchein Nachtsichtgerät in dunkler Nacht den notwendigen Durchblick verleiht, gibt man inder Initzeile der Einheit die jeweils aufgeführte Syntax an.

für das Fernglas this addWeapon "Binocular";

und für das Nachsichtgerät this addWeapon "NVGoggles";

70

3.3 - Einheiten bewaffnen und ausrüsten

Page 70: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Alle Waffen- und Munitionskisten lassen sich individuell, also je nach Bedarf, ausstatten.Dabei ist es vollkommen egal, ob man Waffen und Munition in eine oder verschiedeneKisten packt. Um eine Waffen- bzw. Munitionskiste selbst zu definieren, muss man diesezunächst entleeren. Das macht man mit:

clearWeaponCargo this oder clearWeaponCargo NameclearMagazineCargo this oder clearMagazineCargo Name

Diese Einträge nimmt man in der Initzeile der jeweiligen Kiste vor, ist aber auch inBereichen wie Skripten, Auslösern usw. möglich. Nachdem die Kiste nun entleert wurde,fügt man die Waffen und Ausrüstung hinzu, welche die Kiste später enthalten soll. Fürthis kann auch jeweils der Name der Kiste angegeben werden.

Im folgenden Beispiel wird eine Kiste mit 2 schallgedämpften M4A1, den dazu passenden10 Magazinen und 6 Handgranaten beladen.

this addWeaponCargo ["M4A1SD",2]; this addMagazineCargo ["30Rnd_556x45_StanagSD",10]; this addMagazineCargo ["Handgrenade",6];

Tipp! Auch Fässer lassen sich mit Waffen und Munition befüllen. Dort wird das gleicheVerfahren, wie bei den Munitionskisten verwendet, nur dass man die Fässer eben vorhernicht mit den Clearbefehlen leeren muss.

Viele Fahrzeuge in Armed Assault sind bereits mit Magazinen, Handgranaten undähnlichem beladen. Man hat dort also auch dort als Soldat jederzeit die Möglichkeit sichneu zu bewaffnen. Natürlich kann man die Fahrzeuge im Editor auch selbst mitMagazinen und Waffen bestücken. Hierzu wird das gleiche Verfahren, wie bei denMunitionskisten verwendet. Das Entladen erfolgt wieder mit:

clearWeaponCargo this

clearMagazineCargo this

und das Beladen mit der jeweiligen Syntax:

this addWeaponCargo ["M4A1SD",2];

this addMagazineCargo ["30Rnd_556x45_StanagSD",10];

Hier wurden nun 2 schallgedämpfte M4A1 Sturmgewehre mit den dazugehörigenMagazintypen, hier 10 Magazine, in das Fahrzeug geladen.

71

Kap

itel 3

3.4 - Die Waffen- und Munitionskiste

3.5 - Fahrzeuge be- und entladen

Page 71: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Als Leader einer Mehrspielergruppe hat der Spieler später über das Briefing in der Missiondie Möglichkeit sich und seine Gruppe selbst auszustatten, vorausgesetzt man hat diesvorher so in der Description.ext, siehe Kapitel 2.3, vordefiniert.

Dazu muss eine Klasse für die jeweilige Waffe und eine Klasse für die dazugehörigeMagazinsorte vordefiniert werden. Im folgenden Beispiel wurden 6 schallgedämpfteM4A1 mit 20 dazugehörigen Magazinen, 2 M136 Panzerfäuste mit 6 Schuss und dazunoch 20 Handgranaten festgelegt.

Die Art der Waffe

Die Anzahl der Waffen

Die Art der Waffe

Die Anzahl der Waffen

Die Art der Magazine

Die Anzahl der Magazine

Die Art der Magazine

Die Anzahl der Magazine

Die Art der Waffe

Die Anzahl der Magazine

Möchte man die Waffenauswahl erweitern, fügt man lediglich die jeweilige Klasse derWaffe und die Klasse der Magazine selbst in diesen Abschnitt der Description.ext ein.

72

// Hier beginnt der Part Class Weaponsclass Weapons{

class M4A1SD{count = 6; }; class M136{count = 2;};

};// Hier endet der Part Class Weapons

// Hier beginnt der Part Class Magazinesclass Magazines{

class 30Rnd_556x45_StanagSD{count = 20;};class M136{count = 6;};class HandGrenade{count = 20;};

};// Hier endet der Part Class Magazines

3.6 - Waffenauswahl im Briefing

Page 72: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

WESTEN

73

Fahrzeug Beschreibung KlassennameLand

M1Abrams Kampfpanzer M1AbramsM113 Schützenpanzer M113M113Ambul Sanitätsschützenpanzer M113AmbulM113 Mobile HQ M113 - Mobiles Hauptquartier (Warfare) M113_MHQVulcan Flugabwehrpanzer VulcanStryker ICV M2 Schützenpanzer mit M2-Maschinengewehr Stryker_ICV_M2Stryker ICV MK19 Schützenpanzer mit Granatwerfer Stryker_ICV_MK19Stryker TOW Schützenpanzer mit Panzerabwehrwaffe Stryker_TOW HMMWV Hummer HMMWVHMMWV M2 Hummer mit M2 HMMWV50HMMWV TOW Hummer mit Panzerabwehrwaffe HMMWVTOWHMMWV MK 19 Hummer mit Granatwerfer HMMWVMKTruck 5 t Lkw 5 Tonner Truck5tTruck 5 t Open Lkw 5 Tonner - offen Truck5tOpenTruck 5 t MG Lkw 5 Tonner mit Maschinengewehr Truck5tMGTruck 5 t Repair Lkw 5 Tonner - Reparaturfahrzeug Truck5tRepairTruck 5 t Reammo Lkw 5 Tonner - Munitionsfahrzeug Truck5tReammoTruck 5 t Refuel Lkw 5 Tonner - Tankfahrzeug Truck5tRefuel

Truck 5 t Ammo Truck Lkw 5 Tonner - Munitionsfahrzeug (Warfare) WarfareTruck5tReammo

Truck 5 t Supply Lkw 5 Tonner - Transporter (Warfare) WarfareWestSupplyTruck

Truck 5 t Salvage Lkw 5 Tonner - Bergungsfahrzeug(Warfare) WarfareWestSalvageTruck

Motorcycle Motorrad M1030

LuftAH 1 Z Cobra-Kampfhubschrauber AH1WAH 6 Little Bird Helikopter bewaffnet AH6AV 8 B Harrier mit Raketen AV8B2AV 8 B (GBU) Harrier mit Bomben AV8BA10 A10 mit Raketen und GAU12 A10MH 6 Little Bird Helikopter unbewaffnet MH6UH 60 Blackhawk - Helikopter mit MG UH60MGUH 60 (FFAR) Blackhawk - Helikopter mit Raketenwerfer UH60Camel Doppeldecker CamelParachute Fallschirm ParachuteWest

WasserCRRC Schlauchboot ZodiacRHIB Patrouillenboot mit Maschinengewehr RHIBRHIB 2 Turret Patrouillenboot mit MG und Granatwerfer RHIB2Turret

3.7 - Die Fahrzeugklassen

Kap

itel 3

Page 73: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

OSTEN

74

Fahrzeug Beschreibung KlassennameLand

T72 Kampfpanzer T72 BMP2 Schützenpanzer BMP2BMP2Ambulance Sanitätsschützenpanzer BMP2AmbulBMP2 Mobile HQ BMP2 - Mobiles Hauptquartier (Warfare) BMP2_MHQZSU Shilka Flugabwehrpanzer ZSUBRDM2 Schützenpanzer BRDM2BRDM2_ATGM Schützenpanzer mit Panzerabwehrwaffe BRDM2_ATGM UAZ Jeep UAZUAZMG Jeep mit Maschinengewehr UAZMGUral Lkw UralUral Open Lkw - offen UralOpenUral Repair Lkw - Reparaturfahrzeug UralRepairUral Reammo Lkw - Munitionsfahrzeug UralReammoUral Refuel Lkw - Tankfahrzeug UralRefuelUral Ammo Lkw - Munitionsfahrzeug (Warfare) WarfareUralReammoUral Supply Lkw - Transporter (Warfare) WarfareEastSupplyTruckUral Salvage Lkw - Bergungsfahrzeug (Warfare) WarfareEastSalvageTruckMotorcycle Motorrad TT650GDatsun DshKm - 1 Pick-up mit schwerem MG DATSUN_DSHKM1

Datsun DshKm - 2 Pick-up mit schwerem MG DATSUN_DSHKM2

Datsun Pk -1 Pick-up mit MG DATSUN_PK1

Datsun Pk -2 Pick-up mit MG DATSUN_PK2

Hilux DshKm - 1 Pick-up mit schwerem MG HILUX_DSHKM1

Hilux DshKm - 2 Pick-up mit schwerem MG HILUX_DSHKM2

Hilux Pk -1 Pick-up mit MG HILUX_PK1

Hilux Pk -2 Pick-up mit MG HILUX_PK2

LuftSU 34 SU 34 mit Raketen, FFAR, Bordkanone SU34SU 34B SU 34 mit Raketen und Bordkanone SU34BMi 17 Helikopter mit Maschinengewehr Mi17_MGMi 17 Helikopter mit Raketenwerfer Mi17KA-50 Kampfhubschrauber KA50Camel E Doppeldecker Camel2Parachute Fallschirm ParachuteEast

WasserPBX Boat Schlauchboot PBX

Page 74: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

WIDERSTAND

ZIVILISTEN

75

Fahrzeug Bemerkung KlassennameLand

Pick-Up Pick-Up blau Datsun1_civil_1_openPick-Up 2 Pick-Up rot geschlossen Datsun1_civil_2_coveredPick-Up 3 Pick-Up grün Datsun1_civil_3_openOffroad Geländewagen grau offen Hilux1_civil_1_openOffroad2 Geländewagen rotes Verdeck Hilux1_civil_3_openOffroad3 Geländewagen weiß offen Hilux1_civil_2_coveredSedan Auto weiß Car_sedanHatchback Auto rot Car_hatchbackSkoda Skoda weiß SkodaSkoda (Blue) Skoda blau SkodaBlueSkoda (Red) Skoda rot SkodaRedSkoda (Green) Skoda grün SkodaGreenPolicecar Polizeijeep Landrover_PoliceHMMWV (Civil) HMMWV (Zivil) HMMWV_civilBus Stadtbus Bus_cityUralCivil Lkw gelb geschlossen UralCivilUralCivil 2 Lkw blau geöffnet UralCivil2Traktor Traktor TractorMotorcycle Motorrad TT650C

LuftParachute Fallschirm ParachuteCParachute Leerer Fallschirm ParachuteDC3 DC3 DC3

Kap

itel 3

Fahrzeug Beschreibung KlassennameLand

T72 RACS Kampfpanzer T72_RACSM113 RACS Schützenpanzer M113_RACSVulkan RACS Flugabwehrpanzer Vulcan_RACS4x4 Jeep geschlossen Landrover4x4 MG Jeep mit Maschinengewehr M2 LandroverMG4x4 Open Jeep offen Landrover_Closed

LuftAH6 RACS Kampfhubschrauber AH6_RACSMH6 RACS Little Bird MH6_RACSUH60 (FFAR) RACS UH-60 (FFAR) RACS UH60RACSUH-60 RACS UH-60 RACS UH60MGRACSParachute Fallschirm ParachuteG

WasserCRRC Schlauchboot Zodiac2

Page 75: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

76

LuftFahrzeug Waffe MagazinUH60 Black Hawk MG M134 200Rnd_762x51_134UH60 Black Hawk FFAR FFARLauncher 38Rnd_FFARAH 1 Supercobra HellfireLauncher

FFARLauncher8Rnd_Hellfire38Rnd_FFAR

AH6 Littlebird FFAR, MG M197TwinM134FFARLauncher

750Rnd_M197_AH14000Rnd_762x51_M13414Rnd_FFAR

AV-8B Harrier GAU12SidewinderLauncher

300Rnd_25mm_Gau124Rnd_Sidewinder_AV8B

AV-8B Harrier GBU BombLauncherGAU12

5Rnd_GBU12_AV8B300Rnd_25mm_Gau12

A10 MaverickLauncherGAU8

5Rnd_Maverick_A101350Rnd_30mmAP_A10

Camel TwinVickersCamelGrenades

500Rnd_TwinVickers6Rnd_Grenade_Camel

KA-50 2A42

80mmLauncherVikhrLauncher

230Rnd_30mmHE_2A42230Rnd_30mmAP_2A4240Rnd_80mm12Rnd_Vikhr_KA50

MI-17 MG PKT 2000Rnd_762x54_PKTMI-17 FFAR 57mmLauncher 96Rnd_57mmSU 34 R73Launcher

S8LauncherGSh301

4Rnd_R7342Rnd_S8T180Rnd_30mm_GSh301

SU 34 B Ch29LauncherGSh301

6Rnd_Ch29180Rnd_30mm_GSh301

Land/WasserBMP 2 2A42

PKTAT5Launcher

250Rnd_30mmHE_2A42250Rnd_30mmAP_2A422000Rnd_762x54_PKT8Rnd_AT5_BMP2

BRDM 2 KPVTPKT

500Rnd_145x115_KPVT150Rnd_762x54_PKT

BRDM 2 ATGM AT5Launcher 5Rnd_AT5_BRDM2M113 MTW M2 100Rnd_127x99_M2M113 Vulcan M168 2100Rnd_20mm_M168M1A2 Abrahams M256

M240_Veh

20Rnd_120mmSABOT_M1A220Rnd_120mmHE_M1A21200Rnd_762x51_M240

T72, T72Racs D81 23Rnd_125mmSABOT_T7223Rnd_125mmHE_T72

Shilka AZP85 2000Rnd_23mm_AZP85Stryker ATGM TOWLauncher 2Rnd_TOWStryker ICV MG M2 100Rnd_127x99_M2Stryker MK19 MK19 48Rnd_40mm_MK19HMMWV TOW TOWLauncherSingle 6Rnd_TOW_HMMWVHMMWV MK19 MK19 48Rnd_40mm_MK195to LKW MG M2 100Rnd_127x99_M2UAZ AGS 30 AGS30 29Rnd_30mm_AGS30UAZ MG DSHKM 50Rnd_127x107_DSHKMArmy 4x4 M2 M2 100Rnd_127x99_M2RHIB M2 100Rnd_127x99_M2

3.8 - Die Fahrzeugwaffen

Page 76: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

WESTEN

77

3.9 - Die Einheitsklassen

Kap

itel 3

Einheit Beschreibung KlassennameAA Specialist Fliegerabwehrsoldat mit Stinger SoldierWAAAT Specialist Panzerabwehrsoldat mit M136 SoldierWATAutomatic Rifleman MG-Schütze mit M249 SoldierWARCamel Pilot Doppeldecker Pilot mit M9 BISCamelPilotCrewman Fahrzeugbesatzung mit M4A1 SoldierWCrewEngineer Pionier mit M4 AIM SoldierWMinerGrenadier Grenadier mit M4 203 SoldierWGMachinegunner MG-Schütze mit M240 SoldierWMGMedic Sanitätssoldat mit M4 AIM SoldierWMedicOfficer Offizier mit M9 OfficerWPilot Pilot mit M4A1 SoldierWPilotRifleman Schütze mit M4AIM SoldierWBRifleman Schütze mit M4AIM SoldierWNOGSF Assault Special Forces mit M4A1GL SoldierWSaboteurAssaultSF Marksman Special Forces mit M4 SPR SoldierWSaboteurMarksmanSF Recon Special Forces mit M4 A1 SD SoldierWSaboteurReconSF Saboteur Special Forces mit M4 A1 SD SoldierWSaboteurPipeSF Saboteur 2 Special Forces mit MP 5 SD SoldierWSaboteurPipe2Sniper Scharfschütze mit M24 SoldierWSniperSquad Leader Zugführer mit M4 AIM SquadLeaderWTeam Leader Gruppenführer mit M4 AIM TeamLeaderWPrisoner Gefangener ohne Waffe SoldierWCaptiveUSMC Fire Team Leader Gruppenführer M16A4 ACOG GL USMCD_Soldier_TLUSMC Machinegunner MG-Schütze mit M240 USMCD_Soldier_MGUSMC AASpecialist Fliegerabwehrsoldat mit Stinger USMCD_Soldier_AAUSMC Rifleman Schütze mit M16A4 USMCD_Soldier_RUSMC Rifleman (GL) Schütze mit M16A4 ACOG GL USMCD_Soldier_GLUSMC Rifleman (Mines) Schütze mit M16A4 und Minen USMCD_Soldier_EngineerUSMC Rifleman (M136) Panzerabwehrsoldat mit M136 USMCD_Soldier_ATUSMC Corpsman Sanitätssoldat mit M4 AIM USMCD_Soldier_MedUSMC Squad Leader Zugführer mit M16A4 ACOG USMCD_Soldier_SLUSMC Automatic Rifleman MG-Schütze mit M249 USMCD_Soldier_ARUSMC AT Specialist (Javelin) Panzerabwehrsoldat mit Javeline USMCD_Soldier_HATUSMC Sniper Scharfschütze mit M24 USMCD_Soldier_SniperUSMC Spotter Schütze mit M16A4 ACOG USMCD_Soldier_Spotter(WDL) Rifleman Schütze mit M16A4 (WDL) US_Soldier_WDL(WDL) Medic Sanitäter mit M16A4 (WDL) US_Soldier_WDL_Med(WDL) Grenadier Schütze mit M16A4 RCO GL (WDL) US_Soldier_WDL_GL(WDL) AT Specialist Panzerabwehrsoldat mit M136 (WDL) US_Soldier_WDL_AT(WDL) AA Specialist Fliegerabwehrsoldat mit Stinger (WDL) US_Soldier_WDL_AA(WDL) Machinegunner MG-Schütze mit M240 (WDL) US_Soldier_WDL_MG(WDL) Engineer Schütze mit M16A4 und Minen (WDL) US_Soldier_WDL_Engineer(WDL) Designated Marksman Scharfschütze mit M24 (WDL) US_Soldier_WDL_Sniper(WDL) Automatic Rifleman MG-Schütze mit M249 (WDL) US_Soldier_WDL_AR(WDL) Team Leader Gruppenführer mit M4 AIM (WDL) US_Soldier_WDL_TL(WDL) Squad Leader Zugführer mit M16A4 ACOG (WDL) US_Soldier_WDL_SLMercenary Team Leader Söldner Anführer SoldierMTeamLeaderMercenary Grenadier Söldner Grenadier SoldierMGMercenary Machinegunner Söldner MG SoldierMMGMercenary Engineer Söldner Reparatur SoldierMRMercenary Sniper Söldner Sniper SoldierMSMercenary Saboteur Söldner Sprengcommando SoldierMD

Page 77: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

OSTEN

WIDERSTAND

78

Einheit Beschreibung KlassennameAA Specialist Fliegerabwehrsoldat mit Stinger SoldierGAAAT Specialist Panzerabwehrsoldat mit M136 SoldierGATCrewman Fahrzeugbesatzung SoldierGCrewEngineer Pionier SoldierGMinerGrenadier Grenadier SoldierGGMachinegunner Soldat mit Maschinengewehr M240 SoldierGMGMedic Sanitätssoldat SoldierGMedicOfficer Offizier Officer GPilot Pilot SoldierGPilotRifleman Soldat mit M16 A2 SoldierGBRifleman Soldat mit M16 A2 SoldierGNOGRoyal Commando Königliches Kommando mit MP 5 SD SoldierGCommandoRoyal Guard Königliche Garde mit G36c SoldierGGuardRoyal Marksman Königlicher Scharfschütze mit G36a SoldierGMarksmanSniper Scharfschütze mit M24 SoldierGSniperSquad Leader Zugführer SquadLeaderTeam Leader Gruppenführer TeamLeaderPrisoner Gefangener SoldierGCaptiveSpy Spion SoldierSpy

Einheit Beschreibung KlassennameAA Specialist Fliegerabwehrsoldat mit Strela SoldierEAAAT Specialist Panzerabwehrsoldat mit RPG 7 V SoldierEATCamel Pilot Doppeldecker Pilot BISCamelPilot2Crewman Fahrzeugbesatzung SoldierECrewEngineer Pionier SoldierEMinerEspecas Speznaz mit AKS 74 U SoldierESaboteurPipeEspecas Marksman Speznaz mit AKS74PSO SoldierESaboteurMarksmanEspecas Saboteur Speznaz mit AKS 74 UN SoldierESaboteurBizonGrenadier Grenadier SoldierEGMachinegunner Soldat mit Maschinengewehr PK SoldierEMGMedic Sanitätssoldat SoldierEMedicRifleman Soldat mit AK-74 SoldierEBRifleman Soldat mit AK-74 SoldierENOG Officer Offizier OfficerEPilot Pilot SoldierEPilotSniper Scharfschütze mit Dragunov (SVD) SoldierESniperSquad Leader Zugführer SquadLeaderETeam Leader Gruppenführer TeamLeaderEPrisoner Gefangener SoldierECaptivePartisan Team Leader Partisane Anführer SoldierPTeamLeaderPartisan AT Specialist Partisane PzAbw SoldierPATPartisan Saboteur Partisane Saboteur SoldierPSaboteurPartisan Machinegunner Partisane MG SoldierPMGPartisan Medic Partisane Sanitäter SoldierPMedicPartisan Rifleman Partisane Schütze SoldierPB

Page 78: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

ZIVILISTENEinheiten, die hier mit N/A angegeben sind, sind im Editor selbst nicht verfügbar. Diesekann man, wie in Kapitel 5.45 erläutert, mit dem CreateVehicle-Befehl erzeugen.

INSEKTEN

79

Typ Beschreibung KlassennameN/A Möwe SeagullN/A Libelle DragonflyN/A Hausfliege HouseFlyN/A Honigbiene HoneybeeN/A Mosquito MosquitoN/A Schmetterling Butterfly

Kap

itel 3

Einheit Beschreibung KlassennameCivilian bis Civilian21 Nähere Beschreibung nicht erforderlich.

Durchnummeriert von Civilian bis Civilian21

Civilian

Civilian Man Zivilist mit roter Mütze D2_RCM03_Civilian1Civilian Man Zivilist mit Rockershirt D2_RCM03_Civilian2King König KingWar Correspondent Kriegsberichterstatter FieldReporterBodyguard Leibwächter AnchormanPrime Minister Premierminister NorthPrimeMinisterReporter (Female) Reporterin MarianQuandtReporter (Female) Reporterin MarianQuandt02Reporter (Female) Reporterin MarianQuandt03Reporter (Female) Reporterin MarianQuandt04Zombie Zombie Civil_Undead_1Zombie Zombie Civil_Undead_2Zombie Zombie Civil_Undead_3Zombie Zombie Civil_Undead_4Prisoner 1 Gefangener 1 Prisoner01Prisoner 2 Gefangener 2 Prisoner02Prisoner 3 Gefangener 3 Prisoner03Prisoner 4 Gefangener 4 Prisoner04Prisoner 5 Gefangener 5 Prisoner05Prince (civil) Prinz(Zivil) Prince_civilPrince (Army) Prinz(Armee) Prince_armyPrince (Partisan) Prinz(Partisane) Prince_resistanceChancellor Kanzler ChancellorAdjutant (Uniform) Adjutant(Uniform) AdjutantUniformAdjutant (Prisoner) Adjutant(Gefangener) AdjutantPrisonerArms trader Waffenhändler ArmsTraderSLA President SLA Präsident civil_nprem2SLA President SLA Präsident civil_nprem2_NoGeom

Page 79: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Hier eine Auswahl von Shellklassen. Shells sind die Geschosse der einzelnen Waffen. Mitihnen kann man die verschiedensten Dinge umsetzen. Zum Beispiel eine Explosionerzeugen oder anderen Beschuss simulieren. Diese könne ganz einfach, wie in Kapitel5.45/5.46 erläutert mit dem CreateVehicle-Befehl erzeugt werden. Als Beispiel:

Bombe="SH_125_HE" createVehicle [x,y,z]Bombe="SH_125_HE" createVehicle position Player

80

GeschosstypenB_9x18_Ball B_9x18_SD B_9x19_Ball B_9x19_SDB_127x108_BallB_127x99_Ball_noTracerB_545x39_Ball B_545x39_SD B_556x45_Ball B_556x45_SD B_762x51_Ball B_762x54_Ball

B_762x54_noTracerB_77x56_Ball B_127x99_Ball B_127x107_Ball B_145x115_AP B_20mm_AP B_20mm_AA B_23mm_AA B_25mm_HE B_30mm_AP B_30mm_HEB_30mmA10_AP

Raketen- und GranattypenR_Hydra_HE R_57mm_HE R_80mm_HE R_M136_ATR_PG7V_ATR_KSVKR_PG7VR_ATM_Javelin_ATM_Stinger_AAM_Strela_AAM_AT5_AT´

M_Sidewinder_AAM_TOW_AT M_Hellfire_AT M_Maverick_ATM_Vikhr_ATBO_GBU12_LGBSH_125_HESH_120_HESH_122_HESH_105_HEG_40mm_HE_6G30

SonstigesKlassenname BezeichnungFxExploGround1 FxExploGround2FxExploArmor1FxExploArmor2FxExploArmor3FxExploArmor4FxCartridge BombLaserTargetWLaserTargetELaserTargetC

SteinbrockenSteinbrockenSplitter Splitter Splitter Splitter PatronenhülseSprengkopf (benötigt setDamage-Befehl)Laser Ziel WestLaser Ziel OstenLaser Ziel Zivil

3.10 - Die Shellklassen

Page 80: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

81

Kap

itel 3

Hier eine Auflistung verschiedener Objekte, welche man direkt oder auch nicht direkt imEditor setzen kann. Diese Objekte lassen sich nun ganz einfach per CreateVehicle-Befehl,wie in Kapitel 5.45 erläutert, an einer beliebigen Position auf der Karte erzeugen.

3.11 - Die Objekt- und Gebäudeklassen

Typ Beschreibung KlassennameA CampBmp2 WreckBarrelsBarrel (red)Barrel (brown)Barrel (yellow)Barrel (green rosty)Barrel (green rosty)Barrel (white purple)BodyBlackhawk WreckCameraCampCamp EmptyCamp EastCamp East CComputerDangerDangerWestDangerGUEDangerEASTDatsun Wreck 1Datsun Wreck 2Fence FireFireLitFlagCarrierWestFlagCarrierNorthFlagCarrierSouthFortress1Fortress2FenceWoodFenceWoodPaletJeepWreck1JeepWreck2JeepWreck3GraveGraveCross1GraveCross2 GraveCrossHelmetHeliHeli-H EmptyHeli-H CivilHeli-H RescueHilux WreckLand_ladderLand RadarObstacleTrainingTraining 2Training 3Carousel

Zelt (klein)Bmp2 WrackFässerFass rotFass brownFass gelbFass grün rostigFass grün rostigFass weiß-lilaLeicheHubschrauber WrackKamera auf DreibeinZelt (offen)Zelt (offen)Zelt Ost (offen)Zelt Ost (offen)ComputerWarnschildWarnschild WestenWarnschild Unabhängig (RACS)Warnschild Ost (SLA)Jeepwrack (Zivil)Jeepwrack (Zivil)EcksandsackFeuerFeuer (angezündet)Fahnenmast WESTFahnenmast OST (SLA)Fahnenmast Unabhängig (RACS)Festung 1 (klein)Festung 2 (groß)SandsackmauerSandsackmauer mit PaletteJeep Wrack 1Jeep Wrack 2Jeep Wrack 3GrabhügelGrab mit KreuzGrab mit Kreuz Grab mit Kreuz u. HelmHeli-HHeli-H UnsichtbarHeli-HZivil Heli-H RettungJeep Wrack (Zivil)LeiterRadarHindernisÜbungÜbung 2Übung 3Karussell

ACampBmp2WreckBarrelsBarrel1Barrel2Barrel3Barrel4Barrel5Barrel6BodyBlackhawkWreckCamera1CampCampEmptyCampEastCampEastCComputerDangerDangerWestDangerGUEDangerEASTDatsun01WreckDatsun02WreckFenceFireFireLitFlagCarrierWestFlagCarrierNorthFlagCarrierSouthFortress1Fortress2FenceWoodFenceWoodPaletJeepWreck1JeepWreck2JeepWreck3GraveGraveCross1GraveCross2 GraveCrossHelmetHeliHeliHEmpty Heli_H_CivilHeli_H_rescueHiluxWreckLand_ladderLand_radarLand_obihackaLand_podlejzackaLand_prolejzackaLand_prebehlavkaLand_kolotoc

Page 81: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

82

Typ Beschreibung KlassennameCarousel smallSwingProlezackaSandPitObstakleFuel Tank SmallFuel Tank BigFuel Tank LetterLand Water TankLand Water TankMASHM113 WreckPaleta1Paleta2RadioShedShed SmallShed BigTargetETargetEpopupWood tankTV StudioTV Studio (Building)TV Radio TowerTV Radio Tower GangwayUral WreckBale Of StrawClosetVysilackaWall MapRahmadiMapSleeping BagWireWire FenceBarrierAmmoBoxWestSpecialBoxWestWeaponBoxWestAmmoBoxEastSpecialBoxEastWeaponBoxEastAmmoBoxGuerSpecialBoxGuerWeaponBoxGuer Little ChurchBig ChurchMiddle ChurchMexican ChurchChurchHouseHouseHouseHouseHouseHouseHouseHouseHouseHouse

Kleines KarussellSwingKlettergerüstSandkasten3-Bein HindernisKleiner TreibstofftankGroßer TreibstofftankGroßer Treibstofftank mit LeiterWassertankWassertankFeldlazarettM113 WrackPalettePalettenRadioTarnnetz (klein)Tarnnetz (groß)Unterstand (groß)ZielscheibendummyZielscheibendummy (Popup)HolzpanzerFernsehstudioFernsehstudio (Gebäude)TV-SendeturmTV-SendeturmverbindungUral WrackStrohballenDixikloFunkgerätLandkarteLandkarte RahmadiSchlafsackStacheldrahtDrahtzaunSchrankeMunitionskiste WestGemischte Kiste WestWaffenkiste WestMunitionskiste OstGemischte Kiste OstWaffenkiste OstMunitionskiste RacsGemischte Kiste RacsWaffenkiste Racs Kleine KircheGroße KircheMittlere KircheKirche (mexikanisch)KapelleHafenhaus HafenhausWohnhausWohnhausWohnhausWohnhausWohnhausWohnhausWohnhausWohnhaus (begehbar)

Land_maly_kolotocLand_houpackaLand_kulata_prolezackaLand_PiskovisteLand_jezekbetonLand_fuel_tank_smallLand_fuel_tank_bigLand_fuel_tank_stairsLand_water_tankLand_water_tank2MASHM113WreckPaleta1Paleta2RadioShedShedSmallShedBigTargetETargetEpopupTargetGrenadeTVStudioLand_Vysilac_budovaLand_Vysilac_vezLand_Vysilac_chodbaUralWreckVec03Land_ToiletVysilackaWallMapRahmadiMapLand_SleepingBagWireWireFenceZavoraAnimAmmoBoxWestSpecialBoxWestWeaponBoxWestAmmoBoxEastSpecialBoxEastWeaponBoxEastAmmoBoxGuerSpecialBoxGuerWeaponBoxGuerLand_kostelLand_kostel2Land_kostel3Land_kostel_mexicoLand_kostelikLand_sara_domek01Land_sara_domek02 Land_sara_domek05Land_sara_zluty_statek_inLand_sara_Domek_sedyLand_dum_mesto2Land_sara_domek_sedy_bezLand_sara_domek_rosaLand_sara_zluty_statekLand_sara_domek_zluty

Page 82: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 3

83

Typ Beschreibung KlassennameHouseHouseHouseblock (small)Houseblock (middle)Houseblock (big)HotelHotelruinHoliday-InHoliday-InHoliday-In-RuinHoliday-In-RuinWeekend FlatHouse (Oriental)House (Oriental)House (Oriental)House (Oriental)House (Oriental/Open)House (Oriental/Open)House (Oriental)House (Oriental)House (Oriental)House (Oriental)House (Oriental)House (Oriental/Open)House (Oriental)House (Oriental)House (Oriental)House (Oriental)Tall House (Oriental)Tall House (Oriental)Tall House (Oriental)Tall House (Oriental)Tall House (Oriental)HouseHouseHouseHouseHouseHouseHouseHouse (Classic)Little HouseOld HouseRed HouseRed HouseRed HouseCity House (yellow)HouseHouseHouseHouseHouseHouseHouseHouseHouseHouseHouseblock (small)Houseblock (middle)

WohnhausWohnhausWohnblock (klein)Wohnblock (mittel)Wohnblock (groß)HotelHotelruineFerienanlageFerienanlageFerienanlagenschutthaufenFerienanlagenschutthaufenWochenendhausHaus (orientalisch)Haus (orientalisch)Haus (orientalisch)Haus (orientalisch)Haus (orientalisch/begehbar)Haus (orientalisch /begehbar)Haus (orientalisch)Wohnanlage (orientalisch)Haus (orientalisch)Haus (orientalisch)Haus (orientalisch)Haus (orientalisch/begehbar)Haus (orientalisch)Haus (orientalisch)Haus (orientalisch)Haus (orientalisch)Hochhaus (orientalisch)Hochhaus (orientalisch)Hochhaus (orientalisch)Hochhaus (orientalisch)Hochhaus (orientalisch)HausHausHausHausHausHausHausHaus (klassisch)Kleines HausAltes HausBacksteinhaus BacksteinhausBacksteinhausStadthaus (gelb)WohnhausWohnhausWohnhausWohnhausWohnhausWohnhausWohnhausWohnhaus (begehbar)WohnhausWohnhausWohnblock (klein)Wohnblock (mittel)

Land_sara_domek_zluty_bezLand_OrlHotLand_PanelakLand_Panelak2Land_Panelak3Land_HotelLand_Hotel_ruinsLand_hotel_riviera1Land_hotel_riviera2Land_hotel_riviera1_ruinsLand_hotel_riviera2_ruinsLand_house_yLand_dum_olez_istan1Land_dum_olez_istan2Land_dum_olez_istan2_malyLand_dum_olez_istan2_maly2Land_dum_istan2Land_dum_istan2bLand_dum_istan2_01Land_dum_istan2_02Land_dum_istan2_03Land_dum_istan2_03aLand_dum_istan2_04aLand_dum_istan3Land_dum_istan3_hromadaLand_dum_istan3_hromada2Land_dum_istan3_pumpaLand_dum_mesto3_istanLand_dum_istan4Land_dum_istan4_bigLand_dum_istan4_big_inverseLand_dum_istan4_detaily1Land_dum_istan4_inverseLand_dumruinaLand_dumruina_miniLand_sara_domek_kovarnaLand_dum_rasovnaLand_Statek_kulnaLand_staniceLand_ryb_domekLand_statek_hl_budLand_bouda1Land_sara_domek_ruinaLand_cihlovej_dum Land_cihlovej_dum_inLand_cihlovej_dum_miniLand_kasarna_rohovaLand_sara_domek05Land_sara_zluty_statek_inLand_sara_Domek_sedyLand_dum_mesto2Land_sara_domek_sedy_bezLand_sara_domek_rosaLand_sara_zluty_statekLand_sara_domek_zlutyLand_sara_domek_zluty_bezLand_OrlHotLand_PanelakLand_Panelak2

Page 83: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

84

Typ Beschreibung KlassennameHouseblock (big)HotelHotelruinHoliday-InHoliday-InHoliday-In-RuinHoliday-In-RuinWeekend FlatHouse (Oriental)House (Oriental)House (Oriental)House (Oriental)House (Oriental/Open)House (Oriental/Open)House (Oriental)House (Oriental)House (Oriental)House (Oriental)House (Oriental)House (Oriental/Open)House (Oriental)House (Oriental)House (Oriental)House (Oriental)Tall House (Oriental)Tall House (Oriental)Tall House (Oriental)Tall House (Oriental)Tall House (Oriental)HouseHouseHouseHouseHouseHouseHouseHouse (Classic)Little HouseOld HouseRed HouseRed HouseRed HouseCity House (yellow)City House (yellow)City House (yellow)City House (yellow)PubBuildingLandhouseLandhouseLandhouseLandhouseCity House (Classic)City House (Classic)House with HouseHouse (long)House (flat)Big House

Wohnblock (groß)HotelHotelruineFerienanlageFerienanlageFerienanlagenschutthaufenFerienanlagenschutthaufenWochenendhausHaus (orientalisch)Haus (orientalisch)Haus (orientalisch)Haus (orientalisch)Haus (orientalisch/begehbar)Haus (orientalisch /begehbar)Haus (orientalisch)Wohnanlage (orientalisch)Haus (orientalisch)Haus (orientalisch)Haus (orientalisch)Haus (orientalisch/begehbar)Haus (orientalisch)Haus (orientalisch)Haus (orientalisch)Haus (orientalisch)Hochhaus (orientalisch)Hochhaus (orientalisch)Hochhaus (orientalisch)Hochhaus (orientalisch)Hochhaus (orientalisch)HausHausHausHausHausHausHausHaus (klassisch)Kleines HausAltes HausBacksteinhaus BacksteinhausBacksteinhausStadthaus (gelb)Stadthaus (gelb)Stadthaus (gelb)Stadthaus (gelb)GaststätteAmtsgebäudeLandhausLandhausLandhausLandhausStadthaus (klassisch)Stadthaus (klassisch)EckhausHaus mit TorHaus (lang)Haus (flach)Großes Haus

Land_Panelak3Land_HotelLand_Hotel_ruinsLand_hotel_riviera1Land_hotel_riviera2Land_hotel_riviera1_ruinsLand_hotel_riviera2_ruinsLand_house_yLand_dum_olez_istan1Land_dum_olez_istan2Land_dum_olez_istan2_malyLand_dum_olez_istan2_maly2Land_dum_istan2Land_dum_istan2bLand_dum_istan2_01Land_dum_istan2_02Land_dum_istan2_03Land_dum_istan2_03aLand_dum_istan2_04aLand_dum_istan3Land_dum_istan3_hromadaLand_dum_istan3_hromada2Land_dum_istan3_pumpaLand_dum_mesto3_istanLand_dum_istan4Land_dum_istan4_bigLand_dum_istan4_big_inverseLand_dum_istan4_detaily1Land_dum_istan4_inverseLand_dumruinaLand_dumruina_miniLand_sara_domek_kovarnaLand_dum_rasovnaLand_Statek_kulnaLand_staniceLand_ryb_domekLand_statek_hl_budLand_bouda1Land_sara_domek_ruinaLand_cihlovej_dum Land_cihlovej_dum_inLand_cihlovej_dum_miniLand_kasarna_rohovaLand_kasarna_branaLand_kasarnaLand_kasarna_prujezdLand_hospoda_mestoLand_skolaLand_deutsheLand_deutshe_miniLand_domek_rosaLand_dum_m2Land_dum_mestoLand_dum_mesto_inLand_dum_mesto2lLand_dum_mesto3Land_dum_olezlinaLand_dum01Land_dum02

Page 84: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

85

Kap

itel 3

Typ Beschreibung KlassennameHouse with House with VillaConvent Building (Corner)Convent BuildingGarageGarageGarageBeach HutBeach HutBeach Hut (open)Beach HutBeach HutHoliday HutLittle HutLittle ShantyShelter (little)ShantyLatrineBig Barn (closed)Big Barn (open)Barn Barn (open)Barn (Closed)Barn (open)Old BarnBuilding (burned)Houseruin (burned)Houseruin (burned)Houseruin (burned)Pubruin (burned)HouseruinHouseruinHouseruinHouseruin (open)ChurchruinBus StopBus Stop 2Market StallMarket Stall 1Market Stall 2Military ShelterMilitary Building (open)Military Building (little)Military Building (open)Military Building (closed)Military Building (open)Bus StopAmmunition Bunker Ammunition Bunker Ammunition Bunker Metal TowerWood TowerMetal TowerAirport TowerMilitary BuildingMilitary BuildingMilitary BuildingMilitary Building

Haus mit VordachHaus mit VordachVillaKlostergebäude (Eckhaus)KlostergebäudeGarage ohne TorGarage (lang)Garage (kurz)StrandhütteStrandhütteStrandhütte (offene Seiten)StrandhütteStrandhütteFerienhütteHundehütteKleine HolzhütteSchuppen (mini)Holzschuppen LatrineGroße Scheune (geschlossen)Große Scheune (begehbar)ScheuneHolzscheune (begehbar)Holzscheune (offene Seiten)Holzscheune (geschlossen)Alte Scheune (begehbar)Wohnblock (abgebrannt)Hausruine (abgebrannt)Hausruine (abgebrannt)Hausruine (abgebrannt)Gaststätte (abgebrannt)HausruineHausruineHausruineHausruine (begehbar)KirchenruineBushaltestelleBushaltestelle2MarktstandMarktstand 1Marktstand 3Unterstand (Garagenart)Militärunterkunft (begehbar)Militärgebäude (klein)Militärgebäude (begehbar)Militärgebäude (geschlossen)Militärgebäude (begehbar)BushaltestelleMunitionsbunker (offen)Munitionsbunker Munitionsbunker Metallwachturm (groß)Holzwachturm (groß/Dach)Wachturm (klein/Dach)FlugplatztowerKasernengebäudeKasernengebäudeKasernengebäudeKasernengebäude

Land_sara_domek_hospodaLand_sara_domek_podhradi_1Land_sara_domek_vilkaLand_sara_dum_podloubi03klasterLand_sara_dum_podloubi03rovnyLand_sara_hasic_zbrojLand_garazLand_garaz_malaLand_hut01Land_hut02Land_hut03Land_hut04Land_hut06Land_ZalChataLand_psi_boudaLand_bouda2_vnitrekLand_kulnaLand_bouda3Land_KBudLand_stodola_oldLand_stodola_old_openLand_strazni_vezLand_sara_stodolaLand_sara_stodola2Land_sara_stodola3Land_hut_old02Land_afbarabiznaLand_afdum_mesto2Land_afdum_mesto2LLand_afdum_mesto3Land_afhospoda_mestoLand_dulni_bsLand_dum_zborenyLand_dum_zboreny_totalLand_hruzdum Land_kostel_troskyLand_zastavka_jihLand_zastavka_severLand_stanek_1Land_stanek_1BLand_stanek_1CLand_army_hut_storrageLand_army_hut_intLand_army_hut2Land_army_hut2_intLand_army_hut3_longLand_army_hut3_long_intLand_aut_zastLand_garaz_s_tankemLand_garaz_bez_tankuLand_ammostore2Land_hlaskaLand_posedLand_vezLand_letistni_halaLand_budova1Land_budova2Land_budova3Land_budova4

Page 85: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

86

Typ Beschreibung KlassennameMilitary BuildingGuardhouseMilitary HospitalRepair CenterHangar (green)Hangar (grey)HangarHangar ruinFuelstop (small)Fuelstop (small)Fuelstop (big)Fuelstop (Military)FactoryFactoryTall TowerMetall HutLittle Metal HutGlass TowerTransformer StationTransformer StationRadiotowerRadiotowerRadiotowerWater TowerSiloLighthouseLighthouseLighthouse with podestLighthousepodestHarbour pieceHarbour pieceHarbour pieceBridge with roofBridgeBridge (end)FenceFencegateWallStonegateArchwayArchwayStonefenceWoodfenceBasefence (camo)Basefence (grey)Basefence (Desert)StoplightStoplight 2Landfield lightLandfield lightLandfield lightLandfield lightPower supply lineElectricity pylonPower supply linePower supply lineLadder (big)ScaffoldScaffold

KasernengebäudeWachhäuschenKasernenhospitalWerkstattHangar (grün)Hangar (grau)Lagerhalle (Hangar)HangarschutthaufenTankstelle (klein)Tankstelle (klein)Tankstelle (groß)Tankstelle (Militär)FabrikgebäudeFabrikgebäudeHoher SchornsteinMetallbude (Kontrollposten)Kleine BlechhütteGlas AussichtsturmTrafostationTrafostationSendeturmSendeturmSendeturm (groß)WasserturmHochsiloLeuchturmLeuchturmLeuchturm mit PodestLeuchturmpodestHafenanlage HafenanlageHafenanlageSteg (überdacht)StegSteg (Endstück)ZaunZauntor (Stein)Mauer mit LochSteintorTorbogen mit TorTorbogen ohne TorSteinzaun (kaputt)Holzzaun (kaputt)Kasernenzaun (tarn)Kasernenzaun (grau)Kasernenzaun (Wüste)AmpelAmpel 2LandebahnbeleuchtungLandebahnbeleuchtungLandebahnbeleuchtungLandebahnbeleuchtungStromleitung (Trafostation)Strommast (groß)StromleitungStromleitungLeiter (groß)GerüstGerüst

Land_budova4_inLand_budova5Land_hospitalLand_repair_centerLand_SS_hangarLand_SS_hangarDLand_hangar_2Land_SS_hangar_ruinsFuelStationLand_fuelstationLand_benzina_schnellLand_fuelstation_armyLand_Tovarna1Land_Tovarna2Land_kominLand_Hlidac_budkaLand_bouda_plechLand_strazni_vezLand_trafostanica_velkaLand_trafostanica_malaLand_Vysilac_FMLand_vysilac_FM2Land_telek1Land_watertower1Land_NasypkaLand_majakLand_majak2Land_majak_v_celkuLand_majak_podestaLand_molo_beton Land_molo_krychleLand_molo_krychle2Land_molo_drevoLand_molo_drevo_bsLand_molo_drevo_endLand_pletivo_diraLand_plot_zed_drevo1_brankaLand_plot_istan1b_holeLand_plot_istan1_rovny_gateLand_brana02Land_brana02nodoorLand_plot_zborenyLand_Plot_Ohrada_PruchoziLand_zed_diraLand_zed_dira_desertLand_zed_dira_civilLand_Stoplight01Land_Stoplight02Land_Runway_PAPILand_Runway_PAPI_2Land_Runway_PAPI_3Land_Runway_PAPI_4Land_trafostanica_velka_dratyLand_sloup_vnLand_sloup_vn_dratZLand_sloup_vn_dratLand_ladderLand_leseni2xLand_leseni4x

Page 86: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

87

Kap

itel 3

Typ Beschreibung KlassennameCastletowerCastlewallCastlewallCastlewallCastlewallWall with doorWall ruinWall ruinWall with gate (closed)Wall with gate (open)FountainOil pumpCitywallCitywallCitywallCitywallCitywallCitywallCitywallCitywallCitywallCitywallCitywallStoned areaStoned areaScrapheapScrapheapScrapheapMinaretOld Silo Bam - SawmillOld Silo Bam - SawmillBig CarportBig Carport with camo netTower with searchlightCamouflaged water towerAircraft FactoryAircraft Factory (West)Aircraft Factory (SLA)AirportBarracksBarracks (West)Barracks (East)CampContruction Site (West)Contruction Site (West)Contruction Site (East)Contruction Site (East)CrateDepotHeadquarters (West)Headquarters (East)HeavyFactoryHeavyFactory (West)HeavyFactory (East)LightFactoryLightFactory (West)LightFactory (East)Mobile HQ (West) M113Mobile HQ (East) BMP2

BurgturmBurgmauerBurgmauerBurgmauerBurgmauerMauer mit DurchgangMauerruineMauerruineMauer mit Tor (geschlossen)Mauer mit Tor (offen)Brunnen (Handpumpe)ÖlpumpeStadtmauer (Podest)Stadtmauer (Podest)Stadtmauer (Podest)Stadtmauer (Podest)Stadtmauer (Podest) Stadtmauer (Podest)Stadtmauer (Podest)Stadtmauer (Treppen)Stadtmauer (Treppen)Stadtmauer (Treppen)Stadtmauer (Treppen)Gepflasterte Fläche Gepflasterte FlächeSchutthaufenSchutthaufenSchutthaufenMinarettAlte Siloscheune - SägewerkAlte Siloscheune - SägewerkGroßes CarportGroßes Carport (Tarnnetz)Wachturm mit ScheinwerfernGetarnter WasserturmFlugzeug FabrikFlugzeug Fabrik (Westen)Flugzeug Fabrik (Osten)HangarZelt mit SandsäckenZelt mit Sandsäcken (Westen)Zelt mit Sandsäcken (Osten)SandsackstellungContainer (Westen)Container (Westen)Container (Osten)Container (Osten)HolzkisteGroßer Sandsackbunker (2-Stock)Hauptquartier (Westen)Hauptquartier (Osten)Große FabrikGroße Fabrik (Westen)Große Fabrik (Osten)Kleine FabrikKleine Fabrik (Westen)Kleine Fabrik (Osten)Mobiles Hauptquartier (Westen)Mobiles Hauptquartier (Osten)

Land_helfenburkLand_helfenburk_branaLand_helfenburk_budova2Land_helfenburk_cimburiLand_helfenburk_zedLand_zidka_brankaWallendLand_zidka03 Land_statek_branaLand_statek_brana_openLand_pumpaLand_vez_ropaLand_podesta_1_cubeLand_podesta_1_cube_longLand_podesta_1_cornlLand_podesta_1_cornpLand_podesta_1_mid_cornlLand_podesta_1_mid_cornpLand_podesta_1_midLand_podesta_1_stairsLand_podesta_1_stairs2Land_podesta_1_stairs3Land_podesta_1_stairs4Land_podesta_5 Land_podesta_10Land_AFbarabizna_ruinsLand_AFDum_mesto2_ruinsLand_AFDum_mesto2L_ruinsLand_R_MinaretLand_Kamenolom_budovaLand_pilaLand_pristresekLand_pristresek_camoLand_Vez_svetlaLand_vodni_vezWarfareBAircraftFactoryWarfareBWestAircraftFactoryWarfareBEastAircraftFactoryWarfareBAirportWarfareBBarracksWarfareBWestBarracksWarfareBEastBarracksWarfareBCampWarfareBWestContructionSiteWarfareBWestContructionSite1WarfareBEastContructionSiteWarfareBEastContructionSite1WarfareBCrateWarfareBDepotWarfareBWestHeadquartersWarfareBEastHeadquartersWarfareBHeavyFactoryWarfareBWestHeavyFactoryWarfareBEastHeavyFactoryWarfareBLightFactoryWarfareBWestLightFactoryWarfareBEastLightFactoryM113_MHQ_unfoldedBMP2_MHQ_unfolded

Page 87: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

88

Typ Beschreibung KlassennameBare treeBanana treeBanana treeBanana treeBanana treeThistlesHigh grassesCepFlowersBrakeDesert grassGras flowersGrassLong grassWhite flowersGrassYellow flowersMushroomFly agaricFly agaricMushroomFlowersGrassWhite flowersTall coniferTall coniferBushBushDesert grassMixed grassTreeTreeLeavesSmall bushMiddle bushsmall bushMini bushGrass bushDouble grass

Baum (blattlos)BananenbaumBananenbaumBananenbaumBananenbaumDistelnHohe GräserSteinpilzBlumenFarneWüstengrasGrasblumenGrasLanges GrasWeiße BlumenGrasGelbe BlumenPilzFliegenpilzFliegenpilzPilzBlumenGrasWeiße GrasblumenHoher NadelbaumHoher NadelbaumBuschBuschWüstengrasGemischtes GrasLaubbaumLaubbaumLaub (liegend)Busch (klein)Busch (mittel)Busch (klein)Busch (mini)GrasbuschDoppelgras

AAPL000AAPL001AAPL002AAPL003AAPL004AAPL005AAPL006AAPL007AAPL008AAPL009AAPL010AAPL011AAPL012AAPL013AAPL014AAPL015AAPL016AAPL017AAPL018AAPL019AAPL020AAPL021AAPL022AAPL023AAPL024AAPL025AAPL026AAPL027AAPL028AAPL029AAPL030AAPL031AAPL032AAPL033AAPL034AAPL035AAPL036AAPL037AAPL038

3.12 - Die Pflanzenklassen

Typ Beschreibung KlassennameHesco SiteHesco 5xHesco 10xHesco 10x TallSandbag SiteNestLow NestMG Nest M240 (West)MG Nest PK (SLA)MG Nest_M240 (Resistance)MG Static M2 (Resistance)

SandsackmauerKleine SandsackmauerGroße SandsackmauerHohe SandsackmauerSandsackmauerKleines Schützennest (knien)Kleines Schützennest (liegen)Schützennest mit M240 (Westen)Schützennest mit PK (Osten)Schützennest mit M240 (Widerstand)Maschinengewehr M2 (Widerstand)

WarfareBHescoSiteWarfareBHesco5xWarfareBHesco10xWarfareBHesco10xTallWarfareBSandbagSiteWarfareBNestWarfareBLowNestWarfareBWestMGNest_M240WarfareBEastMGNest_PKWarfareBResistanceMGNest_M240WarfareBResistanceM2StaticMG

Page 88: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

89

Kap

itel 3

Typ Beschreibung KlassennameStocks of a treesStocks of a treesStock of a treeGrassMiddle bushTall bushLong bushSmall bushLong bushBig treeBig treeBig treeMiddle treeTall coniferTall coniferBig leave grassBush treeMiddle palm treeMiddle palm treeMiddle palm treeMiddle palm treeDouble palm treePalm bushTall palm treeMiddle palm treeTree stumpTree stumpConifer bushSmall coniferBroad coniferTall coniferBirch treeTreeTreeTreeSmall treeMiddle decoration treeSmall treeSmall treeTreeSmall treeTreeSmall treeSmall bushWillowBirch treeBirch treeBush treeTreeBush treeSmall bushTall decoration treeAvenue treeAvenue treeBranchwoodBranchwoodBranchwoodBranchwood

Holzstämme (liegend)Holzstämme (liegend)Holzstamm (liegend)GräserbüschelBusch (mittel)Busch (hoch)Busch (lang)Busch (klein)Busch (lang)Laubbaum (groß)Laubbaum (groß)Laubbaum (groß)Laubbaum (mittel)Nadelbaum (hoch)Nadelbaum (hoch)GroßblattgrasBuschartiger BaumPalme (mittel)Palme (mittel)Palme (mittel)Palme (mittel)DoppelpalmePalmenbuschPalme (groß)Palme (mittel)BaumstumpfBaumstumpfNadelbuschNadelbaum (klein)Nadelbaum (breit)Nadelbaum (groß)BirkeLaubbaumLaubbaumLaubbaumLaubbaum (schmal)Zierbaum (mittel)Laubbaum (klein)Laubbaum (schmal)LaubbaumLaubbaum (schmal)LaubbaumLaubbaum (klein)Busch (schmal)WeideBirkeBirkeBuschbaumLaubbaumBuschbaumBusch (schmal)Zierbaum (groß)AlleebaumAlleebaumGeäst (liegend)Geäst (liegend)Geäst (liegend)Geäst (liegend)

AAPL039AAPL040AAPL041AAPL042AAPL043AAPL044AAPL045AAPL046AAPL047AAPL048AAPL049AAPL050AAPL051AAPL052AAPL053AAPL054AAPL055AAPL056AAPL057AAPL058AAPL059AAPL060AAPL061AAPL062AAPL063AAPL064AAPL065AAPL066AAPL067AAPL068AAPL069AAPL070AAPL071AAPL072AAPL073AAPL074AAPL075AAPL076AAPL077AAPL078AAPL079AAPL080AAPL081AAPL082AAPL083AAPL084AAPL085AAPL086AAPL087AAPL088AAPL089AAPL090AAPL091AAPL092AAPL093AAPL094AAPL095AAPL096

Page 89: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

90

Typ Beschreibung KlassennameClutter Stone SmallGranite stoneSandstone (big)Sandstone (big)Limestone (big)Limestone (big)Sandstone (big)Limestone (middle)Limestone (middle)Sandstone (big)Limestone (middle)Limestone (middle)Sandstone (middle)Limestone (middle)Limestone (middle)Sandstone (middle)Limestone (middle)Limestone (middle)Sandstone (little)Granite stonesGranite stonesLimestone rock (little)Limestone rock (big)Limestone rock (big)Limestone rock (big)Limestone rock (big)Sandstone (little)Sandstone (little)Sandstone (little)Sandstone (little)Sandstone (little)Sandstone (little)Sandstone (middle)Sandstone (little)Sandstone (little)Sandstone (little)Sandstone (little)Sandstone (little)Sandstone (middle)Sandstone (middle)Sandstone (middle)Sandstone (middle)Sandstone (middle)Limestone rock (big)Limestone rock (big)Sandstone (little)Limestone (middle)Sandstone (little)Sandstone (little)Sandstone (little)Sandstone (little)

KieselsteineGranitsteinSandstein (groß)Sandstein (groß)Kalkstein (groß)Kalkstein (groß)Sandstein (mittel)Kalkstein (mittel)Kalkstein (mittel)Sandstein (mittel)Kalkstein (mittel)Kalkstein (mittel)Sandstein (mittel)Kalkstein (mittel)Kalkstein (mittel)Sandstein (mittel)Kalkstein (mittel)Kalkstein (mittel)Sandstein (klein)GranitsteineGranitsteineKalkstein Felsen (klein)Kalkstein Felsen (groß)Kalkstein Felsen (groß)Kalkstein Felsen (groß)Kalkstein Felsen (groß)Sandstein (klein)Sandstein (klein)Sandstein (klein)Sandstein (klein)Sandstein (klein)Sandstein (klein)Sandstein (mittel)Sandstein (klein)Sandstein (klein)Sandstein (klein)Sandstein (klein)Sandstein (klein)Sandstein (mittel)Sandstein (mittel)Sandstein (mittel)Sandstein (mittel)Sandstein (mittel)Kalkstein Felsen (groß)Kalkstein Felsen (groß)Sandstein (klein)Kalkstein (klein)Sandsteine (klein)Sandstein (klein)Sandstein (klein)Sandstein (klein)

AARO000AARO001AARO002AARO003AARO004AARO005AARO006AARO007AARO008AARO009AARO010AARO011AARO012AARO013AARO014AARO015AARO016AARO017AARO018AARO019AARO020AARO021AARO022AARO023AARO024AARO025AARO026AARO027AARO028AARO029AARO030AARO031AARO032AARO033AARO034AARO035AARO036AARO037AARO038AARO039AARO040AARO041AARO042AARO043AARO044AARO045AARO046AARO047AARO048AARO049AARO050

3.13 - Die Steinklassen

Page 90: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

91

Kap

itel 3

Typ Beschreibung KlassennameCyclist ahead!Walkers ahead!Walkers ahead! (old)Double bend L ahead! (old)Double bend L ahead!Double bend R ahead! (old)Double bend R ahead!Right of Way (old)Right of Way End (old)Right of Way EndRight of WayMilitary Sign (SLA/RACS)Military Sign (SLA)Military Sign (RACS)Picnic areaCamping groundNot attached curb ahead!Rustle shoot ahead! (old)Rustle shoot ahead!Cross-way ahead! (old)Right of way ahead! (old)Right of way ahead!Cross-way ahead!Air traffic ahead! (old)Air traffic ahead!Ahead!First aid (old)First aidGravel ahead!Roadway repair service (old)Roadway repair serviceRockfall ahead (old)Rockfall aheadParking place (old)Parking placeAhead!Direction panel LDirection panel RRoad works ahead!Crosswalk ahead!Right of way ahead! (old)Right of way ahead!Gas station (old)Gas stationStraightforwardRoadConeRoadBarrierlongRampConcrete

Achtung Fahrradfahrer!Achtung Fussgänger!Achtung Fussgänger! (alt)Achtung S-Kurve L! (alt)Achtung S-Kurve L!Achtung S-Kurve R! (alt)Achtung S-Kurve R!Vorfahrt (alt)Vorfahrt Ende (alt)Vorfahrt EndeVorfahrtMilitärschild (SLA/RACS)Militärschild (SLA)Militärschild (RACS)RastplatzCampingplatzAchtung nicht befestigter Seitenstreifen!Achtung Viehaustrieb! (alt)Achtung Viehaustrieb!Achtung Kreuzung! (alt)Achtung Vorfahrts-Kreuzung! (alt)Achtung Vorfahrts-Kreuzung!Achtung Kreuzung!Achtung Flugverkehr! (alt)Achtung Flugverkehr!Achtung!Erste Hilfe (alt)Erste HilfeAchtung Schotter!Pannenhilfe (alt)PannenhilfeAchtung Steinschlag (alt)Achtung SteinschlagParkplatz (alt)ParkplatzGefahrenstelle!Richtungstafel LRichtungstafel RAchtung Baustelle!Achtung Fussgängerüberweg!Vorfahrt achten! (alt)Vorfahrt achten!Tankstelle (alt)TankstelleGeradeausStraßenhütchenStraßensperreRampe

AASI012AASI015AASI016AASI019AASI020AASI021AASI022AASI025AASI026AASI027AASI028AASI169AASI181AASI186AASI189AASI190AASI195AASI196AASI197AASI198AASI199AASI200AASI201AASI204AASI205AASI259AASI260AASI261AASI268AASI273AASI274AASI275AASI276AASI277AASI278AASI283AASI284AASI285AASI286AASI287AASI288AASI289AASI290AASI291AASI292RoadConeRoadBarrier_longRampConcrete

3.14 - Die Schilderklassen

Page 91: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Mit folgend erläuterter Syntax hat man die Möglichkeit sich die Waffen- undMagazintypen einer Einheit in Form einer Texteinblendung ausgeben zu lassen.Dabei verwendet man für das Ausgeben der Waffentypen:

hint format ["%1", weapons this];hint format ["%1", weapons Name];

und für das Ausgeben der Magazintypen:

hint format ["%1", magazines this];

Neben dem Ausgeben von Waffen- und Magazintypen, hat man natürlich noch dieMöglichkeit sich ausgeben zu lassen, welche Einheit gerade mit was geschossen hat.Dabei werden folgende Daten anhand einer Texteinblendung ausgegeben:

Name der EinheitDer WaffentypDer GeschosstypDie Schussart (Single/Burst)

Nachdem die Einheit Name im Spiel die Waffe abfeuert, blendet dieser Text ein:

Dazu macht man sich einen Eventhandler zu Nutze, mit welchem die Syntax in derInitzeile einer Einheit, wie im folgenden Beispiel, angelegt wird:

this addEventHandler ["Fired", {hint format ["%1", _this]}]

Das Ganze geht natürlich auch namenbezogen für externe Aktionen:

Name addEventHandler ["Fired", {hint format ["%1", _this]}]

Manche Situationen erfordern das Prüfen, ob eine bestimmte Einheit eine bestimmteWaffe hat. Dies kann man dann unter anderem als Bedingung oder ähnliches verwenden.Dazu wird folgende Syntax verwendet:

Player hasWeapon "M4" bzw. im Skript ? Player hasWeapon "M4"

92

3.15 - Waffen- und Magazintypen ausgeben lassen

3.16 - Abgefeuerten Typ ausgeben lassen

3.17 - Hat Einheit Waffe?

Page 92: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Als kleines Beispiel nun nochmal zwei Beispiel Syntaxes:

?! (Player hasWeapon "M4") : hint "Der Spieler hat sein M4 verloren!"

? (Player hasWeapon "M4") : hint "Der Spieler hat sein M4 wieder!"

Bei der ersten Syntax kommt nun eine Meldung, dass der Spieler sein M4 verloren hatund bei der zweiten eine Meldung, dass er sein M4 zurück hat.

Auch die Primärwaffe einer Einheit lässt sich jederzeit Abfragen oder auch als Bedingungfür etwas verwenden. Von der Sache her, lassen sich nun die gleichen Dinge, wie auchschon mit dem hasWeapon-Befehl realisieren. Hierzu wieder mal ein paar Beispiele.

Primär- oder Sekundärwaffe ausgeben lassen:

hint format ["%1", primaryWeapon Player];

hint format ["%1", secondaryWeapon Player];

Primär- oder Sekundärwaffe als Bedingung:

? (primaryWeapon Player != "M4") : hint "Der Spieler hat kein M4!"

? (primaryWeapon Player == "M4") : hint "Der Spieler hat ein M4 !"

? (secondaryWeapon Player != "Stinger") : hint "Der Spieler hat keine Stinger!"

Die folgende Syntax gibt wieder, ob der Spieler noch Munition hat. Hat er kein Magazinmehr, wird die Variable auf true gesetzt. Dies kann man nun unter anderem als Bedingungfür etwas verwenden.

?!(someAmmo Player) : hint "Der Spieler hat keine Munition mehr!"

?(someAmmo Player) : hint "Der Spieler hat noch Munition!"

hint format ["%1", someAmmo Player];

Dieser Befehl verbietet einer Einheit das Nachladen der Waffe, wenn das Magazin leer ist.

Name enableReload false

Mit folgend aufgeführter Syntaxform lassen sich Minen ganz einfach an einer jeweiliggewünschten Position erzeugen.

Mine = createMine ["MineMine", position player, [], 0]

Kap

itel 3

93

3.20 - Mine erzeugen

3.19 - Hat Einheit Munition?

3.18 - Primär- bzw. Sekundärwaffe einer Einheit

Page 93: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Waffen und Magazine lassen sich nicht so ohne Weiteres erzeugen. Dazu benötigt manden Weaponholder-Befehl. Ein Weaponholder ist vergleichbar mit einer Waffenkiste, nurmit dem Unterschied, dass der Weaponholder unsichtbar ist. Diesen kann man nun mitdem gleichen Befehl, wie auch bei den Waffenkisten, mit Waffen und Magazinenversehen. Nach dem Erzeugen liegen die Waffen dann frei auf dem Boden und könnenvom Spieler aufgenommen werden.

An welcher Position diese Waffen erzeugt werden soll, kann man nun frei entscheiden.Also beispielsweise an an der XYZ-Position oder auch an der Position eines Objectes.

Folgend mal ein paar Beispiele:

Waffe1 = "WeaponHolder" createVehicle getpos Obj1

Waffe1 = "WeaponHolder" createVehicle position Player

Waffe1 = "WeaponHolder" createVehicle [x,y,z]

Nachdem man nun seinen Weaponholder erzeugt hat, weist man ihm die Waffen undMagazine zu. Dies macht man ganz normal mit den AddCargo-Befehlen.

Waffe1 addMagazineCargo ["10Rnd_127x99_M107",2];

Waffe1 addWeaponCargo ["M107",1];

Natürlich kann man seinen Weaponholder auch ausrichten oder in der Höhe versetzen.Zum Beispiel, wenn man die Waffe auf einen Tisch oder ähnliches legen möchte.

Um die Waffe auszurichten benutzt man die normale SetDir-Syntax:

Waffe1 setDir Wert

Und wie erwartet, gilt für die Höhe die altbekannte Syntax:

Waffe1 setPos [getPos Waffe1 select 0,getPos Waffe1 select 1,Wert]

Im Spiel sieht das dann später etwa wie folgt aus:

94

3.21 - Waffen und Magazine erzeugen

Page 94: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

95

Mit den folgend aufgeführten Syntaxformen hat man die Möglichkeit, sich dieBlickrichtung einer Waffe ausgeben zu lassen oder diese später als eine Bedingung füretwas zu verwenden. Diese Möglichkeit wird oft in Verbindung mit Fahrzeugen, wieeinem Panzer oder ähnliches verwendet, um die Blickrichtung des Turmes zu ermitteln.

Zunächst zwei Syntaxformen zum Ausgeben der XYZ-Werte:

hint format ["Blickrichtung: %1", Name weaponDirection "M56"]

hint format ["%1", Name weaponDirection primaryWeapon Name]

In folgendem Beispiel wird nur die Höhe ausgegeben:

hint format ["%1", Name weaponDirection "M56" select 2]

hint format ["%1", Name weaponDirection primaryWeapon Name select 2]

Dies erklärt sich wie folgt. X benötigt select 0, Y erfordert select 1 und Z dann select 2.

Folgend auch nochmal zwei Beispielverwendungsarten in einem Script:

_dir = _unit weaponDirection "Klassenname" select 0

? _dir <= Wert : hint "Falsche Schussrichtung!"

Aufsplitten der XYZ-Werte

_Direction = Name weaponDirection primaryWeapon Name_xDir = _Direction select 0_yDir = _Direction select 1_zDir = _Direction select 2

Kap

itel 3

3.22 - Waffenblickrichtung ausgeben

Page 95: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kapitel 4- Die Mission -

Nachdem du in den ersten drei Kapiteln die Oberfläche, die Dateien und die Waffenkennen gelernt hast, kommen wir nun zu den etwas spezielleren Bereichen desMissionsdesigns. Hier wirst du lernen, wie man eine Mission startet, die Ziele festlegt, dieErfüllung angemessen bewertet und am Ende die Mission ordentlich beendet.

4.1 Der Missionsname 974.2 Der Missionsstart 974.3 Das Missionszubehör 984.4 Die Missionswertung 994.5 Die Missionsziele 994.6 Mission beenden 1014.7 Mission speichern 103

96

Page 96: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Wenn man eine neue Karte erstellt, gibt man unter Info zunächst den Namen der Missionan. Dies ist zwar nicht unbedingt erforderlich, aber wenn man dass nicht macht, wird dieMission später im Einzelmissionsauswahlmenü mit dem Inselnamen angezeigt. Das siehtdann etwa so aus:

Bei Beispielmission wurde bei Info unter Name auch der Text Beispielmissioneingetragen. Bei Beispielmission2 war das nicht der Fall und deshalb steht dortBeispielmission2.Intro.

Beim Intro- und Missionsstart hat man die Möglichkeit eine Texteinblendung und Uhrzeitin individueller Form anzuzeigen zu lassen. Der Text dafür ist variabel, sollte aber auchnicht zu lang sein. Zum Anzeigen dieses Textes und der Uhrzeit muss man dieDescription.ext bearbeiten und falls diese im eigenen Missionsordner noch nichtvorhanden ist, muss man eine erstellen. Nähere Informationen zum ThemaDescription.ext findet man im Kapitel 2.3.

Zum Vordefinieren des Textes und der Uhrzeit trägt man im Kopf der Description.ext etwafolgendes ein:

oonnLLooaaddIInnttrroo == MMrr--MMuurrrraayy pprroouuddllyy pprreesseennttssoonnLLooaaddMMiissssiioonn == CCoonnvvooyy AAttttaacckk

oonnLLooaaddIInnttrrooTTiimmee == ttrruuee bzw. ffaallssee oder 11 bzw. 00oonnLLooaaddMMiissssiioonnTTiimmee == ffaallssee

Möchte man keines von Beiden anzeigen lassen, setzt man den Wert dazu lediglich auf0 oder schreibt stattdessen die Wortform false hinter das Gleichheitszeichen und schonwerden der Text und die Uhrzeit nicht angezeigt.

97

Kap

itel 4

4.1 - Der Missionsname

4.2 - Der Missionsstart

Page 97: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Als Text kann man hier natürlich auch die Adresse zur Stringtable.csv definieren. Das siehtdann etwa so aus:

onLoadIntro = $STR_Missionsstart

Mehr Informationen zum Thema Stringtable.csv sind im Kapitel 2.4 zu finden.

Der Missionsersteller hat die Möglichkeit zu bestimmen, ob man das jeweiligeMissionszubehör in einer Mission zur Verfügung stehen soll oder eben nicht. Dazumüssen wieder diverse Zeilen in der Description.ext definiert werden, um dieZubehörteile anzeigen oder verbergen zu lassen.

Zum Anzeigen wird wieder der Wert 1 oder true und zum Verbergen der Wert 0 oderfalse verwendet. Folgend die Übersicht der dazu benötigen Befehle:

ShowGPS = 1; - GPS

ShowCompass = 1; - Kompass

ShowRadio = 1; - Funkgerät

ShowMap = 1; - Karte

ShowNotePad = 1; - Briefing

ShowWatch = 1; - Uhr

ShowDebriefing = 1; - Abschlussbriefing

Seit Version 1.08 ist es nun auch möglich diese Komponenten ganz ohne Description.ext-Eintrag während des Spielverlaufes ein- oder gar auszublenden, was in den ersten ArmA-Versionen und früher in OFP nicht so ohne Weiteres möglich war. Dazu setzt man denWert lediglich auf true oder false.

ShowMap true

98

4.3 - Das Missionszubehör

Page 98: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Wie in jedem Spiel kann der Spieler in jeder Mission Punkte erreichen. Diese müssen dazuvorher in der Description.ext definiert werden. Die Anzahl der zu erreichenden Punktekann dabei frei bestimmt werden. In der Description.ext wird das wie folgt angegeben:

minScore=200 - Die MindestpunkteavgScore=3000 - Die MittelpunktemaxScore=6000 - Die Höchstpunkte

Der Spieler bekommt bereits im Spiel automatisch für jede getötete Einheit Punktezugewiesen. Wenn man aber nun machen möchte, dass der Spieler für das Erfüllen einesgewissen Missionziels eine gewisse Wertung erhält, macht man das mit folgender Syntax:

Player addRating Wert

Natürlich kann man dem Spieler auch Punkte abziehen. Dann, wenn zum Beispiel etwaszerstört oder getötet wurde, was nicht hätte passieren dürfen. Dazu müsste dann beiobiger Syntax ein Minuswert verwendet werden.

Player addRating -Wert

Möchte man eine Abfrage starten dass, wenn der Spieler eine gewisse Punktzahl erreichthat, die Mission zum Beispiel beendet wird, erstellt man einen Auslöser mit der Größe(Achse a/b) 0 und schreibt in die Bedingungszeile:

Rating Player > Wert oder Rating Player >= Wert

Bei Typ wählt man nun einfach Ende1 aus. Wenn der Spieler nun den Wert erreicht oderüberschritten hat, wird die Mission beendet und das Briefing wird mit der jeweiligenWertung angezeigt.

Die Missionsziele sind wohl das wichtigste an einer Mission. Denn ohne Missionsziel gibtes ja bekanntlich auch keine Mission! Diese müssen natürlich wieder auf irgendeine Artvordefiniert werden.

Die Missionsziele werden, wie man im Kapitel 2.13 nachlesen kann, angelegt undeventuell auch in der Init.sqs, siehe Kapitel 2.5, vordefiniert, wenn man diese zunächstverdecken möchte. Verdecken heißt, dass der Spieler das verdeckte Ziel zuerst nicht imBriefing sehen kann. In der Mission müssen jetzt natürlich noch die jeweiligen Zieledefiniert und konfiguriert werden.

99

Kap

itel 4

4.4 - Die Missionswertung

4.5 - Die Missionsziele

Page 99: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

BeispielmissionDer Spieler sieht im Briefing den Auftrag „Erobern Sie diese Ortschaft“. Der zweite Auftrag„Zerstören Sie den Munitionstruck“ wird zunächst durch den Eintrag in der Init.sqsverdeckt. Wenn der Ort von Feinden befreit wurde, soll das erste Ziel abgehakt und daszweite Ziel sichtbar gemacht werden.

Dazu setzt man über die Ortschaft einen Auslöser mit der Beispielgröße 300 (bei Achsea/b), wählt bei Aktivierung die Seite aus, die den Ort bewachen soll und wählt bei Artder Aktivierung Nicht vorhanden aus. Der Auslöser würde also ausgelöst werden, wenndie jeweilig ausgewählte Seite nicht mehr im Auslöserbereich vorhanden ist.

In der Aktivierungszeile gibt man nun die Befehle an, die ausgeführt werden sollen,wenn der Auslöserbereich von Feinden befreit wurde. Dazu gehörten Ziel 1 abhakenund Ziel 2 sichtbar machen. Als kleinen Infotext fügt man ggf. noch einen Hint hinzu.Das Ganze schaut dann so aus:

"1" ObjStatus "Done"; "2" ObjStatus "Visible"; hint "Missionsplan aktualisiert"

Auf der Karte setzt man über der Ortschaft, wie in der folgenden Briefing.html schondefiniert, einen Marker namens ZielX, welchen das Briefingfadenkreuz ansteuert, wennder Spieler im Briefing auf den Link „diese Ortschaft“ klickt.

Beispielabschnitt der dazugehörigen Briefing.html:

Der dazugehörige Eintrag in der Init.sqs, der das zweite Missionsziel zunächst verdeckt,muss hierbei "2" ObjStatus "Hidden" lauten.

Nun folgend die unterschiedlichen Befehle, die für den jeweiligen Missionszielstatusgebraucht werden:

Hidden - Missionsziel wird verdeckt

Visible - Missionsziel wieder sichtbar

Active - Missionsziel wird wieder aktiviert

Done - Missionsziel wird abgehakt

Failed - Missionsziel fehlgeschlagen

100

<p><a name="OBJ_1"></a> Erobern Sie <a href="marker:ZielX">diese Ortschaft </a></p><hr><p><a name="OBJ_2"></a> Zerstören Sie den Munitionstruck!</p><hr>

Page 100: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 4

Nach dem Erfüllen der Missionsziele sollte eine Mission normalerweise beendet werden.Natürlich gibt es da viele Möglichkeiten diese zu beenden. Diese hängen aber einzig undallein von der Story, den Missionszielen oder dem Verlauf der Mission ab. Hier mal einpaar mögliche Beispiele für die Beendigung einer Mission.

Einheitsbezogen aus lokaler Sicht

Einheitsbezogen aus globaler Sicht

101

Auf dem rechten Bild sind mehrere Einheiten zusehen. Ziel soll es sein den Schützenpanzer zubeseitigen. Dieser wurde mit der Taste 2 mitdem Auslöser verbunden und der Auslöser wie folgt definiert:

Achse a/b: 50Typ: Ende #1Aktivierung: Nicht vorhanden

Wird der Panzer nun zerstört oder verlässt erden Auslöserbereich, wird die Mission beendet.Da der Panzer aber auf jeden Fall zerstörtwerden soll und die Mission nicht beendetwerden soll, wenn dieser den Bereich verlässtkommen wir zur globalen Sichtweise.

Dazu setzt man ebenfalls einen Auslöser, aberlegt keinen Auslöserbereich fest, und stelltdiesen wie folgt ein:

Achse a/b: 0Typ: Ende #1Bedingung: ! (alive Panzer1)

Der Panzer wurde nun Panzer1 benannt undder Auslöserwirkungsbereich mit dem Wert 0auf globales Prüfen geschaltet. Man kann denAuslöser nun frei auf der Map platzieren, da erglobal prüft, ob Panzer1 noch lebt. AlsBedingung der Auslösung wurde ja beiBedingung die Syntax ! (alive Panzer1)angegeben.

4.6 - Mission beenden

Page 101: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Der Panzer kann sich nun frei auf der Karte bewegen und die Mission wird erst beendet,wenn dieser zerstört ist. Natürlich könnte man bei der lokalen Sichtweise die Prüfweite auf5000 oder so stellen , dann würde der Panzer den Bereich auch nicht verlassen können,aber der Übersicht halber ist die globale Sichtweise zu bevorzugen. Je wenigerAuslöserkreise auf einer Karte, desto besser die Übersicht beim Editieren.

Einheitsbezogen aus globaler Sicht mit mehreren EinheitenHierzu gelten die gleichen Vorgaben wie bei Einheitsbezogen aus globaler Sicht, nurwerden in der Bedingungszeile, noch weitere Bedingungen angegeben.

! (alive Panzer1) AND ! (alive MG1) AND ! (alive Soldat1)

Das AND steht für UND und verbindet somit diese Bedingungen zu einer. Die Missionwird nun erst beendet, wenn die Objekte namens Panzer1, MG1 und Soldat1 tot sind.

Mission wird beendet, wenn der Auslöserbereich feindleer istAuf dem unteren Bild sind mehrere Einheiten zu sehen. Ziel soll es sein die Ortschaft(Auslöserbereich) vom Feind zu befreien. Dabei ist es egal, ob diese eliminiert oder ausdem Auslöserbereich vertrieben werden.

Der Auslöser wird hierbei wie folgt definiert:

Achse a/b: 50Typ: Ende #1Aktivierung: OSTEN

Nicht vorhanden

Ab der Version 1.05 gibt es auch die Möglichkeit einen Auslöser so zu konfigurieren, dassder Auslöser erst auslöst, wenn alle Feindeinheiten eliminiert bzw. nicht präsent sind undmindestens eine befreundete Einheit im Auslöserbereich ist. Dazu definiert man beimAuslöser unter Aktivierung einfach, von welcher Seite (Erobert durch...) dieser Bereicherobert werden soll. Die verfeindete Gegenseite ist dabei egal.

102

Page 102: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Variablenbezogene Beendung der MissionDie variablenbezogene Auslösung einer Mission ist nicht unbedingt schwerer, aber jenach Ausmaß ein klein wenig aufwendiger. Als Beispiel könnte nun folgendes dienen.Drei unterschiedliche Auslöserbereiche sollen vom Feind befreit werden. Erst wenn diese3 Bereiche, als Beispiel 3 Ortschaften, befreit sind, soll die Mission beendet werden. DasGanze kann man nun wie folgt lösen:

Auslöser 1 (Bereich 1):Achse a/b: 100Aktivierung: OSTEN (nicht vorhanden)bei Aktivierung: Ziel1=true

Auslöser 2 (Bereich 2):Achse a/b: 150Aktivierung: OSTEN (nicht vorhanden)bei Aktivierung: Ziel2=true

Auslöser 3 (Bereich 3):Achse a/b: 100Aktivierung: OSTEN (nicht vorhanden)bei Aktivierung: Ziel3=true

Auslöser 4 (Prüfer):Achse a/b: 0Typ: Ende #1Bedingung: Ziel1 AND Ziel2 AND Ziel3

Wie man nun oben sehen kann, wird bei jedem der drei Auslöser bei der Auslösung eineVariable (Ziel1, Ziel2, Ziel3) auf true geschaltet. Beim Auslöser 4 wurden diese 3Variablen als Bedingung angegeben, um diesen auszulösen. Sind diese nun erfüllt, wirddie Mission beendet. Es bietet sich an bei Timeout noch ein paar Werte anzugeben, umdie Beendungszeit etwas flexibel zu gestalten.

Dieser Befehl ermöglicht das Speichern während des Spielens. Der Missionsersteller kannso auf der Karte also Speicherpunkte setzen. Zum Beispiel, wenn der Spieler einenbestimmten Punkt auf der Karte erreicht oder ein Missionsziel erfüllt hat, wird das Spielso automatisch gespeichert. Die Syntax hierfür lautet lediglich:

SSaavveeggaammeeWählt man später im Menü Neuer Versuch, beginnt der Spieler wieder an der Stelle, anwelcher das Spiel gespeichert wurde. Möchte man Speichern komplett verbieten,schreibt man in die Description.ext lediglich:

saving = 0;

103

Kap

itel 4

4.7 - Mission speichern

Page 103: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kapitel 5- Missionszubehör -

In diesem Kapitel ist alles erläutert, was in einer Mission zu gebrauchen ist. Hier solltestdu Antworten auf deine offenen Fragen und zudem noch eine Menge Anregungen fürdeine Mission bekommen.

5.1 Leeres oder verschlossenes Fahrzeug 1065.2 Fahrer/Beifahrer eines Fahrzeugs 1065.3 Einheit hat Fahrzeugverbot 1065.4 Einheit in Fahrzeug? 1075.5 Fahrzeug fährt erst, wenn Einheit eingestiegen ist 1075.6 Gruppe zu Missionsbeginn im Fahrzeug 1085.7 Ein- und Aussteigen lassen 1085.8 Geschwindigkeit einer Einheit 1085.9 Geschwindigkeit ausgeben lassen 1085.10 Einheit bleibt stehen 1095.11 Einheiten starten bzw. stoppen 1095.12 Einheit bewegt sich zum Bestimmungsort 1105.13 Streife laufen, fahren oder fliegen 1105.14 Fluchtverhalten einer Einheit oder Gruppe 1105.15 Einheiten, Objekte, Auslöser u. Marker versetzen 1115.16 Objekte versenken oder höher setzen 1115.17 Flughöhe einer Einheit 1125.18 Punktgenaue Helikopterlandung 1125.19 Einheit begibt sich in ein Gebäude 1125.20 Einheit verlässt eine Gruppe oder tritt anderer bei 1135.21 Einheit ein Ziel zuweisen 1135.22 Einheit wendet sich anderer zu 1145.23 Einheit wählt Waffe 1145.24 Einer Einheit Schaden zufügen bzw. heilen 1145.25 Einrichten einer Todeszone 1155.26 Das Prüfen eines Bereiches 1155.27 Einheiten in einem Bereich ansprechen 1155.28 Einheitsstatus speichern oder laden 1165.29 Bekanntheitsgrad einer Einheit 1175.30 Freundlicher Feind 1175.31 Befreundete Parteien 1185.32 Der Alarm 1195.33 Tod als Bedingung 1205.34 Distanz zweier Einheiten oder Objekte 1205.35 Einem Fahnenmast eine Fahne zuweisen 1205.36 Brennende Feuerstelle 1215.37 Spielbare Einheit hinzufügen oder entfernen 1215.38 Spielerseite, -namen, -typ auslesen bzw. ausgeben 1215.39 Spielereingabe unterdrücken 121

104

Page 104: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

5.40 Karte auf den Monitor erzwingen 1215.41 Sichtweite ändern 1225.42 Wetter einstellen 1225.43 Datum und Uhrzeit einstellen 1235.44 Zeitlupe oder Zeitsprint 1235.45 Einheiten und Objekte erzeugen 1245.46 Flares, Rauch und Explosionen erzeugen 1265.47 Einheiten und Objekte löschen 1275.48 Funkmenü verändern 1275.49 Einer Gruppe ein Rufzeichen zuweisen 1285.50 Funkspruch abgeben 1295.51 Sound erstellen 1295.52 Eigenen Sound einbinden 1305.53 Identität festlegen 1345.54 Mimiken 1355.55 Der Actionbefehl 1365.56 Der Animationsbefehl 1395.57 KI abschalten 1445.58 SetVelocity 1445.59 Der Informationstext 1445.60 Einheit bleibt liegen, kniet oder steht 1445.61 ID´s verwenden 1455.62 Einheiten in Gebäuden platzieren 1485.63 Einheit begibt sich zu Gebäudeposition 1535.64 Position auslesen 1535.65 Der Eventhandler 1555.66 Texteinblendarten 1575.67 Stringtable Grundwerte 1585.68 Wegpunkte erzeugen 1595.69 Auslöser erzeugen 1605.70 Marker erzeugen 1625.71 Rund ums Vehikel 1655.72 Lichtquellen erzeugen 1675.73 Staub erzeugen 1675.74 Rauch erzeugen 1685.75 Feuer erzeugen 1695.76 Dienstgrad vergeben 1715.77 Einheit benutzt Fernglas 1725.78 Einheit einen Fahrzeugplatz zuweisen 1725.79 Einheit ein Team zuweisen 1735.80 Einheit gibt Befehle 1745.81 Hat Einheit Schaden erhalten? 1745.82 Der Flugverkehr 1755.83 Grasdetails heruntersetzen 1765.84 Objekte schräg platzieren 1765.85 Mission verschlüsseln bzw. freischalten 1775.86 Leerer Scheinwerfer mit Licht 177

105

Kap

itel 5

Page 105: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Zum Erstellen eines leeren Fahrzeuges wählt man zunächst die Taste 1 und klicktdoppelt auf die Karte. Nach dem Öffnen des Menüs schaltet man bei Auswahl der Seiteauf Leer, wählt bei Klasse und Einheit den Vehikeltyp aus und klickt dann auf OK.

Wenn das Fahrzeug verschlossen bzw. nicht nutzbar sein soll, wählt man beiFahrzeugstatus einfach Abgeschlossen für verschlossen aus. Möchte man dasFahrzeug später nutzbar machen geht das wie folgt:

Fahrzeugname lock true - Verschließt das Fahrzeug

Fahrzeugname lock false - Öffnet das Fahrzeug

Mit den folgenden Befehlen lassen sich Einheiten an beliebige Positionen einesFahrzeuges beamen. Dies lässt sich unter anderem in der Initzeile der jeweiligen Einheitoder auch in einem Skript etc. definieren. Gibt man das in der Initzeile der jeweiligenEinheit an, kann für Name auch this stehen!

Name moveInDriver Fhz1 - Fahrer des Fahrzeugs

Name moveInCargo Fhz1 - Beifahrer des Fahrzeugs

Name moveInCommander Fhz1 - Kommandant des Fahrzeugs

Name moveInGunner Fhz1 - Schütze des Fahrzeugs

Name moveInTurret Fhz1 - Schütze des Fahrzeugs (i.d.R. MG)

Name moveInTurret [Fhz1,1]; - Schütze Nr. 2 des Fahrzeugs (i.d.R. MG 2)

Name moveInCargo [Fhz1,3] - Mitfahrer auf beliebiger Cargoposition

Diesen Befehl verwendet man, wenn man möchte, dass eine bestimmte Einheit einFahrzeug nicht nutzen kann oder soll. Dazu trägt man in der Initzeile des Fahrzeugsfolgende Syntax ein.

[[NNaammee11,, NNaammee22,, NNaammee33]] aalllloowwGGeettIInn ffaallsseeIn dieses Fahrzeug dürfen Name1, Name2, Name3 nun nicht einsteigen. Möchte mandas Fahrzeug später wieder für diese Einheiten nutzbar machen, schaltet man wieder auftrue.

[[NNaammee11,, NNaammee22,, NNaammee33]] aalllloowwGGeettIInn ttrruuee

106

5.1 - Leeres oder verschlossenes Fahrzeug

5.2 - Fahrer/Beifahrer eines Fahrzeugs

5.3 - Einheit hat Fahrzeugverbot

Page 106: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Manche Abläufe erfordern das Prüfen, ob sich eine Einheit noch in einem Fahrzeugbefindet oder auch nicht. Dieses kann man z.B. als Bedingung nehmen, um damit einenAuslöser oder ein Skript zu starten.

Um zu prüfen, ob Name in dem Fahrzeug sitzt, nutzt man diese Syntax:

Name in Fahrzeugname

Player in (crew Fahrzeugname)

und gibt sie in die Bedingungszeile eines prüfenden Auslösers ein. Steigt die Einheit nunin das definierte Fahrzeug, wird der Auslöser aktiviert.

In einem Skript muss das Ganze so aussehen:

? Name in Fahrzeugname

Um zu prüfen ob eine Einheit nicht mehr in einem Fahrzeug sitzt, benötigt man folgendeSyntax:

NOT (Name in Fahrzeugname)

Für das NOT kann auch ein ! verwendet werden. Gleiche Eigenschaft!

Angenommen man hat ein Fahrzeug auf der Karte, welches auch schon mit Wegpunktenversehen ist, welches erst losfahren soll, wenn eine bestimmte Einheit, als Beispiel derSpieler, eingestiegen ist. Dies kann ein normales Auto, Boot oder auch ein Helikopter sein.

Dazu gibt man in der Bedingungszeile als Bedingung folgende Syntax an:

NNaammee iinn FFaahhrrzzeeuuggnnaammee oder VVeehhiiccllee NNaammee ==== FFaahhrrzzeeuuggnnaammee

GruppenbezogenNatürlich geht das Ganze auch gruppenbezogen. Das Fahrzeug soll warten, bis dieGruppe eingestiegen ist. Dazu wird bei der folgenden Syntax auch der Fahrer mitgezählt,der schon im Truck sitzt. Man muss also die Größe der Gruppe plus den Fahrer rechnen.Dazu gibt man in der Bedingungszeile folgendes an:

ccoouunntt ccrreeww TTrruucckk11 >>== 1100 oder ccoouunntt ccrreeww TTrruucckk11 ==== 1100

107

Kap

itel 5

5.4 - Einheit in Fahrzeug?

5.5 - Fahrzeug fährt erst, wenn Einheit eingestiegen ist

Page 107: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Wenn eine Gruppe gleich zu Missionsbeginn in einem Fahrzeug, als Beispiel einemHelikopter sitzen soll, muss in der Initialisierungszeile des Leaders der Gruppe folgendeSyntax angegeben werden:

{_x moveInCargo Heli1} forEach units group this

oder{_x moveInCargo Heli1} forEach units Group1

Dafür setzt man zunächst ein leeres Fahrzeug und einen Soldat auf die Karte. Dann weistman dem Soldaten einen Wegpunkt zu, welchen man genau auf das Fahrzeug setzt undwählt bei Typ Einsteigen aus. Dann setzt man den nächsten Wegpunkt an derZielposition und wählt dort Aussteigen aus.

Möchte man Einheiten per Syntax aussteigen lassen, geht das wie folgt:

unassignVehicle Fahrzeug1 - Einheit verlässt Fahrzeug

{unassignVehicle _x} forEach units Grp1 - Einheiten verlassen Fahrzeug

Leader befehlen dabei ihren Einheiten auszusteigen

Die Geschwindigkeit einer Einheit kann bei einem Wegpunkt unter Geschwindigkeitoder auch per Syntax bestimmt werden. Diese lauten wie folgt:

Name setSpeedMode "Full" - Verfügbar in Auto,Limited,Normal,Full

Name forceSpeed 120 - Wert in km/h

Name limitSpeed 60 - Wert in km/h

Name1 setSpeed getSpeed Name2 - Name1 bekommt Speed v. Name2

Die Geschwindigkeit einer Einheit oder eines Fahrzeugs lässt sich jederzeit abfragen odersogar als Bedingung für etwas verwenden. Dazu gelten unter anderem folgendaufgeführte Syntaxbeispiele.

hint format ["Geschwindigkeit: %1" , speed Name]

? speed Name > 30 : hint " Du fährst zu schnell!"

108

5.6 - Gruppe zu Missionsbeginn in Fahrzeug

5.7 - Ein- und aussteigen lassen

5.8 - Geschwindigkeit einer Einheit

5.9 - Geschwindigkeit ausgeben lassen

Page 108: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Der Befehl dostop this in der Init-Zeile einer Einheit bewirkt, dass diese an ihrer gesetztenPosition stehen bleibt. Dies ermöglicht eine Gruppe auf die Karte zu setzen und dieMitglieder frei zu verteilen, ohne dass diese wieder zu ihrem Leader zurücklaufen undsich somit wieder in Formation begeben.

TeambezogenSehr nützlich, wenn man Anführer einer Gruppe ist und nicht möchte, dass seineUntergebenen bei Missionsbeginn gleich hinter einem her laufen und sie selbst inStellungen unterbringen möchte. Sie bleiben somit an der zuvor im Editor gesetztenStelle stehen, wenn man bei der jeweiligen Einheit dostop this in die Initialisierungszeileeinträgt. Zusätzlich ist es wichtig bei der jeweiligen Einheit unter Speziell den Wert Keinezu definieren!

FeindbezogenAuch hier ist dieser Befehl sehr nützlich, denn nun kann man ein feindliches Team sehr gutin der Landschaft verteilen. Hierbei ist es ebenfalls wichtig bei der Einheit bei SpeziellKeine auszuwählen. Wird der Feind nun angegriffen, werden die Einheiten auf ihrerfestgelegten Position in Stellung gehen.

Als Beispiel dient hier eine Gruppe, die ihre zugewiesenen Wegpunkte anlaufen soll, wennder Spieler einen Wegpunkt oder einen Auslöser ausgelöst hat. Dem Leader dieser Gruppeschreibt man dabei

this stop true

in die Initzeile, während man bei dem Wegpunkt des Spielers oder dem Auslöser, den derSpieler auslösen soll, folgendes angibt:

Name stop false

Die Gruppe wird dann ihre Wegpunkte anlaufen. Oben wurde der Wert this verwendet,weil die Syntax in der Initzeile des Leaders der Gruppe angegeben wurde, während beimzweiten Befehl der Name des Leaders benötigt wird, weil der Befehl von dem Wegpunktbzw. Auslöser kommt. Der Leader muss also auch mit einem Namen versehen werden.

109

Kap

itel 5

5.10 - Einheit bleibt stehen

5.11 - Einheiten starten bzw. stoppen

Page 109: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Man kann Einheiten auch ohne Wegpunkte zu bestimmten Punkten auf der Karteschicken, ohne sie zuvor mit Wegpunkten versehen zu haben. Hierbei gibt esverschiedene Möglichkeiten.

Objektbezogen: Name doMove getPos Name

ID-bezogen: Name doMove getPos (position Name nearestObject ID)

Koordinatenbezogen: Name doMove [X,Y,Z]

Markerbezogen: Name doMove getMarkerPos "Markername"

Möchte man eine Gruppe zu einer dort oben aufgeführten Position schicken, lässt mandas do von doMove weg, da sich sonst zunächst nur der Leader zu der angegebenenPosition bewegen wird und die Gruppe erst folgt, wenn er sein Ziel erreicht hat. Hier einSyntaxbeispiel für Objektbezogen:

Name move getPos Name oder Leader Name move getPos Name

Sehr interessante Beispiele findet man im Kapitel 6.6 unter -Der Mapclick- und Kapitel6.2 -Das GPS-System-.

Eine Streife soll ständig um ein Lager Streife laufen bzw. fahren. Dazu weist man der Streifedie Wegpunkte zu und schließt den Kreis, indem man den letzten Wegpunkt in denBereich des ersten setzt und im Wegpunktmenü bei Typ den Befehl Wiederholenauswählt.

Hiermit legt man das Fluchtverhalten von Einheiten fest. Diese werden, wenn dieSituation aussichtslos erscheint, je nach Einstellung früher oder später die Flucht ergreifenund irgendwo in den Weiten Sahranis untertauchen. Doch Achtung: Manchmal kommensie auch zurück und greifen nochmal an.

Hierbei gelten alle Werte zwischen 0 und 1, also auch die Dezimalwerte, wobei die 0 fürkein und 1 für maximales Fluchtverhalten steht. Schreibt man in die Initzeile einesGruppenführers diese Syntax:

this allowFleeing 0.8

bezieht sich der Befehl auf die ganze Gruppe, welche je nach Einstellung die Fluchtergreifen wird. Viel abwechslungsreicher ist die Verwendung eines Zufallwertes:

this allowFleeing (random 0.8)

110

5.12 - Einheit bewegt sich zu Bestimmungsort

5.13 - Streife laufen, fahren oder fliegen

5.14 - Fluchtverhalten einer Einheit oder Gruppe

Page 110: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Einheiten, Objekte und Auslöser lassen sich auch während des Spielverlaufs beliebigversetzen oder besser ausgedrückt, an eine beliebige Positionen beamen. Dazu mussman das jeweilige zum Versetzen bestimmte Objekt zunächst mit einem Namenversehen. Danach lässt sich ein Objekt wie folgt versetzen:

Objektbezogen: Name1 setpos getPos Name2

Vor, hinter, neben Objekt: Name2 setpos Name1 modelToWorld [0,3,0]

ID-bezogen: Name setPos getPos (position Name nearestObject ID)

Koordinatenbezogen: Name setPos [X,Y,Z]

Markerbezogen: Name setPos getMarkerPos "Marker1"

Marker zu Marker: "M1" setMarkerPos getMarkerPos "M2"

Marker zu Objekt: "Marker1" setMarkerPos getPos Name

Vehikelbezogen: Name setPos getPos vehicle Player

Vehikelbezogen II: "Marker1" setMarkerPos getPos vehicle Player

Ein weiterer Befehl mit Höhenangabe, hier mit dem Wert 10 definiert, wäre:

Name1 setPos [(getPos Name2 select 0),(getPos Name2 select 1),10]

Name1 würde nun an die Position von Name2 in 10 Meter Höhe versetzt werden. EineGruppe versetzt man hierbei mit dem jeweiligen Befehl von oben zum Ziel:

{_x setpos getPos Name} foreach units Group1

Folgende Syntax ermöglicht es, eine Einheit oder ein Objekt an eine Zufallsposition zuversetzen. Dabei setzt sich die Syntax aus XYZ-Koordinaten und Markern zusammen,woraus die Engine dann automatisch eine der Zufallspositionen auswählt.

Name setVehiclePosition [[1000,2000], ["Marker1", "Marker2", "Marker3"], 0]

Sämtliche in irgendeiner Form setzbaren Objekte lassen sich versenken bzw. höhersetzen. Eine Ausnahme sind Fahrzeuge und Einheiten, welche sich nicht im Bodenversenken, aber dennoch höher setzen lassen. Hiermit ist es beispielweise möglich,Soldaten in Häusern oder auf Dächern höhengenau zu platzieren. Setzt man einenSoldaten oder ein Fahrzeug in eine Höhe X, wird dieser schwerkraftbedingt wieder zuBoden fallen. Statische Objekte, wie beispielsweise ein Sandsack, würden aber trotz allemin der Luft schweben. Hierbei gibt es verschiedene Varianten. Die in der Initzeile einesObjektes eingetragene Syntax:

this setPos [(getPos this select 0),(getPos this select 1),10];

lässt das Objekt an der im Editor gesetzten Position in einer Höhe von 10 Meternschweben. Im Multiplayer funktioniert dieser Befehl seit ArmA erst ab Version 1.08!

111

Kap

itel 5

5.15 - Einheiten, Objekte, Auslöser u. Marker versetzen

5.16 - Objekte versetzen oder höher setzen

Page 111: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Der Inhalt des Arrays [ ] wird wie folgt definiert. Die erste ( ) stellt den Erhalt der X-Position, die zweite ( ) den Erhalt des Y-Position und die Zahl nach den Klammern dieZ-Position des Objektes dar. Ersetzt man die beiden this, also das this vor der Klammer,welches für das Objekt welches zu this, also dem this in der [] versetzt werden soll, durcheinen Namen, wird es auch dieser Satz verständlicher.

Name1 soll zu Name2 versetzt werden:

Name1 setPos [(getPos Name2 select 0),(getPos Name2 select 1),10];

Übersetzt heißt das: Name1 setze zu erhaltener X-Position und zu erhaltener Y-Positionvon Name2 auf Höhe 10 Meter.

Neben dem setPos- und getPos-Befehlen gibt es noch setPosASL und getPosASL Befehle,welche die Höhe des Objektes über dem Meeresspiegel wiedergeben.

Die Flughöhe einer Einheit lässt sich unterschiedlich bestimmen. Dies kann man an demjeweiligen Wegpunkt der Einheit oder auch per Auslöser oder Skript bestimmen. Hierzugilt folgende Syntax:

Name flyInHeight 120

Setzt man für einen Helikopter einen Wegpunkt an der Position an der er landen soll,weicht die KI oftmals weit vom Landepunkt ab und landet, wo es ihr gerade möglich ist.Dies kann man umgehen, wenn man zunächst ein Heli-H setzt. Hierbei ist es vollkommenegal, ob es ein sichtbares oder unsichtbares Heli-H ist. Danach erst setzt man denLandewegpunkt direkt auf das Heli-H und wählt im Wegpunktmenü bei Typ TransportEntladen oder Aussteigen aus. Der Helikopter wird nun an der festgelegten Positionlanden. Eine weitere Möglichkeit bietet diese Syntaxform:

Heli1 land "Positionsname"

Dazu weist man der Einheit einen Wegpunkt zu, wobei man direkt auf das begehbareGebäude, bei dem die Bezeichnung am Fadenkreuz erscheint, wenn man mit der Mausüber das Gebäude fährt, klickt und im Wegpunktmenü bei Position im Haus diejeweilige Position auswählt. Die Einheit wird sich dann sofort zu der jeweiligen Positionim Haus begeben.

112

5.17 - Flughöhe einer Einheit

5.18 - Punktgenaue Helikopterlandung

5.19 - Einheit begibt sich in ein Gebäude

Page 112: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Dies lässt sich zum Einen mit Wegpunkten, wie im Kapitel 1.5 –Wegpunkte einfügen– imUnterbereich Anschließen und führen (Join and Lead) erklärt, oder zum Anderen miteiner Syntax realisieren. Mit folgender Syntax würde Name1 eine Gruppe verlassen:

[ Name1] join grpNull

und mit dieser einer anderen Gruppe beitreten:

[Name1] join Name2

Name1 wurde also zunächst einer Nullgruppe, die nicht existent ist, und danach derGruppe Name2 unterstellt. Für mehrere Einheiten sieht das Ganze so aus:

[ Name1, Name2, Name3] join grpNull

und danach:

[ Name1, Name2, Name3] join Name4

Hiermit ist es sogar möglich seiner Gruppe einen Feindsoldaten zu unterstellen, der dannauf der eigenen Seite kämpft, nur eben wie ein Feindsoldat gekleidet ist.

Auch hier gibt es verschiedene Definitionsmöglichkeiten, wobei die Einheiten keinenUnterschied zwischen Freund oder Feind machen. Die Syntaxes hierfür lauten wie folgt:

Name1 ddooTTaarrggeett Name2 Name1 wendet sich Name2 zu

Name1 ccoommmmaannddTTaarrggeett Name2 Name1 befiehlt einer Einheit auf Name2zu zielen

Feuern

Name1 ddooFFiirree Name2 Name1 schießt auf Name2

Name1 ddooFFiirree OObbjjNNuullll Name1 schießt auf nichts mehr

Name1 ffiirree ""WWaaffffeennttyypp““ Name1 feuert die Waffe blind ab

Name1 ccoommmmaannddFFiirree Name2 Name1 befiehlt einer Einheit auf Name2zu schießen

113

Kap

itel 5

5.20 - Einheit verlässt Gruppe oder tritt anderer bei

5.21 - Einheit ein Ziel zuweisen

Page 113: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Um eine Einheit dazu zu bringen auf ein Objekt/Einheit zu schauen, benötigt manfolgende Syntaxes. Unterschied: Bei der einen Befehlsform dreht sich die Einheit miteigener Bewegung und bei der anderen Befehlsform wird sie in Blickrichtung gebeamt.

Name1 setDir 160 - Name wird in Richtung 160 gedrehtName1 setFormDir 160 - Name dreht sich in Richtung 160Name1 setDir getDir Name2 - Name bekommt Azimut von Name2Name1 doWatch Name2 - Schaut zu Name2 (dreht sich bei Bedarf um)Name1 lookAt Name2 - Schaut zu Name2 (dreht sich bei Bedarf um)Name1 glaceAt Name2 - Schaut kurz zu Name2 (nur Kopfbewegung)_Pos=Name modelToWorld [0,0,0] - _Pos erhält Koordinaten u. Versatz [x,z,y] von Name Name2 setPos _Pos Name2 wird mit Versatz [x,z,y] zu Name versetzt

Textausgabe:hint format ["Blickrichtung: %1", getDir Name1]

Mit folgender Syntax bringt man eine Einheit dazu die Zweitwaffe zu wählen. Natürlichmuss hierbei die Bezeichnung der Waffenklasse stimmen und die Einheit dieentsprechende Waffe auch im Inventar haben.

Name selectWeapon "Stinger"

Man kann Einheiten/Objekten per Syntax einen direkten Schadenswert zuweisen. Hierbeisteht die 0 für keinen Schaden und die 1 für maximalen Schaden. Die Dezimalwertezwischen 0 und 1 stellen die Zwischenwerte dar. Setdamage gibt es mit einem oder auchzwei m, wobei es getDammage nur mit doppelten m gibt!

Name wird ein Schadenswert zugewiesen:

Name1 setDamage 1 oder Name1 setDammage 1Name1 setVehicleArmor 0.5

Name1 wird der Schadenswert von Name2 zugewiesen:

Name1 setDamage getDammage Name2

Möchte man den Schadenswert als Bedingung verwenden, sieht das Ganze so aus:

? damage Name1 >= 0.5 oder ? getDammage Name1 >= 0.5

Um sämtliche Objekte rund um ein Objekt zu zerstören hinterlegt man diese zunächst ineiner Variable (Bereich1). Danach zerstört man Diese durch Aufruf der zweiten Syntax.

Bereich1 = nearestObjects [Objekt1,[],300] - Objekte um Objekt1 listen

{_x setDamage 1} foreach Bereich1 - Zerstören (z.B. Radio Alpha)

114

5.22 - Einheit wendet sich anderer zu

5.23 - Einheit wählt Waffe

5.24 - Einer Einheit Schaden zufügen bzw. heilen

Page 114: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Das Einrichten einer Todeszone kann verschiedene Gründe haben. Wenn man zumBeispiel auf die Schnelle ein Schlachtfeld mit vielen Gefallenen erstellen möchte oderwenn man einen Bereich absperren möchte den eine oder alle Seiten nicht betretendürfen. Dazu schreibt man in die Initzeile eines Auslösers, bei dem zuvor die gewünschteGröße eingestellt wurde, folgendes:

{_x setDamage 1} foreach thisList

Bei Art der Auslösung muss man nun nur noch die Seite definieren, durch die der Auslöserausgelöst werden soll. Wenn der Auslöser mehrfach auslösen soll, muss man ihn natürlichnoch auf mehrfach stellen.

Mit diesem Befehl kann man sich die Einheiten eines Auslöserbereiches anzeigen lassen.Je nach Auslösereinstellung ist es möglich sich nur die jeweilige Seite oder alle Einheitendieses Bereiches anzeigen zu lassen. Dazu verwendet man zwei Auslöser, welche wie folgtdefiniert werden.

Bei dem prüfenden Auslöser setzt man zunächst die Achse a/b auf die Größe desBereiches, der geprüft werden soll. Bei Art der Auslösung wird die jeweilige Seite, diegelistet werden soll, ausgewählt und bei Name der Name Area1 eingegeben.

Den Funkauslöser definiert man bei Achse a/b mit 0, stellt ihn auf mehrfach und gibt indie Aktivierungszeile folgendes ein:

hint format ["%1",list Area1] oder hint format ["%1", WEST countSide Area1]

Wenn man nun den Funk benutzt, werden die Einheiten aus dem Bereich Area1angezeigt. Nun hat man auch die Möglichkeit Bereiche zu addieren. Erstellt man nunnoch einen zweiten Bereich namens Area2, kann man diese beiden Bereiche addierenund den Wert zum Beispiel als Bedingung für etwas verwenden.

hint format ["%1", (WEST countSide list Area1)+(WEST countside list Area2)]

Mit der folgenden Befehlsform lassen sich Einheiten eines festgelegten Bereichesansprechen. Dabei kann man dies wieder, wie im Kapitel 5.26 schon erläutert,seitenbezogen oder komplettbezogen definieren. Hierzu muss wieder ein Bereich mitNamen festgelegt werden und die folgende Syntax irgendwo in einem Wegpunkt, Skriptoder wie in Kapitel 5.26 einem anderen Auslöser angegeben werden.

{_x setBehaviour "Stealth"} forEach list Bereich1

Alle Einheiten dieses Bereiches würden nun in Deckung gehen. Statt dem BefehlsetBehaviour "Stealth" kann man natürlich auch einen anderen Befehl verwenden.

115

Kap

itel 5

5.25 - Einrichten einer Todeszone

5.26 - Das Prüfen eines Bereiches

5.27 - Einheiten in einem Bereich ansprechen

Page 115: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Dieser Befehl lässt sich hervorragend in Kampagnen verwenden, bei denen der Spieleroder auch die anderen Einheiten bei Beginn der Folgemission den Endstatus von dervorhergehenden Mission haben sollen.

Möchte man diesen Befehl in seiner Kampagne nutzen, sollte man darauf achten, dassdie Einheit, von der der Status gespeichert wird, auch noch am Leben ist. Zumindest dann,wenn dieser Status später auf den Spieler übertragen werden soll.

Mit Savestatus kann man, wie das Wort schon sagt, den Status einer Einheit speichern.Dies geht allerdings nur in Verbindung mit einer Kampagne , da der Wert direkt in derObjects.sav der Kampagne gespeichert wird. Im Single- sowie Multiplayerbereich istdieser Befehl von daher nicht funktionsfähig.

SavestatusStatus1 ist eine Variable, die daher auch anders heißen kann. Mit der folgenden Syntaxwird nun der Status von Name1 unter der Variable Status1 gespeichert.

xy=Name1 saveStatus "Status1"

Dieser Speicherwert beinhaltet nun einige Informationen dieser Einheit. Hierzu gehörenunter anderem:

- die Identität- der Gesundheitsstatus- der Waffenstatus- der Munitionsstatus

Wenn man jetzt einem anderen Soldaten genau diesen gespeicherten Status zuweisenwill, macht man dies wie nun folgend erklärt.

Loadstatus

xy=Name2 loadStatus "Status1"

Der Einheit mit Name2 wird dann der gespeicherte Status1 von Name1 zugewiesen.Das heißt, dass Name2 genauso wie Name1 aussieht, genau die gleiche Waffe trägt, dengleichen Munitionsstatus und den gleichen Gesundheitsstatus hat. Name2 ist dann alsoein Klon von Name1.

DeleteStatusNatürlich lässt sich jeder Satus auch löschen. Dies erfolgt mit:

deleteStatus "Status1"

116

5.28 - Einheitsstatus speichern oder laden

Page 116: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 5

Diese Syntax lässt sich für viele nützliche Bereiche verwenden. Zum Beispiel kann man soeiner Einheit die Information über eine andere Einheit geben oder den Bekanntheitsgradauch als Bedingung für eine dann auszuführende Aktion verwenden. Hierbei geltenwieder alle Werte zwischen 0 und 4.

0 Name1 hat keine Kenntnisse von Name2

2 Name1 hat geringe Kenntnisse von Name2

3 Name1 hat ausreichend Kenntnisse von Name2

4 Name1 hat volle Kenntnisse über Name2

Möchte man eine Einheit über eine andere in Kenntnis setzen, weist man ihr einen denKenntniswert wie folgt zu:

Name1 reveal Name2

Name1 hat nun Kenntnis von Name2.

Möchte man den Kenntniswert als Bedingung für die Auslösung eines Auslösersverwenden, schreibt man in die Bedingungszeile folgendes:

Name1 knowsAbout Name2 > 1

Wenn Name1 nun mehr als 1 von Name2 weiß, wird der Auslöser ausgelöst und damitdie Aktionen die darin definiert wurden durchgeführt.

Die Kenntnis wird im Laufe der Zeit weniger und landet irgendwann wieder beim Wert 0.Demnach lässt sich die obige Syntax auch andersrum, also mit kleiner als, verwenden.

Name1 knowsAbout Name2 < 0.8

Dies ist ganz nützlich, wenn die Einheit immer in der Nähe der anderen bleiben soll. Ist siedas nicht oder wird sie getötet, sinkt ja der Wert irgendwann unter, wie oben definiert, 0.8und der Auslöser wird ausgelöst.

Natürlich lässt sich dieser Wert auch wieder als Text ausgeben. Die Syntax lautet hierbei:

hint format ["Bekannheitsgrad: %1", Name1 knowsAbout Player]

Beendet man die folgend aufgeführte Syntax für eine Einheit an, so wird sie nicht mehrvom Feind beschossen und auch auf andere Weise ignoriert werden. Hiermit kann manzum Beispiel eine feindliche Einheit als Gefangenen definieren, die ja andernfalls soforterschossen werden würde. Das Ganze macht man dann mit:

this setCaptive true oder Name setCaptive true

Zurücksetzen kann man das dann wieder, indem man true wieder auf false setzt.

117

5.29 - Bekanntheitsgrad einer Einheit

5.30 - Freundlicher Feind

Page 117: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Die feindlichen Seiten in Armed Assault lassen sich frei bestimmen. Hierbei ist es nunmöglich West und Ost auf einer Seite gegen den Rest kämpfen zu lassen oder dieZivilisten als böse zu definieren. Man hat dabei einen so großen Spielraum, dass man diessogar wieder mit einem Wahrscheinlichkeitswert(Random) belegen kann. Somit weißman nie genau, wie der Feind am nächsten Tag so drauf ist.

Hierbei sind folgende Seiten frei gegeneinander definierbar:

West - East - Guerrila - Civilian - Enemy - Logic

Es kann auch festgelegt werden, dass die eine Seite friedlich zur anderen ist, aber nichtumgekehrt. Das heißt, dass die eine Seite sofort das Feuer eröffnet, aber die andere Seiteschießt nicht zurück. Statt Guer kann übrigens auch Resistance verwendet werden.

Der SetFriend-Wert bewegt sich auch hierbei wieder zwischen 0 und 1, wobei alle Werteüber 0.6 für befreundet, und alle unter 0.6 für feindlich stehen.

Folgend mal ein paar Syntaxbeispiele:

WEST setFriend [EAST,1]

Jetzt wäre West freundlich zu Ost, aber nicht umgekehrt, dazu braucht man eine zweiteSyntax dieser Form.

WEST setFriend [EAST,0.7]; EAST setFriend [WEST,0.7]

Nun sind beide Seiten freundlich zueinander, was sich ja im Missionsverlauf dank dieserSyntax noch ändern kann oder auch nicht. Setzt man den Wert wieder runter, verfeindensich beide Parteien wieder.

WEST setFriend [EAST,0]; EAST setFriend [WEST,0]

ZufallsbezogenNatürlich ist auch hier wieder alles per Zufall möglich, was eben dieses Spiel ausmacht.Man kann alles auch so definieren, dass man beim Missionstart gar nicht weiß, ob seingegenüber Freund oder Feind ist. Dazu verwendet man dann diese Syntaxform:

GUER setFriend [EAST,(Random 0.9)]

Hier wurde nun Random mit eingetragen, welcher einen Zufallswert für 0.9 ermittelt.Dieser kann dann mit 0.9 (freundlich), aber genauso gut mit 0.3 (feindlich) ausgegebenwerden.

DeathmatchbezogenDies ist im Kapitel 7.6 ausführlich erläutert. Kurz, man kann eine Seite auch mit sich selbstverfeinden.

EAST setFriend [EAST,0]

118

5.31 - Befreundete Parteien

Page 118: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 5

Mit den in Kapitel 5.27 erläuterten Syntaxes lassen sich nun einige verschiedeneAlarmformen realisieren. Natürlich liegt es am Ende immer an der Mission, wann einAlarm ausgelöst werden soll. Hier mal ein paar Beispiele.

Beispiel 1 – Alarmierung bei Entdeckung in einem AuslöserbereichHierzu setzt man einen Auslöser mit folgenden Einstellungen auf die Karte:

Aktivierung BLUFORVon Osten entdeckt

Effekte Alarm

Wird in diesem Auslöserbereich nun eine westliche Einheit von östlichen Einheitenentdeckt, wird der Auslöser aktiviert und der Alarm ausgelöst.

Beispiel 2 – Einheitsbezogene Alarmierung Hierbei soll nur Alarm ausgelöst werden, wenn eine bestimmte Einheit entdeckt wird.

Aktivierung Den Auslöser mit der Einheit oder dem Spieler verbindenVon Osten entdeckt

Effekte Alarm

Beispiel 3 – Alarm, wenn Einheit oder Objekt nicht mehr present (tot) ist

Aktivierung Den Auslöser mit der Einheit oder dem Objekt verbindenNicht vorhanden

Effekte Alarm

Beispiel 4 – Alarm, wenn die Gruppe namens Grp1 kleiner als Wert ist

Aktivierung KeineAchse a/b 0Bedingung Count Units Grp1 < WertEffekte Alarm

Beispiel 5 – Alarm, wenn eine Einheit schießtBei dieser Variante bekommen alle Einheiten aus dem Bereich einen Eventhandlerzugewiesen. Schießt nun eine Einheit, wird der Alarm ausgelöst und das Skript gestartet.

Aktivierung JederAchse a/b 500/500Aktivierung {_x addEventhandler ["Fired",{_this exec "Alarm.sqs"}]} foreach thisListEffekte Alarm

ZusätzeBei allen Alarmvarianten kann man zusätzlich diverse Aktionen über die Aktivierungs-zeile starten lassen. Zum Beispiel, dass alle Einheiten des Alarmbereiches namensBereich1 über die Einheit, hier der Spieler(Player), informiert werden.

{_x reveal Player} forEach list Bereich1

119

5.32 - Der Alarm

Page 119: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Um zu prüfen ob eine Einheit noch am Leben ist, benötigt man einen Auslöser mit denfolgenden aufgeführten Einstellungen. Natürlich gibt es auch hier wieder verschiedeneVarianten. Hier mal eine sehr oft verwendete Methode.

Aktivierung KeineAchse a/b 0Bedingung ! (alive Name) oder not alive Name

Der Auslöser prüft nun durch Achse 0/0 global, ob Name noch lebt und löst bei Tod diebei Aktivierung oder Effekte gesetzten Aktionen aus.

Manche Situationen machen es notwendig, dass man die Distanz zweier Einheiten oderObjekte als eine Bedingung für die Auslösung eines Auslösers oder ähnliches benötigtwird. Die Syntaxes hierfür sehen unter anderem wie folgt aus:

Player distance Jeep1<= 50 oder Player distance Jeep1 == 50

Lokaler Variable Wert zuweisen: _distance = Player distance Jeep1

Textausgabe:

titleText [format["%1 Meter", Player distance Jeep1], "plain down"]

Alle Fahnenmasten lassen sich individuell mit Fahnen bestücken. Das geht auch, wennsie bereits eine Fahne haben, wie es ja in ArmA der Fall ist. Dazu packt man die jeweiligeFahne in den Missionsordner und gibt in der Initzeile der Fahne einfach den Namen derDatei mit der Dateierweiterung an.

this setFlagTexture "Name.paa"

Möglich sind die Dateiformate PAC, PAA und JPG in der Größe 512 x 256 Pixel.Spielintern sind folgende Flaggen mit dieser Syntax und diesem Pfand setzbar:

this setFlagTexture "\ca\misc\data\usa_vlajka.paa"

USA Sowjetunion Racsusa_vlajka_co.paa rus_vlajka_co.pac jih_vlajka.paa

Russland SLArus_vlajka_co.paa sever_vlajka.paa

120

5.33 - Tod als Bedingung

5.34 - Distanz zweier Einheiten oder Objekte

5.35 - Einem Fahnenmast eine Flagge zuweisen

Page 120: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 5

Möchte man ein Feuer erst zu einem späteren Zeitpunkt anzünden oder erlöschen,gibt man dem Feuer zunächst einen Namen und nutzt folgende Syntax:

this inFlame true bzw. Name inFlame false

Mit den folgenden Befehlen ist es möglich dem Spieler während einer Mission switchbareEinheiten zuzuweisen oder auch zu entfernen.

addSwitchableUnit Name - Einheit wird spielbar

removeSwitchableUnit Name - Einheit wird unspielbar

Möchte man als Spieler zu einer anderen Einheit wechseln, oder eine Einheit zum Leadermachen, nutzt man folgende Syntaxes:

selectPlayer Name oder group Name selectLeader Name

Der einfache Befehl Teamswitch ruft das Teamswitchmenü auf.

Die Seite eines Spielers im Mehspielerbereich lässt sich wie folgt auslesen:

? side Player == West? name Player = = "Mr-Murray"

Textausgabe:

titleText [format["%1 -Soldat", side Player],"plain down"]titleText [format["Hey %1", name Player],"plain down"]

titleText [format["Typ: %1", typeOf Player],"plain down"]

Für einige Dinge, wie zum Beispiel Sequenzen, ist es manchmal von Vorteil die Spieler-eingabe zu unterdrücken. Zum Aktivieren setzt man disableUserInput auf true und zumDeaktivieren wieder aus false.

disableUserInput true

Das Erzwingen der Karte auf den Monitor ist ganz gut für Sequenzen oder ähnliches zugebrauchen. Hier hat man dann die Möglichkeit die verschiedensten Dinge zu simulieren.Zum Beispiel Truppenbewegungen und vieles mehr.

forceMap trueJetzt hat man u.a. die Möglichkeit Marker auf der Karte wandern zu lassen, um den Spielerin eine Situation einzuweisen. Dabei bietet es sich an die Spielereingabe zu unterdrücken.

121

5.36 - Brennende Feuerstelle

5.37 - Spielbare Einheit hinzufügen oder entfernen

5.38 - Spielerseite , -namen, -typ auslesen bzw. ausgeben

5.39 - Spielereingabe unterdrücken

5.40 - Karte auf den Monitor erzwingen

Page 121: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Für manche Bereiche oder Aktionen bietet es sich an die Sichtweite zu erhöhen oderherabzusetzen. Zum Beispiel bei einer Zwischensequenz, auf einem Berg, wo eine guteAussicht dargestellt werden soll. So könnte man für diese kurze Szene die Sichtweitekurzzeitig erhöhen und später wieder herabsetzen um Performance einzusparen. AlsSichtweite kann hierbei zwischen 500 bis 10.000 gewählt werden.

setViewDistance 500

Das Wetter wird ja zunächst ganz normal im Editor definiert. Möchte man es aber imMissionsverlauf oder einer Sequenz ändern benötigt man folgend aufgeführte Syntaxmit Werten zwischen 0 und 1. Je nach Mission bietet es sich immer an ein Zufallwetter zubestimmen. Dies verbunden mit Zufallszeit und Zufallsnebel bringt gleich ein wenig mehrAbwechslung in die Mission.

120 setOvercast 0.8

Der erste Wert stellt die Zeit in Sekunden dar, in der das Wetter umschwenken soll. Derzweite Wert steht für die Wetterart. Ist dieser 0, scheint die Sonne und der Himmel istWolkenleer. Mit jedem Dezimalwert, der nun dazu kommt, tauchen mehr Wolken amHimmel auf. Bei einem Wert von 0.5 ist der Himmel komplett bewölkt und bei einem Wertvon 1 ist mit starken Gewittern zu rechnen.

Zufallswetter:Dieses lässt sich mit einer Zufallssyntax bestimmen, welche den Wetterwert per Zufallbestimmt und festlegt. Lässt man diese Syntax gleich zu Missionsbeginn starten, ist beijedem Missionsstart mit einem anderen Wetter zu rechnen.

0 setOvercast (random 0.8)

Regen:Der Regen lässt sich auch unabhängig von SetOvercast einstellen.

0 setRain 0.8

10 setRain (random 0.8)

Nebel:Die Nebelwerte werden nach gleichem Verfahren wie beim Wetter oder Regen bestimmt.Jedoch lautet die Syntax hierfür:

10 setFog 0.6

60 setFog (random 0.8)

122

5.41 - Sichtweite ändern

5.42 - Wetter einstellen

Page 122: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 5

Auch dies ist während eines Missions- oder Kampagnenverlaufs möglich und kann dabeientweder mit einem festen Wert oder einer Zufallszeit bestimmt werden.

Jahr, Datum, Uhrzeit:Mit folgend aufgeführter Syntax bestimmt man gleich das Jahr, den Tag, die Stunde unddie Minute auf einmal. Das Ganze definiert man dabei wie folgt:

setDate [2006, 11, 30, 9, 0]

Hier wurde jetzt der 30.11.2006 mit der Uhrzeit 09:00 bestimmt. Natürlich lassen sich hierauch wieder einige Werte per Zufall generieren. Hier mit Uhrzeitbeispiel:

setDate [2006, 11, 30, (ceil random 8), (random 60)]

Uhrzeit:Die Uhrzeit kann man mit dieser Syntax auch einzeln bestimmen.

skipTime 1 - Stellt die Zeit um 1 Stunde vorskipTime –1 - Stellt die Zeit um 1 Stunde zurück

Mit der nun folgenden Syntax ist es möglich das Spiel zu verlangsamen, also in Zeitlupezu versetzen oder aber auch zu beschleunigen. Gerade bei Zwischensequenzen kannman hiermit geniale Zeitlupenszenen gestalten. Des Weiteren ist es aber auch möglicheinen Bullet Mode, wie in Kapitel 6.10 erläutert, in die Mission einzubauen, was zwarnicht sonderlich realistisch ist, aber dennoch als Feature verwendet werden kann.

Zeitlupe:Alle Werte unter 1 stehen hierbei für Zeitlupe, wobei gerade die Dezimalwerte den Effektausmachen. Je kleiner der Wert, desto langsamer der Ablauf.

setAccTime 1 - Normale Zeit

setAccTime 0.0500 - Zeitlupe

Zeitsprint:So, wie man die Zeit verlangsamen kann, kann man sie auch beschleunigen, wofür esaber eigentlich im Missionsbereich selbst keine richtige Verwendung geben sollte. Hierbeigelten alle Werte zwischen 1 und 8, welche der KI und dem Spieler schnelle Füßeverleihen.

123

5.43 - Datum und Uhrzeit einstellen

5.44 - Zeitlupe oder Zeitsprint

Page 123: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Es ist während eines Missionsablaufs möglich Einheiten, ganze Gruppen oder auchObjekte frei auf der Karte zu erzeugen und auch wieder zu löschen. Damit kann man eineMenge Performance einsparen und die Einheiten erst erzeugen, wenn sie benötigtwerden. Dabei gibt es verschiedene Varianten. Hier ein paar Beispiele.

Objektbezogen:In folgendem Beispiel wird ein Geschütz mit Typ D30 an Position XYZ erzeugt:

Ari1="D30" createVehicle [x,y,z]

Mit dem setDir-Befehl richtet man dieses dann zusätzlich aus.

Ari1 setDir 190

Es kommt vor, dass ein Vehikel nach dem Erzeugen nicht nutzbar ist. Dafür gibt man dannzusätzlich beim Erstellen den folgenden Befehl mit an:

Ari1 lock false

Somit ist es nun auf jeden Fall nutzbar. Möchte man ein Objekt direkt an der Positioneines anderen Objektes oder eines Markers erzeugen, dann sieht das so aus:

Bombe="SH_120_HE" createVehicle position Player

Bombe="SH_120_HE" createVehicle getMarkerPos "Marker1"

Folgend wird eine Bombe über der Einheit S1 in der Höhe von 50 Metern erzeugt.

Bombe=“SH_120_HE” createVehicle [(getpos S1 select 0),(getpos S1 select 1),50]

Einheitsbezogen:Zum Erzeugen einer Einheit wird die Zeile schon etwas länger. Hier wird ein Westsnipernamens Name1 auf der Position seines Leaders namens S1, der vorher schon auf derKarte sein muss, erstellt. Der Leader könnte dabei auch eine Logik sein. Der nun erzeugteSoldat hat einen Skillwert von 0.4 und ist vom Dienstgrad her Corporal.

"SoldierESniper" createUnit [position player, S1, "Name1=this",0.4,"Corporal"]

Man kann das natürlich auch anders definieren, indem man als Position einen Markerangibt, welchen man zuvor auf die Karte an die Position des Leaders gesetzt hat. Diesemwürde man bei Achse a/b einfach den Wert 0 geben, damit der Marker nicht sichtbar ist

"SoldierESniper" createUnit [getMarkerPos "Marker1",EGrp1,0.8,"Corporal"]

Dieser hat jetzt mal keinen Namen zugewiesen bekommen, weil man das nur machenmuss, wenn man diese Einheit später auf irgendeine Art ansprechen möchte. Der Leaderhieße in diesem Fall EGrp1. Folgend nochmal mit der Zuweisung einer Waffe:

"SoldierWSniper" createUnit [position Player, Player, "this addweapon ""binocular"" ", 0.8, "Corporal"]

124

5.45 - Einheiten und Objekte erzeugen

Page 124: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 5

Gruppenbezogen:Neben einzelnen Einheiten lassen sich auch Gruppen erstellen. Dazu kann man dieGruppen gleich individuell mit Namen versehen und sie so dann später ganz einfachansprechen. Als Beispiel soll hier folgendes Skript dienen, bei welchem eine Gruppe ander Position des Markers "GrpM" erstellt wird, den man zuvor auf die Karte gesetzt hat.

Wie man sieht, wurde hier der ersten Einheit, die lokal Leader benannt wurde, ein höhererDienstgrad zugewiesen, was sie automatisch zum Leader der Gruppe macht. Der Nameder Gruppe ist nun, wie am Anfang des Skriptes definiert, GrpOne. Damit diese Gruppenun auch in der Mission richtig agiert, muss man noch einen weiteren, sehr wichtigenPunkt beachten.

Merke:Erstellt man feindliche Einheiten erst im Laufe der Mission, ohne dass zuvor irgendwelcheEinheiten dieser Seite auf der Karte platziert waren, muss man der Seite ein Centerzuweisen, damit diese Einheiten miteinander kommunizieren können. Danach verwendetman den SetFriend-Befehl und verfeindet die Seiten miteinander. Macht man das nicht,wird die KI nicht auf gegnerische Einheiten feuern. Es bietet sich hierbei an, das Centerund den SetFriend-Befehl in der Init.sqs zu initialisieren. Hat man jedoch von Anfang anEinheiten aller Kriegsparteien auf der Karte, so werden diese Center beim Missionsstartautomatisch von der Engine erstellt. Folgend die Einträge in einer Beispiel-Init.sqs:

Init.sqs

CenterSo wie man ein Center erstellen kann, kann man es mit deleteCenter SEITE auch wiederlöschen, was aber eher unsinnig und unwirksam ist.

125

Grp1 = Creategroup EAST;

_Leader="SquadLeaderE" createUnit [getMarkerPos "GrpM", Grp1, "Grp1=this", 1, "Sergeant"];_Unit2="SoldierEB" createUnit [getMarkerPos "GrpM", Grp1, "", 1, "Corporal"];_Unit3="SoldierEB" createUnit [getMarkerPos "GrpM", Grp1, "", 1, "Corporal"];_Unit4="SoldierEG" createUnit [getMarkerPos "GrpM", Grp1, "", 1, "Corporal"];_Unit5="SoldierEMG" createUnit [getMarkerPos "GrpM", Grp1, "", 1, "Corporal"];_Unit6="SoldierEAT" createUnit [getMarkerPos "GrpM", Grp1, "", 1, "Corporal"];_Unit7="SoldierESniper" createUnit [getMarkerPos "GrpM", Grp1, "", 1, "Corporal"];exit

Createcenter EASTCreatecenter WEST

WEST setFriend [EAST,0]EAST setFriend [WEST,0]

Page 125: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

126

Zum Erzeugen einer Flare oder einer Rauchgranate über einem Objekt oder einer XYZ-Position gilt zwar der gleiche Befehl, wie im Kapitel 5.45, aber die Klassennamen weichenvon den Magazinnamen ab. Deshalb hier nochmal explizit.

Flare1="F_40mm_Green" createVehicle [x,y,z]

Oder über oder an der Position eines anderen Objektes:

Rauch="Smokeshell"createVehicle [(getPos Name1 select 0),( getPos Name1 select 1), 10]

Wobei dies in einer Zeile stehen muss, was hier nicht möglich ist. Oder in kurz:

Rauch=" Smokeshell" createVehicle position Name

Merke! Flares sollten generell ab einer Höhe von 100 Metern erzeugt werden!Dabei stehen folgende Flares

F_40mm_White F_40mm_Red

F_40mm_Green F_40mm_Yellow

und folgende Rauch- und Gewehrgranaten zur Auswahl:

Smokeshell SmokeshellRed

SmokeshellGreen B_40mm_HE

Natürlich kann man statt einer Flare oder einer Rauchgranate auch ganz andere Artenerzeugen. Zum Beispiel eine SH_125_HE oder ähnliches für eine Explosion. Dazu bitte imKapitel 3.10 nachschlagen. Unter den Shellklassen sind diverse Explosionskörperaufgelistet.

In der Vorschau sieht das dann später etwa so aus:

5.46 - Flares, Rauch und Explosionen erzeugen

Page 126: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

127

Während man zum Löschen von Objekten nur eine Syntaxform verwendet, benötigt manzum Löschen von Einheiten verschiedene Syntaxformen. Wenn man beispielsweise nurden Bordschützen eines Helikopters löschen will, der ja nicht mit einem Namen versehenwurde. Die Syntaxes schauen wie folgt aus:

deleteVehicle Name - Löscht alles, was einen festen Namen besitzt.

Möchte man nun den Bordschützen des Helikopters löschen, muss dieser das Fahrzeugzunächst verlassen. Vorher gibt man ihm aber noch einen Namen, indem man folgendeSyntax in die Initzeile des Helis schreibt:

Name=(Gunner Heli1)

Jetzt lässt man ihn aussteigen, wobei man hier auch (Gunner Heli1) schreiben kann.

Name action ["Eject", Heli1] oder einfach doGetOut Name

Der Name wird erst beim Löschen wichtig, da (Gunner Heli1) nicht funktionieren würde.

deleteVehicle Name

Außer dem Gunner gibt es noch den Commander, den Driver und die Crew.

Einheiten in Bereich löschenDazu setzt man einen Auslöser beliebiger Größe und benennt ihn beliebig(hier: Zone1).Dann wählt man die Seite aus, die gelöscht werden soll oder stellt ihn mit Jeder auf alleSeiten und Objekte. Die Syntax für das Löschen schreibt sich dann:

{deleteVehicle _x} forEach list Zone1

Hiermit hat man die Möglichkeit während einer Mission die Einträge im Funkmenmüumzubenennen. Diese sind von der Engine her von 1 bis 10 durchnummeriert.

1=Alpha, 2=Bravo, 3=Charlie, ...

Umbenennen kann man Diese mit folgender Syntax:

1 setRadioMsg "Alpha-Team"

Der erste Eintrag von Radio Alpha wurde nun in Alpha Teamumbenannt. Möchte man einen leeren Funkmenüeintrag haben,setzt man statt einem Text einfach ein Leerzeichen zwischen dieAnführungsstriche.

Die Funkmöglichkeit ist zwar eigentlich noch da, aber der Spielersieht sie nicht und denkt, dass sie nicht verfügbar ist. Statt dem Textwäre dann nichts zu sehen.

Dies kann man nutzen, wenn zum Beispiel ein Team ausfällt oderähnliches.

Kap

itel 5

5.47 - Einheiten und Objekte löschen

5.48 - Funkmenü verändern

Page 127: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

128

Mit setGroupId ist es möglich verschiedenen Gruppen verschiedene Rufzeichenzuzuweisen. Somit weiß man immer genau, wer gerade gesprochen hat oder einenSidechat abgegeben hat. Mit Armed Assault hat man im Gegensatz zu OperationFlashpoint nun auch die Möglichkeit seinen Gruppen uneingeschränkt eigene Namen zugeben. und eine freie Farbe zu definieren. Hier die Syntaxbeispiele:

Standard:

Name setGroupID ["Alpha","GroupColor0"]

Freier Text:

Name setGroupID ["Assault-Team-Alpha","GroupColor2"]

Standardmäßig stehen folgende Werte für Gruppenname und -farbe zur Auswahl:

Gruppennamen:

Gruppenfarben:

Tipp:Seitens des Spiels gibt es ab und dann Probleme, dass die Farbe nicht ausgegeben wird,was aber schon seit Operation Flashpoint bekannt ist. Dies umgehen wir einfach, indemwir beides in eine Zeile schreiben. Die Farbe gibt man dabei manuell an und lässt denhinteren Part, wo man diese normalerweise angibt, einfach offen. Bei folgendem Beispielheißt das Team Assault-Team-Alpha und hat die Farbe Red bekommen.

Name setGroupID ["Assault-Team-Alpha - Red",""]

"Alpha""Bravo"

"Charlie""Delta""Echo"

"Foxtrot"

"Golf""Hotel""Kilo"

"Yankee""Zulu"

"Buffalo"

"Convoy""Guardian"

"November""Two"

"Three"

0 – keine Farbe 1 – Schwarz 2 – Rot3 – Grün

4 – Blau 5 – Gelb6 – Orange 7 – Rosa

5.49 - Einer Gruppe ein Rufzeichen zuweisen

Page 128: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 5

129

Hierbei gibt es verschiedene Möglichkeiten diese auszugeben. Dabei können dieseglobal, seiten-, gruppen- oder vehikelbezogen angezeigt werden. Hier die Syntaxformmit den verschiedenen Varianten:

Name sideChat "Test 1-2" Name spricht zu seiner TruppenseiteName groupChat "Test 1-2" Name spricht nur zu seiner GruppeName globalChat "Test 1-2" Name spricht zu allen SeitenName vehicleChat "Test 1-2" Name spricht zu Leuten innerhalb

seines Fahrzeuges

Möchte man einen Funkspruch durch das Hauptquartier abgeben lassen:

[Seite,"HQ"] sideChat "Move to your position and wait for further orders!"

Der Befehl enableRadio false blendet die Funksprüche aus und macht sie unsichtbar.

Was in Operation Flashpoint nicht möglich war, wurde in Armed Assault berücksichtigt.Das trifft neben den vielen anderen neuen Möglichkeiten auch auf diesen Bereich zu.Man hat jetzt die Möglichkeit, die spielinternen Sounds an einer bestimmten Position zuerstellen. Im folgenden Beispiel wird der Sound namens LittleDog an der Position desSpielers erstellt.

Hund1=createSoundSource ["LittleDog",position Player,[],10]

Der Wert 10 steht dabei für die Entfernung vom Spieler. Natürlich kann man diesen jetztbeliebig versetzen, da er beim Erstellen den Namen Hund1 bekommen hat und somitansprechbar ist. Das geht dann, wie schon bekannt, mit:

Hund1 setPos getPos Name

So kann man sich nun beliebig die Sounds aus ArmA erstellen lassen, ohne irgendwasauf der Karte setzen zu müssen. Die Sounds findet man hierbei unter Leer/Sounds oderin einem Auslöser bzw. Wegpunkt unter Effekte. Unter anderem gibt es folgende Sounds:

Stream, Alarm, BadDog, BirdSinging, Chicken, Cock, Cow, Crow, Crickets1,Crickets2, Crickets3, Crickets4, Dog, Frog, Frogs, LittleDog, Music, Owl, Wolf

Möchte man eigene Sounds mit diesem Befehl irgendwo erstellen, so müssen diese erstin der Description.ext vordefiniert werden und können dann ganz normal mit der Angabedes in der Description.ext festgelegten Namens aufgerufen werden.

MeinSound=createSoundSource ["Soundname",position Player,[],10]

5.50 - Funkspruch abgeben

5.51 - Sound erstellen

Page 129: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

130

Wenn man eigenen Sound oder Musik in eine Mission einbinden möchte, so geht das nurüber die Description.ext, die bereits im Kapitel 2.3 erklärt wurde. Hier nun die expliziteErklärung zum Thema Musik und Sounds einfügen.

Zunächst legt man im Missionsordner einen Ordner namens Sounds und einen Ordnernamens Music, natürlich klein geschrieben, an und packt dort seine Sounddateien rein.Die Description bietet dafür verschiedene Unterbereiche, so dass man diese einzelnsteuern kann, wenn man zum Beispiel die Melodie von der Lautstärke her runterfadet,soll der Funkspruch, der gleichzeitig läuft seine Lautstärke behalten. Deshalb gibt es dafürverschiedene Unterbereiche(Soundklassen). Die Sound- oder Musikdefinierung sieht inder Description.ext etwa wie folgt aus:

Description.ext

Weiter auf nächster Seite.

// === Musik ================================================>class CfgMusic{

tracks[]= { Track1,Track2 };

class Track1{

name = "Track1";sound[] = {\music\track1.ogg, db+0, 1.0};

};

class Track2{

name = "Track2";sound[] = {\musik\track2.ogg, db+0, 1.0};

};};

// === Sounds ===============================================>class CfgSounds{

sounds[]= { Artillerie };class Artillerie{

name = " Artillerie ";sound[] = {\sounds\ artillerie.ogg, db+0, 1.0};

};};

5.52 - Eigenen Sound einbinden

Page 130: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 5

131

Wie man oben sehen kann, sind dann noch Bereiche wie Funk (Radio) und zweiverschiedene Umgebungssoundklassen definiert.

- Klasse CfgMusic

- Trackliste

- Klasse Track1

- Name Track1- Quelle,

db = Laustärke, 1.0 = Geschwindigkeit

- Texteinblendung zum Sound

Mit db hat man die Möglichkeit die Lautstärke der Sounddatei festzulegen. Dabei kannman kann gut zu laute oder zu leise Dateien entsprechend anpassen.

Die Geschwindigkeit, welche oben mit 1.0 festgelegt ist, bestimmt die Geschwindigkeitmit der die Sounddatei abgespielt wird. Somit kann man Sprachsamples höher oder tieferklingen lassen. Doch sollte man den Wert nicht zu hoch setzen, sonst hat man schnellden M-Mouse Effekt.

// === Radio/Funk ============================================>class CfgRadio{

sounds[] = {Funk1};

class Funk1{

name = "Funk1";sound[] = {"sound\funk1.ogg", db+5, 1.0};title = “Das ist ein Funkspruck!;

};};// === Umgebung ============================================>

class CfgSFX{

sounds[] = {}; };

class CfgEnvSounds{

sounds[] = {}; };

class CfgMusic{

tracks[]= { Track1,Track2 };

class Track1{name = "Track1";sound[] = {\music\track1.ogg, db+0, 1.0};

titles[] = { }; };};

Page 131: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Möchte man dann eine Sounddatei im Editor abspielen, so wählt man die im Wegpunktoder einem Auslöser im Untermenü Effekte aus. Dazu muss man die Mission erst neugeladen oder gespeichert haben, damit ArmA die Description neu einlesen kann. Die nundefinierten Sounds lassen sich natürlich auch per Syntax starten.

playMusic "Track1"

playMusic ["Track1", 30] (Spielt Track1 ab Sekunde 30)

playSound "Artillerie"

Name say "Soundname"

Die lassen sich natürlich auch, wie schon erwähnt in der Laustärke herunterfaden.

10 Fadesound 0.5 10 Fademusic 1 0 FadeRadio 0.1

Der erste Wert steht für die Zeit in der das geschehen soll und der zweite Wert für denjeweiligen Lautstärkenwert, den der Sound erhalten soll. Der Befehl preLoadSoundermöglicht es, den Sound vorab in den Speicher zu laden.

preLoadSound "Track1"

Sounds mit Text verknüpfenSounds lassen sich ohne Weiteres mit Text verknüpfen. Dabei kann man auf einenStringtablewert zurückgreifen oder einen eigenen Text direkt in der Description.ext mitangeben. Der Text wird dann beim Abspielen des Sounds mit angezeigt. Im Normalfallnutzt man das bei der Wiedergabe von Sprach- oder Funksounds.

In der Description.ext sieht das dann etwa wie folgt aus:

132

// === Radio ================================================>class CfgRadio{sounds[] = {RadioMsg1, RadioMsg2};

class RadioMsg1{

name = "RadioMsg2";sound[] = {"\sound\ radiosound1.ogg", db+10, 1.0};title = "It´s done. Now I´m ready for further orders.";

};

class RadioMsg2{

name = "RadioMsg2";sound[] = {"\sound\radiosound2.ogg", db+10, 1.0};title = {$STR_RADIO_2};

};};

Page 132: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Zufallssound aus einem Array abspielenAuch im Soundbereich ist es durchaus möglich so einiges per Zufall zu bestimmen. Einebeliebte Methode ist dabei, die Sounds in einem Array zu definieren und diese dannspäter per Zufall auswählen zu lassen.

Dies wird in folgendem Beispiel mal mit einem Skript umgesetzt, wobei dieeingetragenen Musikstücke keine Description.ext erfordern, weil sie direkt in der Enginedefiniert sind. Dieses von uns angelegte Script kann nun ganz normal mit

[] exec “scripts\music.sqs”

aufgerufen werden. Hierbei wird nun bei jedem Skriptaufruf ein Sound per Zufall aus demvordefinierten Array ausgewählt und abgespielt.

Zufallssound ohne Skript aufrufenEine weitere sehr gute Methode der Sounddynamic wäre das nun folgendeSyntaxbeispiel, wobei man bei diesem aber die Auswahl der Sounds weniger gut selbstbestimmen kann.

Wichtig ist hierbei, dass die Sounds, alle den gleichen Namen haben und am Ende eineZahl. Also zum Beispiel: Track1, Track2, u.s.w.. Hierbei werden nun wieder armainterneSounds verwendet, welche nach dem gleichen Prinzip von ATrack1 bis ATrack27definiert sind. Die Namen der Queen´s Gambit Tracks gehen von QGTrack1 bis QGTrack9.

Bei der nun folgenden Sytax steht statt der eigentlichen Zahl nur %1, welches in dem Fallals Platzhalter für die Zahl steht. Im hinteren Teil der Syntax wird festgelegt aus welchemWert von 0 bis, in diesem Fall 27, die Zahl generiert werden soll und für %1 eingesetzt.

playMusic format ["ATrack%1",ceil random 27];

Tipp: Folgende Tracks benötigen ebenfalls keine Description.ext-Einträge:

WithCare_Smile - WithCare_Suicide - WithCare_War - WithCare_What

Selbstverständlich kann man statt der Musik eben auch ganz andere Soundartenverwenden. Wenn diese nicht in der Engine defniert sind, muss man sie eben selbst inseiner eigenen Description.ext definieren.

Folgendes Syntaxbeispiel zeigt das Ganze nochmal mit dem Befehl Say.

Name1 say format ["Hilfe%1",ceil random 3];

Da die generierten Zufallswerte nie genau rund sind, werden sie mit dem Ceil-Befehl auf-oder abgerundet, damit es einen runden Wert ergibt und die Engine weiß, welcher Soundabgespielt werden soll.

133

_music = ["ATrack1","ATrack6", "ATrack10", "ATrack11", "ATrack12", "ATrack13", "ATrack14", "ATrack15", "ATrack19", "ATrack22"];

playMusic ( _music select floor(random((count _music) - 0.5 )));exit;

Kap

itel 5

Page 133: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Es lässt sich für jede Einheit in einer Mission eine Identität festlegen. Dies ist aber nichtunbedingt ratsam, weil es ein riesiger Aufwand wäre. Deshalb sollte man sich mit demVergeben von Identitäten lieber auf die Schlüsselpersonen beschränken.

Eine Identität wird zunächst in der Description.ext vordefiniert, bevor sie eingebundenwerden kann. Das Ganze sieht dann ungefähr so aus.

Wie man erkennen kann, kann man die Namen frei vergeben. Lediglich die Gesichter undder Sprecher sind hierbei vorgegeben. Bitte auch wieder auf die Einhaltung der Klammernin der Description.ext achten!

Möchte man im Spiel dann die Identität der jeweiligen Einheit zuweisen, schreibt manlediglich den vordefinierten Namen mit der Syntax in die Initzeile:

Name setIdentity "DeinName" oder this setIdentity "Mr-Murray"

134

class CfgIdentities{

class MrMurray{

name = "MrMurray";face = "Face33";glasses = "none";speaker = "Dan";pitch = 1.00;

};

class MemphisBelle{

name = "MemphisBelle";face = "Face10";glasses = "none";speaker = "Howard";pitch = 1.00;

};

class Dan{

name = "Dan";face = "Face22";glasses = "none";speaker = "Russell";pitch = 1.00;

};

};

5.53 - Identität festlegen

Page 134: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 5

Diese Indentität lässt sich in Verbindung mit einer Kampagne auch speichern und späterwieder laden. Der Wert wird dabei direkt in der Objects.sav der Kampagne gespeichertund kann mit deleteIdentity "xyz" ganz leicht wieder gelöscht werden.

Name saveIdentity "Name1Save" oder Name loadIdentity "Name1Save"

Man kann einer Einheit auch nur ein Gesicht zuweisen, das geht dann hiermit:

Name setFace "Face33" oder this setFace "Face33"

In Armed Assault stehen 57 Faces, die mit

Face1 bis Face53und

FaceR01 bis FaceR04

durchnummeriert sind, zur Auswahl. Hat man eineeigene Facedatei im Missions- bzw. Userordner:

Name setFace "MeinBild.jpg"

Mögliche Größen: 1024*1024; 512*512; 256*256Optimale Größe: 512*512; Dateigröße 100 Kb

Brille (Glasses):Hier eine Übersicht der Brillenarten, die man in ArmA vergeben kann:

glasses = "spectacles"; Normale Brilleglasses = "sunglasses"; Sonnenbrilleglasses = "none"; Keine Brille

Sprecher:Folgende Sprecher stehen bis jetzt in ArmA zur Auswahl:

Amy Dan Howard Robert RyanBrian Dusan Mathew Russell

Pitch:Mit dem Pitchwert (pitch = 1.00) wird hierbei die Sprachhöhe oder -tiefe definiert.

Mit folgenden Befehlen kann man den Einheiten Mimiken zuweisen. Das bedeutet, dassman ihnen verschiedene Stimmungen wie fröhlich, ernst oder traurig zuweisen kann.

Name setMimic "Smile"

Normal - Surprised - Agresive - Hurt - Ironic - Smile - Cynic - Angry - Sad - Default

Folgende Animation verändert die Gesichtszüge mit den Werten 0 bis 1.

Name setFaceAnimation 0.5

135

5.54 - Mimiken

Page 135: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Die Actionbefehle weisen der jeweiligen Einheiten einen Befehl zu, was diese zu machenhat. Dabei gibt es verschiedene Varianten wie man diese definieren kann. Hier die nähereErläuterung dazu:

Object: Die Einheit(Name), die diese Aktion ausführen soll.Nimmt man ein Fahrzeug, wird der Commander gewählt.

Type: Name der Aktion (siehe Actionbefehlsübersicht)

Target: Meistens der gleiche Name, wie Name

Syntaxformen:Hier die verschiedenen Syntaxformen, die dafür in Frage kommen können:

Name action [<type>]

Name action [<type>, <target>]

Name action [<type>, <target>, zusätzliche Parameter]

Für zusätzliche Parameter trägt man beispielsweise die Waffe oder die Magazine ein, wiees in der Liste beschrieben ist. Neben Action gibt es noch Fire, was sich aber auf diewenigsten Befehle bezieht. Folgend nun mal ein paar Beispiele:

Name fire["PipebombMuzzle", "PipebombMuzzle", Pipebomb]- legt Sprengsatz

["M203Muzzle", "M203Muzzle", "1Rnd_HE_M203"]- schießt Granate

["M203Muzzle", "M203Muzzle", "FlareGreen_M203"]- schießt Flare

["HandGrenadeMuzzle", "HandGrenadeMuzzle", "HandGrenade"]- wirft Granate

["SmokeShellRedMuzzle", "SmokeShellRedMuzzle", "SmokeShellRed"]- Wirft Rauch

["bombLauncher", "BombLauncher", "6Rnd_GBU12_AV8B"]- Harrier wirft Bombe ab

Name action["TouchOff",Name] - löst Sprengsatz aus

["Eject",Heli1] - steigt aus

["Hidebody", Name2] - versteckt Leiche

["CancelAction", Name] - bricht Aktion ab

136

5.55 - Der Actionbefehl

Page 136: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 5

ActionbefehlsübersichtFolgend nun eine Befehlsübersicht über die wichtigsten Aktionbefehle. Einigefunktionieren von Haus aus nicht bzw. sind von Haus aus noch nicht aktiviert worden.

["None", <target>]["GetInCommander", <target>]["GetInDriver", <target>]["GetInGunner", <target>]["GetInCargo", <target>]["Heal", <target>]["Repair", <target>]["Refuel", <target>]["Rearm", <target>]["GetOut", <target>]["LightOn", <target>]["LightOff", <target>]["EngineOn", <target>]["EngineOff", <target>]["SwitchWeapon", <target>, <weapon index>] ["UseWeapon", <target>, <weapon index>]["TakeWeapon", <target>, <weapon name>] ["TakeMagazine", <target>, <magazine type name>] ["TakeFlag", <target>] ["ReturnFlag", <target>] ["TurnIn", <target>] ["TurnOut", <target>] ["WeaponInHand", <target>, <weapon name>] ["WeaponOnBack", <target>, <weapon name>] ["SitDown", <target>] ["Land", <target>] ["CancelLand", <target>] ["Eject", <target>] ["MoveToDriver", <target>] ["MoveToGunner", <target>] ["MoveToCommander", <target>] ["MoveToCargo", <target>] ["HideBody", <target>] ["TouchOff", <target>] ["SetTimer", <target>]

137

Page 137: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

["Deactivate", <target>] ["NVGoggles", <target>] ["ManualFire", <target>] ["AutoHover", <target>] ["StrokeFist", <target>] ["StrokeGun", <target>] ["LadderUp", <target>, <ladder index>, <ladder position>] ["LadderDown", <target>, <ladder index>, <ladder position>] ["LadderOnDown", <target>, <ladder index>, <ladder position>] ["LadderOnUp", <target>, <ladder index>, <ladder position>] ["LadderOff", <target>, <ladder index>] ["FireInflame", <target>] ["FirePutDown", <target>] ["LandGear", <target>] ["FlapsDown", <target>] ["FlapsUp", <target>] ["Salute", <target>] ["ScudLaunch", <target>] ["ScudStart", <target>] ["ScudCancel", <target>] ["User", <target>, <action index>] ["DropWeapon", <target>, <weapon name>] ["DropMagazine", <target>, <magazine type name>] ["UserType", <target>, <action index>] ["HandGunOn", <target>, <weapon name>] ["HandGunOff", <target>, <weapon name>] ["TakeMine", <target>] ["DeactivateMine", <target>] ["UseMagazine", <target>, <magazine creator>, <magazine id>] ["IngameMenu", <target>] ["CancelTakeFlag", <target>] ["CancelAction", <target>] ["MarkEntity", <target>] ["Talk", <target>] ["Diary", <target>]["LoadMagazine", <target>, <magazine creator>, <magazine id>,

<weapon name>, <muzzle name>]

138

Page 138: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 5

Ein Animationsbefehl lässt eine Einheit eine Animation ausführen. Hierbei gibt es aberUnterschiede. Da gibt es einmal den Befehl SwitchMove, mit welchem die Einheit in dieAnimation geswitcht/geschaltet wird und PlayMove, mit welchem sie die Animationabspielt. Manche Befehle arbeiten nicht mit dem PlayMove-Befehl, wobei man dann aufden SwitchMove-Befehl zurückgreift. Des Weiteren dauert jede Animation eine gewisseZeit. Diese sollte man berücksichtigen, wenn die Einheit danach eine weitere Animationausführen soll. Dazu setzt man einfach einen Delay (z.B.: ~10) zwischen die Befehlszeilenin seinem Skript.

Animationsbefehle sind eine nettes Feature für das Drumherum. Zum Beispiel ein Lager,in welchem Einheiten Sport treiben, sich Unterhalten oder ein Soldat grüßt, wenn jemanddurch das Tor fährt. All das regelt man mit den Animationsbefehlen. Die Syntaxformen fürdas Ausführen einer Animation sehen dabei so aus:

Name playMove "Animationsbefehl"

Name switchMove "Animationsbefehl"

GruppenbezogenNeben den Standartbefehlen gibt es natürlich wieder die verschiedensten Möglichkeitenper Zufall zu bestimmen wer eine solche Animation ausführen soll oder welche Animationeiner bestimmten Sorte ausgeführt werden soll.

Für das Erstere gibt es zum Beispiel folgende Möglichkeit:

(Units group Grp1 select 2) playMove "Animation"

Hier würde jetzt die Einheit 3 der Grp1 die Animation ausführen. Aber wieso eigentlichdie Einheit 3, wenn dort select 2 steht? Das erklärt sich wie folgt:

select 0 - Leaderselect 1 - Einheit 2select 2 - Einheit 3

Gruppenzufalls-VarianteDas Ganze ist natürlich auch wieder per Zufall. möglich. Das sieht dann wie folgt aus:

((Units group Grp1) select ceil random 5) playMove "AnimationsName"

Hierbei würde nun mit ceil random 5 ein Zufallswert zwischen 0 und 5 erzeugt, welchernun die jeweilige, per Zufall ausgewählte Einheit der Gruppe Grp1, die Animationausführen lässt. Die Gruppe sollte hierbei natürlich auch die richtige Größe vonmindestens 6 haben.

139

5.56 - Der Animationsbefehl

Page 139: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

ZufallsanimationHierbei gibt es verschiedene Varianten, wobei wir uns hier jetzt mal auf zwei beschränken.Zunächst gibt es die Variante, bei der die Animationen nummeriert sind, wie zum Beispieldie Panik-Animation, die von ActsPercMstpSnonWnonDnon_Panicking1 bis 7durchnummeriert ist. Wichtig ist hierbei, dass der Name der Animation exakt gleich istund nur der angehangene Wert, in Form einer Zahl, von einer anderen Animationunterscheidet.

Name playMove format ["Animation%1",ceil random 7];

Zufallsanimation aus einem Array beziehenDie andere Variante wählt eine Animation aus einem Array aus. Der Vorteil daran ist, dassman in diesem Array diverse verschiedene Animationen festlegen kann. Dies macht mangewöhnlich mit einem Skript, welches dabei wie folgt aussehen kann:

[Name] exec "scripts\animation.sqs"

AnimationsstatusDer Animationsstatus gibt wieder, ob die Animation noch läuft oder schon beendet ist.Dies lässt sich nun natürlich wieder für diverse Dinge zu Nutze machen.

? animationState _Unit == "Anim1" : hint “Anim läuft”

Animationswechsel verhindernWer kennt das nicht, dass eine Einheit nach einer gewissen Zeit die Animation abbrichtund wieder in die Ausgangshaltung wechselt. Dies tut sie genau dann, wenn dieAnimation beendet ist. Möchte man aber, dass die Einheit in jedem Fall in der gegebenenAnimation verharren soll, muss man sich den DisableAI-Befehl zu Nutze machen.

Dazu gibt man der Einheit zunächst den Befehl die Animation auszuführen und direkt imAnschluss verwendet man den Befehl DisableAI, was wie folgt aussieht:

Name playMove "Animationsbefehl"

Name disableAI "Anim"

Möchte man, dass die Einheit irgendwann wieder aus der gehaltenen Animation auftautund wieder in die normale Haltung wechselt, ruft man einfach folgende Syntax auf:

Name enableAI "Anim"

Eine weitere Möglichkeit einer Animationsschleife ist die Vergabe eines Eventhandlers.

Name switchMove "Animation";

Name addEventHandler ["AnimDone", {Name switchMove "Animation"}];

140

_Unit = _this select 0_Anim = ["Anim1", "Anim2", "Anim3", "Anim4", "Anim5", "Anim6"];_Unit playMove ( _Anim select floor(random((count _Anim) -0.5 )));exit;

Page 140: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 5

Folgend eine Liste der wichtigsten Animationsbefehle:

141

Animation BezeichnungAmovPsitMstpSlowWrflDnonActsPercMstpSnonWnonDnon_MarianQ_TVstudioMan_Loop1ActsPercMstpSnonWnonDnon_MarianQ_TVstudioMan_Loop2ActsPercMstpSnonWnonDnon_MarianQ_TVstudioMan_Loop3ActsPercMstpSnonWnonDnon_MarianQ_TVstudioMan_Loop4ActsPercMstpSnonWnonDnon_MarianQ_TVstudioMan_LoopLongActsPercMstpSnonWnonDnon_MarianQ_WarReporterAwopPpneMstpSgthWnonDnon_throwAwopPercMstpSgthWrflDnon_Throw1AswmPercMrunSnonWnonDf_AswmPercMstpSnonWnonDnonDeadStateSprintBaseDf (SprintBaseDfL=rennt links / SprintBaseDfR rennt rechts)SprintCivilBaseDf (SprintCivilBaseDfL=links / SprintCivilBaseDfR=rechts)AmovPercMstpSnonWnonDnon_AwopPercMstpSoptWbinDnonAmovPercMstpSnonWnonDnon_EaseAmovPercMstpSnonWnonDnon_AmovPknlMstpSnonWnonDnonAmovPercMstpSsurWnonDnonAmovPercMstpSnonWnonDnon_AinvPknlMstpSnonWnonDnonAmovPercMstpSlowWrflDnon_AmovPsitMstpSlowWrflDnonAinvPknlMstpSnonWnonDnon_AmovPknlMstpSrasWpstDnonAinvPknlMstpSlayWrflDnon_AmovPknlMstpSrasWrflDnonAinvPknlMstpSlayWrflDnon_healedAinvPknlMstpSlayWrflDnon_healed2AinvPknlMstpSnonWnonDnon_healed_1AinvPknlMstpSnonWnonDnon_healed_2AinvPknlMstpSlayWrflDnon_medicAinvPknlMstpSnonWnonDnon_medic_1AinvPknlMstpSnonWnonDnon_medic_2AidlPercMstpSnonWnonDnon08AinvPknlMstpSnonWnonDnon_1AinvPknlMstpSnonWnonDnon_2AinvPknlMstpSnonWnonDnon_3AinvPknlMstpSnonWnonDnon_4AmovPercMrunSlowWrflDf_AmovPpneMstpSrasWrflDnonAmovPercMstpSnonWnonDnon_carCheckPushAmovPercMstpSnonWnonDnon_carCheckWheelAmovPercMstpSnonWnonDnon_carCheckWashAmovPercMstpSnonWnonDnon_exerciseKataAmovPercMstpSnonWnonDnon_exercisekneeBendAAmovPercMstpSnonWnonDnon_exercisekneeBendBAmovPercMstpSnonWnonDnon_exercisePushupAmovPercMwlkSlowWrflDf_ActsPercMstpSlowWrflDnon_HitLegAmovPercMstpSlowWrflDnon_ActsPercMstpSlowWrflDr_HideFromFireActsPpneMstpSnonWnonDnon_AmovPercMstpSnonWnonDnon_Injured3AsigPercMstpSlowWrflDnon_AmovPercMrunSlowWrflDnon_GoGo

Setzt sich hinSitztSitzt und redetSitzt und redetSitzt und redetSitzt und redetSteht rumWirft liegend GranateWirft GranateSchwimmtStirbtRennt mit WaffeRennt ohne WaffeBenutzt FernglasNimmt Haltung anKniet auf einem KnieHände hinter KopfLegt etwas hin (Pipebomb)Setzt sich auf BodenKniet nieder und keucht Kniet nieder und keuchtHeilanimation Heilanimation Heilanimation Heilanimation Verarztet OpferVerarztet OpferVerarztet OpferSchultert WaffeKniet nieder (Waffenkiste)Kniet nieder (Waffenkiste)Kniet nieder (Waffenkiste)Kniet nieder (Waffenkiste)Geht in StellungFahrzeugkontrolleFahrzeugkontrolleWäscht FahrzeugMacht KampfsportKniebeugen lang.Kniebeugen schellLiegestützeWird am Bein getroffenWeicht Beschuss ausLehnt getroffen an etwas anVorwärts Männer

Page 141: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

142

Animation BezeichnungAmovPercMstpSlowWrflDnon_SaluteAmovPercMstpSnonWnonDnon_seeWatchAmovPercMstpSnonWnonDnon_talkingAmovPercMstpSlowWrflDnon_talkingActsPercMstpSnonWnonDnon_MarianQ_shot1manActsPercMstpSnonWnonDnon_MarianQ_shot3manActsPercMstpSnonWnonDnon_MarianQ_shot4manActsPercMstpSnonWnonDnon_MarianQ_shot5manActsPercMstpSnonWnonDnon_MarianQ_TVstudioMan_Loop1AmovPsitMstpSlowWrflDnon_SmokingAmovPsitMstpSlowWrflDnon_WeaponCheck1 (Gilt von 1-2)AmovPsitMstpSnonWnonDnon_groundAmovPsitMstpSlowWrflDnonActsPercMstpSnonWpstDnon_InterrogationSoldierActsPercMstpSnonWnonDnon_InterrogationVictimActsPercMstpSnonWrflDnon_ArrestingSoldierActsPercMstpSnonWnonDnon_ArrestingManActsPercMstpSnonWnonDnon_ArrestingManLoopAmovPlieMstpSnonWnonDnonActsPknlMstpSnonWnonDnon_TreatingInjuredActsPpneMstpSnonWnonDnon_Injured1 (Zahl gilt von 1-2)ActsPknlMstpSnonWrflDnon_TreatingSoldierAsigPercMstpSlowWrflDnon_SendMenInActionActsPercMstpSlowWrflDnon_listeningOrdersUnderFireActsPknlMstpSnonWnonDnon_ThingPassingStillActsPercMrunSlowWrflDf_FlipFlopParaAsigPercMstpSlowWrflDnon_GoGoActsPercMstpSnonWnonDnon_ThingPassingStillActsPercMstpSlowWrflDnon_ThingPassingMovingActsPercMwlkSlowWrflDnon_PatrolingBase1 (Zahl gilt von 1-4)ActsPercMstpSlowWrflDnon_LollingActsPercMstpSnonWnonDnon_DancingDuoIvanActsPercMstpSnonWnonDnon_DancingDuoStefanActsPercMstpSnonWnonDnon_DancingStefanActsPpneMstpSnonWnonDnon_PanickingActsPercMstpSnonWnonDnon_Panicking1 (Gilt von 1 bis 7)ActsPercMrunSlowWrflDf_TumbleOverActsPknlMstpSlowWrflDnon_ThingPassingMovingActsPercMstpSlowWrflDnon_ListeningActsPercMstpSnonWnonDnon_ListeningActsPercMstpSnonWnonDnon_Talking1 (Zahl gilt von 1-2)ActsPercMstpSlowWrflDnon_Talking1 (Zahl gilt von 1-2)m2s1kanclerm2s2kanclerm2s1pobocnikm2s2Zoldak1

Soldat grüßtSchaut auf die UhrUnterhält sichUnterhält sichUnterhält sichUnterhält sichSicherungSicherung 2SitztSitzt und rauchtSitzt, checkt WaffeSitzt/Hände hintenSitzt / Waffe auf dem SchoßVerhörVerhöropferVerhaftung einer PersonVerhaftungsopferLiegt gefesseltLegt sich getroffen auf BodenWindet sich vor SchmerzenWindet sich vor SchmerzenBehandelt Verletzten im KampfGibt geduckt AnweisungenHört Anweisungen geduckt zuKniet auf Boden und redetLäuft und mach VorwärtsrolleVorwärts MännerAusweiskontrolleAusweiskontrolleLangweilige WacheGähnt und streckt sichTanzt fröhlichTanzt fröhlichTanzt fröhlichPanikanimationPanikanimationStoplert, rennt weiterLäuft geduckt und sichertHört sich Ansprache anHört sich Ansprache anSteht ohne Waffe und redetSteht mit Waffe und redetLäuft/ gibt ZeichenSteht und hört zuSteht und erzähltSteht und ziehlt

Page 142: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

143

Animation Bezeichnungm2s2Zoldak2m2s2Orlando_centeredm2s2Wicks_centeredm2s2Lamb_centeredm2s2kancler_centeredm2s2bodyguard_centeredXOutroZoldak1XOutroZoldak2XOutroLambXOutroOrlandom1s1Wicksm1s2Wicksm2s1wicksm2s2Wicksm2s3Wicksx01Wicksm5s1orlandom2s2Orlandom2s3Orlandom6aS1Orlandom6aS2Orlandox03Orlandox04Orlandom5s1Gonzalesm6aS1Gonzalesm6aS2GonzalesM6bs2GonzalesM6bs3Gonzalesx04Gonzalesx05s1Gonzalesx05s2Gonzalesx05s4Gonzalesx05s5bGonzalesm1s1Pedrosx05s1Lambx05s2Lambx05s3Lambx05s4Lambx05s5aLambx05s5bLambM6bs2LambM6bs3Lambx01Lambx03Lambm1s2lambm5s1Lamb

Steht / ziehlt aus HüfteHebt Hände / schützt sichSteht mit Gewehr in HüfteHält Waffe nach obenLäuft panisch umherSteht mit erhobenen. Händen und fälltSteht nach vorn gebeugtLeht sich an jemanden anWaffe in Hüfte und nicktSteht mit verschränkten Armen Hält Waffe am TragegriffHält Waffe auf Hüfte hoch/gibt ZeichenHält Waffe auf Hüfte hochHält Waffe in VorhalteLiegt getroffen am BodenHält Waffe am Tragegriff/gibt ZeichenLäuft mit gesch. Waffe umher/gestikuliertHebt Hände, läuft umher und schützt sichSteht mit geschulteter WaffeSteht mit verschränkten ArmenSteht mit verschränkten ArmenLäuft herumLäuft herum und gestikuliertLäuft herum und gestikuliertSteht und hört zuLäuft herum und gestikuliertLäuft herum und gestikuliertSteht, gestikuliert und verschränkt ArmeSchaut auf Boden und läuft umherSteht mit Hand am KinnSteht mit Hand am Kinn und gestikuliertJoggt nach vorne und erzähltFaltet Hände und erklärtRuft um Hilfe und zeigt auf etwasSteht mit erhobener WaffeSteht mit erhobener WaffeSteht mit erhobener Waffe u. gestikuliertSteht mit erhobener Waffe und läuftSteht mit erhobener Waffe u. gestikuliertSteht mit erhobener Waffe u. gestikuliertLäuft mit Waffe unterm Arm und gestikuliertSteht mit Waffe unterm Arm Läuft mit erhobener WaffeLäuft mit Waffe in VorhalteHält Waffe hoch und Hand auf den RückenHält Waffe hoch und Hand auf Magazin

Kap

itel 5

Page 143: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Mit folgenden Befehlen lassen sich KI´s abschalten. Das bedeutet, dass sie dann nichtmehr schießen oder auch sich nicht mehr bewegen. Hierbei gibt es folgende Formen:

Name disableAI "Move" - Einheit bewegt sich nicht mehrName disableAI "Target" - Einheit lässt von Ziel abName disableAI "Autotarget" - Einheit verfolgt und beobachtet nichtsName disableAI "Anim" - KI kann Animation nicht mehr wechselnName disableAI "Watch" - Einheit schaut sich nicht mehr um

Mit enableAI macht man das Ganze am Ende wieder rückgängig und die Einheit wirdsich wieder normal verhalten.

Mit dem setVelocity-Befehl hat man die Möglichkeit, ein Objekt in eine Richtung gleitenzu lassen. Dabei fliegt das Objekt in die angegebene Richtung, welche mit XYZ-Wertenbestimmt wird. Die Syntax dafür schaut wie folgt aus:

Name setVelocity [0,100,100]

Mit den folgend erläuterten Befehlen hat man die Möglichkeit kurze Infomationszeilenerscheinen zu lassen. Dabei gibt es Unterschiede welche wie folgt aussehen:

hint "Text" - Erscheint nach AufrufhintC "Text" - Erscheint nach Aufruf und Spiel stoppthintCadet "Text" - Erscheint nur im Kadettmodus

Möchte man machen, dass eine Einheit egal was passiert steht, liegen bleibt oder kniet,nutzt man dafür die folgend aufgeführten Befehle. Kneel und KneelDown sind seitens BIvorgesehen, funktionieren aber noch nicht (Stand Version 1.15). Eventuell funktionierendiese Befehle in Zukunft und daher hier die Auflistung.

Name setUnitPos "Up" - Einheit bleibt stehenName setUnitPos "Middle" - Einheit knietName setUnitPos "Kneel" - Einheit kniet Name setUnitPos "KneelDown" - Einheit kniet und wählt zwischen

Liegen und KnienName setUnitPos "Down" - Einheit bleibt liegenName setUnitPos "Auto" - Einheit entscheidet selbst

144

5.57 - KI abschalten

5.59 - Der Informationstext

5.58 - SetVelocity

5.60 - Einheit bleibt liegen, kniet oder steht

Page 144: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Jedes der Objekte auf der Karte bzw. im Editor hat eine ID. Diese kann man sich im Editormit dem Button IDs zeigen anzeigen lassen. Diese lassen sich nun direkt ansprechen.Man hat also die Möglichkeit zu prüfen, ob ein Objekt noch vorhanden, beschädigt oderähnliches ist. Dies bringt gleich eine Menge Möglichkeiten mehr, was zum Beispiel dieMissionsziele betrifft.

Der alte Befehl aus Operation Flashpoint lautete dabei wie folgt:

(Object 12345) setDamage 1

Dieser läuft allerdings in Armed Assault in dieser Form nicht mehr. In ArmA nimmt mansich nun den NearestObject- oder den NearestBuilding-Befehl zur Hilfe und regelt dasdamit.

Dazu setzt man im Idealfall zunächst eine Spiellogik auf das Objekt, merkt sich die ID desanzusprechenden Objekts und trägt in die Initzeile der Logik folgende Syntax ein:

House=position this nearestObject 441616

oder House=nearestObject this bzw. House=nearestBuilding this

Hierbei ist House ein variabler Wert, welcher daher frei festgelegt werden kann. Hierkönnte also auch Objekt1 stehen. Wichtig dabei ist der Rest der Syntax, bei welcher ja amEnde die eigentliche ID des Objektes steht, welches angesprochen werden soll. DieseLogik setzt man nun unmittelbar auf das anzusprechende Objekt. Statt einer Logik kannman alternativ natürlich auch ein anderes x-beliebiges Objekt verwenden. Wichtig ist,dass es auf oder im unmittelbaren Bereich der ID sitzt und die Initzeile richtig definiertwird. Verwendet man den Befehl mit direkter ID-Angabe, kann man die Logik frei setzen.

Im Editor sieht das Ganze dann etwa so aus:

Nachdem man nun dem Objekt bzw. der ID einen Namen (oben: House) zugewiesen hat,kann man es auf verschiedene Weise ansprechen. Auf der folgenden Seite sind ein paarMöglichkeiten zur Auswahl, welche unter anderem möglich sind.

Objekt Schaden zuweisen:Nachdem man nun das Objekt mit einem Namen versehen hat, kann man ihm Schadenzufügen oder es ganz normal heilen. Dies erfolgt dann wie folgt mit der gewohntenSetDamage-Syntax:

House setDamage 1

145

Kap

itel 5

5.61 - ID´s verwenden

Page 145: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Objektschaden auslesen:Mit Hilfe der folgend aufgeführten Syntax hat man die Möglichkeit, den Schaden einesObjektes auszulesen und diesen dann für andere Zwecke zu verwenden.

getDammage House

Diese Syntax könnte man zum Beispiel jetzt für die Verwendung einer Bedingung nutzen,um zu prüfen, ob das Gebäude bzw. Objekt einer Schaden größer als Wert hat. In einemPrüfauslöser könnte das wie folgt aussehen:

Prüfauslöser:

Achse a/b: 0Bedingung: getdammage House > 0.7bei Aktivierung: hint “Das Haus ist stark beschädigt!”

Zerstörung als Bedingung oder Missionsziel:Wie auf der Vorseite bereits erwähnt, gibt es nun die Möglichkeit die Zerstörung einesObjektes als Bedingung oder Missionsziel zu definieren. Möchte man beispielsweise eineBedingung haben, setzt man diese in die Bedingungszeile eines Auslösers oderWegpunktes ein.

Bedingung: ! (alive House) oder not alive House

Möchte man das zerstörte Objekt als Missionsziel definieren, geht das unter anderem,indem man einen Prüfauslöser auf die Map setzt und diesen als Ende 1 definiert.

Prüfauslöser:

Typ: Ende 1Einmal

Achse a/b: 0Text: MissionszielBedingung: ! (alive House)

Hier bietet es sich wieder an den Countdown zu verwenden, damit Ende 1 nicht gleichbei Zerstörung, sondern erst ein wenig später ausgelöst wird. Ich verweise hier zusätzlichauf das Kapitel 4.6, in welchem das Beenden einer Mission sehr gut erläutert ist.

146

Page 146: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Unzerstörbares Objekt:Möchte man in seiner Mission Objekte haben, die absolut nicht zerstörbar sein sollen, hatman unter anderem folgende Möglichkeit. Zunächst weist man, wie in Kapitel 5.61bereits erklärt, dem Objekt einen Namen zu und setzt dann einen Prüfauslöser mitfolgenden Einstellungen:

Prüfauslöser:

Typ: MehrfachAchse a/b: 0Bedingung: getDammage House > 0.1bei Aktivierung: House setdamage 0

Wenn das Objekt nun einen größeren Schaden als 0.1 ausweist, wird der Schaden wiederauf 0 gesetzt. Da der Auslöser auf Mehrfach steht, wird das Objekt also nie zerstörtwerden können.

Türen eines Objektes öffnen/schließen:Einige Objekte verfügen über eine animierte Tür, welche man per Actionmenü öffnenbzw. schließen kann. Diese kann man nun auch steuern, wenn man das Objekt zuvor, wiein Kapitel 5.61 erläutert, mit einem Namen versehen hat. Die Syntax hierfür lautet:

House animate ["Dvere1",1]

Dvere1ist Tür 1. Für jede weitere Tür dann eben Dvere2, Dvere3 usw. Mit 0 schließt mansie in der Regel und mit 1 öffnet man sie dann wieder. Weiter Möglichkeiten sind:

Schranke animate ["Bargate",1] - zum Bedienen der Schranke

Ziel animate ["Terc",1] - zum Bedienen der Zielscheibe

Laternen bzw. Lichter ausschalten:Mit Hilfe der ID´s hat man auch die Möglichkeit Lampen oder Lichter auszuschalten.Hierzu muss man dem Objekt zunächst erstmal mittels dieser Syntax einen Namenzuweisen:

Lampe1=nearestObject this

Dazu also einen Logikpunkt neben die Lampe setzen, die obige Syntax in die Initzeileeintragen und danach von wo aus auch immer ansprechen (Wegpunkt, Auslöser, etc.).Dafür benötigt man nun noch diesen Befehl:

Lampe1 switchLight "Off"

Trägt man die beiden Befehlszeilen komplett in die Logikinit ein, ist die Lampe gleich vonBeginn an ausgeschaltet.

Lampe1=nearestObject this; Lampe1 switchLight "Off"

147

Kap

itel 5

Page 147: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Viele Gebäude in Armed Assault sind, wie auch schon in Operation Flashpoint, begehbar.Als Neuheit ist ja hinzugekommen, dass man als Anführer einer Gruppe seinen Soldatendirekte Häuserpositionen per Mausklick zuweisen kann, welche sie dann beziehen.

Dies sind im Modell des Gebäudes fest vergebene Hauspositionen, von denen jedePosition eine feste Nummer hat. Als Editierer kann man nun gezielt Einheiten oder auchObjekte in und auf den Gebäuden an den jeweiligen Positionen platzieren. Alshervorragendes Beispiel dient hier das Hotel, welches mit seinen 265 festgelegtenPositionen die meisten davon aufweist. Da dieses zum Teil sehr unübersichtlich ist, sindauf den folgenden Seiten alle fünf Etagen mit den Hauspositionen aufgeführt. Alsbesonderes Feature ist im Kapitel 6.16 der Missionsspecials ein Haus-Patroillenskript zufinden, welches Einheiten in dem Hotel Streife laufen lässt.

Um eine Einheit nun in einem Gebäude zu platzieren setzt man diese direkt auf dasGebäude und trägt folgende Syntax in die Initialisierungszeile ein:

this setPos (nearestBuilding this buildingPos Positionsnummer)

Dieser Befehl ist wesentlich unkomplizierter als Name SetPos [x,y,z], weil man nichtzusätzlich die Koordinaten ermitteln muss. Hat man dem Gebäude vorher einen Namenzugewiesen, wie in Kapitel 5.61 erklärt, geht auch diese Syntax:

this setPos (Hausname buildingPos Positionsnummer)

Möchte man eine Einheit auf einer Zufallsposition eines Gebäudes platzieren, nimmt manden Randombefehl:

this setPos (nearestBuilding this buildingPos Random 265)

Mit diesem wird jetzt eine Zufallsposition im Hotel von 0-265 bestimmt.

Erdgeschoss (Positionen 0 bis 42)

148

5.62 - Einheiten in Gebäuden platzieren

Page 148: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

1. Etage (Positionen 44 bis 101 + 262, 263, 264, 265)

2. Etage (Positionen 104 bis 165 + 260)

149

Kap

itel 5

Page 149: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

3. Etage (Positionen 166 bis 227 + 259)

Dach (Positionen 228 bis 258)

150

Page 150: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Rundfunkstudio

Erdgeschoss (Positionen 0 bis 27)

1. Etage (Positionen 28 bis 47)

151

Page 151: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

2. Etage (Positionen 48 bis 70)

Dachgeschoss (Positionen 71 bis 90)

152

Page 152: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

So wie man Einheiten an Gebäudepositionen setzen kann, kann man natürlich auchEinheiten den Befehl erteilen, sich an eine x-beliebige Position im Gebäude zu begeben.Hierzu verwendet man eine der folgenden Syntaxes:

Name doMove (nearestBuilding this buildingPos 123)Name doMove (Haus1 buildingPos 123)

Oder zu einer Zufallsposition:

Name doMove (Haus1 buildingPos random 123)

Wie man einem Gebäude oder einem Objekt einen Namen gibt, ist im vorherigen Kapitel5.61 ausreichend erläutert. Zum Beispiel:

Haus1=nearestBuilding this

Die Position einer Einheit lässt sich auslesen und dann als Text ausgeben oder alsBedingung für etwas verwenden. Hierbei gelten ganz normal die XYZ-Werte, wobei derUnterschied zwischen getPosASL und getPos zu beachten ist.

getPos gibt die Höhe über dem Land bzw. einem Objekt ausgetPosASL gibt die exakte Höhe über dem Meeresspiegel aus

X-Position – getPos Name select 0

Y-Position – getPos Name select 1

Z-Position – getPosASL Name select 2

Textausgabe einer Position: Hierzu macht man sich die Hint format oder der Titletext format Syntax zunutze, welcheverschieden und je nach Bedarf definiert werden kann. Man kann sich hier eineneinzelnen Wert oder auch alle drei Werte gleichzeitig ausgeben lassen.Die folgende Syntax gibt alle drei Werte in der XYZ-Reihenfolge mit exakter Höhe überdem Meeresspiegel aus. GetPosASL ist bei X und Y uninteressant.

hint format ["%1", getPosASL Name] oder hint format ["%1", position Name]

Möchte man nur einen einzelnen Wert haben, definiert man die Syntax mit dementsprechenden Select-Wert. Hier als Beispiel die Ermittlung der Höhe ü. Meer.

hint format ["%1", getPosASL Name select 2]

hint format ["Ihre Flughöhe beträgt %1", getPosASL Name select 2]

titleText [format["%1 Meter", getPosASL Name select 2],"plain down"]

153

Kap

itel 5

5.63 - Einheit begibt sich zu Gebäudeposition

5.64 - Position auslesen

Page 153: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Natürlich sollte man es mit den Positionen ausgeben lassen auch nicht übertreiben.

Position als Bedingung:Die Position kann man nun auch als Bedingung für etwas verwenden. Zum Beispiel sollein Auslöser ausgelöst werden, wenn Heli1 höher als 100 Meter fliegt oder der Spielergewarnt wird, wenn er in einen größeren Y-Wert erreicht, als er darf. Also zu weit nachNorden oder Süden gelaufen, gefahren oder geflogen ist. Man kann so eine Spielflächeganz einfach beschränken. Für die Flughöhe sieht die Syntax hierbei wie folgt aus:

? getPosASL Heli select 2 > 100

Oder als Beispiel die Prüfung ob die Einheit den Y-Wert schon überschritten hat.

? getPosASL Name select 1 > 10600

154

Page 154: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Einen Eventhandler kann man als eine Bedingung sehen, welche man einer odermehreren Einheiten oder Objekten zuweisen kann. Ist diese Bedingung erfüllt, wird dieentsprechend festgelegte Aktion ausgeführt. Man fügt einer Einheit also einen Event bzw.ein Ereignis zu, welches als Bedingung für etwas definiert wird. Eventhandler lassen sichganz einfach vergeben (addEventhandler) oder auch wieder entfernen(removeEventhandler).

Eventhandler vergebenUm einen Eventhandler zu vergeben verwendet man folgende Syntax:

Name addEventHandler ["Eventhandler", Code]

Code steht für die Aktion, welche ausgeführt werden soll, wenn das Ereignis eintritt.Hierbei hat man vollen Handlungsspielraum, was man dort definieren möchte. Infolgendem Beispiel wird der Eventhandler Killed vergeben und als Code ein Skriptdefiniert, welches ausgelöst werden soll, wenn das Ereignis, also der Tod der Einheit,eingetreten ist.

Name addEventHandler ["Killed", {_this exec "Skript.sqs"}]

In folgendem Beispiel wird der Eventhandler an mehrere Einheiten vergeben. Tritt jetzt beieiner der festgelegten Einheiten der Tod ein, kommt die definierte Textmeldung "Test".

{_x addEventHandler ["Killed", {hint "Test"}]} foreach [Name1, Name2,...]

Als hervorragendes Beispiel dient hier auch eine Textausgabe, welche anzeigen soll,welche Einheit wen getötet hat. Dies ist für den Multiplayerbereich sehr interessant. Dabeivergibt man den Eventhandler an alle Einheiten, die dabei berücksichtigt werden sollen.Die Syntax schaut hierbei wie folgt aus.

{_x addEventHandler ["Killed", {hint format["%1 killed by %2",_this select 0, _this select 1]}]} foreach [S1, S2, S3, S4]

Wird jetzt die Einheit S1 durch S2 getötet, wird der im Editor definierte Name, also S1, perTexteinblendung angezeigt. S1 killed by S2. Hier nochmal der hint format Abschnitteinzeln aufgeführt:

hint format ["%1 killed by %2",_this select 0, _this select 1]

Eventhandler für Einheiten in einem Bereich vergebenEventhandler lassen sich auch gleich für mehrere Einheiten in einem Auslöserbereichvergeben. Hier zum Beispiel der Fired-Eventhandler, der das Skript Alarm.sqs auslöst.

{_x addEventHandler ["Fired",{_this exec "Alarm.sqs"}]} foreach thisList

Eventhandler entfernen:So einfach wie sich Eventhandler vergeben lassen, kann man sie auch wieder entfernen.Hierzu verwendet man lediglich folgende Syntax:

Name removeEventHandler ["Killed", 0]

155

Kap

itel 5

5.65 - Der Eventhandler

Page 155: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Eventhandler-Übersicht:Hier eine Übersicht mit verschiedenen Syntaxbeispielen zu den Eventhandlern.

156

Eventhandler BeispielAnimChanged Syntax:

Name addEventHandler ["AnimChanged", {[Einheit, Animation]}]Wird immer ausgelöst, wenn die definierte Animation gestartet wird.

AnimDone Syntax:Name addEventHandler ["AnimDone", {[Einheit, Animation]}]Wird immer ausgelöst, wenn die definierte Animation beendet wird.

Dammaged Syntax:Name addEventHandler ["Dammaged", {hint str (_this)}]Wird ausgelöst, wenn die Einheit beschädigt wird und zeigt an was an der Einheit beschädigt bzw. getroffen wurde.

Engine Syntax:Name addEventHandler ["Engine", {hint str (_this)}]Wird ausgelöst, wenn das Fahrzeug angeschaltet wird.

Fired Syntax:Name addEventHandler ["Fired", {hint "Feuer einstellen"}]Dieser Eventhandler wird aktiviert, wenn die Einheit ihre Waffe abfeuert.

Fuel Syntax:Name addEventHandler ["Fuel", {hint str (_this)}]Wird ausgelöst, wenn sich der Tankstatus ändert. (1=voll/0=leer)

Gear Syntax:Name addEventHandler ["Gear", GearState]GearState: TRUE - Fahrwerk ausgefahren / FALSE – Fahrwerk drin

GetIn Syntax:Name addEventHandler [Name, Fahrzeugposition, Fahrzeugname]Wird ausgelöst, wenn die Einheit in das Fahrzeug einsteigt.Positionen: Driver, Gunner, Commander, Cargo

GetOut Syntax:Name addEventHandler [Name, Fahrzeugposition, Fahrzeugname]Wird ausgelöst, wenn die Einheit aus dem Fahrzeug aussteigt.

Hit Syntax:Name addEventHandler ["Hit", {hint "Diese Einheit wurde getroffen"}]Diese Aktion löst nicht immer aus.

Init Syntax:Name addEventHandler []Macht nur in einer Config Sinn!Wird beim Missionsstart ausgeführt, aber eher unfunktionell und unwichtig.

IncomingMissile Syntax:Name addEventHandler ["IncomingMissile", {hint "Treffer"}]Wird ausgelöst, wenn Einheit mit einer Rakete beschossen wird.

Killed Syntax:Name addEventHandler ["Killed", {_this exec "script.sqs"}]Wird ausgelöst, wenn die Einheit getötet wurde.

Page 156: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Texteinblendungen sind, wie sicher schon festgestellt, nicht nur wichtig für eine Mission,sondern vor allem auch für das Editing oder Scripting. Man hat hiermit die Möglichkeitsich Informationen ausgeben zu lassen, um später darauf aufbauen zu können oder diesefür andere Bereiche verwenden zu können. Folgend nun eine Zusammenfassung derTexteinblendarten in Armed Assault. Hierbei wird auch nochmal erläutert, wie welcheTexteinblendung gemacht wird und wie Textvariablen mit eingebunden werden können.

Die Hint-VarianteZunächst gibt es da die Hint-Variante, mit welcher man oben links am Bildschirmrandeine Meldung bekommt. Diese kann man nun auf seine Bedürfnisse anpassen.

Standard: hint "Mein Text"

Hier die Ausgabe der Koordinaten des Spielers über Meeresspiegel:

hint format ["Koordinaten: %1", getPosASL Player]

hint format ["Ihre Flughöhe beträgt %1", getPosASL Player select 2]

Oder die Ausgabe der Waffen bzw. Munitionstypen oder der Seite dieser Einheit:

hint format ["%1", weapons Name];

hint format ["%1", magazines this];

hint format ["%1", side Name];

hint format ["%1 gegen %2", side Name1, side Name2];

Hier in Verbindung mit einem Eventhandler:

Name addEventHandler ["Fired", {hint format ["%1", _this]}]

Und hier mit Zugriff auf einen Stringtablewert:

hint localize "STR_MP_04"

Die TitleText-VarianteDie TitleText-Variante funktioniert vom Prinzip her genauso, wie die der Hint-Variante.Hier erfolgt die Einblendung nur eben dort, wo man sie definiert. Also zum Beispiel mittenauf dem Bildschirm oder am unteren Rand.

Standard: titleText ["Paraiso\nOne day later…","Plain",4]

Variante zum Ausgeben einer Entfernung zweier Einheiten bzw. Position Spieler:

titleText [format["%1 Meter", Name1 distance Name2],"Plain Down"]

titleText [format["%1 Meter", getPosASL Player select 2],"Plain Down"]

Und hier mit Zugriff auf einen Stringtablewert:

titleText [format [localize "STR_ART_H7"], "Plain Down"];

157

Kap

itel 5

5.66 - Texteinblendarten

Page 157: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

In Armed Assault sind von Haus aus Unmengen an Textvariablen vordefiniert, welche jaim gesamten Spiel in Form von Texteinblendungen im Menü sowie im Spiel usw.auftauchen. Einige davon kann man somit hervorragend für seine Mission verwenden,ohne eine eigene Stringtable.csv schreiben zu müssen. Hier eine kleine Übersicht einigermehr oder weniger wichtiger Stringtablewerte, welche man ganz einfach mit dem Hint-oder Titletext-Befehl verwenden kann.

158

Quelle TextSTR_ARMEDASSAULT_CAPITALSTR_ARMEDASSAULTSTR_ARMA_SPLASH_1STR_SAHRANI_ISLANDSTR_SAHRANISTR_SAHRANI_SOUTHSTR_SAHRANI_NORTHMISSION_COMPLETED_CAMISSION_FAILED_CAMISSION_SUCCESFULLMISSION_DEFEATEDSTR_MISSION_OBEYSTR_MP_GAME_DESC_OBJECTIVESSTR_MP_GAME_DESC_PILOTDOWNSTR_MP_GAME_DESC_CSWEAPSTR_MP_GAME_DESC_ESCAPESTR_MP_GAME_DESC_WARCRYSTR_MP_GAME_DESC_CITYCONFLICTSTR_ART_H1STR_ART_H8 STR_ART_H7 STR_ART_H3 STR_ART_H6 STR_ART_H9 STR_ART_H10 STR_MARKER_STARTSTR_WP_HOLDSTR_WP_BASESTR_WP_ENEMYBASESTR_WP_MEETINGPOINT STR_WP_PICKUPSTR_WP_SADSTR_WP_ATTACKSTR_WP_DESTROYSTR_WP_DESTROYTARGETSTR_WP_SEIZEANDHOLDSTR_WP_EXTRACTSTR_MP_GAME_DESC_HUNTING

Armed AssaultARMED ASSAULTPräsentiertSahrani IslandSahraniDas Königreich Süd-SahraniDemokratische Republik SahraniEinsatz abgeschlossenEinsatz fehlgeschlagenEinsatz erfolgreichFeindliche Truppen besiegtEinsatz gescheitert. Sie haben die Befehle nicht befolgt.Zerstören Sie die feindlichen ZieleFinden und retten Sie die Piloten.Kehren Sie lebend zurück!Entkommen Sie im Hubschrauber von der Insel!Eine großangelegte Operation: Befreien Sie die Stadt.Erobern und verteidigen Sie die Stadt.Klicken Sie auf die KarteZUERST GÜLTIGE ZIELKOORDINATEN EINGEBEN!ZIELKOORDINATEN AKZEPTIERTFEUERMISSION WIRD GESTARTETAUSSER REICHWEITE! NEUE ZIELPOSITION WÄHLEN!FEUERMISSION VORBEIKANN NICHT FEUERNInfiltrationspunktPosition haltenBasisFeindliche BasisTreffpunktAbholpunktSuchen und zerstörenAngreifenZerstörenZiel zerstörenErobern und verteidigenExfiltrationspunktTransportieren Sie unter Beschuss strategische Ressourcen

5.67 - Stringtable Grundwerte

Page 158: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Armed Assault bietet die Möglichkeit Wegpunkte für Gruppen bzw. Einheiten währenddes Spielens zu erstellen oder auch zu löschen und diese Wegpunkte auch mitWegpunkttypen, also Wegpunktfunktionen zu versehen.

Syntax:

WP1 = Name addWaypoint [position, Radius]

In folgendem Beispiel wird für die Gruppe Group1 ein Wegpunkt mit Namen WP1 undeinem Radius von 100 Metern an der Position des Spielers erstellt.

WP1 = Group1 addWaypoint [position Player, 100]

Dieser bekommt jetzt noch eine Wegpunktfunktion zugewiesen, welche im Kapitel 1.5aufgelistet sind. In diesem Beispiel bekommt der WP1 die Funktion „Sentry“.

WP1 setWaypointType "SENTRY"

[Group1, 2] setWaypointType "SENTRY"

Dazu gibt es jetzt noch eine Menge weiterer Möglichkeiten, diesen Wegpunkt zudefinieren. Die grundlegenden Definitionen für einen Wegpunkt findet man im Kapitel1.5 unter -Wegpunkte einfügen-. Zusätzlich gelten folgende Befehle:

Wegpunkte entfernenSo wie sich Wegpunkte erstellen lassen, kann man sie auch wieder entfernen. Dazuverwendet man folgende Syntax:

deleteWaypoint [Name, Wegpunktnummer]

deleteWaypoint Wegpunktname

159

Kap

itel 5

Befehl Beispiel[Name, Wegpunktnummer] setWaypoint… …

setWaypointBehaviour [Group1, 2] setWaypointBehaviour "AWARE"Wegpunktname setWaypointBehaviour "AWARE"

setWaypointCombatMode [Group1, 2] setWaypointCombatMode "RED"setWaypointDescription [Group1, 2] setWaypointDescription "Beziehen Sie Stellung"setWaypointFormation [Group1, 2] setWaypointFormation "LINE"setWaypointHousePosition [Group1, 2] setWaypointHousePosition 1setWaypointPosition [Group1, 2] setWaypointPosition [position player, 0]setWaypointScript [Group1, 2] setWaypointScript "target.sqs player"setWaypointSpeed [Group1, 2] setWaypointSpeed "FULL"setWaypointStatements [Group1, 2] setWaypointStatements ["true", ""]setWaypointTimeout [Group1, 2] setWaypointTimeout [5, 10, 6]setWaypointType [Group1, 2] setWaypointType "HOLD"showWaypoint [Group1, 2] showWaypoint "ALWAYS"setWpPos [Group1, 2] setWpPos [x, y, z]getWpPos _Pos = getWpPos [Group1,1]

5.68 - Wegpunkte erzeugen

Page 159: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

So einfach, wie sich Wegpunkte, Einheiten und auch Objekte erzeugen lassen, lassen sichnatürlich auch Auslöser erzeugen, was eine Menge neuer Möglichkeiten mit sich bringt.Hier wird erläutert und anhand von Beispielen gezeigt, wie man Auslöser erzeugen undmittels Syntaxes konfigurieren kann.

Da ein Auslöser, je nachdem was man machen möchte, ein wenig mehr als nur eine kurzeSyntax benötigt, schlage ich vor, diesen per Skript oder Funktion zu erstellen.

Hier eine genauere Übersicht mit den jeweiligen Erläuterungen dazu.

CreateTriggerMit diesem Befehl wird zunächst ein Auslöser erstellt. Diesen kann man dann ganz normalmit einem Namen erstellen. Zunächst ist er aber dann noch roh und muss mit denhiernach erklärten Befehlen konfiguriert werden. Zunächst die Erstellung:

ASL1 = createTrigger ["EmptyDetector", position Player]

ASL1 = createTrigger ["EmptyDetector", [X,Y,Z]]

Der Auslöser mit Namen ASL1 wird damit an der Position vom Player oder eben derangegebenen Koordinate erstellt.

SetTriggerAreaJetzt braucht der Auslöser ASL1 noch eine Größe, Winkel und Form, welche nun wie folgtdefiniert werden. Dabei gibt man alles bis auf die Form in Zahlen an. Die Form, also Kreisoder Rechteck wird mit True und False definiert, wobei True für Rechteck steht und Falsefür den Kreis.

ASL1 setTriggerArea [X, Y, Winkel, Form]

SetTriggerTextJetzt hat man die freie Wahl dem Auslöser auch einen Text zuzuweisen. Dies macht vorallem Sinn, wenn man einen Funkauslöser erstellen möchte. Dann hat man nämlich imFunkmenü den entsprechenden Text dazu.

ASL1 setTriggerText "Artillerie-Support"

SetTriggerTimeoutHiermit lässt sich die Auszeit des Auslösers festlegen und, ob er als Countdown oderTimeout fungieren soll. Die Werte für die Zeiten werden hierbei wieder ganz normal alsZahlwert eingetragen.

ASL1 setTriggerTimeout [Min, Mid, Max, False]

160

5.69 - Auslöser erzeugen

Page 160: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

SetTriggerTypeZusätzlich kann für den Auslöser ASL1 noch ein Typ festgelegt werden. Diese Typen sindganz normal wie im Editor vordefiniert.

ASL1 setTriggerType "WIN"

Typenübersicht:

"NONE" Keine"WEST G" Von West bewacht"EAST G" Von Ost bewacht"GUER G" Von Widerstand bewacht"SWITCH" Schalter"END1" Ende 1"END2" Ende 2"END3" Ende 3"END4" Ende 4"END5" Ende 5"END6" Ende 6"LOOSE" Verlieren"WIN" Gewinnen"WEST SEIZED" Erobert durch Westen"EAST SEIZED" Erobert durch Osten"GUER SEIZED" Erobert durch Widerstand

SetTriggerActivationHiermit definiert man die Art der Aktivierung, also ob der Auslöser durch West, Ost, perFunk oder wie auch immer ausgelöst werden soll. Die Syntax dafür lautet:

ASL1 setTriggerActivation ["WEST", "EAST D", true]

Dieser Auslöser wurde nun wie folgt definiert:

Aktivierung durch West // von Osten entdeckt // Mehrfach

Erster Arrayteil:

Seite: "NONE", "EAST", "WEST", "GUER", "CIV", "LOGIC", "ANY"Funk: "ALPHA", "BRAVO", "CHARLIE", "DELTA", "ECHO",

"FOXTROT", "GOLF", "HOTEL", "INDIA", "JULIET", Sonstige: "STATIC", "VEHICLE", "GROUP", "LEADER", "MEMBER".

Zweiter Arrayteil:

"PRESENT", "NOT PRESENT", "WEST D", "EAST D", "GUER D", "CIV D".

Dritter Arrayteil:True steht hierbei für Mehrfach- und False für Einmal-Auslösung des Auslösers.

161

Kap

itel 5

Page 161: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

SetTriggerStatementsHiermit definiert man nun die Bedingungszeile, die Aktivierungszeile und dieDeaktivierungszeile des zuvor erstellten Auslösers. Hier bitte auch die richtigeSchreibweise im Array achten!

ASL1 setTriggerStatements [Bedingung, Aktivierung, Deaktivierung]

ASL1 setTriggerStatements ["this", "Wert = true", "Wert = False"]

SetMusicEffectMit diesem Befehl wird der Musikeffekt des Auslösers festgelegt.

ASL1 setMusicEffect "ATrack1"

Die originalen Musikstücke erfordern keine Description.ext und lauten ATrack1 bisATrack27. Die Namen der Queen´s Gambit Tracks gehen von QGTrack1 bis QGTrack9.

SetSoundEffectMit diesem Befehl versieht man den Auslöser oder mit einem Soundeffect.

ASL1 setSoundEffect [Anonym, Stimme, Umgebung, Auslöser]

ASL1 setSoundEffect ["Alarm”, ” ”, ” ”, ” ”]

Hier nochmal eine kleine Übersicht einiger Soundarten:

Stream, Alarm, BadDog, BirdSinging, Chicken, Cock, Cow, Crow, Crickets1,Crickets2, Crickets3, Crickets4, Dog, Frog, Frogs, LittleDog, Music, Owl, Wolf

Bei den Markern hat man die Möglichkeit diese lokal oder global zu erstellen. Dies hatbei lokal den Vorteil, dass nicht mehr jeder die Marker sehen kann, sondern nur diejenigendie vorbestimmt sind. Also so kann man beispielsweise Marker nur für die jeweiligeSpielseite oder nur für einen bestimmten Spieler erstellen.

CreateMarkerMit diesem Befehl erstellt man den Marker zuerst, wobei man ihm einen Namen und einePosition zuweist. Merke: Normalerweise setzt man Marker beim Ansprechen in die " " . Dieist bei erstellten Markern nicht unbedingt notwendig. Grundsätzlich ist es aber nichtschlecht die " " auch für nachträglich erstellte Marker zu verwenden.

_Marker1 = createMarker ["M1", position Player]

_Marker1 = createMarker ["M1", [X,Y]]

162

5.70 - Marker erzeugen

Page 162: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

SetMarkerTypeMit SetMarkerType legt man, wie der Name schon sagt, den Typ des Markers fest.

"M1" setMarkerType "Arrow"Hier eine Übersicht der verfügbaren Icon-Typen:

SetMarkerTextHiermit legt man den Text für den Marker fest.

"M1" setMarkerText "Hold Position"

SetMarkerShapeHier definiert man die Form des Markers. Also ob es ein Icon, Rechteck, oder Kreis sein soll.Bei Icons ist es nicht unbedingt nötig die Größe des Markers festzulegen, weil die normalangezeigt werden. Nicht aber bei Rechteck oder Kreis, da ist es wichtig dem Marker nocheine Größe zuzuweisen.

"M1" setMarkerShape "ELLIPSE"

Hierbei hat man die Auswahl zwischen:

"RECTANGLE" – "ELLIPSE" – "ICON"

SetMarkerBrushMit dem SetMarkerBrush-Befehl kann man das Aussehen eines Marker mit demMarkerShape Rectangle oder Ellipse bestimmen.

"M1" setMarkerBrush "FDiagonal"

Dabei stehen folgende Designs zur Verfügung:

Horizontal - Horizontale LinienVertical - Vertikale LinienGrid - Horizontales RasterDiagGrid - Schräges RasterFDiagonal - Schräge LinienBDiagonal - Schräge LinienCross - Kreuz-Raster

163

Kap

itel 5

Objective - Ziel (Flag)Flag1 - FahneDot - PunktDestroy - ZerstörenStart - StartEnd - Ende Warning - AchtungJoin - BeitretenPickUp - AuflesenUnknown - UnbekanntMarker - Markierung

Arrow - PfeilEmpty - LeerSelect - Leerer KreisVehicle - VehikelDefend - VerteidigenMove - BewegenAttack - AngreifenHeadquarters - StabDepot - DepotCamp - LagerTown - Stadt

SalvageVehicle - Bergungs FhzRepairVehicle - Reparatur FhzSupplyVehicle - VersorgungsFhzDestroyedVehicle - Zerstörtes FhzMaintenanceTeam - ReparaturCommandTeam - FührungsstabSupplyTeam - VersorgerInfantryTeam - InfanterieLightTeam - Leichte Inf.HeavyTeam - Schwere Inf.AirTeam - LuftabwehrFireMission - Firemission

Page 163: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

SetMarkerColorHiermit erfolgt die Festlegung der Farbe. Standardmäßig werden diese in rot erstellt was,wenn man diese Farbe behalten möchte, diesen überflüssig macht.

"M1" setMarkerColor "ColorBlue"

Hierbei stehen folgende Farben zur Auswahl:

"ColorRed" "ColorGreen" "ColorBlue""ColorRedAlpha" "ColorGreenAlpha" "ColorYellow""ColorBlack" "ColorWhite" "Default"

SetMarkerSizeDefinition der Größe des Markers. Die Syntax dafür schaut wie folgt aus:

"M1" setMarkerSize [100, 200]

SetMarkerDirMit SetMarkerDir erfolgt die Ausrichtung des Markers in Angabe von Grad.

"M1" setMarkerDir 90

Marker löschenFür das Löschen eines Marker gilt der altbewährte Befehl:

deleteMarker "M1"

Lokale Marker erzeugenDas Erzeugen und Definieren der Eigenschaften eines lokalen Markers erfolgt genauso,wie auch bei den Globalen, nur dass der Befehl eben nur lokal gilt. Hierbei gelten genaudie gleichen Befehle, welche nur die Erweiterung Local tragen. Ansonsten ist dasVerfahren genau das Gleiche.

Hier trotzdem nochmal die Übersicht der Befehle für lokale Marker:

CreateMarkerLocal SetMarkerTypeLocal SetMarkerColorLocalSetMarkerSizeLocal SetMarkerShapeLocal SetMarkerBrushLocalSetMarkerTextLocal SetMarkerDirLocal SetMarkerPosLocalDeleteMarkerLocal

Weitere wichtige und vor allem grundlegende Informationen findet man im Kapitel 1.7unter Markierungen einfügen.

164

Page 164: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

In diesem Unterkapitel sollen nochmal ein paar Dinge rund um Vehikel, also Fahrzeuge,erläutert werden. Hier gibt es ja die verschiedensten Dinge, die man machen oder auchabfragen kann. Deshalb nochmal diese durchaus wichtige Zusammenfassung.

Schaden abfragen oder zuweisenEin Schaden lässt sich gezielt zuweisen, abfragen oder es kann geprüft werden, ob dasFahrzeug überhaupt noch fahren kann bzw. am Leben ist.

? getDammage Fahrzeug1 > 0.5 - Wenn Schaden größer als 0.5, dann...

?!(canMove Fahrzeug1) - Wenn Vehikel nicht mehr fahren kann, dann...

? !(alive Fahrzeug1) - Wenn Vehikelnicht mehr lebt, dann...

Fahrzeug1 setDamage 0.5 - Setzt einen Schaden von 0.5{_x setDamage 1} forEach crew Fahrzeug1 - Komplette Besatzung erhält Schaden

Die ersten drei Syntaxes lassen sich, wie gewohnt, in einem Prüfauslöser unter Bedingungeintragen. Dort bitte das Fragezeichen weglassen! Im Skript bleibt die Syntax so bestehen.

Einheit in FahrzeugHiermit lässt sich prüfen, ob sich eine Einheit in einem Fahrzeug befindet:

Name in FahrzeugPlayer in (crew Fahrzeug)

Typ des Vehikels abfragenWenn eine bestimmte Einheit oder der Spieler ein bestimmtes Fahrzeug benutzt, solletwas ausgeführt werden. Dazu verwendet man die nun folgende Syntax, wobeizwischen den Anführungszeichen der Klassenname des Vehikeltyps angegeben wird.

typeOf vehicle Player == "M1030"

typeOf vehicle Name == "AH1W"

Fahrzeug für bestimmten Einheitstyp sperrenMit TypeOf lässt sich nun der Typ einer Einheit prüfen und somit auch ein Fahrzeug fürgewisse Einheitstypen sperren. Dies bietet sich an, wenn man machen möchte, dass nurder Einheitentyp Pilot ein Luftfahrzeug fliegen darf. Dies lässt sich unter anderem nebeneinem Skript auch per Prüfauslöser realisieren.

Prüfauslöser:

Aktivierung: MehrfachAchse a/b: 0Bedingung: typeOf driver Fahrzeug1 != "SoldierWPilot"bei Aktivierung: Driver Fahrzeug1 action ["Eject",Fahrzeug1]

Steigt jetzt ein Spieler mit einem anderen Einheitstyp in das Fahrzeug ein, löst der Auslöseraus und der Spieler mit dem Actionbefehl Eject wieder aus dem Fahrzeug entfernt.

165

Kap

itel 5

5.71 - Rund ums Vehikel

Page 165: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Fahrzeug für Name sperrenMöchte man ein Fahrzeug oder eine Fahrzeugposition für den Spieler oder für EinheitName1 sperren, kann man dies unter anderem mit den nun folgenden Syntaxes machen.Als Beispiele sind ein Prüfauslöser und die Skriptvarianten angegeben.

Prüfauslöser:

Aktivierung: MehrfachAchse a/b: 0Bedingung: Vehicle Name1 == Fahrzeug1bei Aktivierung: Name1 action [“Eject”, Fahrzeug1]

Skriptsyntaxes:

? vehicle Name1 == Fahrzeug1 : Name1 action ["Eject",Fahrzeug1]? driver Fahrzeug1 == Name1 : Name1 action ["Eject",Fahrzeug1]? gunner Fahrzeug1 == Name1 : Name1 action ["Eject",Fahrzeug1]? commander Fahrzeug1 == Name1 : Name1 action ["Eject",Fahrzeug1]

Geschwindigkeit eines Fahrzeugs abfragen/setzenUm die Geschwindigkeit eines Fahrzeugs als Bedigung für etwas zu nutzen gilt:

speed Fahrzeug1 > 30

und zum Festlegen einer Geschwindigkeit (Full,Normal,Limited,Auto):

Fahrzeug1 setSpeedMode "Full"Fahrzeug1 forceSpeed 120 - Wert in km/hFahrzeug1 limitSpeed 60 - Wert in km/h

Fahrer oder Gunner vorhanden?Der Befehl isNull prüft, ob die Position im Fahrzeug leer ist. Als Bedingungsabfrage gilt:

isNull driver Fahrzeug1 - Ist Position Fahrer leer, dann...

! isNull driver Fahrzeug1 - Ist Position Fahrer besetzt, dann...

Laufendes FahrzeugDer Befehl isEngineOn prüft, ob der Motor des Fahrzeugs eingeschaltet ist.

isEngineOn Fahrzeug1 - Ist Motor von Fahrzeug1 an, dann...

TankstatusFolgende Befehle werden für Tankstatus eines Fahrzeugs verwendet:

Fuel Fahrzeug1 == 0.5 - Ist Tankfüllung gleich Wert, dann...

Fahrzeug1 setFuel 0.8 - Setzt einen Tankfüllwert

Fahrzeug1 setFuelCargo 1 - Setzt Tankwert für Tankfahrzeug

166

Page 166: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

167

Kap

itel 5

Lichtquellen lassen sich unter anderem per Skript oder auch Funktion erzeugen. Infolgendem Beispiel wird eine Lichtquelle per Skript an der Position eines Objekteserzeugt. Dieses startet man dann mit folgender Syntax:

[Objektname] exec "skripte\light.sqs"

Light.sqs

Hierbei hat man nun ganz einfach die Möglichkeit das Licht farblich frei zu gestalten.Dabei kommen, je nach Einstellung, die skurrilsten Farben zum Vorschein. Man muss dazulediglich die Werte im jeweiligen Array ändern, was sich dann bei der nächsten Vorschaudann sofort bemerkbar macht. Die Nutzung der Dezimalwerte macht den Effekt aus!

_light setLightColor [0, 0, 1] - Festlegung der Lichtfarbe_light setLightAmbient [0, 0, 1] - Festlegung des Umgebungslichts_light setLightBrightness (0.1 / 0.1) - Festlegung der Helligkeit

Ein solches Licht lässt sich natürlich auch nur lokal erzeugen. Das macht man dann mitdem lokalen Createbefehl, der wie folgt lautet:

_light = "#lightpoint" createVehiclelocal _pos

Folgend ein Beispiel einer kleinen Staubwolke. Diese kann man natürlich durch dasverändern der Werte ganz schnell vergrößern, verfärben oder natürlich auch verformen.

[Objektname] exec "skripte\dust.sqs"

Dust.sqs

_object = _this select 0;

_light = "#lightpoint" createVehicle position _object;_light setLightColor [0, 0, 8];_light setLightAmbient [0.9, 0.9, 0.9];_light setLightBrightness (0.1 / 0.1);exit;

5.73 - Staub erzeugen

5.72 - Lichtquellen erzeugen

_object = _this select 0

_dust = "#particlesource" createVehicle position _object; _dust setParticleParams [["\Ca\Data\Cl_basic.p3d", 1, 0, 1], "", "Billboard", 1, 0.7, [0, 0, 0],

[0,0,0], 5, 0.2, 0.2, 0.0, [0.8, 1], [[0.7,0.6,0.5,0.25],[0.7,0.6,0.5,0.0]],[0, 1], 1, 0, "", "", _object];

_dust setParticleRandom [0, [0.5, 1.5, 0], [1, 1, 0], 0, 0, [0, 0, 0, 0], 0, 0];_dust setParticleCircle [0, [0, 0, 0]];_dust setDropInterval 0.02;~2deleteVehicle _dustexit;

Page 167: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

168

Hier ein kleines Beispiel, wie man eine Rauchsäule in ArmA realisieren kann. Das dies nochausbaufähig ist, sollte gänzlich klar sein, aber dieses kleine Beispiel ist mehr als nur einguter Ansatz dafür.

Rauch sowie Feuer erzeugt man mit so genannten Drop-Befehlen. Diese sind unterUmständen meistens etwas länger, wie man unten gut erkennen kann. Denn die beidenZeilen ab Drop stellen wieder eine Zeile dar, was hier nicht möglich ist. In diesen Array´swerden die verschiedensten Dinge, wie Farbe, Form, Verhalten und Geschwindigkeitdefiniert. Das Ganze wurde hier in eine Schleife gepackt. Bei jedem Durchlauf wird derlokale Wert _i um den Wert 1 vergrößert. Erreicht _i, wie im unteren Teil des Skriptesangegeben, den Wert 800, wir das Skript beendet und der Rauch hört auf.

Die Werte sind alle variable und können nach belieben angepasst werden. Das Skriptstartet man am Ende mit folgender Syntax:

[Objektname] exec "skripte\smoke.sqs"

Smoke.sqs

Dieses Skript kann man nun hervorragend auslösen, wenn zum Beispiel ein Tankfahrzeugoder ähnliches zerstört wurde. Hier mal ein Prüfauslöserbeispiel:

Prüfauslöser:

Aktivierung: EinfachAchse a/b: 0Bedingung: not alive Fahrzeug1bei Aktivierung: [Fahrzeug1] exec "smoke.sqs"

Des Weiteren kann man noch die Position um das Objekt oder Fahrzeug bestimmen.Hierzu werden wieder die XYZ-Werte benutzt, welche im Array festgelegt sind.

_position = [0, 0, 0]

_vehicle = _this select 0_position = [0, 0, 0]_i = 0

#Loop_i = _i + 1drop ["\ca\data\cl_basic", "", "Billboard", 6, 6, _position, [0,0,0], 1, 1, 1.5, 0.02,

[1,30], [[0,0,0,0],[0,0,0,0.7],[0,0,0,0]], [0], 1.2, 1, "", "", _vehicle]~0.1? _i == 800 : exitgoto "Loop"

5.74 - Rauch erzeugen

Page 168: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

169

Kap

itel 5

Mit folgendem Beispiel hat man die Möglichkeit ein Feuer an der Position eines Objekteszu erzeugen. Auch hier hat man wieder vollen Modifikationsspielraum. Dazu kann mandie skriptinternen Werte jederzeit seinen Ansprüchen anpassen. Auch derStartauslösearray bietet einige freie Definitionsmöglichkeiten.

[Objekt,60,0] exec "skripte\fire.sqs"

Objekt steht für Name des Objektes, der zweite Wert für die Brenndauer in Sekundenund der dritte Wert für die Höhe über dem Objekt.

Fire.sqs

Weiter auf der Folgeseite!

_object=_this select 0;_time=_this select 1;_zpos=_this select 2;_delay=0.15;_timecheck=0;_i=0

; Die Folgende Zeile stellt eine Zeile dar, was hier nicht möglich ist:_light = "#lightpoint" createVehicle [(getPos _object select 0),

(getPos _object select 1),_zpos];_light setLightBrightness 0.03;_light setLightAmbient[0.03, 0.028, 0.0];_light setLightColor[1.0, 0.9, 0.0];

#Loop_pos=getPos _object_x=(_pos select 0)_y=(_pos select 1)_z=(_pos select 2)_vx=0.2-(random 0.4)_vy=0.2-(random 0.4)_vz=random 0.15_m=(2.1-(random 0.1))_Fire=[2,6] select (random 1.5)

; Die Folgende Zeile stellt eine Zeile dar, was hier nicht möglich ist:drop [["\ca\data\ParticleEffects\FireAndSmokeAnim\FireAnim",8,_Fire,32],

"", "Billboard", 9, (0.7+(random 0.3)), [_x,_y,_z+_zpos+(random 1)],[_vx,_vy,_vz], 0, _m, 2, 1, [0.5,1,2],[[1,1,1,0.5],[1,1,1,1],[1,1,1,0]],[0],0,0,"","",logic]

5.75 - Feuer erzeugen

Page 169: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

170

Dieses Skript enthält unter anderem eine Lichtquelle, einen Feuerdropbefehl und dazueinen Rauchdropbefehl und fast damit die Unterkapitel 5.73, 5.74 und 5.75 zu einerAktion zusammen. Die Dropbefehle müssen logischerweise wieder in einer Zeile stehen!

Das folgende Bild simuliert einen Motorbrand.

? _i<=3: goto "Loop2"_Smoke=3;_s=(2.2-(random 0.1));

; Die Folgende Zeile stellt eine Zeile dar, was hier nicht möglich ist:drop [["\ca\data\ParticleEffects\FireAndSmokeAnim\SmokeAnim",8,

_Smoke,32], "", "Billboard", 9, (2.5+(random 0.5)), [_x,_y,_z],[_vx,_vy,_vz], 0, _s, 2, 2, [0.2,5],[[0,0,0,0],[1,1,1,0.8],[1,1,1,0]],[0],0,0,"","",logic]; _i=0;

#Loop2~_delay_i=_i+1

_timecheck=_timecheck+_delay? _time>=_timecheck: goto "Loop"deleteVehicle _lightexit

Page 170: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

171

Kap

itel 5

Einheiten lassen sich auch während des Spielverlaufs befördern. Das bedeutet, dass manden Spieler im Verlauf einer Mission oder Kampagne aufgrund seiner guten Leistungenbefördern oder bei schlechten Leistungen wieder degradieren kann.

Dabei stehen folgende Dienstgrade zur Verfügung:

Private SoldatCorporal GefreiterSergeant FeldwebelLieutenant LeutnantCaptain HauptmannMajor MajorColonel Oberst

Diese Dienstgrade lassen sich jetzt mit folgender Syntax vergeben:

Name1 setRank "Major" oder Player setRank "Major"

AnwendungsbeispielDer Spieler soll befördert werden, wenn er eine gewisse Punktezahl überschritten hat.Das könnte man jetzt auf verschiedene Art und Weise machen. Hier soll mal die Variantemit einem Prüfauslöser als Beispiel dienen.

Prüfauslöser:

Aktivierung: EinfachAchse a/b: 0Bedingung: Rating Player >= Wertbei Aktivierung: Player setRank "Major";

hint format ["Sie wurden soeben zum %1 befördert",rank Player]

Der Spieler wird nun befördert, wenn er die Punktzahl erreicht hat.

Als BedingungDen Rang einer Einheit kann man jetzt auch als Bedingung für etwas verwenden. ZumBeispiel bei der Vergabe von Waffen oder dem Nutzen von Fahrzeugen. Zum Beispielkönnte man dem Spieler so das Nutzen von Fahrzeugen oder bestimmten Waffensortenzunächst verbieten. Da Leistung gerne belohnt wird, wird er sich nun mehr anstrengenund versuchen Punkte zu sammeln, um möglichst schnell befördert zu werden.

? rank player == "Major" : exit

? rank Name1 != "Major" : exit

5.76 - Dienstgrad vergeben

Page 171: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

172

Diese Möglichkeit bietet zwar keinen großen Nutzen, aber ist für Kamerasequenzendurchaus ein nettes Feature. Bevor die Einheit aber das Fernglas benutzt, muss man ihrerstmal eins zuweisen. Dies geht wie gewohnt mit:

Name1 addWeapon "Binocular";

Nachdem die Einheit nun mit einem Fernglas ausgerüstet ist, nimmt man sich denSelectWeapon-Befehl zur Hand und befielt der Einheit per Auslöser oder Skript, wie nunfolgt definiert, das Fernglas zu benutzen.

Name1 selectWeapon "Binocular"; Name1 setBehaviour "safe";

Natürlich lässt sich dies auch mit einem Animationsbefehl umsetzen, wie in Kapitel 5.56ausreichend erklärt ist.

Es besteht die Möglichkeit einer Einheit einen Fahrzeugplatz zuzuweisen. Diese Einheitwird aber nach der Zuweisung nicht in dem Fahrzeug sitzen. Wozu soll das also nun gutsein? Man hat damit die Möglichkeit die Einheiten erstmal neben dem Fahrzeug zupositionieren und zum Beispiel bei Alarm den Befehl geben einzusteigen. Denn keinnormaler Soldat sitzt ewig auf seinem Gunnersitz, wenn eigentlich gar kein Grund dazubesteht. So könnten also auch MG´s oder Scheinwerfer erstmal unbesetzt bleiben undwenn beispielsweise der Alarm ausgelöst wird, stürmen die Einheiten zu ihrenzugewiesenen Fahrezeugen etc.. Hinzu kommt, dass so auch der Spieler die Möglichkeithat die Besatzung einer Panzers vorher schon auszuschalten, bevor sie eingestiegen ist.

Dazu gelten die nun folgenden Befehle:

Name assignAsCargo Truck1 - Bekommt einen Mitfahrerplatz

Name assignAsDriver Panzer1 - Bekommt den Fahrerplatz

Name assignAsGunner Panzer1 - Bekommt den Schützenplatz

Name assignAsCommander Panzer1 - Bekommt den Kommandantenplatz

Mit unAssignVehicle Name, verweist man die Einheit wieder eines Fahrzeugs. Sie weißdann, dass das unassigned Vehikel nicht mehr ihr Fahrzeug ist und steigt nach demAussteigebefehl auch nicht automatisch wieder ein.

Nachdem man der Einheit ein Fahrzeug zugewiesen hat kann man ihr Befehlen ihrenPlatz darin einzunehmen. Dafür gilt folgende Syntax:

[Name] orderGetIn true - Einheit steigt ein

[Name] orderGetIn false - Einheit steigt aus

Für mehrere Einheiten gilt folgende Syntaxform:

[Name1, Name2, Name3] orderGetIn true

5.78 - Einheit einen Fahrzeugplatz zuweisen

5.77 - Einheit benutzt Fernglas

Page 172: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

173

Kap

itel 5

Es besteht auch die Möglichkeit sich ausgeben zu lassen welches Fahrzeug der Einheitzugewiesen wurde oder welchen Platz sie darin gerade bezogen hat. Gerade ein Spielerkann ja mehrere oder gar alle Positionen im Fahrzeug beziehen. Diese kann man dann alsBedigung für etwas verwenden (siehe Kapitel 5.71).

Zugewiesenes Fahrzeug ausgeben lassen:

hint format ["Zugewiesenes Fahrzeug: %1", assignedVehicle Player]

Gegenwärtige Position im Fahrzeug ausgeben lassen:

hint format ["Position im Fahrzeug: %1", assignedVehicleRole Player]

Als Leader einer Einheit hat man die Möglichkeit seine Gruppenmitglieder in Teamsaufzuteilen, welche dann Farbnamen bekommen. Dies ist natürlich auch im Editormöglich. Man kann so vorab schon die Gruppe des Spielers in unterschiedliche Teamsaufteilen. Mi folgender Syntax teilt man eine Einheit einem Team zu:

Name assignTeam "BLUE"

und hiermit lässt man ihn wieder austreten:

unassignTeam Name

Man kann das Team auch wieder auflösen. Dazu verwendet man folgende Syntaxform:

dissolveTeam "BLUE"

Als Teamfarben steht hierbei folgende Auswahl zur Verfügung:

MAIN RED GREEN BLUE YELLOW

Im Editor sieht das Ganze dann wie folgt aus:

Kein Team Blaues und rotes Team Blaues, rotes, grünes Team

5.79 - Einer Einheit ein Team zuweisen

Page 173: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Mit folgender Syntax gibt die jeweilige Einheit mit Namen Name1 den Befehl etwasauszuführen und führt es dabei selbst aus. Als Beispiel das erste Syntaxbeispiel. Beidiesem führt Name1 den Befehl CommanFire aus und schießt auf Name2.

Name1 ccoommmmaannddFFiirree Name2 - Name1 schießt auf Name2

Name1 ccoommmmaannddTTaarrggeett Name2 - Name1 bekommt als Ziel Name2

Name1 ccoommmmaannddMMoovvee Name2 - Name1 begibt sich zu Name2

Name1 ccoommmmaannddSSttoopp Name2 - Name1 bleibt stehen

Das Ganze kann man natürlich noch gruppenbezogen auführen. Jetzt kommt auch derSinn des Command... etwas hervor. Wenn man nun dem Leader und den Einheiten denBefehl gibt, spricht der Leader oder die angegebene Einheit dieser Gruppe den Befehlhörbar aus, worauf die Untergebenen dann auch reagieren und den Befehl ausführen.

(units group Name1) commandFire Name2

Generell lässt sich der Schaden einer jeden Einheit oder auch eines Objektes abfragenund ausgeben bzw. als Bedingung verwenden. Hierbei gibt es unterschiedlicheMöglichkeiten. Zum Beispiel, ob eine Einheit noch laufen kann oder in der Lage ist zuschießen. Hierfür machen wir uns die folgenden Befehle zu Nutze:

canStand - canMove - canFire - handsHit - getDammage

Folgend nun ein paar Syntaxbeispiele in Skriptform:

?! (canStand Name) : Name sideChat "Aah... meine Beine!"

?! (canMove Name) : Name sideChat "Mein Auto ist defekt!"

?! (canFire Name) : hint "Name kann nicht feuern!"

? (handsHit Name == 1) : Name sideChat "Aah... meine Hände!"

? (getDammage Player) > 0.5 : hint "Du bist verletzt!"

Bedenke: In der Bedingungszeile eines Auslösers setzt man kein ?, weil das schon integriert ist.Deshalb folgend nochmal kurz das Auslöserbeispiel.

Achse a/b: 0Bedigung: (handsHit Name == 1)bei Aktivierung: Name sideChat "Aah... meine Hände!"

174

5.80 - Einheit gibt Befehle

5.81 - Hat Einheit Schaden erhalten?

Page 174: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

175

Kap

itel 5

Auch der Flugverkehr hat sein System und seine Ordnung. Und so gibt es auch dabei soeiniges zu beachten. Zunächst ist wichtig zu wissen, dass der Startflugplatz auch immerder Heimatflugplatz ist. Der Flieger bekommt den Wert des Heimatflugplatzesautomatisch zugewiesen. Wenn also die Engine bemerkt, dass der Heli1 auf Flugplatz Asteht, bekommt er automatisch den Wert des Flugplatzes A zugewiesen. Startet derFlieger zu Missionsbeginn aber irgendwo in der Luft, so bekommt er automatisch dennächstgelegenen Flugplatz als Heimatflugplatz zugewiesen.

Jeder Flugplatz hat also einen Wert, welchen man einem Flieger zuteilen kann. Die Wertefür die einzelnen Flugplätze sind dabei wie folgt zugeordnet:

0 - Paraiso1 - Rahmadi2 - Pita3 - Antigua

Möchte man nun einen Flieger einen Flugplatz zuweisen, macht man dies mit:

Flieger1 assignToAirport 1

Diesem Flieger1 kann man nun auch befehlen auf einem der Flugplätze zu landen.

Flieger1 landAt 1

Nachdem nun bekannt ist, dass die Fluplätze eine festen Index haben und dass manseinen Flugzeugen und Hubschraubern einen Flugplatz zuweisen und diese dort landenlassen kann, fehlt eigentlich nur noch eines. Der Flugplatz braucht noch eine Seite.

Diese vergibt man mit folgender Syntax:

0 setAirportSide WEST

WEST EAST GUER CIV LOGIC

5.82 - Der Flugverkehr

Page 175: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Die Grasdetails lassen sich während des Missionsverlaufs ganz einfach herabsetzen odergar ganz entfernen. Damit wäre die Landschaft dann frei von Gras. Das Herabsetzen desGrasbewuchses könnte man zum Beispiel nutzen, wenn Frames gerade wichtiger sind,als es das Gras ist. Zum Beispiel eine Sequenz oder was auch immer.

Die Syntax dafür lautet:

setTerrainGrid 12.5

Dafür gibt es fest vergebene Werte. Gibt man stattdessen einen anderen Wert an, wähltdie Engine automatisch den näch definierten Wert. Hierbei gil, je kleiner der Wert, destogrößer der Grasanteil. Die Werte lauten dabei wie folgt:

50 - Kein Gras25 - Weniger Gras12.5 - Mittelmäßiges Gras6.25 - Standardgras3.125 - Hoher Grasanteil

Mit folgenden Syntaxformen lassen sich Objekte schräg platzieren. Dies ermöglicht esganz leicht, Fahrzeuge, Objekte, oder was auch immer, auf die Seite zu kippen oder garaufs Dach zu legen. Dazu gelten alle Werte zwischen -1 und 1.

Dabei gelten folgende Syntaxes:

Objekt setVectorUp [0,0,0]

Objekt setVectorDir [0,0,0]

Beide Arten gibt es auch als Kombination:

Objekt setVectorDirAndUp [[0,0,0],[0,0,0]]

Die Reihenfolge der Koordinaten ist bei allen Varianten nicht xyz, sondern xzy!

Objekt setVectorUp [x,z,y]

176

5.83 - Grasdetails heruntersetzen

5.84 - Objekte schräg platzieren

Page 176: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Einige originale Armed Assault Missionen greifen auf diese Verschlüsselung zurück. Dasbedeutet, dass man sie erst spielen kann, wenn man vorher die Ausbildungen absolvierthat oder gewisse andere Missionen zuvor gespielt hat.

Das Ganze macht für eine einzelne Mission nicht unbedingt viel Sinn, da sie der User, dersie zuvor heruntergeladen hat, ja spielen möchte. Als Beispiel könnte man zwei Missionenreleasen, bei der man die Zweite verschlüsselt und erst freischaltet, wenn der Spieler dieerste gespielt hat.

Die Keys müssen in der Description.ext aufgeführt werden.Dabei gelten folgende Regeln:

keys[] = {"Key1", "Key2", "Key3"}; - Hier werden die geforderten Keys aufgeführt

keysLimit = 2; - Mindeste Anzahl der benötigten Keys, um die Mission freizuschalten

doneKeys[] = {"Key4"}; - Name des Keys welcher in den SP-Missionen als abgehakt dargestellt wird.

Nach erfolgreicher Beendigung der Mission, gibt man nun folgende Syntax an:

activateKey "Key1"

Mehr zu diesem Thema findet sich im Kapitel 11.2 - Die ArmA-Cheats -.

Setzt man einen, mit einer KI besetzten, Scheinwerfer auf die Karte, so wird dieser beiNacht automatisch angeschaltet sein. Bei einem leeren Scheinwerfer sieht das Ganzeschon wieder anders aus. Wenn man ihn leuchten lassen möchte, ohne dass eine Einheitdahinter steht, geht das unter anderem mit der Verwendung einer Spiellogik.

Dazu setzt man zunächst einen leeren Scheinwerfer mit dem Namen Lampe1 und eineSpiellogik auf die Karte, wobei man in die Initialisierungszeile der Logik folgendes angibt:

this moveInGunner Lampe1

Die Spiellogik ist damit sozusagen die KI, die den Scheinwerfer bedient. Nachteil dabei ist,dass die Logik den Scheinwerfer nicht bewegt. In Verbindung mit dem Skriptbeispiel ausKapitel 6.14 besteht natürlich die Möglichkeit diesen beweglich zu machen.

Das Ganze gilt natürlich auch für Fahrzeuge. Möchte man ein leeres Fahrzeug miteingeschaltetem Licht auf der Karte platzieren, regelt man das auch mit einer Logik!

177

5.85 - Missionen verschlüsseln bzw. freischalten

5.86 - Leerer Scheinwerfer mit Licht

Page 177: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kapitel 6- Missions Specials -

Nachdem du nun alle Kapitel aufmerksam durchgelesen haben solltest, kommen hier einpaar Besonderheiten für deine Mission, die sich mit ein klein wenig mehr Aufwand schnellrealisieren lassen. Deine Mission wird Dank dieser Zusätze um einiges interessanter undspannender werden. All die Features dieses Kapitels sind zwar auf Skriptbasis aufgebaut, sinddeshalb aber keineswegs weniger funktionell oder weniger gut als Funktionen. Die Scriptesind teiweise so aufgebaut, dass du sie verstehen kannst, um besser in die Thematik einsteigenzu können. Verbesserungs- oder Erweiterungsmöglichkeiten gibt es bei jedem dieser Skripte.

Da diese Beispiele teilweise sehr umfangreich sind und ein Abtippen oft zu Fehlern führt,werden diese auch in Foren wie www.forum.german-gamers-club.de oderwww.mapfact.net von mir, mit geeigneter Beispielmission, zum Download angeboten.

6.1 Die Fallschirmspringer 1796.2 Das GPS-System 1806.3 Der Actionmenüeintrag 1816.4 Der Rucksack 1816.5 Zufallspositionen 1856.6 Der Mapclick 1876.7 Die Artillerie 1896.8 Tote Einheiten bzw. Fahrzeuge löschen 1946.9 Spielbeschleunigung dauerhaft unterdrücken 1956.10 Der Bullet Mode 1966.11 Das Feindmeldeskript 1976.12 Der Airstrike 1986.13 Der Airvehiclecreator 2016.14 Der Scheinwerfer 2036.15 Der Zeitzähler 2046.16 Das House-Patrol-Script 2056.17 Das Minen-Skript 2086.18 Das Vehikeltransportskript 2096.19 Das Möwenkript 2136.20 Das Insektenskript 2156.21 Der Bombenleger 2166.22 Der Aufklärer 2176.23 Einheit ergibt sich 2186.24 Der Teleport 2216.25 Das Verfolgungsskript 222

178

Page 178: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Fallschirmspringer sind ein nettes Feature für jede Mission. Hier wird eine von vielenmöglichen Varianten erläutert.

Der HelikopterZunächst erstellt man einen Helikopter, hier mit dem Namen Heli1. Wenn dieser zunächstnoch nicht fliegen soll, setzt man den Spritwert des Heli´s zunächst mit dem Befehl thissetFuel 0 auf leer. Wenn der Heli später starten soll, muss der Wert wieder auf 1 gesetztwerden. Zur Zeit steigt die Besatzung noch aus, wenn Fuel auf 0 steht. Patchhoffnung.

Die FlughöheDie Flughöhe sollte schon mindestens 80 bis 100 Meter betragen, da sich die Einheitensonst verletzen könnten. Diese legt man mit folgender Syntax fest:

Heli1 flyInHeight 120

Die LandezoneDie Landezone sollte fernab von Ortschaften und dichten Wäldern sein, um der KI einegute Landemöglichkeit zu bieten. Andernfalls könnten Verletzungen oder ähnlicheProbleme auftreten.

Die GruppeDamit die Gruppe am Missionsstart schon im Helikopter sitzt, bekommt der Leader derGruppe, welche hier mal Gruppe1 heißt, folgenden Eintrag in seine Initzeile:

{_x moveInCargo Heli1} foreach units Gruppe1

Das SkriptDas Skript, welches frei benannt werden kann, sieht dabei wie folgt aus:

Das Skript kann man dann beispielsweise am Absprungpunkt per Wegpunkt oderAuslöser mit der Syntax this exec "skripte\heli.sqs" starten. Eine weitere Möglichkeit,ohne ein eigenes Skript anlegen zu müssen wäre die Verwendung eines im Spielintegrierten Skriptes, welches wie folgt ausgelöst wird:

[Gruppe,Heliname] exec "para.sqs"

179

_aunits = units Gruppe1;_i = 0;_j = count _aunits;

#Here(_aunits select _i) action ["EJECT", Heli1] ;unAssignVehicle (_aunits select _i) ;_i=_i+1;~1?_j>_i : goto "Here"exit;

Kap

itel 6

6.1 - Die Fallschirmspringer

Page 179: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Dieses System ist sehr nutzvoll, wenn man mehrere Einheiten auf dem Schlachtfeld mittaktischen Zeichen versehen will bzw. einfach nur den eigenen Standort oder den eineranderen Einheit auf der Karte verfolgen möchte.

Hierzu wird wieder ein Skript verwendet, welches in der Init.sqs oder Initzeile desSpielers gleich zu Missionsbeginn gestartet wird. Dieses nun erläuterte Skript setzt nichtnur die Marker an die Position der angegebenen Einheiten, sondern prüft dazu noch, obdiese noch am Leben sind. Ist dies nicht der Fall, wird der Marker gelöscht.

Beispiel 1:

Beispiel 2:Dies lässt sich natürlich auch per If-Then-Else-Syntax realisieren, welche in einer Zeilestehen sollte, was hier leider aus Platzgründen nicht möglich ist. Diese Variante ist kürzer,da man alles in wenige Befehlszeile packen kann.

Erklärung:Wenn (If) Soldat1 lebt dann (Then) setze S1-Symbol auf Soldat1 ansonsten (Else) löscheS1-Symbol und verlasse Skript (Exit).

Anmerkung:Ein weiteres beliebtes GPS-Verfahren, welches hier nicht erklärt wird ist, die Marker fürdie jeweilige Einheit erst mit dem Skript zu erstellen und an sie zu heften. Wer aber diesesBuch sogfältig durcharbeitet, ist im Anschluss selbst in der Lage so etwas zu skripten.

180

"S1-Symbol" setMarkerText Name Soldat1;

#Start; Prüfen, ob Soldat1 lebt. Wenn nicht, springt das Skript zum Label Ende. ? (!(alive Soldat1)) : goto "Ende";; Marker setzen

#Marker"S1-Symbol" setMarkerPos getpos Soldat1; ~1;Skript springt wieder zum Startgoto "Start";

#EndedeleteMarker "S1-Symbol";exit;

#StartIf(alive Soldat1)Then{"S1-Symbol" setMarkerPos getpos Soldat1}Else{"S1-Symbol" setMarkerType "Empty";exit};~0.5Goto “Start” ;

6.2 - Das GPS-System

Page 180: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Das Actionmenü ist jenes, welches sich rechts unten in der Ecke befindet. Hier ist esmöglich Einträge hinzuzufügen und diese später auch wieder zu entfernen. ZumHinzufügen eines Eintrages benötigt man zunächst diese Syntax:

ID = Player addAction ["Eigener Eintrag","skript.sqs"]

während man zum Entfernen diese Syntax verwendet:

Player removeAction ID

Zum Löschen des Eintrages gibt man lediglich den Namen des Eintrags an, welcher hierkurz mit ID festgelegt wurde. Möchte man einen Eintrag haben, wenn die Einheit in einemFahrzeug sitzt, gibt man dazu den Fahrzeugnamen an.

ID = Fahrzeug addAction ["Eigener Eintrag","skript.sqs"]

Auslöserbeispiel:Zunächst setzt man einen Auslöser auf die Karte, verbindet ihn mit dem Spieler, so dassnur er ihn auslösen kann und nimmt etwa folgende Einstellungen vor:

Aktivierung: MehrfachAchse a/b: 5bei Aktivierung: ID = Player addAction ["Eigener Eintrag","skript.sqs"]bei Deaktivierung: Player removeAction ID

Zum Testen läuft man nun ein paar Mal in den Bereich und wieder raus. Das Ergebnis wirdsein, dass der Eintrag beim Betreten erscheint und beim Verlassen wieder verschwindet.

Mit Hilfe der Actionmenüeinträge kann man nun hervorragend einen Rucksack,Beintaschen oder ähnliches simulieren. Hier mal als kleines Feature das Rucksackbeispiel,an welchem man gut erkennen kann, was mit den Einträgen so alles möglich ist. DiesesBeispiel ist zunächst nur für Einzelspieler ausgelegt.

Zunächst setzt man dazu den Spieler mit folgendem Eintrag in der Initzeile:

RID = Player addAction ["Open Backpack","backpack\rucksack.sqs"]

Für den Rucksack legt man nun im Missionsordner einen eigenen Unterordner namensBackpack an. Dateien im Missionsordner bitte immer klein schreiben!

In diesen Ordner kommen nun die Skripte für die verschiedenen Aktionen. Für diesen Fallwerden jetzt mal die vier folgenden Skripte angelegt.

rucksack.sqs firstaid.sqs

save.sqs close.sqs

181

Kap

itel 6

6.3 - Der Actionmenüeintrag

6.4 - Der Rucksack

Page 181: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Rucksack.sqsHier wird zunächst der Eintrag -Rucksack öffnen- entfernt und erst dann werden dieanderen Einträge hinzugefügt. Die Besonderheit hierbei ist, dass man nur drei Mal dieMöglichkeit hat sich zu heilen. Damit nun immer der richtige Eintrag erscheint, wird beijedem Heilen eine Variable auf true gesetzt und beim Wideraufruf des Skriptesberücksichtigt. Angenommen man hätte jetzt schon 3 Mal gespeichert (siehe: ? verband3: goto "Close“), wäre die Variable Verband3 schon true und somit springt das Skript zumLabel #Close über und führt die Close.sqs aus. Das Skript wäre somit beendet.

Eine weitere Besonderheit bei diesen Skripten ist, dass hier für die jeweiligen AktionenSounds angegeben wurden. Siehe: Playsound "Rucksackauf". Diese, welche natürlichnicht unbedingt wichtig sind und daher auch wegfallen könnten, müssen natürlich zuvorin der Description.ext definiert werden.

Ein zweites Feature hierbei ist, dass der Spieler bei der jeweilig durchgeführten Aktioneine Animation ausführen soll, um es etwas realistischer zu gestalten. Als Beispiel hierfürdient die nun folgende FirstAid.sqs, bei der der Spieler, wenn er sich heilt, auf dem Bodenliegen soll.

Achtung! Diese vier Skripte sind miteinander verschachtelt!

182

; Eintrag wird entferntPlayer RemoveAction RIDPlaysound "Rucksackauf"

; Einträge werden hinzugefügtRIID = Player AddAction ["- Speichern","backpack\save.sqs"];

#Verband? verband3 : goto "Close";? verband2 : goto "Verband3";? verband1 : goto "Verband2";

#Verband1RIIID = Player AddAction ["- First aid (3)","backpack\firstaid.sqs"];goto"Close";

#Verband2RIIID = Player AddAction ["- First aid (2)","backpack\firstaid.sqs"];goto"Close";

#Verband3RIIID = Player AddAction ["- First aid (1)","backpack\firstaid.sqs"];

#CloseRIIIID = Player AddAction ["- Close Backpack","backpack\close.sqs"];exit;

Page 182: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Firstaid.sqsHier sieht man nun, dass das Skript zunächst prüft, ob und wie oft schon gespeichertwurde. Würde man zum ersten Mal speichern, wäre noch keine Variable auf truegeschaltet. Das Skript würde zum Label #Verband1 durchlaufen, die Variable Verband1auf true setzen und von dort aus auf das Label #Heilen springen, wo alle Untereinträgewieder gelöscht werden, der Spieler wieder den Eintrag Open Backpack bekommt unddie Aktionen durchgeführt werden, die zur Heilung führen.

Beim zweiten Speichern würde das Skript beim Prüfen zum Label #Verband2 springen,da ja Verband1 bereits true ist. Beim dritten Speichern würde es gleich von der zweitenZeile aus zu Label #Verband3 springen. Jetzt wäre auch Verband3 true und das Skriptwürde beim nochmaligen Ausführen sofort beendet (? verband3 : exit).

183

Kap

itel 6

? verband3 : exit;? verband2 : goto "Verband3";? verband1 : goto "Verband2";

#Verband1verband1=true;goto "Heilen";

#Verband2verband2=true;goto "Heilen";

#Verband3verband3=true;goto "Heilen";

#HeilenRID = Player AddAction ["Open Backpack","backpack\rucksack.sqs"];Player RemoveAction RIID;Player RemoveAction RIIID;Player RemoveAction RIIIID;~0.2Player playmove "AinvPknlMstpSlayWrflDnon_healed";~1Playsound "Sanipack";~2Player switchmove "AinvPknlMstpSlayWrflDnon_healed";~5Playsound "Schmerz";~1Player setdammage 0;exit;

Page 183: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Save.sqsHier kommt nun die Save.sqs, mit welcher das Spiel gespeichert wird. Zunächst werdenwieder alle Einträge gelöscht, in dem von hier aus die Close.sqs gestartet wird und danndas Spiel gespeichert.

Close.sqsUnd hier natürlich noch die letzte Datei, die gebraucht wird, wenn man den Eintrag CloseBackpack betätigt.

Jetzt nur nochmal eine nähere kurze Beschreibung der vergebenen Eintrags-namen, dannkann der Rucksack erfolgreich gepackt werden.

Name: RIDDer Eintrag, der für das Öffnen des Rucksackes zuständig ist.

RID = Player addAction ["Open Backpack","backpack\rucksack.sqs"]

Name: RIIDDer Name, der für das Speichern festgelegt wurde.

RIID = Player addAction ["- Speichern","backpack\save.sqs"]

Name: RIIIDWurde für alle Firstaid-Einträge definiert, da ja immer nur einer aktiv ist.

RIIID = Player addAction ["- First aid (1)","backpack\firstaid.sqs"]RIIID = Player addAction ["- First aid (2)","backpack\firstaid.sqs"]RIIID = Player addAction ["- First aid (3)","backpack\firstaid.sqs"]

Name: RIIIIDIst der Name, der für das Schließen des Rucksacks definiert wurde.

RIIIID = Player addAction ["- Close Backpack","backpack\close.sqs"]

184

[] exec " backpack\close.sqs";Savegame;exit;

Playsound "Rucksackzu";Player RemoveAction RIID;Player RemoveAction RIIID;Player RemoveAction RIIIID;RID = Player AddAction ["Open Backpack","backpack\rucksack.sqs"];exit;

Page 184: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Eine Mission, die immer gleich abläuft, kann mit der Zeit sehr langweilig werden und wirddaher schnell zur Seite gelegt oder gelöscht. Hat man aber eine Mission geschaffen,welche eine Menge Überraschungen aufweist und man nie genau weiß woher die Feindekommen werden, ist doch da schon mal ein wenig mehr Spannung vorhanden. Geradeim Mehrspielerbereich kann es sehr anstrengend sein, wenn man dauernd gesagtbekommt, wo was steht und von wo der Feind kommt. Dazu kann man nochverschiedene Startpunkte für den Spieler oder auch verschiedene Zielpunkte definieren.

Natürlich hat man ja im Editor bei jeder Einheit die Möglichkeit den Radius derPlatzierung festzulegen, was ja auch eine Menge Dynamik bringt. Diese nun erläuterteVariante ist aber eher für feste Punkte bestimmt, die zuvor definiert wurden. Dieses Skriptstartet man von der Initzeile des Spielers oder der Init.sqs, um ganz zu Anfang diePositionen festzulegen.

Beispiel: Dynamische Startpunkte Hierbei macht man sich den Random-Befehl zunutze. Das Ganze kann dann in Skriptformetwa wie folgt aufgeführt aussehen:

Man spart sich dann den Aufwand die XYZ-Positionen zu ermitteln und setzt stattdessenlediglich ein paar unsichtbare Heli-H´s auf die Karte und benennt sie entsprechend.Hierbei bietet sich zusätzlich an, den Radius der Platzierung des einzelnen Heli-H´sauszunutzen und ihm einen großen Radius zu geben.

Jetzt hätte man zum Einen die Dynamik, dass man nicht weiß, an welche Position(P1,P2,P3) der Spieler gesetzt wird und zum Anderen, dass das jeweilige Heli-H ja auchnoch einen Platzierungsradius hat, so dass der jeweilige Punkt auch nicht genau definiertwerden kann.

185

Kap

itel 6

_start = random 3;

? _start < 1 : goto "P1";? _start < 2 : goto "P2";? _start < 3 : goto "P3";

#P1Player setpos [x,y,z];exit;

#P2Player setpos [x,y,z];exit;

#P3Player setpos getpos HP1;exit;

Hier wurde ein Randomwert von 3 verwendet. BeimStarten des Skriptes wird ein Wert ausgelost und danachgeprüft wie groß dieser Wert ist. Dann folgt der nächste Schritt.

Ist er kleiner als 1 springt das Skript zu #P1Ist er kleiner als 2 springt das Skript zu #P2Ist er kleiner als 3 springt das Skript zu #P3

Hinter dem jeweiligen Label, also beispielsweise #P1,kann man nun die Position angeben.

Bei #P1 und #P2 wurde jeweils eine XYZ-Positiondefiniert, während der Spieler bei #P3 auf einunsichtbares Heli-H namens HP1 gesetzt wird, was aucheine Möglichkeit ist.

6.5 - Zufallspositionen

Page 185: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Beispiel: Dynamische Startpunkte KoordinatenbezogenIn dem folgend erläuterten Beispiel wird ein XYZ-Punkt bestimmt, welcher mit einemzusätzlichen variablen Platzierungsradius (_radius = 500) versehen wird.

Zunächst wird die Position _pos mit [0,0,0] definiert, der Radius bestimmt und für _startein Randomwert von 3 definiert, welchen das Skript beim Start zufällig bestimmt. Danachprüft das Skript, wie groß dieser Wert ist und springt an die jeweilige Position. _posbekommt dann einen der drei XYZ-Werte zugewiesen (_pos = [X,Y,Z]), welche manvorher rausgesucht und definiert hat.

Nun hat _pos eine feste XYZ-Position erhalten und bekommt jetzt noch einenzusätzlichen Radius (_radius = 500) um diese Position zugewiesen, in welchem dieEinheit, hier der Spieler, dann per Zufall gesetzt wird.

Auf eine Karte kann man sich das etwa so vorstellen, wobei die grünen Marker dieStartpunkte des Spielers oder der Einheit darstellen.

186

_pos = [0,0,0] ;_radius = 500;_start = random 3;

? _start < 1 : _pos = [X,Y,Z];? _start < 2 : _pos = [X,Y,Z];? _start < 3 : _pos = [X,Y,Z];

; Diese Zeile sollte in einer Zeile definiert werden, was hier nicht möglich ist:_pos = [(_pos select 0) + _radius/2 - random _radius, (_pos select 1) + _radius/2

- random _radius, _pos select 2];

Player setPos _pos;exit;

Page 186: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Der Mapclick eröffnet jedem Missionsdesigner eine Menge Möglichkeiten, wie mananhand dieses Kapitels im Unterbereich „Die Artillerie“ sehr gut erkennen kann. Natürlichgibt es noch viel mehr Möglichkeiten diesen einzusetzen. Als Beispiele dienen hier dassteuern von anderen Gruppen, Anforderung eines Airstrikes, steuern von Nachschub-bewegungen und vieles mehr. Dieses Beispiel ist für Einzelspieler ausgelegt.

Anhand des folgenden Beispiels soll eine KI-Gruppe namens Alpha1 durch den Spielerper Funkmenü frei auf der Karte gesteuert werden. Dabei wird die Zielposition zunächstmit einem Mapklick festgelegt und dazu ein Marker mit Namen AMoveP an die geklickteStelle gebeamt. Im gleichen Moment bekommt der Leader der Einheit den Befehl sichzum Marker AmoveP zu bewegen und bestätigt dies mit einem eingespielten Roger-Sound, welchen man dazu selbst in der Description.ext definieren muss.

Die Gruppe selbst wird, wie in diesem Kapitel unter „Das GPS-System“ erklärt, mit einemMarker auf der Karte gekennzeichnet und verfolgt, was hier jetzt aber nicht weiter erklärtwird. Der Marker AmoveP soll dann wieder von der Karte verschwinden und erst beimnächsten Mapclick wieder auftauchen. Dazu wird dieser Marker am Skriptende so langean die Position [0,0] gebeamt.

Gruppe Alpha 1:Name: Alpha1Initzeile: Alpha1=group thisGruppengröße: Frei festlegbar

Funkauslöser:Aktivierung: Radio Alpha

MehrfachAchse a/b: 0Text: 0-0-1 Alpha 1bei Aktivierung: [] exec “Scripts\Alpha.sqs"

Marker:Name: AmovePText: Alpha 1 MovepointSymbol: DotAchse a/b: 1

187

Kap

itel 6

6.6 - Der Mapclick

Page 187: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Alpha.sqsBei dem Skript geschieht nun folgendes. Zunächst wird die Variable alphaclick auf truegesetzt und auf dem Monitor erscheint ein Text, der den Spieler auffordert auf die Kartezu klicken. Danach merkt sich ArmA, was bei onMapSingleClick festgelegt wurde und dasSkript pausiert bei @!alphaclick, bis der Spieler auf die Karte geklickt hat und damit alleBefehle nach OnMapSingleClick in den " " ausgeführt werden. Unter anderem wird dortdie Variable alphaclick wieder auf false gesetzt.

Jetzt wird der Einblendtext wieder gelöscht und ein Soundsample namens Rogerabgespielt. Nach einer Pause von 20 Sekunden, wird der Marker AmoveP zu einer nichtsichtbaren Position gebeamt und verschwindet somit bis zum nächsten Klick wieder.

188

alphaclick=true;titletext ["Klicke auf die Karte!","plain down"];

;Die folgende Zeile muss in einer Reihe stehen, was hier nicht möglich ist.onMapSingleClick "Leader Alpha1 move _pos;

alphaclick=false;""AMoveP"" setMarkerPos _pos";

@!alphaclick;onMapSingleClick "";titleText ["","plain down"];~1playSound "Roger";~20"AMoveP" setMarkerPos [0,0] ;exit;

Page 188: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Ein ganz besonderes Feature in einer Mission ist die Artillerie. Sei es, dass der Spieler dieMöglichkeit hat dieser per Mapclick einen Zielpunkt zu geben oder, dass die KIArtillerieunterstützung zu der Position einer entdeckten Feindeinheit, zum Beispiel demSpieler, ruft. Die Besonderheit an dieser Artillerie ist, dass diese auch wirklich auf der Karteexistent ist, was für ein Artillerieskript eigentlich nicht unbedingt wichtig ist. Hinzukommt, dass man den Geschützen jederzeit zuschauen kann, wie sie ihre Rohreausrichten und danach in die für sie festgelegte Richtung feuern.

Dies ist leider nicht ohne ein wenig Skriptaufwand möglich, welcher aber noch rechtüberschaubar ist. Zunächst nimmt man einige Einstellungen im Editor vor und erstellt imMissionsordner einen Unterordner namens: Artillerie (klein geschrieben!)

Spielerbezogen:

Der Spieler soll per Funk die Möglichkeit haben Artillerie zu rufen und dieser per Mapclickauf der Karte einen Zielpunkt zuweisen können. Dabei soll ein Marker namens Firepointdiesen Punkt während des Feuervorgangs markieren und danach wieder verschwinden.

Funkauslöser:

Aktivierung: Radio AlphaMehrfach

Achse a/b: 0Text: 0-0-1 Artilleriebei Aktivierung: [] exec “Artillerie\Setfire.sqs"

Marker:

Name: FirepointSymbol: DestroyAchse a/b: 1

Unsichtbares Heli H:

Name: ATargetPosition: Irgendwo auf die Karte

Die Geschütze:

Dieses Beispiel ist mit 6 Geschützen der Seite BLUEFOR und dem Geschütztyp M119definiert. Diese setzt man auf die Karte und benennt diese wie folgt:

Namen: W1, W2, W3, W4, W5, W6

Ein anderer Geschütztyp funktioniert bei diesem Beispiel nicht! Erklärung folgt.

189

Kap

itel 6

6.7 - Die Artillerie

Page 189: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Setfire.sqsBeim Benutzen des Funkauslösers, wird das nun folgende Skript gestartet. Dabei wird dieVariable setfire auf true gesetzt und es erscheint ein Text (titleText), der den Spielerauffordert auf die Karte zu klicken, um so den Feuerpunkt zu bestimmen. In der darauffolgenden Zeile wird die Definition des Mapclicks gestartet und das Skript pausiert ander Position @!setfire und wartet darauf, dass der Spieler auf die Karte klickt.

Beim Klicken wird das unsichtbare Heli-H namens ATarget an die angeklickte Position_pos gebeamt, die Variable setfire wieder auf false gesetzt und somit die Bedingung!setfire (not setfire) erfüllt. Das Skript kann nun weiterlaufen.

Als nächstes wird der Marker Firepoint an die Position des Heli-H´s ATarget gesetzt undder onMapSingleClick deaktiviert. Danach wird das Skript ari.sqs aufgerufen und derText, der den Spieler auffordert auf die Karte zu klicken wieder entfernt.

Ari.sqsNachdem dieses Skript durch den Mapklick aktiviert wurde, wird zunächst ein Funksoundmit einer Länge von 10 Sekunden abgespielt, den man natürlich erst in derDescription.ext definieren muss und erst nach dem Delay von ~10 wird das Skript fire.sqsdurch das jeweilige Geschütz und dem ATarget gestartet. Dies wäre jetzt nur eineSchussfolge!

Möchte man mehrere Schussfolgen haben, kopiert man den Abschnitt Feuereinschließlich dem Delay und fügt ihn zwischen dem letzten Feueraufruf (W6) und Exitein. Die Geschütze würden dann nach einer Nachladepause nochmal feuern.

190

setfire=true;titletext ["Click on the map to set your firedirection","plain down"];onMapSingleClick "ATarget setPos _pos;setfire=false";

@!setfire;"Firepoint" setMarkerPos getPos ATarget;onMapSingleClick "";[] exec "artillerie\ari.sqs";titleText ["","plain down"];~15"Firepoint" setMarkerPos [0,0] ;exit;

playsound "Firedirection";~10;Feuer{[_x, ATarget] exec "Artillerie\Fire.sqs"} foreach [W1,W2,W3,W4,W5,W6]exit;

Page 190: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Fire.sqsNachdem dieses Skript durch die Objekte, also Geschütz und ATarget, dieses Arrays[_x,ATarget] in der Ari.sqs aufgerufen wurde, richten sich die Geschütze aus undschießen auf die angeklickte Position.

Dabei wird das erste Objekt des Arrays, also beispielsweise W1, mit der lokalen Variable_K und das zweite Objekt des Arrays, also das ATarget mit der lokalen Variable _Z belegt.Danach bekommt die lokale Variable _X die X-Position vom ATarget(also _Z) und dielokale Variable _Y den Y-Wert von ATarget zugewiesen.

Mit dem Befehl _K doWatch [_X,_Y,5000] sagt das Skript zu W1(also _K), dass dieser zuATarget und in Höhe 5000 schauen soll. Nach einem kurzen Delay von 5 Sekundenbekommt W1 mit _K fire "M119" den Befehl zu schießen. Kurz darauf werden dieGranaten in einem bestimmten Randombereich _X+((random 80)-40) und _Y =_Y+((random 80)-40), welcher variabel definierbar ist, einschlagen.

Mit dem Befehl _H say "Ari" wird ein Artilleriesound, welcher zunächst auch in derDescription.ext definiert werden muss, mit dem Geräusch eines anfliegenden Artillerie-geschosses abgespielt. Diesen hört man auch nur, wenn man sich in der Nähe desEinschlagbereiches befindet.

191

Kap

itel 6

_K = _this select 0;_Z = _this select 1;_X = getPos _Z select 0;_Y = getPos _Z select 1;_K doWatch [_X,_Y,5000] ;_A =_K Ammo "M119";~5_K fire "M119";@ _A > _K Ammo "M119";~2_N = nearestObject [_K,"HeatM119"];_X = _X+((random 80)-40) ;_Y = _Y+((random 80)-40) ;_H = "HeliHEmpty" createVehicle [_X,_Y] ;~1_H say "Ari";~1_N setPos [_X,_Y,0];"SH_125_HE" createVehicle [_X,_Y,0] ;deleteVehicle _H;exit

Page 191: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Dieses Beispiel funktioniert nur mit dem Geschütz M119, da es in diesem Skript sodefiniert wurde. Möchte man ein Geschütz eines anderen Typs verwenden, muss mandie Klasse des Geschützes (hier: M119) und der Munition (hier: HeatM119)dementsprechend angeben.

Die Klassen der Geschütze findet man im Kapitel 3.2 in der Waffenbezeichnungsliste.

Feindbezogen:Der Spieler oder befreundete Einheiten sollen in einem definierten Auslöserbereich, wennsie durch die Gegnerseite entdeckt werden, mit Artillerie beschossen werden. DasVerfahren ist das Gleiche, wie bei der der zuvor erklärten Variante, nur dass die Skriptenun im Unterordner Feindartillerie liegen und eine Setfire.sqs nicht benötigt wird. Aucheinen Marker, der die Beschusszone zeigt, und ein Heli-H wird es nicht geben.

Variante 1:Man müsste jetzt noch nicht mal östliche Artillerie verwenden, sondern setzt lediglicheinen Auslöser mit folgenden Einstellungen auf die Karte:

Auslöser:

Aktivierung: WestenMehrfachVon Osten entdeckt

Achse a/b: 2000 (den Bereich festlegen!)bei Aktivierung: [thislist] exec “Feindartillerie\Ari.sqs"

und ändert die Ari.sqs im Unterordner, wie auf der nächsten Seite erläutert wird,dementsprechend ab. Lediglich die Ari.sqs würde hierbei abgeändert werden. DieFire.sqs bleibt dabei auf den Geschütztyp M119 eingestellt!

Alle Westeinheiten, die nun in diesem Bereich durch Osteinheiten entdeckt werden,werden mit Artillerie beschossen. Dass dies die eigene Artillerie ist, merkt man dabeinicht.

Variante 2:Möchte man aber für die Ostseite extra Artillerie anlegen, definiert man das wie folgt:

Auslöser:

Aktivierung: WestenMehrfachVon Osten entdeckt

Achse a/b: 2000 (den Bereich festlegen!)bei Aktivierung: [thislist] exec “Feindartillerie\Ari.sqs"

192

Page 192: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Die Geschütze:Dieses Beispiel ist mit 6 Geschützen der Seite Ost und dem Geschütztyp D30 definiert.Diese setzt man auf die Karte und benennt sie wie folgt:Namen: E1, E2, E3, E4, E5, E6

Ari.sqsDie Besonderheit dieser Ari.sqs ergibt sich aus der festgelegten Auslösesyntax imAuslöser, welche ja wie folgt definiert wurde: [thislist] exec " ". Das bedeutet, dass jedeWesteinheit, die durch die Ostseite entdeckt wird, im Skript die lokale Variable _Zielzugewiesen bekommt und somit die Zielkoordinate darstellt. Das jeweilige Geschützund _Ziel würden dann die Fire.sqs im Unterordner Feindartillerie aufrufen.

Fire.sqsDieses Skript wird nun nur noch auf den Ost-Geschütztyp D30 abgestimmt. Dabei mussder Klassenname des Geschützes, hier D30, und der Munitionsname, hier HeatD30,vergeben werden. Man könnte hier als Geschütz also auch einen Panzer o.ä. verwenden.Im Kapitel 3.16 wird erklärt, wie man sich den Waffen- und Munitionstyp ausgeben lässt.

193

Kap

itel 6

_Ziel = _this select 0;

;Feuer{[_x,_Ziel] exec "Feindartillerie\Feuer.sqs"} foreach [E1,E2,E3,E4,E5,E6]exit;

_K = _this select 0;_Z = _this select 1;_X = getPos _Z select 0;_Y = getPos _Z select 1;_K doWatch [_X,_Y,5000];_A =_K Ammo "D30";~5_K fire "D30";@ _A > _K Ammo "D30";~3_N = nearestObject [_K,"HeatD30"];_X = _X+((random 80)-40);_Y = _Y+((random 80)-40);_H = "HeliHEmpty" createVehicle [_X,_Y] ;_H say "Ari";~1_N setPos [_X,_Y,0];"SH_125_HE" createVehicle [_X,_Y,0];deleteVehicle _H;exit;

Page 193: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Gerade im Mehrspielerbereich ist es sehr wichtig, eine gute Performance zu haben, wasaber auch im Einzelspielerbereich nicht unbeachtet bleiben sollte. Je mehr Einheiten sichauf der Karte bewegen bzw. dargestellt werden müssen, desto langsamer oder auchmanchmal unfunktioneller die Mission. Dieses Skript löscht in einem zuvor festgelegtenAuslöserbereich und in variabel definierbarer Zeit tote Einheiten von der Karte. In dieserAuslösesyntax [2] exec "bodydelete.sqs" kann man die Anzahl der toten Einheiten, diemaximal auf der Karte liegen bleiben sollen, frei definieren. Statt der 2 gibt man dazueinfach einen höheren Wert an und somit bleiben mehr Leichen liegen.

Dieses Skript ist nicht seitenbezogen. Hier kommt es darauf an, wie man den Auslösereinstellt. Dies ist mal ein Einstellungsbeispiel für Osten:

Auslöser:

Aktivierung: OSTENEinfachVorhanden

Achse a/b: 2000 (den Bereich festlegen!)bei Aktivierung: [2] exec "Scripts\Bodydelete.sqs"

Möchte man, dass alle Einheiten egal welcher Seite gelöscht werden sollen, wählt man beiAktivierung einfach nur Jeder aus. Möchte man, das nur Westeinheiten gelöscht werdensollen, eben Westen und so weiter. Für dieses Skript wurde im Missionsordner einUnterordner namens Skripte angelegt.

Die Besonderheit an dem Skript ist, dass Soldaten bevor sie gelöscht werden, dank dieserZeile: (Gravedigger) action ["hidebody",_P] erst im Boden versinken.

Dazu braucht man einen Dummy, der im Skript Gravedigger benannt wurde. Diesermacht es dann erst möglich, dass die toten Soldaten zunächst im Boden versinken, bevorsie gelöscht werden. Diesen setzt man einfach irgendwo weit weg vom Geschehen aufeine Insel, damit ihm nichts passiert. Hierbei ist es egal, was es für eine Einheit ist. Er kannjeder Seite angehören. Lediglich der Name muss mit dem im Skript übereinstimmen.Fahrzeuge werden dabei nicht im Boden versinken, sondern direkt gelöscht!

Soldatenbezogen:Dieses Skript ist auf die Typenklasse Man (_T="Man") festgelegt. Es löscht also nurVehikel, die auch diese Typenklasse haben. Gibt man hier Land an, löscht es alleTypenklassen, die Land unterstellt sind. Da sich außer Flugzeuge und Boote alles andereauf Land bewegt, wird somit alles was diese Typenklasse besitzt und nicht mehr lebt, vonder Karte gelöscht.

194

6.8 - Tote Einheiten bzw. Fahrzeuge löschen

Page 194: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Das Skript Bodydelete.sqs sieht dabei wie folgt aus:

In manchen Missionen ist es vorteilhaft die Spielbeschleunigung zu unterdrücken. ZumBeispiel, wenn man nicht möchte, dass der Spieler den Ablauf beschleunigt. Denn dieskönnte je nach Situation negative Auswirkungen auf den Missions- und Spielverlaufhaben. Wenn man zum Beispiel eine hohe Skriplast oder ähnliches hat, könnte dieSpielbeschleunigung gegebenenfalls zu Fehler führen.

Da man dies im Editor nicht mit nur einem Befehl lösen kann, regelt man das mit einemkleinen Skript, welches etwa wie folgt aussehen kann:

Dieses Skript startet man gleich zu Beginn der Mission direkt aus der Init.sqs oder derInitzeile einer Einheit oder eines Objektes. Es setzt die Zeit immer wieder auf 1. Auchwenn der Spieler die Beschleunigung anklickt, wird sich nichts verändern.

195

Kap

itel 6

? !(local server):exit;

_W=_this select 0;_L=[]+thislist;_A=[];_G=[];_T="Man";

{ if (_T counttype [_x] == 1) then {_G=_G+[_x]} } foreach _L;

#Again{ if (not alive _x) then {_A=_A+[_x]} } forEach _G;_G=_G-_A;? count _A > _W :_P=_A select 0;_A=_A-[_P] ;(Gravedigger) action ["Hidebody",_P] ;~10deleteVehicle _P;? count _A == _W and count _G == 0 :exit;goto "Again"

; Spielbeschleunigung unterdrücken

#Check? not alive Player : exit;setAccTime 1.0;~0.1goto "Check"

6.9 - Spielbeschleunigung dauerhaft unterdrücken

Page 195: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Hier ein kleines Feature, welches zwar nicht sonderlich realistisch ist, aber trotzdem einwenig die Möglichkeiten vorn Armed Assault aufzeigen soll. Mit diesem Bullet Mode istes möglich, während des Spielens auf Zeitlupe umzuschalten, so dass man Kampfszenenin Zeitlupe sehen und mit einem Screenshot festhalten kann. Dies wurde hierbei miteinem Actionmenüeintrag und zwei Skripten realisiert. Natürlich ist das Ganze nur imSingleplayerbereich möglich und für Multiplayer eher unbrauchbar.

Zunächst versieht man den Spieler mit einem Actionmenüeintrag:

ID=Player AddAction ["Bullet Mode ON", "Bulleton.sqs"];

Das ist der Eintrag, mit dem man den Bullet Mode zunächst startet. Das Skript sieht dabeiwie folgt aus:

Bulleton.sqs

Dem Spieler wird nach dem Auslösen des Bulletmodes der Eintrag Bullet-Mode ONentfernt und er bekommt den Eintrag Bullet-Mode OFF hinzugefügt. Alles läuft jetzt, bisder Spieler den Bulletmode wieder ausschaltet, in Zeitlupe ab. Bei folgendem Skript wirddas gleiche Verfahren wie oben verwendet, nur eben umgekehrt.

Bulletoff.sqs

Ein nettes Zusatzfeature wäre es, wenn man einen Musiktitel mit angibt, der abgespieltwird, wenn der Modus aktiviert und gestoppt wird, wenn der Modus wieder ausgeschaltetwird.

196

;Eintrag wird entferntPlayer removeAction ID;

;Eintrag wird hinzugefügtIID = Player addAction ["Bullet-Mode OFF ", "bulletoff.sqs"];

;Zeitlupe wird gesetztsetAccTime 0.0900;exit;

;Eintrag wird entferntPlayer removeAction IID;

;Eintrag wird hinzugefügtID = Player addAction ["Bullet-Mode ON ", "bulleton.sqs"];

;Zeitlupe wird zurückgenommensetAccTime 1.0;exit;

6.10 - Der Bullet Mode

Page 196: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Möchte man in einer Mission haben, dass eine befreundete KI irgendwelcheFeindeinheiten meldet und diese dann auf der Karte für einen Moment mit einemblinkenden Marker markiert werden sollen, damit man beispielsweise seine Artilleriedarauf lenken oder andere Einheiten dorthin schicken kann, kann man das wie im nunfolgenden Beispiel realisieren. Im Multiplayer würde man das Skript nur Serverseitigausführen. Dazu in der ersten Skriptzeile den Zusatz ?(!(local server)):exit mit angeben.

Man setzt irgendwo einen Marker auf die Karte und dazu einen Auslöser, der den Bereichfestlegt, welche wie folgt eingestellt:

Auslöser:

Aktivierung: OSTENVon Westen entdecktMehrfach

Achse a/b: 5000bei Aktivierung: thislist exec "Scripts\Signal.sqs"

Marker:

Name: Target1Farbe: RedAchse a/b: 1Symbol: Destroy

Das Skript dazu sieht dann etwa so aus:

197

Kap

itel 6_Target = _this select 0;signalcounter = 0;

"Target1" setMarkerPos getPos _ Target;"Target1" setMarkerType "Destroy";

#Start? (signalcounter>=10) OR not alive _Target : goto "Ende";signalcounter = signalcounter+1;~0.8"Target1" setMarkerColor "ColorRed";~0.8"Target1" setMarkerColor "ColorBlack";goto "Start"

#Ende~1signalcounter = 0;"Target1" setMarkerType "Empty";"Target1" setMarkerColor "ColorBlack";exit;

6.11 - Das Feindmeldescript

Page 197: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Luftschläge sind auf jedem Schlachtfeld ein taktischer Vorteil. Deshalb wird hier eineMöglichkeit vorgestellt, wie man einen Airstrike umsetzen kann. Diese Version mussgegebenenfalls an die jeweilige Mission angepasst werden. Das heißt, man testet denAirstrike vorher im vorgesehenen Missionsgebiet und verändert gegebenfalls dieFlughöhe oder die Zeit bis zum Abwurf. Dabei werden die Treffer zum Teil genauer.

Dieses Beispiel ist leider nicht multiplayertauglich, da die Bombe des Harriers das Spielabstürzen lässt. Um diesen Airstrike in die Mission einzubauen setzt man zunächstfolgende Objekte auf die Karte.

Unsichtbares Heli-H:

Leer/Objekte: H (invisible)Name: ASTarget

Funkauslöser:

Aktivierung: Radio AlphaText: 0-0-1 AIRSTRIKEAchse a/b: 0bei Aktivierung: [] exec "Scripts\Airstrike.sqs"

Marker:

Name: FiredirectionFarbe: rotSymbol: DestroyAchse a/b: 1

Nach dem Aktivieren von Radio Alpha klickt der Spieler auf die Karte und dabei werdendas Atarget und der Marker Firedirection auf diese Position gesetzt. Danach wird einFlugzeug mit Pilot generiert, der dieses Ziel anfliegt. Wenn es in einer gewissen Distanzzum Ziel ist, bekommt es den Bombenabwurfbefehl und wirft die gefährliche Fracht ab.Danach fliegt es weg und wird am Ende wieder gelöscht.

198

6.12 - Der Airstrike

Page 198: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Airstrike.sqsDie Logik und den Marker setzt man hierbei irgendwo an den Kartenrand, damit diese fürden Spieler nicht zu sehen sind und der Marker und das Ziel später wieder an eine nichtsichtbare Position auf der Karte gebeamt werden können. Jetzt muss man nur nochfolgendes Skript anfertigen und es kann losgehen.

Weiter auf der nächsten Seite199

Kap

itel 6

setfire=true;titleText ["Click on the map to set your firedirection","plain down"];onMapSingleClick "ASTarget setPos _pos; setfire=false";

@!setfire;"Firedirection" setmarkerpos getPos ASTarget;playSound "Firedirection";onMapSingleClick "";titleText ["", "plain down"];

;=========DEFINE=======================_dropPosition = getpos ASTarget;~0.5_dropPosX = _dropPosition select 0;_dropPosY = _dropPosition select 1;_dropPosZ = _dropPosition select 2;~0.1_planespawnpos = [_dropPosX + 3000, _dropPosY, _dropPosZ + 1000];_pilotspawnpos = [_dropPosX + 3000, _dropPosY, _dropPosZ + 1000];

;=========CREATE=======================_PlaneG = creategroup WEST;_plane = createVehicle ["AV8B",_planespawnpos,[], 0, "FLY"];_plane setPos [(getPos _plane select 0),(getPos _plane select 1),900] ;

_pilot = "SoldierWPilot" createUnit [getMarkerPos "Firedirection", _PlaneG, "P1=this"];

_Plane setVelocity [100,0,0] ;~0.4P1 moveinDriver _plane;P1 setDamage 0;P1 action ["gear_up", vehicle P1] ;_plane flyinHeight 100;_plane setSpeedMode "full";

#CHECKP1 doMove getPos ASTarget;P1 doTarget ASTarget;P1 doWatch ASTarget;? (_plane distance ASTarget) < 1500 : goto "DROP"goto "CHECK"

Page 199: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Wenn man die grün markierten Werte bei dem Label #Drop und #Check verändert, wirktsich das auf die Treffergenauigkeit aus. Je nach geographischer Gegebenheit ist diesebesser oder eher schlechter, was ja in der Realität auch so ist.

Nachdem der Bomber das Ziel erreicht und seine Bomben abgeworfen hat, bekommtder den Befehl zum versetzten ASTarget zu fliegen um, wenn er ausreichend weit vomSpieler entfernt ist, gelöscht zu werden. Würde man ihn sofort löschen, würde der Soundsofort verschwinden, was ja nicht so realistisch ist. Am Anfang des Skriptes wurde einSound (Playsound "Firedirection") gestartet, der natürlich auch vorhanden sein mussund zuvor in der Description.ext definiert werden sollte.

200

;=========FIRE=======================

#DROP_i = 0_plane flyInHeight 100;_plane setPos [(getPos _plane select 0),(getPos _plane select 1),100] ;~13

#FIRE_i=_i+1_plane fire "BombLauncher";~0.2? _i <= 6 : goto "FIRE"

;=========FLY AWAY=======================

ASTarget setPos [0,0,0];"Firedirection" setMarkerPos [0,0];_plane setSpeedMode “Full”~4_plane flyInHeight 300;P1 doMove getPos ASTarget;

#Check2_plane setDamage 0;P1 setDamage 0;? (_plane distance Player) > 2500 : goto "ENDE";goto "Check2"

;=========DELETE========================

#ENDE;deleteVehicle _plane;deleteGroup _PlaneGdeleteVehicle P1;exit

Page 200: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Dieses Skript ermöglicht es dir Luftfahrzeuge in beliebiger Anzahl und beliebigen Typwährend des Spielverlaufs zu erstellen. Dabei legt man in der Mission einen Startpunkt,z.B. ein unsichtbares Heli-H, fest und weist der per Skript erstellten Einheit ein Ziel, z.B.eine Einheit oder ein weiteres Heli-H zu.

Das Besondere hieran ist der Array, in dem man eine Menge vordefinieren kann. Man hatunter anderem die Möglichkeit den Spieler oder irgendeine andere Einheit imKampfgebiet als Leader einzutragen oder setzt einfach eine Einheit Namens Dummy aufirgendeine Insel weit weg vom Kampfgeschehen. Im Multiplayer für Leader nie das WortPlayer verwenden, sondern den Namen der Einheit. Wichtig: Spiellogik Server setzen!

Der Array und die Syntax zum Starten des Skriptes sehen hierbei wie folgt aus:

[StartPos, "ParachuteC", "SoldierWB", ZielPos, 100, 0, 0.6, "Combat", Dummy, 10] exec "aircreate.sqs"

Dieser sollte natürlich in einer Reihe stehen, was hier nicht möglich ist.

Die Startposition: Hier ein Objekt auf der Karte mit dem Namen Startpos. Idealer-weise ein unsichtbares HeliH, welches man, je nachdem was für ein Luftfahrzeug erstellt werden soll, etwas weiter weg vom Spielgeschehen platzieren sollte. Bei Kampfflugzeugen am besten weit draußen über dem Meer.

Die Fhz-Klasse: Hier kommt der Klassenname des Fahrzeugs rein, welches er-zeugt werden soll. Oben mit "ParachuteC" festgelegt.

Der Einheitstyp: Hier wird der Soldatentyp festgelegt, der das Objekt fliegensoll. Normalerweise ein Pilot. Da aber auch Fallschirmspringermöglich sind, wurde es so ausgelegt, dass man auch andereEinheitstypen angeben kann.

Der Leader: Jede Einheit die erstellt wird benötigt einen Leader. Hier kannman jede x-beliebige Einheit auf der Karte festlegen. In diesem Fall wurde ein Dummy definiert.

Die Flughöhe: Hier gibt man die Flughöhe in Metern an. Diese wurde obenmit 100 festgelegt.

Der Gunner: Da manche Luftfahrzeuge nicht über einen Gunnerplatz ver-fügen, hat man hier die Möglichkeit diesen auszuschalten. Der Wert 0 steht hierbei für „kein Gunner“ und der Wert 1 für „Gunner“.

Der Skill: An dieser Stelle legt man den Skill der Einheit fest. Was obenmit Wert 0.6 definiert wurde, kann auch per Zufall geschehen. Dazu einfach einen Randomwert benutzen (z.B.: random 1).

201

Kap

itel 6

6.13 - Der Airvehiclecreator

Page 201: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Das Verhalten: Hier wird das Verhalten der Einheit festgelegt. Oben wurde hierbei "Combat" verwendet.

Das Ziel: Hier gibt man das Ziel an, welches oben mit ZielPos definiert wurdeund ein Objekt auf der Karte ist, welches diesen Namen trägt. Hier könnte man auch Player oder ähnliches angeben.

Die Anzahl: Und zu guter letzt die Anzahl der Fahrzeuge, die erstellt werdensollen.

Aircreate.sqs

202

?!(local server):exit;

_StartPos = _this select 0;_Airtyp= _this select 1;_Pilottyp = _this select 2;_Target = _this select 3;_Height = _this select 4;_Gunner = _this select 5;_skill = _this select 6;_behaviour = _this select 7;_Leader = _this select 8;_count = _this select 9;_counter = 0;

#Start_counter = _counter +1;_Typ = createVehicle [_Airtyp,[(getPos _StartPos select 0)+ random 200,(getPos _StartPos select 1)+ random 200,_Height + random 150], [], 0, "FLY"];_Typ FlyInHeight _Height;_Typ SetSpeedMode "full";_Typ setDir getdir _StartPos;_pilot = _Pilottyp createUnit [[(getPos _StartPos select 0),(getPos _StartPos select 1),

2000], _Leader,"Pilot1=this"];

Pilot1 moveInDriver _Typ;Pilot1 setSkill _Skill;Pilot1 doMove getPos _Target;Pilot1 setBehaviour "_behaviour";

? _gunner == 0 : goto "Next"_gunner = _Pilottyp createUnit [[(getPos _StartPos select 0),(getPos _StartPos select 1),

2000], _Leader,"Gunner1=this"];Gunner1 moveInGunner _Typ;Gunner1 setSkill _Skill;Gunner1 setBehaviour "_behaviour";

#Next? _counter >= _count : exit;~0.5goto "Start"

Page 202: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Da der Scheinwerfer zum Teil nur bewegungslos in die Gegend leuchtet, habe ich diesesSkript dafür entworfen. Hierbei hat man die Möglichkeit in einem Array die äußerenbeiden Bewegungsgrenzen frei zu definieren. Das bedeutet, dass die Einheit amScheinwerfer bis zu ihrem linken im Array festgelegten Punkt leuchtet und dann wiederzurück bis zu ihrem rechten im Array festgelegten Punkt. Der Scheinwerfer bewegt sichdabei langsam von der jeweiligen Richtung in die andere. Jetzt liegt es am Editierer, wieweit die Einheit leuchten darf. Zunächst die Scheinwerfereinheit erstellen und mit einemNamen versehen (z.B.: Wache1) und dann den Array der Syntax dafür festlegen.

Hierfür wird folgende Syntax benötigt, um das Skript zu starten:

[Name,Linkswert,Rechtswert] exec "Light.sqs"

[Wache1,100,180] exec "Light.sqs"

Diese Werte werden dann bei dem Aufruf an das Skript Light.sqs übergeben.

Light.sqs

Known BugDa in Armed Assault vom System her sehr zurückgefahren wird und Objekte, die weitervom Spieler entfernt sind teilweise quasi abgeschaltet werden, kommt es vor, dass derScheinwerfer erst anfängt sich zu bewegen, wenn irgendeine Einheit ihren Weg kreuzt.Dazu einfach eine Streife davor entlang laufen lassen oder kurz eine Einheit direkt vormScheinwerfer createn und dann wieder löschen (siehe Kapitel 5.45).

203

Kap

itel 6

_Unit = _this select 0;_left = _this select 1;_right = _this select 2;_dir = (getDir _Unit);

#Start? !(alive _Unit) : exit;~0.5_dir = _dir+1;_Unit setFormDir _dir;?(_dir > _right) : goto "Next"goto "Start"

#Next? !(alive _Unit) : exit;~0.5_dir = _dir -1;_Unit setFormDir _dir;?(_dir < _left) : goto "Start";goto "Next"

6.14 - Der Scheinwerfer

Page 203: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Möchte man seine Mission mit einem Zeitzähler versehen, so kann man dies aufunterschiedliche Art und Weise machen. Hier mal zwei Beispiele. Einmal mit einerTitletext-Einblendung und einmal mit einer Hint-Einblendung.

Die Auslösesyntax wird hierbei wie folgt definiert :

[60] exec "Time.sqs"

Wobei die 60 für den Wert steht. Dieser Wert wird jetzt so lange runtergezählt und aufdem Monitor angezeigt, bis er den Wert 0 erreicht hat und das Skript dann beendet wird.

Time.sqsZunächst die Titletext-Variante, bei welcher die Zahlen am unteren Rand des Bildschirmseingeblendet und langsam runtergezählt werden.

Und hier noch die Hint-Variante, bei welcher die Zahlen oben links am Bildschirmrandeingeblendet und langsam runtergezählt werden.

Möchte man einen Wert hoch zählen lassen, setzt man die Zeile _time = _time -1 stattdem - ein +, ändert (_time >= 1) auf (_time <= _time) und passt den Text entsprechendan (z.B.: %1 Sekunden). Die Syntax startet man dann mit

[0] exec "Time.sqs"

204

_time = _this select 0;

#Start~1_time = _time -1;Titletext [format["Noch %1 Sekunden", _time],"plain down"];if (_time >= 1) then {goto "Start"} else {};

Titletext ["","plain down"];exit;

_time = _this select 0;

#Start~1_time = _time -1;Hint format["Noch %1 Sekunden", _time];if (_time >= 1) then {goto "Start"} else {};

Titletext ["","plain down"];exit;

6.15 - Der Zeitzähler

Page 204: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Dieses Skript ermöglicht es Einheiten durch ein Gebäude streifen zu lassen. Dazu mussaber erwähnt werden, dass dies derzeit nur bei dem Hotel wirklich Sinn macht. Man hatdank des wirklich großen Arrays die Möglichkeit, dieses Skript optimal für seineBedürfnisse zu nutzen. Dieses Skript läuft ohne Weiteres hervorragend im Multiplayer.Dieses wird dabei mit der folgenden, teilweise recht unübersichtlichen Syntax, ausgelöst.Damit man jetzt versteht, wie man diesen Array für seine Bedürfnisse anpassen kann,folgt natürlich gleich eine Erläuterung dazu. Zunächst die Auslösesyntax mit dem Array:

[Name, "SAFE", Hotel, 161, 1, 160, 2, 10, 100, 200, 256, 0, 1] exec "housepos.sqs";

205

Bezeichnung Skript ErklärungName _man Name der EinheitVerhalten _behaviour Verhalten der EinheitGebäude _house Name des Gebäudes (siehe Kapitel 5.61!)

Logik auf das Gebäude setzen und in die Initzeile:Hotel=nearestBuilding this

Startposition _startpos Startposition der Einheit im GebäudeZufall _accident Zufallspositionen (1=an / 0=aus)

Hier aktiviert man die Zufallspositionen für zu-sätzliche Wegpunkte im Gebäude. Ist der Wert0, werden Zufallspositionzahl und Zufallsposition-anzahl überlesen.

Zufallspositionzahl _accidentnr ZufallspositionszahlHier gibt man den Wert an, aus dem eine Zufalls-position ermittelt werden soll. Zum Beispiel wie oben der Wert 160. Es wird jetzt eine Zufalls-position zwischen 0 und 160 ermittelt und als Wegpunkt vergeben.

Zufallspositionanzahl _accidentcount Anzahl der ZufallspositionenWie oft soll eine solche Position generiert werden. Oben sind 2 Abläufe definiert.

Pause _rest Pause an Position (oben: 10)Wie lange soll die Einheit an der Position warten, bis sie zur nächsten weiterläuft.

Wegpunkt 1 _wp1 Erster Wegpunkt (oben: 100)Wegpunkt 2 _wp2 Zweiter Wegpunkt (oben: 200)Endwegpunkt _ende Endwegpunkt (oben: 250)Statisch/Dynamisch _form Start (Statisch=0/Dynamisch=1)

Ist der Wert wie oben 0, dann wird die Einheit an die definierte Startposition im Haus gesetzt.

Wiederholen _loop Skript wiederholen.oder Streife beenden.

Kap

itel 6

6.16 - Das House-Patrol-Script

Page 205: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Werte wie Pause oder Start-, Wegpunkt 1, Wegpunkt 2 oder Endwegpunkt kann manhervorragend zusätzlich mit Random belegen und somit noch mehr Dynamik einbringen.Dazu einfach Random vor den Wert im Array schreiben.

Dieser Array erfordert ein wenig Konzentration konfigurieren, da dort eine MengeZahlenwerte hintereinander folgen und man schnell durcheinander kommt. Deshalbmuss man hier mal wieder ein wenig gewissenhaft und konzentriert vorgehen.

HousePos.sqs

Weiter nächste Seite.

206

?!(Local Server): exit

_man = _this select 0;_behaviour = _this select 1;_house = _this select 2;_startpos = _this select 3;_accident = _this select 4;_accidentnr = _this select 5;_accidentcount = _this select 6;_rest = _this select 7;_wp1 = _this select 8;_wp2 = _this select 9;_ende = _this select 10;_form = _this select 11;_loop = _this select 12;

#LOOP_counter = 0;_man setbehaviour _behaviour;

;//Form of employment (Static=0/Dynamic=1)? _form == 0 : {_x setpos (_house buildingPos _startpos)} foreach units _man;

;//First Waypoint (Enable=Buildingposition;Disable=0)#WP1? _wp1 == 0 : goto "WP2"Leader _man move (_house buildingPos _wp1);

#WP1Dest~1? Leader _man distance (_house buildingPos _wp1) > 2 : goto "WP1Dest";~ _rest

;//Second Waypoint (Enable=Buildingposition;Disable=0)#WP2? _wp2 == 0 : goto "AccidentPos";Leader _man move (_house buildingPos _wp2);

Page 206: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Dieses Skript kann man nun sehr flexibel einsetzen. Als Beispiel mal folgendes:

Man möchte, dass Einheiten ein paar Wegpunkte um das Gebäude ablaufen, dann aneinem Wegpunkt das Skript aktivieren, diese Positionen ablaufen und danach wieder umdas Gebäude laufen. Dazu würde man dynamisch/statisch auf 1, also auf dynamischsetzen. Somit würde die Einheit zunächst den Befehl bekommen den Wegpunkt 1anzusteuern. Loop setzt man dabei logischerweise auf 0!

Generell sollte eine Gruppe nicht mehr als 1-3 Einheiten für eine Streife in dem Gebäudehaben. Wobei wohl 1-2 Einheiten realistisch wären. In dem Hotel hat man schon dieMöglichkeit mehrere Streifen laufen zu lassen. Zuzüglich fest gesetzter Einheiten in demGebäude hat es ein Spieler nicht leicht dort heil oder unbemerkt rein oderherauszukommen.

207

Kap

itel 6

#WP2Dest~1? Leader _man distance (_house buildingPos _wp2) > 2 : goto "WP2Dest";~ _rest

;//Accidenpositions (Enable=1;Disable=0)#AccidentPos? _accident == 0 : goto "EndP";

#Accident;_counter = _counter +1;_apos = random _accidentnr;~1Leader _man move (_house buildingPos _apos);

#APosCheck~1? Leader _man distance (_house buildingPos _apos) > 2 : goto "APosCheck"? _counter >= _accidentcount : goto "EndP"~ _restgoto "Accident"

;//End Waypoint (Enable=Buildingposition;Disable=0)#EndP? _ende == 0 : goto "Ende"~ _restLeader _man move (_house buildingPos _ende);

#EndPDest~1? Leader _man distance (_house buildingPos _ende) > 2 : goto "EndPDest"

;// LOOP (Enable=1;Disable=0)#Ende? _loop == 1 : goto "Loop"exit;

Page 207: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Da die Minen nicht wirklich die Funktion einer Mine erfüllen, muss dabei ebennachgeholfen werden. Das löst man hierbei wieder mit einem Skript. Hierbei werden zweiverschiedene Skripte angelegt. Eins für Antipersonenminen und eins für Panzerminen.Der Unterschied besteht dabei nur bei dem Shelltyp, der für die Explosion benötigt wird.Schließlich haben Panzerminen eine größere Sprengkraft als Antipersonenminen.

Dazu setzt man zunächst eine Mine auf die Karte und als Ergänzung einen Auslöser, derdann das Skript bei Auslösung aktiviert und die Explosion herbeiführt. Diesen setzt mandirekt auf die Mine so dass, wenn eine Einheit in den Bereich der Mine bzw. Auslöserkommt, dieser auslöst.

Antipersonenmine

Auslöser:

Aktivierung: SEITEEinfach

Achse: 1/1bei Aktivierung: thislist exec "apmine.sqs"

APmine.sqs

Der Vorteil hieran ist, dass man eine Mine mit dem definierten Auslöser mit Copy & Pastein beliebiger Anzahl vervielfältigen kann, ohne noch irgendwas anderes definieren zumüssen. Ein Skript für hunderte von Minen.

Panzermine:Für die Panzermine kann man das gleiche Verfahren verwenden, nur dass man eben imSkript einen stärkeren Sprengkörper, also eine andere Shellklasse, verwendet. Diese gibt’swie gewohnt im Kapitel 3.10. Das Skript benennt man dabei dann eben pzmine.sqs.Für Panzerminen bietet es sich an den Radius des Auslösers ein wenig zu vergrößern.

208

?(!(Local Server)): exit;

_Soldier = _this select 0;_Bomb="SH_125_HE" createVehicle position _Soldierexit;

6.17 - Das Minen-Skript

Page 208: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Dieses Skript ermöglicht es Fahrzeuge und Objekte an ein Fluggerät zu hängen und anein Ziel zu transportieren. Hierbei sind zwei Varianten möglich. Zum Ersten die, dass manzwei Objekte (Helikopter(Heli) und Ladung(Veh1)) auf der Karte vordefiniert und mitdessen Namen das VehTrsp-Skript aufruft. Dabei wird die Ladung von dem Startpunktdes Helikopters bis zum definierten Zielpunkt geflogen und dort abgesetzt. Aufgrundder Nichtfunktionalität von Setpos im Multiplayer, läuft dieses Beispiel zur Zeit nur imSingleplayer vernünftig. Das Skript wird mit folgender Syntax aufgerufen:

[Heli,Veh1, 70, Player, EndPos] exec "vehtrsp.sqs"

Der Array erklärt sich hierbei wie folgt:

[Transporter, Ladung, Flughöhe, Absetzpunkt, Endposition]

VehTrsp.sqs

209

Kap

itel 6

?!(Local Server): exit

_TranspVeh = _this select 0_Cargo = _this select 1_Height = _this select 2_Place = _this select 3_EndPos = _this select 4_TranspVeh domove getpos _Place;_TranspVeh flyinheight _Height;;/////////////////////////////TRANSPORT/////////////////////////////////#Loop_xPos = (getPos _TranspVeh) select 0_yPos = (getPos _TranspVeh) select 1_zPos = (getPos _TranspVeh) select 2_Cargo setPos [_xPos, _yPos, _zPos -10];_Cargo setDir (getDir _TranspVeh);? _TranspVeh distance Player < 100 : goto "Next"~.01goto "Loop";/////////////////////////////LANDING//////////////////////////////////#Next_TranspVeh flyinheight 13;_TranspVeh setspeedMode "Limited";_TranspVeh action ["AUTOHOVER", _TranspVeh];#Loop2_xPos = (getPos _TranspVeh) select 0_yPos = (getPos _TranspVeh) select 1_zPos = (getPos _TranspVeh) select 2_Cargo setPos [_xPos, _yPos, _zPos -10];_Cargo setDir (getDir _TranspVeh);

? (getPos _Cargo select 2) < 1.5 : goto "Loop3"~.01goto "Loop2"

6.18 - Das Vehikeltransportskript

Page 209: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Spawn-VarianteZum Zweiten gibt es die Variante, mit der beide Vehikel an einem Startpunkt auf der Karteerzeugt werden, der Heli mit der Ladung zu dem Absetzpunkt fliegt, dort die Ladungabgesetzt und dann weiter zum definierten Endpunkt fliegt, wo er dann gelöscht wird.Damit dies auch im Editor übersichtlich gestaltet werden kann, ist das Ganze mit dreiunsichtbaren Heli-H´s mit Namen:

StartPos Target EndPos

realisiert. Diese kann man nun frei auf der Karte platzieren. Das Besondere hieran ist, dassder Heli beim Start in die Blickrichtung des StartPos-Objektes ausgerichtet wird. So kannman durch drehen des StartPos-Objektes schon mal die Flugrichtung desTransporthubschraubers bestimmen.

Natürlich hat man hier auch die Möglichkeit als Absetzpunkt den Spieler oder ähnlichesanzugeben. Dazu würde man statt Target einfach Player oder den Namen der Einheitdort angeben, bei dem die Ladung abgesetzt werden soll.

Als Leader für den zu erstellenden Heli wurde eine Einheit mit Namen Dummy auf derKarte vordefiniert. Dies hat den Grund, dass der Transporthubschrauber dannerfahrungsgemäß besser fliegt und besser landet.

Folgend die Syntax, mit der das Skript aufgerufen wird.

["UH60MG", "HMMWVMK", "SoldierWPilot", 70, StartPos, Target, EndPos, Dummy] exec "vehtrspcreate.sqs"

Der Array erklärt sich hierbei wie folgt:

["HeliTyp", "Ladungstyp", "Pilottyp", Flughöhe, Startposition, Absetzpunkt, Endposition, Leader]

210

##Loop3_xPos = (getPos _TranspVeh) select 0_yPos = (getPos _TranspVeh) select 1_zPos = (getPos _TranspVeh) select 2_Cargo setPos [_xPos, _yPos, _zPos -10];_Cargo setDir (getDir _TranspVeh);? speed _TranspVeh < 1 : goto "Ende";~.01goto "Loop3";/////////////////////////////UNLOADING//////////////////////////////////

#Ende_Cargo setpos [(getpos _Cargo select 0),(getpos _Cargo select 1),0]_TranspVeh action ["CANCELACTION", _TranspVeh]_TranspVeh flyinheight _Height_TranspVeh domove getpos _EndPos_TranspVeh setSpeedMode "Normal"exit

Page 210: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

VehTrspCreate.sqs

211

Kap

itel 6

?!(Local Server): exit

_AirVeh = _this select 0_Vehicle = _this select 1_Pilottyp = _this select 2_Height = _this select 3_StartPos = _this select 4_Place = _this select 5_EndPos = _this select 6_Leader = _this select 7

;/////////////////////////////CREATE////////////////////////////////////_TranspVeh = createVehicle [_AirVeh,[(getpos _StartPos select 0),(getpos _StartPos

select 1),_Height], [], 0, "FLY"];_TranspVeh setdir getdir _StartPos_Cargo = _Vehicle createVehicle getpos _TranspVeh_pilot = _Pilottyp createUnit [[(getpos _StartPos select 0),(getpos _StartPos select1),2000], _Leader,"Pilot1=this"]

Pilot1 moveinDriver _TranspVeh_TranspVeh flyinheight _Height

;/////////////////////////////TRANSPORT/////////////////////////////////#LoopPilot1 domove getpos _Place_xPos = (getPos _TranspVeh) select 0_yPos = (getPos _TranspVeh) select 1_zPos = (getPos _TranspVeh) select 2

_Cargo setPos [_xPos, _yPos, _zPos -10];_Cargo setDir (getDir _TranspVeh);? _TranspVeh distance _Place < 90 + random 50 : goto "Next"~.01goto "Loop"

;/////////////////////////////LANDING///////////////////////////////////#Next_TranspVeh flyinheight 13;_TranspVeh setSpeedMode "Limited";_TranspVeh action ["AUTOHOVER", _TranspVeh];

#Loop2_xPos = (getPos _TranspVeh) select 0_yPos = (getPos _TranspVeh) select 1_zPos = (getPos _TranspVeh) select 2

_Cargo setPos [_xPos, _yPos, _zPos -10];_Cargo setDir (getDir _TranspVeh);

Page 211: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

212

? (getPos _Cargo select 2) < 1.5 : goto "Loop3"~.01goto "Loop2"

#Loop3_xPos = (getPos _TranspVeh) select 0_yPos = (getPos _TranspVeh) select 1_zPos = (getPos _TranspVeh) select 2

_Cargo setPos [_xPos, _yPos, _zPos -10];_Cargo setDir (getDir _TranspVeh);? speed _TranspVeh < 0.7 : goto "Ende";~.01goto "Loop3"

;/////////////////////////////UNLOADING//////////////////////////////////#Ende_Cargo setpos [(getpos _Cargo select 0),(getpos _Cargo select 1),0]_TranspVeh action ["CANCELACTION", _TranspVeh]_TranspVeh flyinheight _Height_TranspVeh domove getpos _EndPos_TranspVeh setSpeedMode "Full"

;/////////////////////////////DELETE////////////////////////////////////@ _TranspVeh distance _EndPos < 100deleteVehicle _TranspVehdeleteVehicle Pilot1exit

Page 212: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

213

Ein Schwarm Möwen bringt mal wieder eine Menge Atmosphäre ist Spiel. Es fliegt zwarschon so allerlei durch die Lüfte, aber wenn man einen Schwarm gezielt umherfliegenlässt, hat das auch etwas Besonderes. Das Ganze realisiert man mal wieder per Skript. Fürdieses Beispiel setzt man zwei Objekte, idealerweise unsichtbare Heli H´s, mit NamenStart und Ziel auf die Map und definiert diese im Auslösearray für das Skript.

[Start,Ziel,Anzahl] exec "scripte\bird.sqs"

Bird.sqs

Nach Auslösung des Skriptes werden die Vögel an der Startposition in einemRandombereich (definiert bei: _x,_y,_z) erzeugt, welchen man natürlich jederzeit freiändern kann. Jeder erstellte Vogel löst dann das zweite Skipt aus und bekommt einZufallsziel per Randomwert zugewiesen, den er dann anfliegt.

Kap

itel 6

_spos = _this select 0_zpos = _this select 1_count = _this select 2_i = 0

#Check_x = (random 30) + 10_y = (random 30) + 10_z = (random 30) + 10

? _i >= _count : exit_i = _i + 1

_bird="seagull" camcreate [(getpos _spos select 0) - (sin getdir _spos * _x),(getpos _spos select 1) - (cos getdir _spos * _y), _z]

[_bird,_spos,_zpos] exec "birdpos.sqs"

goto "check"

6.19 - Das Möwenskript

Page 213: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Birdpos.sqs

Natürlich lässt sich dieses Beispiel jederzeit noch um weitere Möglichkeiten undPositionen erweitern. Statt der Möwe könnte man hier auch Bienen oder ähnlichesangeben. Dazu bitte im Kapitel 3.9 bei den Einheitsklassen nachschauen.

Folgend noch ein paar Syntaxbeispiele.

deletevehicle _bird - Der Vogel wird gelöscht_bird camSetPos position Player - Der Vogel fliegt zum Spieler_bird camsetpos [x,y,z] - Der Vogel fliegt zu XYZ-Position_bird camCommand "Landed" - Der Vogel landet

214

_bird = _this select 0_spos = _this select 1_zpos = _this select 2_x = (random 10) + 10_y = (random 10) + 10_z = (random 10) + 10

#Loop_bird camsetpos [(getpos _zpos select 0) - (sin getdir _zpos * _x),

(getpos _zpos select 1) - (cos getdir _zpos * _y), _z]

? _bird distance _zpos <= 30 : goto "Loop2"~1goto "Loop"

#Loop2_bird camsetpos [(getpos _spos select 0) - (sin getdir _spos * _x),

(getpos _spos select 1) - (cos getdir _spos * _y), _z]

? _bird distance _spos <= 30 : goto "Loop"~1goto "Loop2"

Page 214: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Das Insektenskript gleicht vom Aufbau her dem Möwenskript. Dieses wurde nur ein weniganders angelegt. Hier sollen Fliegen über einer Leiche erstellt werden, die diese dannumkreisen. Dazu schreibt man lediglich die folgende Syntax in die Initzeile der jeweiligenEinheit.

[this,60] exec "skripte\insect.sqs"

Statt this kann dort natürlich auch der Name der Einheit stehen. Die 60 steht hierbei fürdie Anzahl der Fliegen, die die Leiche umkreisen sollen. Alternativ kann man natürlichnoch einen Insektensound definieren, der dann im Bereich der Leiche abgespielt wird.

Insect.sqs

Insectpos.sqs

215

Kap

itel 6

?(!(local server)) : exit_deadman = _this select 0_count = _this select 1_i = 0@not alive _deadman#Check_x = random 1_y = random 1_z = random 3

? _i >= _count : exit_i = _i + 1

_insect="HOUSEFLY" camcreate [(getpos _deadman select 0) + _x,(getpos _deadman select 1) + _y,_z]

[_deadman,_insect] exec "insectpos.sqs"

goto "check"

_deadman = _this select 0_insect = _this select 1

#Loop_insect camsetpos position _deadman? _insect distance _deadman <= 0.1 : goto "Loop2"~2goto "Loop"

#Loop2_x = (random 3) + 1_y = (random 3) + 1_z = (random 3) + 2_insect camsetpos [(getpos _deadman select 0) + (sin getdir _deadman * _x),(getpos _deadman select 1) + (cos getdir _deadman * _y), _z]

? _insect distance _deadman >= _x : goto "Loop"~2goto "Loop2"

6.20 - Das Insektenskript

Page 215: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Dieser Abschnitt zeigt anhand eines Beispiels, wie man eine KI als Bombenleger einsetzenkann. Diese bewegt sich dann zum Zielpunkt, legt die Bombe und zündet sie, wenn sieweit genug entfernt ist bzw. ihren nächsten Wegpunkt erreicht hat.

Dafür nun ein ganz simples Beispiel mit nur drei Wegpunkten. Zunächst muss die Einheitnatürlich auch über Sprengsätze verfügen, welche man ihr mit

this addMagazine "pipebomb";

zuweisen kann. In diesem Beispiel wird ein Ost-Saboteur verwendet, welcher bereits überSprengsätze verfügt und von daher nicht extra ausgerüstet werden muss.

Zunächst wird die Einheit mit Namen Enemy1 auf die Map gesetzt und ganz normal mitWegpunkten versehen. Dabei trägt man an jedem Wegpunkt, wo eine Bombe gelegtwerden soll

Enemy1 fire "PipeBombMuzzle"

in die Zeile “bei Aktivierung” ein. Der letzte Wegpunkt wird dann mit dem Auslösebefehlversehen, bei welchem die KI die Sprengsätze zünden soll.

Enemy1 action ["TOUCHOFF", Enemy1];

Beipielgrafik

Natürlich kann man das Ganze jetzt noch unendlich ausschmücken. Etwa mit weiterenWegpunkten, Aktionen und so weiter. Die Einstellung der Wegpunkte liegt amMissionsersteller selbst. Dinge wie Verhalten oder Geschwindigkeit sind nicht geradeunwesentlich. Auch die Verwendung der Zeitwerte (Min, Mid, Max) ist sehr interessantund verleiht wieder eine gewisse Dynamik.

216

6.21 - Der Bombenleger

Page 216: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

217

Kap

itel 6

Dieses Beispiel zeigt, wie man einen Aufklärer realisieren könnte. Hiermit hat man dieMöglichkeit per Funkmenü in die Einheit zu switchen um sich mit eigenem Blick einenEindruck von der Umgebung zu verschaffen, in der sich der Aufklärer gerade aufhält.Hierbei ist es egal, ob es ein Soldat, ein Panzer oder ein Flugzeug ist.

Der Grundbefehl ermöglicht es zunächst in verschiedene Perspektiven der Einheit zuswitchen. Hierbei stehen folgende Perspektiven zur Auswahl:

"INTERNAL" - Sicht aus Einheit (1st person)"EXTERNAL" - Sicht aus Rücken der Einheit (3rd person)"GUNNER" - Sicht aus Visier der Einheit (Optic)"GROUP" - Gruppenansicht (nur bei Leader)

Mit der folgenden Befehl switcht man in die Einheit und die definierte Perspektive:

Player switchCamera "Internal"

Bei dem nun folgenden Skriptbeispiel, bei welchem die Startsyntax mal wieder freidefniert werden kann, hat der Spieler die Möglichkeit für einen vom Editierer festgelegtenZeitwert in die vom Editierer festgelegte Perspektive des Aufklärers zu switchen. NachAblauf der Zeit schaltet die Kamera wieder zurück auf den Spieler.

Als Aufklärer könnte in diesem Beispiel jede Einheitsform dienen. Die Auslösesyntax lautetwie nun folgt, wobei man den Spieler, den Scout, die Zeit und die "Perspektive" angibt.

[Player,Scout,10,"external"] exec "scoutswitch.sqs"

Scoutswitch.sqs

_leader = _this select 0_scout = _this select 1_timeo = _this select 2_mode = _this select 3_i = 0disableuserinput true_scout switchCamera _mode#Loop_i = _i + 1? _i >= _timeo : goto "Ende"~1goto "Loop"

#Endetitlecut [" ", "Black Out"]; titleFadeOut 1~0.5_leader switchCamera "Internal"disableuserinput falsetitlecut [" ", "Black In"]; titleFadeOut 1exit

6.22 - Der Aufklärer

Page 217: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

218

Hier mal ein Beispiel, wie man es umsetzen kann, dass sich Einheiten ergeben, wennbestimmte Bedingungen erfüllt sind. Bedingungen könnten sein, das die Einheit wenigerMunition hat als vordefinierter Wert, mehr verletzt ist als vordefinierter Wert oder imBereich weniger verbündete Einheiten als vordefinierter Wert sind.

Diese lassen sich nun bündeln, damit sicht nicht jede Einheit gleich ergibt, obwohl nochgenügend Verbündete in der Nähe sind. Es müssen also mehrere Bedingungen erfülltsein, bevor sich die Einheit ergibt. Als Beispiel:

?!(canStand _enemy) AND (_ammo < _AmmoStat) : goto "PutDown"

Hier wäre die Bedingung wenn “Einheit nicht mehr stehen kann” und zusätzlich, wenn“Munitionsstatus kleiner als vorgegebener Wert ist”. Sind beide erfüllt, würde das Skriptzum Label PutDown springen und die Einheit sich ergeben. Im Beispielskript wurdenunter dem Label Check mehrere gemischte Bedingungszeilen untereinander gesetzt.Trifft eine davon zu, wird sich die Einheit ergeben.

Doch jetzt noch was Besonderes. In der Realität ergeben sich Soldaten manchmal undgreifen plötzlich doch wieder zur Waffe oder haben gar noch eine Waffe irgendwo in derTasche. Andere wiederum geben ganz auf. Dieses Skript ermöglicht es dies flexibel zudefinieren. Man kann festlegen, dass die Einheit sich wirklich ergibt oder auch, dass dieEinheit irgendwann versucht zu fliegen. Es kann zusätzlich sogar noch definiert werden,ob alle Waffen gelöscht werden sollen oder gar noch eine vorhanden bleiben soll.

Wenn sich eine Einheit nun ergibt, legt sie ihre Primär- sowie Sekundärwaffe ab und legtdie Hände hinter den Kopf. Wurde definiert, dass die Einheit fix stehen bleiben soll,passiert nichts weiter. Wurde definiert, dass die Einheit abhauen soll, kann es passierendass sie, wenn nicht alle Waffen gelöscht wurden, zurückschießt oder gar eineHandgranate wirft. Es kommt sogar vor, dass sich die Einheit an einer Leiche neubewaffnet. Die KI wird Dank setCaptive nicht auf kapitulierte Einheiten schießen, außersie haut ab oder greift wieder zur Waffe, dann sieht das schon ganz anders aus.

Verwendet man in dem Auslösearray feste Werte, dann weiß man genau, dass sich eineEinheit ergibt, wenn sie beispielsweise nicht mehr stehen kann und weniger alsvordefinierte Munition hat. Versieht man den Auslösearray aber mit Randomwerten, sokann man gar nicht vorhersagen wie die einzelne Einheit reagieren wird.

Der AuslösearrayDer Auslösearray erklärt sich hierbei wie folgt

[Name,Fluchtwert,Munition,Verletzt,Waffenweg,Fix,Freunde,Bereich]

Hier ein Beispiel mit der Verwendung fester Werte:

[this,0.5,1,0.5,0,0,3,150]

Hier ein Beispiel mit der Verwendung einiger variabler Werte:

[this,random 0.7,2,random 1,random 1.5,random 2,6+(random3),200]

6.23 - Einheit ergibt sich

Page 218: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

219

Kap

itel 6

Diese Werte, egal ob fix oder variable, werden dann an das Skirpt übergeben. Natürlichmuss dieses noch hinter den Array angegeben werden. Die Auslösesyntax lautet dann:

[this,0.5,1,0.5,0,0,3,200] exec "capitulation.sqs";

Arraydefinitionen

Name - Name der Einheit. In der Initzeile auch this möglich.

Fluchtwert - Fluchtwert der Einheit, welche eine der Bedingungen darstellt.

Munition - Mindestwert an Munition der zum Ergeben erreicht sein muss.

Verletzt - Mindestwert der Verletzung der zum Ergeben erreicht sein muss.

Waffenweg - Alle Waffen löschen oder nicht. Wert 1 löscht alle. Bis 0.9 erhält die Waffen.Durch Radomwert random 1.5 ungewiss. Ab >=1 sind die Waffen weg.Randomwert sollte nicht größer als 1.5 sein!

Fix - Einheit bleibt nach Ergeben definitiv an der Stelle stehen stehen.Werte <= 1 fixiert die Einheit, Werte <=2 gibt Fluchtmöglichkeit.Im Variablebeispiel wurde random 2 definiert. Also Ungewissheit.

Freunde - Wie viele Verbündete sind mindestens noch im Bereich. Wird der Wert unterschritten, ist die Bedingung erfüllt. Im Beispiel wurde hier der Wert 6+(random3) verwendet. Also mindestens 6 plus Zufallswert.Im Skipt wurden Osteinheiten definiert. Möchte man eine andere Seite anlegen, muss man dort die Soldaten- und Fahrzeugklassen der Seite angeben.

Bereich - Bereich, welcher geprüft werden soll in Metern. Sind in dem Bereich keine der definierten vorhanden, ist eine weitere Bedingung erfüllt.

Einzelne EinheitMöchte man nur eine einzelne Einheit mit dem Skript belegen, so schreibt man dieAuslösesyntax in die Initzeile der Einheit und definiert die gewünschten Werte.

[this,0.5,1,0.5,0,0,3,200] exec "capitulation.sqs";

Einheiten in einem BereichMit folgender Auslösesyntax lösen alle Einheiten eines Auslöserbereiches einzeln dasSkript aus. Durch Verwendung der Randomwerte verhält sich nun jede Einheit anders.

Auslöser:

Aktivierung: OstEinfach

Achse a/b: beliebigbei Aktivierung: {[_x,random 0.7,2,random 1,random 1.5,random 2,6,200]

exec "capitulation.sqs"} forEach thislist

Page 219: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

220

Dieses Thema lässt sich unendlich ausweiten und auch die Bedingungen bis ins kleinsteDetail festlegen, aber irgendwo muss ja mal eine Grenze sein.

?(!(local server)):exit

_Enemy = _this select 0_Fleeing = _this select 1_AmmoStat = _this select 2_Injurned = _this select 3_Removeall = _this select 4_Standfix = _this select 5_friendly = _this select 6_Area = _this select 7_Enemy allowFleeing _Fleeing

#Check? not alive _enemy : exit_ammo = count magazines _enemy_dammage = getdammage _enemy

;Folgende drei Zeilen stellen eine lange Zeile dar! Klassen bei Bedarf ergänzen._friends = count nearestObjects [_enemy,

["SoldierEAA","SoldierEAT","SoldierECrew","SoldierEMiner","SoldierEG","SoldierEMG","SoldierEMedic","SoldierESniper","SquadLeaderE","T72","BMP2","UAZMG","ZSU"], _area]

;Folgende zwei Zweierzeilen stellen je eine lange Zeile dar. Also goto hinter die :? (_friends < _friendly) AND (_ammo < _AmmoStat) AND (_dammage > _Injurned) :

goto "PutDown"? (_ammo < _AmmoStat) AND (_dammage > _Injurned) AND (_Fleeing > 0.6) :

goto "PutDown"~5goto "Check"

#PutDown_enemy action ["DROPWEAPON", _enemy, primaryWeapon _enemy]~1

playSound "Dont-shoot"_enemy action ["DROPWEAPON", _enemy, secondaryWeapon _enemy]~2? _Removeall >= 1 : removeallWeapons _enemy_enemy playMove "AmovPercMstpSsurWnonDnon"~1? _standfix <= 1 : goto "Standfix"? _standfix <= 2 : goto "Fleeing"exit

#Standfix_enemy disableAI "ANIM"_enemy setCaptive true

#Fleeing_enemy disableAI "ANIM"_enemy setcaptive true~30 + (random 60)_enemy enableAI "ANIM"_enemy allowFleeing _Fleeing_enemy setCaptive falseexit

Page 220: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Dieses Skriptbeispiel ist eigentlich nicht als Missionsfeature gedacht, sondern lediglich alseine sehr gute Editierhilfe. Es ermöglicht, dass sich der Missionsauthor per Mapclick anbeliebige Stellen der Karte beamen kann, um so Spielabläufe oder ähnliches zukontrollieren, ohne erst dorthin laufen oder fahren zu müssen. Dies erspart eine MengeZeit und Nerven.

Dieses Beispiel ist für diesem Fall mit einem Funkauslöser kombiniert. Zunächst sollteman im Missionsordner eine Init.sqs anlegen oder die folgende Syntax statt dort in dieInitzeile einer Einheit oder eines Objektes schreiben, um das Skript gleich zuMissionsbeginn zu starten.

[] exec "teleport.sqs"

Mit dem Funkauslöser wird dann später die Variable Teleport auf true gesetzt und dasSkript fängt an zu arbeiten. Nachdem der Spieler dann auf die Karte geklickt hat, wird eran die zuvor geklickte Stelle gebeamt und das Skript wird wieder beendet. Dabei wirdder Marker PosM an die geklickte Stelle gebeamt, damit er später auf der Karte sieht, woer sich hingebeamt hat.

Funkauslöser:

Aktivierung: Radio JulietMehrfach

Text: 0-0-0 Julietbei Aktivierung: teleport=true

Marker:

Name: PosMFarbe: rotSymbol: DestroyAchse a/b: 1

Teleport.sqs

Eine skriptfreie Alternative ist folgender Eintrag in der Init.sqs, welche dann dauerhaftaktiv ist. Nutzt man in der Mission Skripte mit Mapclick wird auch der Spieler versetzt.

onMapSingleClick "Player setPos _pos";

221

Kap

itel 6

6.24 - Teleport

#start

@teleporttitletext ["Click on the map to teleport yourself","plain down"]onMapSingleClick "player setpos _pos; teleport=false; ""PosM"" setMarkerPos _pos"

@!teleporttitletext [" ", "plain down"]~10"PosM" setMarkerPos [0,0]

goto "start"

Page 221: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

In folgendem Beispiel wird eine mögliche Variante eines Verfolgungsskriptes nähererläutert. Hierbei bekommt der Verfolger namens Hunter zunächst einmal das richtigeVerhalten zugewiesen, bevor er sich auf den Weg zum Spieler macht. Das Skript läuftdabei so lange, bis entweder der Spieler oder die verfolgende Gruppe nicht mehr amLeben ist. Das Ganze wird dabei mit folgender Sytax gestartet:

[Hunter, Player] exec "skripte\hunter.sqs";

Hunter.sqs

Natürlich gibt es auch die Möglichkeit so etwas mit Wegpunkten zu gestalten. Dies istnur ein Beispiel, wie man so etwas umsetzen könnte. Hierbei soll auch immer gleich dieZusammenarbeit der Befehle gezeigt werden und die eigenen Ideen beflügeln Befehle zukombinieren und optimal für die individuellen Ideen auszunutzen.

222

6.25 - Das Verfolgungsskript

_hunter = _this select 0_target = _this select 1

_hunter setBehaviour "AWARE"_hunter setCombatMode "RED"_hunter setSpeedMode "Full"_hunter doTarget _target

#Loop?_target distance _hunter >= 10 : {_x doMove getPos _target} foreach units _hunter~4? (count units _hunter) <= 1 : exit?(!(alive _target)) : exitgoto "Loop"

Page 222: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kapitel 7- Multiplayer -

In diesem Kapitel werden dir einige grundlegende Bereiche aus dem Bereich Multiplayererläutert und näher gebracht. Du wirst Dank dieses Kapitels in der Lage sein deine eigeneMultiplayermission erfolgreich zu erstellen.

7.1 Die Multiplayermission 2247.2 Die Respawnpunkte 2247.3 Flexible Respawnpunkte 2257.4 Die MP-Description.ext 2267.5 Die Respawnarten 2277.6 Das Deathmatch 2277.7 Multiplayerbereich festlegen 2287.8 Zeit und Wertung 2297.9 Punkte vergeben bzw. anzeigen lassen 2317.10 Die Zeitanzeige 2327.11 Der Class Header 2337.12 Der Respawndialog 2337.13 Stringtable MP Grundwerte 2347.14 Fahrzeug Respawn 2357.15 Mr-Murray´s Fahrzeug Respawn 2367.16 Flaggen Grundinformationen 2387.17 Capture The Flag 2407.18 Die PublicVariable 2467.19 Allgemeines 2477.20 Die Steuerungsbefehle 2497.21 Die Bewaffnung im Multiplayer 2507.22 Spielerbezogene Textmitteilung 2517.23 Join In Progress (JIP) 252

223

Kap

itel 7

Page 223: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Das Erstellen einer Multiplayermission erfordert schon etwas mehr Wissen, was einweiteres Buch dieses Umfangs füllen würde. Deshalb wird dieser Themenbereich hier nurzum Ansatz behandelt und ein paar grundlegende Bereiche erklärt, die dir das Erstelleneiner einfachen Multiplayermission ermöglichen. Grundsätzlich gilt es schon mal eineLogic mit den Namen Server auf jede Multiplayermap zu setzen!

EinheitenZunächst setzt man Einheiten auf die Karte, welche Playable definiert sind. Wird in derDescription.ext disabledAI=1 definiert, so werden nur die tatsächlichen Spielerangezeigt. Spielbare Einheiten, die nicht durch einen Spieler belegt sind, werden somitgelöscht und nicht durch KI ersetzt.

Anzahl der menschlichen Spieler?Selbstverständlich lässt sich auch dies ausgeben oder als Bedingung verwenden!

hint format [ "West: %1\nEast: %2", playersNumber WEST, playersNumber EAST];

oder als Bedingung

? playersNumber > 4 : hint format [“WEST: %1”, playersNumber WEST]

Als feste Respawnpunkte legt man idealerweise Marker mit folgenden Bezeichnungen an:

West: Respawn_west Widerstand: Respawn_guerrilaEast: Respawn_east Zivilisten: Respawn_civilian

Ein weiterer Resp-Punkt pro Seite hieße dann Respawn_west_1, Respawn_west_2,...

Statt eines Marker hat man natürlich auch die Möglichkeit ein Objekt oder eine Spiellogikals Respawnpunkt zu verwenden. Der Nachteil hierbei ist, dass man dann direkt an demPunkt gespawnt wird, während man bei einem Marker flexibel im Bereich derMarkerfläche gespawnt wird.224

7.1 - Die Multiplayermission

7.2 - Die Respawnpunkte

Page 224: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 7

Möchte man seine Mission mit flexiblen Respawnpunkten versehen, kann man dies aufunterschiedliche Art und Weise machen. Hier soll als Beispiel mal die Erfüllung einesMissionsziels dienen.

Bei jeder Mission fängt man irgendwo auf der Map an und hat ein oder mehrere Ziele. DerRespawnpunkt sitzt zunächst am allgemeinen Startpunkt und soll erst dann versetztwerden, wenn Missionsziel 1 erfüllt ist. Logischerweise sollte er dann auch in den Bereichdes ersten Missionsziels versetzt werden, um von dort aus dann, bei Erfüllung des zweitenMissionsziels, auf die Position des zweiten Missionsziels versetzt zu werden.

Dazu hat man dann wieder verschiedene Möglichkeiten. Hier ein Beispiel:

Respawnmarker

Name: Respawn_WestAchse a/b: 50/50

Auslöser

Typ: EinfachName: AreaOneAchse a/b: 50Art der Auslösung: OPFOR

Nicht vorhandenbei Aktivierung: "Respawn_West" setMarkerPos getPos AreaOne

hint "Gratulation - Ziel 1 ist erfüllt!"

In diesem Beispiel wurde nun ein Auslöser mit Namen AreaOne gesetzt, der prüft, obder Bereich feindfrei ist. Ist dies erfolgt, wird der Marker Respawn_West an die Positiondes Auslösers mit Namen AreaOne versetzt und es erscheint eine Texteinblendung"Gratulation - Ziel 1 ist erfüllt!". Natürlich kann man den Marker auch an eine anderePosition des ersten Ziels versetzen. Dies sollte hier lediglich als kleines Beispiel dienen.

225

7.3- Flexible Respawnpunkte

Page 225: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

In der Description.ext definiert man die Grundsätze für die MP-Mission. Also zum Beispieldie Art oder Zeit bis zum Respawn. Hierzu gehören unter anderem folgendeKomponenten:

respawn=3; - Die Art des Respawn

respawnDelay=6; - Die Zeit bis zum Respawn

respawnVehicle=3; - Die Art des Vehiclerespawn

respawnVehicleDelay=10; - Die Zeit bis zum Vehiclerespawn

disabledAI=1; - Einheiten, die als spielbar definiert wurden werden als KI nicht dargestellt.

AIKills=1; - Die Punkte der KI werden auch gewertet

Folgend ein Auszug einer Multiplayer-Description.ext in welcher alle wichtigen, für eineMultiplayermission benötigten Komponenten, definiert sind.

Description.ext

226

respawn=3; respawnDelay=6;respawnVehicle=3;respawnVehicleDelay=10;

disabledAI=0; AIkills=1;respawnDialog = false;

class Header{

gameType = CTF;minPlayers = 2;maxPlayers = 10;

};

titleParam1 = "Time limit:";valuesParam1[] = {10000, 300, 600, 900, 1200, 1500, 1800, 2100, 3600, 7200};defValueParam1 = 1800;textsParam1[] = {"Unlimited", "5 min", "10 min", "15 min", "20 min", "25 min",

"30 min", "35 min", "60 min", "120 min", };titleParam2 = "Score to win:";valuesParam2[] = {10000, 5, 7, 10, 15, 20, 25, 30};defValueParam2 = 5;textsParam2[] = {"Unlimited", 5, 7, 10, 15, 20, 25, 30};

7.4 - Die MP-Description.ext

Page 226: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 7

In einer Multiplayermission gibt es verschiedene Arten des Respawns. Diese legt mangleich beim Editieren in der Description.ext fest. Dies gilt für Fahrzeuge genauso, wie fürSoldaten. Allerdings macht es nicht Sinn für ein Fahrzeug einen Respawn als Möwefestzulegen. Für den Vehiclerespawn verweise ich auf Kapitel 7.14 bzw. 7.15, in welchensehr umfangreiche Vehiclerespawnarten erläutert sind.

Respawnarten:

0 oder "None" - Kein Respawn1 oder "Bird" - Respawn als Möwe2 oder "Instant" - Respawn am Todesplatz3 oder "Base" - Markerrespawn (respawn_west,…)4 oder "Group" - Gruppenrespawn (Ist keine weitere KI

vorhanden, dann Respawn als Möwe!)5 oder "Side" - Seitenrespawn (Ist keine weitere KI

vorhanden, dann Respawn als Möwe!)

Bei Vehikeln gelten die Werte 0, 2 und 3 mit den gleichen Respawnarten.

Möchte man eine Deathmatch Mission erstellen, die ein oder mehr Spieler auch alleinegegeneinander und die KI spielen können, ist es ja notwendig die eigene Seite zuverfeinden, damit sich auch die KI´s Einheiten ihrer Seite beschießen.

Variante 1Der Setfriend-Befehl wäre eine Möglichkeit:

East setFriend [East,0.1]

Hat man mehrere Seiten, muss man eben alle gegeneinander verfeinden.

Variante 2Diese Variante verfeindet die Einheiten egal welcher Seite gegeneinander:

this addRating ((- rating this) - 100000)

Einheiten die diesen Eintrag nicht haben, werden nicht von Einheiten der eigenen Seitebeschossen.

MerkeBei Deathmatch-Missionen mit KI ist es notwendig diese mit mindestens 2 Wegpunktenund großem Radius zu versehen, damit diese sich auch bewegt.

227

7.5 - Die Respawnarten

7.6 - Das Deathmatch

Page 227: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Da das Areal auf dem gespielt werden kann, mit seinen über 400 Quadratkilometern dochetwas groß ist, gibt es die Möglichkeit einen Spielbereich einzugrenzen. Dies muss mandann auf der Karte, sowie auch direkt in der Landschaft sehen können.

Dazu gibt es eine integrierte Funktion, mit welcher man einen solchen Bereich festlegenkann. Dazu bedarf es lediglich eines Objektes auf der Karte, welches den Mittelpunktdieser Zone darstellt und in dem die Syntax eingetragen wird. Dieses Objekt ist im Idealfallein unsichtbares Helipad, welches man unter Leer/Objekte finden kann.

Dieses setzt man nun in die Mitte des spielbaren Bereiches und gibt in der Initzeilefolgende Syntax zum Aufruf der Funktion an:

BBeerreeiicchh11 == [[tthhiiss,,440000,,440000,,110000,,1100]] eexxeeccVVMM ""aarreeaa..ssqqff""

Beim Start der Mission wird das Objekt, also das Helipad, automatisch Bereich1 genanntund je nach definiertem Bereich erscheinen um diesen Mittelpunkt herum Warnschilderund auf der Karte Marker, die diesen Bereich eingrenzen.

Der Array erklärt sich hierbei wie folgt:

NNaammee == [[MMiitttteellppuunnkktt,,XX--WWeerrtt,,YY--WWeerrtt,,OObbjjeekkttaannzzaahhll,,WWiinnkkeell]]

Alle Werte sind hierbei variabel und können somit frei bestimmt werden. Auf der Karteund in der Mission könnte das später etwa so aussehen:

Mit Hilfe dieser Funktion erspart man sich somit eine Menge Arbeit, Zeit und Nerven, dieObjekte alle selbst setzen zu müssen. Um das abgesperrte Gelände kann man nunTodesauslöser oder ähnliches setzen, um ein Verlassen des Bereiches durch einenMitspieler zu vermeiden.

228

7.7 - Multiplayerbereich festlegen

Page 228: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 7

Die Zeitfestlegung und Wertung sind Multiplayeroptionen, die man mit angeben kann,aber nicht unbedingt muss. Dazu muss man zwei Parameter in der Description.extdefinieren, welche wie folgt aussehen und später in der Multiplayerlobby mit angezeigtwerden.

Zeitlimit

titleParam1 = "Time limit:";valuesParam1[] = {10000, 300, 600, 900, 1200, 1500, 1800, 2100, 3600, 7200};defValueParam1 = 1800;textsParam1[] = {"Unlimited", "5 min", "10 min", "15 min", "20 min", "25 min", "30

min", "35 min", "60 min", "120 min"};

Alle Werte sind hierbei variabel. Die Zeitwerte können jetzt im Menü als Zeitgrenzeausgewählt werden. Der dazugehörige Text der Zeit ist in der letzten Zeile definiert undkann auch frei beschriftet werden.

Punktelimit

titleParam2 = "Score to win:";valuesParam2[] = {10000, 5, 7, 10, 15, 20, 25, 30};defValueParam2 = 5;textsParam2[] = {"Unlimited", 5, 7, 10, 15, 20, 25, 30};

Auch hier sind die Werte wieder frei änderbar und stellen die zu erreichendenPunktezahlen bis zur Beendung der Mission dar.

Wie man nun auf dem Bild sehen kann, sind die oben definierten Parameter genau soübernommen worden und nun in der Multiplayerlobby frei wählbar.

Somit ist die grobe Konfiguration schon mal fertig. Der Spieler hat nun die Möglichkeit diePunkt- oder Zeitbegrenzung frei nach seinem Interesse einzustellen. Jetzt fehlt nur nochdie Konfiguration auf der Map, die dem Spiel sagt, dass die Punkte erreicht sind oder dieZeit um ist. Dazu kommen jetzt die Prüfauslöser.

229

7.8 - Zeit und Wertung

Page 229: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

PrüfauslöserZusätzlich werden nun noch drei Prüfauslöser gebraucht, welche das Vorgehenüberwachen. Diese müssen hierbei wie folgt definiert werden:

Auslöser 1(Zeitüberwacher):

Name: ZeitendeBedingung: (Param1<10000) and (time>=param1)bei Aktivierung: Ende=trueAchse a/b: 0/0

Auslöser 2 (Punktüberwacher):

Name: PunktendeBedingung: (Param2 < 10000 and (({score _x >= Param2}) count

[S1, S2, S3, S4, S5, S6] > 0))bei Aktivierung: Ende=trueAchse a/b: 0/0

Auslöser 3 (Endauslöser):

Typ: Ende 1Achse a/b: 0/0Bedingung: Ende

In der Bedingungszeile sind Einheiten mit Namen S1, S2, S3, S4, S5, S6 definiert. Diesekönnen natürlich auch anders benannt werden, sollten aber dann in der Bedingungszeiledes Auslösers 2 entsprechend angepasst werden.

Damit die Punkte einer KI auch gezählt werden können, muss das in der Description.extmit AIkills=1 vordefiniert werden.

230

Page 230: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 7

Es gibt verschiedene Varianten sich die Punkte anzeigen zu lassen. Dies kann erfolgen,wenn jemand eine Fahne erobert bzw. anderweitig gepunktet hat oder ein Missionszielerfüllt wurde. Je nach Mission eben.

Zunächst definiert man die Description.ext, wie in Kapitel 7.8 erläutert.

Punktelimit

titleParam2 = "Score to win:";valuesParam2[] = {10000,5,7,10,15,20,25,30};defValueParam2 = 5;textsParam2[] = {"Unlimited",5,7,10,15,20,25,30};

Jetzt definiert man in der Initzeile einer Einheit oder in der Init.sqs die Punktevariablen,die hier mal mit

WestScore = 0EastScore = 0

definiert werden und gleich zu Missionsbeginn den Wert 0 zugewiesen bekommen. Wirdjetzt irgendeine Bedingung erfüllt, also ein Gegner getötet, ein Missionziel erfüllt oderwie auch immer, soll ja die jeweilige Seite Punkte zugewiesen bekommen. Dies würdeman dann mit WestScore = Westscore +1 festlegen. Also jedes Mal, wenn die vomEditierer festgelegte Bedingung erfüllt ist, wird der jeweiligen Seite mit der obigen Syntaxder Wert 1 (1 Punkt) hinzugefügt. Mit Westscore = Westscore -1 könnte man auchPunkte abziehen.

Möchte man diese nun anzeigen lassen, kann man das auch auf unterschiedliche Weisemachen. Zum Einen vielleicht mit einem Funkauslöser, welchen ja dann jeder bei Bedarfbenutzen kann oder zum Anderen, dass die Punkte angezeigt werden, wenn eine derbeiden Seiten wieder gepunktet hat.

Dazu wird dann in der Regel folgende Syntax verwendet:

Titletext [format [localize "STR_MP_STATUS", WestScore, EastScore], "Plain down"]

In einem Funkauslöser könnte das dann so aussehen:

Wertunganzeiger (Funkauslöser)

Aktivierung Radio Alpha (Mehrfach)Achse a/b 0Text @STR_MP_SHOWSCOREbei Aktivierung Titletext [format [localize "STR_MP_STATUS",

WestScore, EastScore], "Plain down"]

231

7.9 - Punkte vergeben bzw. anzeigen lassen

Page 231: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

In einigen Missionen bietet es sich an, die Zeit ab und dann einblenden zu lassen, um dieMitspieler zu informieren, dass die Mission bald beendet ist und sie somit gleich noch einbisschen anzuheizen, noch möglichst viele Punkte zu sammeln. Eine bewährte Methodeist die, dass man dafür mehrere Prüfauslöser in die Mission setzt, die nach Ablauf der vomSystem gezählten Zeit ab Spielbeginn ausgelöst werden. Diese definiert man dann wienun folgend erläutert. Zunächst muss man aber erst wieder den Parameter in derDescription.ext definieren.

Zeitlimit

titleParam1 = "Time limit:";valuesParam1[] = {10000, 300, 600, 900, 1200, 1500, 1800, 2100, 3600, 7200};defValueParam1 = 1800;textsParam1[] = {"Unlimited", "5 min", "10 min", "15 min", "20 min", "25 min",

"30 min", "35 min", "60 min", "120 min"};

Die letzten beiden Zeilen stellen eine lange Zeile dar, was hier nicht realisierbar ist.

Hier mal ein Prüfauslöser, welcher anzeigt, dass nur noch 1 Stunde bis zum MissionsendeZeit ist, diese erfolgreich zu bewältigen.

Zeitanzeiger (Prüfauslöser)

Bedingung (Param1<10000) and (Param1>=3600) and ((Param1-time)<=3600)

Achse a/b 0bei Aktivierung Hint localize "STR_MP_07"

Jetzt müsste man bei jedem weiteren Prüfauslöser eben den entsprechenden Wertdefinieren. Als Texteinblendung wurden die Stringtable Grundwerte, welche im Kapitel7.13 aufgeführt sind, verwendet.

Hier mal eine nähere Erläuterung der Bedingung:

(Param1<10000) and (Param1>=Wert) and ((Param1-time)<=Wert)

Wert ist hierbei der in Parameter1 bei valuesParam1 vergebene Wert (z.B.: 600)

(Param1<10000) and (Param1>=600) and ((Param1-time)<=600)

Jetzt würde man bei Aktivierung eben den richtigen Stringtablewert dazu angeben,welcher dann angezeigt werden soll. In diesem Fall wäre das:

Hint localize "STR_MP_04" - Noch 10 Minuten

232

7.10 - Die Zeitanzeige

Page 232: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Der Class Header ist eine Definition in der Description.ext und sollte bei jeder MP-Missiondringenst mit angegeben werden. In ihm wird die min- und maximale Spieleranzahl,sowie der Missionstyp definiert, was einem Spieler später bei der Auswahl einesSpielservers (siehe Grafik) mit angezeigt wird. Auf dem Bild wurde beim oberen Server einClass Header definiert, aber beim unteren nicht.

GameType: Hier wird der Missionstyp mit angegeben. Zum Beispiel:

SC - Sector ControlDM - DeatmatchCTF - Capture The FlagCOOP - CooperationTEAM - Team

MinPlayers: Angabe der minimalen Spieleranzahl

MaxPlayers: Angabe der maximalen Spieleranzahl

In der Description.ext sieht das dann wie folgt aus:

Der Respawndialog ist jener, welcher angezeigt wird, wenn man das Zeitliche gesegnethat und auf seinen Respawn wartet. Diesen kann man in der Description.ext ein- bzwausschalten. Das macht man mit folgendem Eintrag:

rreessppaawwnnDDiiaalloogg == ffaallssee;;Zum Einschalten des Dialogs vergibt man den Wert true.

233

Kap

itel 7

class Header{

gameType = CTF;minPlayers = 2;maxPlayers = 8;

};

7.11 - Der Class Header

7.12 - Der Respawndialog

Page 233: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Im Spiel selbst sind diverse Stringtablewerte verankert, welche man aufrufen kann, ohneeine eigene Stringtable.csv im Missionsordner erstellen zu müssen. Folgend nun einekleine Übersicht einiger Stringtablewerte die zum Multiplayerbereich gehören.

STR_MP_POINT_W - USA punktetSTR_MP_POINT_E - SLA punktetSTR_MP_FLAG_TAKEN_W - Name hat die FlaggeSTR_MP_FLAG_TAKEN_E - Name hat die FlaggeSTR_MP_FLAG_BACK_W - Die US Flagge ist wieder daSTR_MP_FLAG_BACK_E - Die SLA Flagge ist wieder daSTR_MP_SECTOR_ATTACK_W - Die USA greifen Sector anSTR_MP_SECTOR_ATTACK_E - Die SLA greifen Sector anSTR_MP_SECTOR_W - Sektor ist jetzt unter Kontrolle der USASTR_MP_SECTOR_E - Sektor ist jetzt unter Kontrolle der SLASTR_MP_02 - Noch 1 MinutenSTR_MP_03 - Noch 5 MinutenSTR_MP_04 - Noch 10 MinutenSTR_MP_05 - Noch 20 MinutenSTR_MP_06 - Noch 30 MinutenSTR_MP_07 - Noch eine StundeSTR_MP_NOLIMIT - UnbegrenztSTR_MP_SCORE - PunkteSTR_MP_SHOWSCORE - Punkte zeigenSTR_MP_TIME - ZeitSTR_MP_STATUS - Status – USA: SLA:STR_MP_GAMEOVER_W - Die USA gewinnenSTR_MP_GAMEOVER_E - Die SLA gewinntSTR_MP_GAME_DESC_CTF - 2 Teams, 2 Flaggen, Erobern Sie die

feindliche Flagge

STR_MP_GAME_DESC_DM - Jeder kämpft für sich, es gibt keine Verbündeten

STR_MP_GAME_DESC_SCONTROL - Sammeln Sie Punkte, indem Sie die vorgegebenen Sektoren kontrollieren

STR_MP_GAME_DESC_PILOTDOWN - Finden und retten Sie die PilotenSTR_MP_GAME_DESC_HOLDCASTLE - USA: Erobern Sie die Festung,

SLA: Verteidigen Sie die Festung

Zum Aufrufen kann man die verschiedenen Texteinblendsyntaxes verwenden, mitwelchen man Text einblenden kann. Siehe die Verwendung im Kapitel 7.17.

234

7.13 - Stringtable MP Grundwerte

Page 234: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 7

235

Für den Vehikelrespawn gibt es verschiedene Möglichkeiten. Zum Einen dieStandardvariante und zum Anderen die selbstentwickelte Variante, welche ich imFolgepunkt vorstelle. Hier erst einmal die Standardvariante:

Mit folgender Syntax in der Initzeile des jeweiligen Fahrzeugs, legt man für dieses dieindividuelle Konfiguration fest. Die Syntax hierfür lautet:

Fahrzeug1 respawnVehicle [Zeit,Anzahl]

Fahrzeug1 respawnVehicle [Zeit]

Hat man für dieses Fahrzeug nun einen individuellen Respawnzeitwert vergeben, so wirddas Spiel die Zeitvorgabe aus der Description.ext übersehen und die für das Fahrzeugdefinierte Zeit nutzen. Setzt man die Anzahl der Respawns in der Initzeile auf 0, wird dasFahrzeug unendlich gespawnt.

In der Description.ext legt man Standardmäßig folgende Zeilen fest:

respawnVehicle=3; - Die Art des Vehiclerespawn

respawnVehicleDelay=10; - Die Zeit bis zum Vehiclerespawn

Die RespawnartenBei Fahrzeugen hat man, was die Respawnarten angeht, nur zwei Möglichkeiten. Hierbeistehen der Respawn am Todesplatz (2) oder der Respawn am Seitenrespawnplatz (3)zur Auswahl. Diesen definiert man ganz normal in der Description.ext:

respawnVehicle=3; - Die Art des Vehikelrespawn

0 oder "None" - Kein Respawn2 oder "Instant" - Respawn am Todesplatz3 oder "Base" - Markerrespawn (respawn_west,…)

Die RespawnpunkteDie Respawnpunkte für die Vehikel lauten dabei wie folgt:

Westen: Respawn_Vehicle_West Widerstand: Respawn_Vehicle_Guerrila

Osten: Respawn_Vehicle_East Zivilisten: Respawn_Vehicle_Civilian

7.14 - Der Fahrzeug Respawn

Page 235: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Da die Standardvariante nicht sonderlich viele Features mit sich bringt, habe ich mich einwenig damit auseinandergesetzt und die nun folgende, sehr ausführliche Lösungherbeigeführt, welche keinen Description.ext-Eintrag benötigt.

Zunächst setzt man ein Fahrzeug auf die Karte, was für den Respawn vorgesehen seinsoll. Dieses bekommt den Namen Veh1 und einen festen Respawnpunkt, wofür eineLogik mit dem Namen Veh1Pos gesetzt wird. Jetzt ist ein Fahrzeug mit Spawnpunktfestgelegt. Was nun noch fehlt ist ein Prüfauslöser, welcher prüft, ob das Fahrzeug nochlebt bzw. fahren kann.

Jedes Fahrzeug, welches am Ende spawnbar sein soll bekommt hierbei einen eigenenPositionspunkt(Logik) und einen eigenen Prüfauslöser mit dem jeweiligen Namen desFahrzeugs.

Prüfauslöser (Vehikelüberwacher)

Name: Veh1GuardBedingung: !Canmove Veh1Bei Aktivierung: [Veh1,"M1Abrams",Veh1Pos,360,2,10,1,0,0]

exec "vehicle-respawn.sqs"Achse a/b: 0/0

Logik (Positionspunkt)

Name: Veh1Pos

Der in der Aktivierungszeile des oben aufgeführten Prüfauslösers angegebene Arraybeinhaltet alle Definitionsmöglichkeiten die wichtig sind. Man muss also nicht mehr indas Skript wechseln und kann alles für jedes Fahrzeug individuell in dem jeweiligen Arraykonfigurieren. Dieser erklärt sich hierbei wie folgt:

[Fahrzeugname, Fahrzeugklasse, Respawnpunkt, Azimut, Respawnzeit,Respawnanzahl, Delete, Statisch, Effekt] exec "vehicle-respawn.sqs"

Fahrzeugname - Name des FahrzeugsFahrzeugklasse - Klasse des Fahrzeugs (siehe Kapitel 3.7)Respawnpunkt - RespawnpunktAzimut - lickrichtung (Wert der Blickrichtung)Respawnzeit - Zeit bis zum nächsten RespawnRespawnanzahl - Anzahl der Respawns (0=Kein Respawn)Delete - Fahrzeug löschen (0=nein; 1=ja)Statisch - Respawn statisch oder flexibel (0=Flexibel; 1=Statisch)Effekt - Explosionseffekt beim Löschen (0=Kein Effekt; 1=Effekt)

236

7.15 - Mr-Murrays Fahrzeug Respawn

Page 236: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 7

Der eben aufgeführte Array ruft das nun folgende Skript Vehicle-respawn.sqs auf.

237

?!(Local Server): exit

_vehicle = _this select 0_vehicleClass = _this select 1_respawnArea = _this select 2_azimutCode = _this select 3_respawnDelay = _this select 4_respawnrate = _this select 5_deletevehicle = _this select 6_staticrespawn = _this select 7_deleteeffect = _this select 8

_counter = 0

#Start~1?(Canmove _Vehicle) : goto "Start"

;// Respawnrate (Number of Respawns)? (_counter >= _respawnrate) : exit_counter = _counter +1

;// Staticposition (0=Flexible/1=Static)? (_staticrespawn == 0) : _respawnArea setpos getpos _vehicle? (_staticrespawn == 0) : _VehAzimut = getdir _vehicle

~_respawnDelay

;// Deletevehicle (0=No Delete/1=Delete)? (_deletevehicle == 0) : goto "Respawn"deleteVehicle _vehicle

;// Delete effect? (_deleteeffect == 0) : goto "Respawn"_bomb="M_Javelin_AT" createVehicle [0,0,1000]_bomb setpos getpos _vehicle

;// Respawn#Respawn~2_vehicle = _vehicleClass createVehicle getpos _respawnArea_vehicle setdir _azimutCode? (_staticrespawn == 0) : _vehicle setdir _VehAzimutgoto "Start"

Page 237: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Um Missionen wie Capture the Flag (CTF), Sector Control (SC) oder ähnliches erstellen zukönnen, benötigt man ein gewisses Grundwissen über die Verwendung der Fahnen,welches nun in diesem Abschnitt erläutert wird.

Zunächst gilt zu erwähnen, dass man den Fahnen eine Seite zuweisen kann. Ist einerFahne eine Seite (z.b West) zugewiesen worden, so ist es der eigenen Seite nicht möglichdie Fahne abzunehmen. Alle anderen Seiten können jedoch die Fahne aufnehmen.

Die Syntax hierfür lautet:

this setFlagSide Seite

Diese Syntax wird in der Initzeile der jeweiligen Fahne eingegeben. Jede Fahne wird nuneinzeln konfiguriert. Also jede Fahne bekommt nun einen separaten Eintrag in derInitzeile. Folgend eine Definitionsmöglichkeit für eine Fahne:

this setFlagSide WEST; this setFlagTexture "Flagge.jpg"

Mit diesen beiden Einträgen in der Initzeile ist die Fahne nun fertig definiert. Die Fahnehat nun die Seite West und eine eigene Fahnentextur zugewiesen bekommen. Für dieFahnentexturen verweise ich hier auf Kapitel 5.35 oder die nächste Seite. Zudem mussjede Fahne variabel benannt werden. Also zum Beispiel die Westfahne FlagWest und dieOstfahne FlagEast.

Kommt nun ein Ostsoldat an diese Fahne, hat er die Möglichkeit diese aufzunehmen.Dabei wir sie ihm auf die Schulter gesetzt und er trägt sie mit sich. Stirbt er Unterwegs, sowird die Flagge bei seinem Körper liegen bleiben. Kommt ein Mitspieler seiner Seitevorbei, hat dieser die Möglichkeit die Fahne an der Leiche aufzunehmen. Kommt einGegenspieler und nimmt die Fahne auf, so wird diese in der Regel wieder an denFahnenmast zurückgebeamt.

Nun gibt es noch verschiedene Befehle, welche dafür benötigt werden:

ObjNullDieser Wert steht für Null, was bedeutet dass, wenn die Fahne an ihrem Mast hängt, genaudieser Zustand besteht. Hat ein Spieler die Fahne, so ist der Zustand nicht mehr ObjNull.Dieser Zustand lässt sich bewusst herstellen oder abfragen.

Abfragen eines Zustandes:

flagOwner FlagWest == objNull

flagOwner FlagWest == EAST

Herstellen eines Zustandes:

FFllaaggWWeesstt sseettFFllaaggOOwwnneerr oobbjjNNuullllFFllaaggWWeesstt sseettFFllaaggOOwwnneerr NNaammee

238

7.16 - Flaggen Grundinformationen

Page 238: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 7

FlagOwnerFlagOwner ist der Fahnenbesitzer. Dieser Befehl gibt den Besitzer der Fahne zurück. Istniemand Eigentümer der Fahne wird der Befehl objNull zurück-gegeben. DieBedingungssyntax hierfür lautet:

flagOwner FlagWest

flagOwner FlagWest == Name1

SetFlagOwnerMit dieser Syntax wird der Fahnenbesitzer bestimmt. Gibt man statt einem NamenobjNull an, wird die Fahne zurück an den Masten gebeamt. Hierfür ist folgende Syntaxrelevant:

Rückgabe an Mast:

FlagWest setFlagOwner objNull

Vergabe an Spieler:

FlagWest setFlagOwner Name1

FlagMit dem Befehl Flag lässt man sich die Fahne zurückgeben, welche eine Einheit geradeträgt. Es ist also somit eine Prüfung auf Fahnenbesitz. Ist niemand im Besitz der Fahnewird wieder der Wert objNull zurückgegeben.

Flag Name1

Beispiel: Prüfung auf Fahnenbesitz:Flag Name1 == FlagWest

SetFlagTextureMit setFlagTexture wird die Textur der Fahne bestimmt. Dies ist unter anderem im Kapitel5.35 erläutert. Die Syntax für eine eigene Fahne, welche im Missionsverzeichnis liegtlautet:

this setFlagTexture "Flagge.jpg"

Und für eine spielinterne Fahne wird der Quellpfand mit angegeben (siehe Kapitel 5.35):

this setFlagTexture "\ca\misc\data\usa_vlajka.paa"

SetFlagSideHiermit wird die Seite der Flagge vergeben. Einheiten dieser Seite können die Flaggedann nicht aufnehmen. Die Syntax hierfür lautet:

this setFlagSide Seite

239

Page 239: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Capture the Flag ist ein Spielverfahren bei dem die eine Seite der anderen die Fahne klautund zur eigenen Fahne bzw. in den eigenen Bereich bringt und damit punktet. Gewinnerist die Seite, die die vorher im Menü festgelegte Punktzahl zuerst erreicht hat oder in dervorgegebenen Zeit die meisten Punkte erreicht hat.

Was sich beim Spielen sehr einfach anhört ist im Editor noch lange nicht so einfach zubewältigen. Natürlich gibt es auch hier wieder unzählige Möglichkeiten eine solcheMission zu realisieren. Hier wird eine Variante erläutert mit der man für seine CTF-Missiondie CTF-Basis festlegen kann. Sprich: wenn man dieses jetzt zeichengenau in die Mapübernimmt, ist die Funktion schon mal gewährleistet.

Nachdem man die auf den folgenden Seiten erklärten Komponenten auf die Map gesetzthat, sollte die Map am Ende zunächst wie folgt aussehen:

Links ist die Fahne West (FlagWest) mit dazugehörigem Auslöserbereich (ZoneWest),einem grünen Marker (nur markierende Bedeutung) und ganz links die dreidazugehörigen Prüfauslöser zu sehen.

East, hier rechts, hat jeweils die gleichen Komponenten, nur mit anderen Werten. DieFahne Ost heißt hierbei FlagEast und der Auslöserbereich ZoneEast. Dazu noch der roteMarker, der die Position der Fahne auf der Karte zeigt und ganz rechts die dreidazugehörigen Prüfauslöser.

Die drei unteren Auslöser unter dem Spieler beinhalten einen Initialisierungsauslöser,einen Zeit- und Punkteüberwachauslöser und den Endauslöser, der die Mission nachErfüllung der Bedingung Zeit oder Punkte beendet.

Dieses Beispiel beinhaltet noch keinen Respawn oder ähnliches. Hier ist nur das reineCTF-Zubehör zu sehen, welches die spätere CTF-Funktionalität sicherstellt.

240

7.17 - Capture The Flag

Page 240: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 7

CTF-KomponentenHier nun die einzelnen Komponenten mit der jeweiligen Konfigurierung. Steht beiAktivierung, Bedingung oder Init etwas untereinander, so stellt dies trotzdem eine Zeiledar, weil dies hier ja aus Platzgründen nicht anders realisierbar ist.

W E S T S E I T E

Fahne Westen:

Name: FlagWestInit: this setFlagSide WEST;

this setFlagTexture "\ca\misc\data\usa_vlajka.paa"

Bereich Westen (Auslöserbereich):

Name: ZoneWestAchse a/b: 10/10

Erreicht der Eroberer der Ostflagge diesen Auslöserbereich, bekommt die WestseitePunkte zugewiesen, was durch eine Texteinblendung angezeigt wird.

Eroberer Ostflagge (Prüfauslöser I):

Achse a/b: 0/0Bedingung: not isNull flagowner FlagEast and

flagOwner FlagEast != OwnerEastAktivierung: OwnerEast = flagOwner FlagEast;

titletext[format [localize "STR_MP_FLAG_TAKEN_E",name OwnerEast], "Plain down"]; FlagManW=true

Dieser Auslöser prüft wer Besitzer der Ostflagge ist. Solange diese am Mast hängt passiertnichts. Sobald ein Westsoldat diese aufnimmt kommt eine Texteinblendung welche angibt, welcher Spieler die Flagge aufgenommen hat.

Eroberer Ostflagge punktet (Prüfauslöser II):

Achse a/b: 0/0Bedingung: (OwnerEast in list ZoneWest) and

not FlagManE and not Wert1Aktivierung: Kdo=OwnerEast; OwnerEast=objNull;

FlagEast setFlagOwner objNull;WestScore=WestScore+1;titletext[format [localize "STR_MP_POINT_W",WestScore, EastScore], "Plain down"];FlagManW=false; Kdo addScore 5; {_x addScore 5} forEach units Group Kdo

241

Page 241: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Dieser Auslöser überwacht nun, ob der Eroberer der Ostflagge, also der FlagOwnerFlagEast, den Auslöserbereich ZoneWest betreten hat. Ist diese Bedingung erfüllt,bekommt die Westseite einen Punktewert zugewiesen, was wieder durch eineTexteinblendung angezeigt wird.

Eroberer Ostflagge verliert Flagge (Prüfauslöser III):

Achse a/b: 0/0Bedingung: (isNull flagowner FlagEast) and FlagManWAktivierung: FlagManW=false;

titletext[localize "STR_MP_FLAG_BACK_E", "Plain down"]

Dieser dritte Auslöser überwacht, ob die Fahne noch im Besitz des Eroberers ist. Stirbtdieser und nimmt ein Ostsoldat die Fahne von der Leiche auf, wird die Fahne zurück anden Fahnenmast gebeamt und es kommt eine Texteinblendung, dass die Ostseite ihreFahne zurück hat.

O S T S E I T E

Fahne Osten:

Name: FlagEastInitzeile: this setFlagSide EAST;

this setFlagTexture "\ca\misc\data\ rus_vlajka_co.paa"

Bereich Osten (Auslöserbereich):

Name: ZoneEastAchse a/b: 10/10

Erreicht der Eroberer der Westflagge diesen Auslöserbereich, bekommt die OstseitePunkte zugewiesen, was durch eine Texteinblendung angezeigt wird.

242

Page 242: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 7

Eroberer Westflagge (Prüfauslöser I):

Achse a/b: 0/0Bedingung: not isnull flagOwner FlagWest and

flagOwner FlagWest != OwnerWestAktivierung: OwnerWest = flagowner FlagWest;

titletext[format [localize "STR_MP_FLAG_TAKEN_W",name OwnerWest], "Plain down"]; FlagManE=true

Dieser Auslöser prüft, wer Besitzer der Westflagge ist. Solange diese am Mast hängt,passiert nichts. Sobald ein Ostsoldat diese aufnimmt, kommt eine Texteinblendungwelche angibt, welcher Spieler die Flagge aufgenommen hat.

Eroberer Westflagge punktet (Prüfauslöser II):

Achse a/b: 0/0Bedingung: (OwnerWest in list ZoneEast) and

not FlagManW and not Wert1Aktivierung: Kdo=OwnerWest; OwnerWest=objNull;

FlagWest setFlagOwner objNull; EastScore=EastScore+1; titletext[format [localize "STR_MP_POINT_E",WestScore, EastScore], "Plain down"]; FlagManE=false; {_x addScore 5} forEach units group Kdo

Dieser Auslöser überwacht nun, ob der Eroberer der Westflagge, also der FlagOwnerFlagWest, den Auslöserbereich ZoneEast betreten hat. Ist diese Bedingung erfüllt,bekommt die Ostseite einen Punktewert zugewiesen, was wieder durch eineTexteinblendung angezeigt wird.

Eroberer Westflagge verliert Flagge (Prüfauslöser III):

Achse a/b: 0/0Bedingung: (isnull flagowner FlagWest) and FlagManEAktivierung: FlagManE=false;

titletext[localize "STR_MP_FLAG_BACK_W","Plain down"]

Dieser dritte Auslöser überwacht, ob die Fahne noch im Besitz des Eroberers ist. Stirbtdieser und nimmt ein Westsoldat die Fahne von der Leiche auf, wird die Fahne zurück anden Fahnenmast gebeamt und es kommt eine Texteinblendung, dass die Westseite ihreFahne zurück hat.

243

Page 243: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Zusätze:Nachdem nun für jede der Seiten die funktionellen Bereiche festgelegt wurden, fehlen nur noch der Initialisierungsauslöser, der Zeit- und Punkteüberwachauslöser und der Endauslöser, um die Mission auch beenden zu können.

CTF-Init (Initialisierungsauslöser):

Name: CTF-InitAchse a/b: 0/0Bedingung: trueAktivierung: Wert1=false; WestScore=0; EastScore=0;

OwnerWest= objNull; OwnerEast=objNull; FlagManE=false; FlagManW=false; Zeit=0;

Diesen Auslöser kann man alternativ auch weglassen und die Befehle aus derAktivierungszeile in die Init.sqs schreiben. Aus funktionell sichereren Gründen habe ichdiese Variante vorgezogen. Hier werden verschiedene Variablen definiert, welche mit den Auslösern der jeweiligen Seiten zusammenarbeiten.

Wertungsprüfer (Prüfauslöser):

Name: PunktZeitWacheBedingung: (param1<10000 and ((time >= param1) or

(Zeit >= param1))) or (param2<10000 and((WestScore>=param2) or (EastScore>=param2)))

Aktivierung: Zeit=Time; publicVariable "Zeit"; Wert1=true; titletext[format [localize "STR_MP_GAMEOVER_FINAL", WestScore, EastScore], "Plain"]; EndOfGame=true

Dieser Auslöser überwacht die Zeit- und Punktevorgaben, die vor dem Spielstart vomAdmin eingestellt wurden. Ist die jeweilige Bedingung erfüllt, wird die Mission beendet.Bei diesem Beispiel wird die Mission sofort beendet, da in der AktivierungszeileEndOfGame=true definiert wurde. Dies könnte man auch weglassen und alternativ einOutroskript (z.B.: [] exec "outro.sqs") mit einbinden und in diesem dann erst am Ende desSkriptes die Variable EndOfGame auf true setzen. Der Auslöser prüft also, ob der jeweiligeVariablenwert (Westscore, Eastscore für die Punkte oder Time für die Zeit) denvorgegebenen Parameterwert (Param1(Punkte), Param2(Zeit)) erreicht oderüberschritten hat, womit die Bedingung dann erfüllt ist und der Auslöser auslöst.

Hierbei gilt darauf zu achten, dass man in der Description.ext die Zeit- undPunkteparameter definieren muss, wie in Kapitel 7.8 ausführlich beschrieben wurde.Bitte nur den Description.ext-Eintrag vornehmen, weiter nichts. Die Auslöser sind ja bereits definiert.

244

Page 244: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 7

Endauslöser (Prüfauslöser):

Name: EndWacheBedingung: EndOfGameTyp Ende 1

Der Endauslöser wird erst ausgelöst, wenn die Variable EndOfGame auf true gesetztwurde und beendet dann die Mission. Hier ist es Vorteilhaft eine kleine Zeitverzögerung(Min-Mid-Max) anzugeben, damit der Auslöser nicht gleich sofort anspringt, sondernnoch ein paar Sekunden wartet.

Wertunganzeiger (Funkauslöser):

Aktivierung: Radio Alpha (Mehrfach)Achse a/b: 0Text: @STR_MP_SHOWSCOREAktivierung: titletext[format [localize "STR_MP_STATUS",

WestScore, EastScore], "Plain down"]

Alternativ kann dieser Auslöser, welcher auf der Gesamtgrafik nicht zu sehen ist, noch miteingefügt werden. Er ermöglicht es, dass jeder Spieler jederzeit den aktuellenPunktestand per Funk Alpha aufrufen kann.

Punkt- und Zeitdefinition in der Description.ext:Damit die Punkt- und Zeitüberwachung komplett ist, müssen diese noch so in derDescription.ext definiert werden, wie es in Kapitel 7.8 erläutert ist. Hier aber trotzdem dieZeilen, die hierfür in der Description.ext erscheinen müssen:

Zeitlimit:

titleParam1 = "Time limit:";valuesParam1[] = {10000, 300, 600, 900, 1200, 1500, 1800, 2100, 3600, 7200};defValueParam1 = 1800;textsParam1[] = {"Unlimited", "5 min", "10 min", "15 min", "20 min", "25 min",

"30 min", "35 min", "60 min", "120 min"};

Die letzten beiden Zeilen stellen eine lange Zeile dar, was hier nicht realisierbar ist.

Punktelimit:

titleParam2 = "Score to win:";valuesParam2[] = {10000, 5, 7, 10, 15, 20, 25, 30};defValueParam2 = 5;textsParam2[] = {"Unlimited", 5 , 7, 10, 15, 20, 25, 30};

245

Page 245: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Die Publicvariable wird ausschließlich im Multiplayer benötigt, deshalb ist sie auch indiesem Kapitel erläutert und nicht im Scriptingkapitel. Sie ist von der Form her mit derglobalen Variable vergleichbar, unterscheidet sich jedoch trotzdem ein wenig von ihr. Mitdem Befehl Publicvariable macht man eine globale Variable publik. Das bedeutet, dassdie Information von einem Client an alle übrigen Clients und dem Server oder Hostgesendet wird und dort dann die jeweilige Aktion ausgeführt wird.

Differenzieren wir noch einmal.

Lokale Variable Nur in einem lokalen Bereich gültig. Als Beispiel in einemSkript(SQS) oder einer Funktion (SQF). Zu erkennen ist dieseVariable an dem Unterstrich davor. Bsp.: _Variable

Globale Variable Die globale Variable gilt, wie der Name schon sagt, global. Alsoim gesamten Bereich der Mission. Beispiel: Vergibt man einenNamen an eine Einheit, ist das schon eine globale Variable.

Spielt man nun im Multiplayer, wird man ja als Client lokal gesehen, was bedeutet, dassalso die globale Variable, die in der ganzen Mission und auf der ganzen Karte gilt, sogesehen zu einer lokalen Variable wird. Bei fest vergebenen Namen gibt es kein Problem,da jeder Client die Mission startet und somit die Werte übernimmt. Möchte man nun abereiner Variablen einen Wert zuweisen, also sie auf True oder False setzen, passiert das nurauf dem jeweiligen Client. Diese Information muss also nun an alle anderen gesendetwerden, damit die Variable auch auf allen anderen Clients den richtigen Wert bekommtund die jeweilige Aktion auch dort ausgelöst werden kann.

Um eine globale Variable publik machen, gibt man das wie folgt an:

Ziel1=true; publicVariable "Ziel1"

Man setzt also Ziel1 auf True und macht diesen Wert mit dem Zusatz PublicVariable"Ziel1" publik. Diese Information wird nun an alle anderen Clients und dem Server oderHost gesendet.

Verwendet man in seiner Mission mehrere Variablen, die später den Wert true oder falsebekommen sollen, legt man sie vorher in der Init fest und setzt diese zunächst auf False,damit alle Clients bzw. Host oder Server mit den gleichen Werten starten.

VVaarriiaabbllee11==FFaallsseeVVaarriiaabbllee22==FFaallsseeppuubblliiccVVaarriiaabbllee""VVaarriiaabbllee11""ppuubblliiccVVaarriiaabbllee ""VVaarriiaabbllee22""

246

7.18 - Die Publicvariable

Page 246: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 7

In diesem Unterkapitel werden ein paar grundlegende Bereiche erklärt, die unteranderem im Multiplayerediting sehr wichtig sind. Da gerade im Editingbereichwesentliche Unterschiede zwischen Einzelspieler- und Mehrspielermissionen bestehen,ist es wichtig hier kurz zu erläutern, worauf man beim Multiplayerediting so alles achtenmuss.

Dedicated ServerDer Dedicated Server ist ein fest zugeordneter(dedizierter) Server, auf welchen alleClients, auch der Administrator, von extern zugreifen. Dieser ist ausschließlich als Serverbestimmt. Es sitzt also kein Spieler an diesem System. Dieser Server kann überall auf derWelt stehen und kann beim jeweiligen Provider angemietet werden. Gesteuert wirddieser ingame dann mit den Steuerungsbefehlen, welche hier im Kapitel 7.20 erläutertsind.

HostEin Host ist ein Spieler, welcher auf seinem Rechner eine Mehrspielermissioneröffnet(hostet), auf welche mehrere Mitspieler(Clients) von extern zugreifen. Der Hostspielt dann an dem gleichen System. Er ist somit Server und Spieler.

ClientEin Mitspieler wird im Multiplayer als Client bezeichnet. Egal ob dabei auf einemDedicated Server oder auf einem Host gespielt wird. Spielen alle auf einem DedicatedServer, so sind alle Clients. Eröffnet einer ein Spiel auf dem Rechner auf dem er auch spielt,so ist er Host und alle anderen Clients.

Unterschied Einzelspieler und MehrspielerWie sicherlich beim Testen einer Mission im Editor und später im Multiplayer gibt eswesentliche Unterschiede im jeweiligen Bereich. Alles was in der Editorvorschau oder imEinzelspielerbereich funktioniert muss nicht gleich im Multiplayerbereich funktionieren.Deshalb ist es wichtig die jeweiligen Unterkapitel dieses Kapitels zu berücksichtigen undin seiner Multiplayermission zu entsprechend zu definieren.

247

7.19 - Allgemeines

Page 247: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Logik Server bzw. Logik AIBei Mehrspielermissionen setzt man grundsätzlich eine Logik auf die Karte, die Serverheißt. Eine alternative Variante wäre AI, wie BI sie bezeichnet, was aber grundsätzlichkeinen Unterschied macht. Also bleibt man dabei, die Logik mit dem Namen Server zuversehen. Diese Logik wird nur vom Server erstellt und taucht auf den Clients nicht auf.Diese gibt an, dass das System Server ist. Mit folgenden Befehlen kann man also nunfestlegen, was auf dem Server ausgeführt werden soll und was nicht.

? !(local player) : exit Diese Syntax am Anfang eines Skriptes stellt sicher, dass das Skript nur auf den Clientsabläuft. Es wird also geprüft ob das System ein Client ist. Da jeder Spieler beim Verbindenvom System die feste Variable Player zugewiesen bekommt, weiß das System, dass es dasSkript ausführen darf. Die Informationen werden hierbei an alle Clients weitergegeben.

Ist der Client gleichzeitig Host, wird das Skript auch bei ihm ausgeführt, weil er gleichzeitigServer und Client ist.

? !(local server) : exit Taucht diese Syntax am Anfang eines Skriptes auf, wird das Skript nur auf dem Serverausgeführt. Das System macht hierbei keinen Unterschied zwischen einem Lokal Hostund einem Dedicated Server. Das Skript wird nun auf jeden Fall bei beiden Varianten ganznormal ausgeführt.

Diese Syntax wird grundsätzlich verwendet. Es wird also serverseitig bzw. globalgearbeitet, was ja in der Regel am meisten Sinn macht, da ja die meisten Informationenauch an die Mitspieler weitergegeben werden müssen. Wir arbeiten also grundsätzlichglobal! Alternativ gibt es noch isServer. Beispiele:

? isServer : hint "Server" oder ?! isServer : hint "Not Server"

Spielerbezogenes SkriptMöchte man ein Skript nur bei einem Spieler mit einem bestimmten im Editorfestgelegten Namen ausführen, legt man das am Anfang des Skriptes fest. Zunächstbenennt man die Einheiten natürlich entsprechend im Editor. Ist dies erfolgt, definiertman die Syntax. Das Ganze schaut dann so aus:

player != Soldier1 : exit

Ist der Spieler also nicht die im Editor benannte Einheit Soldier1, dann wird das Skriptbeendet. Dies kann man machen, wenn ein Sound nur bei dieser einen Einheit Soldier1abgespielt werden soll, eine Texteinblendung nur dieser eine Spieler erhalten soll oderähnliches.

Hier nochmal zwei weitere Syntaxbeispiele. Ist Player == Soldier1 dann mach dies oder beider zweiten Syntax, ist der Name von Spieler == "Mr-Murray", dann mach das (hier: exit)

(player == Soldier1) : exit

(name vehicle player == "Mr-Murray") : exit

248

Page 248: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 7

Dieser Bereich hat zwar nichts mit dem Editing zu tun, aber ist dennoch erwähnenswert,weil ja am Ende doch jeder mal online spielt oder seine Mission testen möchte.

Im Multiplayerbereich gibt es verschieden Befehle, mit denen es als Spieler unter anderemmöglich ist, einen Administrator zu voten, über den Rausschmiss eines Cheatersabzustimmen und vieles mehr. Dem Admin des Servers stehen hierbei noch weit mehrBefehle zur Verfügung. Diese Befehle sind nahezu identisch zum Vorgänger OperationFlashpoint. Lediglich drei Neue sind hinzugekommen. Folgend nun die Auflistung undErläuterung der Befehle.

Administratorbefehle

#login password Login als Administrator#logout Logout als Admin#vote admin (name or ID) Administrator voten (auch für Clients)#mission filename Auswahl einer Mission mit bekannten Namen#missions Aufruf des Missionsauswahlmenüs#restart Neustart der Mission#reassign Neustart und Auswahl einer Rolle#kick (name or ID) Kickt Spieler anhand von Name oder ID#shutdown Startet den Server neu#init Lädt die Server Config Datei neu#monitor (Interval in Sek.) Zeigt Performance Informationen des Servers an

(Angabe Zeit in Sekunden. 0 stoppt das Monitoring)#debug Ruft verschiedene Informationen auf (checkfile,

console, totalsent, usersent, userinfo, userqueue)#exec users Ruft eine Liste aller connecteten Spieler auf #exec kick ID Erlaubt einen Spieler vom Server zu kicken.#exec ban ID Erlaubt einen Spieler vom Server zu verbannen

Mitspielerbefehle (Client)

#vote missions Abstimmung zur Missionsauswahl #vote mission (name) Abstimmung zu bestimmter Mission#vote kick (name/ID) Abstimmung über Mitspielerkick#vote restart Abstimmung über Neustart der Mission#vote reassign Neustart und Auswahl einer Rolle#userlist Zeigt eine Liste aller connecteten Mitspieler an

Die Aufrufe lassen sich mit der Chatmöglichkeit im Spiel starten. Dazu drückt man die “–“ –Taste, auf der auch der Unterstrich “_“ definiert ist, gibt den jeweiligen Befehl ein undbestätigt mit Enter.

249

7.20 - Die Steuerungsbefehle

Page 249: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Zunächst gibt es bei der Bewaffnung eines Soldaten im Multiplayer keinen Unterschied.Hier wir das gleiche Verfahren verwendet, wie auch schon im Singleplayer. Eben dievorigen Waffen mit dem removeWeapon-Befehl entfernen und die neuen mit demaddWeapon-Befehl hinzufügen. Problematisch wird es nur, wenn der Spieler einmal dasZeitliche gesegnet hat und respawnt wird. Denn dann hat die Einheit die Standardwaffen,die sie hat, wenn man sie uneditiert auf die Map setzt.

Dem Problem hilft man sich mir einem Skript ab. Zunächst setzt man einen Prüfauslöserauf die Map, welcher überprüft, ob die Einheit namens Soldat1 noch am Leben ist.

Prüfauslöser

Typ: MehrfachBedingung: ! alive Soldat1Bei Aktivierung: [Soldat1] exec "weapon.sqs"Achse a/b: 0/0

Wurde Soldat1 nun getötet, löst dieser Auslöser aus und startet das Skript Weapon.sqs.Das Skript pausiert nun am Anfang bei @alive _Unit und wartet, bis Soldat1 wiederrespawnt wurde, was ja von der Konfiguration der Description.ext abhängt. Je nachdemwelche Delaygröße man dort definiert hat, dauert es eine Weile. Nachdem Soldat1 aberrespanwt wurde, läuft das Skript weiter und entfernt erst alle Waffen und fügt dann dieNeuen hinzu. Im Skript legt man lediglich man dann die Waffen nach Bedarf fest.

250

_Unit = _this select 0@alive _UnitremoveallWeapons _Unit_Unit addweapon "Binocular";_Unit addweapon "NVGoggles";_Unit addmagazine "8Rnd_9x18_MakarovSD";_Unit addmagazine "8Rnd_9x18_MakarovSD";_Unit addmagazine "8Rnd_9x18_MakarovSD";_Unit addmagazine "8Rnd_9x18_MakarovSD";_Unit addmagazine "8Rnd_9x18_MakarovSD";_Unit addmagazine "8Rnd_9x18_MakarovSD";_Unit addweapon "MakarovSD";_Unit addmagazine "30Rnd_545x39_AKSD";_Unit addmagazine "30Rnd_545x39_AKSD";_Unit addmagazine "30Rnd_545x39_AKSD";_Unit addmagazine "30Rnd_545x39_AKSD";_Unit addmagazine "30Rnd_545x39_AKSD";_Unit addmagazine "30Rnd_545x39_AKSD";_Unit addweapon "AKS74UN";exit;

7.21 - Die Bewaffnung im Multiplayer

Page 250: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 7

Textmitteilungen sind ja normalerweise relativ leicht umzusetzen. Im Muliplayerbereichgibt es aber, je nach Mission, eben das Problem, dass der Text global angezeigt wird. Wasalso bedeutet das, wenn man einen Hint oder eine andere Texteinblendung machenmöchte, die spieler- oder seitenbezogen laufen soll, man etwas anders arbeiten muss.

Das Ganze wird hier wieder mit einem kleinen Skript gelöst, bei welchem lediglich dieerste Skriptzeile entscheident ist. Hier muss nämlich definiert werden, wer die Mitteilungsehen darf und wer nicht. Hierbei nimmt man sich u.a. folgende Syntaxformen zur Hilfe:

Spielerbezogen: ? (player == Name1) : exit? (player != Name1) : exit? (name vehicle player != "Mr-Murray") : exit

Seitenbezogen: ? side Player == EAST : exit? side Player != EAST : exit

Man kann sich selbst so ziemlich jede Syntaxform selbst stricken, ist nur eine Frage derParameter. Die obigen Syntaxformen sind lediglich ein paar Beispiele.

AnwendungsbeispieleBei folgendem Beispiel bekommt die Mitteilung jetzt nur der Client, der die Einheit spielt,die im Editor mit S1 benannt wurde. Zum Beispiel der Leader.

Das Ganze kann man natürlich auch anders machen. Zum Beispiel, wenn der Spieler einenbestimmten Spielernamen hat, soll er die Nachricht nicht oder erst recht bekommen.

Wie man sich sicher denken kann, ist die Variante der Texteinblendungen völlig egal. Dieobigen Beispiele sind mit Hints dargestellt, was aber kein Muss ist. Titletext oder eineRessourceneinblendung wären hier genauso möglich.

titleText [format["%1, Sie haben einen neuen Auftrag", name S1],"Plain Down"]

251

? (player != S1) : exit

hint format ["%1, Sie haben mit Ihrer Gruppe einen neuen Auftrag", name S1]; exit

? (name vehicle S1 != "Mr-Murray") : exit

hint format ["Hallo %1, du spielst die Einheit XY.", name S1]; exit

7.22 - Spielerbezogene Textmitteilung

Page 251: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Join In Progress ist ein wichtiger Punkt der sehr genau betrachtet und daher schon beimErstellen einer Multiplayermission voll berücksichtigt werden sollte. Erstellt man eine MP-Mission, werden immer Spieler connecten oder disconnecten, sofern diese publicgehostet ist. Und damit kommt das eigentliche Problem auf! Connectet ein Spieler mittenim Spielverlauf, muss ja auf seinem Rechner der gleiche Status herrschen, wie auf denanderen Clients. Gerade die Missionsziele und die Variablenwerte müssen dannabgeglichen werden.

Ist als Beispiel Missionsziel 1 bereits abgehakt und die Variable Start schon true(Start=true), dann müssen diese Werte auf dem gerade connecteten Client angepasstwerden.

Normalerweise sollte das vom Server her geschehen. Dabei würden Dinge wieMissionszielstatus oder auch Variablenstatus automatisch auf allen Parteien angeglichen.Da dies aber beim derzeitigen Stand von ArmA leider nicht der Fall ist, muss man indiesem Bereich etwas nachhelfen, damit die Mission am Ende auch auf einem DedicatedServer vernünftig läuft.

Hierzu lässt man den Server regelmäßig, zum Beispiel, wenn ein Spieler connectet oderein Missionsziel erfüllt wurde, die Publicvariablen aufrufen. Er macht damit den aktuellenStand einer Variable publik und sendet ihn an alle Clients.

Zunächst mal die Init.sqs, in welcher man den Variablen generell erstmal eineneinheitlichen Wert zuweist, damit alle Mitspieler auf einem Stand sind.

Init.sqs

Eine ganz interessante Zeile ist die OnPlayerConnect-Zeile. Connected ein Spieler, sowird der Server aufgefordert das Skript Update.sqs auszuführen, welches hier im selbstangelegten Ordner Scripts hinterlegt wurde. Der Server ruft dann nochmal allePublicvariablen auf und sychronisiert damit die Variablenstadien auf allen Systemen.

252

Var1=FALSE Var2=FALSE Var3=FALSE

? ( ! ( Local Server ) ) : goto "Skip"

PublicVariable "Var3"; PublicVariable "Var2"; PublicVariable "Var3";

#Skip onPlayerConnected "Server exec ""scripts\update.sqs"" ";

7.23 - Join In Progress (JIP)

Page 252: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 7

253

Update.sqsDie Update.sqs ist sehr einfach und kurz gehalten. In ihr sind nur die Publicvariablendefiniert, welche dann bei Aufruf durch den Server nochmal publik gemacht werden.

MissionszieleMit Missionszielen verhält sich das Ganze ähnlich. Auch hier sollte bei Join In Progresssychronisiert werden, das es sonst vorkommen kann, dass der gerade connecteteMitspieler noch anstehende Missionsziele hat, die eigentlich schon abgehakt sind. Auchhier bietet es sich an ein Skript oder eine Funktion dafür zu verwenden.

Dieses lässt man idealerweise jedes Mal starten, wenn ein Ziel abgehakt wurde oder einSpieler neu connectet hat. Vom Verfahren her, kann man das Gleiche nutzen, wie auch beiden Publicvariablen. Die Init.sqs bekommt zusätzlich die Zeile:

onPlayerConnected "[] exec ""scripts\zielupdate.sqs"" ";

Zielupdate.sqs

Hier wurden die Variablen als Bedingung zur Erfüllung eines Missionsziels verwendet.Zum Beispiel, wenn eine Gruppe einen Wegpunkt erreicht hat was ein Missionszieldarstellt. Die Variable Var1 würde dann auf true gesetzt und wenn nun das Skriptaufgerufen wird und feststellt, dass Var1 true ist, das Missionsziel 1 auf Done gesetzt.

Ein weiteres Beispiel wäre Missionsziel 3 welches erreicht ist, wenn Name1 nicht mehr amLeben ist. Generell bietet es sich so also an dieses kleine Skript bei jedem Erfüllen einesMissionszieles oder Connecten eines Mitspielers kurz aufzurufen.

? ( ! ( Local Server ) ) : exit

publicVariable "Var1"; publicVariable "Var2"; publicVariable "Var3";

exit;

? ( ! ( Local Server ) ) : goto "Skip"

publicVariable "Var1"; publicVariable "Var2";

#Skip~4? Var1 : "1" objStatus “DONE”? Var2 : "2" objStatus “DONE”?! (alive Name1) : "3" objStatus “DONE”

exit;

Page 253: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kapitel 8- Das Camscripting -

Hier kommen wir zu einem Kapitel, was zwar teilweise sehr arbeitsaufwendig ist, aber dieErgebnisse locker mit Hollywoodfilmen zu vergleichen sind. Kleine Intro´s, Outro´s oderZwischensequenzen heben eine Mission immer ein wenig hervor und man wird besser indie Rolle des Charakters versetzt. Da man über diese Thematik auch ein eigenes Buchdieses Umfangs schreiben könnte, kommen hier lediglich ein paar Einführungen zumErstellen eigener Szenen.

8.1 Die Steuerung 2558.2 Die Kamerakoordinaten 2568.3 Kamera erstellen 2578.4 Die erste Szene 2588.5 Kamera an ein Fahrzeug/Einheit heften 2608.6 Text- und Einblendeffekte 2618.7 Kamera-Effekte 2628.8 Preload - Objekte und Positionen vorladen 2628.9 Kartenanimation ausführen 263

254

Page 254: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Die Steuerung einer Kamera hängt von der Tastaturbelegung ab und ist ansonstenziemlich einfach. Folgend erläuterte Tastaturbelegung ist von der Installation herstandardmäßig so vorhanden. Doch bevor man überhaupt eine Kamera steuern kann, sosollte man sie erstmal starten.

Name exec "camera.sqs" oder this exec "camera.sqs"

Dies sind zunächst die wichtigsten Tasten um Positionen festzulegen, Objekteanzuvisieren und so weiter. Im Tastatureinstellungsmenü hat man natürlich noch eineetwas größere Auswahl an Tasten, die aber jetzt erstmal weniger interessant sind. Diesereichen aus um großartige Sequenzen zu realisieren.

Linke Maustaste - Position speichernMaus vor zurück - Kamera vor und zurück bewegenPfeiltaste auf - Kamera vorwärts bewegenPfeiltaste ab - Kamera rückwärts bewegenPfeiltaste links - Kamera nach links bewegenPfeiltaste rechts - Kamera nach rechts bewegenNumpad 4 - Nach links schwenkenNumpad 6 - Nach rechts schwenkenNumpad 8 - Kamera schaut aufNumpad 2 - Kamera schaut abNumpad + - RanzoomenNumpad - - WegzommenBild auf - Kamera anhebenBild ab - Kamera senkenL - Fadenkreuz an/ausV - Kamera ausShift links - Kamera beschleunigenStrg - Objekt selektieren (siehe Bild)

255

8.1 - Die Steuerung

Kap

itel 8

Page 255: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Nachdem man seine Kamera nun ausgerichtet hat, klickt man die linke Maustaste. DieKamerakoordinaten werden nun im Zwischenspeicher gespeichert. Bei OperationFlashpoint drückte man damals die Strg-Taste und es wurde eine Clipport.txt imHauptverzeichnis erstellt, in der dann alle Kameradaten erfasst wurden. Nachdem manalso seine Position nun im Zwischenspeicher gespeichert hat, muss man sie ja irgendwoeinfügen.

Dazu erstellt man in seinem Missionsordner eine neue Textdatei, welche man dann freibenennen kann. Diese heißt jetzt mal Intro.sqs. In diese fügt man nun die Koordinatenmit Strg-V oder Rechtsklick mit der Maustaste und Einfügen wählen, ein. Das Ganzeschaut dann etwa wie folgt aus:

Das ist eine gerade festgelegte Kameraposition als Datenblock. Hier sind unter anderemdie nun folgend erläuterten Daten enthalten.

;=== 0:06:18Die Uhrzeit der Festlegung. Diese ist eher unwichtig und kann wegfallen.

_camera camPrepareTarget [101880.56,-28486.36,1887.85]Blickrichtung der Kamera, für die auch ein Objekt angegeben werden kann.

_camera camPreparePos [9626.16,10062.31,2.00]Kameraposition (X,Y,Z)

_camera camPrepareFOV 0.700Kamerazoom. Je kleiner der Wert, desto größer der Zoom.

_camera camCommitPrepared 0Die Zeit, wie lange die Kamera zu dieser Position braucht. Bei dem Wert 0 ist sie sofortda. Schreibt man aber einen größeren Wert dahin, braucht die Kamera von der alten biszu dieser neuen Position die jeweils definierte Zeit.

@camCommitted _cameraHier pausiert das Skript und warten, bis die Kamera ihre Position erreicht hat.

256

8.2 - Die Kamerakoordinaten

;=== 0:06:18_camera camPrepareTarget [101880.56,-28486.36,1887.85]_camera camPreparePos [9626.16,10062.31,2.00]_camera camPrepareFOV 0.691_camera camCommitPrepared 0@camCommitted _camera

Page 256: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Wenn man nun einen solchen Koordinatenblock gespeichert hat, muss man das Skripterstmal so definieren, dass die Kamera jetzt auch an dieser Position startet. Dabeikommen folgende Zeilen hinzu:

_camera = "camera" camCreate [9626.16,10062.31,2.00]

Für die XYZ-Werte kann man nun den _camera camPreparePos-Wert angeben oder auchauf [0,0,0] lassen, wenn die Kamera ohne Zeitverzögerung gleich weitergesetzt wird.

_camera camPrepareTarget [101880.56,-28486.36,1887.85]_camera camPrepareFOV 0.691_camera camCommitPrepared 0@camCommitted _camera

Und der jeweilige Effekt muss jetzt natürlich hiermit noch angegeben werden.

_camera cameraEffect ["Internal","back"]

Der folgende Befehl schaltet den Cinemarahmen ab und man hat Vollbild.

showCinemaBorder false

Nachdem die ganzen Daten nun verarbeitet wurden, sieht das Skript so aus:

Dies ist jetzt eher unspektakulär, da die Kamera erzeugt wird und starr in der Luft steht,ohne dass irgendwas passiert (siehe Bild). Dazu sind nun noch mehr Zeilen notwendig.

257

Kap

itel 8

8.3 - Kamera erstellen

_camera = "camera" camCreate [9626.16,10062.31,6.00]_camera camPrepareTarget [101880.56,-28486.36,1887.85]_camera camPrepareFOV 0.700_camera camCommitPrepared 0@camCommitted _camera_camera cameraEffect ["internal","back"]showcinemaborder false

Page 257: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Dazu wird die erste Kameraposition gleich übernommen, aber für den Targetwert bei_camera camPrepareTarget [101880.56,-28486.36,1887.85] ein Objekt angegeben.Die Kamera wird dann erstellt und schaut genau auf dieses Object, was hier mal Flieger1heißt. Zudem wurde auch der Zoomwert auf 600, also ranzoomen, verändert.

Jetzt braucht man aber einen weiteren Koordinatenblock um die Kamera dorthinwandern zu lassen. Nachdem dem der nun festgelegt wurde, wird er gleich in das Skriptintegriert und angepasst.

Intro.sqs

Wie man sehen kann wurden hier gleich zwei weitere Zeilen eingefügt:

titleCut [" ", "BLACK IN"]; titleFadeOut 4

Blendet schwarz in die Sequenz mit einer Dauer von 4 Sekunden ein.

playMusic "Track1"

Zeitgleich wird ein eigenes Musikstück gestartet, um die Sequenz soundtechnisch einwenig zu untermalen.

Die Kamera ist nun auf Flieger1 fixiert und braucht 30 Sekunden bis zur nächstenKameraposition, wobei sie während der Fahrt langsam ranzoomt, aber der Flieger einfachschneller ist und irgendwann am Horizont verschwindet.

258

;Introsequenz

titleCut [" ", "BLACK IN"]; titleFadeOut 4Playmusic "Track1"

;Position 1 Flugzeug_camera = "camera" camCreate [9626.16,10062.31,6.00]_camera camPrepareTarget Flieger1_camera camPrepareFOV 0.600_camera camCommitPrepared 0@camCommitted _camera_camera cameraEffect ["internal","back"]

showcinemaborder false

;Position 2 Flugzeug_camera camPrepareTarget Flieger1_camera camPreparePos [9657.99,10121.22,1.04]_camera camPrepareFOV 0.500_camera camCommitPrepared 30@camCommitted _camera

8.4 - Die erste Szene

Page 258: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Position 1 Flugzeug:

Position 2 Flugzeug:

Nun kann man das natürlich noch ausweiten, aber die Funktion sollte somit verstandensein. Jetzt muss das Skript natürlich auch beendet werden. Dazu kommen am Ende desSkriptes noch folgende Zeilen hinzu:

Die Szene blendet nun langsam aus und auch die Musik wird dabei leiser. Nach 6Sekunden wird die Kamera gelöscht und der Spieler kann seine Mission starten. Nachdemman die Musik mal, wie oben zu sehen, runtergefadet hat, fadet man sie am Ende desSkriptes wieder hoch, damit man später wieder Musiksound hat.

259

Kap

itel 8

6 Fademusic 0

titleCut [" ", "black out"]; titleFadeOut 4~6

player cameraEffect ["terminate","back"]camDestroy _camera~1

Playmusic ""0 Fademusic 1exit

Page 259: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Man hat auch die Möglichkeit die Kamera an ein Fahrzeug zu hängen, damit diese danndas Fahrzeug verfolgt. Die Kamera lässt sich dabei so gut ausrichten, dass man sie frei aneiner Position des Fahrzeugs positionieren kann. Dazu wird zunächst erstmal die Einheitoder das Fahrzeug erstellt, welches hier mal den Namen Auto hat.

260

;Kamera erzeugen_camera = "camera" camCreate [0,0,0]_camera camSetTarget Auto_camera camSetPos [0,0,0]_camera camSetFOV 0.700_camera camCommit 0@camCommitted _camera_camera cameraEffect ["internal","back"]

; Position der Kamera im/am/um das Fahrzeug_car = Auto

;Position der Kamera längs des Fahrzeugs (vorne/hinten/in)_dx = -6

;Position der Kamera neben dem Fahrzeug (links/rechts/in)_dy = 0

;Höhe der Kamera (unter/über/in)_dz = 2

#LOOP ;Die folgenden zwei Blöcke sind jeweils eine Zeile, was hier nicht möglich ist._camera camSetTarget [(10 * sin (getdir _car))+(getpos _ car select 0), 10*cos (getdir _car)+(getpos _car select 1), (getpos _car select 2)]

_camera camSetPos [(getpos _ car select 0) + _dx * sin (getdir _car) - _dy * cos (getdir _car), (getpos _car select 1) + _dx * cos (getdir _car) + _dy * sin (getdir _car), (getpos _car select 2)+_dz]

_camera camSetFOV 0.900_camera camCommit 0@camCommitted _camera

;Um das Skript zu beenden, setzen wir eine Bedingung. Hier: Wenn unser Auto;näher als 50 Meter an die Einheit (P1) kommt, soll die Szene beendet werden.?P1 distance Auto < 50 : goto "Ende"goto "LOOP"

#EndeP1 cameraEffect ["terminate","back"]camDestroy _cameraexit

8.5 - Kamera an ein Fahrzeug/Einheit heften

Page 260: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Man hat die Möglichkeit verschiedene Arten von Texteinblendungen zu definieren. Dabeiverwendet man unter anderem folgende Syntaxformen:

titleCut ["Hallo", "Black Out"]; titleFadeOut 6

titleText ["Test", "White In"]; titleFadeOut 6

cutText ["Test", "Black In"]; titleFadeOut 6

Hier eine Übersicht über die einzelnen Varianten:

Plain - Text erscheint mitten auf dem Bild

Plain Down - Text erscheint am unteren Bildrand

Black - blendet vom Bild ins Schwarze

Black Faded - blendet vom Bild ins Schwarze

Black In - blendet von schwarz ins Bild

Black Out - blendet Bild ins Schwarze aus

White In - blendet von weiß ins Bild

White Out - blendet Bild ins Weiße aus

ZeilenumbruchUm einen Zeilenumbruch mit einzusetzen setzt man lediglich ein \n an die jeweiligePosition im Text. Setzt man zwei \n\n hintereinander hat man eine Leerzeile und so weiter.

titleText ["Paraiso\nOne day later…", "Black In"]; titleFadeOut 4

Ingame schaut das dann später etwa so aus:

ComposetextNeben dem Standardhint gibt es noch den Composetext. Dieser kann farblich undschriftgrößentechnisch völlig frei definiert werden. Die u.a. Syntax stellt eine Zeile dar!

hint composeText [parsetext format ["<t size='1.2' align='center' color='#ff0000'>Hallo %1</t>", name player]];

Und folgend nochmal eine Syntax in Verbindung mit Text aus der Stringtable.csv:

hint composeText [localize "STR_RA_M01V03",parsetext format ["<t size='1.2' align='center' color='#ff0000'>%1</t>", name player]];

261

Kap

itel 8

8.6 - Text- und Einblendeffekte

Page 261: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Dieses Unterkapitel zeigt einige Effekte auf, welche man in seinen Sequenzen hier und daganz gut gebrauchen kann. Diese reichen vom Nachtsichteffekt bis hin zu Soundeffekten.

Kinorahmen abschaltenDer folgend aufgeführte Befehl schaltet die Kinobalken ab und man Vollbild.

showCinemaBorder false

Kamera mit NachtsichtDamit die Kamera die Nachtsichfunktion nutzen kann, benötigt man folgenen Befehl:

camUseNVG true

Spielgrafik erhellen oder verdunkelnDer folgend aufgeführte Befehl erhellt oder verdunkelt die Spielgrafik.

setAperture 1 - hell

setAperture 200 - dunkel

Kamera etwas sagen lassenDie Kamera wird wie ein Objekt behandelt, daher gilt hierfür der normale Say-Befehl.

_camera say "Sound1"

Umgebungssound abschaltenWer möchte schon gerne Vogelgezwitscher oder sonstigen Sound neben der Musik inseinem Intro oder seiner Zwischensequenz haben. Hierbei gelten folgende Befehle:

enableEnvironment false - Schaltet den Umgebungssound ab

3 fadeRadio 0 - Zeit fadeRadio Funklautstärke

4 fadeSound 0 - Zeit fadeSound Soundlautstärke

2 fadeMusic 0 - Zeit fadeMusik Musikstärke

Die äußerst aufwendig gestaltete Umwelt und das ständige Laden und Löschen vonTexturen und Objekten kann, bei großen Kamerasprüngen schnell zu fehlerhafterDarstellung der Umgebung und ruckeln führen. Das System und die Engine kommendabei dem Kamerasprung nicht so schnell nach und somit kommt es zu solchen Fehlern.

Um diesem Problem entgegenzuwirken und fehlerhafte Darstellungen und Ruckler zuvermeiden gibt es die Preloadbefehle. Diese laden Objekte, Positionen, Sounds oder wasimmer man möchte, vor ab in den Arbeitsspeicher. Je nach Befehlsform wird die Kameraerst an die neue Position versetzt, wenn der Bereich oder die Objekte fertig in denArbeitsspeicher geladen wurden. Folgend nun ein paar Preload-Syntaxbeispiele.

preloadObject - Lädt ein Objekt vor (siehe Beispiel)preloadCamera - Lädt Kameraposition vor (siehe Beispiel)

262

8.7 - Kamera-Effekte

8.8 - Preload - Objekte und Positionen vorladen

Page 262: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

preLoadMusic Track1 - Lädt ein Musikstück vorpreloadSound Sound1 - Lädt einen Sound vorpreloadTitleRsc ["BIS", "Plain] - Lädt eine Ressource vorpreloadTitleObj ["BisLogo", "Plain] - Lädt eine Ressource bzw. Objekt vor

Hier mal zwei Beispiele der Verwendung von preLoadObject und preLoadCamera. Beimersten Beispiel werden alle Daten der Umgebung geladen. Das Skript läuft erst weiter,wenn der Ladevorgang abgeschlossen ist und löscht am Ende den lokalen Wert _preload.

_preload = [] spawn {waitUntil {preloadCamera position Name}}@scriptDone _preloadterminate _preload

Gleiches bei preloadObjekt, dort wird das Objekt Name mit Distanz (5) geladen.

_preload = [] spawn {waitUntil {5 preloadObject Name}}

Während eines Briefings ist es sehr interessant eine Kartenanimation ablaufen zu lassen. Dabei kann man die Kamera auf der Karte zu den verschiedenen Markerpositionenwandern lassen, Marker löschen oder verändern und vieles mehr.

Folgend ein kurzes Beispiel, wie man so ein Animationsskript gestalten kann. Dabei istes sinnvoll das Briefing oder auch das Funkgerät auszublenden. Man sollte zudem fürjeden angesteuerten Marker 2 Blöcke zu definieren, wie im Beispiel zu sehen ist.Block1=Ranzoomen, Block2=wegzoomen und danach erst weiter zur nächsten Position.

263

Kap

itel 8

8.9 - Kartenanimation ausführen

forceMap true ;// Öffnet die KarteshowPad false ;// Verbirgt das BriefingdisableUserInput true ;// Sperrt Spielereingabe

;//Marker Pos1 in 3 Sekunden bis auf Wert 0.1 ranzoomenmapAnimAdd [3, 0.1, markerPos "Pos1"] ;// Fügt Animation hinzu [Zeit, Zoom, Position]mapAnimCommit ;// Führt Animation aus@mapAnimDone ;// Wartet bis die Animation beendet ist~2

;//Aus Marker Pos1 in 1 Sekunde auf Wert 1 rauszoomenmapAnimAdd [1, 1, markerPos "Pos1"]mapAnimCommit@mapAnimDone~1;//Kartenanimation beenden und Urzustände wiederherstellenforceMap false ;// Schließt die KartemapAnimClear ;// Löscht Werte von MapAnimAddshowPad true ;// Zeigt das Briefing wieder andisableUserInput false ;// Gibt dem Spieler die Kontrolle zurückexit;

Page 263: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kapitel 9- Scripting -

In diesem Kapitel werden dir einige allgemeine Abschnitte aus dem Bereich Scriptingnäher gebracht. Du wirst Dank dieses Kapitels einige Skripte und Befehle in diesem Buchbesser verstehen und bist am Ende sogar in der Lage eigene kleine oder auch größereSkripte zu schreiben und anzuwenden.

9.1 Die Variable 2659.2 Wahrheitswerte 2669.3 Logische Operatoren 2679.4 Die While-Do-Schleife 2689.5 Der Zähler 2689.6 If-Then-Else 2689.7 Der Delay 2699.8 Random 2699.9 WaitUntil 2699.10 Die Klammer 2709.11 Das Semikolon 2719.12 Der Array 2719.13 Funktionen-Grundwissen 274

264

Page 264: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 9

Eine Variable ist ein veränderbarer Wert. Dieser kann dabei ein Wort oder auch eine Zahlsein, dass ist völlig egal. Hierbei gibt es die lokale und die globale Variable. Während eineglobale Variable überall gültig ist, ist eine lokale Variable nur für einen Bereich definiert.Hier mal ein Beispiel mit Variablen:

Heli1 flyInHeight 120

Der Name Heli1 stellt eine globale Variable dar, während 120 nur ein variabler Wert aberkeine Variable in Form eines Namens ist. Man kann eine Zahl nur als Wert verwenden undnicht als Namen vergeben. Verbinden man die Zahl mit einem Buchstaben, wie oben mitHeli1 dargestellt, sieht das schon wieder ganz anders aus.

Lokale VariableEine lokale Variable erkennt man an dem Unterstrich vor der Variable. Diese Variable istnur in diesem Skript bzw. Bereich gültig. So ist es möglich, die Variable für mehrereEinheiten zu verwenden, ohne das man noch weitere Variablen vergeben muss.

Als Beispiel dient hier mal ein Skript, welches so definiert ist, dass zunächst drei EinheitenName1, Name2 und Name3 eine Animation ausführen sollen. Da es aber irgendwo aufder Karte vielleicht auch noch weitere Einheiten gibt, die auf das Skript zugreifen sollen,verwendet man darin eine lokale Variable. Man muss dafür also nur ein Skript schreibenund vergibt darin eine lokale Variable für eine Vielzahl von Einheiten.

Die Namen, die das Skript auslösen sollen, gibt man dabei in einen Array mit an:

[Name1,Name2,Name3] exec "skript.sqs"

Wird das Skript nun gestartet, wird jedem der drei Beispielsoldaten die lokale Variable_man zugewiesen. Jede der drei Einheiten wird also in dem Skript lokal behandelt undangesprochen. Im Skript sieht das dann etwa so aus:

Diese Einheit, mit dem globalen Namen z.B. Name1, hat nun die lokale Variable _manzugewiesen bekommen und führt den angegebenen Befehl aus.

265

;Animationsskript

;Einheit bekommt lokalen Wert zugewiesen_man = _this select 0

;Einheit führt Animation aus_man playMove "Animation";

;Skript wird verlassenexit

9.1 - Die Variable

Page 265: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Globale Variable

Neben lokalen Variablen gibt es natürlich noch die globalen Variablen. Während einelokale Variable nur in einem ihr vorbestimmten Bereich gültig ist, wird eine globaleVariable, wie der Name schon sagt, für den globalen Bereich festgelegt. Wenn man einemSoldaten einen Namen gibt, so ist das eine globale Variable und diese kann nur einmalvergeben werden. Möchte man einem zweiten Soldaten im Editor den gleichen Namengeben, wird sich das Programm mit einer Fehlermeldung melden. Diese Variable kannman nun von überall, also Skript, Funktion, Auslöser und Wegpunkt ansprechen.

Fest vergebene VariablenEinige Werte sind vom Spiel aus schon fest vergeben. Diese lauten wie folgt:

Player - Der SpielerThis - Einheit oder ObjektTime - Uhrzeit im Spiel_time - Lokalzeit_x - Ein Element eines Arrays_this - Lokale EinheitPi - 3,14…

VariablenzuständeMan kann einer Variable Zustände oder Werte zuweisen. Zum Beispiel kann man sie inihrem Zustand auf true schalten oder ihr einen Textstring zuweisen.

Name1= true - Variable bekommt den Wert WAHR

Name1= 44 - Variable bekommt einen Wert

Name1= "MeinText" - Variable bekommt einen Textstring

Name1= [Wert1,Wert2] - Variable bekommt einen Arraywert

Variable speichernVariablen lassen sich auch jederzeit speichern und sind im weiteren Verlauf aufrufbar.

saveVar "Variablenname"

Ein Wahrheitswert ist ein Zustand eines Wertes. Man kann ihn mit einem Ein- oderAusschalter vergleichen. Setzt man eine Variable auf true, wird die jeweilige Aktiongestartet und setzt man sie auf false wird die Aktion wieder beendet. Für true kann manauch 1 und für false auch 0 schreiben.

true Wird zurückgegeben wenn Bedingung erfüllt ist

false Wird zurückgegeben wenn Bedingung nicht erfüllt ist

266

9.2 - Wahrheitswerte

Page 266: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 9

Hier eine Übersicht einiger allgemein bekannter wichtiger Operatoren.

AND - Logisches UND zum Verknüpfen von zwei oder mehreren Variablen

OR - Logisches ODER zur kontrollierten Auswahl zwischenzwei oder mehreren Variablen

NOT - Logisches NICHT zur kontrollierten Bestimmung von zwei oder mehreren Variablen

! - Steht ebenfalls für NOT, also NICHT

? - WENN

: - DANN

If - WENN

Then - DANN

Else - SONST

Exit - Stoppt die Ausführung eines Skriptes

Do - Mach (siehe While Do)

# - Überschrift (Label)

Goto - Gehe zu

> - Größer als

< - Kleiner

<= - Kleiner oder gleich

>= - Größer oder gleich

== - Gleich

~ - Zeitverzögerung in Sekunden (~3)

; - Ist im Kapitel 9.10 näher erläutert

@ - Pausiert und wartet bis die Bedingung dahinter true ist

ForEach - Für jede Einheit {_x reveal Player} foreach List Bereich1

ThisList - Für jede Einheit (Seite) in einem Auslöserbereich

Count - Gibt die Anzahl der vorhandenen Elemente eines Arrays zurück

Random - Bestimmt einen Zufallswert

Case - Falls (Bsp: case 1 : exit (Übersetzt: Ist Fall gleich Wert 1 dann exit)

Ceil - Rundet Wert auf. (Bsp: ceil 5.25 wäre 6 / ceil -5.25 wäre 5)

Floor - Rundet Wert ab. (Bsp: round 5.25 wäre 5 / round -5.55 wäre -6)

Round - Rundet Wert auf/ab. (Bsp: round 5.25 wäre 5 / round 5.55 wäre 6)

267

9.3 - Logische Operatoren

Page 267: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Diese Schleife läuft so lange, bis a größer als b ist. Zu a wird dabei so lange der Wert 1 zuhinzugezählt, bis a größer ist und somit die Schleife beendet wird. Der maximale Wertfür Armed Assault liegt derzeit bei 100.000.

WWhhiillee {{aa<<bb}} ddoo {{aa==aa++11}}

Übersetzt: Solange a kleiner ist als b, zähle zu a den Wert 1 dazu.

Möchte man einen Zähler in ein Skript einsetzen, muss man zunächst den Ursprungswertam Skript- oder Missionsstart auf 0 setzen. Der Variable Counter wird somit zunächst derWert 0 zugewiesen. Danach startet der eigentliche Zähler und zählt zur lokalen Variable_Counter bei jedem Durchlauf den Wert 1 hinzu. Dies passiert aber nur so lange, bis dieVariable _Counter >=, also größer gleich, 10 ist und beendet dann das Skript.

_counter = 0;#Start;? (_counter>=10) : exit _counter = _counter+1;goto “Start”;

Diese Syntax heißt übersetzt so viel wie: Wenn – Dann – Sonst. Oder eben so viel wie:WENN Bedingung erfüllt, DANN mach dies, ANSONSTEN mach das. Hier nochmal zweiSyntaxformen dazu:

IF (a>b) THEN {c=1} ELSE {c=2}

Als Beispiel mal folgendes. Ein Marker soll, solange die Einheit lebt, immer an die aktuellePosition dieser Einheit gesetzt werden. Ist diese Einheit nicht mehr vorhanden, soll dasSkript beendet werden.

Wenn (If) Soldat1 lebt dann (Then) setze S1-Symbol auf Soldat1 ansonsten (Else)lösche S1-Symbol und verlasse Skript (Exit).

268

#Start;~0.5If(alive Soldat1)Then{"S1-Symbol" setMarkerPos getpos Soldat1}

Else{"S1-Symbol" setMarkerType "Empty";exit};goto “Start”;

9.4 - Die While-Do-Schleife

9.5 - Der Zähler

9.6 - If-Then-Else

Page 268: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 9

Ein Delay ist eine Verzögerung und wird in Skripten (SQS) verwendet. In Funktionennimmt man stattdessen den Befehl Sleep. Diese bekommen dann einen Wert der alsSekunden gewertet wird. Das Skript oder die Funktion zählt dann den gesetzten Wertrunter und folgt erst dann dem weiteren Verlauf.

~300 - Skript pausiert 300 Sekunden bis zur Weiterführung

~random 300 - Generiert einen Zufallswert von 0-300 und pausiert

Sleep 300 - Funktion „schläft“ 300 Sekunden

Mit dem Befehl Random hat man die Möglichkeit einen Wert per Zufall generieren zulassen. So könnte man zum Beispiel eine Variable mit einem Zufallswertwert versehen.Das Ganze schaut dann etwa wie folgt aus:

_start = random 4? _start < 1 : goto "Start1";? _start < 2 : goto "Start2";? _start < 3 : goto "Start3";? _start < 4 : goto "Ende";

Hier wurde ein Wert bis maximal 4 generiert und das Skript prüft danach wie groß dieserWert ist und springt zum jeweiligen Label Start oder Ende.

Natürlich kann man diesen Operator auch anderweitig benutzen. Zum Beispiel um eineEinheit an eine Zufallsposition in einem Gebäude setzen oder einen Delay mit einemZufallswert versehen. Das schaut dann etwa so aus:

Name1 setPos (nearestBuilding this buildingPos random 10)

oder der Delay:

~random Wert

WaitUntil heißt übersetzt warte bis und kann somit als Bedingung für etwas genutztwerden. Es ist also wie ein @ nur eben für Funktionen. Die Funktion wartet dann, bis dieseBedingung erfüllt ist.

_Wert = 0;waitUntil {_Wert = _Wert +1; _Wert >= 100};

269

9.7 - Der Delay

9.8 - Random

9.9 - Waituntil

Page 269: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Beim Skripten werden diverse Klammern verwendet, von denen jede ihre eigeneEigenschaft besitzt. Dabei unterscheidet man zwischen folgenden Varianten:

[ ] - Array (im Kapitel 9.12 erläutert){ } - Code (geschweifte Klammer)( ) - mathematische Operatoren" " - Textstrings

Setzt man eine Klammer, so fasst man etwas zusammen und teilt dem System bzw. ArmAmit, dass dies zusammen ausgeführt werden muss.

{} – CodeMit der geschweiften Klammer lässt man Code verarbeiten, also alles, was man inCodeform aufrufen und weiterverarbeiten möchte. Als gutes Beispiel dient hier:

{_x moveInCargo Heli1} forEach Units GAlpha

Dabei sollen alle Einheiten der Gruppe GAlpha in den Frachtraum des Fahrzeugs Heli1gesetzt werden.

() - Mathematische OperatorenMit der normalen Klammer () verarbeitet man mathematische Operatoren. Das Ganzeläuft wie in der Mathematik, um Punkt-vor-Strich zu umgehen.

(a+b)*c

Beispiel:In folgendem Beispiel soll eine Einheit an eine Position in einem Gebäude laufen. Dazusagt man: Einheit gehe zu Haus plus Position Wert. Dabei ist durch die Klammerfestgelegt, dass die Position zu dem Haus gehört. Als Syntax, sieht das Ganze so aus:

_Man move (_House buildingPos 120)

Wären dort keine Klammern definiert, würde ArmA lesen: Einheit gehe zu Haus und zueiner Position 120. Wobei die Engine nicht weiß, dass diese Position zu dem Gebäudegehört und gibt somit Fehlermeldung aus.

“Textstrings“Mit Hilfe der "" legt man Textstrings fest. Alternativ kann man für diese auch einen 'verwenden, welcher auf der Tastatur in der Regel auf der #-Taste zu finden ist. "" könnenauch geschachtelt werden. Hier mal ein Beispiel der Verwendung anhand eines Mapklicks.

onMapSingleClick "Leader Alpha1 move _pos; Player say ""Hallo"""

270

9.10 - Die Klammer

Page 270: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 9

Das Semikolon steht in der Skriptsprache für Trennung bzw. Absatz. Man kann hiermitzwei Befehlszeilen voneinander trennen (siehe Initzeile einer Einheit) oder weitergeben,dass die Zeile zu Ende ist und somit gleich die nächste Zeile gelesen wird. Es sollte alsogenerell jede Skript- oder jede Funktionszeile mit einem Semikolon beendet werden. DesWeiteren gilt zu bemerken, dass in einem Skript oder einer Funktion die Zeichen hintereinem Semikolon nicht gelesen werden. Dies ermöglicht, dass man dahinter einenVermerk oder ähnliches schreiben kann. Hier mal ein Skriptbeispiel:

Bei der Funktion hat man damit zusätzlich die Möglichkeit Befehle voneinander zutrennen. Hier mal eine Beispielsyntax, welche zwei Semikolon beinhaltet, die den Codedarin voneinander trennen.

Beispiel = {private["_a","_b"]; _d=[getPos player,_this select 0]; _b = 100};

Achtung! Hat man einen Delay wie z.B. ~10 vergeben oder ein Label # gesetzt, setzt mandahinter kein Semikolon, da das Skript sonst nicht funktionieren wird!

Mit einem Array hat man die Möglichkeit, Werte an ein Skript oder eine Funktion zuübergeben. Er Vorteil daran ist, dass man nun ein Skript sehr flexibel für viele Einheitenoder ähnliches verwenden kann, indem man darin nur lokale Variablen benutzt. EineFunktion müsste man dann nur einmal schreiben und kann diese dann gleich für sehrviele Aktionen verwenden. Es ist also nicht auf ein spezielles Objekt oder eine spezielleEinheit festgelegt, sondern für viele. Ein Array ist also eine Auflistung von mehrerenWerten, die mit Klammern zusammengehalten und dann weitergegeben werden.

ArrayDer Array besteht aus den eckigen Klammern []. Alles was jetzt darin aufgelistet ist, kanndann so an das Skript übergeben werden. Hier mal ein Syntaxbeispiel:

[Wert1, Wert2, Wert3, Wert4] exec "skript.sqs"

271

;Animationsskript

;Einheit bekommt lokalen Wert zugewiesen_man = _this select 0playSound "Move";

;Einheit führt Animation aus_man playmove "Animation";;Skript wird verlassenexit

9.11 - Das Semikolon

9.12 - Der Array

Page 271: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Die im Array festgelegten Werte werden jetzt im Skript wie folgt definiert:

Da wir im Skript mit lokalen Werten arbeiten möchten, weist man dem jeweiligen Wertaus dem Array im Skript eine eigene lokale Variable zu. Im nun folgenden Beispiel wird dasGanze sicher deutlicher.

Hier soll ein Objekt mit einem Skript erstellt werden. Dies soll hier mal ein leerer BMP2sein, der an der Position eines unsichtbaren Heli-H´s namens Point1, mit der Ausrichtung100 und einem Treibstoffwert von 0.5, createt werden soll. Was man jetzt noch alles imweiteren Skriptverlauf definieren könnte, bleibt hier mal freigestellt. Zunächst die Syntaxmit dem definierten Array:

["BMP2", Point1, 100, 0.5] exec "skript.sqs"

In diesem Skript bekommen nun die Werte aus dem Array jeweils eine lokale Variablezugewiesen. Dabei wurden diese wie folgt übergeben:

"BMP2" bekommt die lokale Variable Wert _ObjectPoint1 bekommt die lokale Variable _StartPos100 bekommt die lokale Variable _Azimut0.5 bekommt die lokale Variable _Fuel

Mit diesen vergebenen lokalen Variablen wird nun im Skript weitergearbeitet, wie manim unteren Skriptteil sehr gut erkennen kann. Der Vorteil ist nun, dass man nur ein Scriptbenötigt, welches man beliebig oft verwenden kann. Die folgende Syntax wäre nungenauso darauf anwendbar. Wobei hier mit Random ein Zufallstankfüllwert zwischen 0und 1 definiert wird und das Objekt, hier ein Heli, nun an der Position des Spielers erstelltwird.

["AH1W", Player, 100, random 1] exec "skript.sqs"

272

_Wert1 = _this select 0_Wert2 = _this select 1_Wert3 = _this select 2_Wert4 = _this select 3

_Object = _this select 0_StartPos = _this select 1_Azimut = _this select 2_Fuel = _this select 3

_Vehicle = "_Object" createVehicle position _StartPos;_Vehicle setDir _Azimut;_Vehicle setFuel _Fuel;

exit

Page 272: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 9

Zufallswert aus einem Array beziehenMit folgender Vorgabe hat man die Möglichkeit sich einen Zufallwert aus einem Arrayauswählen zu lassen und diesen dann für etwas Bestimmtes zu verwenden.

_array = [47,73,78,85,101,103];_Pos = _array select (random (count _array)-0.5);

Als gutes Beispiel dient folgendes. Man möchte die Einheit Soldier1 mit einem imAufrufarray definierten SetUnitPos-Wert an eine Zufallsposition des Hotels setzen. Dabeisollen aber nur Positionen berücksichtig werden, die auf der ersten Etage sind und vorherim Skriptarray festgelegt wurden.

[Soldier1, "Middle", Hotel] exec "skript.sqs"

Hierbei wählt das System einen Wert aus dem Skriptarray aus und setzt die Einheit andiese Position im Hotel. Da hier mit einem Objekt auf der Karte gearbeitet wird, bitte dasKapitel 5.61 beachten, um das Gebäude zu benennen.

273

_Unit = _this select 0_Pos = _this select 1_House = _this select 2

_array = [47,73,78,85,101,103];_BPos = _array select (random (count _array)-0.5);_Unit setPos (_House buildingPos _BPos);

_Unit setUnitPos _Pos;

exit;

Page 273: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Bereits in OFP Resistance wurden Funktionen eingeführt. Zunächst einmal waren sie ander anderen Dateiendung erkennbar, die nämlich nicht SQS, sondern SQF lautet. Daranhat sich mit und in Armed Assault im Grunde nicht viel geändert. Es gibt immer noch dieklassischen Funktionen mit der typischen Dateiendung SQFund es gibt auch noch genauwie bei OFP, Skripte mit der Dateiendung SQS.

Wie im Kapitel 2.7 schon erläutert, ist die Funktion(SQF) im Grunde genommen eineWeiterentwicklung der normalen Skript-Syntax(SQS). Jedoch muss erwähnt werden, dasssie keinesfalls das Skript ersetzt. Zumindest nicht in allen Bereichen. Es gibt nach wie vordie SQS-Syntax auf welche die SQF-Syntax nur aufbaut.

Für und mit Armed Assault hat BIS auch die Möglichkeiten für Skripte und Funktionenerweitert. So gibt es jetzt eine ganze Reihe neuer Skript-Befehle und Ergänzungen derControl Structures, die bereits in OFP bekannte SQF-Syntax wurde also deutlich erweitert.Und hier beginnt -unnötigerweise- leider auch die Verwirrung.

Einige der neuen Befehle erwarten eine bestimmte Syntax, genauso wie einige alteBefehle eine bestimmte Syntax erwarten. Wenn man den Exec-Befehl verwendet, mussman zwangsläufig die OFP Skriptsyntax, also die Sqs-Syntax verwenden. Dort kann mandann auch weiterhin Labels und Goto-Loops anwenden. Man kann das Skript jederzeitmit Exit verlassen.

Neu ist allerdings, dass jedes Statement mit einem Semikolon ; beendet werden mussund dass man bei der Verwendung von Code nicht mehr wie bei OFP Anführungszeichen"", sondern geschweifte Klammern {} verwenden muss. Die Anführungszeichen "" werdennun für Strings verwendet.

OFP Beispiel:

"_x addWeapon ""Binocular"" " foreach units group player

ArmA-Beispiel:

{_x addWeapon "Binocular"} foreach units group player;

Wer sich eine solche Funktion jetzt mal ansieht, wird schnell die Unterschiede zu dennormalen OFP-Skripten erkennen. In Funktionen gibt es keine Wartezeiten (Delays), keineLabels # und damit auch keine Goto-Funktionen. Dafür werden in Funktionen häufigWhile-do- und If-Then-Else-Konstruktionen benutzt. Mit ArmA sind auch neue Befehlewie Switch, Do oder Case hinzugekommen. Diese Befehlskombinationen werden auchControl Structures genannt. Ich verweise hier auf die offizielle Wiki von BI:

http://community.bistudio.com/wiki/Control_Structures

274

9.13 - Funktionen Grundwissen

Page 274: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 9

Eine Funktion hat die Hauptaufgabe eine Lösung kurz und effizient herbeizuführen undbesteht daher in der Regel aus einer eher kurzen Befehlsfolge, während ein Skript, je nachAufgabe, schon mal etwas länger ausfallen kann. Funktionen werden oft aus Skriptenaufgerufen, um zum Beispiel einer Variablen einen Wert zuzuweisen, Werte bzw. Datenumzuwandeln oder im weitesten Sinne etwas errechnen zu lassen. Beispiele wären:

- die Entfernung zweier Positionen errechnen,

- aus einer Anzahl bekannter Einheiten alle Anführer herauszufiltern,

- den bekanntesten Feind herausfinden,

-einer bestimmten Anzahl von Einheiten bestimmte Waffen zuweisen

- Elemente eines Arrays suchen oder zufällig vertauschen

und vieles mehr. Oftmals liefert eine Funktion einen Wert zurück an das Skript. Genauergesagt wurden viele Funktionen gerade dazu geschrieben, einen Wert, den sogenanntenReturn, an ein Skript zurückzuliefern, was mit einem Skript nicht möglich ist. Funktionensind im Gegensatz zu Skripten in den allermeisten Fällen Missions- oderAddonunabhängig verwendbar. Wenn sie mit den geeigneten Daten gefüttert werden,liefern sie unbestechlich und unbeirrbar ihr Ergebnis, während viele Skripte auf einenrecht speziellen Kontext zugeschnitten sind.

Funktionen bieten den Vorteil, dass man diese beim Missionsstart vorladen kann. Siewerden dann in der Engine gespeichert und sind bei Aufruf sofort verfügbar. Sie sindsomit schneller verfügbar und werden mit höherer Priorität als ein Skript bearbeitet.Idealerweise lädt man seine Funktionen aus der Init.sqs oder Init.sqf heraus.

Möchte man seine Funktion beim Missionsstart vorladen, versieht man sie zunächst miteinem Variablennamen, mit welchem man später die Funktion wieder aufrufen kann. Das

System weiß dann:

Variablenname = Ergebnis der vorgeladenen SQF

Die Syntax zum Laden der Funktion lautet dann:

SearchLight = compile preprocessFile "Searchlight.sqf";

SearchLight ist die Variable die, wie oben erklärt, beim Aufruf der Funktion vergebenwurde. SearchLight steht jetzt für die Lösung bzw. dem gesamten Inhalt der Funktion.Oder anders...

SearchLight ist jetzt die Funktion!

275

Page 275: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Wichtig dabei ist, bei dem Variablennamen (z.B.: SearchLight) darauf zu achten, dassdiese Variable keinem Befehl gleichen darf, der in ArmA verwendet wird. Zum Beispielfür eine Positions-Funktion.

Position = compile preprocessFile "Position.sqf";

Dies würde jetzt eine Fehlermeldung zur Folge haben, da Position ein ArmA-Befehl ist.Deshalb unbedingt immer Variablennamen wählen, die keinen Befehlen gleichen!

Möchte man seine Funktion später im Verlauf der Mission wieder aufrufen, verwendetman dazu grundsätzlich mit dem Call-Befehl!

_variable = [Daten] call SearchLight

Da diese Funktion vorgeladen bzw. präkompiliert wurde, stehen die Informationen sofortzur Verfügung und die Funktion muss von der Engine nicht mehr zeilenweise interpretiertwerden, wie es bei einem Skript der Fall ist.

Natürlich kann man manche Aufgabe einer Funktion auch im Skript selbst lösen, auchdarin ist es möglich und üblich mit While-Do oder If-Then-Else zu arbeiten. Manchmalist es aber einfach übersichtlicher, diese Aufgabe einer Funktion zu übergeben und somitgewissermaßen auszulagern. In diesem Fall ruft man die Funktion mit Call auf und kannin der nächsten Zeile des Skriptes schon mit dem Ergebnis der Funktion fortfahren.

Wie bereits erwähnt, wurde die SQF-Syntax für ArmA großzügig erweitert und um vieleMöglichkeiten reicher. Sie kann jetzt sogar für Skripte verwendet werden, die damit auchdie Dateinamenerweiterung SQF bekommen. In den Skripten werden, wie auch sonstüberall in ArmA, Code-Blöcke von geschweiften Klammern {} umschlossen undStatements mit einem Semikolon ; abgeschlossen. Natürlich kann man auch in Skriptenmit SQF-Syntax Wartezeiten einbauen, dazu wird aber nicht wie bei SQS-Skripten die Tilde~ benutzt, sondern der Befehl Sleep verwendet. Skripte, die die SQF-Syntax verwenden,müssen mit den Befehlen Spawn oder execVM aufgerufen werden.

Wenn ein Skript mehrfach ausgeführt werden soll, empfiehlt es sich das Skript wie eineFunktion vorzuladen, damit es bereits im Speicher bereit liegt und so rascher ausgeführtwerden kann.

Skript vorladen:

BeispielSkript = compile preprocessfile "BeispielSkript.sqf";

Skript aufrufen:

[Daten] spawn BeispielSkript;

276

Page 276: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 9

Für Skripte, die nur selten ausgeführt werden sollen, kann man den Befehl execVMverwenden, da hier das Skript nicht vorgeladen werden muss.

[Daten] execVM "BeispielSkript.sqf";

Soll ein Skript aus dem Editor aufgerufen werden, ist es leider meistens nötig, denSkriptaufruf etwas zu verändern. Er sieht dann so ähnlich wie ein Funktionsaufruf aus,obwohl das Skript natürlich keinen Wert zurückgibt.

Skript aus Editor aufrufen (vorkompiliert):

Variable = [Daten] spawn BeispielSkript;

oder (nicht vorkompiliert):

Variable = [Daten] execVM "BeispielSkript.sqf";

Variable ist nur ein Platzhalter, der momentan lediglich Fehlermeldungen verhindert.Man kann die Variable als Dummy betrachten und auch so bezeichnen oder schlicht undeinfach mit d abkürzen.

d = [Daten] execVM "BeispielSkript.sqf";

Skripte mit der SQF-Syntax enden einfach, wenn der Interpreter an ihr Ende gelangt, derExit-Befehl ist nicht nur unnötig, sondern auch ungeeignet, weil es ein SQS-Sytnaxbefehlist. Sollte es einmal nötig sein, ein SQF-Skript vor dem Dateiende abzubrechen, dannbenutzt man folgende Konstruktion:

if (Abbruchbedingung) exitWith {};

Man kann in den geschweiften Klammern des exitWith-Befehls natürlich auch noch Codeausführen. Beispielweise:

if (Abbruchbedingung) exitWith {Player sidechat "Ende!"};

277

Page 277: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kapitel 10- Dialoge und Ressourcen -

In diesem Kapitel werden dir einige grundlegende Bereiche zum Thema Dialoge nähergebracht. Ich habe mich hier wirklich auf ein paar wesentliche Bereiche beschränkt, damein Wissen im Bereich Dialoge begrenzt ist. Dennoch werde ich dir hier aufzeigen, wiedu es schaffst ein Bild, einen Text oder als Highlight sogar ein kleines Video in deineMission einzubinden. Alle Themen sind selbstverständlich erweiterbar. Dies sind nur einpaar kleine Einleitungen, damit du schon mal ein Basiswissen bekommst, um später auchmal eine Grafik oder ähnliches einbinden zu können.

Da Dialoge sehr viel Sorgfalt im Bezug auf Arbeit mit der Description.ext erfordern, mussman auch die notwendige Geduld, Ruhe und das nötige Grundwissen über dieDescription.ext mitbringen. Das Vergessen eines Semikolons oder einer Klammer führtselbst bei Profis regelmäßig zu CTD´s (Crash to Desktop). Deshalb nicht gleich dasHandtuch werfen, sondern ruhig und strukturiert an die Sache herangehen.

10.1 Was sind eigentlich Dialoge 27910.2 Basisdefinitionen(Konstanten) 28010.3 Basisklassen und Subklassen 28310.4 Die Schriftarten 28610.5 Eine Grafik einblenden 28710.6 Einen Text einblenden 28810.7 Visieransichten einblenden 28910.8 Die eigene Lagekarte 29110.9 Einen Button definieren 292

10.10 Einen Rahmen definieren 29410.11 Die Videosequenz 297

278

Page 278: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 10

Dialoge sind Bilder, Texte oder Schaltflächen, die sich für eine Mission oder auch fürMissionfeatures frei definieren lassen. Man kann so zum Beispiel Grafiken, Texte oder auchVisieransichten während der Mission oder einer Sequenz einblenden lassen. Richtiginteressant wird es erst, wenn man Schaltflächen oder Dropdownmenüs definiert unddiese etwas ausführen lässt.

Als Beispiel dient hier der Editor, der ja fast nur aus Dialogen besteht. Alle Menüs, die sichöffnen lassen sind ebenfalls Dialoge. Ein ebenfalls sehr gutes Beispiel ist dieWindowsoberfläche. All das läuft auf Dialogbasis.

Folgend mal ein Dialog aus dem Editor zum Gruppen einfügen mit Dropdownmenü

In Armed Assault wurden die Möglichkeiten gegenüber Operation Flashpoint um einigeserweitert. Dialoge können jetzt noch viel ansprechender gestaltet und definiert werden.Zum Beispiel mit Farbverläufen, Schatten oder als fliegende Schrift, wie bei den Creditsvon Armed Assault zu sehen ist.

Dialoge sind aber, so schön wie sie sind, dennoch ein Kapitel für sich und teilweise sehraufwendig umzusetzen. Dieses Kapitel beinhaltet lediglich eine Einführung und gewährtmit der themenabschließenden Videosequenz einen kleinen Blick über den Tellerrand,um zu zeigen, was in diesem Bereich so alles möglich ist.

Das Anlegen von Dialogen erfordert eine sehr disziplinierte und sorgfältige Arbeitsweise,da man diese in der Description.ext definieren muss und einen CTD (Crash to Desktop) zurFolge hat, wenn man mal eben etwas übersieht zu definieren. Als bestens Beispiel dienenhier das Vergessen eines Semikolons oder eine falsche Klammersetzung.

Auf dem folgenden Bild wurde die Schrift fliegend animiert.

279

10.1 - Was sind eigentlich Dialoge

Page 279: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Um Dialoge zu erstellen oder Ressourcen zu nutzen, kommt man meistens nicht darumherum einige Basisdefinitionen vorzunehmen. Hier sind gerade die Defines gemeint,welche eigentlich schon tief in der Engine von Armed Assault verankert sind, aberdennoch auch für den eigenen Bedarf umdefiniert oder neu angelegt werden können.

Für einige Bereiche ist es nicht notwendig alle Defines mit in die Description.extaufzunehmen. Manchmal braucht man sogar gar keine, solange man mit denBasisdefinitionen zufrieden ist. Siehe dazu bei Grafik oder Schrift einblenden, dort wurdengar keine Defines angegeben. Möchte man aber ganz und gar sicher gehen, kann manauch gerne alle mit in die Description.ext aufnehmen und entgeht damit ganz sichereinem CTD (Crash to Desktop) oder einem anderen Fehler.

Aber was sind denn jetzt eigentlich diese Defines? Defines sind Platzhalter. Für jedesDefine sind von der Engine aus zunächst Werte hinterlegt. Solange diese Werte deneigenen Zweck erfüllen, gibt es keine Notwendigkeit eigene zu definieren. Möchte manaber zum Beispiel für seine Schrift oder was auch immer einen eigenen Define definieren,so ist das durchaus möglich. Als Beispiel mal folgendes. Es gibt ja die Werte True undFalse für welche man ja auch 1 für True oder 0 für False setzen kann.

In der Engine von Armed Assault sollte es von daher folgende Definierung geben:

#define false 0#define true 1

Diese kann man zum Beispiel auch in der entpackten Missions.pbo unter Armory.intround darin in der rscCommon.hpp sehen. Dort sind für die unterschiedlichsten Dinge dieverschiedensten Werte definiert.

Define heißt ja am Ende definieren. Man definiert also etwas nach seinen Ansprüchen.Dies könnten hierbei unter anderem

Booleans - Aussagewerte wie true oder falseSounds - Sounds für Buttons etc.Elemente - Rahmen, Flächen, Buttons, Listboxen uvm.Schriften - Die SchriftartenFarben - Die Farben

sein, oder vieles mehr. Man hat hierbei einen relativ großen Spielraum für eigeneDefinitionen, wobei es am Ende aber dann doch irgendwann Grenzen geben wird.

Einfach gesehen könnte man es ein Wort für einen Wert vergeben bezeichnen, da mansich ein Wort am Ende besser als irgendwelche Zahlen merken kann. Als Beispiel soll hiermal die eigene Definierung von einer eigenen Schriftfarbe dienen. Farben wie scharz oderweiß, sind zahlentechnisch nicht so ganz so schwer zu merken. Hat man aberirgendwelche Zwischenwerte, um ein ganz bestimmtes rot, blau oder was auch immer

280

10.2 - Basisdefinitionen (Konstanten)

Page 280: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 10

haben zu wollen, ist es doch einfacher, sich diese selbst zu definieren. Die Werte derFarben schwarz und weiß sind also, wie hier zu sehen recht einfach:

#define Color_White {1, 1, 1, 1}#define Color_Black {0, 0, 0, 1}

Bei einer anderen Farbe sieht es da schon wieder anders aus. Etwa ein blau:

#define Mein_Blau {0, 0, 0.7, 1}

ExkursFarben werden aus Werten gemischt. Hierbei gelten alle Werte zwischen 0 und 1. Derletzte Wert gibt dabei die Transparenz an.

{rot, grün, blau, Transparenz}

Ende des Exkurs!

Define-NamenWie bei dem obigen Define der Farbe blau zu erkennen, wurde dort ein eigenerDefinename (Mein_Blau) vergeben. Es ist also auch möglich eigene Namen zu vergeben.Generell bietet es sich an, die Standarddefines so zu belassen und zusätzlich eigeneanzulegen und später zu vergeben. Damit geht man gegebenfalls einer Menge Ärger ausdem Weg.

Folgend mal eine sehr kleine Auflistung einiger Standarddefines mit Namen und Wert:

#define CT_STATIC 0#define CT_BUTTON 1#define CT_EDIT 2#define CT_SLIDER 3#define ST_TITLE_BAR 32#define ST_PICTURE 48

Diese Namen zu wählen wäre jetzt nicht besonders sinnvoll. Deshalb sollte man seineNamen so wählen, dass es ganz sicher keine Überschneidung gibt.

#define Murray_Title ST_TITLE_BAR + ST_CENTER#define Murray_Schrift "Zeppelin32"#define Murray_Sound {"\ca\ui\data\sound\mouse2", 0.09, 1}

Im oberen Beipiel wurde ein eigener Name vergeben und diesem die Werte vonST_Title_Bar und ST_Center zugewiesen, was so auch möglich ist.

Hier ist aber jetzt Schluss zum Thema Defines! Man weiß nun, dass es möglich ist eigene Namen und Werte zu vergeben und auch, wie sich die Farben zusammensetzen. Auf derFolgeseite nur noch mal ein Ausschnitt von Standarddefines, welche in vielen der offiziellen Missionen etc. wiederzufinden sind.

281

Page 281: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

StandarddefinesFolgend eine Auswahl von Standarddefines aus Armed Assault. Generell bietet es sichan, diese aus irgendeiner offiziellen Description.ext einer ArmA-Mission zu kopieren. Hatman sich ein Mal ein Muster, also Template, angelegt, so kann man es immer wiederverwenden.

Die obigen beiden Fenster stellen eigentlich ein Fenster dar und die Defines sollten daheruntereinander stehen, was hier aus Platzgründen leider nicht möglich ist. Deshalb dieAufteilung in zwei Tabellen.

Zunächst sind die Control Types und danach die Static Styles nacheinander aufgelistet,wobei die Reihenfolge dabei aber keine Rolle spielt. Wie man erkennen kann ist hierbeieine gewisse Ordnung gegeben. Zum Ende wurde mit FontM eine Schriftart definiert.Eigens angelegte Defines setzt man nun einfach mit unten an, dann sieht man malabgesehen vom eigenen Definenamen gleich, dass ab dort die Eigenen kommen.

282

// Control Types

#define CT_STATIC 0#define CT_BUTTON 1#define CT_EDIT 2#define CT_SLIDER 3#define CT_COMBO 4#define CT_LISTBOX 5#define CT_TOOLBOX 6#define CT_CHECKBOXES 7#define CT_PROGRESS 8#define CT_HTML 9#define CT_STATIC_SKEW 10#define CT_ACTIVETEXT 11#define CT_TREE 12#define CT_STRUCTURED_TEXT 13#define CT_CONTEXT_MENU 14#define CT_CONTROLS_GROUP 15#define CT_XKEYDESC 40#define CT_XBUTTON 41#define CT_XLISTBOX 42#define CT_XSLIDER 43#define CT_XCOMBO 44#define CT_ANIMATED_TEXTURE 45#define CT_OBJECT 80#define CT_OBJECT_ZOOM 81#define CT_OBJECT_CONTAINER 82#define CT_OBJECT_CONT_ANIM 83#define CT_LINEBREAK 98#define CT_USER 99#define CT_MAP 100#define CT_MAP_MAIN 101

// Static Styles

#define ST_POS 0x0F#define ST_HPOS 0x03#define ST_VPOS 0x0C#define ST_LEFT 0x00#define ST_RIGHT 0x01#define ST_CENTER 0x02#define ST_DOWN 0x04#define ST_UP 0x08#define ST_VCENTER 0x0c#define ST_TYPE 0xF0

#define ST_SINGLE 0#define ST_MULTI 16#define ST_TITLE_BAR 32#define ST_PICTURE 48#define ST_FRAME 64#define ST_BACKGROUND 80#define ST_GROUP_BOX 96#define ST_GROUP_BOX2 112#define ST_HUD_BACKGROUND 128#define ST_TILE_PICTURE 144#define ST_WITH_RECT 160#define ST_LINE 176

#define FontM "Zeppelin32"

//My Defines

#define Murray_Title 32 + 64#define Murray_Font "TahomaB"

Page 282: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 10Zum Anlegen von Dialogen oder zum Nutzen von Ressourcen benötigt man Basis- undSubklassen. In einer Basisklasse definiert man erstmal grundlegende Dinge und in derSubklasse dann das Klassenspezifische. Als Parallelbeispiel dienen hier mal die normalenSoundklassen, welche man ja auch in der Description.ext definiert.

Auch hier gibt es die Basis- und die Subklasse. Die Basisklasse CfgSounds legt erstmal fest,dass es sich um einen Sound handelt, während die Subklasse, hier Sound1, die jeweiligenDefinitionen zu Sound1 beinhaltet.

Genau so sieht es auch bei den Klassen aus, die für Dialoge bzw. Ressourcen benötigtwerden. Allerdings gibt es hier weit mehr Definitionsmöglichkeiten, als bei den Sounds.

BasisklasseFolgend mal eine Basisklasse, in welcher grundlegende Dinge wie Typ, Style, Hintergrund,Textfarbe, Schriftart und Schriftgröße definiert sind. Diese Basisklasse RscText kann manjetzt grundsätzlich als Basis für alle folgenden Subklassen verwenden.

Nachdem man nun eine Basis geschaffen hat, kann man die Subklassen zusätzlich nochindividuell anpassen. Als Beispiel könnte man in der Subklasse Schrift1 eine größere undandersfarbige Schrift, als bei der Subklasse Schrift2 oder eben eine andere Position aufdem Monitor definieren.

283

class CfgSounds{

sounds[] = {Sound1

};

class Sound1{

name = "Sound1";sound[] = {"\sounds\sound1.ogg", db+0, 1.0};titles[] = {};

};};

class RscText{

type = CT_STATIC;idc = -1;style = ST_CENTER;colorBackground[] = {0, 0, 0, 0}; // HintergrundfarbecolorText[] = {0, 0, 0, 0}; // Textfarbefont = "TahomaB"; // SchriftartsizeEx = 0.080; // Schriftgröße

};

10.3 - Basisklassen und Subklassen

Page 283: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

284

SubklasseDie Subklasse ansich teilt sich nun auch nochmal auf. Sie hat in dem Sinne auch nochmaleine Subklasse. Diese nennen wir hier jetzt lieber mal Komponente, um Verwechselungenzu vermeiden. In folgendem Beispiel mal eine Gliederung:

Man achte hierbei auf die Anordnung der geschwungenen Klammern, welche einegewisse Übersichtlichkeit mitbringen. Man kann so genau erkennen, was zu wem gehört.

In folgendem Beispiel aus Kapitel 10.6 in welchem es darum geht eine Schriftressourcezu definieren. Hier sieht man die zunächst festgelegt Basisklasse RscText und diedarunterliegende Subklasse Schrift1.

Description.ext

// Mainklasse class RscText{

};

// Subklasse class RscTitles{

[Auflistung der Ressourcen]

class MeineRessource{

[Auflistung der Komponenten]

class MeineKomponente{

};};

};

// Basisklasse

class RscText{

type = CT_STATIC;idc = -1;style = ST_CENTER;h = 0.05;colorBackground[] = {0, 0, 0, 1}; // HintergrundfarbecolorText[] = {0, 0, 0, 1}; // Textfarbefont = "TahomaB"; // SchriftartsizeEx = 0.040; // Schriftgröße

};

// Weiter auf der Folgeseite!

Page 284: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 10

Wie man in der Basisklasse RscText erkennen kann, wurde als Schriftfarbe {0, 0, 0, 1}, alsoschwarz, definiert. Aber wie auf dem unteren Bild zu sehen ist, ist die Farbe der Schriftweiß. Das liegt daran, dass in der Subklasse SchriftButton1 für Schrift1 die Farbe Weiß{1, 1, 1, 1} definiert wurde. Wie man des Weiteren erkennen kann wurden in der Subklassezusätzlich noch viel mehr Dinge definiert.

Eine ganz wichtige Zeile ist die

class SchriftButton1 : RscText

Daran erkennt man, dass der Klasse SchriftButton1 die Definitionen von RscTextzugewiesen werden. Also alles was in der Basisklasse RscText vordefiniert wurde, wirdhier übernommen und könnte in dieser Subklasse ohne weiteres weggelassen werden.

Im obigen Beispiel wurde jedoch für SchriftButton1 die Schriftfarbe und Schriftart neudefiniert. Deshalb sind diese Zeilen dort mit angegeben.

Diese Einblendung wird nun wie folgt aufgerufen:

TitleRsc ["Schrift1", "PLAIN"];

285

// Subklasseclass RscTitles{Titles[]={"Schrift1"}; // Liste der Ressourcen: “Schrift1, Schrift2,. . .”

class Schrift1{

Idd= -1;MovingEnable=False;Duration=10; // EinblenddauerFadeIn=1; // EinblendzeitName=" Schrift1"; // NameControls[]={"SchriftButton1"}; // Liste

class SchriftButton1 : RscText{

ColorText[]={1,1,1,1}; // SchriftfarbeFont="Bitstream"; // SchriftartText="OPERATION SNAKEBITE"; // Textx = 0.30; // X-Achsey = 0.50; // Y-Achsew = 0.50; // Fensterbreiteh = 0.05; // Fensterhöhe

};};

Page 285: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

In Armed Assault sind diverse Schriftarten vordefiniert, welche man, je nachdem was manmachen möchte, auswählen kann. Man hat die Möglichkeit bei den Defines oder in derjeweiligen Klasse bzw. Subklasse eine dieser Schriftarten zu definieren.

Hier eine kleine Auswahl der vorhandenen Schriftarten:

Arial BoldBitstreamTahomaBZeppelin33 Zeppelin33ItalicZeppelin32

Folgend mal zwei Bildbeispiele:

TahomaB

Zeppelin33Italic

Bei folgendem Description.ext-Beispiel wird der Ressource RscText die SchriftartBitstream mit einer Größe von 0.04 zugewiesen.

286

10.4 - Die Schriftarten

class RscText{

idc = -1;type = CT_STATIC;style = ST_LEFT;colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0};font = Bitstream;sizeEx = 0.04;

};

Page 286: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 10

287

Um eine einfache Grafik einzublenden ist die Definierung von Defines in derDescription.ext nicht unbedingt notwendig und kann ohne weiteres weggelassenwerden. Für die Grafik muss allerdings eine Klasse in der Description.ext angelegt werden,damit diese auch benutzt werden kann.

Als Beispiel könnte hier mal die kurze Einblendung einer Grafik beim Beginn einer Missionoder ähnliches dienen. Dafür wird lediglich eine einfache Klasse für das Bild in derDescription.ext definiert. Im unteren Beispiel ist alles definiert, was dazu benötigt wird.

Der Aufruf erfolgt hierbei mit:

titleRsc ["Bild1","PLAIN"];

Description.ext

class RscPicture{

idc = -1;type = CT_STATIC;style = ST_PICTURE;colorBackground[] = {0, 0, 0, 0};colorText[] = {1, 1, 1, 1};font = Zeppelin32;sizeEx = 0;

};

class RscTitles{

titles[] ={Bild1};

class Bild1{

idd=-1;movingEnable = true;duration=10; // Dauer der Einblendungfadein=2; // Einfadezeitname = "Bild1"; // Name im Editorcontrols[]={Picture};

class Picture : RscPicture{

x = 0.30; // X-Achsey = 0.50; // Y-Achsew = 0.40; // Fensterbreiteh = 0.05; // Fensterhöhetext = "bilder\bild1.paa"; // Die Grafik mit PfadsizeEx = 0.04;style=48;

};};

};

10.5 - Eine Grafik einblenden

Page 287: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

288

Das Definieren eines eigenen Textes kann unter anderem schon etwas aufwendiger sein,als das Einblenden einer Grafik. Hierfür definiert man zusätzlich Dinge wie Schriftart,Größe, Farbe, Style und die Position, um mal die Wichtigsten zu nennen.

Zunächst definiert man die Basisklasse, in welcher man die Basics festlegt. Danach folgtfür jede Texteinblendung bzw. Satz oder wie auch immer eine eigene Subklasse, die manindividuell definieren kann. Bei der ersten Subklasse (Schrift1) könnte quasi eineÜberschrift mit größerer und farbiger Schrift definiert sein und in der zweiten Subklasse(Schrift2) eine kleinere Schrift in weißer Farbe. Die Einblendung erfolgt wieder mit:

titleRsc ["Schrift1","Plain"]

Description.ext

class RscText{

type = 0;idc = -1;style = 0;h = 0.05;colorBackground[] = {0, 0, 0, 0}; // HintergrundfarbecolorText[] = {0, 0, 0, 0}; // Textfarbefont = TahomaB; // SchriftartsizeEx = 0.080; // Schriftgröße

};

class RscTitles{Titles[]={"Schrift1"};

class Schrift1{

Idd=-1;MovingEnable=0;Duration=10; // EinblenddauerFadeIn=1; // EinblendzeitName=" Schrift1"; // NameControls[]={"Control01"};

class Control01: RscText{

ColorText[]={1,1,1,1}; // SchriftfarbeFont="TahomaB"; // SchriftartSize=0;Text="OPERATION SNAKEBITE"; // Textx = 0.30; // X-Achsey = 0.50; // Y-Achsew = 0.40; // Fensterbreiteh = 0.1; // Fensterhöhe

};};

10.6 - Einen Text einblenden

Page 288: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 10

289

Waffe Quellpfad

G36 \ca\Weapons\G36_optics

M4SPR \ca\weapons\optika_sniperwM4 \ca\Weapons\optika_ACOG

M4GL \ca\Weapons\optika_ACOG

SVD \ca\weapons\optika_snpiere

Javeline \ca\Weapons\optika_TOW

Binocular \ca\weapons\optika_dalekohled

Laserdesignator \ca\weapons\optika_SOFLAM

NVGoggles \ca\weapons\optika_night

M119 \ca\weapons\optika_M119

Stryker \ca\Wheeled\optika_stryker_driver\ca\Tracked\optika_stryker_gunner

BRDM \ca\wheeled\optika_BRDMAH1ZGunner \ca\air\optika_heli_gunner

\ca\air\optika_AH1ZKa50 \ca\air\optika_Ka50_rocket.p3d

Tankdriver \ca\Tracked\optika_tank_driver

Tankgunner \ca\Tracked\optika_tank_gunner

M1A1 \ca\Tracked\optika_M1A1_commander

ZSU Gunner \ca\Tracked\optika_zsu_gunner

ZSUCommander \ca\Tracked\optika_tanke_auxiliary

T72Gunner \ca\Tracked\optika_T72_gunner

10.7 - Visieransichten einblenden

Die normalen Visieransichten der Waffen lassen sich auch für Sequenzen wie Intros,Outros und so weiter verwenden. Das Fernglas lässt sich dabei am unkompliziertesteneinblenden. Dazu benötigt man lediglich die folgende Syntax:

cutRsc ["Binocular", "PLAIN",0.1] oder titleRsc ["Binocular", "PLAIN",0.1]

Alle Anderen muss man zunächst in der Decription.ext definieren. Nach der Definitionhat man die Möglichkeit diese Ressource per Auslöser unter Effekte und dort unter Typund Ressource auswählen oder idealerweise per Skript aufrufen.

Folgend eine kleine Auswahl der Visieransichten mit dem jeweiligen Quellenpfad, wobeizu beachten gilt, dass einige Waffen das gleiche Visier nutzen. Von daher wurden hiernicht alle Waffen einzeln aufgeführt, sondern lediglich eine kleine Auswahl.

Visiertypen

Page 289: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

290

Description.ext

Die hier festgelegte Ressource SNIPER wird nun wie folgt aufgerufen.

titleRsc ["SNIPER","Plain"]

Möchte man diese Ressource später wieder ausblenden geht das, je nach Auswahl, mit:

titleRsc ["default","plain",2] oder cutRsc ["default","plain",2]

#define CT_OBJECT 80

class RscObject{

type = CT_OBJECT;scale = 1.0;direction[] = {0, 0, 1};up[] = {0, 1, 0};

};

class RscTitles{

titles[] = {SNIPER};

class SNIPER{

idd=-1;movingEnable = false;duration=10;name = "SNIPER";

objects[]= {SNIPER};

class SNIPER : RscObject{

model= "\ca\weapons\optika_SOFLAM";idc=-1;position[] = {0,0,0.065};direction[] = {sin 0, sin 0, cos 180};up[] = {0, 1, 0};

};};

Page 290: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 10

291

Die Möglichkeit ein Bild einzufügen eröffnet jetzt natürlich diverse neue Möglichkeiten.Statt einem Logo könnte man nun eine eigene Lagekarte bzw. geheime Pläne, einFahndungsfoto oder noch viel mehr realisieren. Als Beispiel dient hier mal eine Lagekarte.Wie man diese aufruft soll hierbei mal jedem selbst überlassen bleiben. Funk, Actionmenüoder wie auch immer. Auf jeden Fall sollte die Aufrufsyntax enthalten sein:

titleRsc ["Lagekarte","PLAIN"];

Description.ext

Wie man erkennen kann, gleicht diese Description.ext genau dem Beispiel aus Kapitel10.5, nur dass eben einige Werte verändert wurden.

class RscPicture{

type = CT_STATIC;idc = -1;style = ST_PICTURE;colorBackground[] = {0, 0, 0, 0};colorText[] = {1, 1, 1, 1};font = Zeppelin32; //SchriftartsizeEx = 0;

};class RscTitles{titles[] ={Lagekarte};

class Lagekarte{

idd=-1;movingEnable = true;duration=10; // Dauer der Einblendungfadein=2; // Einfadezeitname = "Lagekarte"; // Name im Editorcontrols[]={Picture};

class Picture : RscPicture{

x = 0.10; // X-Achsey = 0.40; // Y-Achsew = 0.80; // Fensterbreiteh = 0.05; // Fensterhöhetext = "bilder\lagekarte.jpg"; // Die Grafik mit PfadsizeEx = 0.04;style=48;

};};

10.8 - Die eigene Lagekarte

Page 291: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

292

Einen Button zu definieren ist schon etwas komplexer als das Einfügen eines einfachenBildes oder Textes. Hierbei müssen auf jeden Fall die Defines verwendet werden und sogarnoch einiges mehr, wie man gleich bemerken wird. Man hat hierbei unzähligeMöglichkeiten, wobei sich aber dieses Beispiel nur auf ein paar Basics bzw. eineneinfachen Standartbutton beschränken wird.

Description.ext

Weiter auf der nächsten Seite. Im ersten Teil der Description.ext wurden zunächst dieRahmendaten für den Button definiert. Im zweiten Teil nun der Button selbst.

#define CT_BUTTON 1#define Color_White {1, 1, 1, 1}#define Color_Black {0, 0, 0, 1}#define Color_Grey {0.5, 0.5, 0.5, 1}#define FontHTML "BitStream"

class RscButton{

type = CT_BUTTON;style = ST_CENTER;

// Text Definitionenfont = FontHTML;colorText[] = Color_White;colorDisabled[] = Color_Black;

// Hintergrund-EinstellungencolorBackground[] = Color_Black;colorBackgroundDisabled[] = Color_Black;colorBackgroundActive[] = Color_Grey;

offsetX = 0.001; offsetY = 0.002;offsetPressedX = 0.003;offsetPressedY = -0.003;colorFocused[] = Color_Black;

// Schatten Einstellungen colorShadow[] = Color_Black;

// Rahmen-EinstellungencolorBorder[] = Color_White;borderSize = 0.02;

// SoundssoundEnter[] = {"\ca\ui\sound\pageopen", 0.1, 1};soundPush[] = {"\ca\ui\sound\pageclose", 0.1, 1};soundClick[] = {"\ca\ui\sound\offbutton", 0.1, 1};soundEscape[] = {"\ca\ui\sound\offbutton", 0.1, 1};

};

10.9 - Einen Button definieren

Page 292: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 10

293

Hier wurde nun der Button selbst definiert. Er bekommt dabei die Rahmendaten von demim ersten Description.ext-Teil vordefinierten RscButton zugewiesen. Dieser Button lässtsich nun mit folgender Syntax ganz einfach aufrufen:

ok = createDialog "DemoButton"

Diese Syntax kann überall ganz frei eingesetzt werden, um den Button aufzurufen. Zumeinfachen Testen eignet sich ein Funkauslöser recht gut.

Die Actionzeile könnte auch ganz anders aussehen. Hier sollte nur mal gezeigt werden,dass sich der Text eines Buttons beim anklicken auch ändern kann. Ansonsten gibt mandarin die Befehle an, die beim anklicken ausgeführt werden sollen.

Die Actionzeile könnte beispielsweise auch so aussehen:

action = "closeDialog 0; [] exec ""script.sqs"" ";

Wie man sieht, lässt sich die Actionzeile recht frei definieren. Man kann hier ganz normalwie bei allen anderen Dingen etwas ausführen lassen oder ähnliches. Wichtig ist dabei dieBeachtung der Zeichen wie Klammern, Anführungsstriche etc.

Der Befehl closeDialog 0 schließt den Dialog letztendlich.

Diesen Butten kann man jetzt noch mit einem Rahmen verzieren oder vieles mehr. Diessollte lediglich ein schlichtes Beispiel sein, um zu zeigen, wie man einen Button erstellt.

class DemoButton{

idd = 100;movingEnable = false;controls[] = { MEIN_BUTTON };

class MEIN_BUTTON : RscButton{

idc = 100;sizeEx = 0.018;text = "Klick Mich";

// Positionx = 0.4; y = 0.4;

// Größew = 0.15; h = 0.04;

// Actionaction = "ctrlSetText [100, ""Danke""]; hint ""TEST"" ";

};};

Page 293: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

In folgendem Beispiel wird ein ganz normaler Rahmen definiert. Als kleine Besonderheit,hat dieser Rahmen noch einen kleinen Text mit integriert. Zunächst werden im Kopfwieder die Defines festgelegt, welche man dann im restlichen Verlauf zuordnet.

Description.ext

294

#define CT_STATIC 0#define Color_White {1, 1, 1, 1}#define Color_Black {0, 0, 0, 1}#define FontHTML "BitStream"#define ST_FRAME 64

class RscText{

Idc = -1;Type = CT_Static;Font = FontHTML;ColorBackground = Color_White;

};

class My_Frame : RscText{

Style = ST_FRAME;x = 0.22;y = 0.12;w = 0.40;h = 0.20;

};

class RscTitles {Titles [] = {"Rahmen1"};

class Rahmen1{Idd= -1;MovingEnable=False;Duration=10; // EinblenddauerFadeIn=1; // EinblendzeitName="Rahmen1"; // Name

Controls[]={"SchriftRahmen1"}; // Liste

class SchriftRahmen1 : MY_Frame{ColorText[]= Color_Black; //SchriftfarbeText="OPERATION SNAKEBITE"; // TextSizeEx = 0.030;};

};

10.10 - Einen Rahmen definieren

Page 294: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Im Spiel sieht das Ganz dann wie folgt aus, wobei man den Rahmen wie folgt aufruft:

titleRsc ["Rahmen1", "PLAIN"];

Das abschließende Highlight zu diesem Dialogkapitel soll nun die Erstellung einereigenen Videosequenz darstellen. Eine solche Sequenz wird mit einer Reihe von einzelnenFrames, also vielen einzelnen Bildern und einem kleinen Skript umgesetzt. Natürlich muss,wie bei allen anderen Dialogen auch, erstmal die Description.ext dafür ausgelegt werden.

Description.ext

Kap

itel 10

295

10.11 - Die Videosequenz

class RscPicture{

Idc = -1;Type = 0;Style = 48;ColorBackground[] = {0, 0, 0, 0};ColorText[] = {1, 1, 1, 1};Font = BitStream;SizeEx = 0;

};class Videodialog{

Idd = -1;MovingEnable = true;

Controls[] = {Picture_1};

class Picture_1 : RscPicture{idc = 200; // Die IDx = 0.0; y = 0.0; w = 1.0; h = 1.0; // Größe und Positiontext = "video\frame1.jpg"; // Dateipfadsize = 0;};

};

Page 295: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Nachdem die Description.ext definiert wurde, wird noch ein Skript benötigt, mit welchemdie Sequenz aufgerufen und gesteuert wird. Das Skript schaut dabei wie folgt aus:

Video.sqs:

Wie man erkennen kann, wurden hier gleich einige Effekte mit eingebracht. Die Sequenzblendet Dank dem Titelcut erstmal langsam ein. Dazu wird gleich Musik abgespielt. Etwagleichzeitig wird der Videodialog erstellt und die Bilder laufen ab. Dazu jetzt aber noch einpaar kurze Erläuterungen.

_x - Wird für den eingebauten Zähler verwendet. Solange der Wert kleiner als 150 ist, wird der Loop wiederholt.150 ist die Anzahl der Bilder, welche im Ordner Videoliegen. Dies können natürlich noch weit mehr sein.

_delay - Hiemit legt man die Abspielgeschwindigkeit der Bilder fest. Ändert man den Wert zum Beispiel auf 1/12, laufendie Bilder langsamer ab und es entsteht der Zeitlupen-effekt. 1/48 lässt die Bilder noch schneller ablaufen.

video\frame%1.jpg - Im Ordner Video sind die einzelnen Bilder hinterlegt,welche als frame1, frame2, ... durchbenannt sind.In diesem Beispiel wurden 150 Bilder verwendet.Möchte man also noch mehr Bilder verwenden, muss man den Wert im Skript einfach anpassen.

296

playMusic "ATrack8"

TitleCut [" ", "BLACK IN"]; titleFadeOut 4

_video = createdialog "Videodialog"

_x = 1_delay = 1/24

#LoopctrlSetText [200, format ["video\frame%1.jpg", _x]]

~ _delay_x = _x + 1? _x < 150 : goto "Loop"

closedialog 0

TitleCut [" ", "BLACK IN"]; titleFadeOut 4exit;

Page 296: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 10

Die Bilder bzw. FramesNachdem nun das Gerüst steht, fehlt nur noch der eigentliche Inhalt. Wie schon erwähntwerden dafür einzelne Bilder benötigt. Die länge der Sequenz bestimmt sich also aus derAnzahl der Bilder, die dafür verwendet werden. Dafür gibt es spezielle Freeware-programme, welche es einem ermöglichen, aus einem Video die einzelnen Bilder zuexportieren. Aus rechtlichen Gründen werde ich diese hier jetzt nicht nennen.

Dies können, je nach Länge oder eigenem Vorhaben schon eine ganze Menge Bilderwerden. Bei dem Beispielskript wurden ganze 150 Bilder verwendet, wobei die Sequenzaber am Ende nur ein paar Sekunden lang ist. Deshalb sollte man sich überlegen, inwelcher Form man ein solches Feature anwendet.

Es besteht ja auch die Möglichkeit die Bilder zu verkleinern und so anzupassen, dass sienur einen kleinen Teil des Bildschirms belegen. So eine Art kleines Infovideo, Action Hudoder was auch immer.

Möchte man das Video aber über die ganze Bildfläche legen, sollte man die Bilderentsprechend groß speichern. Zum Beispiel 512x512 Pixel. Dabei sollte man aber auchnicht zu große Dateien verwendet. Was die Dateigröße angeht. Da die Mission am Endevom Gesamtumfang zu groß werden könnte.

OrdnerEs bietet sich für die einzelnen Bilder an einen extra Ordner anzulegen. Denn diese imRootverzeichnis der Mission abzulegen wäre etwas unprofessionell. In diesem Beispielwurde der Ordner Video benannt. Daraus ergibt sich dann der Pfand:

video\frame%1.jpg

Folgend auch nochmal ein Screen, welcher die nahezu gleichnamigen, aber gleichmäßigdurchnummerieren Bilder enthält.

Die Engine ersetzt den Wert %1 dann, dank der richtigen Syntax, mit der nächst höherenZahl. Im Skript schaut diese Syntax wie folgt aus (siehe auch links im Skript):

ctrlSetText [200, format ["video\frame%1.jpg", _x]]

Im Kapitel 5.66 sind diesbezüglich einige sich selbst erklärende Syntaxarten in spezielldieser Form. Damit sollte sich dieses Verfahren auch von selbst erklären.

Jetzt bleibt nur noch...

Film ab!

297

Page 297: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

298

Kapitel 11- Allgemeines -

In diesem nun letzten Kapitel werden dir noch einige allgemeine Bereiche aus dem Spielerläutert. Zum Beispiel das Anlegen oder die Verwendung von MOD-Ordnern, dieVerwendung von Addons in deiner Mission oder was du beachten solltest, wenn du deineMission veröffentlichen möchtest. Zum Schluss dann noch das Natoalphabet, welchesdu als Arma-Soldat auf jeden Fall beherrschen solltest.

11.1 Eigenes Profil 29911.2 Die ArmA Cheats 30111.3 Der MOD-Ordner 30211.4 Die Verwendung von Addons 30311.5 Der Missionsrelease 30411.6 Die ArmA.rpt 30511.7 Das Natoalphabet 30611.8 Die Dienstgradabzeichen 30711.9 Die Squad.xml 308

11.10 Die Startparameter 31111.11 Tastenkombinationen, Tipps und Tricks 313

Page 298: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 11

299

Das eigene Profil, sämtliche gespeicherte Spielstände und die eigenen Editormissionensind ja von Haus aus unter

C:\EigeneDateien\ArmA\Benutzer\Missions

zu finden. Natürlich ist dies nicht weiter schlimm, aber wenn man sehr viele Missioneneditiert und der Ordner immer größer wird, ist die Systemfestplatte C:\ irgendwann voll.Man sollte seine Systemfestplatte, im Normalfall C:\, generell nur für sein System und dieProgramme nutzen. Alle weiteren Daten sollten auf einer anderen Festplatte oderPartition gespeichert bzw. hinterlegt werden.

Armed Assault legt von Haus aber den Ordner nun unter Eigene Dateien an, was nichtsehr sinnvoll ist. Müsste man nun sein Windows aus Virengründen oder was auch immerneu installieren, wären alle Daten weg. Gerade bei selbsteditierten Missionen, in welcheman eine Menge Zeit investiert hat, ist das sehr ärgerlich. Zudem läuft Windows mit derZeit immer schlechter, wenn man dauernd irgendwelche Daten auf der C-Festplatte hinund her kopiert.

Hat man sein Armed Assault nun also auf einer anderen Festplatte bzw. Partitioninstalliert, hat man auch die Möglichkeit sein Profil im Armed Assault Verzeichnisanzulegen. Dazu muss man zunächst eine Verknüpfung zur Arma.exe erstellen. Dannklickt man per Rechtsklick darauf und wählt Eigenschaften. Danach ändert man einfachnur noch den vorhandenen Pfad in:

D:\ArmA\arma.exe -profiles=D:\ArmA\ -name=Username

Natürlich muss man den Pfad entsprechend anpassen. Je nachdem, wo ArmA haltinstalliert ist. Zusätzlich könnte man noch folgende Parameter mit angeben:

-window - hat zur Folge das ArmA im Fenstermodus läuft-nosplash - startet ArmA ohne Vorabscreens (Schnellstart)

In einer Zeile würde das dann etwa so aussehen:

C:\ArmA\arma.exe -nosplash -window -profiles=D:\ArmA\ -name=Username

Mit der obigen Zeile würde also das Profil im ArmA-Ordner angesprochen und das Spielim Fenstermodus(Window) und ohne Vorabscreens gestartet.

Tipp:Möchte gerade man nur editieren, lohnt es sich ArmA im Fenstermodus laufen zu lassen,da man so viel schneller zwischen Skripten und Spiel switchen kann.

11.1 - Eigenes Profil

Page 299: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Username.ArmAProfileIm Profilordner findet sich eine Datei namens Username.ArmAProfile, in welcher alleKonfigurationen des Users gespeichert bzw. hinterlegt sind. Hierzu gehören unteranderem, nur um mal die wichtigsten zu nennen:

- Grafikeinstellungen(Helligkeit,Gamma,Schatten,Shading,etc.)- Soundeinstellungen- Tastenkonfiguration- Mauseinstellungen- zuletzt gespielte SP-Mission- zuletzt gespielte MP-Mission- zuletzt gespielte Kampagnen-Mission- ausgewählte Kampagne- Multiplayereinstellungen (Filter, etc.)- Schwierigkeitsgrad - benutzerdefinierter Schwierigkeitsgrad - eigene Indetität (wie etwa in Description.ext)- aktive Missionskeys- aktive Vehikelkeys (Waffenkammer)- Blut (ein/aus)

Diese Datei kann man ganz normal mit dem Texteditor öffnen. Man hat somit also auchdie Möglichkeit, die Einstellungen direkt darin vorzunehmen.

ArmA.cfgEine weitere wichtige Datei im Profilordner ist die ArmA.cfg. In dieser finden sich direkteSystemeinstellungen zum Spiel. Also Dinge wie Grafikauflösung, RAM usw.

winX=0; - Bildposition X-AchsewinY=5; - Bildposition Y-AchsewinW=1024; - Auflösung X-AchsewinH=746; - Auflösung Y-AchsewinDefW=1028; - relative Auflösung X-AchsewinDefH=746; - relative Auflösung Y-AchseFSAA=2; - AntiAliasing HDRPrecision=8; - HDRlastDeviceId="4318,661,107156578"; - Gesamtschlüssel der InformationenlocalVRAM=527429632; - GrafikkartenspeichernonlocalVRAM=260046847; - Vom MB zugewiesener Shaderspeicher

300

Page 300: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 11

301

Die nun folgend aufgeführten Cheats für Armed Assault sind in dem Sinne eigentlich garkeine Cheats. Zumindest verschaffen sie dem Spieler beim Spielen, mal abgesehen vondem Cheat Savegame, nicht unbedingt einen Vorteil. Dennoch sind sie in gewisserHinsicht nette Features, welche ab und dann von Nutzen sein können.

Alle nun folgend erklärten Cheats erfordern folgende Vorgehensweise. Dazu hält mandie linke Shift-Taste gedrückt und klickt kurz die Minus-Taste (-) auf demNummernblock. Dann den angegebenen Code mit gedrückter Shif-Taste eingeben. Wardies erfolgreich, erscheint oben links am Bildschirmrand eine kurze Einblendung deszuvor eingegebenen Codes als Bestätigung. Wichtig zu wissen ist, dass für die Eingabe desCodes keine Eingabezeile erscheint. Man gibt diesen also blind ein und bekommt danneben die Bestätigung durch die Einblendung.

CAMPAIGN - Schaltet die Kampagne komplett frei, ohne dass man diese durch-spielen muss. Dazu muss man zunächst auf die Kampagnen über-sicht wechseln und gibt dann den Code ein.

MISSIONS - Schaltet die Missionen komplett frei, ohne dass man zunächst eineandere gespielt haben muss, damit die nächste freigeschaltet wird.Dazu wechselt zunächst in die Missionsübersicht und gibt dann denCode ein.

ENDMISSION - Gibt man diesen Code während einer Mission an, wird diese beendet.

SAVEGAME - Speichert den aktuellen Spielstand beim Spielen einer SP-Mission.

TOPOGRAPHY - Generiert eine Map im EMF-Vektor-Format und hinterlegt diese im Verzeichnis C:\. Die Datei wird generiert, wenn man nach der Eingabe das nächste Mal auf die Map wechselt. Vorsicht bei verstellter Tastatur!Dann wird das als Z gesehen. Dazu dann TOPOGRAPHZ eingeben.

FLUSH - Löscht unnötige Dateien, Texturen und Objekte aus RAM-Speicher

Einzelspielermissionen freischaltenDie Einzelspielermissionen lassen sich auch auf andere Art und Weise freischalten. Dieserfordert die Editierung des eigenen ArmA-Profiles. Dazu wechselt man zunächst in deneigenen Profilordner, öffnet anschließend die Datei Username.ArmAProfile mit demTexteditor und trägt dort die noch nicht vorhandenen aktive Keys mit ein.

Das Ganze muss am Ende dann etwa so aussehen:

activeKeys[]= { "M00", "M01", "M02", "M03", "M04", "M05", "M06", "M07", "M08", "M09", "M10", "TT01", "TT02", "TT03", "TT04", "TT05", "TT06" };

Nach dem Speichern der Änderung, wird diese sofort wirksam und bleibt bestehen.

11.2 - Die ArmA-Cheats

Page 301: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Die Verwendung von MOD-Ordnern gewährleistet eine bessere Übersicht bei derBenutzung von MOD´s und Addons. Zudem hat man dann die Wahl, welche Addons manmitladen möchte und welche nicht. Viele Addons aus der Community beinhaltenfehlerhafte Configs, welche sich dann mit in die Mission.sqm eintragen, ohne dass mandas Addon überhaupt darin verwendet hat. Hinzu kommt, dass sich die Ladzeit des Spielsunnötig in die Länge zieht, wenn man jedes Mal alle Addons mitladen muss, obwohl mansie gerade nicht benötigt. Deshalb verwendet der schlaue Arma-Spieler MOD-Ordner!

MOD-Ordner kann man unterschiedlich benutzen. Hier mal eine Anregung:

Missionsbezogen @MeineMission

Themenbezogen @IIWeltkrieg

MOD-bezogen @ECP-MOD

Die Namen der Ordner sind dabei variabel benennbar. Außer bei MOD´s, die javorgegeben sind, kann man jeden Namen frei vergeben. Bei den oberen Anregungen istzum Beispiel ein Ordner Namens @MeineMission.

In diesen kommen nun alle Addons, die man in seiner Mission verwendet hat. Der Vorteilist nun, dass man diesen jetzt mit zum Download anbieten kann, damit sich die Spielerder Mission nicht erst alle Addons mühevoll zusammensuchen müssen.

Der Spieler hat jetzt beim Spielstart die Wahl, ob er die Addons mitlädt oder nicht. Möchteer die Mission gerade nicht spielen, braucht er auch die Addons nicht zu laden und spartsomit Zeit und Performance.

Das Anlegen eines MOD-OrdnersEinen MOD-Ordner legt man direkt im Spielverzeichnis von ArmA an und gibt ihm einenpassenden Namen. Jetzt öffnet man seinen MOD-Ordner und erstellt darin einen Ordnernamens Addons. In diesen Unterordner kommen nun alle Addons, die man für seineMission, oder was auch immer, benötigt.

302

11.3 -Der MOD-Ordner

Page 302: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 11

303

Vor den Namen Mapfact wurde ein @ gesetzt, damit der MOD-Ordner im ArmA-Verzeichnis gleich ganz oben mit angezeigt wird. Benennt man nun alle Ordner zuerstmit dem @, werden alle entsprechend sortiert angezeigt und man sieht gleich, was einMOD-Ordner ist und was nicht. Natürlich kann man auch ein anderes Zeichen oder wasauch immer benutzen. Dies ist lediglich eine Anregung.

Das Laden eines MOD-OrdnersMöchte man einen MOD-Ordner laden, kann man dies durch das Hinzufügen einesParameters in einer eigens dafür erstellten Verknüpfung zur ArmA.exe realisieren oderman nutzt einen ArmA-Launcher, welchen es im Internet zum Download gibt. Zweiteresist natürlich die elegantere Lösung. Hier jedoch der Parameter, mit welchem man dieVerknüpfung ergänzt.

Um diesen nun in die Verknüpfung mit einzufügen klickt man mit der rechten Maustasteauf die Verknüpfung und passt diese entsprechend an:

D:\ArmA\arma.exe -mod=@MAPFACT

Diese Verknüpfung könnte man jetzt ArmA-Mapfact oder ähnlich benennen.

Addons sind eine nette Sache, erweitern ArmA ungemein und gestalten es auf lange Sichtgesehen wesentlich interessanter. Ganz klar, dass diese natürlich auch in einer Missionnicht fehlen sollten. Doch dabei gibt es einiges zu beachten, was nun hier erläutert wird.

Möchte man Addons in seiner Mission verwenden, sollte man darauf achten, dass diesenicht zu performanceunfreundlich sind. Viele Addonbastler vergessen gerade diePerformance nur zu gerne. Es werden oft Unmengen an Polygonen und unnötig großeTexturen für Dinge verwendet, die meistens eher unwesentlich sind. Größtenteils lässtsich all das meistens viel performancefreundlicher, also somit mit weniger Polygonen undkleineren Texturen umsetzen.

Hat man sich nun das richtige Addon rausgesucht steht dem Editing nichts mehr im Weg.Jetzt sollte man nur noch darauf achten, dass man nicht zu viele Mods und Addons für nureine Mission verwendet. Die Spieler müssen sich dann oft die Addons zusammensuchenund ewig runterladen. Nach all der Mühe folgt dann oft die Enttäuschung, dass dieMission schlecht umgesetzt ist oder so gut wie gar nicht spielbar ist, weil eben zu vieleAddons verwendet wurden, die nicht gut zusammenarbeiten.

Also immer daran denken… weniger ist mehr! Nicht die Anzahl der verwendeten Addonsin einer Mission ist wichtig, sondern viel mehr die Umsetzung, Funktionalität, Story undvor allem die Spielbarkeit!

11.4 - Die Verwendung von Addons

Page 303: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

304

Hat man seine Mission nach einigen Nervenzusammenbrüchen und etwas mehr oderweniger investierter Zeit nun endlich fertig gestellt, steht die Veröffentlichung dieser vorder Tür. Endlich will man sein Werk der Öffentlichkeit präsentieren und für seine Arbeit einanständiges Feedback bekommen. Doch auch hierbei gibt es einige nicht geradeunwesentliche Dinge zu beachten. Es ist unwichtig, ob die Mission heute oder morgenkommt. Lieber einen Tag länger testen und ein vernünftiges Ergebnis abliefern, als einehalbfertige Mission.

Testen, testen, testen Die Mission sollte bis ins Detail auf Funktionalität undSpielbarkeit von dir und deinen Freunden oder Bekanntengetestet werden.

Story und Ablauf Die Mission sollte eine gute Story und einen schlüssigenAblauf haben. Der oder die Spieler müssen immer wissen,was als nächstes ansteht und sollten durch die Story unddie Spannung ein wenig in den Bann gezogen werden.

Die Readme Bei deiner Mission sollte mindestens eine Readmeenthalten sein. Darin sollte stehen, von wem die Missionist, vielleicht eine Kontaktemailadresse, die verwendetenAddons mit Downloadlink, einige Hinweise zur Missionund ggf. eine Aufführung aller bekannten Bugs, die maneinfach nicht gefixt bekommen hat.

Verwendete Addons Idealerweise bietet man mit der Mission einen MOD-Ordner zu seiner Mission mit an. Dieser sollte dann allekleineren Addons enthalten, die in der Mission verwendetwurden. Für größere Mods oder ähnliches kann mangerne einen Downloadlink angeben.

Das Paket Am Ende sollte das Ganze als Rar- oder Zip-Datei gepacktwerden und mindestens folgendes beinhalten:

die Mission.pbo, eine Readme und den Modordner

Wenn du die zuvor erwähnten Punkte einigermaßen befolgt hast, sollte deinem Releaseund dem Erfolg deiner Mission jetzt nichts mehr im Wege stehen.

Also dann viel Erfolg für deinen ersten Missionsrelease!

11.5 - Der Missionsrelease

Page 304: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 11

305

Die ArmA.rpt ist die Fehlerreportdatei von Armed Assault. Die Engine hinterlegt hierwichtige Informationen. Wenn ArmA beispielsweise mal wieder einen CTD (Crash ToDesktop) herbeigeführt hat, kann man darin nachsehen, wo der Fehler gelegen hat. AlsBeispiel dient hier die Description.ext, mit der wohl die meisten Editierer ab und dannwieder auf dem Desktop landen und sich dann fragen, was denn nun falsch sein könnte.Ein Blick in die ArmA.rpt verweist dann auf den Fehler.

In dieser Datei werden unter anderem Fehler von:

- Missionen

- Skripten

- Funktionen

- Addons

hinterlegt. Dies könnten fehlende Zeichen, Texturen, Modelle, Materialien oder auchConfigfehler sein. Die ArmA.rpt ist aber nicht nur eine Fehlerreportdatei. Sie kann auch alsLog-Datei gesehen werden. Unter anderem sind hier auch

- Statusänderungen von Einheiten und Objekten

- Statusänderungen Spieler

- Multiplayeraktivitäten

und vieles mehr zu finden. Sie ist somit der optimale Wegweiser bei Fehlern und so weiter.

Möchte man also seine Mission oder sein Addon veröffentlichen, lohnt sich zuvor immernochmal ein Blick in die Rpt. Denn dort kann man sehen, ob es eventuell noch Fehlergibt, die sich nicht unmittelbar und sichtbar bemerkbar machen.

Es empfielt sich, diese Datei ab und dann zu leeren oder ganz zu löschen. ArmA wird diesedann wieder neu anlegen. Diese Datei lässt sich dabei ganz normal mit dem Texteditoröffnen. Folgend mal ein kleiner Auschnitt:

Die ArmA.rpt findet sich, wenn man mit -profile, wie im Kapitel 11.1 erläutert,arbeitet,normalerweise im ArmA-Root-Verzeichnis. Ansonsten unter:

C:\Dokumente und Einstellungen\User\Anwendungsdaten\ArmA

No more slot to add connection at De61 (6952.9,8228.9)Client: Object 8:57 (type UpdatePositionVehicle) not found.*** Remote: Identity Mr-Murray transferred from 8:98 to 8:120File update_v1\RscDefine.hpp, line 0: '.100': Missing ';' at the end of lineFile update_v1\RscDefine.hpp, line 0: '.120': Missing ';' at the end of lineUpdating base class ->Helicopter, by ca\air\config.bin/CfgVehicles/UH60MG/

11.6 - Die ArmA.rpt

Page 305: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

306

A Alpha

B Bravo

C Charlie

D Delta

E Echo

F Foxtrott

G Golf

H Hotel

I India

J Juliett

K Kilo

L Lima

M Mike

N November

O Oskar

P Papa

Q Quebec

R Romeo

S Sierra

T Tango

U Uniform

V Viktor

W Whisky

X X-Ray

Y Yankee

Z Zulu

11.7 - Das Natoalphabet

Page 306: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 11

307

Folgend nun die Dienstgradabzeichen verschiedener NATO-Länder. Natürlich gibt es indem ein oder anderen Land noch diverse andere Dienstgrade, aber das würde hier jetztden Rahmen sprengen.

Deutschland USA Großbritanien FrankreichMannschaftenGefreiterObergefreiterHauptgefreiterStabsgefreiterOberstabsgefreiter

Private---Private First Class------

Private---Lance Corporal------

Premiére ClasseCaporalCaporal Chef------

UnteroffiziereUnteroffizierStabsunteroffizierFeldwebelOberfeldwebelHauptfeldwebelStabsfeldwebelOberstabsfeldwebelFahnenjunkerFähnrichOberfähnrich

Corporal ---SergeantStaff SergeantSergeant First ClassMaster SergeantSergeant Major---Cadet---

Corporal ---SergeantStaff Sergeant---Warrant Officer Class 2Warrant Officer Class 1---Officer Cadet---

SergentSergent ChefAdjudant---Adjudant ChefMajor------Aspirant---

OffiziereLeutnantOberleutnatHauptmannMajorOberstleutnantOberstBrigadegeneralGeneralmajorGeneralleutnantGeneral

Second LieutnantFirst LieutenantCaptainMajorLieutenant ColonelColonelBrigadier GeneralMajor GeneralLieutenant GeneralGeneral/Field Marshal

Second LieutnantLieutenantCaptainMajorLieutenant ColonelColonelBrigadierMajor GeneralLieutenant GeneralGeneral/General of Army

Sous LieutenantLieutenantCapitaineCommandantLieutenant Colonel---Général de BrigandeGénéral de DivisionGénéral de Corps d´Armee

Général d´Armee

11.8 - Die Dienstgradabzeichen

Page 307: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Die Squad.xml eignet sich hervorragend um auf dem Schlachtfeld eine Zuordnung fürverschiedene Clans zu schaffen. Hiermit ist es möglich jedem Spieler eines Clans ein Logozuzuweisen. Dazu macht es natürlich Sinn, wenn jedes Teammitglied das gleiche Logobenutzt. Natürlich kann man auch als einzelner Spieler, wenn man nicht Mitlied einesClans ist, ein eigenes Logo verwenden. Das Logo wird später dann ingame auf Fahrzeugenetc. angezeigt (siehe Bild).

Das Benutzen einer Squad.xml erfordert ein paar Voraussetzungen. Man benötigt dafüreinen Server, auf dem die nun folgend aufgeführten Dateien abgelegt werden können.Dazu legt man auf seinem Server ein neues Verzeichnis an und legt die zugehörigenDateien dort ab, welche man vorher seinen Bedürfnissen angepasst hat, was dann alsnächstes erklärt wird.

Abzulegende DateienAbzulegende Dateien sind hierbei:

squad.xmlsquad.csssquad.dtdsquad.xslsquadpic.paa

Hierbei merkt man sich die URL, welche man später etwa so aussehen könnte:

http://www.meinserver.de/armaxml/squad.xml

308

11.9 - Die Squad.xml

Page 308: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 11

Diese gibt man dann später, wie auf dem folgenden Bild zu sehen, bei Squad URL an.

Player IDEine weiterer wichtiger Punkt ist die Player ID, welche unten rechts im Bild zu sehen ist.Jeder Spieler hat eine eigene ID, welche in der Squad.xml definiert werden muss.

Die KonfigurationDie einzigsten Dateien, welche hierbei bearbeitet werden müssen sind die Squad.xmlund die Squadpic.paa. Die anderen sind dabei eher unwichtig, aber müssen derFunktionalität halber auf dem Server liegen.

Squad.xmlIn ihr wird die eigentliche Konfiguration vorgenommen. Hierbei wird im oberen Abschnittdie Squad definiert und im unteren Abschnitt die einzelnen Spieler.

<Squad Nick> - Squadabkürzung (Clan-Tag)<Name> - Squadname<EMail> - Squadkontakt<Web> - Squadwebseite<Picture> - Bild (Squadpic.paa)<Title> - Squadname

Diese Datei keinesfalls mit Excel, sondern mit dem Texteditor bearbeiten!

309

Page 309: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Im unteren Abschnitt wird der Spieler definiert:

<Member ID> - Player ID (siehe Profilbild)<Nick> - Nickname (Profilname)<Name> - Name<EMail> - Spielerkontakt<ICQ> - IM-Kontakt<Remark> - Bemerkung

In einer fertigen Datei sieht das Ganze dann etwa so aus:

Squadpic.paaDie Squadpic.paa ist das Logo, welches hinterher im Profil angezeigt wird. Dieses ist abernicht zwingend vorgeschrieben und man kann es also auch weglassen. Wenn man esaber haben möchte, muss es auf jeden Fall im gleichen Ordner liegen, wie die Squad.xml!Squadpic ist hierbei wieder ein variabler Name. Benennt man die Datei anders, mussman das logischerweise auch in der Squad.xml anpassen.

Möchte man nun ein eigenes Squadlogo erstellen, macht man das mit einemGrafikprogramm. Dazu erstellt man zunächst ein neues Bild im TGA-Format und legt dieMaße fest, welche wie folgt lauten können:

16/16, 32/32, 64/64, 128/128, 256/256

Anschließend gestaltet man sein Logo den eigenen Wünschen entsprechend undspeichert das Ergebnis ab. Mit dem Programm TexView läd man sein Logo dann undspeichert es anschließend als PAA-Datei.

<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE squad SYSTEM "squad.dtd"><?xml-stylesheet href="squad.xsl?" type="text/xsl"?>

<squad nick="MAP"><name>Mr-Murray</name><email>[email protected]</email><web>www.mr-murray.de.vu</web><picture>squadpic.paa</picture><title>Mr-Murray</title>

<member id="12345678" nick="Mr-Murray"><name>Mr-Murray</name><email>[email protected]</email><icq>N/A</icq><remark></remark>

</member></squad>

310

Page 310: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

ErgebnisDrückt man nun später ingame in einer Mehrspielermission egal ob Hostet oderDedicated die P-Taste, wird folgendes Ergebnis angezeigt:

TemplateEin downloadbares Template findet man auf

www.mr-murray.de.vu

Dieses muss man dann, wie zuvor erklärt, lediglich seinen Bedürfnissen anpassen.

Für Armed Assault gibt es zahlreiche Startparameter, die sich an die ArmA.exe oder eineentsprechende Verknüpfung zur ArmA.exe anhängen lassen. Mit diesen Parameten hatman nun eine Menge Vorteile. Ein Vorteil, der wohl mit am beliebtesten ist, ist der, ArmAim Fenstermodus starten zu lassen oder die Voreinblendungen abzuschalten. Folgendnun eine kleine Übersicht der wichtigsten Parameter. Weitere finden sich in der BIS-Wiki.

Bildschirm Optionen

-window - Startet ArmA im Fenstermodus-nosplash - Startet Arma ohne Voreinblendungen-x=Wert - Auflösungsbreite-y=Wert - Auflösungshöhe

Kap

itel 11

311

11.10 - Die Startparameter

Page 311: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Verschiedene Optionen

-nomap - Startet ArmA nur mit benötigten Addons-noland - Startet ArmA ohne Insel- buldozer - Startet ArmA im Buldozer Mode-init= - -init=playMission[,'M04Saboteur.Sara']-profiles= - Bestimmt den Userordner (-profiles=F:\ArmA\)-name=Username - Lädt das jeweilige Benutzerprofil-noPause - Spiel läuft auch im Hintergrund weiter-maxMem=Wert - Maximale Speichermenge (MB)-world=Sara - Lädt die angegebene Insel

(Sara=Sahrani, Intro=Rahmadi, Empty=keine)-mod=@ΟΟrdner - Lädt den angegebenen MOD-Ordner mit

Netzwerk Optionen

-port= - Port zum Server (Local Host bzw. Dedicated Server)-password= - Passwort zum Dedicated Server-host - Startet einen Host-Server-server - Server einen Dedicated Server-connect= - Server zu dem verbunden werden soll-netlog - Aktivert das Protokolieren der Netzwerkaktivität-cfg= - Auswahl einer Cfg-Datei

Einbindung eines Parameters

Einen Parameter hängt man an die ArmA.exebzw. einer extra dafür angelegten Verknüpfung.Dazu klickt man mit der rechten Maustaste aufdie Exe und wählt die Egenschaften aus.

Jetzt öffnet sich ein solches Fenster, wie rechtszu sehen ist. Bei Ziel gibt man dann diejeweiligen Parameter an und Speichert dasGanze.

Hier mal ein Beispielparameter:

C:\ArmA\arma.exe -nosplash -nomap

Man hat auch die Möglichkeit verschiedeneVerknüpfungen anlegen, die man dannindividuell konfigurieren kann.

Jedoch sparen Community-Tools, wie etwa einArma-Launcher, eine Menge Arbeit, da mandamit noch viel übersichtlicher Arbeiten kann.

312

Page 312: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Kap

itel 11

313

Wie auch in jedem anderen Programm, gibt es auch im Armed Assault Editor diverseTastenkombinationen, Kniffe und Tricks, die ein schnelleres Editieren ermöglichen.

Tastenkombinationen

[STR] und [C] - Kopieren einer Einheit/Objekt[STR] und [X] - Ausschneiden einer Einheit/Objekt[STR] und [V] - Einfügen einer Einheit/Objekt[Entfernen] - Löscht markierte Einheit/Objekt[Shift] und [Entfernen] - Löscht alle markierten Einheiten/Objekte[Shift] und [linke Maustaste] - Einheiten drehen

(Tasten gedrückt halten und Maus bewegen)

[Shift] und [linke Maustaste] - Einheit mit Wegpunkt bearbeiten(F1 wählen, Shift gedrückt halten und linke Maus drücken)

[Linke Maustaste] - Einheit/Objekt verschieben /Bereich markieren(Tasten gedrückt halten und Maus bewegen)

[Linke] und [rechte Maustaste] - Karte Bewegen(Tasten gedrückt halten und Maus bewegen)

[Mausrad] - Karte ran- oder wegzoomen

TemplatesGenerell lohnt es sich für gewisse Missionsinhalte so genannte Templates zu erstellen.Wenn man zum Beispiel eine Stellung oder ähnliches gebaut hat, muss das ja nichtunweigerlich heißen, dass diese nur für die eine Mission zu gebrauchen ist. Oder andereDinge wie Zufallspositionen etc.

Erstellt man sich für jedes Missionsfeature ein rohes Template, hat man so die Möglichkeites jederzeit schnell in seine aktuelle Mission zu importieren und zu verwenden. Man spartsich damit definitiv eine Menge Zeit, welche man dann sinnvoller nutzen kann. Dazuerstellt man sich einfach eine simple Mission mit dem jeweiligen Inhalt, etwa der Stellungund speichert sie zum Beispiel als Editormission mit Namen _Temp_Bunker ab.

Templates IIHat man eine große und komplexe Mission geschaffen, kommt es oft vor, dass manplötzlich noch eine tolle Idee hat, die unbedingt mit implementiert werden soll. ZumBeispiel eine neue Basis oder wie auch immer. Also etwas, wo man wieder ein wenigbauen, verschieben und in die Vorschau wechseln muss. Bei der Mission wäre es dann so,dass beim Start ja alles gestartet wird, was man zuvor darin definiert hat.

Dafür lohnt es sich eine neue Map (Template) zu erstellen, auf der man diese Basis nunohne ablenkendes Drumherum bauen kann, nach der Fertigstellung speichert man dieseeinfach als Editormission, wechselt zu seiner Hauptmission und nutzt die Importfunktion „Zusammenführen“, um das Template in seine Mission zu importieren.

11.11 - Tastenkombinationen, Tipps und Tricks

Page 313: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

ABezeichnung Kapitel Seite

Abgefeuerter Typ ausgeben lassen 3.16 92Actionbefehl 5.55 136Actionmenüeintrag 6.3 181Airstrike 6.12 198Airvehiclecreator 6.13 201Alarm 5.32 119Allgemeines MP 7.19 247Animationsbefehl 5.56 139Arma.rpt 11.6 305Array 9.12 271Artillerie 6.7 189Aufklärer 6.22 217Auslöser und Wegpunkte synchronisieren 1.6 35Auslöser einfügen 1.4 27Auslöser erzeugen 5.69 160Auslöserbereich prüfen 5.26 115Auslöserbereiche addieren 5.26 115

BBezeichnung Kapitel Seite

Bedingung Tod 5.33 120Beendigung einer Mission 4.6 101Befreundete Parteien 5.31 118Bekanntheitsgrad einer Einheit 5.29 117Bereich prüfen 5.26 115Bewaffnung im MP 7.21 250Bombe erzeugen 5.46 126Bombenleger 6.21 216Briefing 2.13 59Briefingzubehör 4.3 98Bullet Mode 6.10 196

CBezeichnung Kapitel Seite

Camskripting 8.1 255Capture The Flag 7.17 240Cheats 11.2 301Class Header 7.11 233

314

Stichwortverzeichnis

Page 314: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Stichwo

rt-verzeich

nis

315

DBezeichnung Kapitel Seite

Datum und Uhrzeit einstellen 5.43 123Deathmatch 7.6 227Delay 9.7 269Description.ext 2.3 48Dialoge 10.1 279Dienstgrad vergeben 5.76 171Dienstgradabzeichen 11.8 307Distanz zweier Einheiten oder Objekte 5.34 120

EBezeichnung Kapitel Seite

Editoroberfläche 1.1 16Eigenes Profil 11.1 299Einheiten/Fahrzeuge einfügen 1.2 20Einheiten/Fahrzeuge erzeugen 5.45 124Einheiten bewaffnen und ausrüsten 3.3 70Einheiten und Objekte drehen 5.15 111Einheiten verbinden 1.9 39Einheit begibt sich in Gebäude 5.19 112Einheit bleibt stehen 5.10 109Einheit bewegt sich zu Bestimmungsort 5.12 110Einheit ergibt sich 6.23 218Einheit hat Waffe 3.17 92Einheit mit Wegpunkten bearbeiten 1.10 40Einheitsklassen 3.9 77Einheit in Fahrzeug 5.4 107Einheiten starten bzw. stoppen 5.11 111Einheiten zu Missionsbeginn im Fahrzeug 5.6 108Ein- und aussteigen lassen 5.7 108Einheit verlässt Gruppe und tritt anderer bei 5.20 113Einheit wählt Waffe 5.23 114Einheit wendet sich anderer Einheit zu 5.22 114Einheit ein Ziel zuweisen 5.21 113Einheiten in einem Bereich ansprechen 5.27 115Einheitsstatus speichern oder laden 5.28 116Einheit begibt sich zu Gebäudeposition 5.63 153Eventhandler 5.65 155Explosionen , Rauch und Flares erzeugen 5.46 126

Page 315: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

316

FBezeichnung Kapitel Seite

Fahne vergeben 5.35 120Fahrzeugklassen 3.7 73Fahrzeugwaffen 3.8 76Fahrzeuge be- und entladen 3.5 71Fahrer/Beifahrer eines Fahrzeugs 5.2 106Fahrzeugverbot für Einheit 5.3 106Fahrzeug fährt erst, wenn Einheit eingestiegen ist 5.6 108Fallschirmspringer 6.1 179Fahrzeug Respawn 7.14 235Fahrzeug Respawn (Mr-Murray) 7.15 236Fehlerreportdatei / Arma.rpt) 11.6 305Feindmeldeskript 6.11 197Fernglasbenutzung durch Einheit 5.77 172Feuer (brennend/erloschen) 5.36 121Feuer erzeugen (Skriptversion) 5.75 169Flexible Respawnpunkte 7.3 225Freundlicher Feind 5.30 117Flaggen Grundinformationen MP 7.16 238Flares, Rauch und Explosionen erzeugen 5.46 126Fluchtverhalten einer Einheit oder Gruppe 5.14 110Flughöhe einer Einheit 5.17 112Funkmenu verändern 5.48 127Funkspruch abgeben 5.50 129Funktionen Grundwissen (SQF) 9.13 274

GBezeichnung Kapitel Seite

Gebäudepositionen 5.62 148Geschwindigkeit einer Einheit/Fahrzeug 5.8 108Geschwindigkeit ausgeben lassen 5.9 108GPS-System 6.2 180Grafikformate (Paa/Pac) 2.8 55Gruppen erzeugen 5.45 124Gruppe zu Missionsbeginn im Fahrzeug 5.6 108

Page 316: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Stichwo

rt-verzeich

nis

317

HBezeichnung Kapitel Seite

Helikopterlandung 5.64 153Höhenversetzung eines Objektes 5.16 111House-Patrol-Skript 6.16 205

IBezeichnung Kapitel Seite

Identität festlegen 5.53 134ID´s verwenden 5.59 144If-Then-Else 9.6 268Informationstext 5.59 144Init.sqs 2.5 53Insektenskript 6.20 215

JBezeichnung Kapitel Seite

Jahreszahl, Datum festlegen 5.43 123

KBezeichnung Kapitel Seite

Kameraeffekte 8.7 262Kamerasteuerung 8.1 255Kamerakoordinaten 8.2 256Kamera erstellen 8.3 257Kamera an Fahrzeug oder Einheit heften 8.5 260Kartenanimation 8.9 263KI abschalten 5.57 144Klammereigenschaften 9.10 270Karte auf den Monitor erzwingen 5.40 121

LBezeichnung Kapitel Seite

Laternen abschalten 5.61 145Leeres Fahrzeug 5.1 106Leerer Scheinwerfer mit Licht 5.86 177Lichtquellen erzeugen (Skriptversion) 5.72 167Liegen, knien und stehen 5.60 144Lip-Dateien 2.11 57Löschen von Einheiten und Objekten 5.45 124Logische Operatoren 9.3 267

Page 317: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

318

MBezeichnung Kapitel Seite

Mapclick 6.6 187Marker einfügen 1.7 36Marker erzeugen 5.70 162Marker mit Einheiten verbinden 1.9 39Minen-Skript 6.17 208Mimiken 5.54 135Missionsordner 2.1 42Mission.sqm 2.2 43Missionsname 4.1 97Missionsstart 4.2 97Missionszubehör 4.3 98Missionswertung 4.4 99Missionsziele 4.5 99Mission beenden 4.6 101Mission speichern 4.7 103Missionsrelease 11.5 287MOD-Ordner 11.3 302Möwen-Skript 6.19 213Munitionskiste 3.4 71Multiplayer-Allgemeines 7.19 247Multiplayer-Bewaffnung 7.21 250Multiplayer-Description.ext 7.4 226Multiplayerbereich festlegen 7.7 228Musik oder Sound einbinden 5.52 130

NBezeichnung Kapitel Seite

Natoalphabet 11.7 306Nachladen verbieten 3.19 93

OBezeichnung Kapitel Seite

Objekt- und Gebäudeklassen 3.11 81Objekte Versetzen oder höher setzen 5.16 111Overview 2.12 58

Page 318: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Stichwo

rt-verzeich

nis

319

PBezeichnung Kapitel Seite

Patrouille laufen, fahren oder fliegen 5.13 110PBO-Datei 2.9 56Pflanzenklassen 3.12 88Profileigenschaften 11.1 299Positionen (xyz) auslesen 5.64 153Publicvariable 7.18 246Punktvergabe MP 7.8 229Punkte vergeben bzw. anzeigen lassen MP 7.9 231

QBezeichnung Kapitel Seite

RBezeichnung Kapitel Seite

Random 9.8 269Rauch erzeugen (Skriptversion) 5.74 168Rauch, Flares und Explosionen erzeugen 5.46 126Respawnpunkte 7.2 224Respawnarten 7.5 227Respawndialog 7.12 233Rufzeichen vergeben 5.49 128Rund ums Vehikel 5.71 165Rucksack 6.4 181

SBezeichnung Kapitel Seite

Schadenwert vergeben 5.24 114Scheinwerfer 6.14 203Schilderklassen 3.14 91Seiten verfeinden 5.31 118Sekundär- oder Primärwaffe 3.18 93Semikolon 9.11 81Setvelocity 5.58 144Shellklassen 3.10 80Sichtweite ändern 5.41 122Skript (.sqs) 2.6 54Staub erzeugen 5.73 167

Page 319: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Sound erstellen 5.51 129Sound oder Musik einbinden 5.52 130Spielerseite auslesen 5.38 121Spielereingabe unterdrücken 5.39 121Speichern 4.7 103Spielbeschleunigung unterdrücken 6.9 181Spielerbezogene Textmitteilung 7.22 251Spielbare Einheit hinzufügen 5.37 121Squad.xml 11.9 308Startparameter 11.10 311Staub erzeugen 5.73 167Stehen, knien und liegen 5.60 144Steinklassen 3.13 90Streifen laufen, fahren oder fliegen 5.13 110Stringtable.csv 2.4 51Stringtable Grundwerte 5.67 158Stringtable Grundwerte MP 7.13 234Sychronisieren 1.6 35

TBezeichnung Kapitel Seite

Tote Einheiten/Fahrzeuge löschen 6.8 194Todeszone erstellen 5.25 115Texteinblendarten 5.66 157Text- und Einblendeffekte 8.6 261

UBezeichnung Kapitel Seite

Unzerstörbares Objekt 5.61 145Umgebungssound abschalten 8.7 262

VBezeichnung Kapitel Seite

Variable 9.1 265Vehikeltransport-Skript 6.18 209Verschlossenes Fahrzeug 5.1 106Versetzen von Objekten, Auslösern und Markern 5.15 111Verwendung von Addons 11.4 303

320

Page 320: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Stichwo

rt-verzeich

nis

321

WBezeichnung Kapitel Seite

Waffen und Magazine erzeugen 3.21 94Waffen und statische Waffen 3.1 64Waffenwahl einer Einheit 5.23 114Waffenauswahl im Briefing 3.6 72Waffen der Fahrzeuge 3.8 76Waffen- und Magazintypen ausgeben lassen 3.15 92Waffenbezeichnungsliste 3.2 68Waffen und Munitionskiste 3.4 71Wahrheitswerte 9.2 266WaitUntil 9.9 269Wegpunkte einfügen 1.5 30Wegpunkte erzeugen 5.68 159Wegpunkte und Auslöser synchronisieren 1.6 35Wetter einstellen 5.42 122While-Do-Schleife 9.4 268

XBezeichnung Kapitel Seite

XYZ-Positionen auslesen 5.64 155

YBezeichnung Kapitel Seite

ZBezeichnung Kapitel Seite

Zähler 9.5 268Zeitanzeige im Multiplayer 7.8 229Zeitlupe oder Zeitsprint 5.44 123Zeitzähler 6.15 204Zielzuweisung für eine Einheit 5.21 113Zufallsanimation 5.56 139Zufallsmusik 5.52 130Zufallspositionen 1.9 39Zufallspositionen 6.5 185Zufallswetter 5.42 122Zuwendung einer Einheit 5.22 114

Page 321: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

322

ABezeichnung Kapitel Seite

Active 4.5 99Action 5.55 136AddAction 6.3 181AddEventhandler 5.65 155AddRating 4.4 99AddSwitchableUnit 5.37 121AddWeapon 3.3 70AddMagazine 3.3 70AddWeaponCargo 3.4 71AddWaypoint 5.68 159AddMagazineCargo 3.4 71AIKills 7.4 226Alive 5.71 165AllowGetin 5.3 106AllowFleeing 5.14 110And 9.3 267Animate 5.61 145AnimationState 5.56 139AssignAsCargo 5.78 172AssignAsCommander 5.78 172AssignAsDriver 5.78 172AssignAsGunner 5.78 172AssignTeam 5.79 173AssignToAirport 5.82 175AssignedVehicle 5.78 172AssignedVehicleRole 5.78 172AVGScore 4.4 99

BBezeichnung Kapitel Seite

BuildingPos 5.62 148

CBezeichnung Kapitel Seite

Call 9.13 274CamUseNVG 8.7 262CanMove 5.81 174CanFire 5.81 174CanStand 5.81 174

Syntaxverzeichnis

Page 322: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Syntax-

verzeichn

is

323

Case 9.3 267Ceil 9.3 267ClearWeaponCargo 3.4 71ClearMagazineCargo 3.4 71CloseDialog 10.9 292CommandTarget 5.21 113CommandFire 5.80 174CommandMove 5.80 174CommandStop 5.80 174CommandTarget 5.80 174Compile 9.13 274ComposeText 8.6 261Count 9.3 267CreateDialog 10.9 292CreateGroup 5.45 124CreateMarker 5.70 162CreateMine 3.20 93CreateSoundSource 5.51 129CreateTrigger 5.69 160CreateVehicle 5.45 124CreateVehicleLocal 5.45 124CreateUnit 5.45 124Crew 5.71 165CutRsc 10.7 289CutText 8.6 261

DBezeichnung Kapitel Seite

Damage 5.24 114Default 1.2 20DefValueParam 7.8 229DeleteMarker 5.70 162DeleteStatus 5.28 116DeleteVehicle 5.47 127DeleteWaypoint 5.68 159Driver 5.71 165Done 4.5 99DoFire 5.21 113DoGetOut 5.47 127DoMove 5.12 110DoStop 5.10 109

Page 323: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

324

DoTarget 5.21 113DoWatch 5.22 114DisableAI 5.57 144DisableUserInput 5.39 121DissolveTeam 5.79 173Distance 5.34 120

EBezeichnung Kapitel Seite

EnableAI 5.57 144EnableEnvironment 8.7 262EnableRadio 5.50 129EnableReload 3.19 93Enemy 5.31 118ExecVM 9.13 274ExitWith 9.13 274

FBezeichnung Kapitel Seite

FadeMusic 5.52 129FadeRadio 5.52 129FadeSound 5.52 129Failed 4.5 99Fire 5.21 113False 9.2 266Flag 7.16 238FlagOwner 7.16 238Floor 9.3 267FlyInHeight 5.17 112Format 5.66 157ForEach 9.3 267ForceMap 5.40 121ForceSpeed 5.71 165Fuel 5.71 165

GBezeichnung Kapitel Seite

GameType 7.11 233GetDammage 5.24 114GetDir 5.22 114

Page 324: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Syntax-

verzeichn

is

325

GetMarkerPos 1.7 36GetPos 5.22 114GetPosASL 5.64 153GetSpeed 5.8 108GlaceAt 5.22 114GlobalChat 5.50 129Goto 9.3 267Group 5.6 108GroupChat 5.50 129GrpNull 5.20 113Gunner 5.71 165

HBezeichnung Kapitel Seite

HandsHit 5.81 174HasWeapon 3.17 92Hidden 4.5 99Hint, HintC, HintCadet 5.59 144

IBezeichnung Kapitel Seite

If then else 9.6 268In 5.71 165InFlame 5.36 121IsEngineOn 5.71 165IsNull 5.71 165IsServer 7.19 247

JBezeichnung Kapitel Seite

Join 5.20 113

KBezeichnung Kapitel Seite

KnowsAbout 5.29 117

LBezeichnung Kapitel Seite

Land 5.18 112LandAt 5.82 175

Page 325: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

326

Leader 5.79 173LimitSpeed 5.71 165List 9.3 267Localize 5.66 157Local Player 7.19 247Local Server 7.19 247Lock, Locked 5.1 106LookAt 5.22 114LoadIdentity 5.53 134LoadStatus 5.28 116

MBezeichnung Kapitel Seite

Magazines 3.15 92MapAnimAdd 8.9 263MapAnimClear 8.9 263MapAnimCommit 8.9 263MapAnimDone 8.9 263MaxPlayers 7.11 233MaxScore 4.4 99MinPlayers 7.11 233MinScore 4.4 99ModelToWorld 5.15 111Move 5.12 110MoveInCargo 5.2 106MoveInCommander 5.2 106MoveInDriverMoveInGunner 5.2 106MoveInTurret 5.2 106

NBezeichnung Kapitel Seite

NearestBuilding 5.61 145NearestObject 5.61 145Not 9.3 267

OBezeichnung Kapitel Seite

ObjNull 5.21 113ObjStatus 4.5 99OnLoadIntro 4.2 97

Page 326: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Syntax-

verzeichn

is

327

OnLoadIntroTime 4.2 97OnLoadMission 4.2 97OnLoadMissionTime 4.2 97OnPlayerConnected 7.22 252OnMapSingleClick 6.6 187OrderGetIn 5.78 172

PBezeichnung Kapitel Seite

Player 9.1 265PlayMove 5.56 139PlayMusic 5.52 130PlaySound 5.52 130Position 5.64 153PreLoadCamera 8.8 262PreLoadMusic 8.8 263PreLoadObject 8.8 262PreLoadSound 5.52 130PreLoadTitleRsc 8.8 263PreLoadTitleText 8.8 263PreProcessFile 9.13 274PrimaryWeapon 3.18 93PublicVariable 7.18 246

QBezeichnung Kapitel Seite

RBezeichnung Kapitel Seite

Random 9.8 269Rank 5.76 171Rating 4.4 99RemoveAction 6.3 181RemoveEventhandler 5.65 155RemoveWeapon 3.3 70RemoveAllWeapons 3.3 70RemoveMagazine 3.3 70RemoveSwitchabeUnit 5.37 121Respawn 7.4 226

Page 327: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

328

RespawnDelay 7.4 226RespawnDialog 7.12 233RespawnVehicle 7.14 235RespawnVehicleDelay 7.14 235Reveal 5.29 117

SBezeichnung Kapitel Seite

Saving 4.7 103SaveGame 4.7 103SaveIdentity 5.53 134SaveStatus 5.28 116SaveVar 9.1 265Say 5.51 129ScriptDone 8.8 263SecondaryWeapon 3.18 93SelectLeader 5.37 121SelectPlayer 5.37 121SelectWeapon 5.23 114Server 7.19 247SetAccTime 5.44 123SetAirportSide 5.82 175SetAmmoCargo 1.2 20SetAperture 8.7 262SetBehaviour 1.5 30SetCaptive 5.30 117SetCombatMode 1.4 27SetDamage, SetDammage 5.24 114SetDate 5.43 123SetDir 1.2 16SetFace 5.53 134SetFace Animation 5.53 134SetFlagOwner 7.16 238SetFlagSide 7.16 238SetFlagTexture 5.35 120SetFog 5.42 122SetFormation 1.5 30SetFormDir 1.2 20SetFriend 5.31 118SetFuel 5.71 165SetFuelCargo 5.71 165

Page 328: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Syntax-

verzeichn

is

329

SetGroupID 5.49 128SetIdentity 5.53 134SetLightAmbient 5.73 167SetLightBrightness 5.73 167SetlightColor 5.73 167SetMarkerBrush 5.70 162SetMarkerColor 5.70 162SetMarkerDir 5.70 162SetMarkerPos 1.7 36SetMarkerShape 5.70 162SetMarkerSize 5.70 162SetMarkerText 5.70 162SetMarkerType 5.70 162SetMusicEffect 5.69 160SetMimic 5.54 135SetOverCast 5.42 122SetPos 5.15 111SetRadioMessage 5.48 127SetRain 5.42 122SetRank 5.76 171SetRepairCargo 1.2 20SetSkill 1.2 20SetSoundEffect 5.69 160SetSpeedMode 5.8 108SetTargetAge 1.2 20SetTerrainGrid 5.83 176SetTriggerActivation 5.69 160SetTriggerArea 5.69 160SetTriggerStatements 5.69 160SetTriggerText 5.69 160SetTriggerTimeOut 5.69 160SetTriggerType 5.69 160SetUnitAbility 1.2 20SetUnitPos 5.60 144SetVehicleAmmo 3.3 70SetVehicleArmor 5.24 114SetVehicleInit 1.2 20SetVehiclePosition 5.15 111SetVeloCity 5.58 144SetViewDistance 5.41 122SetWaypointType 5.68 159

Page 329: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

330

SetWaypointBehaviour 5.68 159SetWaypointCombatMode 5.68 159SetWaypointDescription 5.68 159SetWaypointFormation 5.68 159SetWaypointHousePosition 5.68 159SetWaypointPosition 5.68 159SetWaypointScript 5.68 159SetWaypointSpeed 5.68 159SetWaypointStatements 5.68 159SetWaypointTimeOut 5.68 159SetWaypointType 5.68 159ShowCinemaBorder 8.4 260ShowCompass 4.3 98ShowDebriefing 4.3 98ShowGPS 4.3 98ShowMap 4.3 98ShowNotePad 4.3 98ShowRadio 4.3 98ShowWatch 4.3 98ShowWaypoint 5.68 159Side 5.38 121SideChat 5.50 129SkipTime 5.43 123Sleep 9.7 269SomeAmmo 3.19 93Spawn 9.13 274SpeedIsNull 5.71 165Stop 5.11 109SwitchLight 5.61 145SwitchMove 5.56 139SwitchCamera 6.22 217

TBezeichnung Kapitel Seite

This 9.1 265ThisList 9.3 267Terminate 8.8 263TextParam 7.8 229Time 9.1 265TitleCut 8.6 261TitleFadeOut 8.6 261

Page 330: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

Syntax-

verzeichn

is

331

TitleText 5.66 157TitleParam 7.8 229TitleRsc 10.3 283True 9.2 266TypeOf 5.71 165

UBezeichnung Kapitel Seite

UnAssignTeam 5.79 173UnAssignVehicle 5.7 108Unlocked 1.2 20Unit, Units 5.6 108

VBezeichnung Kapitel Seite

ValuesParam 7.8 229Variable 9.1 265Vehicle 5.71 165VehicleChat 5.50 129Visible 4.5 99

WBezeichnung Kapitel Seite

WaitUntil 9.9 269Weapons 3.15 92WeaponDirection 3.22 95WeaponHolder 3.21 94While do 9.4 268

XBezeichnung Kapitel Seite

YBezeichnung Kapitel Seite

ZBezeichnung Kapitel Seite

Page 331: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

332

IMPRESSUM

Autor: Sascha “Mr-Murray” HoffmannWebseite: www.mr-murray.de.vu

Text, Layout und Design: Sascha HoffmannGrafik und Coverdesign: Sascha HoffmannLektorat: Sascha Hoffmann, Daniel Schönyan, Dan Bolan

Englische Übersetzung: Daniel "Memphisbelle" SchönyanStephen "Steevo" White

Englisches Lektorat: Dan "Metal0130" Bolan and Matt Rochelle

Publisher: Mr-Murray

Spielentwickler: Bohemia Interactive (www.bistudio.com)

Credits: Memphisbelle, Metal0130, Parvus, Wolle, Blackland, Woody,Placebo, Maruk, Suma, Ivan, Pete, Shadow, Jan Hlavatý, Dslyecxi,Hoz, Jahve, Planck, RichUK, Q, Raedor, Rastavovich, Vilem,Jerry Hopper, Deadeye, Matt Rochelle, M-E, Foxhound, C930,Marco-Polo-IV, MCPXXL, Silola, Chneemann, Lester, Swat, Pit,Sgt Ace, SNKMan, Legislator, Imutep, Crowe, Wolf der Kleine,Berghoff, Al Simmons, Pitti, Sniping-Jack, JörgF, BadAss, Unterfeld,OneManGang, Flashpoint_K, Kriegerdaemon, Wüstenfuchs,LockheedMartin$ch, Burns, Simba, LordOfTheFlames, Spinor,OFPEC-Team, Deadeye, Luemmel, Zenshin, Moses, Hardrock,TheArmALord, Bolek, Flimmi, Lima, NoFu, Tajin, John Silver,T_D ,Redfish, Buliwyf, Big X, Teufelsklaue, Clausewitz, VektorbosonCervo,Mandoble,Vienna,NeoArmageddon,Mondkalb,ColonelKlink

Credits Screenshotcontest: Marcus-Ergalla, Burns, Stoned Boy, Laggingape, Swat, Xsive,Woody, Evil Ash, Legislator, Arctic, AlexXx, Blechreiz, Churchill,Switcher83, Blacktiger

Spielversion: Dieses Buch basiert auf Spieleversion 1.15

Copyrighthinweis©2008 Sascha “Mr-Murray” Hoffmann. Alle Rechte vorbehalten. Die in diesem Medium verwendeten

Firmennamen, Namen, Logos, Grafiken, Warenzeichen und Produktbezeichnungen dienen nurIdentifikationszwecken. Sie verbleiben im alleinigen Eigentum der jeweiligen Rechteinhaber.

Das Cover-Artwork ist Eigentum von Bohemia Interactive (BIS) 2008 und wurde mit freundlicherGenehmigung von BIS zur Verfügung gestellt. ©2008 Bohemia Interactive. Alle Rechte vorbehalten.

Page 332: VON Mr-Murray (der beste !!!) Armed-Assault Editing-Guide Deluxe Edition by Mr-Murray Deutsch

333


Top Related