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
Mo: 30 Juni 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

    Script nur einmal ausführen, bis beendet.. Problem mit Variablen

    • Dr_Perl
    • 6. März 2019 um 18:34
    • Geschlossen
    • Erledigt
    • Dr_Perl
      Anfänger
      Trophäen
      7
      Beiträge
      35
      • 6. März 2019 um 18:34
      • #1

      Hallo,

      ich habe ein Script, in dem mehrere Sleep Funktionen drin sind, da bestimmte sachen nur alle 3 Minuten geschehen sollen..

      Logischerweise werden die Befehle "übereinandergestalpelt" wenn man das Script mehrfach ausführt..

      Es soll also gecheckt werden, ob das Script läuft.. Wenn es läuft darf es nicht nochmal ausgeführt werden und wenn nicht, dann darf es ausgeführt werden..

      Also dachte ich mir ok, es soll eine boolean Variable geben, die negativ ist wenn sie noch nicht gesetzt wurde..

      Aus der Bohemia Wiki hatte ich dann das hier gefunden:

      Code
      private _var = missionNamespace getVariable "varName";
      if (isNil "_var") then
      {
          missionNamespace setVariable ["varName", 123]; 
          _var = 123;
      };

      _var sollte ja dann "123" behinhalten.. (nur zum testen erstmal den zahlenwert genommen)

      Wenn ich unter den Code "systemChat _var;" schreibe, um mir den Wert anzuzeigen, spuckt er leider nichts aus..

      Im richtigen Script dann natürlich mit einer boolean Variable. ("IstGestartet")

      Am Anfang des Hauptscripts soll die Variable auf TRUE gesetzt werden.

      Am Ende des Hauptscripts sollte dann die Variable wieder auf FALSE gesetzt werden, damit es wieder von Vorne losgehen kann..

      Irgendwie steige ich da nich so durch..dash Muss ich denn die "IstGestartet"-Variable schon in der Init vom server definieren?

      LG Dr_Perl

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 6. März 2019 um 18:51
      • #2

      poste mal das script, ich bin mir noch nicht sicher auf was du hinaus willst ;)

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • Dr_Perl
      Anfänger
      Trophäen
      7
      Beiträge
      35
      • 6. März 2019 um 19:08
      • #3
      Code
      #include "..\..\script_macros.hpp" 
      
      
      //Hier soll abgefragt werden ob "IstGestartet" auf true steht.. Wenn ja, dann beenden..
      
      _ctrl = CONTROL(2001,99003);
      _item = switch (_ctrl lbText (lbCurSel _ctrl)) do {
          case "Zone 1": {
              [] spawn {
                  "zone_1" setMarkerSize [400, 400];
                  [[0,1],"STR_ZONE_START",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
              
                  
                  
                  sleep 170;
                  [[0,1],"STR_ZONE_SHRINKALERT",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
                  sleep 10;
                  "zone_1" setMarkerSize [300, 300];
                  [[0,1],"STR_ZONE_SHRINKED",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
                  
                  sleep 170;
                  [[0,1],"STR_ZONE_SHRINKALERT",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
                  sleep 10;
                  "zone_1" setMarkerSize [200, 200];
                  [[0,1],"STR_ZONE_SHRINKED",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
                  
                  sleep 170;
                  [[0,1],"STR_ZONE_SHRINKALERT",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
                  sleep 10;
                  "zone_1" setMarkerSize [100, 100];
                  [[0,1],"STR_ZONE_SHRINKED",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
                  
                  sleep 170;
                  [[0,1],"STR_ZONE_SHRINKALERT",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
                  sleep 10;
                  "zone_1" setMarkerSize [50, 50];
                  [[0,1],"STR_ZONE_END",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];    
      
                  //Hier "IstGestartet" wieder auf negativ setzen..
              };
          };
      
          
          default {systemChat "Event Noch nicht verfügbar!";};
      };
      
      closeDialog 0;
      Alles anzeigen

      Wichtig ist, dass das für alle spieler gilt.. Weil jeder den Befehl ausführen darf..

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 6. März 2019 um 19:22
      • #4

      so beim ersten überfliegen würde ich das auf dem server laufen lassen und publicvariable verwenden

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

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • Dr_Perl
      Anfänger
      Trophäen
      7
      Beiträge
      35
      • 6. März 2019 um 20:28
      • #5

      Kannst du mir da ein Beispiel geben wie ich die Variable richtig deklariere, setze und auslese? :) Mich verunsichert die Wiki seite, weil einmal nur ein Parameter angeben wird und das andere mal gleich 3 und nirgens steht warum genau das so ist.. Stehe da echt auf dem Schlauch..

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 6. März 2019 um 20:36
      • #6

      ja mache ich dann, wenn ich am rechner bin

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 6. März 2019 um 21:23
      • #7

      So das sollte gehen, aber wenn du das auf dem Server starten möchtest, dann mit parameter übergabe

      [(_ctrl lbText (lbCurSel _ctrl))] remoteExec ["life_fnc_startEvent",-2];

      du solltest noch in der life_server\init.sqf die Variable eventisStarted definieren ;)

      Code
      #include "..\..\script_macros.hpp" 
      params ["_zone","",[""]];
      //Hier soll abgefragt werden ob "IstGestartet" auf true steht.. Wenn ja, dann beenden..
      if (_zone isEqualTo "") exitWith {hint "Ey du hascht nischt ausgewählt"};
      if (isStarted) exitWith {hint "Dat Teil läuft schon"};
      private _sleep1 = 170;
      private _sleep2 = 10;
      //private _ctrl = CONTROL(2001,99003);
      //if (isNil _ctrl) exitWith {hint "Ey du hascht nischt ausgewählt"};
      eventIsStarted = true;
      publicVariable "eventIsStarted";
      _item = switch (_zone) do {
          case "Zone 1": {
              [] spawn {
                  "zone_1" setMarkerSize [400, 400];
                  [[0,1],"STR_ZONE_START",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
                  uisleep _sleep1;
                  [[0,1],"STR_ZONE_SHRINKALERT",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
                  uisleep _sleep2;
                  "zone_1" setMarkerSize [300, 300];
                  [[0,1],"STR_ZONE_SHRINKED",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
                  uisleep _sleep1;
                  [[0,1],"STR_ZONE_SHRINKALERT",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
                  uisleep _sleep2;
                  "zone_1" setMarkerSize [200, 200];
                  [[0,1],"STR_ZONE_SHRINKED",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
                  uisleep _sleep1;
                  [[0,1],"STR_ZONE_SHRINKALERT",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
                  uisleep _sleep2;
                  "zone_1" setMarkerSize [100, 100];
                  [[0,1],"STR_ZONE_SHRINKED",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
                  uisleep _sleep1;
                  [[0,1],"STR_ZONE_SHRINKALERT",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
                  uisleep _sleep2;
                  "zone_1" setMarkerSize [50, 50];
                  [[0,1],"STR_ZONE_END",true,[1]] remoteExecCall ["life_fnc_broadcast",RCLIENT]; 
                  eventIsStarted = false;
                  publicVariable "eventIsStarted";
              };
          };
          default {systemChat "Event Noch nicht verfügbar!";};
      };
      Alles anzeigen

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • Dr_Perl
      Anfänger
      Trophäen
      7
      Beiträge
      35
      • 6. März 2019 um 21:40
      • #8

      Okay, danke erstmal für die Mühe!

      Was ich einfach nicht verstehe:

      if (isStarted) exitWith {hint "Dat Teil läuft schon"};

      Wo wird denn isStarted vorher gesetzt?? In der init? Also dann publicVariable "isStarted"; rein?

      Warum sleepUI und nicht sleep?

      Und wie sieht das mit der Parameterübergabe aus?

      Ich rufe die Funktion in einem OnClick event eines Buttons auf.. (onButtonClick = "[] call life_fnc_ZoneStart;";) Wie übergebe ich da Parameter?

      Puh ich find das echt mega kompliziert gemacht..... :sleeping:


      Edit:

      Okay, war natürlich doch garnich so kompliziert.. :D

      Hatte es jetzt hinbekommen... Und in der init

      "ZoneIsStarted = false;

      publicVariable "ZoneIsStarted";"

      reingeschrieben.. Jetzt hab ich das auch erst richtig kapiert mit der public Variable. :D

      Dankeeeee!!!

      kann geclosed werden :)

      Einmal editiert, zuletzt von Dr_Perl (6. März 2019 um 22:09)

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 6. März 2019 um 22:19
      • #9

      ja sorry isStarted hätte eventisStartet sein müssen ^^

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    Registrieren oder Einloggen

    Du bist noch kein Mitglied von NodeZone.net? Registriere dich kostenlos und werde Teil einer großartigen Community!

    Registrieren

    Tags

    • setvariable
    • getvariable

    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. Datenschutzerklärung
    3. Impressum
    4. Urheberrechts- oder Lizenzverstoß melden
  • Trimax Design coded & layout by Gino Zantarelli 2023-2025©
    Community-Software: WoltLab Suite™