HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing (https://hx3.de/editing-139/)
-   -   Marker verfolgt Fahrzeug?? (https://hx3.de/editing-139/marker-verfolgt-fahrzeug-14964/)

Jois[GER] 11.07.2008 13:50

Marker verfolgt Fahrzeug??
 
Hallo Leute , ersma sorry das ich in letzter zeit soviele Freds aufmach , bin grad dabei ne größere Mission zu machen.....

Also , zum Problem:

Ich möchte das der Marker (B) den Bus (x1) verfolgt.... aber ich kriegs nur hin das er an den Startpunkt switcht....
Hilfe! :stupid:

Vienna 11.07.2008 14:14

#Schleife
"B" setMarkerPos position x1
~1
?alive x1 : goto "Schleife"

Jois[GER] 11.07.2008 14:19

Danke! :daumen:

Imutep 11.07.2008 17:48

und...
? (! alive Bus) : exitWith {deleteMarker "NameMarker"}; :confused:

Vienna 11.07.2008 18:25

Wenn die Schleife verlassen wird, dann ist der Bus bereits zerstört. Da bruchst du nicht nochmals abfragen.

Wenn du den Marker löschen willst, dann schreibst du den Befehl dazu einfach in die Zeile nach der Abfrage.

Imutep 12.07.2008 09:30

Is richtig ja. ;)
Aber sicher ist sicher.

Mr-Murray 12.07.2008 12:35

Wie wäre es denn hiermit:

If(alive Soldat1)Then{"S1-Symbol" setMarkerPos getPos Soldat1} Else{"S1-Symbol" setMarkerType "Empty";exit};

Steht in der downloadbaren Guideversion 1.02 von mir. Irgendwo auf Seite 125.



Grüße

Mr-Murray

Cyborg11 12.07.2008 13:14

Und wie muss man das machen, wenn der Marker das Fahrzeug erst verfolgen soll, wenn ich es gespottet habe?

Mr-Murray 12.07.2008 14:01

1. Auslöser erstellen
Größe 0/0
Bedingung: Player knowsAbout Car > 1
bei Auslösung: [Car] exec "script.sqs"

Ins Skript:

_car = _this
If(alive _car)Then{"S1-Symbol" setMarkerPos getPos _car} Else{"S1-Symbol" setMarkerType "Empty";exit};

Da kannst den Marker aus erst im Skript erstellen!


Cheers
Mr-Murray

Vienna 12.07.2008 14:32

Liste der Anhänge anzeigen (Anzahl: 1)
Das ganze in einem .sqf Skript sieht dann so aus:

Code:

//Wenn Spieler in einem Fahrzeug, dann Markierung auf der Karte
// mit Namen, Fahrzeugbezeichnung und fortlaufender Position.

private ["_m"];

//Marker erstellen
_m = createMarkerLocal["M120708",[0,0]];
_m setMarkerShapeLocal "ICON";
_m setMarkerSizeLocal [0.7,0.7];
_m setMarkerColorLocal "ColorRed";

while{true} do
  {
      if (player != vehicle player) then
        {
          _m setMarkerTextLocal format["%1 in %2",name player,typeof vehicle player];
          _m setMarkerTypeLocal "Dot";
          while{player != vehicle Player} do
            {
                _m setMarkerPosLocal position player;
                sleep 0.1
            };
          _m setMarkerTypeLocal "Empty";
        };
      sleep 2
  };

Der Marker wird über das Skript erstellt. Im Anhang eine Beispielmission.

Andi <C.L.A.N.> 21.10.2008 03:03

Also ich habe ein ähnliches Problem

habe einen Marker X


und ein Fahrzeug Y bereits auf der Map


ich möchte das der Marker sich ständig über dem Fahrzeug befindet ... - es geht um den Mobile Respawn von Norrn dem muss ich ne marker variable geben => und das Fahrzeug y is der mobile respawn ... !!!!

Bitte dazu schreiben wie ich das Script auslöse

also Auslöser Bedingung
Aktivierung ....

achso wen das fahzeug zerstört ist - spawned es nach paar sek. neu am platze wo es zerstört wurde ;)

thx schon mal

Vienna 21.10.2008 20:55

Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang ein Beispiel wie ohne ein Skript nur über einen Auslöser der Marker X dem Objekt Y laufend nachgesetzt wird.

Ein zweiter Auslöser erstellt das Objekt Y neu wenn es zerstört ist. Dabei ist zu beachten, wie das neue Objekt wieder auf den Namen Y erstellt wird.

Das Beispiel ist auch für Multiplayer-Missionen geeignet.

Andi <C.L.A.N.> 21.10.2008 21:22

yeah . thx ... einfach aber GENIAL ... voll der hammer ....

ganz großes danke nochmal :daumen:

Andi <C.L.A.N.> 22.10.2008 04:48

@ Vienna

also habe es so wie in deinen BSP übernommen - funzt wie Atze ....

arbeite in Kombi mit dem NORRN revive script ... und wenn ich an meinem Marker x spawne liege ich atürlich genau unter meinem Fahrzeug .. entweder man lässt den MArker 5m hinter dem Fahzeug verfolgen oder ändert irgendwas im NORRN
Script

hast du ne Idee ??????

habe die betreffene Zeile rot makiert ... _Base_2 is gleich Marker x :wird in einer revive_init.sqf vereinbart ....

