Beiträge: 982 Dabei seit: 19.06.07 Herkunft: München
Die Briefings in ArmA2 haben sich grundlegend geändert. Vergesst so ziemlich alles was ihr bisher über Briefings wusstet. Das alte html hat wohl ausgedient, es wird nur noch für das Debriefing genutzt. XML Kenntnisse und Scripting sind jetzt gefragt. Theoretisch könnte man seine Texte auch farblich hervorheben. Alles zu den parseTexten findet ihr im BIS Wiki.
Briefing Tutorial [0.9]
In ArmA2 wird das Briefing in eurer Mission als initJIPcompatible.sqf deklariert. Nicht mehr wie sonst als Briefing.html. Ihr könnt es natürlich als Briefing.sqf speichern, jedoch müsst ihr es dann in der init.sqf starten/aktivieren. ([] execVM "briefing.sqf";)
Das Briefing hat wieder wie bekannt, das Briefing selbst und dazugehörige Notizen. Damit euer geschriebenes Briefing in der Mission auch angezeigt wird, dürft ihr nicht vergessen auch eine Briefing.html Datei zu schreiben, sonst wird nichts angezeigt! Mehr dazu im zweiten Post!
Ich versuche hier mal ausführlich die neuen Funktionen und Inhalte der Briefings etws genauer zu beschreiben. Sollte jemand neue oder bessere Infos haben, so bitte posten und alle dran teilhaben lassen. Danke!
In den Notizen und im Briefing sind jedoch einige Formatierungen der Texte nötig um Markerlinks, Bilder und Leerzeilen einzufügen.
Zeilenumbrüche:
<br />
für eine leerzeile <br /><br />
Umlaute im Briefing:
Wie schon in Armed Assault die sqf in UTF-8 formatieren.
Bilder einfügen:
<img image='Bild.paa'/> möglich ist auch jpg
Notizen:
Notizen werden im Briefing als diary deklariert. Die Notizen könnt ihr jetzt in einzelne Themen aufteilen wie z.B Lage, Ausführung, Unterstützung, Feindsicht,....usw) Zu den jeweiligen Themen könnt ihr noch einen beliebigen Text verfassen und so dem Spieler eine Fülle an Infos zu seinem Einsatz anbieten.
_diary1 = player createDiaryRecord ["Diary", ["Titel Notiz1", "Nachricht Notiz 1"]];
Als Titel könnt ihr jetzt z.B "Durchführung" schreiben und als Text z.B die Info zur Durchführung. Das würde dann in etwa so aussehen.
_diary1 = player createDiaryRecord ["Diary", ["Durchführung", "Serzhant Snjertenk, sie bekommen 5 speziell ausgebildete Kameraden an ihre Seite die bereits in Tschetschenien als Speznatz erfolgreich Einsätze durchführten.</br></br> Gemeinsam werdet ihr unweit der Stadt <marker name=""Stadt"">Myshkino</marker> mit einem UAZ an dieser <marker name=""Start"">Koordinate</marker> abgesetzt. Von hieraus könnt ihr euch unbemerkt der Stadt nähern und die Guerillas Eliminieren. Waffen und Ausrüstung findet ihr im bereits vorbereitetem UAZ."]];
Wollt ihr natürlich mehrere Notizen in eurem Briefing, dann könnt das wie folgt aussehen. Achtet auf die Reihenfolge, die von unten nach ob geschrieben wird.
_diary2 = player createDiaryRecord ["Diary", ["Unterstützung", "Solltet ihr unerwartet bei diesem Einsatz in Bedrängnis kommen, so stehen euch 2 Möglichkeiten an Verstärkung zur Seite.<br /><br />Panzertrupp samt Infanterie:<br />Wir stellen euch einen BMP3 samt Infanterie mit gut ausgebildeten MVD Soldaten zur Verfügung. Jedoch wird es mehrere Minuten dauern bis die Truppen zu euch vorgestossen sind um euch zu unterstützen. Beachtet beim Ruf der Verstärkung diesen kleinen Nachteil.<br /><br />Luftunterstützung:<br />Als Luftunterstützung steht euch eine Hind zur Verfügung, der die Guerillas aus der Luft versuchen wird zu bekämpfen und euch aus der Luft unterstützen wird. Nach Abruf könnte der Hind in wenigen Minuten bei euch sein."]];
_diary1 = player createDiaryRecord ["Diary", ["Durchführung", "Serzhant Snjertenk, sie bekommen 5 speziell ausgebildete Kameraden an ihre Seite die bereits in Tschetschenien als Speznatz erfolgreich Einsätze durchführten.</br></br> Gemeinsam werdet ihr unweit der Stadt <marker name=""Stadt"">Myshkino</marker> mit einem UAZ an dieser <marker name=""Start"">Koordinate</marker> abgesetzt. Von hieraus könnt ihr euch unbemerkt der Stadt nähern und die Guerillas Eliminieren. Waffen und Ausrüstung findet ihr im bereits vorbereitetem UAZ."]];
Tasks (Einsatzziele):
Die neue Benennung der Einsatzziele lautet "task" (task1, task2, task3....)
Ihr könnt Tasks wie und wann ihr wollt aktivieren und deaktivieren. Fügen wir einen einfachen task dem Briefing hinzu.
task6 = player createSimpleTask ["Auf Heli warten"];
Jetzt ist noch keine Nachricht für diesen Task definiert. das geht wie folgt.
task6 setSimpleTaskDescription ["Sobald sie ihren Einsatz beendet haben bekommen sie die Koordinaten für die Abholzone, wo man sie und ihren Trupp aufnehmen wird. Wir bereiten alles weitere für euch vor.","Auf Heli warten","Auf Heli warten"];
Das erste Element in dem Array ist die Nachricht zum Einsatzziel (hier task6), das zweite ist der Titel des Einsatzzieles (wird hier nur redefiniert) und das dritte ist der Titel der im HUD angezeigt wird im Briefing. (oben rechts)
Der Text "Auf Heli warten" wird im Briefing somit als Missionsziel angezeigt. Rechts davon die Beschreibung angezeigt (description).
Ebenso könnt ihr zu jedem Einsatzziel einen sogenannten Objective Marker anzeigen lassen, damit man weiss wo und welches das nächste Einsatzziel ist. Das geht mit diesem Befehl.
"abholen" steht für den Namen des Markers, den ihr als leeren Marker auf der Karte postiert habt. Nun seht ihr einen semi transparenten Marker eures Einsatzieles auf der Karte.
Bestimmten task als momentanes Einsatzziel festlegen:
player setCurrentTask task1;
Tasks Kontrolle:
Ihr könnt in ArmA2 durchweg die Kontrolle über eure vorgegebenen Einsatzziele haben. Löschen, aktivieren, neu hinzufügen und so weiter. Sogar einzelnen Einheiten aus eurer Gruppe könnt ihr ein Einsatzziel vorgeben. (Genial im MP) Das geht ganz einfach mit dem Befehl.
task6 = NameEinheit createSimpleTask ["Hauptziel: Auf Heli warten"];
Wenn dieses Einsatzziel dann erfüllt wurde, könnt ihr wieder und wieder weitere Einsatzziel angeben. Wie ihr wollt.
Einsatzziele per Zufall aktivieren:
Ihr könnt auch per Zufall ein Einsatzziel aktivieren wann ihr wollt. Hier mal ein Beispiel dazu.
Ein Shilka mit dem Namen tank1 des Gegner wurde mit 60% Bedingung der Anwesenheit platziert. Existiert das Shilka nun im Spiel, fügt einen task zum zerstören hinzu.
if (alive tank1) then {
tskShilka = player createSimpleTask["Shilka zerstören"];
tskShilka setSimpleTaskDescription["Findet und zerstört das gegnerische Shilka, welches sich irgendwo nahe den Wäldern befindet.", "Shilka zerstören", "Shilka zerstören"];
};
Hier mal ein Beispielbriefing aus meiner Mission an der ich grade arbeite zum Test.
initJIPcompatible.sqf
Script
//Notizen
_diary4 = player createDiaryRecord ["Diary", ["Unterstützung", "Solltet ihr unerwartet bei diesem Einsatz in Bedrängnis kommen, so stehen euch 2 Möglichkeiten an Verstärkung zur Seite.<br /><br />Panzertrupp samt Infanterie:<br />Wir stellen euch einen BMP3 samt Infanterie zur Verfügung. Jedoch wird es mehrere Minuten dauern bis die Truppen zu euch vorgestossen sind um euch zu unterstützen. Beachtet beim Ruf der Verstärkung diesen kleinen Nachteil.<br /><br />Luftunterstützung:<br /><br />Als Luftunterstützung steht euch eine Hind zur Verfügung, der die Guerillas aus der Luft versuchen wird zu bekämpfen und euch aus der Luft unterstützen wird. Nach Abruf könnte der Hind in wenigen Minuten bei euch sein."]];
_diary3 = player createDiaryRecord ["Diary", ["Lagebericht", "Unser Nachschub Konvoi scheint keinerlei Funkkontakt zu haben. Wir müssen also vom schlimmsten Fall ausgehen, dass niemand den Angriff überlebt hat. Doch das wird ihr Einsatz zeigen. Die Lage ist noch sehr fraglich, wissen wir noch zu wenig über die Pläne und vor allem die Truppenstärke der Guerillas. Wir wissen jedoch dass sie über genügend Luftabwehr-und Panzerabwehrwaffen verfügen, die sie aus den Überfllen an unseren Truppen ergaunert haben. Seid also auf alles gefasst. Desweiteren wissen wir, dass die Guerillas einen Anführer haben den sie ehrfürchtig 'Tristian' nennen. 'Tristian' gilt als extrem gefährlich und scheut keine Mittel und Möglichkeit unsere Truppen anzugreifen und zu töten. Finden sie ihn und töten sie ihn. Lebend wird er nur zu einer noch grösseren Gefahr für uns und wir müssen um Befreiungsaktionen fürchten. Machen sie also kurzen Prozess mit ihm!<br /><br /><img image='trist.jpg'/><br /><br />Name:<br />Tristian Olschaves<br />Alter:<br />42 Jahre<br />Grösse:<br />1.82 Meter<br />Aussehen:<br />Tristian ist schlank, hat einen Schnauz-und Kinnbart, trägt meist eine Tarnjacke mit Halstuch. Ein besonderes Kennzeichen ist sein Arbeiterhut den er immer trägt. Ist zudem meist von mehreren Guerillas Gefolgsleuten umgeben. Lässt sich nie allenie blicken.<br /><br />Gebürtiger Tschernaurusse mit Tschetschenischem Pass. Wurde in Oischara geboren und lebt sein einigen Monaten irgendwo in Chernarus, versteckt in abgelegenen Ortschaften und zum Teil auch in Waldlagern. Gilt als extrem gefährlich!<br /><br />"]];
_diary2 = player createDiaryRecord ["Diary", ["Durchführung", "Serzhant Snjertenk, sie bekommen 5 speziell ausgebildete Kameraden an ihre Seite die bereits in Tschetschenien als Speznatz erfolgreich Einsätze durchführten.</br></br>Gemeinsam werdet ihr unweit der Stadt <marker name=""Stadt"">Myshkino</marker> mit einem UAZ an dieser <marker name=""Start"">Koordinate</marker> abgesetzt. Von hieraus könnt ihr euch unbemerkt der Stadt nähern und die Guerillas Eliminieren. Waffen und Ausrüstung findet ihr im bereits vorbereitetem UAZ."]];
_diary1 = player createDiaryRecord ["Diary", ["Briefing", "Der Aufstand gegen unsere Besatzungstruppen nimmt an härte zu. Vereinzelt werden unsere Truppen von schwer bewaffneten Guerillas hart attackiert und in den meisten Fällen durch fiese Hinterhalte überfallen und getötet.<br /><br />Vor etwa 2 Stunden wurde erneut einer unserer Nachschub Konvois von einer Horde Guerillas in der kleinen Stadt <marker name=""Stadt"">Myshkino</marker> angegriffen. Seither haben wir jeglichen Funkkontakt zu der Einheit verloren. Wir müssen herausfinden ob es noch überlebende gibt. Ebenso konnten wir in einem nahe gelegenem Waldgebiet ein <marker name=""Lager"">Nachschublager</marker> der Guerillas ausfindig machen. Jedoch ist es uns im Moment nicht möglich es geziehlt aus der Luft anzugreifen. Deren Luftabwehrgeschütz würden unsere Vögel reihenweise vom Himmel holen. Handeln sie entsprechend und zerstören sie deren Luftabwehrgeschütz und heben sie deren Lager aus. Wir werden in diesem Einsatz keine grosse militärische Aktion ausführen, sondern lediglich Sie Serzhant Snjertenke, mit dieser Aufgabe vertraut machen. Suchen sie nach überlebenden Kameraden. Sollten sie keine Überlebenden finden, so ist ihr primäres Einsatzziel die Tötung des Anführers 'Tristian' und die Aushebung des Lagers der Guerillas. 'Tristian' gilt als extrem gefährlich und scheut keine Mittel und Möglichkeit unsere Truppen anzugreifen und zu töten. Finden sie ihn und töten sie ihn. Sie dürfen unter keinen Umständen scheitern!<br /><br />Weitere Einzelheiten und Infos haben wir in den Notizen für sie zusammengestellt."]];
//Aufgaben
task6 = player createSimpleTask ["obj6"];
task6 setSimpleTaskDescription ["Sobald sie ihren Einsatz beendet haben bekommen sie die Koordinaten für die Abholzone, wo man sie und ihren Trupp aufnehmen wird. Wir bereiten alles weitere für euch vor.","Hauptziel: Auf Heli warten","Auf Heli warten"];
task6 setSimpleTaskDestination markerpos "Abholen";
task6 settaskstate "Created";
task5 = player createSimpleTask ["obj5"];
task5 setSimpleTaskDescription ["Sollten sie auf Luftunterstützung zurückgreifen wollen, so müssen sie zuerst das <marker name=""Kanone"">ZU-23 Geschütz</marker> ausschalten. Das Geschütz befindet sich unweit des <marker name=""Lager"">Nachschublagers</marker> auf einer freien Lichtung","Optional: ZU-23 zerstören","ZU-23 zerstören"];
task5 setSimpleTaskDestination markerpos "Flucht";
task5 setTaskState "Created";
task4 = player createSimpleTask ["obj4"];
task4 setSimpleTaskDescription ["Unweit der Ortschaft befindet sich ein Stromgenerator der die Ortschaft und die umliegende Gegend mit Strom versorgt. Wenn es euch gelingt ihn zu zerstören, so stehen die Guerillas im Dunkeln und haben auch keinerlei Kontakt mehr zur Aussenwelt. Um eventuelle Verstärkung der Guerillas müssen sie sich dann keine Sorgen mehr machen.","Optional: Generator zerstören","Generator zerstören"];
task4 setSimpleTaskDestination markerpos "Strom";
task4 setTaskState "Created";
task3 = player createSimpleTask ["obj3"];
task3 setSimpleTaskDescription ["Wir wissen dass sich Tristian irgendwo in der Ortschaft <marker name=""Stadt"">Myshkino</marker> oder in dem versteckten <marker name=""Lager"">Nachschublager</marker> aufhlt. Finden und tten sie ihn!","Hauptziel: Tristian töten","Tristian töten"];
task3 setSimpleTaskDestination markerpos "Versteck";
task3 setTaskState "Created";
task2 = player createSimpleTask ["obj2"];
task2 setSimpleTaskDescription ["Unsere UAV Aufklärer haben in einem nahe gelegenen Waldgebiet eine Art <marker name=""Lager"">Nachschublager</marker> der Guerillas ausfindig gemacht. Heben sie dieses Lager aus und zerstören sie alles an Waffen und Munition was sie dort vorfinden. <br /><br />Die Guerillas werden rings um ihr Lager sehr viel Präsenz zeigen und auf alles vorbereitet sein. Achten sie auf Scharfschützen und getarnte MG-Stellungen.","Hauptziel: Lager ausheben", "Lager ausheben"];
task2 setSimpleTaskDestination markerpos "Lager";
task2 setTaskState "Created";
task1 = player createSimpleTask ["obj1"];
task1 setSimpleTaskDescription ["Vor wenigen Stunden wurde einer unserer Nachschub Konvois von Guerillas in dem kleinen Ort <marker name=""Stadt"">Myshkino</marker> angegriffen. Wir haben seither jeden Funkkontakt zu der Einheit verloren. Suchen sie in der kleinen Stadt nach überlebenden Kameraden und eliminiert jeden Widerstand.","Hauptziel: Überlebende suchen","Überlebende suchen"];
task1 setSimpleTaskDestination markerpos "Stadt";
task1 setTaskState "Created";
//Missionsziel vorgeben
player setCurrentTask task1;
Ich bekomme es einfach nich hin das der mir ein Briefing anzeigt -.- Habe das Bsp. von oben genommen und etwas abgeändert damit es natürlich zu der testmissi passt doch es passiert einfach NIX wenn ich die Missi starte ?!? muss ich noch irgendwas erledigen ?
Beiträge: 982 Dabei seit: 19.06.07 Herkunft: München
Also das müsste eigentlich funktionieren. Wenn du jedoch ein Semikolen (;) oder irgendwo Gänsefüsschen (") oder Komma vergessen hast, kann sein dass es nicht angezeigt wird.
Ich häng dir mal die initJIPcompatible.sqf an. Kopiere die mal in deinen Missionsordner und schau ob es angezeigt wird. Wenn ja, so hast du in deinem Briefing was vergessen. ^^
Mhh damit klappt es...das werde ich wohl nochmal alles nachgehen. Habe damit auch 0 erfahrung und ich habe absolut Null durchblick..aber ich werde mich mal einarbeiten biste mir auf jedenfall ne verdammt große hilfe :respect:
Hab nur noch nicht herrausgefunden wie das mit dem aktuellen Einsatzziel funktioniert. ("CURRENT")
"SUCCEEDED"
"FAILED"
"CREATED"
"CANCELED"
Möglich wäre auch eine function von Mikey: Schreibt diese Zeilen in eure init.sqf
// Create a taskHint
// Usage: [tskExample] call mk_fTaskHint;
// Gets the taskState of the passed task, and shows the status on screen
mk_fTaskHint = compile (preprocessFileLineNumbers "mk\sys\f\fTaskHint.sqf");
Aktivierung:
Script
[tskExample] call mk_fTaskHint;
Im Anhang findet ihr die dazugehörige ftask_hint.sqf Function.
Eine kleine Frage zwischendurch. Und zwar Betrifft das, dass verschwinden der Notizen sowie der Aufgaben nach einem Respawn. kann mir da einer sagen worann das liegt? Hab nämlich schon ein paar Missionen downgeloadet bei denen alles reibungslos funktioniert die aber nicht diese Struktur haben wie hier erklärt(die ich übrigens auch verwende)?
Beiträge: 982 Dabei seit: 19.06.07 Herkunft: München
Hi Low, willkommen
Ja, das scheint wohl ein Bug zu sein. Hab mal eben ein weinig gestöbert und einen Beitrag von R34P3R im G-G-C Forum gelesen. Der scheint das irgendwie mit einem Auslöser und dem Briefing in der init.sqf gelöst zu haben. Getestet wurde es aber bisher wohl noch nicht.
ich habe das über einen Auslöser gelöst....
alive player (Mehrfach , 0/0,)
temp=[] execVM "data\script\mission_setTask.sqf";
mission_setTask.sqf:
if(CurrentMission==1) then{ player setCurrentTask Mission1; };
if(CurrentMission==2) then{ player setCurrentTask Mission1; };
und in der init.sqf die Missionen anlegen:
_MissionBriefingLong = "Mission 1";
_MissionBriefingHUD = "";
_MissionBriefingShort = "Erobern sie die feindliche Basis.";
Mission1 = player createSimpleTask ["obj1"];
Mission1 setSimpleTaskDescription [_MissionBriefingLong,_MissionBriefingShort,_MissionBriefingHUD];
Mission1 setSimpleTaskDestination (getMarkerPos "obj1");
Mission1 settaskstate "CREATED";
_MissionBriefingLong = "Mission 2";
_MissionBriefingHUD = "";
_MissionBriefingShort = "Zerstoeren sie die zwei T90 mit Spregstoff";
Mission2 = player createSimpleTask ["obj2"];
Mission2 setSimpleTaskDescription [_MissionBriefingLong,_MissionBriefingShort,_MissionBriefingHUD];
Mission2 setSimpleTaskDestination (getMarkerPos "obj2");
Mission2 settaskstate "CREATED";
Mir ists nämlich bei der Map "Co_143_EvolutionUSMC_v02_mod.Chernarus" aufgefallen. Bei der funktioniert es aber der hat die Init nich ganz so wie hier.
Wenn jemand interessiert ist sich das mal anzusehen würde ich hier die INIT bzw das was bennötigt wird hier hereinstellen (natürlich nur zum ansehen).
Also wenn das erlaubt wäre.
Aufjedenfall probier ich das mal gleich aus mit dem Auslöser Danke
Beiträge: 982 Dabei seit: 19.06.07 Herkunft: München
Klar, häng die Mission einfach als Rar-Datei an wenn du willst, solange sie nicht grösser als 3 MB ist. Ansonsten poste mal bitte die init.sqf. Interessiert mich nämlich auch ^^
also ich habe gehört das ist ziemlich dumm mitn Eventhandler (ka wieso aber so hat man es mir verklickert)
Ich benutze dieses Script für meine Coop, das geniale, es speichert die Waffen vor dem Tot, so respawnt man mit dem Briefung und seinen Waffen (2 Fliegen mit einem Script <--- =) )
waffenbrief.sqf
Script
if (!(local player)) exitWith {};
while {true} do {
waitUntil {!alive player};
_weapons = weapons player;
_magazines = magazines player;