HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-167/)
-   -   Count Crew von 2 Fahrzeugen (https://hx3.de/editing-scripting-167/count-crew-2-fahrzeugen-22019/)

Q_W_E_R 10.11.2012 09:54

Count Crew von 2 Fahrzeugen
 
Hallo Community,

Ich versuche Ein Script zu schreiben mit dem ich die Anzahl der Insassen aus 2 Booten lese und diese mit der Anzahl der lebenden Spieler zu vergleichen. Ich will das alle aus einer Gruppe sich auf die beiden boote verteilt bevor mein eigentliches Script startet. Das hab ich bisher:

Code:

cntPl = count units group player;
crwb1 = count crew boot1;
crwb2 = count crew boot2;

while (_ende == 1) do {

  if ( ((call crwb1) + (call crwb2)) == (call cntPl) )
  then
    {

      cutText ["TEST","BLACK OUT",8];
      sleep 2;
      _ende = 1;

    };
};

Doch leider funktioniert das nicht. Da brauch ich Hilfe.

DANKE.

Vienna 10.11.2012 10:30

Dafür sollte eigentlich diese Zeile reichen:

waitUntil {(count crew boot1)+(count crew boot2) == count units group player};

Q_W_E_R 10.11.2012 10:49

DANKE DANKE DANKE.

es klappt :daumen:

Vienna 10.11.2012 11:03

Sonst noch zu deiner Rountine:

Wenn du call verwenden willst, dann ist der Code in {} zu setzen:
cntPl = {count units group player};

und bei while (_ende == 1) do ... ist zuvor _ende auf 0 zu setzen: _ende = 0;

Um Fehler zu finden verwende im Code mehrere folgende Textausgaben zum Testen:
player groupChat "Test .....";
so kannst du feststellen wo z.B. in der while-Schleife der Fehler liegt. In deinem Fall wird sie vermutlich übersprungen.

Q_W_E_R 10.11.2012 11:16

Ok danke werde ich demnächst so immer testen :daumen:

Q_W_E_R 10.11.2012 12:37

Hab noch ne frage zu count und list befehl.
Ich weis wie man eine bestimmte Seite in einem Trigger listet
Code:

east countSide list trigger1;
so aber wie mache ich das mit leeren Fahrzeugen im berecih dieses Triggers?

Danke für schnelle Antworten

Vienna 10.11.2012 18:03

Erstelle einen "Jeder" Auslöser mit Namen A1. In seinen Bereich stelle ein leeres und ein besetztes Fahrzeuge rein.

Dann rufe zum Testen folgende Zeile auf:

Code:

{if (count crew _x == 0) then {player groupChat format["%1 ist leer!",typeOf _x]}} forEach list A1;
Daraus ist ersichtlich wie du leere Fahrzeuge heraussuchen kannst.

Q_W_E_R 03.01.2013 20:39

Hmm ich melde mich nochmal wegen den Befehl counter. Ich versuche zu zählen wieviele Benzinkanister in einem bestimmt Bereich sind die kanister heißen wenn ich sie create per script "fuel_can".

das hab ich versucht:

Code:


_numfuelcan1 = "fuel_can" countType list A1;

bekomme aber da nichts raus :(.

hast du oder allgemein Ihr eine Idee dazu?

danke für Hilfe :daumen:

Vienna 03.01.2013 21:36

Der Befehl countType ist fehlerhaft. Versuche es so:

_numfuelcan1 = {typeOf _x == "fuel_can"} count list A1;

Q_W_E_R 03.01.2013 21:42

hey gut danke funktioniert :daumen:

Q_W_E_R 04.01.2013 02:05

hey vienna hab noch ne frage wegen "fuel_can" hab ein script das mehrere "fuel_can"`s spawnen lässt und jetzt soll der Spieler sie einsammeln wenn ich sie spawnen lasse sieht das so aus:

Code:

posfuel = "fuel_can" createVehicleLocal getMarkerPos "PosKanister";

so wenn der spieler sie aufheben soll hab ich das

Code:

deleteVehicle posfuel;
doch das funktioniert nur immer bei einem!
(gehe davon aus das es der letzte ist der createt wird.)

kann ich da irgendwie mit "nearestObject" abreiten?

Danke für Hilfe ;)

Q_W_E_R 04.01.2013 10:23

ok befehl zurück hab es mit nearest object gemacht

Code:

_delete = nearestObject [player, "fuel_can"];
deleteVehicle _delete;


Vienna 04.01.2013 10:47

Erstelle die Kanister mit folgendem Skript:

SkriptName.sqf
Code:

// Skript erstellt einen Kanister und lösch ihn wieder
//  wenn sich der Spieler unter 1.5 Meter dem Objekt nähert.
//
// Als Parameter wird dem Objekt seine gewünschte Position übergeben.
//
// Aufrufbeispiel: getMarkerPos "MarkerName" execVM "SiriptName.sqf";

private "_obj";

_obj = "fuel_can" createVehicleLocal _this;
waitUntil {player distance _obj < 1.5};
deleteVehicle _obj;
player sideChat "Kanister entfernt!"

Nähert sich der Spieler unter 1,5 Meter dem Kanister, dann wird dieser automatisch entfernt und eine Meldung ausgegeben.

Für mehrere Kanister ist dem Skript jeweils eine andere Positionen zu übergeben.

Das skript ist so nicht für den Mehrspielermodus geeignet! Dazu müsste man die Bedingung ändern und es darf nur vom Server/Host aufgerufen werden. Auch ist dann die Ausgabe der Meldung nicht mehr so einfach, weil diese nur lokal beim Rechner aufscheint auf dem das Skript läuft.

Vienna 04.01.2013 12:03

Mit nearObjects ist das natürlich auch möglich. Mit dem folgenden Auslöser ist das auch Multiplayer tauglich:

Code:

Auslöser:
Achse A und B: 0
Aktivierung  : Keiner | Einmal
Bedingung    : true
Bei Akt.    : folgenden Code reinkopieren

temp = 0 spawn
 {
 while {true} do
  {
  waitUntil {(count (position player nearObjects ["fuel_can",1.5])) > 0};
  deleteVehicle ((position player nearObjects ["fuel_can",1.5]) select 0);
  player sideChat "Kanister entfernt!";
  sleep 1
  }
 };

Wenn sich ein Spieler einem Kanister unter 1,5 Meter nähert, dann wird der Kanister entfernt und eine Meldung beim entfernenden Spieler ausgegeben.


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