HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-167/)
-   -   Briefing - Missionsziele später anzeigen (https://hx3.de/editing-scripting-167/briefing-missionsziele-spaeter-anzeigen-19753/)

Anemia 24.09.2010 08:10

Briefing - Missionsziele später anzeigen
 
Eine frage zum Briefing.

Ich habe mein Briefing soweit fertig und es funktioniert auch alles, bis auf die tatsache das ich nicht gleich alle Ziele von beginn an anzeigen möchte.

Im Briefing Tutorial von AMS steht da folgendes:
Briefing Tutorial [0.9] | AMS Downloadarchiv - Assault Mission Studio

Code:

[] spawn {
waitUntil {!(isNil "obj3_active")};
task3 = player createSimpleTask ["Neues Ziel: T72 zerstören"];
};
[] spawn {
waitUntil {!(isNil "obj4_active")};
task4 = player createSimpleTask ["Neues Ziel: Ortschaft säubern"];
task4 setSimpleTaskDestination markerpos "Ortschaft";
};

wofür steht hier das obj3_active ?!

Ich habe meine missionsziele task1,task2,task3 usw. genannt.
Auf der Karte gibt es dann "leere" marker mit namen obj1,obj2 usw. als Missionsziel Marker für das Briefing.
Das beispiel oben verstehe ich so das wenn obj3 nicht mehr aktiv ist dann wird task 3 angezeigt ?! oder steh ich gerade total auf dem schlauch.


Bräuchte mal einen stupps in die richtige richtung.

Buliwyf 24.09.2010 08:45

obj3_active ist eine simple selbst definierte Variable, die erstellt wird, wenn das Missionszziel davor erledigt wurde.

Beispiel: Shilka ist Missionsziel 2 und wurde zerstört, dann wird zB mittels player setVariable ["obj3_active",true,true]; der nächste Task aktiviert.

:rolleyes:

Anemia 24.09.2010 09:16

Also wenn ich nun z.b. über einen auslöser
player setVariable ["obj1_active",true,true];
Deine zeile in der Initzeile ausführe, passiert leider das gleiche wie vorher.Das missionsziel wird zwar nicht angezeigt, leider aber auch nicht aktiv geschaltet. das nächste missionsziel ist dann " any"

der eintrag in meiner briefing.sqf sieht folgendermaßen dazu aus:

Code:

[] spawn {
waitUntil {!(isNil "obj1_active")};


        tskEvidence1 = player createSimpleTask["Primary: Find Evidence"];
        tskEvidence1 setSimpleTaskDescription["Find the Evidence in Sahke, we meet our Contact there. He has some Photos of

Enemy Positions. Watch out ! Enemy forces patrolling near by<br/><br/>", "Primary: Find the Evidence in Sahke", "Primary: Find the

Evidence in Sahke"];
        tskEvidence1 setSimpleTaskDestination (getMarkerPos "obj2");

};


Buliwyf 24.09.2010 10:25

Änder mal:
Code:

waitUntil {!(isNil "obj1_active")};
in:
Code:

waitUntil {player getVariable "obj1_active"};
..um.

:rolleyes:

Anemia 24.09.2010 10:46

Danke , das schien die lösung gewesen zu sein.

Hat mir sehr geholfen..... damit ist meine Mission eigentlich fertig. Naja muss den text im Briefing nochmal bisschen ausbauen.

:daumen:

Pfandgiraffe 24.09.2010 16:35

es hätte auch gereicht die variable ganz einfach im gewünschten moment zu definieren...

also
Code:

obj1_active = true;
peng!

Cyclone83 22.01.2011 13:20

Hallo,

Hab da auch n Problem, und zwar:
Die Methode von Buliwyf versteckt zwar im Briefing die späteren Missionsziele, aber sobald diese aktiviert werden, gibt's in der Hinweismeldung nur "any" :(
Bei der
"waitUntil {!(isNil "obj1_active")}"-Methode wird die Meldung beim Aufruf für das neue Missionsziel zwar richtig angezeigt, aber leider sind die "versteckten" Missionsziele ab Beginn der Mission unter "Aufgaben" bereits zu sehen :motz:
Hab mal den Auszug meiner Briefing.sqf angehängt.
Hat da jemand bitte nen Tipp für mich?
THX


_diary6 = player createDiaryRecord ["Diary", ["bla", "bla"]];

_diary5 = player createDiaryRecord ["Diary", ["bla", "bla"]];

_diary4 = player createDiaryRecord ["Diary", ["bla", "bla"]];

_diary3 = player createDiaryRecord ["Diary", ["bla", "bla"]];

_diary2 = player createDiaryRecord ["Diary", ["bla", "bla"]];

_diary1 = player createDiaryRecord ["Diary", ["bla", "bla"]];

task4 = player createSimpleTask ["Fallujah sauber halten"];
task4 setSimpleTaskDescription ["Halten Sie die Stellung...", "Fallujah sauber halten", "Fallujah"];

player setCurrentTask task4;

[] spawn {
waitUntil {!(isNil "obj2_active")};
task3 = player createSimpleTask ["Im Nachschublager..."];
task3 setSimpleTaskDescription ["Unser nordwestlich...", "Situation Nachschublager klären", "Nachschublager"];
};
[] spawn {
waitUntil {!(isNil "obj1_active")};
task2 = player createSimpleTask ["Brücke..."];
task2 setSimpleTaskDescription ["Ein feindliches...", "Brücke verminen", "Minen"];
};

player setCurrentTask task2;

task1 = player createSimpleTask ["Zu unserer Hauptbasis ..."];
task1 setSimpleTaskDescription ["Sie werden...", "Fahren Sie zu unserer Hauptbasis", "obj4"];

player setCurrentTask task1;

exit;



Die "Nebenmissionen werden derzeit folgendermaßen aufgerufen:
Bei nem bestimmten WP ist die Zeile "obj1_active = true". Auf der Karte ist ein Auslöser (Name: obj1_active, L X B jeweils 0, aktivierung KEINER, Bei Aktivierung:
task2 setTaskState "CREATED"; [objNull, ObjNull, task2, "CREATED"] execVM "CA\Modules\MP\data\scriptCommands\taskHint.sq f"

Buliwyf 22.01.2011 13:27

exit; hat in einer SQF-Datei nix verloren... da gehts schonmal los... und Leerzeichen zwischen "sq f" auch nicht...

:p

Cyclone83 22.01.2011 14:28

ja, die Hint Zeile hab ich ausm Netz kopiert, meine passt ;)
aber danke für den Hinweis mit dem exit ^^
Funzt aber trotzdem noch ned richtig :(

Pfandgiraffe 22.01.2011 15:56

Code:

[] spawn {
waitUntil {!(isNil "obj1_active")};
task2 = player createSimpleTask ["Brücke..."];
task2 setSimpleTaskDescription ["Ein feindliches...", "Brücke verminen", "Minen"];
task2 setTaskState "CREATED"; [objNull, ObjNull, task2, "CREATED"] execVM  "CA\Modules\MP\data\scriptCommands\taskHint.sqf";
player setCurrentTask task2;
};

task1 = player createSimpleTask ["Zu unserer Hauptbasis ..."];
task1 setSimpleTaskDescription ["Sie werden...", "Fahren Sie zu unserer Hauptbasis", "obj4"];

player setCurrentTask task1;



any wird angezeigt weil task2 da noch nicht definiert ist bzw. sind die ziele in der anderen methode zu sehen weil die var obj1_active offensichtlich schon definiert wurde, also nicht mehr nil ist.
achte darauf diese variable nicht zu definieren (z.b. in der init mit false oder sowas in der art)

und deine player setCurrentTask taskx; nach jedem spawn {} sind nicht nur überflüssig sondern auch falsch. wenn dann nur in den code.




mfg


p.s.: wenn das für den mp sein soll dann achte darauf das alle clienten die briefing.sqf ausführen und die vars wie obj1_active auch public gemacht und auch JIP's mitgeteilt werden.

p.p.s.: eigentlich ist in dem briefing tutorial alles bis ins detail beschrieben.

Cyclone83 22.01.2011 16:23

Is für ne SP Mini Kampangne ^^
Also Könnte ich im obj1_active Auslöser obj1_active = false definieren?
Thx

Vienna 25.01.2011 14:54

Wenn du die Variable undefiniert machen willst, dann mit: obj1_active = nil


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 Uhr.

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias


SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119