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
Di: 20 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

    Logik Fehler? + Unknown Error

      • Altis Life
    • maltepower99
    • 22. April 2021 um 13:10
    • Erledigt
    • maltepower99
      Fortgeschrittener
      Reaktionen
      58
      Trophäen
      9
      Beiträge
      306
      • 22. April 2021 um 13:10
      • #1

      Moin NN-Community,

      ich habe vorgestern Nach eine Scriptumstellung begonnen und wollte zb in diesem Script eine Timerkompremmierung beginnen, um in Zukunft diese nicht separiert laufen zu lassen.

      Jedoch befürchte ich (normal arbeite ich zurzeit mit c# wo zb Funktionen wie nameOf auch gehen, scheint aber in Arma leider gar nicht zu existieren) dass in sqf das evtl so nicht möglich ist, von der Logic her.

      Daher wollte ich hier einmal nachfragen.

      Im besten Fall habe ich ja nur etwas übersehen :D

      Fehler gibts dazu keinen, es tut an sich, nur nimmt er nicht die richtigen Werte bzw setzt diese nicht mehr richtig.

      Also wenn der Cooldown eines eingetragenen Cooldowns zb 300 ist, bleibt der ständig auf 300. Also klappt das mit der foreach nicht ganz.

      Zudem ist die aktuelle Version die 2. weswegen die 1. auch etwas verfälscht ist. Dort war eigentlich _x etc genutzt worden. Hatte jedenfalls leider auch nicht geklappt daher die Umstellung.

      Also es geht primär um die Zeile sozusagen:

      Code
      _cooldownZeit = _cooldownZeit - _sleepDuration;

      Ich habe auch 2 Versionen um das zu prüfen oder evtl zu fixen, hatte aber nicht geklappt:

      1.Version

      Spoiler anzeigen
      Code
      _sleepDuration = 5;
      _count = 0;
      _cooldownZeit = 0;
      _namenString = "";
      _activeCooldowns = [];
      while {true} do {
      sleep _sleepDuration;
      _activeCooldowns = [life_boxcooldown,life_questCooldownBlaubart,life_questCooldownIngo,life_animalcooldown,life_medauftragcooldown,life_registrierungcooldown,life_checkpointtimer,life_registrierungtimer,life_ceoCooldown];
      _count = 0;
      {
      _cooldownZeit = _activeCooldowns select _count;
      _namenString = life_cooldownNamenStringArray select _count;
      
      
      if(_cooldownZeit >= _sleepDuration) then {
      //call compile format ["%1 = %1 - %2",_cooldownZeit,_sleepDuration];
      _cooldownZeit = _cooldownZeit - _sleepDuration;
      if(_cooldownZeit == 0) then {
      switch (_namenString) do {
      case "life_questCooldownSanta": {
      systemChat "Santas Bote: Du kannst nun wieder einen Auftrag bei mir abgeben!";
      };
      case "life_questCooldownIngo": {
      systemChat "Ingo: Du kannst nun wieder einen Auftrag bei mir abgeben!";
      };
      case "life_questCooldownBlaubart": {
      systemChat "Blaubart: Du kannst nun wieder einen Auftrag bei mir abgeben!";
      };
      case "life_animalcooldown": {
      hint parseText "<t size='1.3'><t color='#97FFFF'>Du kannst nun wieder</t></t><br></br><t size='1.6'><t color='#8B4513'>Tiere</t></t><br></br><t size='1.5'><t color='#6B8E23'>freisetzen</t>!</t>";
      };
      case "life_medauftragcooldown": {
      hint parseText "<t size='1.7'><t color='#FF4040'>Auftragscooldown</t></t><br></br><t size='1.5'><t color='#32cd32'>abgelaufen!</t></t>";
      };
      case "life_registrierungcooldown": {
      systemChat "Du kannst nun wieder bei checkpoints auf eine Registrierung geprüft werden!";
      };
      case "life_checkpointtimer": {
      life_checkpoint = 0;
      };
      case "life_registrierungtimer": {
      systemChat "Deine Checkpointgenehmigung ist abgelaufen! Beantrage beim nächsten Checkpoint eine neue!";
      hint "Deine Checkpointgenehmigung ist abgelaufen! Beantrage beim nächsten Checkpoint eine neue!";
      life_registrierung = 0;
      };
      case "life_ceoCooldown": {
      hint parseText "<t size='1.2'>Du kannst nun wieder einen<br></br><t color='#FF4500'>CEO</t><br></br><t color='#698B22'>einstellen</t>!</t>";
      };
      
      
      case "life_ausraubCooldown": {
      hint parseText "<t size='1.2'>Du kannst nun wieder einen<br></br><t color='#FF4500'>Raub</t><br></br><t color='#698B22'>begehen</t>!</t>";
      };
      default {
      
      
      };
      };
      };
      } else {
      _cooldownZeit = 0;
      };
      _count = _count + 1;
      }forEach _activeCooldowns;
      };
      Alles anzeigen

      2. Version

      Spoiler anzeigen
      Code
      /* Autor: MaltepowR99
      Maltis Life Custom System
      Private File For MALTIS LIFE - Usage not allowed!
      */
      _sleepDuration = 5;
      _count = 0;
      _count2 = 0;
      _cooldownZeit = 0;
      _namenString = "";
      _namenString2 = "";
      _activeCooldowns = [];
      while {true} do {
      sleep _sleepDuration;
      _activeCooldowns = [life_boxcooldown,life_questCooldownBlaubart,life_questCooldownIngo,life_animalcooldown,life_medauftragcooldown,life_registrierungcooldown,life_checkpointtimer,life_registrierungtimer,life_ceoCooldown];
      _count = 0;
      {
      _cooldownZeit = _activeCooldowns select _count;
      _namenString = life_cooldownNamenStringArray select _count;
      
      
      if(_cooldownZeit >= _sleepDuration) then {
      //call compile format ["%1 = %1 - %2",_cooldownZeit,_sleepDuration];
      _cooldownZeit = _cooldownZeit - _sleepDuration;
      if(_cooldownZeit == 0) then {
      switch (_namenString) do {
      case "life_questCooldownSanta": {
      systemChat "Santas Bote: Du kannst nun wieder einen Auftrag bei mir abgeben!";
      };
      case "life_questCooldownIngo": {
      systemChat "Ingo: Du kannst nun wieder einen Auftrag bei mir abgeben!";
      };
      case "life_questCooldownBlaubart": {
      systemChat "Blaubart: Du kannst nun wieder einen Auftrag bei mir abgeben!";
      };
      case "life_animalcooldown": {
      hint parseText "<t size='1.3'><t color='#97FFFF'>Du kannst nun wieder</t></t><br></br><t size='1.6'><t color='#8B4513'>Tiere</t></t><br></br><t size='1.5'><t color='#6B8E23'>freisetzen</t>!</t>";
      };
      case "life_medauftragcooldown": {
      hint parseText "<t size='1.7'><t color='#FF4040'>Auftragscooldown</t></t><br></br><t size='1.5'><t color='#32cd32'>abgelaufen!</t></t>";
      };
      case "life_registrierungcooldown": {
      systemChat "Du kannst nun wieder bei checkpoints auf eine Registrierung geprüft werden!";
      };
      case "life_checkpointtimer": {
      life_checkpoint = 0;
      };
      case "life_registrierungtimer": {
      systemChat "Deine Checkpointgenehmigung ist abgelaufen! Beantrage beim nächsten Checkpoint eine neue!";
      hint "Deine Checkpointgenehmigung ist abgelaufen! Beantrage beim nächsten Checkpoint eine neue!";
      life_registrierung = 0;
      };
      case "life_ceoCooldown": {
      hint parseText "<t size='1.2'>Du kannst nun wieder einen<br></br><t color='#FF4500'>CEO</t><br></br><t color='#698B22'>einstellen</t>!</t>";
      };
      
      
      case "life_ausraubCooldown": {
      hint parseText "<t size='1.2'>Du kannst nun wieder einen<br></br><t color='#FF4500'>Raub</t><br></br><t color='#698B22'>begehen</t>!</t>";
      };
      default {
      
      
      };
      };
      };
      } else {
      _cooldownZeit = 0;
      };
      _count = _count + 1;
      }forEach _activeCooldowns;
      
      
      _count2 = 0;
      {
      _namenString2 = life_cooldownNamenStringArray select _count2;
      switch (_namenString2) do {
      case "life_questCooldownSanta": {
      life_questCooldownSanta = _activeCooldowns select _count2;
      };
      case "life_questCooldownIngo": {
      life_questCooldownIngo = _activeCooldowns select _count2;
      };
      case "life_questCooldownBlaubart": {
      life_questCooldownBlaubart = _activeCooldowns select _count2;
      };
      case "life_animalcooldown": {
      life_animalcooldown = _activeCooldowns select _count2;
      };
      case "life_medauftragcooldown": {
      life_medauftragcooldown = _activeCooldowns select _count2;
      };
      case "life_registrierungcooldown": {
      life_registrierungcooldown = _activeCooldowns select _count2;
      };
      case "life_checkpointtimer": {
      life_checkpointtimer = _activeCooldowns select _count2;
      };
      case "life_registrierungtimer": {
      life_registrierungtimer = _activeCooldowns select _count2;
      };
      case "life_ceoCooldown": {
      life_ceoCooldown = _activeCooldowns select _count2;
      };
      case "life_ausraubCooldown": {
      life_ausraubCooldown = _activeCooldowns select _count2;
      };
      default {
      
      
      };
      };
      _count2 = _count2 + 1;
      }forEach _activeCooldowns;
      };
      Alles anzeigen


      Und das 2. Wäre ein für mich gerade unidentifizierbarer Fehler:

      Log:

      Spoiler anzeigen
      Code
      if(life_arbeit == 0) then {
      
      
      life_arbeit = >
      23:43:39   Error position: <life_arbeit == 0) then {
      
      
      life_arbeit = >
      23:43:39   Error Nicht definierte Variable in Ausdruck: life_arbeit
      23:43:39 File mpmissions\__CUR_MP.Altis\Maltis\Crafting\craftingStation.sqf..., line 15
      23:43:39 Error in expression <t = 0;
      _position = "";
      _time = 0;
      Alles anzeigen

      (life_arbeit und life_craft sind sicher definiert)

      script:

      Spoiler anzeigen
      Code
      /* Autor: MaltepowR99
      Onw processor  */
      
      
      _resourceTwoAmount = 0;
      _neededResourceTwoAmount = 0;
      _resourceOneAmount = 0;
      _neededResourceOneAmount = 0;
      _resourceThreeAmount = 0;
      _neededResourceThreeAmount = 0;
      _position = "";
      _time = 0;
      
      
      
      
      
      
      if(life_arbeit == 0) then {
      //if(life_verarbeiterzeahler == 0) exitWith { hint parseText "<t size='1.2'>Du hast <t color='#ff0000'>keinen</t> <t color='#ffb90f'>Craftingbauplan</t> eingelöst!</t>"; };
      life_arbeit = 1;
      _time = life_craft * 50;
      titleText [format ["Starte das Herstellen... Deine Verarbeitungsgeschwindigkeit liegt durch dein Skillsystem bei %1 Sekunden.", _time], "PLAIN", 1];
      while {true} do {
      {
      if(player distance (getMarkerPos _x) < 25) exitWith {_position = _x;};
      } foreach life_craftingZones;
      
      
      switch (_position) do {
      case "kohlenstoff_1": {
      _resourceOneAmount = life_DiastaubLagerCraftingStation;
      _neededResourceOneAmount = 2;
      };
      case "carbon_1": {
      _resourceOneAmount = life_kohlenstoffCarbonLagerCraftingStation;
      _neededResourceOneAmount = 2;
      };
      case "silber2_1": {
      _resourceOneAmount = life_silber2AluLagerCraftingStation;
      _resourceTwoAmount = life_silber2SilberLagerCraftingStation;
      _neededResourceOneAmount = 8; //Alu
      _neededResourceTwoAmount = 4; //Silber
      };
      case "schokobrot_1": {
      _resourceOneAmount = life_schokoladenLagerCraftingStation;
      _resourceTwoAmount = life_brotLagerCraftingStation;
      _neededResourceOneAmount = 60; //SCHOKO
      _neededResourceTwoAmount = 20; //BROT
      };
      case "legierung_1": {
      _resourceOneAmount = life_legierungAluLagerCraftingStation;
      _resourceTwoAmount = life_legierungZinkLagerCraftingStation;
      _neededResourceOneAmount = 5; //ALU
      _neededResourceTwoAmount = 5; //ZINK
      };
      case "schneider_1": {
      _resourceOneAmount = life_kleidung1StoffLagerCraftingStation;
      _resourceTwoAmount = life_kleidung1LederLagerCraftingStation;
      _resourceThreeAmount = life_kleidung1RubinLagerCraftingStation;
      _neededResourceOneAmount = 25; //STOFF
      _neededResourceTwoAmount = 15; // LEEDER
      _neededResourceThreeAmount = 7; // RUBIN
      };
      case "schneider_2": {
      _resourceOneAmount = life_kleidung2StoffLagerCraftingStation;
      _resourceTwoAmount = life_kleidung2LederLagerCraftingStation;
      _resourceThreeAmount = life_kleidung2DiaLagerCraftingStation;
      _neededResourceOneAmount = 15; //STOFF
      _neededResourceTwoAmount = 5; // LEDER
      _neededResourceThreeAmount = 1; //DIA
      };
      case "schneider_3": {
      _resourceOneAmount = life_kleidung3LederLagerCraftingStation;
      _resourceTwoAmount = life_kleidung3StoffLagerCraftingStation;
      _neededResourceOneAmount = 15; // LEDER
      _neededResourceTwoAmount = 7; //STOFF
      };
      case "schneider_4": {
      _resourceOneAmount = life_kleidung4StoffLagerCraftingStation;
      _resourceTwoAmount = life_kleidung4LederLagerCraftingStation;
      _neededResourceOneAmount = 7; //STOFF
      _neededResourceTwoAmount = 2; //LEDER
      };
      case "gerber_1": {
      _resourceOneAmount = life_lederRohlederLagerCraftingStation;
      _neededResourceTwoAmount = 6;
      };
      case "wolle_1": {
      _resourceOneAmount = life_wolleLagerCraftingStation;
      _neededResourceOneAmount = 1;
      };
      default {
      if(true) exitWith { hint "Error! Nicht in einer gültigen Zone!"; life_arbeit = 0;};
      };
      };
      if(_resourceOneAmount < _neededResourceOneAmount  _resourceTwoAmount < _neededResourceTwoAmount  _resourceThreeAmount < _neededResourceThreeAmount) exitWith {life_arbeit = 0; hint parseText "Du hast<t color='#ff0000'><br></br> KEINE</t><br></br> oder<br></br> <t color='#ff0000'>NICHT GENÜGEND</t><br></br> <t color='#ffb90f'>Rohstoffe</t> im Lager!<br></br> Um zu sehen, was du brauchst,<br></br> kannst du auf<t color='#ffb90f'><br></br> Z Craft Items</t> nachschauen.<br></br> Zudem benötigst du bei <t color='#ffb90f'>Craftingstations</t><br></br> <t color='#ff0000'>IMMER<br></br></t> einen <t color='#ffb90f'>Crafting Bauplan</t> <br></br>für 5 Mal <t color='#ffb90f'>Craften</t>!";};
      
      
      _time = life_craft * 50;
      sleep _time;
      
      
      
      
      switch (_position) do {
      case "kohlenstoff_1": {
      life_kohlenstoffLagerCraftingStation = life_kohlenstoffLagerCraftingStation + 1;
      life_DiastaubLagerCraftingStation = life_DiastaubLagerCraftingStation - _neededResourceOneAmount;
      };
      case "carbon_1": {
      life_carbonLagerCraftingStation = life_carbonLagerCraftingStation + 1;
      life_kohlenstoffCarbonLagerCraftingStation = life_kohlenstoffCarbonLagerCraftingStation - _neededResourceOneAmount;
      };
      case "silber2_1": {
      life_silber2LagerCraftingStation = life_silber2LagerCraftingStation + 1;
      life_silber2AluLagerCraftingStation = life_silber2AluLagerCraftingStation - _neededResourceOneAmount; //Alu
      life_silber2SilberLagerCraftingStation = life_silber2SilberLagerCraftingStation - _neededResourceTwoAmount; //Silber
      };
      case "schokobrot_1": {
      life_schokobrotLagerCraftingStation = life_schokobrotLagerCraftingStation + 1;
      life_schokoladenLagerCraftingStation = life_schokoladenLagerCraftingStation - _neededResourceOneAmount; //SCHOKO
      life_brotLagerCraftingStation = life_brotLagerCraftingStation - _neededResourceTwoAmount; //BROT
      };
      case "legierung_1": {
      life_legierungLagerCraftingStation = life_legierungLagerCraftingStation + 1;
      life_legierungAluLagerCraftingStation = life_legierungAluLagerCraftingStation  - _neededResourceOneAmount; //ALU
      life_legierungZinkLagerCraftingStation = life_legierungZinkLagerCraftingStation - _neededResourceTwoAmount; //ZINK
      };
      case "schneider_1": {
      life_kleidung1LagerCraftingStation = life_kleidung1LagerCraftingStation + 1;
      life_kleidung1StoffLagerCraftingStation = life_kleidung1StoffLagerCraftingStation - _neededResourceOneAmount; //STOFF
      life_kleidung1LederLagerCraftingStation = life_kleidung1LederLagerCraftingStation - _neededResourceTwoAmount; // LEEDER
      life_kleidung1RubinLagerCraftingStation = life_kleidung1RubinLagerCraftingStation - _neededResourceThreeAmount; // RUBIN
      };
      case "schneider_2": {
      life_kleidung2LagerCraftingStation = life_kleidung2LagerCraftingStation + 1;
      life_kleidung2StoffLagerCraftingStation = life_kleidung2StoffLagerCraftingStation - _neededResourceOneAmount; //STOFF
      life_kleidung2LederLagerCraftingStation = life_kleidung2LederLagerCraftingStation - _neededResourceTwoAmount; // LEDER
      life_kleidung2DiaLagerCraftingStation = life_kleidung2DiaLagerCraftingStation - _neededResourceThreeAmount; //DIA
      };
      case "schneider_3": {
      life_kleidung3LagerCraftingStation = life_kleidung3LagerCraftingStation + 1;
      life_kleidung3LederLagerCraftingStation = life_kleidung3LederLagerCraftingStation - _neededResourceOneAmount; // LEDER
      life_kleidung3StoffLagerCraftingStation = life_kleidung3StoffLagerCraftingStation - _neededResourceTwoAmount; //STOFF
      };
      case "schneider_4": {
      life_kleidung4LagerCraftingStation = life_kleidung4LagerCraftingStation + 1;
      life_kleidung4StoffLagerCraftingStation = life_kleidung4StoffLagerCraftingStation - _neededResourceOneAmount; //STOFF
      life_kleidung4LederLagerCraftingStation = life_kleidung4LederLagerCraftingStation - _neededResourceTwoAmount; //LEDER
      };
      case "gerber_1": {
      life_lederLagerCraftingStation = life_lederLagerCraftingStation + 1;
      life_lederRohlederLagerCraftingStation = life_lederRohlederLagerCraftingStation - _neededResourceOneAmount;
      };
      case "wolle_1": {
      life_stoffLagerCraftingStation = life_stoffLagerCraftingStation + 1;
      life_wolleLagerCraftingStation = life_wolleLagerCraftingStation - _neededResourceOneAmount;
      };
      default {
      if(true) exitWith { hint "Error! Nicht in einer gültigen Zone!"; life_arbeit = 0;};
      };
      };
      life_afkReduceTickActionTriggered = 0.5;
      call life_fnc_antiAfk;
      [true,"xps",life_verarbeiterxp] call life_fnc_handleInv;
      call life_fnc_XPUmwandeln;
      call life_fnc_BoxVerarbeiter;
      };
      life_arbeit = 0;
      } else {
      hint parseText "<t size='1.2'>Du führst <t color='#ff0000'>bereits</t> eine <t color='#ff0000'>Aktion</t> durch!</t>";
      };
      Alles anzeigen


      Hinweis:

      ich arbeite mit der 3.1.4.8

      Danke für eure Hilfe!

      MfG Malte

      4 Mal editiert, zuletzt von maltepower99 (22. April 2021 um 13:36)

    • Henne
      Nerd
      Reaktionen
      155
      Trophäen
      7
      Beiträge
      840
      Bilder
      7
      • 22. April 2021 um 13:24
      • #2

      Bin gerade nur am Handy, daher schaue ich später nochmal drüber wenn es noch keiner gemacht hat.

      Das hier kann man ändern:

      _cooldownZeit = _activeCooldowns select _count; -> _cooldownZeit = _x;

      life_cooldownNamenStringArray select _count; -> life_cooldownNamenStringArray select _forEachIndex;

      Dann kannst du "_count" komplett entfernen.

      Zudem hast du hier vermutlich einen Logikfehler:

      Code
      _cooldownZeit = _cooldownZeit - _sleepDuration;
      
      if(_cooldownZeit == 0) then {

      Denn die "_cooldownZeit" kann ja kleiner als 0 werden.

      Also lieber <= 0 prüfen.

    • maltepower99
      Fortgeschrittener
      Reaktionen
      58
      Trophäen
      9
      Beiträge
      306
      • 22. April 2021 um 13:31
      • #3
      Zitat von Henne079

      Bin gerade nur am Handy, daher schaue ich später nochmal drüber wenn es noch keiner gemacht hat.

      Das hier kann man ändern:

      _cooldownZeit = _activeCooldowns select _count; -> _cooldownZeit = _x;

      life_cooldownNamenStringArray select _count; -> life_cooldownNamenStringArray select _forEachIndex;

      Dann kannst du "_count" komplett entfernen.

      Zudem hast du hier vermutlich einen Logikfehler:

      Code
      _cooldownZeit = _cooldownZeit - _sleepDuration;
      
      if(_cooldownZeit == 0) then {

      Denn die "_cooldownZeit" kann ja kleiner als 0 werden.

      Also lieber <= 0 prüfen.

      Alles anzeigen

      Das mit dem X hatte ich zuerst genutzt wollte jedenfalls auch nciht ganz. Aber ja dazu dient eig die forEach, da haste recht ;).

      Edit:

      Mein Fehler, hattte grad die falsche if bedacht... :D

      Mh Jain.

      Also es muss ja an der stelle so sein, da sonst durchgehend gespamt werden würde "Cooldown abgelaufen" etc. Aber ja du hast nicht unrecht. Ich muss dann noch schauen, dass bei nicht genauen 0 zahlen das richtig klappt. Jedoch sind alle aktuellen Cooldowns die dort eingetragen sind durch 5 teilbar.

      Also sollte das nicht das Problem sein bzw generell würde das ja nur die Anzeige beinflussen nicht das System.

      Einmal editiert, zuletzt von maltepower99 (22. April 2021 um 13:39)

    • maltepower99
      Fortgeschrittener
      Reaktionen
      58
      Trophäen
      9
      Beiträge
      306
      • 22. April 2021 um 13:45
      • #4

      Bzw er käme eh nicht rein wegen

      Code
      if(_cooldownZeit >= _sleepDuration) then {

      Aber dann käme keine Nachricht, das ist aber eine Kleinigkeit das behebe ich sofort wenns gehen sollte :)

      Bzw hab ich jz direkt:

      Code
      if(_cooldownZeit >= _sleepDuration || _cooldownZeit != 0) then {
      //call compile format ["%1 = %1 - %2",_cooldownZeit,_sleepDuration];
      _cooldownZeit = _cooldownZeit - _sleepDuration;
      if(_cooldownZeit < 0) then {
      _cooldownZeit = 0;
      };
      if(_cooldownZeit == 0) then {
    • maltepower99
      Fortgeschrittener
      Reaktionen
      58
      Trophäen
      9
      Beiträge
      306
      • 22. April 2021 um 13:51
      • #5

      Hier wäre nochmal die 2. Version in dem älteren Stil (mit der _x variante), sollte aber eigentlich eher keinen Unterschied machen ist aber an sich besser, da hat henne01 Recht.

      Code
      /* Autor: MaltepowR99
      Maltis Life Custom System
      Private File For MALTIS LIFE - Usage not allowed!
      */
      _sleepDuration = 5;
      _namenString = "";
      _namenString2 = "";
      _activeCooldowns = [];
      while {true} do {
      sleep _sleepDuration;
      _activeCooldowns = [life_boxcooldown,life_questCooldownBlaubart,life_questCooldownIngo,life_animalcooldown,life_medauftragcooldown,life_registrierungcooldown,life_checkpointtimer,life_registrierungtimer,life_ceoCooldown];
      {
      //cooldownZeit = _activeCooldowns select _count;
      _namenString = life_cooldownNamenStringArray select _forEachIndex;
      
      
      if(_x >= _sleepDuration || _x != 0) then {
      //call compile format ["%1 = %1 - %2",_x,_sleepDuration];
      _x = _x - _sleepDuration;
      if(_x < 0) then {
      _x = 0;
      };
      if(_x == 0) then {
      switch (_namenString) do {
      case "life_questCooldownSanta": {
      systemChat "Santas Bote: Du kannst nun wieder einen Auftrag bei mir abgeben!";
      };
      case "life_questCooldownIngo": {
      systemChat "Ingo: Du kannst nun wieder einen Auftrag bei mir abgeben!";
      };
      case "life_questCooldownBlaubart": {
      systemChat "Blaubart: Du kannst nun wieder einen Auftrag bei mir abgeben!";
      };
      case "life_animalcooldown": {
      hint parseText "<t size='1.3'><t color='#97FFFF'>Du kannst nun wieder</t></t><br></br><t size='1.6'><t color='#8B4513'>Tiere</t></t><br></br><t size='1.5'><t color='#6B8E23'>freisetzen</t>!</t>";
      };
      case "life_medauftragcooldown": {
      hint parseText "<t size='1.7'><t color='#FF4040'>Auftragscooldown</t></t><br></br><t size='1.5'><t color='#32cd32'>abgelaufen!</t></t>";
      };
      case "life_registrierungcooldown": {
      systemChat "Du kannst nun wieder bei checkpoints auf eine Registrierung geprüft werden!";
      };
      case "life_checkpointtimer": {
      life_checkpoint = 0;
      };
      case "life_registrierungtimer": {
      systemChat "Deine Checkpointgenehmigung ist abgelaufen! Beantrage beim nächsten Checkpoint eine neue!";
      hint "Deine Checkpointgenehmigung ist abgelaufen! Beantrage beim nächsten Checkpoint eine neue!";
      life_registrierung = 0;
      };
      case "life_ceoCooldown": {
      hint parseText "<t size='1.2'>Du kannst nun wieder einen<br></br><t color='#FF4500'>CEO</t><br></br><t color='#698B22'>einstellen</t>!</t>";
      };
      
      
      case "life_ausraubCooldown": {
      hint parseText "<t size='1.2'>Du kannst nun wieder einen<br></br><t color='#FF4500'>Raub</t><br></br><t color='#698B22'>begehen</t>!</t>";
      };
      default {
      
      
      };
      };
      };
      } else {
      _x = 0;
      };
      }forEach _activeCooldowns;
      {
      _namenString2 = life_cooldownNamenStringArray select _forEachIndex;
      switch (_namenString2) do {
      case "life_questCooldownSanta": {
      life_questCooldownSanta = _activeCooldowns select _forEachIndex;
      };
      case "life_questCooldownIngo": {
      life_questCooldownIngo = _activeCooldowns select _forEachIndex;
      };
      case "life_questCooldownBlaubart": {
      life_questCooldownBlaubart = _activeCooldowns select _forEachIndex;
      };
      case "life_animalcooldown": {
      life_animalcooldown = _activeCooldowns select _forEachIndex;
      };
      case "life_medauftragcooldown": {
      life_medauftragcooldown = _activeCooldowns select _forEachIndex;
      };
      case "life_registrierungcooldown": {
      life_registrierungcooldown = _activeCooldowns select _forEachIndex;
      };
      case "life_checkpointtimer": {
      life_checkpointtimer = _activeCooldowns select _forEachIndex;
      };
      case "life_registrierungtimer": {
      life_registrierungtimer = _activeCooldowns select _forEachIndex;
      };
      case "life_ceoCooldown": {
      life_ceoCooldown = _activeCooldowns select _forEachIndex;
      };
      case "life_ausraubCooldown": {
      life_ausraubCooldown = _activeCooldowns select _forEachIndex;
      };
      default {
      
      
      };
      };
      }forEach _activeCooldowns;
      };
      Alles anzeigen
    • Henne
      Nerd
      Reaktionen
      155
      Trophäen
      7
      Beiträge
      840
      Bilder
      7
      • 22. April 2021 um 18:30
      • #6

      Habe mal schnell das ganze aufgeräumt und minimal umgeschrieben:

      Code
      private _sleepDuration = 5;
      while {true} do {
          sleep _sleepDuration;
          {
              if (_y isEqualTo 0) then {continue};
              _y = _y - _sleepDuration;
              if (_y > 0) then {life_cooldowns set [_x, _y]; continue};
              life_cooldowns set [_x, 0];
              
              switch (_x) do {
                  case "life_questCooldownSanta": {systemChat "Santas Bote: Du kannst nun wieder einen Auftrag bei mir abgeben!"};
                  case "life_questCooldownIngo": {systemChat "Ingo: Du kannst nun wieder einen Auftrag bei mir abgeben!"};
                  case "life_questCooldownBlaubart": {systemChat "Blaubart: Du kannst nun wieder einen Auftrag bei mir abgeben!"};
                  case "life_animalcooldown": {hint parseText "<t size='1.3'><t color='#97FFFF'>Du kannst nun wieder</t></t><br></br><t size='1.6'><t color='#8B4513'>Tiere</t></t><br></br><t size='1.5'><t color='#6B8E23'>freisetzen</t>!</t>"};
                  case "life_medauftragcooldown": {hint parseText "<t size='1.7'><t color='#FF4040'>Auftragscooldown</t></t><br></br><t size='1.5'><t color='#32cd32'>abgelaufen!</t></t>"};
                  case "life_registrierungcooldown": {systemChat "Du kannst nun wieder bei checkpoints auf eine Registrierung geprüft werden!"};
                  case "life_checkpointtimer": {life_checkpoint = 0};
                  case "life_registrierungtimer": {
                      systemChat "Deine Checkpointgenehmigung ist abgelaufen! Beantrage beim nächsten Checkpoint eine neue!";
                      hint "Deine Checkpointgenehmigung ist abgelaufen! Beantrage beim nächsten Checkpoint eine neue!";
                      life_registrierung = 0;
                  };
                  case "life_ceoCooldown": {hint parseText "<t size='1.2'>Du kannst nun wieder einen<br></br><t color='#FF4500'>CEO</t><br></br><t color='#698B22'>einstellen</t>!</t>"};
                  case "life_ausraubCooldown": {hint parseText "<t size='1.2'>Du kannst nun wieder einen<br></br><t color='#FF4500'>Raub</t><br></br><t color='#698B22'>begehen</t>!</t>"};
                  default {};
              }
          } forEach (life_cooldowns)
      }
      Alles anzeigen

      Damit das ganze funktioniert, muss zuvor eine HashMap erstellt werden:

      Code
      life_cooldowns = createHashMapFromArray [
          ["life_questCooldownSanta", 0],
          ["life_questCooldownIngo", 0],
          ["life_questCooldownBlaubart", 0],
          ["life_animalcooldown", 0],
          ["life_medauftragcooldown", 0],
          ["life_registrierungcooldown", 0],
          ["life_checkpointtimer", 0],
          ["life_registrierungtimer", 0],
          ["life_ceoCooldown", 0],
          ["life_ausraubCooldown", 0]
      ]
      Alles anzeigen

      An die Werte aus der HashMap kommt man einfach über diesen Command: life_cooldowns get "life_animalcooldown"


      Der ursprüngliche Fehler ist/war, dass die Werte der Cooldowns zwar innerhalb des _x verändert wurden, aber nicht mehr auf die globale Variable gesetzt wurden.

    Registrieren oder Einloggen

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

    Registrieren

    Tags

    • 3.1.4.8

    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™