Beiträge: 982 Dabei seit: 19.06.07 Herkunft: München
Eine der wertvollsten neuen Features in ArmA2 sind die vielen BIS Functions, mit denen man nicht nur Einheiten oder Fahrzeuge spawnen kann, sondern auch dutzende anderer sehr nützliche Dinge in Aktion bringen kann. Man kann durch alle Dokus der BIS Functions Ingame scrollen anhand einer spezial Dialog Box.
Wichtig! Um die Functions in ArmA2 nutzen zu können, müsst ihr immer das Funktionsmanager Modul auf der Karte platziert haben. (Nicht synchronisieren)
Zum Start der Functions-Help Dialog Box folgenden Befehl in die init.sqf schreiben.
Ich werde diesen Thread immer auf den neuesten Stand bringen und so gut es geht alle nützlichen Functions auflisten. Fühlt euch frei und postet euch bekannte Functions ! ;-)
Beiträge: 982 Dabei seit: 19.06.07 Herkunft: München
SpawnGroup Function
Diese Function ermöglicht das spawnen von Gruppen, welches man in verschiedenen Versionen realisieren kann.
File: spawnGroup.sqf
Author: Joris-Jan van 't Land
Description:
Function which handles the spawning of a dynamic group of characters.
The composition of the group can be passed to the function.
Alternatively a number can be passed and the function will spawn that
amount of characters with a random type.
Parameter(s):
_this select 0: the group's starting position (Array)
_this select 1: the group's side (Side)
_this select 2: can be three different types:
- list of character types (Array)
- amount of characters (Number)
- CfgGroups entry (Config)
_this select 3: (optional) list of relative positions (Array)
_this select 4: (optional) list of ranks (Array)
_this select 5: (optional) skill range (Array)
_this select 6: (optional) ammunition count range (Array)
_this select 7: (optional) randomization controls (Array)
0: amount of mandatory units (Number)
1: spawn chance for the remaining units (Number)
_this select 8: (optional) azimuth (Number)
Beiträge: 982 Dabei seit: 19.06.07 Herkunft: München
SpawnVehicle Function
Diese Function ermöglicht das spawnen von Fahrzeugen samt Crew.
File: spawnVehicle.sqf
Author: Joris-Jan van 't Land
Description:
Function to spawn a certain vehicle type with all crew (including turrets).
The vehicle can either become part of an existing group or create a new group.
Parameter(s):
_this select 0: desired position (Array).
_this select 1: desired azimuth (Number).
_this select 2: type of the vehicle (String).
_this select 3: side or existing group (Side or Group).
Returns:
Array:
0: new vehicle (Object).
1: all crew (Array of Objects).
2: vehicle's group (Group).
Script
[getMarkerPos "NameMarker", Random 360, "HMMWV", West] call BIS_fnc_spawnVehicle;
Möchte man mehrere Fahrzeuge (bis zu 5) spawnwn, so lässt sich das in etwa so realisieren:
Script
for "_i" from 1 to 5 do {
[(getMarkerPos "NameMarker"), Random 360, "HMMWV", West] call BIS_fnc_spawnVehicle;
};
Mehrere Fahrzeuge die einer Gruppe angehören sollen:
Script
_grp = createGroup _side;
for "_i" from 1 to 5 do {
[getMarkerPos "NameMarker", Random 360, "HMMWV", _grp] call BIS_fnc_spawnVehicle;
};
1 Gruppe mit einem zufälligen Fahrzeug, welche in einem bestimmten Bereich patroulliert:
Beiträge: 982 Dabei seit: 19.06.07 Herkunft: München
TaskDefend Function
Diese Function ermöglicht, dass eine Gruppe eine bestimmte Position bewacht und statische Verteidigungen bemannt bei Feindkontakt. Per zufall ruhen sich vereinzelt Einheiten der Gruppe aus (setzen sich hin), während der Leader mit den restlichen Einheiten die Gegend patroulliert. Bei Feindkontakt schliesst sich die Gruppe zusammen und bekämpft den Gegner.
File: taskDefend.sqf
Author: Joris-Jan van 't Land
Description:
Group will man nearby static defenses and guard the position.
Parameter(s):
_this select 0: group (Group)
_this select 1: defense position (Array)
Interesant,ich finde diese Module generell ziemilcih gut.Kann mann eigentlich auch eigene Module schreiben??
Ich mein,die Module sind ja auch alle in einer.pbo,und entpackt bestehen sie auch nur aus Ordnern und Scripten.
Beiträge: 982 Dabei seit: 19.06.07 Herkunft: München
Ja, Module kann man auch selbst erstellen. Wenn man weiss wies geht
Denke mal dass es nicht mehr lange dauern wird bis die ersten Module veröffentlicht werden.
Beiträge: 982 Dabei seit: 19.06.07 Herkunft: München
TaskPatrol Funktion
Lässt eine Gruppe in einem bestimmten Bereich patroullieren. (Ähnlich dem UPS von Kronzky)
Man kann diese Function ganz gut mit der SpawnVehicle Function kombinieren.
File: taskPatrol.sqf
Author: Joris-Jan van 't Land
Description:
Create a random patrol of several waypoints around a given position.
Parameter(s):
_this select 0: the group to which to assign the waypoints (Group)
_this select 1: the position on which to base the patrol (Array)
_this select 2: the maximum distance between waypoints (Number)
_this select 3: (optional) blacklist of areas (Array)
Example: nul = [NameGruppe, getMarkerPos "NameMarker", 100,] call BIS_fn_taskPatrol;
Ganz ganz ganz herzlichen Dank für die super tips! Das klappt alles wunderbar - allerdings habe ich leider noch keine Möglichkeit gefunden, die überquellenden Waffen- und Munitionskisten aus den Kompositionen rauszuwerfen oder zumindest zu leeren. Ich will, dass die leute was für ihre Waffen tun müssen und nicht einfach wild drauflos ballern können weil sie genug Munition haben. ;)
Beiträge: 982 Dabei seit: 19.06.07 Herkunft: München
Bitte im richtigen Thema posten, für die Compositions haben wir schon einen extra Thread. Da steht auch wie man vereinzelt Objekte ändern oder weglassen kann.
versuche gerade per Sekundär Operationen Modul so eine Art Endlosgame für zwischendurch zu erstellen.Leider sind diese Missionen für 3-4 Mann zu dünn und ich wollte versuchen ein bisschen mehr Action in das Gebiet der SO zu bringen mit Hilfe dieser Funnktionen.
Meine Frage, ist es möglich die Postion der erstellten SecOps "auszulesen" und evtl. einem Marker zuzuweisen, so das ich an diesem Marker per Funktion zusätzliche Truppen spawnen lassen kann ?
Beiträge: 982 Dabei seit: 19.06.07 Herkunft: München
Hallo Thunder und willkommen.
Nun, soweit ich bis jetzt informiert bin, lässt sich das SOM nur auf eine vorgegbene Entfernung (min, max) definieren. Hab das mal rot hervorgehoben. Genau vorgegebene Positionen sind mir nicht bekannt. Aber du könntest mal hier nachsehn. Evtl gibts da ja schon was neues. Aber pass auf, das SOM Modul ist noch ziemlich Buggy. "trap" funktioniert beispielsweise nicht richtig. Jedenfalls bei mir.
Beiträge: 982 Dabei seit: 19.06.07 Herkunft: München
Info Text (Laufschrift zu Missionsbeginn)
In Operation Arrowhead wird ja zu Missionsbeginn diese sogenannte Laufschrift mit dynamicBlur eingeblendet. Ein nettes Feature welches man ganz einfach in seine Mission einbauen kann.
Anwendung:
Wie immer zur Sicherheit das Funktionsmanager Modul auf der Karte platzieren.
init.sqf schreiben:
Script
if (time < 10) then
{
titleCut ["", "BLACK FADED", 999];
[] Spawn {
waitUntil{!(isNil "BIS_fnc_init")};
Beiträge: 982 Dabei seit: 19.06.07 Herkunft: München
Loading Screen
In den OA Missionen wird ja während des Ladens der Mission ein sogenannter Loading Screen eingeblendet. Auch ein nettes Feature welches mit wenigen Handgriffen zu realisieren ist.
Anwendung:
Wie bei allen Functions, immer zur Sicherheit das Funktionsmanager Modul auf der Karte platzieren.
Im Missionsordner einen neuen Ordner img erstellen.
Ein beliebiges Lade Bild erstellen mit der Grösse 2048x1024 Pixel. Als .paa Format speichern. Müsste allerdings auch als .jpg funktionieren. Screen in den entsprechenden img Ordner ablegen.
Description.ext schreiben
description.ext:
Script
loadScreen = "img\loading02_goodMorning_CO.paa";
// ======================
// Loading screen related
// ======================
class RscText
{
type = 0;
idc = -1;
x = 0;
y = 0;
h = 0.037;
w = 0.3;
style = 0x100;
font = Zeppelin32;
SizeEx = 0.03921;
colorText[] = {1,1,1,1};
colorBackground[] = {0, 0, 0, 0};
linespacing = 1;
shadow = 0;
};
class RscLoadingText : RscText
{
style = 2;
x = 0.323532;
y = 0.666672;
w = 0.352944;
h = 0.039216;
sizeEx = 0.03921;
colorText[] = {0.543,0.5742,0.4102,1.0};
};
class RscProgress
{
x = 0.344;
y = 0.619;
w = 0.313726;
h = 0.0261438;
texture = "\ca\ui\data\loadscreen_progressbar_ca.paa";
colorFrame[] = {0,0,0,0};
colorBar[] = {1,1,1,1};
shadow = 2;
};
class RscLoadScreen1_CE
{
idd = -1;
duration = 10e10;
fadein = 0;
fadeout = 0;
name = "Loading Screen";
class ControlsBackground
{
class Loading_BG : RscText
{
x = safezoneX;
y = safezoneY;
w = safezoneW;
h = safezoneH;
text = "";
colorText[] = {0,0,0,0};
colorBackground[] = {0,0,0,1};
};
class Loading_CE2 : RscText
{
//style = 48;
style = 48 + 0x800; // Keep aspect ratio
x = safezoneX;
y = safezoneY;
w = safezoneW;
h = safezoneH;
text = "img\Name des Bildes.paa";
};
};
class controls
{
class Title1 : RscLoadingText
{
x = safezoneX;
y = safezoneY;
w = safezoneW;
h = safezoneH/6;
text = Was immer da auch stehen soll...;
colorText[] = {1,1,0.8,1};
shadow = 2;
};
class CA_Progress : RscProgress
{
idc = 104;
type = 8;
style = 0;
x = safezoneX + safezoneW/2 - 0.25;
y = safezoneY + safezoneH/9;
w = 0.5;
h = 0.025;
texture = "\ca\ui\data\loadscreen_progressbar_ca.paa";
shadow = 2;
};
};
};
Als Anhang eine Beispielmission wie das ganze dann ingame mit Loading Screen und Info Text aussieht.
Beiträge: 278 Dabei seit: 26.06.09 Herkunft: Bremen, Germany Alter: 30
BIS_fnc_UnitCapture und BIS_fnc_UnitPlay
In OA gibt es die Möglichkeit, Bewegungen von Fahr- und Flugzeugen aufzuzeichnen und von KI Einheiten wiedergeben zu lassen. Dazu werden die Funktionen BIS_fnc_UnitCapture (zum aufzeichnen) und BIS_fnc_UnitPlay (zum wiedergeben) verwendet.
Wer die OA Kampagne gespielt hat, wird vielleicht in der Mission Coltan Blues die perfekte Landung des Littlebirds bemerkt haben. Diese wurde mit diesen Funktionen erstellt.
Auf den ersten Blick sieht das ganze recht kompliziert aus, aber wenn man den Dreh erstmal raus hat, ist's gar nicht so wild. Hier eine Schritt für Schritt Anleitung:
1. Ein beliebiges Flugzeug als Spielereinheit platzieren, plane benennen und auf 'Fliegend' stellen.
plane ist der Name des Flugzeugs 120 ist die Dauer, wie lange aufgezeichnet wird (120 Sekunden = 2 Minuten) 30 sind die Frames pro Sekunde true legt fest, ob die Benutzung der Waffen mit aufgezeichnet werden soll 10 kein Plan^^
4. Mission starten, Funk Juliet (0-0-0), 2 Minuten lang coole Flugmanöver durchführen.
Ist die Zeit abgelaufen, erscheine eine Hint Meldung und das Spiel stoppt.
5. F1 drücken (kopiert die aufgezeichneten Daten in die Zwischenablage, kann ein paar Sekunden dauern, ein Hint erscheint wenn fertig) und Mission beenden.
6. Per Alt-Tab das Spiel verlassen, Missionsordner öffnen und eine neue Datei data.sqf erstellen. Folgendes Eintragen:
Script
_result = *Hier mit Strg+V die Daten einfügen*;
_result
Die aufgezeichneten Daten sind ein Array mit einer ganzen Menge an Zahlen.
7. data.sqf speichern und zurück ins Spiel.
8. Ein KI Flugzeug erstellen, plane1 benennen und auf Fliegend stellen.
9. In die Initzeile:
Script
PlaybackData = compile preprocessFile "data.sqf"
10. Einen neuen Auslöser erstellen:
Script
Achse a/b: 0
Aktivierung: Funk India
Bei Akt: Data = [] call PlaybackData; null = [plane1, Data] spawn BIS_fnc_UnitPlay;
11. Mission starten, Funk India (0-0-9) und der KI bei coolen Flugmanövern zusehen.
Beispiel-Mission
Ich hab eine kleine Beispiel Mission erstellt, um die Benutzung etwas zu veranschaulichen.
Anleitung:
Wie oben beschrieben Mission im Editor öffnen, auf Vorschau gehen, 0-0-0 drücken und zwei Minuten lang fliegen. Hint Meldung erscheint, F1 drücken, auf Bestätigung warten und per Alt-Tab zum Missionsordner wechseln. Die data.sqf ist bereits Vorhanden, hier einfach die gespeicherten Daten einfügen:
Script
_result = [];
_result
Achtung: Die (rot markierten) Klammern müssen vorher entfernt werden!
Anschließend wieder in den Editor und nochmal auf Vorschau gehen. Diesmal 0-0-9 drücken und die Show genießen. ;-)
Beiträge: 982 Dabei seit: 19.06.07 Herkunft: München
Das ist genial Clay, danke für die Anleitung.
Hab aber gelesen dass das im MOment nur mit Lufteinheiten funktioniert und man sehr vorsichtig damit sein soll, da es sehr auf die Performance gehn kann wenn man zu viel davon in einer Mission einbaut. Also nicht übertreiben! ^^
Beiträge: 982 Dabei seit: 19.06.07 Herkunft: München
AAN Function
Mit der AAN Function lässt sich ganz einfach das AAN News Overlay in eine Cutszene einblenden. Wie das ganze aussieht habt ihr ja alle im Intro zu Operation Arrowhead gesehn. Da ist es zwar um Längen aufwendiger gestaltet, aber die abgespeckte Version ist auch was feines.
Anwendung:
Wie bei allen Functions, immer das Funktionsmanager Modul auf der Karte platzieren.
Unten aufgefürtes Script einfach an die Stelle einbinden, wo das AAN Overlay eingeblendet werden soll.
Text anpassen
Code zum einbetten in ein Intro, Outro oder sonstige Cutscene:
Script
_header = parsetext "<t size='2.3'>Gruss an Bohemia Interactive</t><br />Dank der AAN Function sind nun AAN Nachrichten einblendbar.";
_line = parsetext " Mir war einfach nur langweilig! Drum dachte ich mir ich versuche mal eine AAN News zu schreiben bevor ich in den Urlaub gehe. Da ist die News...und ich geh jetzt in den Urlaub!. Tschüss!";
nul = [_header,_line] spawn BIS_fnc_AAN;
Und so sieht es dann ingame aus:
Falls es einer drauf hat, das mit Bildeinblendungen noch hinzukriegen, so bite immer her mit der Info. :top:
Hier mal ein Beispiel-Outro Win einer Mission. HAB IN DEM Script den teil der für das AAN Overlay wichtig ist, farblich hervorgehoben.
ich lese hier schon seit längerem aufmerksam mit .
Nun zu meinem Problem:
Das Beispiel mit dem BIS_fnc_AAN klappt bei mir nicht so recht :-(.
Wenn es nicht zuviel verlangt ist, könntest Du vielleicht einmal eine Beispielmission zum Download anbieten? .