1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Downloads
  4. Galerie
    1. Alben
  5. Toolbox
    1. Passwort Generator
    2. Portchecker
  6. Mitglieder
    1. Mitgliedersuche
    2. Benutzer online
    3. Trophäen
    4. Team
Do: 15 Mai 2025
  • Anmelden oder registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Forum
  • Dateien
  • Seiten
  • Bilder
  • Erweiterte Suche

Schön, dass du den Weg zu NodeZone.net gefunden hast! Aktuell bist du nicht angemeldet und kannst deshalb nur eingeschränkt auf unsere Community zugreifen. Um alle Funktionen freizuschalten, spannende Inhalte zu entdecken und dich aktiv einzubringen, registriere dich jetzt kostenlos oder melde dich mit deinem Account an.

Anmelden oder registrieren
    1. Nodezone.net Community
    2. Forum
    3. Gameserver & Hosting
    4. ArmA Series - ArmA 3 / Reforger
    5. Hilfeforum

    Zwei "while"-Schleifen hintereinandern

      • Altis Life
    • fixle2011
    • 26. Februar 2020 um 16:22
    • Erledigt
    • fixle2011
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      241
      • 26. Februar 2020 um 16:22
      • #1

      Heyho,

      folgendes Problem:

      Ich möchte in ein Script zwei while Schleifen einbauen, er führt mir aber immer nur die Erste aus, gibt es eine Möglichkeit das auch die Schleife danach ausgeführt wird?

      Beide Schleifen sollen extra nicht zusammengeführt werden!

      Hier mein bisheriger Code:

      Spoiler anzeigen

      while { alive _vehicle && _vehicle getVariable["lights", false] } do {

      if( player distance _vehicle < 500 ) then {

      _brightness = [2, 20] select (sunOrMoon isEqualTo 1);

      _right setLightBrightness 0;
      uisleep 0.08;
      _left setLightBrightness _brightness;
      uisleep 0.08;
      _left setLightBrightness 0;
      uisleep 0.08;
      _left setLightBrightness _brightness;
      uisleep 0.08;
      _left setLightBrightness 0;
      uisleep 0.08;
      _right setLightBrightness _brightness;
      uisleep 0.08;
      _right setLightBrightness 0;
      uisleep 0.08;
      _right setLightBrightness _brightness;
      uisleep 0.08;

      } else {
      uisleep 1;
      };
      };

      while { alive _vehicle && _vehicle getVariable["lights", false] } do {

      if( player distance _vehicle < 500 ) then {

      _brightness = [2, 20] select (sunOrMoon isEqualTo 1);

      _extra1 setLightBrightness 0;
      uisleep 0.08;
      _extra2 setLightBrightness _brightness;
      uisleep 0.08;
      _extra2 setLightBrightness 0;
      uisleep 0.08;
      _extra2 setLightBrightness _brightness;
      uisleep 0.08;
      _extra2 setLightBrightness 0;
      uisleep 0.08;
      _extra1 setLightBrightness _brightness;
      uisleep 0.08;
      _extra1 setLightBrightness 0;
      uisleep 0.08;
      _extra1 setLightBrightness _brightness;
      uisleep 0.08;

      } else {
      uisleep 1;
      };
      };

      Ich hoffe Ihr könnt mir helfen :).

      Liebe Grüße,

      fixle2011.

      source.gif

    • Deathman
      Profi
      Reaktionen
      259
      Trophäen
      10
      Beiträge
      676
      Dateien
      12
      Bilder
      106
      • 26. Februar 2020 um 16:46
      • #2

      Naja ersten das sind beides die gleichen While Schleifen und noch was, wenn es eine Schleife ist und du diese Untereinander Plaziert hast macht es folgendes, Ich mache jetzt mal ein Beispiel:

      Schleife I ------ > Ende Schleife I ohh ist eine Schleife ich beginne wieder von vorne Schleife I

      das sagt uns so lange die schleife keinen End punkt hat geht sie nie an die nächste weiter.

      Wenn ich dumm war und es jetzt Falsch eklärt habe dann bitte Berichtige das doch einer Danke

    • fixle2011
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      241
      • 26. Februar 2020 um 16:58
      • #3

      Okay, gibt es dann eine Möglichkeit, dass trotzdem beide Schleifen ausgeführt werden?

      source.gif

    • flippa
      Fortgeschrittener
      Reaktionen
      30
      Trophäen
      8
      Beiträge
      319
      • 26. Februar 2020 um 17:18
      • #4

      Du könntest die Schleifen auf zwei unterschiedliche Dateien aufteilen

    • Henne
      Nerd
      Reaktionen
      155
      Trophäen
      7
      Beiträge
      840
      Bilder
      7
      • 26. Februar 2020 um 17:23
      • #5
      Zitat von Deathman

      Naja ersten das sind beides die gleichen While Schleifen

      Naja, eben nicht ganz. :D

      Unterschied
      Code: 1. Schleife
      _right setLightBrightness 0;
      _left setLightBrightness _brightness;
      _left setLightBrightness 0;
      _left setLightBrightness _brightness;
      _left setLightBrightness 0;
      _right setLightBrightness _brightness;
      _right setLightBrightness 0;
      _right setLightBrightness _brightness;
      Code: 2. Schleife
      _extra1 setLightBrightness 0;
      _extra2 setLightBrightness _brightness;
      _extra2 setLightBrightness 0;
      _extra2 setLightBrightness _brightness;
      _extra2 setLightBrightness 0;
      _extra1 setLightBrightness _brightness;
      _extra1 setLightBrightness 0;
      _extra1 setLightBrightness _brightness;

      Aber ja, sowas lässt sich auch anders, schöner schreiben.

      Außerdem werden die Schleifen nicht Ewigkeiten wiederholt. Denn beide haben eine Bedingung.

      Die dummerweiße identisch ist. Also kurzum, es werden beide Schleifen "ausgeführt".


      Der aktuelle Ablauf ist folgender:

      1. Script wird aufgerufen
      2. Die erste Schleife wird aufgerufen und die Bedingung geprüft
      3. Die erste Schleife wird solange wiederholt, bis die Bedingung nicht mehr gültig ist.
      4. Die zweite Schleife wird aufgerufen und die Bedingung geprüft
      5. Da die Bedingung nicht erfüllt ist, wird die zweite Schleife übersprungen
      6. Das Script ist beendet


      Um nun die total einfache Lösung zu präsentieren:

      Du möchtest, dass beide Schleife zeitgleich ausgeführt werden (das geht aus deinem Text nur indirekt hervor).

      Also benötigst du spawn, damit Code gleichzeitig ausgeführt werden kann.

      Code
      [] spawn {
          Schleife 1
      };
      [] spawn {
          Schleife 2
      }

      Somit werden die beiden Schleifen (fast) zeitgleich aufgerufen und die Bedingung ist bei beiden noch gegeben, somit werden beide ausgeführt.

    • fixle2011
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      241
      • 26. Februar 2020 um 18:25
      • #6

      Also wie jetzt unten umgeändert?

      Der neue Code

      []spawn {

      while { alive _vehicle && _vehicle getVariable["lights", false] } do {

      if( player distance _vehicle < 500 ) then {

      _brightness = [2, 20] select (sunOrMoon isEqualTo 1);

      _right setLightBrightness 0;

      uisleep 0.08;

      _left setLightBrightness _brightness;

      uisleep 0.08;

      _left setLightBrightness 0;

      uisleep 0.08;

      _left setLightBrightness _brightness;

      uisleep 0.08;

      _left setLightBrightness 0;

      uisleep 0.08;

      _right setLightBrightness _brightness;

      uisleep 0.08;

      _right setLightBrightness 0;

      uisleep 0.08;

      _right setLightBrightness _brightness;

      uisleep 0.08;

      } else {

      uisleep 1;

      };

      };

      };

      []spawn {

      while { alive _vehicle && _vehicle getVariable["lights", false] } do {

      if( player distance _vehicle < 500 ) then {

      _brightness = [2, 20] select (sunOrMoon isEqualTo 1);

      _extra1 setLightBrightness 0;

      uisleep 0.08;

      _extra2 setLightBrightness _brightness;

      uisleep 0.08;

      _extra2 setLightBrightness 0;

      uisleep 0.08;

      _extra2 setLightBrightness _brightness;

      uisleep 0.08;

      _extra2 setLightBrightness 0;

      uisleep 0.08;

      _extra1 setLightBrightness _brightness;

      uisleep 0.08;

      _extra1 setLightBrightness 0;

      uisleep 0.08;

      _extra1 setLightBrightness _brightness;

      uisleep 0.08;

      } else {

      uisleep 1;

      };

      };

      };

      source.gif

      Einmal editiert, zuletzt von fixle2011 (26. Februar 2020 um 18:32)

    • blackfisch
      Legende
      Reaktionen
      2.944
      Trophäen
      9
      Beiträge
      5.966
      Dateien
      6
      Bilder
      63
      • 26. Februar 2020 um 18:31
      • #7

      Darf ich fragen wieso du es nicht einfach zusammenführst? Gleiche conditions, gleiches sleep..... Es macht einfach keinen Sinn dafür 2 einzelne schleifen zu machen 😅

      #MakeArmaNotWar

      Kein Support via PN & Steam! / No Support via DM & Steam!


      Mit freundlichen Grüßen
      blackfisch
      ______________________

      Web: blackfisch.me

      GitHub: GitHub.com/blackfisch

      Mail: [email protected]

      ______________________
      Wichtige Links:
      [Erklärung|Leitfaden] Code Optimierung

      [Tutorial] life_fnc_MP zu remoteExec

      Ohne Logs & entsprechende Dateien kein Support!

      ______________________

    • fixle2011
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      241
      • 26. Februar 2020 um 18:34
      • #8

      blackfisch doch es macht Sinn.

      Will ich nur mit einer Funktion beziehungsweise einem Script mehrere Lichtpunkte generieren, kann ich im selben Script in den unterschiedlichen Schleifen, unterschiedliche Zeiten setzen. Zum Beispiel kann ich vordere Lichter im 0.8 Sekundentakt aufleuchten lassen und die hinteren dann im 3 Sekundentakt usw.

      Durch mehrere Schleifen kann ich also in einer Funktion mehrere Lichtpunkte unterschiedlich generieren.

      source.gif

    • Henne
      Nerd
      Reaktionen
      155
      Trophäen
      7
      Beiträge
      840
      Bilder
      7
      • 26. Februar 2020 um 18:53
      • #9
      Zitat von fixle2011

      Also wie jetzt unten umgeändert?

      Grundsätzlich ja.

      Nun frage ich aber, woher kommen die lokalen Variablen?

      Wird einige Variable undefined Fehler werfen. ;)

    • fixle2011
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      241
      • 26. Februar 2020 um 18:57
      • #10

      Henne keine Angst xD, ist auch nur ein Teil des Codes :).

      #wirtschaftsspionage usw. ^^

      source.gif

    • fixle2011
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      241
      • 26. Februar 2020 um 19:14
      • #11

      Mhhhh...

      ich habe es jetzt abgeändert und jetzt kommen tatsächlich Fehler in den Variablen, kann ich die nicht vorher definieren sondern muss sie in der spawn Schleife definieren?

      Wäre Variante 1 oder Variante 2 dann richtig?

      Variante 1

      _vehicle = 1

      []spawn {

      while { alive _vehicle && _vehicle getVariable["lights", false] } do {

      if( player distance _vehicle < 500 ) then {

      _brightness = [2, 20] select (sunOrMoon isEqualTo 1);

      _right setLightBrightness 0;

      uisleep 0.08;

      _left setLightBrightness _brightness;

      uisleep 0.08;

      _left setLightBrightness 0;

      uisleep 0.08;

      _left setLightBrightness _brightness;

      uisleep 0.08;

      _left setLightBrightness 0;

      uisleep 0.08;

      _right setLightBrightness _brightness;

      uisleep 0.08;

      _right setLightBrightness 0;

      uisleep 0.08;

      _right setLightBrightness _brightness;

      uisleep 0.08;

      } else {

      uisleep 1;

      };

      };

      };

      []spawn {

      while { alive _vehicle && _vehicle getVariable["lights", false] } do {

      if( player distance _vehicle < 500 ) then {

      _brightness = [2, 20] select (sunOrMoon isEqualTo 1);

      _extra1 setLightBrightness 0;

      uisleep 0.08;

      _extra2 setLightBrightness _brightness;

      uisleep 0.08;

      _extra2 setLightBrightness 0;

      uisleep 0.08;

      _extra2 setLightBrightness _brightness;

      uisleep 0.08;

      _extra2 setLightBrightness 0;

      uisleep 0.08;

      _extra1 setLightBrightness _brightness;

      uisleep 0.08;

      _extra1 setLightBrightness 0;

      uisleep 0.08;

      _extra1 setLightBrightness _brightness;

      uisleep 0.08;

      } else {

      uisleep 1;

      };

      };

      };

      Variante 2

      spawn [] {

      _vehicle = 1

      while { alive _vehicle && _vehicle getVariable["lights", false] } do {

      if( player distance _vehicle < 500 ) then {

      _brightness = [2, 20] select (sunOrMoon isEqualTo 1);

      _right setLightBrightness 0;

      uisleep 0.08;

      _left setLightBrightness _brightness;

      uisleep 0.08;

      _left setLightBrightness 0;

      uisleep 0.08;

      _left setLightBrightness _brightness;

      uisleep 0.08;

      _left setLightBrightness 0;

      uisleep 0.08;

      _right setLightBrightness _brightness;

      uisleep 0.08;

      _right setLightBrightness 0;

      uisleep 0.08;

      _right setLightBrightness _brightness;

      uisleep 0.08;

      } else {

      uisleep 1;

      };

      };

      };

      []spawn {

      while { alive _vehicle && _vehicle getVariable["lights", false] } do {

      if( player distance _vehicle < 500 ) then {

      _brightness = [2, 20] select (sunOrMoon isEqualTo 1);

      _extra1 setLightBrightness 0;

      uisleep 0.08;

      _extra2 setLightBrightness _brightness;

      uisleep 0.08;

      _extra2 setLightBrightness 0;

      uisleep 0.08;

      _extra2 setLightBrightness _brightness;

      uisleep 0.08;

      _extra2 setLightBrightness 0;

      uisleep 0.08;

      _extra1 setLightBrightness _brightness;

      uisleep 0.08;

      _extra1 setLightBrightness 0;

      uisleep 0.08;

      _extra1 setLightBrightness _brightness;

      uisleep 0.08;

      } else {

      uisleep 1;

      };

      };

      };

      source.gif

      Einmal editiert, zuletzt von fixle2011 (26. Februar 2020 um 19:24)

    • Henne
      Nerd
      Reaktionen
      155
      Trophäen
      7
      Beiträge
      840
      Bilder
      7
      • 26. Februar 2020 um 19:21
      • #12

      Es sind nunmal private Variablen.

      Die sind nur innerhalb eines Scopes gültig.

      Du musst also nun die Variable übergeben.

    • fixle2011
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      241
      • 26. Februar 2020 um 19:25
      • #13

      Okay, wie mach ich das dann? Wie in meiner zweiten Variante?

      source.gif

    • fixle2011
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      241
      • 26. Februar 2020 um 21:13
      • #14

      Oder muss die mit nem anderen Code übergeben werden?

      source.gif

    • Henne
      Nerd
      Reaktionen
      155
      Trophäen
      7
      Beiträge
      840
      Bilder
      7
      • 26. Februar 2020 um 22:38
      • #15

      Wiki:

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

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

      Beispielcode:

      Code
      private _var = "bsp";
      
      [_var] spawn {
          params ["_var"];
          // _var enthält "bsp"
      }
    • fixle2011
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      241
      • 26. Februar 2020 um 22:49
      • #16

      Vorher ist die Variable _vehicle so definiert:

      Code
      private _vehicle = param[0, objNull, [objNull]];
      if( isNull _vehicle ) exitWith {};

      Wie setze ich das dann ein?

      So?

      Spoiler anzeigen

      [_vehicle] spawn {

      params [_vehicle]

      while { alive _vehicle && _vehicle getVariable["lights", false] } do {

      if( player distance _vehicle < 500 ) then {

      _brightness = [2, 20] select (sunOrMoon isEqualTo 1);

      _right setLightBrightness 0;

      uisleep 0.08;

      _left setLightBrightness _brightness;

      uisleep 0.08;

      _left setLightBrightness 0;

      uisleep 0.08;

      _left setLightBrightness _brightness;

      uisleep 0.08;

      _left setLightBrightness 0;

      uisleep 0.08;

      _right setLightBrightness _brightness;

      uisleep 0.08;

      _right setLightBrightness 0;

      uisleep 0.08;

      _right setLightBrightness _brightness;

      uisleep 0.08;

      } else {

      uisleep 1;

      };

      };

      };

      []spawn {

      while { alive _vehicle && _vehicle getVariable["lights", false] } do {

      if( player distance _vehicle < 500 ) then {

      _brightness = [2, 20] select (sunOrMoon isEqualTo 1);

      _extra1 setLightBrightness 0;

      uisleep 0.08;

      _extra2 setLightBrightness _brightness;

      uisleep 0.08;

      _extra2 setLightBrightness 0;

      uisleep 0.08;

      _extra2 setLightBrightness _brightness;

      uisleep 0.08;

      _extra2 setLightBrightness 0;

      uisleep 0.08;

      _extra1 setLightBrightness _brightness;

      uisleep 0.08;

      _extra1 setLightBrightness 0;

      uisleep 0.08;

      _extra1 setLightBrightness _brightness;

      uisleep 0.08;

      } else {

      uisleep 1;

      };

      };

      };

      source.gif

    • Henne
      Nerd
      Reaktionen
      155
      Trophäen
      7
      Beiträge
      840
      Bilder
      7
      • 26. Februar 2020 um 23:21
      • #17

      Bei der 1. Schleife ist es schonmal fast richtig.

      Bei der 2. Schleife musst es halt auch angeben.

      Der richtige Syntax von params ist: params ["_varname"]

      Deshalb habe ich auch die Doku geschickt, damit du dort nachlesen kannst. ;)

      Außerdem solltest du deine Lichter (_left, _right und _extra1, _extra2) nicht vergessen. ;)

    • fixle2011
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      241
      • 26. Februar 2020 um 23:39
      • #18

      Okay, die kann ich einfach mit params ["_extra1"] übergeben oder muss das ganze auch nochmal vor den spawn?

      source.gif

    • Henne
      Nerd
      Reaktionen
      155
      Trophäen
      7
      Beiträge
      840
      Bilder
      7
      • 27. Februar 2020 um 00:02
      • #19

      Die Doku hast du aber schon gelesen?

      Syntax: params [element1, element2,...elementN] -> params ["_var1", "_var2", "_varN"]

      Bei spawn ist es möglich Parameter anzugeben.

      z.B. [_var1, _var2, _varN] spawn {}

    • fixle2011
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      241
      • 27. Februar 2020 um 19:24
      • #20

      Der Code wurde in folgendes geändert:

      Der neue Code

      [_vehicle, _attachRight, _attachLeft, _attachExtra1, _attachExtra2, _left, _right, _extra1, _extra2] spawn {

      params ["_vehicle", "_attachRight", "_attachLeft", "_attachExtra1", "_attachExtra2", "_left", "_right", "_extra1", "_extra2"];

      while { alive _vehicle && _vehicle getVariable["lights", false] } do {

      if( player distance _vehicle < 500 ) then {

      _brightness = [2, 20] select (sunOrMoon isEqualTo 1);

      _right setLightBrightness 0;
      uisleep 0.08;
      _left setLightBrightness _brightness;
      uisleep 0.08;
      _left setLightBrightness 0;
      uisleep 0.08;
      _left setLightBrightness _brightness;
      uisleep 0.08;
      _left setLightBrightness 0;
      uisleep 0.08;
      _right setLightBrightness _brightness;
      uisleep 0.08;
      _right setLightBrightness 0;
      uisleep 0.08;
      _right setLightBrightness _brightness;
      uisleep 0.08;

      } else {
      uisleep 1;
      };
      };
      };

      [_vehicle, _attachRight, _attachLeft, _attachExtra1, _attachExtra2, _left, _right, _extra1, _extra2] spawn {

      params ["_vehicle", "_attachRight", "_attachLeft", "_attachExtra1", "_attachExtra2", "_left", "_right", "_extra1", "_extra2"];
          
      while { alive _vehicle && _vehicle getVariable["lights", false] } do {

      if( player distance _vehicle < 500 ) then {

      _brightness = [2, 20] select (sunOrMoon isEqualTo 1);

      _extra1 setLightBrightness 0;
      uisleep 0.08;
      _extra2 setLightBrightness _brightness;
      uisleep 0.08;
      _extra2 setLightBrightness 0;
      uisleep 0.08;
      _extra2 setLightBrightness _brightness;
      uisleep 0.08;
      _extra2 setLightBrightness 0;
      uisleep 0.08;
      _extra1 setLightBrightness _brightness;
      uisleep 0.08;
      _extra1 setLightBrightness 0;
      uisleep 0.08;
      _extra1 setLightBrightness _brightness;
      uisleep 0.08;

      } else {
      uisleep 1;
      };
      };
      };

      Jetzt bekomme ich zwar keine Fehlermeldungen mehr (Variablen), aber das Licht erscheint dennoch nichtmehr. Es passiert einfach garnichts, keine Fehlerausgabe, kein garnichts ^^.

      source.gif

    Registrieren oder Einloggen

    Du bist noch kein Mitglied von Native-Servers.com? Registriere dich kostenlos und werde Teil einer großartigen Community!

    Benutzerkonto erstellen

    Benutzer online in diesem Thema

    • 1 Besucher

    Wichtige Links & Informationen

    Server & Hosting-Ressourcen

      Server Administration & Hosting Basics

      Windows Server Support & Guides

      Linux Server Configuration & Help

      Setting up TeamSpeak 3 & VoIP Servers

      Domains & Web Hosting for Beginners & Professionals

      Cloud Hosting, Docker & Kubernetes Tutorials

    Gameserver & Modding-Ressourcen

      ArmA 3 Tutorials & Script Collection

      Renting & Operating Gameservers

      DayZ Server Management & Help

      FiveM (GTA V) Server & Script Development

      Rust Server Modding & Administration

      Setting up & Optimizing ARK Survival Servers

    NodeZone.net – Deine Community für Gameserver, Server-Hosting & Modding

      NodeZone.net ist dein Forum für Gameserver-Hosting, Rootserver, vServer, Webhosting und Modding. Seit 2015 bietet unsere Community eine zentrale Anlaufstelle für Server-Admins, Gamer und Technikbegeisterte, die sich über Server-Management, Hosting-Lösungen und Spielemodding austauschen möchten.


      Ob Anleitungen für eigene Gameserver, Hilfe bei Root- und vServer-Konfigurationen oder Tipps zu Modding & Scripting – bei uns findest du fundiertes Wissen und praxisnahe Tutorials. Mit einer stetig wachsenden Community findest du hier Antworten auf deine Fragen, Projektpartner und Gleichgesinnte für deine Gaming- und Serverprojekte. Schließe dich NodeZone.net an und werde Teil einer aktiven Community rund um Server-Hosting, Gameserver-Management und Modding-Ressourcen.

    Wer jetzt nicht teilt ist selber Schuld:
    1. Nutzungsbestimmungen
    2. Verhaltensregeln
    3. Datenschutzerklärung
    4. Impressum
    5. Urheberrechts- oder Lizenzverstoß melden
  • Trimax Design coded & layout by Gino Zantarelli 2023-2025©
    Community-Software: WoltLab Suite™