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
Do: 22 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] Permanenter Personalausweis/Dienstausweis - (V1+V2)

      • Altis Life
    • Rom
    • 19. Oktober 2016 um 22:22
    1. offizieller Beitrag
    • Rom
      Kenner
      Reaktionen
      156
      Beiträge
      533
      • 19. Oktober 2016 um 22:22
      • #1

      Hinweis der Administration:

      Mittlerweile ist V2 verfügbar! Diese beinhaltet diverse Verbesserungen & Erweiterungen. Zu ihr gelangst du hier: [KLICK MICH]


      --------------------------


      Hallo zusammen,

      ich teile mit euch meine Personalausweis-Scripts.

      Vorab soll was erwähnt sein:

      • Getestet mit Standard Altis Life Versionen ohne weitere Änderungen

        • Version 3.1.4.8 (mit extDB)
        • 4.0 (danke an @Saturin78:( Klick mich
        • Version 4.4 irgendwas
        • Version 4.5 (extDB2)
        • Jeweilge @life_server von Version X und unter extDB, extDB2 und extDB3 (mit vorgefertigten SQL-Abfragen)


          • Das Tutorial ist nicht zu 100% für die extDB3 geeignet
        • Standarddatenbank, welche im Master-Framework beiligt
        • Unterstützt derzeit keine ini-Datein (vorgefertigte Statements) und müssen selber angepasst werden


          • DDL, DML und DQL wird jeweils vom sqf-Script ausgeführt (SQL-Abfragen/-Befehle)
        • SpyGlass deaktiviert
      • Leichte Konfigurierbarkeit

        • Sprachen
        • Logos für jeweilige Fraktion
      • BattlEye-Filter müssen manuell angepasst werden
      • Etwas Erfahrung solltest du besitzen

        • Wie füge ich eine weitere Lizenz in der Altis Life Version X hinzu
        • Klammern und Zeichensetzunh beachten
        • Kleiner SQL-Umgang (Ausführen)
        • Kein stumpfes Copy&Paste
      • Angehängt sind die Altis Life Version 3.1.4.8 mit life_server sowie einzelne Dateien mit Hinweisen/Beispielen


        • Es wurde nur die Perso-Funktion getestet. Weder Shops, Fahrzeugkauf oder Ähnliches... Sollten Fehler entstehen, probier ein wenig rum und oder poste die Fehlermeldungen
      • Etwas funktioniert nicht? Dann brauche ich/brauchen wir die [lexicon='extDB'][/lexicon]-Logs, Client-Logs und Server-Logs (ggf. BattlEye-Logs)
      • Angegebener Missionsname\Pfad kann abweichen
      • Das ein oder andere ist eventuell überflüssig
      • Weitere Versionen oder Änderungen? Weiß ich noch nicht...
      • Der Personalausweis mit dem Scrollmenü dem Gegenüber gezeigt, bzw. kann angesehen werden, wenn der Gegenüber im gefesselten Zustand ist (bspw. für Kabelbinder, Handschellen etc.)
      • Es stehen vorgefertigte Ortschaften und Straßen zur Verfügung (warum? Damit nicht Herr Peta Zwegaahht irgendwelche unpassende Ortschaften und oder Straßennamen angibt)


      Die Nutzung dieses Pakets und die enthaltenen Scripts/Dateien erlaube ich nur, wenn die begefügte License-FvS.txt im Missionsordner liegt (oder in einem Verzeichnis wo weitere liegen) und dass die jeweiligen Punkte akzeptiert und eingehalten werden.

      WICHTIG: Erstelle vor dem Einfügen der Personalausweis-Scripts ein Backup deiner Mission (Mission.Altis und life_server sowie der Datenbankstruktur und deren Inhalt)! Die Weiterverbreitung in anderen Foren untersage ich (eine Erlaubnis ist bei mir einzuholen).

      (ein englisch-sprachiges Tutorial darf gerne für Native-Network erstellt werden!)

      Lade dir nun das anghängte ZIP-Archiv herunter. Und los gehts...

      Dialog anpassen und einfügen

      Öffne das Verzeichnis Altis_life.Altis\dialog

      • Füge die Personalausweis.hpp ind das geöffnete Verzeichnis ein


        • Zu findem im Selben Verzeichnis von Perso_Paket.zip
      • Öffne die MasterHandler.h


        • Füge folgendes am Ende der Datei hinzu: #include "personalausweis.hpp"
      • Öffne die player_inv.hpp und füge folgenden Knopf unter controls hinzu


        C: player_inv.hpp
        class perso_idcard: Life_RscButtonMenu
                                                    {
                                                        onButtonClick = "private[""_rang_1""]; _rang_1 = switch(playerSide) do {case west: {str(call life_coplevel)};case independent: {str(call life_mediclevel)};case civilian: {""""};case east: {""""};}; [player,_rang_1] remoteExecCall [""fvs_fnc_zeigePerso"",player]; closeDialog 0;";
                                                        idc = -1;
                                                        text = "ID CARD";
                                                        x = 0.738657;
                                                        y = 0.849;
                                                        w = 0.15625;
                                                        h = 0.04;
                                                        tooltip = "Meinen Personal-/Dienstausweis ansehen \/ Take a look on my ID card";
                                                    };
        Alles anzeigen
        • Achte selbstständig auf die Klammern!
      • Überprüfe nun die common.hpp ob es eine Klasse namens Life_Checkbox gibt

        • Wenn ja, ok
        • Wenn nein, füge folgendes am Ende der Datei hinzu
      C: common.hpp
      class Life_Checkbox
                                          {
                                              access = 0; // Control access (0 - ReadAndWrite, 1 - ReadAndCreate, 2 - ReadOnly, 3 - ReadOnlyVerified)
                                              idc = -1; // Control identification (without it, the control won't be displayed)
                                              type = 77; // Type
                                              style = ST_LEFT + ST_MULTI; // Style
                                              default = 0; // Control selected by default (only one within a display can be used)
                                              blinkingPeriod = 0; // Time in which control will fade out and back in. Use 0 to disable the effect.
                                          
                                          
                                          
                                          
                                              x = 0;
                                              y = 0;
                                              w = 1 * GUI_GRID_CENTER_W; // Width
                                              h = 1 * GUI_GRID_CENTER_H; // Height
                                          
                                          
                                          
                                          
                                              //Colors
                                              color[] = { 1, 1, 1, 0.7 }; // Texture color
                                              colorFocused[] = { 1, 1, 1, 1 }; // Focused texture color
                                              colorHover[] = { 1, 1, 1, 1 }; // Mouse over texture color
                                              colorPressed[] = { 1, 1, 1, 1 }; // Mouse pressed texture color
                                              colorDisabled[] = { 1, 1, 1, 0.2 }; // Disabled texture color
                                          
                                          
                                          
                                          
                                              //Background colors
                                              colorBackground[] = { 0, 0, 0, 0 }; // Fill color
                                              colorBackgroundFocused[] = { 0, 0, 0, 0 }; // Focused fill color
                                              colorBackgroundHover[] = { 0, 0, 0, 0 }; // Mouse hover fill color
                                              colorBackgroundPressed[] = { 0, 0, 0, 0 }; // Mouse pressed fill color
                                              colorBackgroundDisabled[] = { 0, 0, 0, 0 }; // Disabled fill color
                                          
                                          
                                          
                                          
                                              //Textures
                                              textureChecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa";        //Texture of checked CheckBox.
                                              textureUnchecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa";        //Texture of unchecked CheckBox.
                                              textureFocusedChecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa";    //Texture of checked focused CheckBox (Could be used for showing different texture when focused).
                                              textureFocusedUnchecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa";    //Texture of unchecked focused CheckBox.
                                              textureHoverChecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa";
                                              textureHoverUnchecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa";
                                              texturePressedChecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa";
                                              texturePressedUnchecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa";
                                              textureDisabledChecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa";
                                              textureDisabledUnchecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa";
                                          
                                          
                                          
                                          
                                              tooltip = ""; // Tooltip text
                                              tooltipColorShade[] = { 0, 0, 0, 1 }; // Tooltip background color
                                              tooltipColorText[] = { 1, 1, 1, 1 }; // Tooltip text color
                                              tooltipColorBox[] = { 1, 1, 1, 1 }; // Tooltip frame color
                                          
                                          
                                          
                                          
                                              //Sounds
                                              soundClick[] = { "\A3\ui_f\data\sound\RscButton\soundClick", 0.09, 1 }; // Sound played after control is activated in format {file, volume, pitch}
                                              soundEnter[] = { "\A3\ui_f\data\sound\RscButton\soundEnter", 0.09, 1 }; // Sound played when mouse cursor enters the control
                                              soundPush[] = { "\A3\ui_f\data\sound\RscButton\soundPush", 0.09, 1 }; // Sound played when the control is pushed down
                                              soundEscape[] = { "\A3\ui_f\data\sound\RscButton\soundEscape", 0.09, 1 }; // Sound played when the control is released after pushing down
                                          
                                          
                                          
                                          
                                          };
      Alles anzeigen
      • Füge nun die beigefügten Bilder und Icons in das jeweilige Verzeichnis ein. Falls ein Ordner nicht besteht, erstelle diesen (Ordnerstruktur bitte beibehalten wie in der ZIP!)

      Hinzufügen einer neuen Lizenz für Zivilisten

      Zivilisten benötigen diese Lizenz um ihre Daten auf dem Personalausweis selber (später) anpassen zu können.

      Versionen 3.1.4.8 und weitere ohne Config_Licenses.hpp

      • Öffne die configuration.sqf aus dem core-Verzeichnis (danke an @=Recon=, neue Lizenz wurde nicht gespeichert)


        • life_licenses erweitern mit:

          • ["license_civ_einbuergerung","civ"]
          • Achte selber auf KOMMA, da es einen Array darstellt!


      • Gehe in das Verzeichnis Altis_Life.Altis\core\config


        • Öffne die Dateien fn_varToStr.sqf, fn_licenseType.sqf und fn_licensePrice.sqf

          • fn_varToStr.sqf case "license_civ_einbuergerung": {localize "STR_License_einb"};
          • fn_licenseType.sqf

            • Switch-Case 0 case "einbuergerung": {_var ="license_civ_einbuergerung"};
            • Switch-Case 1 case "license_civ_einbuergerung": {_var = "einbuergerung"};
          • fn_licensePrice.sqf (Preis kann beliebig geändert werden)


            • Neuer Case case "einbuergerung": {2500};

      Versionen über 4.0 mit Config_Licenses.hpp


      • Füge folgendes neu in die class Licenses {} ein
      C: Config_Licenses.hpp
      class einbuergerung {
                                                              variable = "einbuergerung";
                                                              displayName = "STR_License_einb";
                                                              price = 2500;
                                                              illegal = false;
                                                              side = "civ";
                                                      };
      • Der Lizenzname kann in der stringtable.xml angepasst werden
      • Füge nun das beigefügte Übersetzungspaket (siehe Perso_paket.zip\Mission.Altis) in der Stringtable korrekt hinzu


        • Orientiere dich an vorhandene

      Funktionen/Scripts und Dialoge einbinden

      • Öffne die Functions.h und füge folgenden Inhalt alleinstehend am Ende der Datei hinzu
      C: Functions.h
      class felixvonstudsinske
                                                      {
                                                          tag = "fvs";
                                                          class perso
                                                          {
                                                              file = "core\pmenu\perso";
                                                              class perso_laden {};
                                                              class persoCheck {};
                                                              class persoCheck_aenderung {};
                                                              class persoErgebnis {};
                                                              class persoNeu {};
                                                              class updateTag {};
                                                              class updateTagA {};
                                                              class updateMonat {};
                                                              class updateMonatA {};
                                                              class updateHsnr {};
                                                              class updateHsnrA {};
                                                              class updateStrasse {};
                                                              class updateStrasseA {};
                                                              class persoBeantragen {};
                                                              class persoBeantragenAenderung {};
                                                              class persoInteractionMenu {};
                                                              class zeigePerso {};
                                                              class updatePersoBild {};
                                                              class updatePersoBildA {};
                                                              class aenderePerso {};
                                                          };
                                                      };
      Alles anzeigen
      • Öffne nun die description.ext

        • Füge bei class RscTitles folgendes hinzu #include "dialog\uiPerso.hpp"
        • Füge alleinstehend dies hinzu #include "Config_Perso.hpp"


          • Pfad kann bei eigener Struktur frei gewählt werden
        • Füge in der class CfgDebriefing dieses hinzu (oder erstelle es, falls es nicht (mehr) existiert)
      C: description.ext
      class falschprof
                                                              {
                                                                  title = "Falscher Profilname";
                                                                  subTitle = "";
                                                                  description = "Dein aktuelles Profil (Name) stimmt nicht mit dem abgespeicherten Namen im Personalausweis überein! Bitte aendere dein Profil. Falls du deinen Namen nicht mehr kennst, melde dich bitte beim Support!";
                                                                  pictureBackground = "";
                                                                  picture = "";
                                                                  pictureColor[] = {0,0.3,0.6,1};
                                                              };
                                                          
                                                          
                                                          
                                                          
                                                              class fehlerprof
                                                              {
                                                                  title = "Fehler im Personalausweis";
                                                                  subTitle = "";
                                                                  description = "Bitte melde dich im Support und gebe den Fehler mit an!";
                                                                  pictureBackground = "";
                                                                  picture = "";
                                                                  pictureColor[] = {0,0.3,0.6,1};
                                                              };
                                                          
                                                          
                                                          
                                                          
                                                              class persoA
                                                              {
                                                                  title = "Personalausweis";
                                                                  subTitle = "";
                                                                  description = "Bitte aendere dein Profilnamen auf den Namen, den du vor 5 Minuten beim Buergeramt angegeben hast!";
                                                                  pictureBackground = "";
                                                                  picture = "";
                                                                  pictureColor[] = {0,0.3,0.6,1};
                                                              };
                                                          
                                                          
                                                          
                                                          
                                                              class fformatprof
                                                              {
                                                                  title = "Format Personalausweis";
                                                                  subTitle = "";
                                                                  description = "Bitte melde dich im Support und gebe den Fehler mit an!";
                                                                  pictureBackground = "";
                                                                  picture = "";
                                                                  pictureColor[] = {0,0.3,0.6,1};
                                                              };
                                                          
                                                          
                                                          
                                                          
                                                              class dialogperso
                                                              {
                                                                  title = "Personalausweisdialog geschlossen";
                                                                  subTitle = "";
                                                                  description = "Dialog des Personalausweises wurde geschlossen...";
                                                                  pictureBackground = "";
                                                                  picture = "";
                                                                  pictureColor[] = {0,0.3,0.6,1};
                                                              };
      Alles anzeigen
      • Füge den Ordner perso in das Verzeichnis ein Altis_Life.Altis\core\pmenu
      • Öffne die fn_setupActions.sqf aus Altis_Life.Altis\core und erweitere die Switch-Case-Anweisung, falls die jeweilige Fraktion nicht aufgeführt wird (west, independent, east, civilian)


        • So könnte es aussehen (3.1.4.8)
      Code: fn_setupActions.sqf
      /*
                                                              File: fn_setupActions.sqf
                                                              Description:
                                                              Master addAction file handler for all client-based actions.
                                                          */
                                                          switch (playerSide) do
                                                          {
                                                              case civilian:
                                                              {
                                                                  //Drop fishing net
                                                                  life_actions = [player addAction[localize "STR_pAct_DropFishingNet",life_fnc_dropFishingNet,"",0,false,false,"",'
                                                                  (surfaceisWater (getPos vehicle player)) && (vehicle player isKindOf "Ship") && life_carryWeight < life_maxWeight && speed (vehicle player) < 2 && speed (vehicle player) > -1 && !life_net_dropped ']];
                                                                  //Rob person
                                                                  life_actions = life_actions + [player addAction[localize "STR_pAct_RobPerson",life_fnc_robAction,"",0,false,false,"",'
                                                                  !isNull cursorTarget && player distance cursorTarget < 3.5 && isPlayer cursorTarget && animationState cursorTarget == "Incapacitated" && !(cursorTarget getVariable["robbed",FALSE]) ']];
                                                                  life_actions = life_actions + [player addAction["Personalausweis ansehen",{[cursorTarget] remoteExecCall ["fvs_fnc_zeigePerso",player];},"",0,false,false,"",'
                                                                  isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1) && !(player getVariable ["restrained",false]) && (cursorTarget getVariable ["restrained",false])']];
                                                                  life_actions = life_actions + [player addAction["Personalausweis zeigen",{[player] remoteExecCall ["fvs_fnc_zeigePerso",cursorTarget];},"",0,false,false,"",'
                                                                  isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1)']];
                                                              };
                                                              case west:
                                                              {
                                                                  life_actions = life_actions + [player addAction["Personalausweis ansehen",{[cursorTarget] remoteExecCall ["fvs_fnc_zeigePerso",player];},"",0,false,false,"",'
                                                                  isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1) && !(player getVariable ["restrained",false]) && (cursorTarget getVariable ["restrained",false])']];
                                                                  life_actions = life_actions + [player addAction["Personalausweis zeigen",{[player] remoteExecCall ["fvs_fnc_zeigePerso",cursorTarget];},"",0,false,false,"",'
                                                                  isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1)']];
                                                              };
                                                              case independent:
                                                              {
                                                                  life_actions = life_actions + [player addAction["Personalausweis ansehen",{[cursorTarget] remoteExecCall ["fvs_fnc_zeigePerso",player];},"",0,false,false,"",'
                                                                  isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1) && !(player getVariable ["restrained",false]) && (cursorTarget getVariable ["restrained",false])']];
                                                                  life_actions = life_actions + [player addAction["Personalausweis zeigen",{[player] remoteExecCall ["fvs_fnc_zeigePerso",cursorTarget];},"",0,false,false,"",'
                                                                  isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1)']];
                                                              };
                                                              case east:
                                                              {
                                                                  life_actions = life_actions + [player addAction["Personalausweis ansehen",{[cursorTarget] remoteExecCall ["fvs_fnc_zeigePerso",player];},"",0,false,false,"",'
                                                                  isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1) && !(player getVariable ["restrained",false]) && (cursorTarget getVariable ["restrained",false])']];
                                                                  life_actions = life_actions + [player addAction["Personalausweis zeigen",{[player] remoteExecCall ["fvs_fnc_zeigePerso",cursorTarget];},"",0,false,false,"",'
                                                                  isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1)']];
                                                              };
                                                          };
      Alles anzeigen
      • Ohne Switch-Anweisung
      Code
      life_actions = life_actions + [player addAction["Personalausweis zeigen",{[player] remoteExecCall ["fvs_fnc_zeigePerso",cursorTarget];},"",0,false,false,"",'isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1)']];
                                                      
                                                      
                                                      
                                                      
                                                      life_actions = life_actions + [player addAction["Personalausweis ansehen",{[cursorTarget] remoteExecCall ["fvs_fnc_zeigePerso",player];},"",0,false,false,"",'isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1) && !(player getVariable ["restrained",false]) && (cursorTarget getVariable ["restrained",false])']];


      • Füge die beigefügte Config_Perso.hpp in das Missionshauptverzeichnis ein
      • Hast du eine Kontrolle für Remote-Execution aktiv CfgRemoteExec.h/hpp, dann wird folgendes unter Funktionen benötigt
      Code
      F(fvs_fnc_perso_laden,CLIENT) // Perso
                                                  F(fvs_fnc_persoBeantragen,CLIENT) // Perso
                                                  F(fvs_fnc_persoCheck,CLIENT) // Perso
                                                  F(fvs_fnc_persoErgebnis,CLIENT) // Perso
                                                  F(fvs_fnc_persoNeu,CLIENT) // Perso
                                                  F(fvs_fnc_updateMonat,CLIENT) // Perso
                                                  F(fvs_fnc_updateTag,CLIENT) // Perso
                                                  F(fvs_fnc_zeigePerso,CLIENT) // Perso
                                                  F(fvs_fnc_updatePersoBild,CLIENT) // Perso 
                                                  F(DB_fnc_persoRequest,SERVER) // Perso
                                                  F(DB_fnc_persoInsert,SERVER) // Perso
                                                  F(DB_fnc_persoUpdate,SERVER) // Perso
      Alles anzeigen
      • Öffne die configurations.sqf aus Altis_Life.Altis\core und füge dies unter den Variablen hinzu
      Code: configurations.sqf
      fvs_persoReady = false;
                                              fvs_hakenregeln = false;
                                              fvs_checking = false;
                                              fvs_hakenrichtig = false;
                                              fvs_namenInfo = false;
                                              fvs_checking_a = false;
                                              fvs_namen_a = false;
                                              fvs_hakendaten = false;
      • Öffne nun die init.sqf aus dem Verzeichnis Altis_Life.Altis\core und füge dies über der Switch-Case-Anweisung von den Fraktions-Inits hinzu
      Code: init.sqf
      diag_log "::Client:: Pruefe Personalausweisdaten.";
                                          0 cutText ["Ueberpruefe Daten des Personalausweises...","BLACK FADED"];
                                          [] call fvs_fnc_perso_laden;
                                          0 cutFadeOut 99999999;
                                          waitUntil{fvs_persoReady};
      • Öffne nun das Verzeichnis life_server\Functions\MySQL und füge den Ordner perso (Perso_Paket.zip\*versionen*) hinzu


        • Öffne nun die fn_insertRequest.sqf und füge folgendes hinzu (waitUntil sollte bei Versionen mit extDB2 und extDB3 entfernt werden)
      Code: fn_insertRequest.sqf
      _query_2 = format["INSERT INTO perso(pid, persoCop, persoMed, persoCiv, persoEast) VALUES ('%1','""[]""','""[]""','""[]""','""[]""')",_uid];
                                          waitUntil {!DB_Async_Active};
                                          [_query_2,1] call DB_fnc_asyncCall;
      • Öffne nun die config.cpp aus dem life_server-Ordner und füge dies in MySQL_Database aber nicht in MySQL hinzu
      Code: config.cpp
      class perso
                                              {
                                                  file = "\life_server\Functions\MySQL\perso";
                                                  class persoRequest {};
                                                  class persoInsert {};
                                                  class persoUpdate {};
                                              };

      Datenbank

      • Füge folgenden SQL-Befehl in deiner Altislife-Datenbank aus
      SQL: perso_idcard.sql
      CREATE TABLE IF NOT EXISTS `perso` (
                                    `id` int(12) NOT NULL AUTO_INCREMENT,
                                    `pid` varchar(50) NOT NULL DEFAULT '',
                                    `persoCop` text NOT NULL,
                                    `persoMed` text NOT NULL,
                                    `persoCiv` text NOT NULL,
                                    `persoEast` text NOT NULL,
                                    `Erstellungsdatum` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
                                    `Aenderungsdatum` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
                                    PRIMARY KEY (`id`,`pid`)
                                  ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
      Alles anzeigen

      Optional - Karte editieren

      • Erstelle ein Objekt auf deiner Missions-Karte und füge folgendes (oder abgeändert) in die Init des Objektes (z.B. Schild oder Laptop)
      Code: Objekt-Init: Versionen ohne Config_Licenses.hpp
      this allowDamage false;
                              this enableSimulation false;
                              this addAction[format["%1 ($%2)",["license_civ_einbuergerung"] call life_fnc_varToStr,[(["einbuergerung"] call life_fnc_licensePrice)] call life_fnc_numberText],life_fnc_buyLicense,"einbuergerung",0,false,false,"",' !license_civ_einbuergerung && playerSide == civilian '];
                              this addAction["Persoenliche Daten aendern (Kosten: $250.000)",fvs_fnc_aenderePerso,"",0,false,false,"",' license_civ_einbuergerung && playerSide == civilian '];
      Code: Objekt-Init: Versionen mit Config_Licenses.hpp
      this allowDamage false;
                          this enableSimulation false;
                          this addAction[format["%1 fuer $%2 abholen",localize (getText(missionConfigFile >> "Licenses" >> "einbuergerung" >> "displayName")),   [(getNumber(missionConfigFile >> "Licenses" >> "einbuergerung" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"einbuergerung",0,false,false,"",' !license_civ_einbuergerung && playerSide == civilian '];
                          this addAction["Persoenliche Daten aendern (Kosten: $250.000)",fvs_fnc_aenderePerso,"",0,false,false,"",' license_civ_einbuergerung && playerSide == civilian '];


      Das sollte es gewesen sein. Wenn ich etwas vergessen habe, werde ich das schnellsmöglichst ergänzen und Fehler natürlich korrigieren.
      Sollten Fehler auftreten, dann bitte ich dich die jeweiligen Logs sowie die Dateien anzuhängen, in denen du etwas geändert hast.
      Fragen? Raus damit ^^

      Grüße und viel Spaß damit
      Rom

      :sleeping:

      Dateien

      Perso-Paket neu.zip 4,87 MB – 2.003 Downloads

      Wenn ich etwas missverstanden habe, hoppala

      14 Mal editiert, zuletzt von Rom (22. Dezember 2016 um 19:32) aus folgendem Grund: SQL Datei geupdatet (es kann unter Umständen zu doppelten Einträgen kommen) Änderung für V ohne Config_License Info.txt eingefügt/ergänzt Archiv war beschädigt...

    • Andre-2
      Schüler
      Reaktionen
      25
      Trophäen
      9
      Beiträge
      109
      • 19. Oktober 2016 um 23:00
      • #2

      Sieht schon mal Gut aus (Y)

    • nflug
      Nerd
      Reaktionen
      225
      Trophäen
      9
      Beiträge
      781
      • 19. Oktober 2016 um 23:07
      • #3

      Wenn es genau so ist wie auf dem letzten Bild Top Arbeit!

      #MAKE_ARMA_NOT_WAR

      ⥴ Scripts made with love

      Why do programmers work in dark rooms?

      Because light attracts bugs...

    • shenzox
      Schüler
      Reaktionen
      6
      Trophäen
      11
      Beiträge
      77
      • 20. Oktober 2016 um 00:17
      • #4

      Fehler: Config_Perso.hpp

      class CfgServer {
      DatabaseName = not found.

    • Killergnom
      Amateur
      Reaktionen
      101
      Trophäen
      11
      Beiträge
      219
      Bilder
      18
      • 20. Oktober 2016 um 00:17
      • #5

      Erspart mir persönlich jetzt echt mega viel Arbeit :D wollte mich die Tage auch an sowas setzen. Vielen Dank dafür :)

    • exclusiv
      Anfänger
      Reaktionen
      8
      Trophäen
      11
      Beiträge
      28
      • 20. Oktober 2016 um 01:09
      • #6

      Moinsen, es fehlen noch ein paar Einträge die gemacht werden müssen.

      Beispielsweise fehlt der Hinweis, die Icons noch in den Icon Ordner zu verschieben. Des Weiteren der Hinweis, den Inhalts im "Textures" Ordner ebenfalls zu übernehmen.


      Ansonsten super Arbeit!

    • Nostra
      Frischling
      Trophäen
      10
      Beiträge
      9
      • 20. Oktober 2016 um 03:08
      • #7
      Zitat von shenzox

      Fehler: Config_Perso.hpp

      class CfgServer {
      DatabaseName = not found.

      Schau mal in die description.ext bei #include "Config_Perso.hpp fehlt am ende ein " dann komm der fehler ^^ Sprich #include "Config_Perso.hpp" ist Richtig

    • Killergnom
      Amateur
      Reaktionen
      101
      Trophäen
      11
      Beiträge
      219
      Bilder
      18
      • 20. Oktober 2016 um 04:24
      • #8
      Zitat von majoess

      Traurig. Wieso auch immer so etwas zur copy&paste Arma Life Community beigetragen wird.

      Verstehe dein Problem jetzt irgendwie nicht ganz...

    • Saturin78
      Profi
      Reaktionen
      409
      Trophäen
      10
      Beiträge
      1.340
      • 20. Oktober 2016 um 05:07
      • #9

      Vielen Dank.

      Genau nach sowas habe ich gesucht.

      Tapse mich wieder ins Arma3 xxx-Life rein :D

    • Rom
      Kenner
      Reaktionen
      156
      Beiträge
      533
      • 20. Oktober 2016 um 07:23
      • #10
      Zitat von shenzox

      Fehler: Config_Perso.hpp

      class CfgServer {
      DatabaseName = not found.

      Schaue mal nach ob in der description.ext das so aus sieht (im TUT hat ein " gefehlt):
      #include "Config_Perso.hpp"
      Danke @Nostra.

      Zitat von majoess

      Traurig. Wieso auch immer so etwas zur copy&paste Arma Life Community beigetragen wird.

      Ich möchte zwar keine Diskussuin starten, aber egal für wen oder was du programmierst, ein großer Bestandteil ist es Vorhandenes zu übernehmen und eigenen Bedürfnissen anzupassen. Also "traurig" ist es nicht, sondern hilfreich.

      Habe meinen Beitrag oben bearbeitet.

      Sagt bitte bescheid, ob es bei euch funktioniert.
      Und nicht einfach Copy&Paste. Womöglich sind ein paar Hindernisse platziert.
      Ordnerstruktur war nicht ganz eindeutig.

      Wenn ich etwas missverstanden habe, hoppala

    • nflug
      Nerd
      Reaktionen
      225
      Trophäen
      9
      Beiträge
      781
      • 20. Oktober 2016 um 07:45
      • #11
      Zitat von majoess

      Traurig. Wieso auch immer so etwas zur copy&paste Arma Life Community beigetragen wird.

      Auch wenn es hier ein Fertiges Script gibt werde ich mein eigenes zusammen basteln und das hier als Vorlage nehmen. Ich werde keines falls einfach nur copy&paste machen und dann nichts nach meinen Bedürfnissen einstellen. Ich weiss das es viele gibt die Scripts klauen aber wenn jemand ein Script für die Arma3 Community frei z.b wie hier mit einer Lizenz die man in den Ordner legen soll damit man Bescheid weiß von wem das ist, ist das doch gut für die Leute damit sie sich daran ein Beispiel nehmen.

      #MAKE_ARMA_NOT_WAR

      ⥴ Scripts made with love

      Why do programmers work in dark rooms?

      Because light attracts bugs...

    • Killergnom
      Amateur
      Reaktionen
      101
      Trophäen
      11
      Beiträge
      219
      Bilder
      18
      • 20. Oktober 2016 um 07:49
      • #12
      Zitat von Flyyying_nflug

      Auch wenn es hier ein Fertiges Script gibt werde ich mein eigenes zusammen basteln und das hier als Vorlage nehmen. Ich werde keines falls einfach nur copy&paste machen und dann nichts nach meinen Bedürfnissen einstellen. Ich weiss das es viele gibt die Scripts klauen aber wenn jemand ein Script für die Arma3 Community frei z.b wie hier mit einer Lizenz die man in den Ordner legen soll damit man Bescheid weiß von wem das ist, ist das doch gut für die Leute damit sie sich daran ein Beispiel nehmen.

      Da hast du vollkommen recht! Außerdem ist es mir lieber, wenn sich Leute C&P Server aufbauen, als bei anderen Servern die Missionsdateien zu klauen. Wenn man es kann, sollte man meiner Meinung nach Tutorials trotzdem eher als Leitfaden oder sogar Inspiration nutzen, oder das Script zumindest personalisieren. Da macht @Rom es einem durch die Config Datei natürlich extrem einfach.

      Voll lieb von ihm :rolleyes:

    • nox
      Administrator
      Reaktionen
      1.861
      Trophäen
      11
      Artikel
      2
      Beiträge
      1.866
      Dateien
      36
      Bilder
      11
      • 20. Oktober 2016 um 12:37
      • Offizieller Beitrag
      • #13
      Zitat von majoess

      Traurig. Wieso auch immer so etwas zur copy&paste Arma Life Community beigetragen wird.


      Ich denke dann bist du in dieser "Copy&Paste Community" falsch.

      Wichtige Links:

      [Erklärung|Leitfaden] Arma 3 Logs - Client, Server & extDB Log
      [Tutorial] ArmA 3 Altis Life RPG & Tanoa Life RPG Server einrichten unter Windows (mit extDB & BEC)
      BattlEye Filter - Guide und Erklärungen

      • Nächster offizieller Beitrag
    • MoInMaRvZ
      Anfänger
      Reaktionen
      12
      Trophäen
      11
      Beiträge
      32
      • 20. Oktober 2016 um 13:27
      • #14

      Tolles Script echt cool, dass es noch Leute gibt die so etwas zur Verfügung stellen und noch so höflich sind :)
      Ist keine Selbstverständlichkeit

    • AmaZiinG
      Profi
      Reaktionen
      496
      Beiträge
      798
      Dateien
      4
      Bilder
      46
      • 20. Oktober 2016 um 14:18
      • #15

      Danke für das Teilen des Script :thumbup:


      Zitat von majoess

      Traurig. Wieso auch immer so etwas zur copy&paste Arma Life Community beigetragen wird.

      Ist es den so schlimm, wenn jemand sich entscheidet sein Script zu veröffentlichen ?

      Mein Discord:
      https://discord.gg/4UMWmpfDet

    • Leokadia
      Amateur
      Reaktionen
      17
      Trophäen
      10
      Beiträge
      225
      • 20. Oktober 2016 um 14:33
      • #16

      Ist das Einfach nur Copy &Paste ?
      Wenn ja Wäre Das Klasse :)

      Frohe Weihnachten santa

    • Ling Ling
      Anfänger
      Reaktionen
      17
      Trophäen
      11
      Beiträge
      37
      • 20. Oktober 2016 um 14:47
      • #17

      Für so eine Frage gehört dir der Hintern versohlt. :D

    • Leokadia
      Amateur
      Reaktionen
      17
      Trophäen
      10
      Beiträge
      225
      • 20. Oktober 2016 um 14:48
      • #18

      Entschuldige xD

      Frohe Weihnachten santa

    • Ling Ling
      Anfänger
      Reaktionen
      17
      Trophäen
      11
      Beiträge
      37
      • 20. Oktober 2016 um 14:50
      • #19
      • Es sei dir verziehen! :thumbup:
    • Gregory
      Anfänger
      Reaktionen
      20
      Beiträge
      38
      Bilder
      5
      • 20. Oktober 2016 um 14:53
      • #20

      Das Skript gefällt mir. Habt ihr gut gemacht. Was soll der Pink/Lilane Bereich auf dem Personalausweis darstellen?


      /OT

      Zitat von majoess

      Traurig. Wieso auch immer so etwas zur copy&paste Arma Life Community beigetragen wird.


      Wenn es dich doch stört? Was suchst du dann im Tutorial Bereich? Ich denke mal der Tutorial Bereich ist dafür ausgelegt um anderen Community's einen Ansatz Punkt zu geben.

    Registrieren oder Einloggen

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

    Registrieren

    Ähnliche Themen

    • Neue Lizenzen hinzufügen auf der 4.4r4

      • Ricardo INDUSTRIES
      • 25. Februar 2017 um 01:32
      • Hilfeforum
    • Ich suche ein Ausweis Script

      • ArmA3Designs ~ MrRetroxX
      • 27. April 2017 um 12:41
      • Hilfeforum
    • Ausweis Script für die 5.0.0

      • Proxinbe
      • 25. Januar 2017 um 18:18
      • Hilfeforum
    • Spielernamen

      • Leokadia
      • 7. November 2016 um 17:00
      • Hilfeforum
    • Personalausweis für 4.4.r4

      • Chilledlemon
      • 21. März 2017 um 18:05
      • Hilfeforum
    • Name über dem Kopf

      • Delfin777
      • 14. Januar 2017 um 11:46
      • Hilfeforum

    Benutzer online in diesem Thema

    • 3 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™