respawn script von NORRN:

Code:

_no_respawn_points  =        NORRN_revive_array select 12;
_Base_1 =                NORRN_revive_array select 13;
_Base_2 =                NORRN_revive_array select 14;
_Base_3 =                NORRN_revive_array select 15;
_Base_4 =                NORRN_revive_array select 16;

_mobile_spawn =            NORRN_revive_array select 51;
_mobile_base_start =        NORRN_revive_array select 52;

if (_spawn_pos == 1 && _Base_1 != "" && !no_base_1 && !no_base_1b) then
{
    _name setpos getMarkerPos _Base_1;
    titleText ["You have respawned at Base", "PLAIN", 0.5];
    call compile format ["%1_respawn_at_base = true; publicVariable ""%1_respawn_at_base""", _name];
    If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3};
    NORRN_spawn_chosen = true;
};
if (_spawn_pos == 1 && _Base_1 != "" && no_base_1 || _spawn_pos == 1 && _Base_1 != "" && no_base_1b) then
{
    //Respawn point name for mobile spawn
    if (_mobile_spawn == 0) then
    {
        r_spawn1 = _Base_1
    }else{
        if ((getMarkerPos _Base_1) distance (getMarkerPos _mobile_base_start) > 20) then
        {
            r_spawn1 = _Base_1;
        }else{
            r_spawn1 = _mobile_base_start;
        };
    };
   
    if (_no_respawn_points == 1) then {_dialog_1 = createDialog "respawn_button_1";ctrlSetText [1, r_spawn1];};
    if (_no_respawn_points == 2) then {_dialog_1 = createDialog "respawn_button_2";ctrlSetText [1, r_spawn1];ctrlSetText [2, _Base_2];};
    if (_no_respawn_points == 3) then {_dialog_1 = createDialog "respawn_button_3";ctrlSetText [1, r_spawn1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];};
    if (_no_respawn_points == 4) then {_dialog_1 = createDialog "respawn_button_4";ctrlSetText [1, r_spawn1];ctrlSetText [2, _Base_2];ctrlSetText [3, _Base_3];ctrlSetText [4, _Base_4];};
    sleep 0.1;
    if (NORRN_r_time_expire) then
    {
        titletext ["This spawn point is currently occupied by enemy forces \n\nRevive timer has been exceeded. Choose marker for respawn", "BLACK FADED", 10];
    }else{
            titleText ["This spawn point is currently occupied by enemy forces", "PLAIN", 0.3];
        };
    if (NORRNCustomExec4 != "") then {call compile NORRNCustomExec4};
};

if (_spawn_pos == 2 && _Base_2 != "" && !no_base_2 && !no_base_2b) then
{
    _name setpos getMarkerPos _Base_2;
    titleText ["You have respawned at Mobile_MHQ", "PLAIN", 0.5];
    call compile format ["%1_respawn_at_base = true; publicVariable ""%1_respawn_at_base""", _name];
    If (NORRNCustomExec3 != "") then {call compile NORRNCustomExec3};
    NORRN_spawn_chosen = true;
};
if (_spawn_pos == 2 && _Base_2 != "" && no_base_2 ||  _spawn_pos == 2 && _Base_2 != "" && no_base_2b) then
{
    //Respawn point name for mobile spawn
    if (_mobile_spawn == 0) then
    {
        r_spawn1 = _Base_1
    }else{
        if ((getMarkerPos _Base_1) distance (getMarkerPos _mobile_base_start) > 20) then
        {
            r_spawn1 = _Base_1;
        }else{
            r_spawn1 = _mobile_base_start;
        };
    };..........bla bla bla

hm .. is bissel verwirrend wa ? vielleicht kannst du mir helfen ?? !!!

Grüße !

Vienna 22.10.2008 11:56

Anstelle deiner rot markierten Zeile füge folgende Zeilen ein:

Code:

_tempRadio = "Radio" createVehicleLocal getMarkerPos _Base_2;
_name setpos position _tempRadio;
deleteVehicle _tempRadio;

Das bewirkt, dass kurz ein Objekt an der Markerposition erstellt wird. Beim Erstellen von Objekten wird automatisch ein Platz gewählt, welcher nicht mit anderen Objekten überscheidet. An diese Position wird dann der Spieler gestellt.

Die Variable _tempRadio musst du wahrscheinlich vor der If Abfrage "initialisieren"!
z.B.: _tempRadio = objNull;

Andi <C.L.A.N.> 22.10.2008 12:38

yeah ... geht einwandfrei :daumen:


THX Vienna

Vienna 22.10.2008 15:36

Zum Marker wäre noch zu bemerken, dass der publik ist. Dass heißt, er ist für alle Spieler sichtbar.

Soll der Marker z.B. nur für die Westseite sichtbar sein, dann erstellst du den Marker mit Type "Leer" (im Spiel unsichtbar) und für die Westseitenspieler machst du ihn mit dieser Befehlszeile sichtbar:
if(playerSide==WEST) then{"X" setMarkerTypeLocal "Dot"}

Andi <C.L.A.N.> 22.10.2008 16:06

yeah thx .... aber die Opfor Seite is in meinem Falle AI .... aber Danke für den Hinweis - vielleicht nutzen es ja auch andere des Script ... supi :daumen:


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