27.01.2010, 09:45 | #1 (permalink) |
Registriert seit: 20.05.2009
Beiträge: 605
|
Zufällige - Missionsziele
Hallo allerseits,
ich bastel derzeit an einer Mission "WayToVictory" die sich derzeit in der beta Phase befindet: =NAG= :: Thema anzeigen - Way to Victory - [TvT_16] Momentan ist die mission so aufgebaut das jede fraktion 2 fest definierte ziele hat, die zu erledigen sind. Um die ganze sache aber etwas spannender zu machen hätte ich gerne das bei jedem neustart der mission für jede Seite 2 - 3 zufällige ziele festgelegt werden, die ich vorher zusammengestellt habe. Also aus einem Pool von 10 Aufgaben pro seite soll dann beim Missionsstart für jede seite zwei zufällige ausgesucht werden. Irgendjemand eine idee dazu !? Scripten kann ich selbst leider nicht .... ich kann scripts verändern .. aber keine eigenen schreiben |
27.01.2010, 11:00 | #2 (permalink) |
Registriert seit: 03.10.2006
Ort: Aus dem Oooosten
Alter: 53
Beiträge: 1.286
|
Also bei Cipher wird jedesmal ein neues Missionsziel bei Missionsstart generiert. Vielleicht guckst du da mal rein und kannst dir was abschauen.
http://www.armaholic.com/page.php?id=6768 |
27.01.2010, 11:24 | #3 (permalink) |
Registriert seit: 20.05.2009
Beiträge: 605
|
Die mission kenne ich auch , allerdings ist es da ja immer das gleiche missionsziel .. nur die Lokation ändert sich , das ist ja aber nicht das was ich will |
27.01.2010, 11:33 | #4 (permalink) |
Registriert seit: 03.10.2006
Ort: Aus dem Oooosten
Alter: 53
Beiträge: 1.286
|
Stimmt schon, aber es wird bei Cipher aus einem Pool an Locations eins per Zufall ausgewählt.
So weit weg von deinen Plänen ist das vielleicht nicht. Es sind möglicherweise nur die Parameter abzuändern. |
27.01.2010, 12:16 | #5 (permalink) |
Registriert seit: 04.01.2008
Alter: 50
Beiträge: 314
|
Hallo Ihr Lieben,
eine Lösungsmöglichkeit (sehr rudimentär.... ): ....und ungetestet Code:
// tasks definieren _title = localize "str_task1"; _desc = localize "str_task1_desc"; _descshort = localize "str_task1_descshort"; _descdispl = localize "str_task1_descdispl"; _task = player createsimpletask [_title]; _task setsimpletaskdescription [_desc, _descshort, _descdispl]; _task setsimpletaskdestination (getmarkerpos "ziel1m"); task1 = _task; _title = localize "str_task2"; _desc = localize "str_task2_desc"; _descshort = localize "str_task2_descshort"; _descdispl = localize "str_task2_descdispl"; _task = player createsimpletask [_title]; _task setsimpletaskdescription [_desc, _descshort, _descdispl]; _task setsimpletaskdestination (getmarkerpos "ziel2m"); task2 = _task; . . . taskn = _task // taskpool definieren if (isnil "taskpool") then { taskpool = ["a","b","c","d",...,"n"] }; //tasks auswählen aus taskpool _tasks = taskpool; waitUntil { (count _tasks) > 0}; _selecttask = round random ((count _tasks)-1); _task = (_tasks select _selecttask); [_task] execVM execvm "randomtask.sqf"; //randomtask.sqf _task = _this select 0; switch (_task) do { case "a": { taskhint [localize "str_tasksetcurrent",[1,1,1,1], "taskcurrent"];player setcurrenttask task1 /*hier lassen sich beliebig viele weitere goodies einbauen (z.b gegner/camps/vehicles/auslöser/marker werden gespawnt, u.v.m */ }; case "b": { taskhint [localize "str_tasksetcurrent",[1,1,1,1], "taskcurrent"];player setcurrenttask task2 }; case "c": { taskhint [localize "str_tasksetcurrent",[1,1,1,1], "taskcurrent"];player setcurrenttask task3 }; . . . case "n": { taskhint [localize "str_tasksetcurrent",[1,1,1,1], "taskcurrent"];player setcurrenttask taskn }; };
__________________
"Um nirgends eine gähnende Leere zu lassen, wollen wir uns vorstellen, daß aller Orten und zu jeder Zeit etwas Wahrnehmbares vorhanden ist. Um nicht Materie oder Elektrizität zu sagen, will ich für dieses Etwas das Wort Substanz brauchen." Hermann Minkowski
Geändert von Saint (27.01.2010 um 12:32 Uhr). |
28.01.2010, 07:26 | #6 (permalink) |
Registriert seit: 20.05.2009
Beiträge: 605
|
Danke Bo ,
habs leider noch nicht testen können aber das sieht schonmal ganz gut aus , derzeit benutze ich ein Briefing Template von Mikey das ganze sieht so aus: Code:
/* * Mikey's Briefing Template v0.03 * * * Notes: * - Use the tsk prefix for any tasks you add. This way you know what the varname is for by just looking at it, and * aids you in preventing using duplicate variable names. * * * Required briefing commands: * - Create Note: player createDiaryRecord ["Diary", ["*The Note Title*", "*The Note Message*"]]; * - Create Task: tskExample = player createSimpleTask ["*The Task Title*"]; * - Set Task Description: tskExample setSimpleTaskDescription ["*Task Message*", "*Task Title*", "*Task HUD Title*"]; * * Optional briefing commands: * - Set Task Destination: tskExample setSimpleTaskDestination (getMarkerPos "mkrObj1"); // use an existing marker! * - Set the Current Task: player setCurrentTask tskExample; * * Formatting: * - To add a newline: <br/> * - To add a marker link: <marker name='mkrObj1'>Attack this area!!!</marker> * - To add an image: <img image='somePic.jpg'/> * - custom width/height: <img image='somePic.jpg' width='200' height='200'/> * * Commands to use in-game: * - Set Task State: tskExample setTaskState "SUCCEEDED"; // states: "SUCCEEDED" "FAILED" "CANCELED" "CREATED" * - Get Task State: taskState tskExample; * - Get Task Description: taskDescription tskExample; // returns the *task title* as a string * - Show Task Hint: [tskExample] call mk_fTaskHint; // make sure tskExample and the mk_fTaskHint function exist * * * Authors: Jinef & mikey */ // since we're working with the player object here, make sure it exists waitUntil { !isNull player }; // all hip now ;-) waitUntil { player == player }; switch (side player) do { case WEST: // BLUFOR briefing goes here { player createDiaryRecord["Diary", ["Info", "<br/>Autor: =NAG= Anemia<br/>Version: 1.5"]]; player createDiaryRecord["Diary", ["Situation", "<br/>Die Russischen Einheiten haben sich im Norden eingegraben.<br/>Sie nehmen alles mit ihrem Mörser unter beschuss was ihnen unter die Augen kommt.<br/><br/>Eines unserer vorgelagerten Sanitäts Einrichtungen benötigt dringend neues Benzien um die Stromgeneratoren am laufen zu halten. Ohne Strom ist dieses Lager nutzlos."]]; player createDiaryRecord["Diary", ["Mission", "<br/>Das Lazaret in <marker name='lopatino'>Lopatino</marker> benötigt dringend Treibstoff um die Stromgeneratoren am laufen zu halten.<br/>Wir müssen den Treibstoff-LKW sicher nach <marker name='lopatino'>Lopatino</marker> bringen."]]; // Secondary Objective //>---------------------------------------------------------< // Primary Objective tskwest1 = player createSimpleTask["Primary: Treibstoff-LKW"]; tskwest1 setSimpleTaskDescription["Wir müssen den Treibstoff LKW von <marker name='pulkowo'>Pulkowo</marker> nach <marker name='lopatino'>Lopatino</marker> zu unserem Lazaret bringen.<br /><br />Der Feind darf unter keinen Umständen den LKW erbeuten", "Treibstoff-LKW", "Treibstoff-LKW"]; player setCurrentTask tskwest1; // weitere Missionsziele bisher im Editor über Trigger }; case EAST: // REDFOR briefing goes here { player createDiaryRecord["Diary", ["Info", "<br/>Autor: =NAG= Anemia<br/>Version: 1.5"]]; player createDiaryRecord["Diary", ["Situation", "<br/>Der Wiederstand breitet sich im Westen immer weiter aus. Wir müssen unbedingt Städte unter Kontrolle bringen, bevor die US-Einheiten uns zuvor kommen."]]; player createDiaryRecord["Diary", ["Mission", "<br/>Wir müssen <marker name='pustoschka'>Pustoschka</marker> vom Feindlichen Wiederstand befreihen, bevor uns die US-Einheiten zuvor kommen."]]; // Secondary Objective //>---------------------------------------------------------< // Primary Objective tskeast1 = player createSimpleTask["Primary: Pustoschka einnehmen"]; tskeast1 setSimpleTaskDescription["Wir müssen <marker name='pustoschka'>Pustoschka</marker> vom Feindlichen Wiederstand befreihen, bevor uns die US-Einheiten zuvor kommen.", "Pustoschka einnehmen", "Pustoschka einnehmen"]; tskeast1 setSimpleTaskDestination (getMarkerPos "pustoschka"); player setCurrentTask tskeast1; // weitere Missionsziele bisher im Editor über Trigger }; case RESISTANCE: // RESISTANCE/INDEPENDENT briefing goes here { player createDiaryRecord["Diary", ["Info", "<br/>Autor: =NAG= Anemia<br/>Version: 1.5"]]; player createDiaryRecord["Diary", ["Situation", "<br/>Benzin ist knapp in diesen zeiten, die meisten Tankstellen sind seid Wochen geschlossen weil sie keine Treibstoff-Lieferung mehr bekommen.<br/><br/>Die USA hat ein Handelsboykott über Tschernaruss verhängt, ohne Rücksicht auf die Zivile Bevölkerung.<br/>Also werden wir uns von ihnen Treibstoff besorgen müssen."]]; player createDiaryRecord["Diary", ["Mission", "<br/>Wir haben einen Funkspruch des US-Lazarets in <marker name='lopatino'>Lopatino</marker> abgefangen.<br/>Sie benötigen dringend Treibstoff aus dem US-Stützpunkt in der nähe von <marker name='pulkowo'>Pulkowo</marker>.<br/><br/>Das ist unsere Chance !!<br/> Wir müssen den LKW unbeschadet entführen."]]; // Secondary Objective //>---------------------------------------------------------< // Primary Objective tskgue1 = player createSimpleTask ["Treibstoff-LKW Sicherstellen"]; tskgue1 setSimpleTaskDescription ["<br/>Wir haben einen Funkspruch des US-Lazarets in <marker name='lopatino'>Lopatino</marker> abgefangen.<br/>Sie benötigen dringend Treibstoff aus dem US-Stützpunkt in der nähe von <marker name='pulkowo'>Pulkowo</marker>.<br/><br/> Wir müssen den LKW unbeschadet entführen.<br/>", "Treibstoff-LKW", "Treibstoff-LKW"]; player setCurrentTask tskgue1; // weitere Missionsziele bisher im Editor über Trigger }; case CIVILIAN: // CIVILIAN briefing goes here { }; }; Derzeit ist pro Partei nur ein Ziel in der Briefing.sql definiert , das zweite Ziel wird jeweils per auslöser hinzugefügt. Es währe nun nicht das Problem wenn beide Missionsziele der jeweiligen Partei von anfang an bekannt sind. Hast du vielleicht eine idee wie ich das bewerkstellige ?! |
28.01.2010, 12:10 | #7 (permalink) |
Registriert seit: 04.01.2008
Alter: 50
Beiträge: 314
|
Ich nutze das Briefing Template von Lester und Rettich.
Evtl. würde sich dort eine "player side" Abfrage integrieren lassen, habe ich allerdings noch nicht ausprobiert. Ein Vorteil von Lesters Template ist, dass man alle Tasks vordefinieren kann, sie dann "unsichtbar" macht, um sie anschließend bei Bedarf zu aktivieren. Das Template bekommst du hier am Ende des ersten Posts, dort ist es angehängt.
__________________
"Um nirgends eine gähnende Leere zu lassen, wollen wir uns vorstellen, daß aller Orten und zu jeder Zeit etwas Wahrnehmbares vorhanden ist. Um nicht Materie oder Elektrizität zu sagen, will ich für dieses Etwas das Wort Substanz brauchen." Hermann Minkowski
|
28.01.2010, 21:22 | #8 (permalink) |
Wie Onkel Bo schon sagte, mit Lesters Briefing müsste es gehen habe auch schon mehrere Seiten im Briefing integriert. Und im Nachhinein müsste man auch per Skript neue Ziele kreieren können, es geht jedenfalls mit den Notizen.
Guck dir mal diese Mission an, sie ist zwar noch nicht ganz fertig, aber aus den enthaltenen Skripten müsstest du dir etwas basteln können. Für dich sollte insbesondere die „Briefing.sqf“, „Hintergrund.sqf“ und z.B. „RandomFunkDolina.sqf“ wichtig sein. |
|
29.01.2010, 01:22 | #9 (permalink) |
Registriert seit: 20.05.2009
Beiträge: 605
|
Ok .. danke ich werds mir mal anschauen |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Missionsziele/Briefing und Missionsdateien | Mr.NiceGuy | Editing & Scripting | 27 | 25.03.2010 12:53 |
Zufällige Position einer Einheit/Objekt | Phoenixmaster13 | Editing & Scripting | 8 | 31.12.2009 14:35 |
Coop Lag und Missionsziele | Mr.NiceGuy | Multiplayer | 18 | 22.08.2009 16:28 |
Zufällige Wegpunkte | daniel123 | Editing & Scripting | 12 | 10.07.2009 21:45 |
Missionsziele abhaken+nächstes Ziel | Mr.NiceGuy | Editing & Scripting | 5 | 16.06.2009 18:19 |