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

    [Tutorial] Spielerskins & Copskins | Texturen | Aktualisieren

      • Altis Life
    • Brizi Jaeger
    • 11. März 2017 um 12:59
    • Brizi Jaeger
      Profi
      Reaktionen
      291
      Trophäen
      11
      Beiträge
      1.025
      • 11. März 2017 um 12:59
      • #1

      Hallo NN Community,

      Viele kennen es, viele nicht bei Altis Life 4.4r3 oder auch bei anderen Version aktualisiert sich die Uniform nicht sofort, oder einfach gar nicht.

      Bei dieser Art von aktualisieren geht es um das Speichern.

      Klickt ein Spieler auf Speichern, aktualisiert sich seine Uniform für alle Spieler.

      Ihr müsst dem Spieler dann nur im Roleplay beibringen, dass seine Uniform nicht lädt :D

      Kommen wir zum Tutorial :

      Ihr öffnet im core\functions\fn_saveGear.sqf

      -> Ihr scrollt ganz nach unten und fügt diese 2 ein, ja hudUpdate hab ich nur aus jucks rein gemacht.

      Code
      [] call life_fnc_hudUpdate;
      [] call life_fnc_playerSkins;

      Das ganze sollte dann so aussehen :

      Code
      #include "..\..\script_macros.hpp"
      /*
          File: fn_saveGear.sqf
          Author: Bryan "Tonic" Boardwine
          Full Gear/Y-Menu Save by Vampire
          Edited: Itsyuka & Brizi Jaeger | Aktualisieren der Uniform
      
          Description:
          Saves the players gear for syncing to the database for persistence..
      */
      private["_return","_uItems","_bItems","_vItems","_pItems","_hItems","_yItems","_uMags","_vMags","_bMags","_pMag","_hMag","_uni","_ves","_bag","_handled","_savedVirtualItems"];
      _return = [];
      _savedVirtualItems = LIFE_SETTINGS(getArray,"saved_virtualItems");
      
      _return pushBack uniform player;
      _return pushBack vest player;
      _return pushBack backpack player;
      _return pushBack goggles player;
      _return pushBack headgear player;
      _return pushBack assignedITems player;
      if (playerSide isEqualTo west || playerSide isEqualTo civilian && {LIFE_SETTINGS(getNumber,"save_civilian_weapons") isEqualTo 1}) then {
          _return pushBack primaryWeapon player;
          _return pushBack handgunWeapon player;
      } else {
          _return pushBack [];
          _return pushBack [];
      };
      
      _uItems = [];
      _uMags  = [];
      _bItems = [];
      _bMags  = [];
      _vItems = [];
      _vMags  = [];
      _pItems = [];
      _hItems = [];
      _yItems = [];
      _uni = [];
      _ves = [];
      _bag = [];
      
      if (!(uniform player isEqualTo "")) then {
          {
              if (_x in (magazines player)) then {
                  _uMags pushBack _x;
              } else {
                  _uItems pushBack _x;
              };
          } forEach (uniformItems player);
      };
      
      if (!(backpack player isEqualTo "")) then {
          {
              if (_x in (magazines player)) then {
                  _bMags pushBack _x;
              } else {
                  _bItems pushBack _x;
              };
          } forEach (backpackItems player);
      };
      
      if (!(vest player isEqualTo "")) then {
          {
              if (_x in (magazines player)) then {
                  _vMags pushBack _x;
              } else {
                  _vItems pushBack _x;
              };
          } forEach (vestItems player);
      };
      
      if (count (primaryWeaponMagazine player) > 0 && alive player) then {
          _pMag = ((primaryWeaponMagazine player) select 0);
      
          if (!(_pMag isEqualTo "")) then {
              _uni = player canAddItemToUniform _pMag;
              _ves = player canAddItemToVest _pMag;
              _bag = player canAddItemToBackpack _pMag;
              _handled = false;
      
              if (_ves) then {
                  _vMags pushBack _pMag;
                  _handled = true;
              };
      
              if (_uni && !_handled) then {
                  _uMags pushBack _pMag;
                  _handled = true;
              };
      
              if (_bag && !_handled) then {
                  _bMags pushBack _pMag;
                  _handled = true;
              };
          };
      };
      
      if (count (handgunMagazine player) > 0 && alive player) then {
          _hMag = ((handgunMagazine player) select 0);
      
          if (!(_hMag isEqualTo "")) then {
              _uni = player canAddItemToUniform _hMag;
              _ves = player canAddItemToVest _hMag;
              _bag = player canAddItemToBackpack _hMag;
              _handled = false;
      
              if (_ves) then {
                  _vMags pushBack _hMag;
                  _handled = true;
              };
      
              if (_uni && !_handled) then {
                  _uMags pushBack _hMag;
                  _handled = true;
              };
      
              if (_bag && !_handled) then {
                  _bMags pushBack _hMag;
                  _handled = true;
              };
          };
      };
      
      if (count (primaryWeaponItems player) > 0) then {
          {
              _pItems pushBack _x;
          } forEach (primaryWeaponItems player);
      };
      
      if (count (handgunItems player) > 0) then {
          {
              _hItems pushBack _x;
          } forEach (handGunItems player);
      };
      
      {
          _val = ITEM_VALUE(_x);
          if (_val > 0) then {
              _yItems pushBack [_x,_val];
          };
      } forEach _savedVirtualItems;
      
      _return pushBack _uItems;
      _return pushBack _uMags;
      _return pushBack _bItems;
      _return pushBack _bMags;
      _return pushBack _vItems;
      _return pushBack _vMags;
      _return pushBack _pItems;
      _return pushBack _hItems;
      if (LIFE_SETTINGS(getNumber,"save_virtualItems") isEqualTo 1) then {
          _return pushBack _yItems;
      } else {
          _return pushBack [];
      };
      
      life_gear = _return;
      [] call life_fnc_hudUpdate;
      [] call life_fnc_playerSkins;
      Alles anzeigen

      Mit freundlichen Grüßen

      Brizi Jaeger :D

    • MILLER CONTROLS
      Gast
      • 11. März 2017 um 13:58
      • #2

      Danke!

      Einfach, gut und schnell!

    • Brizi Jaeger
      Profi
      Reaktionen
      291
      Trophäen
      11
      Beiträge
      1.025
      • 11. März 2017 um 14:00
      • #3

      Kann man natürlich auch in eine Schleife packen, allerdings finde ich diese Version etwas performanter auch gerade wenn man die Abfrage nicht auf jede Sekunde stellt xD

    • MILLER CONTROLS
      Gast
      • 11. März 2017 um 14:00
      • #4

      Genau das meine ich!

      Ist super einfach geregelt!

    • PoweredByte
      Amateur
      Reaktionen
      36
      Trophäen
      11
      Beiträge
      261
      • 11. März 2017 um 15:02
      • #5

      Hab das einfach ins Z Menü gepackt. Öffnet mal am häufigsten ^^

    • Brizi Jaeger
      Profi
      Reaktionen
      291
      Trophäen
      11
      Beiträge
      1.025
      • 11. März 2017 um 15:21
      • #6

      Oder so :D

    • Purple HaZe
      Anfänger
      Reaktionen
      1
      Trophäen
      8
      Beiträge
      74
      • 13. April 2018 um 06:44
      • #7

      Also ich hab es bei der saveGear.sqf eingefügt, aber wenn man ingame auf speichern drückt, werden sie trotzdem nicht bei den anderen Spielern angezeigt :(

    • MDNX
      Frischling
      Reaktionen
      1
      Trophäen
      8
      Beiträge
      6
      • 13. April 2018 um 06:54
      • #8

      Sicher das du deine Texturen auch richtig über die Skins gelegt hast? Siehst du sie denn selbst ? Wann sehen andere sie, wann nicht? Purple HaZe

    • Purple HaZe
      Anfänger
      Reaktionen
      1
      Trophäen
      8
      Beiträge
      74
      • 13. April 2018 um 10:33
      • #9

      selber sehe ich sie immer, andere nur den Rucksack und manchmal die Kleidung. Jedoch Kleidung fast nie

    • Purple HaZe
      Anfänger
      Reaktionen
      1
      Trophäen
      8
      Beiträge
      74
      • 13. April 2018 um 17:29
      • #10

      hat sonst jemand eine Ahnung woran es liegen könnte?

    • MDNX
      Frischling
      Reaktionen
      1
      Trophäen
      8
      Beiträge
      6
      • 13. April 2018 um 21:00
      • #11

      schick am besten mal dein playerSkins.sqf oder je nachdem wo du die Skins drüber legst

    • Purple HaZe
      Anfänger
      Reaktionen
      1
      Trophäen
      8
      Beiträge
      74
      • 14. April 2018 um 01:54
      • #12

      hab das Problem bereitd gelöst trotzdem danke

    • MDNX
      Frischling
      Reaktionen
      1
      Trophäen
      8
      Beiträge
      6
      • 14. April 2018 um 07:01
      • #13

      Vielleicht kannst du ja reinschreiben wie du es gelöst hast, damit andere davon eventuell auch profitieren können. :P

    • Purple HaZe
      Anfänger
      Reaktionen
      1
      Trophäen
      8
      Beiträge
      74
      • 14. April 2018 um 09:32
      • #14

      Also ich hab nen super tutorial von Nox war es glaube ich gefunden und habe es eingefügt, das einzige was mir nich Probleme macht, ist das die Rucksäcke im moment garnicht laden wollen, aber darum kümmere ich mich noch

      Uniformen Texturieren via Script/Funktion (Rucksack unsichtbar machen optional!)

    • whitebird24
      Anfänger
      Reaktionen
      2
      Trophäen
      8
      Beiträge
      49
      Bilder
      5
      • 24. Juni 2018 um 20:10
      • #15
      Code
      case 23: {
              [] call life_fnc_playerSkins;
              hint "Kleidung wurde aktualisiert";
          };

      Sollte so doch auch einfach funktionieren.

    • MrFrost
      Fortgeschrittener
      Reaktionen
      175
      Trophäen
      9
      Beiträge
      150
      Dateien
      21
      • 25. Juni 2018 um 12:15
      • #16

      Nicht die sparsamste Variante aber könnte man nicht einfach in die initCiv etc. folgendes rein schreiben... ja ich weiß while(true) aber ist doch am einfachsten oder?

      Code: fn_initCiv.sqf
      while(true){
      _kleidung = uniform player;
      _rucksack = backpack player;
      waitUntil{uniform player != _kleidung || backpack player != _rucksack};
      [] call life_fnc_playerSkins;
      };

      P.S. Hab es nicht getestet sollte aber gehen.

      Edit:

      Kann man nicht theoretisch auch einfach den Dialog bearbeiten?

      Code: player_inv.hpp
      class ButtonSyncData: Life_RscButtonMenu {
                  idc = -1;
                  //shortcuts[] = {0x00050000 + 2};
                  text = "$STR_PM_SyncData";
                  onButtonClick = "[] call SOCK_fnc_syncData;[] call life_fnc_playerSkins;";
                  x = 0.1;
                  y = 0.805;
                  w = (6.25 / 40);
                  h = (1 / 25);
              };

      24175-mrfrost-logo-banner-smal-png

      Zeit ist Geld!

      Discord Instagram Steam

      Einmal editiert, zuletzt von MrFrost (25. Juni 2018 um 12:30)

    • shoXy
      Nerd
      Reaktionen
      161
      Trophäen
      10
      Beiträge
      726
      • 25. Juni 2018 um 12:49
      • #17
      Zitat von MrFrost

      Nicht die sparsamste Variante aber könnte man nicht einfach in die initCiv etc. folgendes rein schreiben... ja ich weiß while(true) aber ist doch am einfachsten oder?

      Code: fn_initCiv.sqf
      while(true){
      _kleidung = uniform player;
      _rucksack = backpack player;
      waitUntil{uniform player != _kleidung || backpack player != _rucksack};
      [] call life_fnc_playerSkins;
      };

      Du willst doch nicht das sich jede Sekunde die Kleidung aktualisiert. (Perfomance?)

      Und deine Variante mit dem Dialog würde so funktionieren und hört sich schon um einiges besser an, oder man könnte es über den KeyHandler auf eine Taste legen wie man es halt möchte

    • MrFrost
      Fortgeschrittener
      Reaktionen
      175
      Trophäen
      9
      Beiträge
      150
      Dateien
      21
      • 25. Juni 2018 um 13:16
      • #18
      Zitat von shoXy

      Du willst doch nicht das sich jede Sekunde die Kleidung aktualisiert. (Perfomance?)

      Und deine Variante mit dem Dialog würde so funktionieren und hört sich schon um einiges besser an, oder man könnte es über den KeyHandler auf eine Taste legen wie man es halt möchte

      Stimmt nicht ganz es wird nur Aktualisiert wenn sich die Kleidung ändert... WaitUntil und so :)

      24175-mrfrost-logo-banner-smal-png

      Zeit ist Geld!

      Discord Instagram Steam

    • OXYamaXO
      Frischling
      Trophäen
      7
      Beiträge
      3
      • 3. August 2019 um 19:29
      • #19
      Zitat von PoweredByte

      Hab das einfach ins Z Menü gepackt. Öffnet mal am häufigsten ^^

      Wie heißt die fn_ von dem z menü?

    • DevLansky
      Anfänger
      Reaktionen
      6
      Trophäen
      8
      Beiträge
      49
      • 3. August 2019 um 21:18
      • #20
      Zitat von OXYamaXO

      Wie heißt die fn_ von dem z menü?

      Hey,

      ich glaube du meinst wenn dann die player_inv.hpp, wenn du aber willst das es sich aktualisiert beim Öfnnen des Z-Menüs, würde ich es in den Keyhandler packen.

      Also statt:

      Spoiler anzeigen

      //Y Player Menu

      case 21: {

      if (!_alt && !_ctrlKey && !dialog && !(player getVariable ["restrained",false]) && {!life_action_inUse}) then {

      [] call life_fnc_p_openMenu;

      };

      };

      das

      Spoiler anzeigen

      //Y Player Menu

      case 21: {

      if (!_alt && !_ctrlKey && !dialog && !(player getVariable ["restrained",false]) && {!life_action_inUse}) then {

      [] call life_fnc_playerSkins;

      [] call life_fnc_p_openMenu;

      };

      };

      Wurde zwar nicht getestet, sollte aber funktionieren :D

    Registrieren oder Einloggen

    Du bist noch kein Mitglied von Native-Servers.com? Registriere dich kostenlos und werde Teil einer großartigen Community!

    Benutzerkonto erstellen

    Ähnliche Themen

    • Skins Updaten nicht.

      • S3bSchw3b
      • 5. August 2017 um 00:16
      • Hilfeforum
    • Rucksack ist erst unsichtbar nachdem man reloggt!?

      • jeremypapa
      • 11. Juni 2017 um 12:49
      • Hilfeforum

    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™