HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   Bestimmte Objekte auswählen (https://hx3.de/editing-scripting-187/bestimmte-objekte-auswaehlen-24843/)

delvo_boss 10.05.2015 17:48

Bestimmte Objekte auswählen
 
Hallo,

ich will ein paar Popuptargets per Action wieder hochklappen lassen, mithilfe von
Code:

_object animate["terc", 1]
Nun sind es schon ziemlich viele Objekte und ich möchte nicht jedes Ziel einzeln benennen. Ich bin ein ziemlicher Noob in Sache scripten in Arma 3 und habe keinen Plan wie ich das machen kann. Ich habe anfangs an einen Array gedacht, allerdings muss ich da ja auch jedes Objekt einzeln benennen...
Kann mir da jemand bitte helfen?

Grüße

Tobi

[ate]minimal 10.05.2015 21:29

Versuchs ma damit nearestobjekts.


https://community.bistudio.com/wiki/nearestObjects

Buliwyf 10.05.2015 21:52

...ööööhm... ich hab kaum was mit diesen PopUp Scheiben zu tun gehabt, aber bislang haben die sich immer wieder von selbst aufgestellt. Oder gibts da Spezielle?

Eden 11.05.2015 11:05

Du kannst ein Array benutzen ohne jedes Objekt einzeln benennen zu müssen. Pack einfach folgendes in die init Zeile von jedem PopUpTarget:
Code:

arrayname = arrayname + [this];
Das fügt dann das Objekt in das Array "arrayname" ein. Dann kannst du mit foreach die Objekte wieder aufstellen oder halt abfragen starten oder was auch immer du machen willst.

delvo_boss 11.05.2015 15:33

Zitat:

Zitat von Buliwyf (Beitrag 483821)
...ööööhm... ich hab kaum was mit diesen PopUp Scheiben zu tun gehabt, aber bislang haben die sich immer wieder von selbst aufgestellt. Oder gibts da Spezielle?

Okay, sry da hab ich mich leider etwas unklar ausgedrückt:
Ich habe das Hochklappen mit
Code:

nopop=true
deaktiviert. Ich will sie erst wieder hochgeklappt haben, wenn ein Trigger aktiviert wurde.

Zitat:

Zitat von Eden
Du kannst ein Array benutzen ohne jedes Objekt einzeln benennen zu müssen. Pack einfach folgendes in die init Zeile von jedem PopUpTarget:
Code:
arrayname = arrayname + [this];
Das fügt dann das Objekt in das Array "arrayname" ein. Dann kannst du mit foreach die Objekte wieder aufstellen oder halt abfragen starten oder was auch immer du machen willst.

Okay, das probier ich mal aus.

Zitat:

Zitat von [ate
minimal] Versuchs ma damit nearestobjekts.


https://community.bistudio.com/wiki/nearestObjects

Und wie benutz ich das dann mit den Objekten?

Code:

targets = [];
{
    if (str _x find ": t_" > -1) then {
        targets animate["terc", 1]
    };
} forEach nearestObjects [player, [], 100];

Funktioniert irgendwie nicht.

[ate]minimal 11.05.2015 16:28

Bin grad nicht am pc kann dir aber später en genaueres beispiel schicken. Meine script kenntnise sind auch nicht so bombe.
Lies dir denn link durch dann klapt das schon.😊

Test = nearestObjects [player, ["Car","Tank"], 200];

Anstatt player kannst irgend ein okjekt oder eine position nehmen.

"Car","tank" sind klassen namen. Trag dort die bezeichnung von deinem klappziel ein. da werden dann alles was denn namen hatt gezählt oder gespeichert.

200 ist der radius um das objekt oder position.

Dann must nachher nur noch mit foreach ne zeile aufschreiben die test abarbeitet. Recht simpel eigentlich, wenn auch nicht zu 100% erklärt 😊.

[ate]minimal 11.05.2015 18:48

Hab mal was über die debbug console probiert und funkt!!!

Mast is das objekt was das Zentrum vorgibt.

wenn du es ausführst werden alle ziele aufeinmal um gekippt.
wenn du denn wert auf 0 stellst stehen se wieder senkrecht.

ObjektListe= nearestObjects [Mast,["Target_PopUp4_Moving_F"],50]; { _x animate["terc", 1]} foreach ObjektListe;

hoff ich konnt dir helfen

Drunken Officer 11.05.2015 20:55

Du könntest auch alle Objekte die den Typ haben auslesen und den Array aufpumpen.
Code:

if (isServer) then
{
   
    private ["_no"];
    aufgepumpterarray = [];     
    _no = nearestObjects [Abfragemittelpunkt, ["Target_PopUp4_Moving_F"], 1950];
   
        {
        if (typeof _x == "Target_PopUp4_Moving_F") then
            {
                aufgepumpterarray =  aufgepumpterarray + [_x];
            };
        } forEach _no;
}

Dann mit
for "_i" from 0 to (count aufgepumpterarray ) -1 do {
call compile format ["Scheibe%1 = _i", _i] }
Benennen

[ate]minimal 11.05.2015 21:19

@drunken

Mal nur interrese halber, was für en sinn steckt dahinter????

Drunken Officer 11.05.2015 22:25

Damit kann man die Scheiben direkt ansprechen. Natürlich kann man auch mit einer Zufallsabfrage die Scheiben ansprechen


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