Einzelnen Beitrag anzeigen
Alt 22.11.2012, 19:03   #1 (permalink)
Moerderhoschi
Armed-Assault.de Team10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Moerderhoschi
 
Registriert seit: 01.07.2006
Ort: Kabul
Alter: 35
Beiträge: 2.666
Standard Missionserstellung Tipps&Tricks

Missionserstellung Tipps&Tricks



Dieses Thema soll als Hilfestellung fuer Neueinsteiger zum erstellen von eigenen Missionen dienen.

Zunaechst mal sei gesagt das der Editing Guide von Mr.Murray fuer Einsteiger nach wie
vor viele nuetzliche Informationen enthaelt und erste Anlaufstelle bei Fragen sein sollte.


Download: --> Mr.Murrays Editing Guide Deluxe Edition (german) <--


Eine weitere wichtige Anlaufstelle ist die ArmA Wiki. Dort sind alle moeglichen Scriptbefehle
zu ArmA aufgelistet und oft auch mit Beispielen versehen.

Website: Bohemia Interactive Community Wiki
Unterpunkte:W.I.P.



Checkliste:

Folgendes ist fuer das Missionsbauen sehr hilfreich und macht die Arbeit leichter.

-ShowScriptErrors
Zeigt Syntaxfehler Ingame an wenn z.b. ein externes Script aufgerufen wird.
Einfach in der Verkneupfung am Ende der Zeile Ziel -ShowScriptErrors anfuegen.

-[TUT]Missionhelpers
In dieser Mission findet ihr Trigger die Euch den Missionbau erleichtern sollen,
einfach in eure Mission rueberkopieren und am Ende wieder herausloeschen (cameramodus/godmode/beamen/BFG/setcaptive/info/skiptime/sichtweite)

W.I.P.



Grundsatzfrage - Vanilla oder mit Mods!?

Man hat beim Missionserstellen die Qual der Wahl wenn es um Einheiten Waffen und Inseln geht,
diese Entscheidung sollte jedoch bedacht sein. Ich will hier die Vorteile von beiden erlaeutern.

Vanilla (ohne Modifikationen):
Erstellt man Missionen ganz ohne Modifikationen hat dies den Vorteil das Jeder der im Besitz des Hauptspieles ist diese Mission sofort und ohne riesige Moddateien herunterzuladen spielen kann. Auch zugute kommt das wenn Mods vom Server fliegen die Vanilla Missionen nach wie vor bespielt werden koennen, wohingegen Missionen mit benoetigten Mods unbrauchbar werden. Auch sollte man bedenken das nicht jeder Spieler jede Modifikation mag und fuer einige Spieler die Mission daher von vornherein ausscheidet.

Mit Modifikationen:
Egal ob Waffen, Fahrzeuge, Inseln oder gar alles zusammen in Mods und Großmods finden sich Erweiterungen die jedes Armaherz hoeher schlagen lassen. Modifikationen haben den Vorteil das Spiel Abwechslungsreicher zu machen und Szenarien Maßgeschneidert zu erstellen. Wer es Realistischer mag laedt sich den A.C.E. Mod oder ist der 2WK die Wahl, dann steht I44 oder Hell in the Pacific an. Es gibt natuerlich noch unzaehlige weiter Mods die ArmA fantastisch ergaenzen.



Scripte nutzen:

Ein Script ist eine Ansammlung von Code in einer speraten Datei. Es gibt auch Gameinterne Scripte
in Form von Spawnscripts oder Functions. Dieser Code wird von der Gameengine verarbeitet.
Scripte liegen normalerweise im .sqs(alt) oder .sqf(neu) Format vor.

Sie koennen leicht erstellt werden, dazu erstellt man einfach eine neue Textdatei und nennt diese um
von Neues Textdokument.txt in z.B. meinscript.sqf. Diese Datei oeffnet man dann mit Notepad und kann
Sie bearbeiten.

Ich werde hier nur auf die .sqf Variante eingehen da .sqs obsolet ist.

Varianten:
Es gibt verschieden Arten Scripte auf zu rufen.

1. Als externe Datei: handle = [] execVM "meinscript.sqf";
2. Als Spawnscript ingame: handle = [] spawn {-mein code zum ausfuehren-};
3. Als Function: ergebnis = [] call {-mein code zum ausfuehren-},

Diese 3 Varianten haben unterschiedliche Vor-& Nachteile.

Variante 1&2, execVM & Spawn werden als neuer Prozess aufgerufen und laufen Parallel zu anderen Prozessen der Gameengine. Diese Verarbeitungsmethode erlaubt es die Scripte ruhen zu lassen mit 'sleep/waituntil', jedoch geben die Scripte selber nur den handle(aktuellen Zustand) zurueck und kein Ergebnis.

Variante 3, die Funktion mit call wird nicht parallel zu anderen Prozessen der Gameengine sondern sofort verarbeitet. Dies hat zum einen den Vorteil das bei zeitkritischen Code dieser 'am Stueck' verarbeitet wird.
Auch gibt die Funktion einen Wert zurueck, der letzte Wert in der Funktion. Jedoch, durch die nicht parallele Verarbeitung, koennen hier 'sleep/waituntil' nicht zum Einsatz kommen.

