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
Sa: 24 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

    fn_keyhandler.sqf funktioniert nicht mehr.

      • Altis Life
    • CHX31
    • 8. März 2021 um 23:08
    • Erledigt
    • CHX31
      Schüler
      Reaktionen
      10
      Trophäen
      6
      Beiträge
      139
      • 8. März 2021 um 23:08
      • #1

      Hey,
      ich habe mir ein Repair Job skript geschrieben. Mit diesem sollen User nach dem sie sich bei der Straßenmeisterei eine Ausrüstung geliehen haben, zerstörte Mapobjekte im Umkreis von 5m reparieren können, und dafür Geld bekommen

      Leider funktioniert seit dem Einfügen dieses Skriptes keine Altis Life Hotkeys mehr (die aus der keyhandler).

      Ich habe folgende Dateien erstellt / Einträge gemacht:

      C: fn_keyhandler.sqf
      //Objekte reparieren (STRG + R)
          case 19: {
              if (_ctrlKey) then {
                  if(player getVariable "amc_duty_stat" OR player getVariable "repairjob") then {
                    [] spawn ylrpg_fnc_roadrepair;
                  } else if (!(player getVariable "amc_duty_stat") AND !(player getVariable "repairjob")) then {
                    ["Du musst dir erst an der Straßenmeisterei eine Ausrüstung organisieren", "fast", "warning", "Straßenmeisterei"] call ylrpg_fnc_notification_system;
                  _handled = true;
              };
          };
      C: fn_roadrepair.sqf
      #include "..\..\..\script_macros.hpp"
      /*
        Author: Dennis
        Server: YourLife RPG
        Description: Terrain Repair Job, 5m Umkreis
      */
          _objects = nearestTerrainObjects [player, [], 5, false];
      
              _objCount = 1;//{_object} count;
      
            {
                _x setDamage 0;
                  if(_x getVariable ['hidden_adm',false]) then {
                      [11,player,1,_x] remoteExecCall ['ton_fnc_rem_proxy',2];
                  };
            } forEach _objects;
      
        if(player getVariable "amc_duty_stat") then {
            // Rechne die Vergütung aus (AMC)
              _ammount = _objCount * 50;
              BANK = BANK + _ammount;
              [1] call SOCK_fnc_updatePartial;
      
            // Informiere den AMCler
            [
              format[
                "Du hast %1 Objekte im Umkreis von 5m erfolgreich reparieren können. Dafür hat dein Chef dir %2$ zusätzlich zu deinem Gehalt überwiesen! Das Geld wurde auf dein Bankkonto überwiesen.",
                [_objCount] call life_fnc_numberText,
                [_ammount] call life_fnc_numberText
              ],
              "fast",
              "info",
              "Spielerinformation"
            ] call ylrpg_fnc_notification_system;
        } else {
          // Rechne die Vergütung aus (Zivilist)
            _ammount = _objCount * 10;
            BANK = BANK + _ammount;
            [1] call SOCK_fnc_updatePartial;
      
          // Informiere den Spieler
          [
            format[
              "Du hast %1 Objekte im Umkreis von 5m erfolgreich reparieren können. Dafür hat dich der Bürgermeister mit %2$ belohnt! Das Geld wurde auf dein Bankkonto überwiesen.",
              [_objCount] call life_fnc_numberText,
              [_ammount] call life_fnc_numberText
            ],
            "fast",
            "info",
            "Spielerinformation"
          ] call ylrpg_fnc_notification_system;
        };
      Alles anzeigen
      C: fn_getrepairjob.sqf
      #include "../../../script_macros.hpp"
      /*
        Author: Dennis
        Server: YourLife RPG
        Description: Getting the Repair Job
      */
      if(player getVariable "repairjob") then {
        player setVariable ["repairjob", false, true];
      
        BANK = BANK + 1000;
        [1] call SOCK_fnc_updatePartial;
      
        ["Du hast deine Ausrüstung der Straßenmeisterei zurück gegeben. Dein Pfand wurde dir zurück gezahlt", "fast", "info", "Straßenmeisterei"] call ylrpg_fnc_notification_system;
      } else {
        player setVariable ["repairjob", true, true];
      
        BANK = BANK - 1000;
        [1] call SOCK_fnc_updatePartial;
        ["Du hast dir von der Straßenmeisterei eine Ausrüstung geliehen. Dir wurden 1.000$ Pfand vom Konto abgezogen. Wenn du die Ausrüstung vor der Sonnenwende zurück bringst, bekomsmt du das Pfand zurück!", "fast", "info", "Straßenmeisterei"] call ylrpg_fnc_notification_system;
      }
      Alles anzeigen



      Die fn_getrepairjob.sqf wird über eine Init in einem Infostand (Addaction) aufgerufen. Dieser Teil funktioniert auch, und die variable wird auch ordnungsgemäß gesetzt.

      Im Anhang sind die Server- und Clientlogs
      Mir ist bekannt das hier ein Fehler mit einem Admin Duty system angezeigt wird. Dieser wurde bereits behoben - ich war nur noch nicht auf dem Server für neue Logs.
      An sich ist es aber ausgeschlossen, das dieses System für den Fehler mit dem KeyHandler verantwortlich ist, da dies über 24 Stunden nach dem Auftreten des Fehlers überhaupt erst entstanden ist.

      Dateien

      arma3server_x64_2021-03-08_22-13-46.rpt 680,44 kB – 105 Downloads Arma3_x64_2021-03-08_21-54-55.rpt 2,78 MB – 128 Downloads
    • kruemelmonstaar
      Frischling
      Reaktionen
      3
      Beiträge
      10
      • 8. März 2021 um 23:58
      • #2

      Gude auf die schnelle sehe ich in deinem keyhandler erstmal nen else if was sqf so nicht kennt. Würde dir auch empfehlen bei getVariable mit default values (siehe Code unten) zu arbeiten und die variable local zu lassen eh sei denn du brauchst sie auch von von woanders aus.

      Code
      case 19: {
          if (_ctrlKey) then {
              if ((player getVariable ["amc_duty_stat", false]) || (player getVariable ["repairjob",false])) then {
                [] spawn ylrpg_fnc_roadrepair;
              } else { 
                  if (!(player getVariable "amc_duty_stat") AND !(player getVariable "repairjob")) then {
                      ["Du musst dir erst an der Straßenmeisterei eine Ausrüstung organisieren", "fast", "warning", "Straßenmeisterei"] call ylrpg_fnc_notification_system;
                  };
              };
              _handled = true;
          };
      };
      Alles anzeigen

      Sonst noch in der roadrepair.sqf die vergütung. diese ist bei dir fix auf 50 gesetzt, denke aber du möchtest da eher 50 * den count an reparierten objekten oder?

      Grüße

    • TaktischerSpeck
      Profi
      Reaktionen
      292
      Trophäen
      9
      Beiträge
      1.211
      Dateien
      6
      Bilder
      35
      • 9. März 2021 um 10:44
      • #3

      Moin,

      könntest du evtl. mal die komplette keyhanlder hochladen?

      ansonsten such mal ggf in deinen dateien nach folgender code block

      Code
      22:18:20 Error in expression <EnterMSG";ctrlShow[3021,true];};
      
            // [_msg,name player,4] remoteExecCall [>
      22:18:20   Error position: <// [_msg,name player,4] remoteExecCall [>
      22:18:20   Error Ungültige Zahl in Ausdruck
      22:18:20 Error in expression <EnterMSG";ctrlShow[3021,true];};
      
            // [_msg,name player,4] remoteExecCall [>
      22:18:20   Error position: <// [_msg,name player,4] remoteExecCall [>
      22:18:20   Error Ungültige Zahl in Ausdruck

      Mit freundlichen Grüßen

      TaktischerSpeck - Vincent

      2945262602.gif

      Leidenschaftlicher Analphabet mit leichtem Drang zum Sabbern.

      2945262602.gif
      Welcome to Arma, a game where Physics don't give a f*ck.

      2945262602.gif
      If (ArmA == Bullshit) exitWith {[] call f*uckThisShit};

      2945262602.gif

      Kontaktmöglichkeiten

      Twitch

      Youtube

      Steam

      TLG (Einfach nur TLG ins IP Feld (trust me its gonna work))

      --alternativ--

      Ts.TheLastGamer.de

      Website

      Forum

      E-Mail: [email protected]

      Twitch

      Youtube

      Steam

      TLG (Einfach nur TLG ins IP Feld (trust me its gonna work))

      --alternativ--

      Ts.TheLastGamer.de

      Website

      Forum

      E-Mail: [email protected]

    • TaktischerSpeck
      Profi
      Reaktionen
      292
      Trophäen
      9
      Beiträge
      1.211
      Dateien
      6
      Bilder
      35
      • 9. März 2021 um 10:47
      • #4

      nvmd was hast du denn da gemacht.

      es fehlt erstmal eine klammer die das case "beendet"

      else if gibt es in SQF nicht, du musst erst ins else case dann die if abfrage. (sorry hab jetzt erst gesehen das kruemelmonstaar das auch geschrieben hat)

      Mit freundlichen Grüßen

      TaktischerSpeck - Vincent

      2945262602.gif

      Leidenschaftlicher Analphabet mit leichtem Drang zum Sabbern.

      2945262602.gif
      Welcome to Arma, a game where Physics don't give a f*ck.

      2945262602.gif
      If (ArmA == Bullshit) exitWith {[] call f*uckThisShit};

      2945262602.gif

      Kontaktmöglichkeiten

      Twitch

      Youtube

      Steam

      TLG (Einfach nur TLG ins IP Feld (trust me its gonna work))

      --alternativ--

      Ts.TheLastGamer.de

      Website

      Forum

      E-Mail: [email protected]

      Twitch

      Youtube

      Steam

      TLG (Einfach nur TLG ins IP Feld (trust me its gonna work))

      --alternativ--

      Ts.TheLastGamer.de

      Website

      Forum

      E-Mail: [email protected]

    • CHX31
      Schüler
      Reaktionen
      10
      Trophäen
      6
      Beiträge
      139
      • 10. März 2021 um 11:38
      • #5

      So, das hier konnte das Problem nun beheben.

      War tatsächlich die else if.

      Keine Ahnung wie ich darauf gekommen bin, das else if existieren könnte. Vermutlich zu sehr an PHP gewöhnt....

      Zitat von kruemelmonstaar

      Gude auf die schnelle sehe ich in deinem keyhandler erstmal nen else if was sqf so nicht kennt. Würde dir auch empfehlen bei getVariable mit default values (siehe Code unten) zu arbeiten und die variable local zu lassen eh sei denn du brauchst sie auch von von woanders aus.

      Code
      case 19: {
          if (_ctrlKey) then {
              if ((player getVariable ["amc_duty_stat", false]) || (player getVariable ["repairjob",false])) then {
                [] spawn ylrpg_fnc_roadrepair;
              } else { 
                  if (!(player getVariable "amc_duty_stat") AND !(player getVariable "repairjob")) then {
                      ["Du musst dir erst an der Straßenmeisterei eine Ausrüstung organisieren", "fast", "warning", "Straßenmeisterei"] call ylrpg_fnc_notification_system;
                  };
              };
              _handled = true;
          };
      };
      Alles anzeigen

      Sonst noch in der roadrepair.sqf die vergütung. diese ist bei dir fix auf 50 gesetzt, denke aber du möchtest da eher 50 * den count an reparierten objekten oder?

      Grüße

    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™