HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   Zivilisten zu einer Einheit schicken (https://hx3.de/editing-scripting-187/zivilisten-einheit-schicken-24572/)

wotzefack 20.01.2015 18:14

Zivilisten zu einer Einheit schicken
 
ich möchte einen zivilisten zu einer einheit laufen lassen wenn:

-die einheit east oder west ist
-in einer bestimmten reichweite ist

der ziviliste irrt quasi durch die gegend und wenn er in zb 50m eine blufor-einheit entdeckt soll er direkt zu dieser laufen. die erste die er sieht.

ich habe scho versuche mit nearTargets gemacht aber irgendiwe kommt nix bei raus. kann mir da jemand helfen? hätte mich über ein radar gefreut dass mir person und dessen position wieder gibt aber finde nichts

wotzefack 21.01.2015 19:20

bin jetz doch weiter gekommen mit nearTargets weil ich es jetz in nem externem script getestet habe. in nem trigger hats scheinbar nicht funktioniert. jetz habe ich nur das problem, dass ich in nem array was suchen muss.. wie finde ich raus, wie lange dar array ist? den rest kann ich ja dann mit select rausholen.

Saint 21.01.2015 20:34

Ahoi,

ein kleiner Hinweis wie Du Dein Array mit Daten füllst wäre gut. Ansonsten kann ich nur auf das hier hinweisen:

KK's blog – ArmA Scripting Tutorials: Arrays (Part 1)
KK's blog – ArmA Scripting Tutorials: Arrays (Part 2)
KK's blog – ArmA Scripting Tutorials: Arrays (Part 3)
KK's blog – ArmA Scripting Tutorials: Arrays (Part 4) + arrayShuffle


mfg
Saint

wotzefack 21.01.2015 21:42

eben mit nearTargets. da sind 5 teile pro target drin.
aber die links von dir helfen mir jedenfalls weiter.

ich muss noch einiges lernen

Drunken Officer 22.01.2015 13:07

Count , damit kannst du den Array zählen

wotzefack 23.01.2015 20:16

hab jetz nur kurz probiert und is auch garnicht so einfach.. es wird ein array übergeben der aber pro eintrag (target) einen array hat mit verschiedenen typen. position als vector, name, seite und mit dem rest kann ich nix anfangen.. das zu zerstückeln hab ich versucht, aber komm noch nicht dahinter.

Drunken Officer 24.01.2015 12:05

Dein Vorhaben ist auch nicht so einfach für Anfänger.

Du mußt eine ständige Schleife laufen lassen, bis zu dem Zeitpunkt, bis der Zivi eine Figur im 50m Radius hat.

Schleife stoppen, die Figur anwählen. Dann entweder immer wieder Position zuweisen oder abwarten bis sich die Figur von ihrer letzten bekannten Posi x meter enfernt hat.

In die Schleife mit einarbeiten, wann die Person _x tot ist, neue Abfrage starten.

Saint 25.01.2015 08:09

Zitat:

Zitat von wotzefack (Beitrag 480774)
hab jetz nur kurz probiert und is auch garnicht so einfach.. es wird ein array übergeben der aber pro eintrag (target) einen array hat mit verschiedenen typen. position als vector, name, seite und mit dem rest kann ich nix anfangen.. das zu zerstückeln hab ich versucht, aber komm noch nicht dahinter.

Es wäre hilfreich wenn Du mal konkreter wirst. Hänge Deine Mission hier an oder poste den Code.

wotzefack 27.01.2015 18:49

tut mir leid ich hab viel zu tun im moment und komm nicht dazu. ich habe schon nen follower gemacht der dann quasi zum einsatz kommen kann wenn der einen gefunden hat. momentan tue ich mich nur schwer diese arrays zu zerlegen und die entsprechenden information zu erhalten.. ich werde am wochenende mal weiter machen und auch mal nen code hier vorzeigen..

mfg

CommanderX 29.01.2015 12:42

z.B. könnte man das so lösen. (nicht getestet!)
Den Inhalt in einer sqf Datei von der init.sqf starten

PHP-Code:

//Zivilist = civ1
_exit 0;
while {
true} do 
{
    { 
        if(
side _x == west OR side _x == eastthen 
            
{
            
_pos getPos _x;
            
_posciv getPos civ1;
            
_distance _posciv distance _pos;
            if(
_distance 50then 
                
{
                
_playerGrp group _x;
                [
civ1join _playerGrp;
                
_exit 1;
                };
            };
    
sleep 0.1;
     } forEach 
allUnits;
if (
_exit == 1exitWith {};
sleep 5;
}; 


wotzefack 29.01.2015 16:41

also in die gruppe soll der nicht! aber trotzdem danke weil mir genau sowas auch gefehlt hat.. momentan lass ich den kasper den ich retten soll mit doMove in ner while schleife hinterher laufen. jetz kann ich ihn gleich in die gruppe aufnehmen und sogar bewegen. :daumen:

dazu soll ja der zivilist auch egal welchen blufor er entdeckt dann anlaufen. dort wird er weiteres tun was mir halt dazu einfällt. ich probier evtl heute abend mal.

wenn ich die ausgabe komplett zum string mach, gibt es da was was die kommas zählt? evtl klappts ja so allerdings wenn da viele targets sind wird es bestimmt sehr buggy. arma is da scheinbar bisschen zimperlich.

wotzefack 29.01.2015 18:56

PHP-Code:

gesamtT = [];
person zivi;
radius 40;
gesamtA 0;



gesamtT person nearTargets radius;
gesamtA count gesamtT;

player groupChat format ["%1 ",gesamtA]; 


ich komm damit nichtmal weiter.. nomalerweise muss mir das jetz ausgeben wieviele es sind oder? das zählt doch die array einträge?! aber da kommt es schon zu fehlern

Drunken Officer 29.01.2015 23:55

und welcher Fehler wird angezeigt? Wie wird das Script ausgeführt?

Hast du auch diesen Eintrag gelesen?
Zitat:

A target will be removed from the array after about 360 seconds without contact.

wotzefack 30.01.2015 10:50

ich lass das script mit execVM starten. fehler zeigt es keinen an aber die zahl der einträge stimmen nicht. normal müsste ja jede einheit drinstehen, also wenn dort 5 leute stehen sollen auch 5 ausgegeben werden.. das klappt aber nicht. zb ich habe 5 blufor einheiten (nicht gruppiert) und 2 zivile plus mich als blufor. müssten dann 8 targets sein.. gruppiert ändert sich die ausgabe aber unlogisch.. wenn es heißt nach 360sec wird der array gelöscht, kann es sein dass die funktion einige zeit braucht? dachte dass es einmal gecheckt wird und sofort alle einträge vorhanden sind.

Saint 01.02.2015 07:42

Was genau passiert denn in diesem Teil des Scripts?
Code:

person = zivi;

wotzefack 01.02.2015 10:57

Zitat:

Zitat von Saint (Beitrag 480996)
Was genau passiert denn in diesem Teil des Scripts?
Code:

person = zivi;

im moment sinnfrei. is ne variable mit der person von der nearTargets ausgeht. ein zivilist heißt zivi


ich habe noch was gefunden aber versteh das nicht so ganz..

PHP-Code:

_HQ_Units = [];
      
//fill _HQ_Units with all units of a certain type i.e. side == west && _x isKindOf "vehicleType"
      
_HQPatrolsnearestObjects [_x,["SoldierWB"],500] forEach _HQ_Units;
      
      {
      
_spotted objNull;
      
_spottedList _x nearTargets 500;
      {
      if (
_x select 2==eastthen {
          
_spotted _x select 4;
          
_spottedPos _x select 0;
          
_spottedType _x select 1;
          };
      }forEach 
_spottedList;
      }forEach 
units _HQ_Patrols



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