Parameterhandling:
Scripte haben weiter den Vorteil das man ihnen Parameter uebergeben kann, somit bleibt der im Script enthaltene Code flexibel.

Das Parameterhandling funktioniert beim execVM, Spawn und Call gleich.

Angenommen wir rufen ein Script folgendermaßen auf: _handle = [player,180] execVM "MeinScript.sqf";

MeinScript.sqf
Code:
// ZEILEN MIT // SIND KOMMENTAR ZEILEN UND WERDEN VON DER ENGINE IGNORIERT

// MIT PRIVATE WERDEN VARIABLEN PRIVAT GEMACHT
// UND GELTEN SOMIT NUR IN DIESEM SCRIPT

private [
"_parameter1",
"_parameter2"
];

// HIER FINDET DIE ZUWEISUNG DER BEIM AUFRUF
// UEBERGEBENEN PARAMETER STATT SO DASS MAN SIE
// IM SCRIPT LEICHTER VERWENDEN KANN

_parameter1 = _this select 0; // player
_parameter2 = _this select 1; // 180

while {alive _parameter1} do
{
	if ((direction _parameter1 <= _parameter2 + 3) and (direction _parameter1 >= _parameter2 - 3)) then
	{
		hint "Du schaust gerade nach Sueden!."
	};

	sleep 0.5;
};
Wenn MeinScript.sqf also mit den Parametern [player,180] aufgerufen wird checkt das Script ob der Player am leben ist und wenn ja dann findet eine Abfrage statt ob er in die Richtung zwischen 177 bis 183 grad schaut und wenn das der Fall ist wird eine Meldung ausgegeben.

Ein Beispiel mit Parametern bei einer Funktion.

Code:
MeineFunktion =
{
	private
	[
	"_parameter1",
	"_paramter2"
	];
	_parameter1 = _this select 0;
	_parameter2 = _this select 1;

	_parameter1 + _parameter2
};

Ergebnis = [2,3] call MeineFunktion;
Nach Ausfuehrung dieses Codes Wuerde also 5 in der Variable Ergebnis stehen.

Mehr dazu, wie man scripte genau einsetzt, wie das parameterhandling funktioniert usw. kommt demnaechst.

(Ich habe versucht das Ganze so verstaendlich wie moeglich zu halten. Sollte dennoch irgendjemand mit meiner Beschreibung der Scripte und/oder deren Funktion Uneinig sein oder das Ganze anders sehen dann Schreibt mir. Ich lasse da gerne mit mir reden.)



Der 3D-Editor und sein richtiger Einsatz:

Ein Beispielvideo auf dem die Grundlagen gut erklaert werden (danke an Franky13792 fuer das bereitstellen)
YouTube Video

Anmerkungen zum Video:
  • Nach dem ersten Speichern koennen Objekte verschoben werden,
    zum beheben Objekte neu ausrichten und nochmal speichern.
  • mission.sqf immer umbennenen, sonst kann es zu Problemen kommen.
  • SetAccTime ist ueberfluessig, das Script sollte stattdessen folgendermaßen in
    der init.sqf aufgerufen werden: if (isServer) then {execVM "MeinScript.sqf"};

Eine Vorgehensweise in Textform mit Bildern und Beispielmissionen sowie deren idealer Einsatz folgen noch.
W.I.P.



Lokalitaet im Multiplayer:
W.I.P.



Briefing erstellen

Das Briefing, hier werden Missionsziele fest- und Notizen hinterlegt um fuer den Auftrag gewappnet zu sein.
Man kann die Missionsziele&Notizen an jeder beliebigen Stelle festlegen aber normalerweise macht man das in
einem eigenen Script und nennt dies briefing.sqf. Dieses Script wiederum wird dann von der init.sqf aufgerufen
die beim Missionstart automatisch geladen wird.

Ein Beispielbriefing mit Bildern und Markern findet ihr HIER.


Tricks & Kniffe 2.0 (zusammengetragen aus dem gleichnamigen Thema, wird vortlaufend aktualisiert)
W.I.P.



Tutorials:W.I.P.




Das Thema ist in Arbeit und wird nach und nach weitergepflegt.


Kritik ist erwuenscht!

Mit freundlichem Gruß
Moerderhoschi
Miniaturansicht angehängter Grafiken
missionserstellung-tipps-tricks-showscripterrors.jpg  
Angehängte Dateien
Dateityp: rar [TUT]Briefing.rar (72,1 KB, 756x aufgerufen)
Dateityp: rar [TUT]Dorf_Saeubern.rar (5,3 KB, 506x aufgerufen)
Dateityp: rar [TUT]Missionhelpers.rar (3,2 KB, 604x aufgerufen)
Dateityp: rar [TUT]Artillerieschlag.rar (8,3 KB, 334x aufgerufen)
__________________



Geändert von Moerderhoschi (26.01.2013 um 16:33 Uhr). Grund: siehe changelog
Moerderhoschi ist offline   Mit Zitat antworten