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
So: 18 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

    Schmerzmittel langsam heilend

    • SpongebobUndPatrick
    • 13. Juli 2017 um 23:11
    • Geschlossen
    • Erledigt
    • SpongebobUndPatrick
      Frischling
      Reaktionen
      1
      Trophäen
      10
      Beiträge
      15
      • 13. Juli 2017 um 23:11
      • #1

      Hallo,

      ich habe versucht mein Schmerzmittel so aufzubauen, dass es in 15 Sekunden einen Spieler vollheilt, sollte dann nochmal in den nächsten 5 Minuten ein Schmerzmittel genommen werden, so verliert der Spieler Leben.

      Allerdings funktioniert dies nicht, er fügt zwar so wie es aussieht ein wenig Leben hinzu, allerdings läuft der "Timer" nicht.

      Code
      case (_item isEqualTo "schmerzmittel"): {
              _schaden = getdammage player;
              _timer = 15;
              if (_schaden isEqualTo 0) exitWith {hint "Du brauchst kein Schmerzmittel!";};
              if ([false,_item,1] call life_fnc_handleInv) then {
                  while {_timer > 0 || _schaden isEqualTo 0} do
                  {
                      if(_timer isEqualTo 15) then { if(_5min) exitWith {player setDamage (_schaden + 0.3);}; _timer = _timer -1; player setDamage (_schaden - 0.06); };
                      if(_timer isEqualTo 14) then { _timer = _timer -1; player setDamage (_schaden - 0.06); };
                      if(_timer isEqualTo 13) then { _timer = _timer -1; player setDamage (_schaden - 0.06); };
                      if(_timer isEqualTo 12) then { _timer = _timer -1; player setDamage (_schaden - 0.06); };
                      if(_timer isEqualTo 11) then { _timer = _timer -1; player setDamage (_schaden - 0.06); };
                      if(_timer isEqualTo 10) then { _timer = _timer -1; player setDamage (_schaden - 0.06); };
                      if(_timer isEqualTo 9) then { _timer = _timer -1; player setDamage (_schaden - 0.06); };
                      if(_timer isEqualTo 8) then { _timer = _timer -1; player setDamage (_schaden - 0.06); };
                      if(_timer isEqualTo 7) then { _timer = _timer -1; player setDamage (_schaden - 0.06); };
                      if(_timer isEqualTo 6) then { _timer = _timer -1; player setDamage (_schaden - 0.06); };
                      if(_timer isEqualTo 5) then { _timer = _timer -1; player setDamage (_schaden - 0.06); };
                      if(_timer isEqualTo 4) then { _timer = _timer -1; player setDamage (_schaden - 0.06); };
                      if(_timer isEqualTo 3) then { _timer = _timer -1; player setDamage (_schaden - 0.06); };
                      if(_timer isEqualTo 2) then { _timer = _timer -1; player setDamage (_schaden - 0.06); };
                      if(_timer isEqualTo 1) then { _timer = _timer -1; player setDamage (_schaden - 0.06); _5min = true; sleep 300; _5min = false;};
                  };
              };
          };
      Alles anzeigen
    • X39
      Anfänger
      Reaktionen
      22
      Trophäen
      9
      Beiträge
      29
      • 13. Juli 2017 um 23:40
      • #2

      fünf dinge

      1. Du wiederholst code viel zu häufig, eine abänderung in z.b. eine switch klause verschafft hier abhilfe und ordnung

      2. Der code den du dort zusammengeschustert hast wartet nirgends außer ganz am ende für 5 minuten

      3. _5min wird nie nach außen gelangen und somit eine zweite einnahme "vereiteln", da die variable lokal gebunden ist und dort die ausführung deines skripts aktuell liegt (das skript erneut starten erzeugt eine neue, unabhängige variable)

      4. du musst den aktuellen schaden immer wieder holen, sonst rechnet der nur immer wieder mit dem anfänglichen schaden

      5. Deine while kondition sagt "führe aus solange _timer größer 0 oder _schaden gleich 0" was dazu führen würde, dass wen der code korrekt wäre, es ewig laufen würde


      hier mal aufgebessert:

      Code
      //_5min wurde durch mytag_gvar_consumedMorphin ersetzt
      
      _schaden = getdammage player;
      _timer = 15;
      if (_schaden <= 0) exitWith {hint "Du brauchst kein Schmerzmittel!";};
      if ([false, _item, 1] call life_fnc_handleInv) then {
           while {_timer > 0 && _schaden > 0} do
           {
               _schaden = getdammage player;
               switch(_timer) do
               {
                   case 15: { if(mytag_gvar_consumedMorphin) exitWith { player setDamage (_schaden + 0.3); }; player setDamage (_schaden - 0.06); };
                   case 1: { player setDamage (_schaden - 0.06); };
                   default { player setDamage (_schaden - 0.06); mytag_gvar_consumedMorphin= true; sleep 300; mytag_gvar_consumedMorphin= false; };
               };
               _timer = _timer -1;
               sleep 1;
           };
      };
      Alles anzeigen

      Tipps nebenbei:

      - versuch deinen code immer übersichtlich zu halten und das, was scheinbar

      - Schreibst du es zwei mal, pack es in eine funktion (bzw. hier: schieb es aus den einzelnen fällen raus)

      - Überprüfe deine konditionen (niemand möchte endlose loops in seinem skript oder programm)

    • SpongebobUndPatrick
      Frischling
      Reaktionen
      1
      Trophäen
      10
      Beiträge
      15
      • 14. Juli 2017 um 00:54
      • #3

      Danke für die Tipps. Ich merke sie mir. Allerdings ist das Problem, dass man trotzdessen nach der Einnahme der Schmerzmittel (ein zweites mal innerhalb 5 min) kein Schaden davon erhält.

      Code
      case (_item isEqualTo>
       1:05:54   Error Allgemeiner Fehler in Ausdruck
       1:05:54 File core\pmenu\fn_useItem.sqf [life_fnc_useItem], line 126
       1:05:54 Suspending not allowed in this context
       1:05:54 Error in expression <.06); mytag_gvar_consumedMorphin= true; sleep 300; mytag_gvar_consumedMorphin= f>
       1:05:54   Error position: <sleep 300; mytag_gvar_consumedMorphin= f>
       1:05:54   Error Allgemeiner Fehler in Ausdruck
       1:05:54 File core\pmenu\fn_useItem.sqf [life_fnc_useItem], line 123
       1:05:54 Suspending not allowed in this context
       1:05:54 Error in expression <rphin= false; };
      };
      _timer = _timer -1;
      sleep 1;
      };
      };
      };
      
      case (_item isEqualTo>
       1:05:54   Error position: <sleep 1;
      };
      };
      };
      Alles anzeigen

      Einmal editiert, zuletzt von SpongebobUndPatrick (14. Juli 2017 um 01:14)

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