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: 22 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. Tutorials & Releases

    [Tutorial] Vereinfachte Progressbar

      • Altis Life
    • Risk
    • 6. November 2017 um 17:17
    • Risk
      Kenner
      Reaktionen
      193
      Trophäen
      11
      Beiträge
      573
      • 6. November 2017 um 17:17
      • #1

      Moin liebe Leute!

      Ich habe für euch mal eben den Progressbar Aufruf von Schmittys life umgeschrieben. Hiermit könnt ihr ganz einfach eine Progressbar aufrufen.

      -> ["Titel","Animation",Zeit] spawn life_fnc_starteProgressbar;

      Beispiel

      -> ["Verarbeite Kupfer","AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon",5] spawn life_fnc_starteProgressbar;

      Bitte beachtet, das ihr in den Checks der files wo ihr es einfügt folgendes eintragt das es bei Abbruch dennoch Erfolgreich ist.

      Code
      if (schmitt_fortschrittStatus != 1) exitWith
      {
      //message
      };

      Beispiel: fn_repairTruck.sqf

      Spoiler anzeigen
      Code
      #include "..\..\script_macros.hpp"
      /*
          File: fn_repairTruck.sqf
          Author: Bryan "Tonic" Boardwine
      
          Description:
          Main functionality for toolkits, to be revised in later version.
      */
      private ["_veh","_upp","_ui","_progress","_pgText","_cP","_displayName","_test","_sideRepairArray"];
      _veh = cursorObject;
      if (isNull _veh) exitWith {};
      if ((_veh isKindOf "Car") || (_veh isKindOf "Ship") || (_veh isKindOf "Air")) then {
          if (life_inv_toolkit > 0) then {
      
              ["Repariere Fahrzeug","AinvPknlMstpSnonWnonDnon_medic_1",5] spawn life_fnc_starteProgressbar;
      
              _sideRepairArray = LIFE_SETTINGS(getArray,"vehicle_infiniteRepair");
      
              //Check if playerSide has infinite repair enabled
              if (playerSide isEqualTo civilian && (_sideRepairArray select 0) isEqualTo 0) then {
                  [false,"toolkit",1] call life_fnc_handleInv;
              };
              if (playerSide isEqualTo west && (_sideRepairArray select 1) isEqualTo 0) then {
                  [false,"toolkit",1] call life_fnc_handleInv;
              };
              if (playerSide isEqualTo independent && (_sideRepairArray select 2) isEqualTo 0) then {
                  [false,"toolkit",1] call life_fnc_handleInv;
              };
              if (playerSide isEqualTo east && (_sideRepairArray select 3) isEqualTo 0) then {
                  [false,"toolkit",1] call life_fnc_handleInv;
              };
      
              if (schmitt_fortschrittStatus != 1) exitWith
              
              {
                  hint "Error!";
              };
              _veh setDamage 0;
              titleText[localize "STR_NOTF_RepairedVehicle","PLAIN"];
          };
      };
      Alles anzeigen

      Neuen Eintrag in der Functions.hpp unter der class Functions

      Code
      class startProgressbar {};

      Neue Datei erstellen -> fn_startProgressbar.sqf

      Spoiler anzeigen
      Code
      /*
          File: fn_starteProgressbar.sqf
          Autor: Thomas 'smallfly' Ludwig aka 'Schmitt'
          Edit; Risk
      */
      disableSerialization;
      params[
          ["_titel","",[""]],
          ["_animation","",[""]],
          ["_dauerInSek",0 ,[0] ]
      ];
      schmitt_fortschrittStatus = 0;
      
      private _idcFortschrittBalken = 38201;
      private _idcFortschrittTitel  = 38202;
      
      bildschirmEbeneFortschrittAnzeige cutRsc ["life_progress","PLAIN"];
      private _display = uiNamespace getVariable "life_progress";
      private _fortschrittBalken = _display displayCtrl _idcFortschrittBalken;
      private _fortschrittTitel  = _display displayCtrl _idcFortschrittTitel;
      
      private _spielerPositionStart   = getPos player;
      private _initialFortschritt     = 0.01;
      private _maxAbstand             = 2;
      
      private _pauseProIntervallInSek  = 0.1;
      private _anzahlPausen = _dauerInSek / _pauseProIntervallInSek;
      private _fortschrittProIntervall = 1.10 / _anzahlPausen;
      
      private _fortschritt = _initialFortschritt;
      _fortschrittTitel ctrlSetText format["%2 (1%1)...", "%", _titel];
      _fortschrittBalken progressSetPosition _fortschritt;
      
      for "_i" from 0 to 1 step 0 do
      {
          if (_animation != "" && {animationState player != _animation}) then {
              player playMoveNow _animation; //_unit switchMove _anim;
          };
      
          sleep _pauseProIntervallInSek;
          _fortschritt = _fortschritt + _fortschrittProIntervall;
      
          _fortschrittBalken progressSetPosition _fortschritt;
          _fortschrittTitel ctrlSetText format["%3 (%1%2) ...", round(_fortschritt * 100), "%", _titel];
      
          private _spielerPositionAktuell = getPos player;
          private _abstand = _spielerPositionStart distance _spielerPositionAktuell;
      
          if (_abstand > _maxAbstand) exitWith {
              hint format["Entfernung zu groß! Aktuell: %1 Meter Erlaubt: %2 Meter",_abstand,_maxAbstand];
              schmitt_fortschrittStatus = -1;
          };
      
          if !(isNull objectParent player) exitWith
          {
              hint "Das Aus- bzw. Einsteigen führt zum Abbruch der Aktion!";
              schmitt_fortschrittStatus = -1;
          };
      
          if (!alive player) exitWith
          {
              schmitt_fortschrittStatus = -1;
          };
      
          if (_fortschritt >= 1) exitWith {};
      
          if (life_istazed) exitWith
          {
              schmitt_fortschrittStatus = -1;
          };
          if (life_isknocked) exitWith 
          {
              schmitt_fortschrittStatus = -1;
          }; //Knocked
      };
      
      bildschirmEbeneFortschrittAnzeige cutText ["","PLAIN"];
      
      if (_animation != "" ) then {
          player playActionNow "stop";
      };
      
      schmitt_fortschrittStatus = 1;
      Alles anzeigen

      Als letztes noch 2 Einträge in der configuration.sqf

      Code
      bildschirmEbeneFortschrittAnzeige  = 5;schmitt_fortschrittStatus          = 0; // -1 := Fehler; 0 := Läuft noch; 1 := erfolgreich abgeschlossen

      Viel Spaß!:thumbup:

      mfg Risk

      https://www.twitch.tv/theriskarma

      3 Mal editiert, zuletzt von Risk (6. November 2017 um 17:26)

    • Maurice120
      Frischling
      Trophäen
      8
      Beiträge
      1
      • 7. November 2017 um 15:10
      • #2

      Du solltes mal Bilder rein packen wäre nice

    • Risk
      Kenner
      Reaktionen
      193
      Trophäen
      11
      Beiträge
      573
      • 7. November 2017 um 15:49
      • #3

      wieso?

      Es ist ja nichts an der eigentlichen progressbar verändert worden. Es wurde lediglich das erstellen einer progressbar erleichtert.

      Und dafür habe ich ja Beispiele mit rein getan.

      mfg Risk

      https://www.twitch.tv/theriskarma

    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™