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

    Free | ArmA | Team im Dienst | Version: 1.0

      • Altis Life
    • I KnoW NoBody
    • 27. September 2021 um 20:12
    • I KnoW NoBody
      Frischling
      Reaktionen
      6
      Trophäen
      5
      Beiträge
      4
      • 27. September 2021 um 20:12
      • #1

      Hallo Native-Network Nutzer!

      In diesem Beitrag möchte ich euch mein Arma 3 Team im Dienst Script zu verfügen stellen.

      Bilder:

      Screenshot_1.png

      Screenshot_2.png

      Die anderes könnt ihr selber austesten :)

      Einrichten:

      1. Geht in den Ordner core\functions\functions und erstellt dort die Datei fn_admin.sqf mit dem Code.

      Code
      #include "..\..\script_macros.hpp"
      private["_mode","_team"];
      _mode = _this select 0;
      
      switch (_mode) do {
          case "PROJEKTLEITER": {
              if(player getVariable ["zl_adminimdienst",true] || player getVariable ["zl_entwicklerimdienst",true] || player getVariable ["zl_teamimdienst",true]) exitWith { ["Du hast noch einen anderen Modus aktiviert!", false, "fast", "orange", "Information"] spawn zl_fnc_msg; };
              if(player getVariable ["zl_leitungimdienst",true]) then {
                  player setVariable ["zl_leitungimdienst", false, true];
                  _team = false;
              } else {
                  player setVariable ["zl_leitungimdienst", true, true];
                  _team = true;
              };
          };
          case "ADMIN": {
              if(player getVariable ["zl_leitungimdienst",true] || player getVariable ["zl_entwicklerimdienst",true] || player getVariable ["zl_teamimdienst",true]) exitWith { ["Du hast noch einen anderen Modus aktiviert!", false, "fast", "orange", "Information"] spawn zl_fnc_msg; };
              if(player getVariable ["zl_adminimdienst",true]) then {
                  player setVariable ["zl_adminimdienst", false, true];
                  _team = false;
              } else {
                  player setVariable ["zl_adminimdienst", true, true];
                  _team = true;
              };
          };
          case "ENTWICKLER": {
              if(player getVariable ["zl_leitungimdienst",true] || player getVariable ["zl_adminimdienst",true] || player getVariable ["zl_teamimdienst",true]) exitWith { ["Du hast noch einen anderen Modus aktiviert!", false, "fast", "orange", "Information"] spawn zl_fnc_msg; };
              if(player getVariable ["zl_entwicklerimdienst",true]) then {
                  player setVariable ["zl_entwicklerimdienst", false, true];
                  _team = false;
              } else {
                  player setVariable ["zl_entwicklerimdienst", true, true];
                  _team = true;
              };
          };
          case "SUPPORTER": {
              if(player getVariable ["zl_leitungimdienst",true] || player getVariable ["zl_adminimdienst",true] || player getVariable ["zl_entwicklerimdienst",true]) exitWith { ["Du hast noch einen anderen Modus aktiviert!", false, "fast", "orange", "Information"] spawn zl_fnc_msg; };
              if(player getVariable ["zl_teamimdienst",true]) then {
                  player setVariable ["zl_teamimdienst", false, true];
                  _team = false;
              } else {
                  player setVariable ["zl_teamimdienst", true, true];
                  _team = true;
              };
          };
      };
      
      if(_team) then {
          _team = true;
          AdminGear = life_gear;
          publicVariable "AdminGear";
          player allowDamage false;
          [] call ZL_fnc_stripDownPlayer;
          player addUniform "U_B_CombatUniform_mcam";
          [] call ZL_fnc_playerSkins;
          [format["Du bist nun im %1 Modus!",_mode], false, "fast", "orange", "Information"] spawn zl_fnc_msg;
      } else {
          _team = false;
          player allowDamage true;
          life_gear = AdminGear;
          [] spawn ZL_fnc_loadGear;
          [] call ZL_fnc_playerSkins;
          [format["Du bist nun nichtmehr im %1 Modus!",_mode], false, "fast", "orange", "Information"] spawn zl_fnc_msg;
      };
      Alles anzeigen


      2. Geht in eure Functions.hpp und fügt dort unter Functions class admin {}; ein.

      3. Öffnet nun eure fn_playerTags.sqf in dem Ordner core\functions\functions und fügt den Code über der Zeile _idc ctrlSetStructuredText parseText _text; ein.

      Code
      if(_x getVariable ["zl_entwicklerimdienst",true]) then {
      _text = format ["<img image='\a3\ui_f\data\gui\Cfg\UnitInsignia\curator_ca.paa' color='#5EFF33' /><t color='#5EFF33'> Entwickler</t><br/><t color='#FFFFFF'>%1</t>",(_x getVariable ["realname",name _x])];
      };
      
      
      if(_x getVariable ["zl_leitungimdienst",true]) then {
      _text = format ["<img image='\a3\ui_f\data\gui\Cfg\UnitInsignia\curator_ca.paa' color='#FF0000' /><t color='#FF0000'> Projektleiter im Dienst</t><br/><t color='#FFFFFF'>%1</t>",(_x getVariable ["realname",name _x])];
      };
      
      
      if(_x getVariable ["zl_adminimdienst",true]) then {
      _text = format ["<img image='\a3\ui_f\data\gui\Cfg\UnitInsignia\curator_ca.paa' color='#FF0000' /><t color='#FF0000'> Admin im Dienst</t><br/><t color='#FFFFFF'>%1</t>",(_x getVariable ["realname",name _x])];
      };
      
      
      if(_x getVariable ["zl_teamimdienst",true]) then {
      _text = format ["<img image='\a3\ui_f\data\gui\Cfg\UnitInsignia\curator_ca.paa' color='#FFFD00' /><t color='#FFFD00'> Supporter im Dienst</t><br/><t color='#FFFFFF'>%1</t>",(_x getVariable ["realname",name _x])];
      };
      Alles anzeigen

      4. Geht nun in eure fn_playerSkins.sqf in dem Ornder core\functions\functions und fügt ganz unten den Code ein natürlich noch den Path anpassen.

      Code
      if(player getVariable ["zl_leitungimdienst",true]) then {
      if (uniform player isEqualTo "U_B_CombatUniform_mcam") then {
      player setObjectTextureGlobal [0, "Images\team\admin.jpg"];
      };
      };
      
      
      if(player getVariable ["zl_entwicklerimdienst",true]) then {
      if (uniform player isEqualTo "U_B_CombatUniform_mcam") then {
      player setObjectTextureGlobal [0, "Images\team\entwickler.jpg"];
      };
      };
      
      
      if(player getVariable ["zl_adminimdienst",true]) then {
      if (uniform player isEqualTo "U_B_CombatUniform_mcam") then {
      player setObjectTextureGlobal [0, "Images\team\admin.jpg"];
      };
      };
      
      
      if(player getVariable ["zl_teamimdienst",true]) then {
      if (uniform player isEqualTo "U_B_CombatUniform_mcam") then {
      player setObjectTextureGlobal [0, "Images\team\supporter.jpg"];
      };
      };
      Alles anzeigen

      5. Und als letztes geh in eure init in dem Ordner core und fügt über player setVariable ["restrained", false, true]; den Code ein.

      Code
      player setVariable ["zl_leitungimdienst", false, true];
      player setVariable ["zl_adminimdienst", false, true];
      player setVariable ["zl_entwicklerimdienst", false, true];
      player setVariable ["zl_teamimdienst", false, true];

      6. Danach braucht ihr einfach noch ein Button oder sowas und ruft das ganze so auf.

      Code
      ["PROJEKTLEITER"] spawn life_fnc_admin;
      ["ADMIN"] spawn life_fnc_admin;
      ["ENTWICKLER"] spawn life_fnc_admin;
      ["SUPPORTER"] spawn life_fnc_admin;

      Kontakt:

      Discord: Joshuaaa#1451

      MfG - Joshua

      6 Mal editiert, zuletzt von I KnoW NoBody (30. September 2021 um 11:55)

    • Henne
      Nerd
      Reaktionen
      155
      Trophäen
      7
      Beiträge
      840
      Bilder
      7
      • 28. September 2021 um 03:51
      • #2

      Bei durchlesen des Codes sind mir einige Punkte aufgefallen, die Verbesserungswürdig sind.

      Dies sind nur Verbesserungsvorschläge und sind nicht zum schlecht reden, etc. gedacht!


      Bei getVariable ist es besser einen Default-Wert zu nutzen, der keinen/weniger Schaden anrichten kann.

      Wie wir dich in Discord bereits darauf hingewiesen haben, sollte im Code also player getVariable ["<VARNAME>", false] stehen. Da so bei einem Fehler die Spieler nicht als Admin, etc. markiert werden.

      Du nutzt im Code den schlechten Syntax für private. Besser ist es den performanteren Syntax zu verwenden, da dieser deutlich schneller (~x2) ist.

      Siehe -> https://community.bistudio.com/wiki/Code_Optimisation#private

      Du nutzt im Code die Funktionen ZL_fnc_loadGear, ZL_fnc_playerSkins, ZL_fnc_stripDownPlayer und zl_fnc_msg. Allerdings ist nicht klar wo diese herkommen, bzw. woher man diese erhält.

      Denn im Tonic-Life System sind diese Funktionen nicht enthalten, somit wird der Code bei der Ausführung Fehlermeldungen werfen.

      Du hast viel Code der sich wiederholt. Was immer ein Zeichen für optimierungs Potenzial ist.

      So kannst du eine Config erstellen, in der die Ränge eingetragen werden und somit der Code nicht umprogrammiert werden muss, wenn man die Ränge anpassen möchte.

      Hat es einen bestimmten Grund, warum du fast alle Funktionen immer mit spawn aufrufst und nicht mit call?

      Sehr verwirrend im Code ist, dass du in der "admin.sqf" die Variable _team auf false setzt, wenn der Spieler nun zum Team gehört:

      Code
      . . .
              if(player getVariable ["zl_leitungimdienst",true]) then {
                  player setVariable ["zl_leitungimdienst", false, true];
                  _team = true;
              } else {
                  player setVariable ["zl_leitungimdienst", true, true];
                  _team = false;
              };
      . . .

      Weiter unten wird die Variable dann abgefragt und negiert gesetzt:

      Code
      . . .
      if(_team) then {
          _team = false;
          . . .
      } else {
          _team = true;
          . . .
      };

      Danach wird die Variable nicht mehr (?) genutzt.

      Welcher Grund steckt hinter diesem verwirrenden Code?


      Dies sind die gravierensten Punkte die mir aufgefallen sind.

      Nochmal zur Wiederholung: Es handelt sich dabei um Verbesserungsvorschläge und müssen nicht (können aber) beachtet werden.

      Einmal editiert, zuletzt von Henne (28. September 2021 um 04:21)

    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™