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: 23 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

    Dauerhafte abfrage erstellen (?)

      • Mapping & Modding
    • Korbinian
    • 6. November 2016 um 10:40
    • Geschlossen
    • Erledigt
    • Korbinian
      Amateur
      Reaktionen
      34
      Trophäen
      9
      Beiträge
      170
      • 6. November 2016 um 10:40
      • #1

      Hallo!
      Ich habe für einen Epoch Server folgenden Code angefertigt:

      C
      if (((damage Soldat)>0.9) && ((damage Soldat2)>0.9) && ((damage Soldat3)>0.9) && ((damage Soldat17)>0.9) && ((damage Soldat4)>0.9) && ((damage Soldat5)>0.9) && ((damage Soldat6)>0.9) && ((damage Soldat7)>0.9) && ((damage Soldat8)>0.9) && ((damage Soldat9)>0.9) && ((damage Soldat10)>0.9) && ((damage Soldat11)>0.9) && ((damage Soldat12)>0.9) && ((damage Soldat13)>0.9) && ((damage Soldat14)>0.9) && ((damage Soldat15)>0.9) && ((damage Soldat16)>0.9) && ((damage Soldat18)>0.9) && ((damage Soldat19)>0.9) && ((damage Soldat20)>0.9) && ((damage Soldat21)>0.9) && ((damage Soldat22)>0.9) && ((damage Soldat23)>0.9) && ((damage Soldat24)>0.9) && ((damage Soldat25)>0.9) && ((damage Soldat26)>0.9) && ((damage Soldat27)>0.9) && ((damage Soldat28)>0.9) && ((damage Soldat29)>0.9) && ((damage Soldat30)>0.9) && ((damage Soldat31)>0.9) && ((damage Soldat32)>0.9) && ((damage Soldat33)>0.9) && ((damage Soldat34)>0.9) && ((damage Soldat35)>0.9) && ((damage Soldat36)>0.9) && ((damage Soldat37)>0.9) && ((damage Soldat38)>0.9) && ((damage Soldat39)>0.9) && ((damage Soldat40)>0.9) && ((damage Soldat41)>0.9) && ((damage Soldat42)>0.9) && ((damage Soldat43)>0.9) && ((damage Soldat44)>0.9) && ((damage Soldat45)>0.9) && ((damage Soldat46)>0.9) && ((damage Soldat47)>0.9) && ((damage Soldat48)>0.9) && ((damage Soldat49)>0.9) && ((damage Soldat50)>0.9) && ((damage Soldat51)>0.9) && ((damage Soldat52)>0.9) && ((damage Soldat53)>0.9) && ((damage Soldat54)>0.9) && ((damage Soldat55)>0.9) && ((damage Soldat56)>0.9) && ((damage Soldat57)>0.9) && ((damage Soldat58)>0.9) && ((damage Soldat59)>0.9) && ((damage Soldat60)>0.9) && ((damage Soldat61)>0.9) && ((damage Soldat62)>0.9)
      then 
      {
      deleteVehicle Barrier1; 
      deleteVehicle Barrier2; 
      deleteVehicle Barrier3; 
      deleteVehicle Barrier4; 
      deleteVehicle Barrier5; 
      deleteVehicle Barrier6; 
      deleteVehicle Barrier7; 
      deleteVehicle Barrier8; 
      deleteVehicle Barrier9; 
      deleteVehicle Barrier10; 
      deleteVehicle Barrier11; 
      deleteVehicle Barrier12; 
      deleteVehicle Barrier13; 
      deleteVehicle Barrier14; 
      deleteVehicle Barrier15; 
      deleteVehicle Barrier16;
      Epochkiste enableSimulationGlobal true;
      Epochkiste2 enableSimulationGlobal true;
      Epochkiste3 enableSimulationGlobal true;
      Epochkiste4 enableSimulationGlobal true;
      Hans enableSimulationGlobal true;
      //_smoke = "SmokeShellRed" createVehicle [24544.807,19114.895,2];
      } 
      else 
      {
      };
      sleep 3;
      Alles anzeigen

      Das sollte (wie zu sehen) Barrieren löschen und Kisten öffnen etc. wenn alle oben angegebenen Soldaten sterben.
      Funktioniert alles wunderbar.

      Aber ich weiß jetzt nicht (nach 2 Stunden googlen) wie ich es [lexicon]Performance[/lexicon] schonend dauerhaft abfragen kann? (Dass das ebend ausgeführt wird sobald der letzte stirbt)

      Weil das einzige was mir eingefallen wäre ist den Code 100e male in die Sqf zu packen und mir 15 Sekunden sleeps wiederholen zu lassen aber ich habe so das gefühl als ob dass nicht die "richtige" Lösung wäre :3

      Vllt kann mir hier jemand helfen :)

      LG

      santa

    • AustrianNoob
      Kenner
      Reaktionen
      501
      Trophäen
      10
      Beiträge
      563
      • 6. November 2016 um 10:55
      • #2

      Hey. Eventuell kann dir das helfen :)

      [Erklärung|Leitfaden] Arma 3 Code Optimierung


      Zitat von blackfisch

      Bedingungsabfragen (If-Then Abfragen) können auch schnell zum Performance-Killer werden. Es werden immer zunächst alle Bedingungen überprüft, bevor die Ausführung gestoppt wird. Bei langen Verkettungen von Bedingungen (z.B. if (_group knowsAbout vehicle _object > 0 && alive _object && canMove _object && count magazines _object > 0) then { ...};) führt dies erneut zu einer Verzögerung, die man durch eine Einfache Verkettung von mehreren Abfragen vermeiden kann

      Sprich du machst es so:

      Code
      if((damage Soldat)>0.9) then {
       if((damage Soldat2)>0.9 then {
        usw...
       };
      };

      Ansonsten ist es sicher möglich, die Soldaten als Array zu speichern und dann foreach zu verwenden.^^

    • Korbinian
      Amateur
      Reaktionen
      34
      Trophäen
      9
      Beiträge
      170
      • 6. November 2016 um 10:59
      • #3

      Vielen Dank, werde ich direkt testen! :)

      santa

    • Korbinian
      Amateur
      Reaktionen
      34
      Trophäen
      9
      Beiträge
      170
      • 6. November 2016 um 11:26
      • #4
      Zitat von AustrianNoob

      Hey. Eventuell kann dir das helfen :)

      [Erklärung|Leitfaden] Arma 3 Code Optimierung


      Sprich du machst es so:

      Code
      if((damage Soldat)>0.9) then {
       if((damage Soldat2)>0.9 then {
        usw...
       };
      };

      Ansonsten ist es sicher möglich, die Soldaten als Array zu speichern und dann foreach zu verwenden.^^

      Das hat leider nicht funktioniert, weil es ja theoretisch wieder nur ein mal abgefragt wird :(

      santa

    • SanDiego
      Amateur
      Reaktionen
      50
      Trophäen
      9
      Beiträge
      187
      • 6. November 2016 um 11:28
      • #5

      Ansonsten kannst du das ganze auch mit "wait until (Bedingung)" lösen. Das heißt er wartet solange bis die Bedingung true ist.

    • Korbinian
      Amateur
      Reaktionen
      34
      Trophäen
      9
      Beiträge
      170
      • 6. November 2016 um 11:32
      • #6
      Zitat von SanDiego

      Ansonsten kannst du das ganze auch mit "wait until (Bedingung)" lösen. Das heißt er wartet solange bis die Bedingung true ist.

      Ja hab ich auch gerade gelesen, werde ich jetzt damit versuchen, dankeschön :)

      santa

    • Korbinian
      Amateur
      Reaktionen
      34
      Trophäen
      9
      Beiträge
      170
      • 6. November 2016 um 12:01
      • #7
      Zitat von SanDiego

      Ansonsten kannst du das ganze auch mit "wait until (Bedingung)" lösen. Das heißt er wartet solange bis die Bedingung true ist.

      Ich stecke wieder fest :/
      Hab jetzt das mit den Waituntil versucht

      C
      hint "Starting Script..."; //Nur zum testen als info
      waitUntil {
      	if ((damage Soldat1)>0.9) {true};
      	if ((damage Soldat2)>0.9) {true};
      	if ((damage Soldat3)>0.9) {true};
      	false
      };
      deleteVehicle Barrier1; 
      deleteVehicle Barrier2; 
      deleteVehicle Barrier3; 
      deleteVehicle Barrier4; 
      deleteVehicle Barrier5; 
      deleteVehicle Barrier6; 
      deleteVehicle Barrier7; 
      deleteVehicle Barrier8; 
      deleteVehicle Barrier9; 
      deleteVehicle Barrier10; 
      deleteVehicle Barrier11; 
      deleteVehicle Barrier12; 
      deleteVehicle Barrier13; 
      deleteVehicle Barrier14; 
      deleteVehicle Barrier15; 
      deleteVehicle Barrier16;
      Epochkiste enableSimulationGlobal true;
      Epochkiste2 enableSimulationGlobal true;
      Epochkiste3 enableSimulationGlobal true;
      Epochkiste4 enableSimulationGlobal true;
      Hans enableSimulationGlobal true;
      hint "finished";
      Alles anzeigen

      Aber das klappt immer noch nicht..
      Es sagt in der Zeile der WaitUntil sei ein allgemeiner Fehler :/

      santa

    • Korbinian
      Amateur
      Reaktionen
      34
      Trophäen
      9
      Beiträge
      170
      • 6. November 2016 um 12:13
      • #8

      Habs gelöst:

      C
      waitUntil { not alive Soldat1 };
      waitUntil { not alive Soldat2 };
      waitUntil { not alive Soldat3 };
      deleteVehicle Barrier1; 
      deleteVehicle Barrier2; 
      deleteVehicle Barrier3; 
      deleteVehicle Barrier4; 
      deleteVehicle Barrier5; 
      deleteVehicle Barrier6; 
      deleteVehicle Barrier7; 
      deleteVehicle Barrier8; 
      deleteVehicle Barrier9; 
      deleteVehicle Barrier10; 
      deleteVehicle Barrier11; 
      deleteVehicle Barrier12; 
      deleteVehicle Barrier13; 
      deleteVehicle Barrier14; 
      deleteVehicle Barrier15; 
      deleteVehicle Barrier16;
      Epochkiste enableSimulationGlobal true;
      Epochkiste2 enableSimulationGlobal true;
      Epochkiste3 enableSimulationGlobal true;
      Epochkiste4 enableSimulationGlobal true;
      Hans enableSimulationGlobal true;
      hint "finished";
      Alles anzeigen

      Danke an alle!

      #Closed

      santa

    • blackfisch
      Legende
      Reaktionen
      2.944
      Trophäen
      9
      Beiträge
      5.966
      Dateien
      6
      Bilder
      63
      • 6. November 2016 um 12:16
      • #9

      Kleine Verbesserung: waitUntil {!alive Soldat1 && !alive Soldat2 && !alive Soldat3};
      So verhinderst du eventuelle Fehler ggf. :)

      #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!

      ______________________

    • SanDiego
      Amateur
      Reaktionen
      50
      Trophäen
      9
      Beiträge
      187
      • 6. November 2016 um 12:21
      • #10

      Zur [lexicon]Performance[/lexicon] sei aber gesagt, dass er die Bedingung einmal pro Frame ca. abfragt.

      Du könntest jetzt hingehen und bspw. einen Trigger mit Radius 5 Meter um die Kiste machen, sodass wenn ein Spieler den Trigger betritt, das Script ausgeführt wird, oder du packst den Code in eine while Schleife und packst da dann noch ein sleep 5 Sekunden o.ä. rein, weil ich mal behaupten würde, dass es nicht schlimm wäre, wenn die Kiste im worst case erst 5 Sekunden nachdem der letzte Soldat tot ist, geöffnet wird.

    • Korbinian
      Amateur
      Reaktionen
      34
      Trophäen
      9
      Beiträge
      170
      • 6. November 2016 um 12:21
      • #11
      Zitat von blackfisch

      Kleine Verbesserung: waitUntil {!alive Soldat1 && !alive Soldat2 && !alive Soldat3};
      So verhinderst du eventuelle Fehler ggf. :)

      Heißt das !alive dass sie tod sind?

      Ich habe auch schon an ner verbesserung gearbeitet:

      C
      waitUntil {not alive Soldat1 && not alive Soldat2 && not alive Soldat3};

      Aber wenn !alive ratsamer ist benutze ich das, danke :) <3

      santa

    • SanDiego
      Amateur
      Reaktionen
      50
      Trophäen
      9
      Beiträge
      187
      • 6. November 2016 um 12:22
      • #12

      das ! bedeutet letztendlich negiert.
      Also: !true -> false

      Not und ! sind äquivalent.

    • blackfisch
      Legende
      Reaktionen
      2.944
      Trophäen
      9
      Beiträge
      5.966
      Dateien
      6
      Bilder
      63
      • 6. November 2016 um 12:43
      • #13

      Stimmt, nur meistens nimmt man einfach ! statt not zur Negierung, einfach weil wegen kürzer und in längeren Scripts und Codeschnipseln bleibt es so einfach ne Nummer übersichtlicher ^^

      #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!

      ______________________

    Registrieren oder Einloggen

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

    Registrieren

    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™