15.03.2017 um 11:25
rufix
Firestarter
Hat gelernt, Feuer zu machen.
Beiträge: 1132
Registriert am: 04.09.15
Farantis Random Mission Script v2
------------------------------------------------------
Inhalt
------------------------------------------------------
1.0 1. Was ist FRMS2?
2.0 2. Wie funktioniert FRMS2?
3.0 3. Wie verwende ich FRMS2?
>>>3.1 Voraussetzungen
>>>3.2 Dateien und Einbindung
>>>3.3 Konfiguration
>>>3.4 Im Editor
>>>3.5 Briefing
4.0 4. Download
5.0 5. Credits
------------------------------------------------------
>>>1. Was ist FRMS2?<<<
------------------------------------------------------
FRMS2 steht für "Farantis Random Mission Script Version 2"
Wie der Name schon sagt, ist es ein Script, mit dem zufallsgenerierte Missionen schnell und leicht erstellt werden können. Die ursprüngliche Version wurde von Farantis entwickelt und von mir nun stark überarbeitet bzw. großteils neu geschrieben.
Das Script wählt aus einer Liste von Markern zufällig einen aus und spawnt dort Einheiten aus einer vorher festgelegten Liste. Viele Einstellungen können vom Missionsbauer vorgenommen werden. Zusätzlich gibt es ein paar Parameter, die bei Missionsstart geändert werden können.
------------------------------------------------------
>>>2. Wie funktioniert FRMS2?<<<
------------------------------------------------------
FRMS2 wählt aus einer vom Missionsbauer definierten Klasse von Markern zufällig einen aus, an dem es Feindeinheiten spawnen wird. Dort legt es einen für die Spieler sichtbaren Marker als Zielmarkierung an. Außerdem legt es die Zieldaten in einer public Variable an, sodass sie auch ins Briefing eingebunden werden können.
Anschließend spawnt das Script an dieser Zielposition eine in den Missions-Parametern festgelegte Zahl von Gruppen, die zufällig aus einer vom Missionsbauer erstellten Liste ausgewählt werden, und lässt diese das Zielgebiet patrouillieren / verteidigen.
Schließlich wird ein Script gestartet, dass der KI durchgängig die Position der Spieler verrät, sodass die Gegner wesentlich fordernder werden, insbesondere im Stadtkampf.
Zukünftig soll das Script auch einen Trigger erstellen, der checkt, ob das Zielgebiet feindfrei ist, und entsprechend die Mission beendet.
------------------------------------------------------
>>>3. Wie verwende ich FRMS2?<<<
------------------------------------------------------
1. Voraussetzungen
Das Script nutzt CBA-Funktionen; CBA muss also geladen sein, um es zu verwenden.
Es sollte ein Headless Client verbaut sein, auch wenn dieser nicht benutzt werden soll.
2. Dateien und Einbindung
Kopiere den Ordner "FRMS2" in das Missionsverzeichnis.
Füge in der description.ext folgenden Code ein. Dies fügt die Missionsparameter hinzu, die für FRMS2 benötigt werden und in der MP-Lobby geändert werden können.
#include "frms2\Params.hpp"
Füge in der initServer.sqf folgenden Code ein. Dies lässt den Server das Script bei Missionsstart ausführen.
[] execVM "FRMS2\frms2.sqf";
Füge in initPlayerServer.sqf folgenden Code ein. Dies lässt Spielern, die JIPen, die Zieldaten zukommen, die für die das Briefing benötigt werden.
if (_didJIP) then {
publicVariable "frmsSelectedTargetData";
};
3. Konfiguration
Es gibt drei Dateien, in denen du Änderungen vornehmen kannst, um das Script an deine Mission anzupassen.
3.1 Params.hpp
Die Datei befindet sich im Ordner "FRMS2".
Hier werden die Parameter festgelegt, die vom Admin bei Missionsstart in der Lobby verändert werden können.
Wichtige Konfigurationsmöglichkeiten:
- doDebug: Hier kann der Default-Wert auf "0" gesetzt werden, wenn man nicht möchte, dass alle (!) Clients Debug-Informationen in die .rpt geschrieben bekommen.
- enemySize: Die Werte geben an, wie viele Gruppen von Gegner gespawnt werden. Sollte so angepasst werden, dass der mittlere Wert eine für die Spielerzahl angemessene Herausforderung bietet und beim höchsten Wert nicht mehr Einheiten gespawnt werden, als der Server/HC bewältigen kann.
- AISkill: Wer möchte, kann den Default-Wert ändern. Die Zahl gibt die Nachkommastelle des Skill-Wertes der KI an (Default "8" -> Skill "0.8").
- Daytime: Auch hier kann der Default-Wert verändert werden. Bei "0" wird eine Uhrzeit völlig zufällig ausgewählt. Bei den anderen Werten wird die Uhrzeit auf 6:00, 12:00, 18:00 oder 0:00 +/- drei Stunden gesetzt.
3.2 missionConfig.sqf
Die Datei befindet sich im Ordner "FRMS2\config".
Hier werden Variablen festgelegt, die NICHT vom Admin verändert werden können, sondern vom Missionsbauer angepasst werden sollten.
- frmsConfigDoSpawn: Nur zum Debuggen auf false setzen (dann wird das spawn-script übergangen und nur das Ziel ausgewählt).
- frmsConfigDoTrigger: Wenn "true" wird ein Trigger erstellt, der die Mission beendet, sobald im Umkreis um das Zielgebiet keine feindlichen Einheiten mehr sind. WIP, deshalb default: "false".
- frmsConfigPossibleTargetMarkerType: Typ der Marker, an denen möglicherweise Gegner spawnen. Wenn man möchte, dass alle möglichen Gebiete für Spieler sichtbar sind, kann man diesen ändern.
- frmsConfigSelectedTargetMarkerType: Classname des Markers, der über dem Ziel erstellt werden soll, um es zu markieren. Wenn man das Ziel nicht markieren will, kann er auf "empty" gesetzt werden.
- frmsConfigEnemySide und frmsConfigEnemySideString: Seite der Gegner (east, west, guer). Der String ist Case-sensitive, muss also groß stehen. Denk daran, in Eden die Seite zur Spielerseite auf feindlich zu setzen!
- frmsConfigTargetArea: Radius des Gebiets um den Zielmarker herum, das von der KI verteidigt werden soll.
3.3 spawnList.sqf
Die Datei befindet sich im Ordner "FRMS2\config".
Hier werden die Einheiten und Gruppen festgelegt, die FRMS2 spawnen wird.
Die Einheiten werden festgelegt, indem man ihnen einen (beliebigen) Variablennamen gibt und den Classname angibt:
private _sl = "CUP_O_TK_SpecOps_TL";
frmsGroupsToSpawn ist ein Array, dass die vordefinierten Gruppen als Arrays enthält. Für jede gespawnte Gruppe wird zufällig eine aus diesem Array ausgewählt und dann alle angegebenen Units gespawnt.
EINSCHRÄNKUNG: Derzeit unterstützt FRMS2 es nicht, dass in einer Gruppe Fahrzeuge und Infanterie vorkommen. Fahrzeuge werden aber automatisch besetzt.
frmsGroupsToSpawn = [
[_sl,_ar,_rm,_gr,_cm],
...
[_tl,_mg,_rm,_at,_ab],
[_car],
[_ifv]
];
4. Im Editor
Setze einen Headless Client und mache ihn spielbar.
Setze die Einheiten für die Spieler, die Fahrzeuge, die ihnen zur Verfügung stehen sollen, und baue ihnen eventuell eine FOB oder Ähnliches.
Du kannst die Mission auch weiter ausgestalten, gewünschte Module setzen usw. usf.
Es ist sogar möglich, an den möglichen Zielpositionen leere Geschütze zu platzieren, die später von der KI bemannt werden sollen (sofern CBA hält, was es verspricht...). Auf Mörser und Artillerie solltest du aber verzichten, da FRMS2 der KI durchgängig die Spielerpositionen verrät.
Platziere nun an allen Orten, die als Zielgebiet in Frage kommen, einen Marker von dem Typ, den du in der Konfigurationsdatei angegeben hast. Gib diesem Marker einen Anzeigenamen - dieser wird vom Script benötigt.
ACHTUNG: Du darfst diesen Marker für nichts anderes verwenden! Wenn du den "empty"-Marker verwendest, musst du also für die respawn-Marker einen anderen benutzen und diesen Eventuell unsichtbar stellen (Alpha auf 0%).
Sonst muss im Editor nichts weiter gemacht werden, es sei denn, du möchtest das :-)
5. Briefing
Füge vor dem Briefing folgenden Code ein. Dieser lässt den Client mit der Erstellung des Briefings warten, bis er die Zieldaten vom Server erhalten hat.
waitUntil {!isNil "frmsSelectedTargetData"};
Denk daran, im Briefing die Situation und Lage zu beschreiben, damit die Spieler wissen, womit sie es zu tun haben.
Dort kannst du folgende Variablen nutzen:
frmsSelectedTargetData select 0 enthält den Namen des Ziel-Markers (mit select 1 erhält man die Position).
frmsSelectedTargetMarker ist der sichtbare Marker. Auf diesen kann im Briefing verlinkt werden.
------------------------------------------------------
>>>4. Download<<<
------------------------------------------------------
Download
Beispielmission: Co32 Rabbit Hunt
------------------------------------------------------
>>>5. Credits<<<
------------------------------------------------------
Original FRMS von Farantis.
Verwendet CBA.
Getestet von Mitgliedern und Mitspielern von Gruppe-W.
Bearbeitet von rufix am 30.06.2017 um 22:04