HX3 Foren

HX3 Foren (http://hx3.de/)
-   Editing & Scripting (http://hx3.de/editing-scripting-167/)
-   -   Zufällige - Missionsziele (http://hx3.de/editing-scripting-167/zufaellige-missionsziele-18562/)

Anemia 27.01.2010 08:45

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 ;)

Buccs 27.01.2010 10:00

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

Anemia 27.01.2010 10:24

Zitat:

Zitat von Buccs (Beitrag 292833)
Also bei Cipher wird jedesmal ein neues Missionsziel bei Missionsstart generiert. Vielleicht guckst du da mal rein und kannst dir was abschauen.

Cipher Co-10 - Armaholic.com



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 :angel:

Buccs 27.01.2010 10:33

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.

Saint 27.01.2010 11:16

Hallo Ihr Lieben,

eine Lösungsmöglichkeit (sehr rudimentär....;) ): ....und ungetestet :ugly:
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   
    };
};


Anemia 28.01.2010 06:26

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
    {
       
       
    };
};

Ich brauche halt für alle 3 seiten "eigene" Ziele. Da die anderen Parteien vorher nicht wissen sollen was die "gegner" für aufgaben haben.

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 ?!

Saint 28.01.2010 11:10

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.

Rettich 28.01.2010 20:22

Liste der Anhänge anzeigen (Anzahl: 1)
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.

Anemia 29.01.2010 00:22

Zitat:

Zitat von Rettich (Beitrag 293136)
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.


Ok .. danke ich werds mir mal anschauen :daumen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 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