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
Fr: 18 Juli 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

    Globale variable wird nicht erkannt?

    • John Hannibal Smith
    • 25. Mai 2018 um 08:06
    • Erledigt
    • John Hannibal Smith
      Fortgeschrittener
      Reaktionen
      27
      Trophäen
      10
      Beiträge
      266
      • 25. Mai 2018 um 08:06
      • #1

      Hallo zusammen, ich habe eine art "scheduler" geschrieben. Die Datei "fn_roundTimer.sqf" sieht dabei folgendermaßen aus:

      Code
      #include "..\..\script_macros.hpp"
      /*
          fn_roundTimer.sqf
          Author: Col. John Hannibal Smith
      */
      
      _roundTime = (LIFE_SETTINGS(getNumber, "round_duration")) * 60;
      
      while {_roundTime >= 0} do {
      
          if(_roundTime == 0) then {
              [1,localize "STR_rMsg_roundEnded"] remoteExec ["life_fnc_broadcast",civilian];
          };
          if(_roundTime == 0) exitWith {};
          if(stopSched) exitWith { [1,localize "STR_rMsg_roundEnded"] remoteExec ["life_fnc_broadcast",civilian]; };
          
          sleep 1;
          _roundTime = _roundTime-1;
      };
      Alles anzeigen

      An sich funktioniert das ganze. Seitdem ich jedoch die Abfrage mit stopsched drin habe, wirft mir das Log folgenden Fehler (ungefähr 200000 mal, halt pro Sekunde ein mal)

      Code
      20:47:08 Error in expression <
      };
      if(_roundTime == 0) exitWith {};
      if(stopSched) exitWith { [1,localize "STR_r>
      20:47:08   Error position: <stopSched) exitWith { [1,localize "STR_r>
      20:47:08   Error Undefined variable in expression: stopsched
      20:47:08 File core\functions\fn_roundTimer.sqf [life_fnc_roundTimer], line 72

      In der configuration.sqf habe ich jedoch ensprechendes stopSched = false; eingefügt. Auch wenn ich manuell ingame über debug stopSched = true; ausführe, kommt die erwartete Meldung. Also existiert die Variable. Warum erkennt die Datei das dann nicht?||

      georgepeppard.jpg"Ich liebe es, wenn ein Plan funktioniert!"

      ~ Col. John 'Hannibal' Smith


      Good to know:

      Spyglass benutzen ohne Frust
      Spielerinteraktionsmenü für Zivilisten

      Für private gemoddete Missionen komm doch auf den TeamSpeak realhunters.de oder auf diesen Discord!

      Einmal editiert, zuletzt von John Hannibal Smith (25. Juli 2018 um 18:30)

    • Marius1773
      Profi
      Reaktionen
      369
      Trophäen
      9
      Beiträge
      962
      • 25. Mai 2018 um 08:59
      • #2

      Auch wenn ich wahrscheinlich für diesen Kommentar von besserwissern downgemacht werde, hast schonmal versucht einfach ins Script oben reinzupacken? ^^

      Windows Server :love:

      Das Heilige Buch der Arma 3 Scripter, die Arma 3 Scripter Bibel: https://community.bistudio.com/wiki/Category:Scripting_Commands

    • John Hannibal Smith
      Fortgeschrittener
      Reaktionen
      27
      Trophäen
      10
      Beiträge
      266
      • 25. Mai 2018 um 09:04
      • #3
      Zitat von Marius1773

      Auch wenn ich wahrscheinlich für diesen Kommentar von besserwissern downgemacht werde, hast schonmal versucht einfach ins Script oben reinzupacken? ^^

      Meinst du sowas wie so:

      Code
      #include "..\..\script_macros.hpp"
      /*
       fn_roundTimer.sqf
       Author: Col. John Hannibal Smith
       Website: https://www.fabian-heinz-webdesign.de
      */
      if(stopSched) exitWith { [1,localize "STR_rMsg_roundEnded"] remoteExec ["life_fnc_broadcast",civilian]; };
      _roundTime = (LIFE_SETTINGS(getNumber, "round_duration")) * 60;
      while {_roundTime >= 0} do {
       if(_roundTime == 0) then {
       [1,localize "STR_rMsg_roundEnded"] remoteExec ["life_fnc_broadcast",civilian];
       };
       if(_roundTime == 0) exitWith {};
       
       
       sleep 1;
       _roundTime = _roundTime-1;
      };
      Alles anzeigen

      georgepeppard.jpg"Ich liebe es, wenn ein Plan funktioniert!"

      ~ Col. John 'Hannibal' Smith


      Good to know:

      Spyglass benutzen ohne Frust
      Spielerinteraktionsmenü für Zivilisten

      Für private gemoddete Missionen komm doch auf den TeamSpeak realhunters.de oder auf diesen Discord!

    • Marius1773
      Profi
      Reaktionen
      369
      Trophäen
      9
      Beiträge
      962
      • 25. Mai 2018 um 09:06
      • #4

      Ne so ^^

      Code
      #include "..\..\script_macros.hpp"
      /*
       fn_roundTimer.sqf
       Author: Col. John Hannibal Smith
       Website: https://www.fabian-heinz-webdesign.de
      */
      _roundTime = (LIFE_SETTINGS(getNumber, "round_duration")) * 60;
      stopSched = false;
      
      while {_roundTime >= 0} do {
       if(_roundTime == 0) then {
      
       [1,localize "STR_rMsg_roundEnded"] remoteExec ["life_fnc_broadcast",civilian];
       };
       if(_roundTime == 0) exitWith {};
       if(stopSched) exitWith { [1,localize "STR_rMsg_roundEnded"] remoteExec ["life_fnc_broadcast",civilian]; };
       
       sleep 1;
       _roundTime = _roundTime-1;
      };
      Alles anzeigen

      Windows Server :love:

      Das Heilige Buch der Arma 3 Scripter, die Arma 3 Scripter Bibel: https://community.bistudio.com/wiki/Category:Scripting_Commands

    • Lucian
      Amateur
      Reaktionen
      172
      Trophäen
      11
      Beiträge
      204
      Bilder
      5
      • 25. Mai 2018 um 09:07
      • #5

      Es kann sein, dass das Skript vor der Deklaration der Variable ausgeführt wird. Aus diesem Grund würde ich dir empfehlen anstatt stopSched eher missionNamespace getVariable ["stopSched",false]zu nutzen, missionNamespace ist dabei die Namespace in der "globale" Variablen gespeichert werden und getVariable mit diesem Syntax gibt einfach ein fallback Value an, falls die Variable nicht definiert ist.

    • John Hannibal Smith
      Fortgeschrittener
      Reaktionen
      27
      Trophäen
      10
      Beiträge
      266
      • 25. Mai 2018 um 09:09
      • #6
      Zitat von Marius1773

      Ne so ^^

      Code
      #include "..\..\script_macros.hpp"
      /*
       fn_roundTimer.sqf
       Author: Col. John Hannibal Smith
       Website: https://www.fabian-heinz-webdesign.de
      */
      _roundTime = (LIFE_SETTINGS(getNumber, "round_duration")) * 60;
      stopSched = false;
      
      while {_roundTime >= 0} do {
       if(_roundTime == 0) then {
      
       [1,localize "STR_rMsg_roundEnded"] remoteExec ["life_fnc_broadcast",civilian];
       };
       if(_roundTime == 0) exitWith {};
       if(stopSched) exitWith { [1,localize "STR_rMsg_roundEnded"] remoteExec ["life_fnc_broadcast",civilian]; };
       
       sleep 1;
       _roundTime = _roundTime-1;
      };
      Alles anzeigen

      Naja, ich muss es von außerhalb des scripts auch noch ändern können... ist ja dann nicht gegeben, oder?


      Zitat von Lucian

      Es kann sein, dass das Skript vor der Deklaration der Variable ausgeführt wird. Aus diesem Grund würde ich dir empfehlen anstatt stopSched eher missionNamespace getVariable ["stopSched",false]zu nutzen, missionNamespace ist dabei die Namespace in der "globale" Variablen gespeichert werden und getVariable mit diesem Syntax gibt einfach ein fallback Value an, falls die Variable nicht definiert ist.

      Okay, und wie und wo setze ich dann den missionNamespace?

      georgepeppard.jpg"Ich liebe es, wenn ein Plan funktioniert!"

      ~ Col. John 'Hannibal' Smith


      Good to know:

      Spyglass benutzen ohne Frust
      Spielerinteraktionsmenü für Zivilisten

      Für private gemoddete Missionen komm doch auf den TeamSpeak realhunters.de oder auf diesen Discord!

    • Lucian
      Amateur
      Reaktionen
      172
      Trophäen
      11
      Beiträge
      204
      Bilder
      5
      • 25. Mai 2018 um 09:48
      • #7

      Entweder varName=val oder missionNamespace setVariable ["varName",val] miss natürlich auf dem selben Client ausgeführt werden wie wo das Skript läuft.

    • John Hannibal Smith
      Fortgeschrittener
      Reaktionen
      27
      Trophäen
      10
      Beiträge
      266
      • 27. Mai 2018 um 10:42
      • #8
      Zitat von Lucian

      Entweder varName=val oder missionNamespace setVariable ["varName",val] miss natürlich auf dem selben Client ausgeführt werden wie wo das Skript läuft.

      Heißt, da das Script derzeit über remoteExec vom Server ausgeführt wird, müsste missionNamespace getVariable ["stopSched",false] immer via remoteExec vom Server geholt werden?

      georgepeppard.jpg"Ich liebe es, wenn ein Plan funktioniert!"

      ~ Col. John 'Hannibal' Smith


      Good to know:

      Spyglass benutzen ohne Frust
      Spielerinteraktionsmenü für Zivilisten

      Für private gemoddete Missionen komm doch auf den TeamSpeak realhunters.de oder auf diesen Discord!

    Registrieren oder Einloggen

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

    Registrieren

    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™