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

    Dienstantritt als Zivilist

      • Altis Life
    • ProteusSpectrum
    • 28. April 2018 um 21:26
    • ProteusSpectrum
      Frischling
      Reaktionen
      30
      Trophäen
      10
      Beiträge
      10
      • 28. April 2018 um 21:26
      • #1

      Hallo Zusammen,


      ich habe nach langem hin und her überlege, mich dazu entschieden, dieses Script zu veröffentlichen.

      Das Script ist nicht das performanteste und bestgeschriebenste Script, denn auch ich lernte immer was dazu. Also es gibt bestimmt schönere Wege, wie man das gleiche Ziel erreichen kann.

      Was macht das Script??

      Das Script dient dem Einloggen als Zivilist. Das bedeutet, dass es keine weiteren Fraktionen ausser den Zivilisten gibt. Alle Polizisten und Sanitäter müssen sich als Zivilist einloggen, um ihren Dienst zu beginnen.

      WICHTIG: Dieses System ist NICHTS für Anfänger! Wer nur Copy/Pasten kann, sollte hier nicht weiterlesen! Dieses Skript bedarf weiterführende Kenntnisse in der Programmierung, deshalb Schwierigkeit 5!!

      Erstellt bevor ihr anfangt ein Backup! Ich garantiere nicht zur Lauffähigkeit dieses Scriptes und hafte für keine Fehler!

      Dieses System müsst ihr selbst einbauen können! Schwierigkeit 5 bedeutet, dass ihr dies alleine hinbekommen müsst!


      Ihr dürft alles bearbeiten wie ihr möchtet!


      Ich habe mit der Arma 3 Programmierung aufgehört, sodass ich die Skripte nicht mehr gebrauchen kann, möchte diese aber nicht vorenthalten.

      Also viel Spaß damit!


      Dann fangen wir doch mal an:

      Leider musste ich einige Dateien anhängen, da mir nur 20.000 Zeichen zur Verfügung stehen ...

      Datenbank-Teil:

      Schritt 1: (ich habe dies über PHPmyAdmin gemacht!)

      Spoiler anzeigen

      1. Öffnet die Tabelle "players" und klickt auf "Struktur".

      2. Sucht die Zeile "coplevel" und bearbeitet diese.

      3. Ändert den TYP von "ENUM" auf "INT" mit der Länge "2". Dadurch ist es euch möglich, bis zu 99 Ränge bei der Polizei zu erstellen.

      Dies müsste dann so aussehen:

      nodezone.net/attachment/13191/

      4. Habt ihr weitere Fraktionen (ADAC/Rettungsdienst), müsst ihr dies dort genauso tun!

      5. Durch diese Änderung ist es zudem möglich, Ingame die Spieler zu whitelisten.

      Missions-Teil:

      Schritt 2: Wir erstellen im Ordner "euer Missionsordner/core/" die Datei "fn_einloggen.sqf" mit folgendem Inhalt:

      Die Datei ist für euch in den Dateinanhängen hinterlegt.

      Schritt 3: Wir erstellen im Ordner "euer Missionsordner/core/" die Datei "fn_ausloggen.sqf" mit folgendem Inhalt:

      Die Datei ist für euch in den Dateinanhängen hinterlegt.

      Schritt 4: Wir gehen in die mission.sqm und geben folgende Init in einen Gegenstand ein:

      Code: mission.sqm
      this addAction['Polizeidienst beginnen',life_fnc_einloggen,'polizei',0,false,false,'','!life_cop'];   " \n "this addAction['Polizeidienst beenden',life_fnc_ausloggen,'polizei',0,false,false,'','life_cop'];

      Ihr könnt nach dem Tutorial alle Blufor und Opfor/Widerstand-NPC´s von der Karte entfernen!

      Schritt 5: In der configuration.sqf hinterlegen wir nun die hinzugefügten Variablen:

      Code: configuration.sqf
      life_rettungsdienst = false;
      life_cop = false;
      life_gehalt = false;

      Schritt 6: Ich habe meine fn_loadGear.sqf umgebaut. (/core/functions/)

      Code: fn_loadGear.sqf
      #include "..\..\script_macros.hpp"
      /*
          File: fn_loadGear.sqf
          Author: Bryan "Tonic" Boardwine
      
          Description:
          Loads saved civilian gear, this is limited for a reason and that's balance.
      */
      private ["_itemArray","_handle"];
      load_side = "";
      if(life_cop) then {load_side = "cop";};                            //Abfrage ob derzeit im Polizei-Dienst
      if(life_retttungsdienst) then {load_side = "san";};                //Abfrage ob derzeit im Rettungsdienst
      if(!life_retttungsdienst && !life_cop) then {load_side = "civ";};  //Falls beides nein, dann Zivilist
      [getPlayerUID player,load_side,player] remoteExec ["TON_fnc_holeUpdates",RSERV];    //Aufruf zur holeUpdates datei! (ANDERE WEISE DER DATENBESCHAFFUNG!!!)
      Alles anzeigen

      Schritt 7: Wir erstellen im Ordner "euer Missionsordner/core/functions/" die Datei "fn_loadGear2.sqf" mit folgendem Inhalt:

      Die Datei ist für euch in den Dateinanhängen hinterlegt.

      Schritt 8: Ich habe meine fn_saveGear.sqf umgebaut. (/core/functions/)

      Code: fn_saveGear.sqf
      #include "..\..\script_macros.hpp"
      /*
          File: fn_saveGear.sqf
          Author: Bryan "Tonic" Boardwine
          Full Gear/Y-Menu Save by Vampire
          Edited: Itsyuka
      
          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;
      _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;
          _yItems = [];
      } else {
          _return pushBack [];
      };
      
      life_gear = _return;
      if(!life_cop && !life_rettungsdienst) then {life_civ_gear = life_gear;[4] spawn life_fnc_UpdateSpieler;};    //Speichere Zivilisten-Inventar
      if(life_cop) then {life_cop_gear = life_gear;[5] spawn life_fnc_UpdateSpieler;};                             //Speichere Polizei-Inventar
      if(life_rettungsdienst) then {life_med_gear = life_gear;[6] spawn life_fnc_UpdateSpieler;};                  //Speichere Rettungsdienst-Inventar
      life_gear = [];
      _return = [];
      Alles anzeigen

      Schritt 9: Ich habe meine fn_requestReceived.sqf umgebaut. (/core/session/)

      Wichtig! Ihr dürft hier kein Copy/Paste machen! Selbst nachschauen und kontrollieren!!

      CONST(life_coplevel,(_this select 7)); müsst ihr zu life_copLevel = parseNumber(_this select 6); umbauen.

      Ihr braucht durch dieses Script keine Abfrage der Playerside mehr!!

      Code: fn_requestReceived.sqf (Beispiel)
      #include "..\..\script_macros.hpp"
      /*
          File: fn_requestReceived.sqf
          Author: Bryan "Tonic" Boardwine
      
          Description:
          Called by the server saying that we have a response so let's
          sort through the information, validate it and if all valid
          set the client up.
      */
      private _count = count _this;
      life_session_tries = life_session_tries + 1;
      if (life_session_completed) exitWith {}; //Why did this get executed when the client already initialized? 
      if (life_session_tries > 3) exitWith {cutText[localize "STR_Session_Error","BLACK FADED"]; 0 cutFadeOut 999999999;};
      
      0 cutText [localize "STR_Session_Received","BLACK FADED"];
      0 cutFadeOut 9999999;
      //Error handling and junk..
      if (isNil "_this") exitWith {[] call SOCK_fnc_insertPlayerInfo;};
      if (_this isEqualType "") exitWith {[] call SOCK_fnc_insertPlayerInfo;};
      if (count _this isEqualTo 0) exitWith {[] call SOCK_fnc_insertPlayerInfo;};
      if ((_this select 0) isEqualTo "Error") exitWith {[] call SOCK_fnc_insertPlayerInfo;};
      if (!(getPlayerUID player isEqualTo (_this select 0))) exitWith {[] call SOCK_fnc_dataQuery;};
      
      
      //Parse basic player information.
      CASH = parseNumber (_this select 2);
      BANK = parseNumber (_this select 3);
      life_adminlevel = (_this select 4);
      
      //Loop through licenses
      if (count (_this select 8) > 0) then {
          {missionNamespace setVariable [(_x select 0),(_x select 1)];} forEach (_this select 8);
      };
      
      life_gear_default = _this select 10;
      life_default_gear = life_gear_default;
      
      life_is_arrested = _this select 9;
      life_copLevel = parseNumber(_this select 6);
      life_medicLevel = parseNumber(_this select 5);
      life_panlevel = parseNumber(_this select 7);
      
      life_isCop = parseNumber(_this select 15);
      life_isMedic = parseNumber(_this select 16);
      life_isPan = parseNumber(_this select 17);
      life_justizlevel = parseNumber(_this select 18);
      
      if (LIFE_SETTINGS(getNumber,"save_playerStats") isEqualTo 1) then {
          life_hunger = ((_this select 11) select 0);
          life_thirst = ((_this select 11) select 1);
          player setDamage ((_this select 11) select 2);
      };
      
      life_houses = _this select (_count - 3);
      
      if (LIFE_SETTINGS(getNumber,"save_civilian_position") isEqualTo 1) then {
          life_is_alive = _this select 12;
          life_civ_position = _this select 13;
          if (life_is_alive) then {
              if !(count life_civ_position isEqualTo 3) then {diag_log format ["[requestReceived] Bad position received. Data: %1",life_civ_position];life_is_alive =false;};
              if (life_civ_position distance (getMarkerPos "respawn_civilian") < 300) then {life_is_alive = false;};
          };
      };
      
      {
          _house = nearestObject [(call compile format ["%1",(_x select 0)]), "House"];
          life_vehicles pushBack _house;
      } forEach life_houses;
      
      life_gangData = _this select (_count - 2);
      if !(count life_gangData isEqualTo 0) then {
          [] spawn life_fnc_initGang;
      };
      [] spawn life_fnc_initHouses;
      
      if (count (_this select (_count - 1)) > 0) then {
          {life_vehicles pushBack _x;} forEach (_this select (_count - 1));
      };
      
      life_session_completed = true;
      Alles anzeigen

      Schritt 10: Ich habe meine fn_updateRequest.sqf umgebaut. (/core/session/)

      Wichtig! Ihr dürft hier kein Copy/Paste machen! Selbst nachschauen und kontrollieren!!

      Code: fn_updateRequest.sqf (Beispiel)
      #include "..\..\script_macros.hpp"
      /*
          File: fn_updateRequest.sqf
          Author: Tonic
      
          Description:
          Passes ALL player information to the server to save player data to the database.
      */
      private ["_packet","_array","_flag","_alive","_position"];
      _side = "";
      if(life_cop) then {_side = "cop";};
      if(life_rettungsdienst) then {_side = "san";};
      if(!life_rettungsdienst && !life_cop ) then {_side = "civ";};
      _packet = [getPlayerUID player,(profileName),_side,CASH,BANK];
      _array = [];
      _alive = alive player;
      _position = getPosATL player;
      [] call life_fnc_saveGear;
      _flag = switch (playerSide) do {case west: {"cop"}; case civilian: {"civ"}; case independent: {"med"};};
      
      {
          _varName = LICENSE_VARNAME(configName _x,_flag);
          _array pushBack [_varName,LICENSE_VALUE(configName _x,_flag)];
      } forEach (format ["getText(_x >> 'side') isEqualTo '%1'",_flag] configClasses (missionConfigFile >> "Licenses"));
      
      _packet pushBack _array;
      
      if(!life_rettungsdienst && !life_cop) then
      {
          _packet pushBack life_civ_gear;
      };
      if(life_cop) then
      {
          _packet pushBack life_cop_gear;
      };
      
      if(life_rettungsdienst) then
      {
          _packet pushBack life_med_gear;
      };
      
      _array = [];
      _array pushBack life_hunger;
      _array pushBack life_thirst;
      _array pushBack (damage player);
      _packet pushBack _array;
      
      _packet pushBack life_coplevel;
      _packet pushBack life_medicLevel;
      
      _packet pushBack life_is_arrested;
      _packet pushBack _alive;
      _packet pushBack _position;
      
      
      if (life_HC_isActive) then {
          _packet remoteExecCall ["HC_fnc_updateRequest",HC_Life];
      } else {
          _packet remoteExecCall ["DB_fnc_updateRequest",RSERV];
      };
      Alles anzeigen

      Schritt 11: Wir erstellen im Ordner "euer Missionsordner/core/" die Datei "fn_paycheck.sqf" mit folgendem Inhalt:

      Code: fn_paycheck.sqf
      #include "..\script_macros.hpp"
      /**
       * fn_paycheck.sqf
       *
       * LICENSE: This file is subject to the terms and conditions defined in
       * file "LICENSE.md", which is part of this source code package.
       *
       * @author     ProteusSpectrum
       * @copyright  2016 ProteusSpectrum
       */
      if(life_gehalt) exitWith {};
      life_dienstgehalt = 0;
      systemChat format ["Du erhälst deinen Lohn in 15 Minuten."];
      life_gehalt = true;
      
      //Polizei
          while {life_cop} do
          {
              sleep 900;
              if(!life_cop) exitWith {};
              
              switch (life_coplevel) do
              {
                  case 1: {life_dienstgehalt = 8303;};    //Meisteranwärter
                  case 2: {life_dienstgehalt = 10303;};    //Polizeimeister
                  case 3: {life_dienstgehalt = 12303;};    //Polizeiobermeister
                  case 4: {life_dienstgehalt = 14303;};    //Polizeihauptmeister
                  case 5: {life_dienstgehalt = 16303;};    //Polizeikommissaranwärter
                  case 6: {life_dienstgehalt = 18303;};    //Polizeikommissar
                  case 7: {life_dienstgehalt = 20303;};    //Polizeioberkommissar
                  case 8: {life_dienstgehalt = 36900;};    //Polizeihauptkommissar
                  case 9: {life_dienstgehalt = 41000;};    //Polizeipräsident
              };
              systemChat format["Du hast deinen Lohn in Höhe von $%1 erhalten.",[life_dienstgehalt] call life_fnc_numberText];
              BANK = BANK + life_dienstgehalt;
              life_gehalt = false;
          };
      
      //Sanitäter
          while {life_rettungsdienst} do
          {
              sleep 900;
              if(!life_rettungsdienst) exitWith {};
              
              switch (life_medicLevel) do
              {
                  case 1: {life_dienstgehalt = 8303;};    //Ersthelfer
                  case 2: {life_dienstgehalt = 11070;};    //Rettungsdienst
                  case 3: {life_dienstgehalt = 14760;};    //Rettungssanitäter
                  case 4: {life_dienstgehalt = 36900;};    //Notarzt
                  case 5: {life_dienstgehalt = 41000;};    //Leitender Notarzt
              };
              systemChat format["Du hast deinen Lohn in Höhe von $%1 erhalten.",[life_dienstgehalt] call life_fnc_numberText];
              BANK = BANK + life_dienstgehalt;
              life_gehalt = false;
          };
      Alles anzeigen

      Schritt 12: Wir erstellen im Ordner "euer Missionsordner/core/civilian" die Datei "fn_UpdateSpieler.sqf" mit folgendem Inhalt:

      Diese Datei sorgt dafür, dass die Anfragen zur Speicherung an die Life_Server-Datei übergeben wird.

      Da ich noch weitere Funktionen eingefügt habe, müsst ihr euch diese Datei anpassen. Für dieses Tutoriale wichtige Inhalte habe ich euch markiert.

      Code: fn_UpdateSpieler.sqf
      #include "..\..\script_macros.hpp"
      /*
          File: fn_updateSpieler.sqf
          Author: Tonic
      
          Description:
          Passes ALL player information to the server to save player data to the database.
      */
      private ["_packet","_array","_flag","_alive","_position"];
      _mode = _this select 0;
      
      switch (_mode) do 
      {
          //Kontakte speichern
          case 0:
          {
              _packet = [0, getPlayerUID player, life_kontakte];
              _packet remoteExecCall ["TON_fnc_Updates",RSERV];
          };
          //Kontakte laden
          case 1:
          {
              _packet = [1, getPlayerUID player, player];
              _packet remoteExecCall ["TON_fnc_Updates",RSERV];
          };
          //Kontakte einspeichern
          case 2:
          {
              life_kontakte = _this select 1;
          };
          //AceActions Lizenzen speichern
          case 3:
          {
              _packet = [2, getPlayerUID player];
              _array = [];
              _flag = switch (playerSide) do {case west: {"cop"}; case civilian: {"civ"}; case independent: {"med"};};
              {
                  _varName = LICENSE_VARNAME(configName _x,_flag);
                  _array pushBack [_varName,LICENSE_VALUE(configName _x,_flag)];
              } forEach (format ["getText(_x >> 'side') isEqualTo '%1'",_flag] configClasses (missionConfigFile >> "Licenses"));
              _packet pushBack _array;
              
              _packet remoteExecCall ["TON_fnc_Updates",RSERV];
          };
          //Zivilisten Gear
          case 4:
          {
              _packet = [3, getPlayerUID player, player, life_civ_gear];
              _packet remoteExecCall ["TON_fnc_Updates",RSERV];
          };
          //Polizei Gear
          case 5:
          {
              _packet = [4, getPlayerUID player, player, life_cop_gear];
              _packet remoteExecCall ["TON_fnc_Updates",RSERV];
          };
          //Rettungsdienst Gear
          case 6:
          {
              _packet = [5, getPlayerUID player, player, life_med_gear];
              _packet remoteExecCall ["TON_fnc_Updates",RSERV];
          };
      };
      Alles anzeigen

      Schritt 13: Nun müsst seit ihr dran:

      Code
      Alle Abfragen von der Playerside (BSP: switch (playerSide) do { ... };) auf folgendes umschreiben:
      Bei Polizei: if(life_cop)then {...};
      Bei Rettungsdienst: if(life_rettungsdienst)then {...};
      Da dies je nach Mission unterschiedlich ist, müsst ihr das erledigen!

      Schritt 14: Nun müsst ihr nur noch die neuerstellten Dateien in die functions.h eintragen im entsprechenden Bereich und die RemoteExec Aufruf-Dateien in der CfgRemoteExec.hpp!

      Da dieses Tutorial die Stufe 5 vorweist, denke ich, dass ihr das selbst hinbekommen müsst.


      Life-Server-Teil:

      Schritt 15: Nun geht in die "life_server/init.sqf" und fügt folgendes hinzu (sofern nicht schon vorhanden!)

      Code: fn_init.sqf
      unter der Zeile "[8,true,24] execFSM "\life_server\FSM\timeModule.fsm";"
      
      life_adminLevel = 0;
      life_medicLevel = 0;
      life_copLevel = 0;

      Schritt 16: Nun geht in die "life_server/functions/MySQL/fn_queryRequest.sqf".

      Wichtig: Wer hier Copy/Paste macht, ist selbst Schuld! Dies muss genau an euren Server angepasst sein!

      Die Datei ist für euch in den Dateinanhängen hinterlegt.

      Schritt 17: Nun geht in die "life_server/functions/MySQL/fn_updateRequest.sqf".

      Wichtig! Ihr müsst auch hier selbst nachdenken! Wer keine fortgeschrittenen Kenntnisse hat, sollte von diesem System die Finger weglassen!

      Bei mir sind alle Abfragen anders! Die angehängte Datei ist nur ein Beispiel!!!

      Die Datei ist für euch in den Dateinanhängen hinterlegt.


      Aufgrund der maximalen Statement-Länge habe ich die Lizenzen getrennt von den Variablen gespeichert und in ein eigenes Statement gepackt.

      Schritt 18: Wir erstellen im Ordner "life_server/functions/Systems/" die Datei "fn_holeUpdates.sqf" mit folgendem Inhalt:

      Diese Datei sorgt dafür, dass alle Spielerinventare auf Anfrage geladen werden!

      Die Datei ist für euch in den Dateinanhängen hinterlegt.

      Schritt 19: Wir erstellen im Ordner "life_server/functions/Systems/" die Datei "fn_Updates.sqf" mit folgendem Inhalt:

      Auch hier hatte ich weitere Update-Statements, die ihr ignorieren könnt.

      Die Datei ist für euch in den Dateinanhängen hinterlegt.

      Schritt 20: Auch hier müsst ihr alle neu erstellen Dateien in die entsprechenden Dateien eintragen.

      Das solltet ihr hinbekommen.

      Nun sollte alles wichtige implementiert sein.

      Ich wünsche euch viel Spaß mit diesem System!

      Dateien

      Dienstantritt.rar 8,14 kB – 638 Downloads

      Mit freundlichen Grüßen

      ProteusSpectrum

      2 Mal editiert, zuletzt von ProteusSpectrum (28. April 2018 um 22:16)

    • Lassi262612
      Nerd
      Reaktionen
      55
      Trophäen
      11
      Beiträge
      730
      • 28. April 2018 um 22:50
      • #2

      Der Link ist nicht aufrufbar.

    • Milozz
      Amateur
      Reaktionen
      48
      Trophäen
      10
      Beiträge
      247
      Bilder
      5
      • 29. April 2018 um 09:02
      • #3
      Zitat von MRYS

      Wie zu sehen ist, scheint niemand interessiert zu sein. Ihre Arbeit wäre viel interessanter, wenn Sie alles aufgelistet hätten!

      eigentlich schon, aber für das was ich es brauchen würde lohnt es sich nicht , weil es zu viel aufwand ist, der sich nicht lohnt.

      USA Life Entwickler

      Mein Steam Profil

      fMmKBK7.jpg

    • Lassi262612
      Nerd
      Reaktionen
      55
      Trophäen
      11
      Beiträge
      730
      • 19. Mai 2018 um 14:44
      • #4

      ich habe folgenden fehler dabei und zwar frage spieler inforamtionnen ab. Im anhang der extdb log sowie der server rpt log und die datei wo der fehler sein soll.

      Wo möglich liegt es daran das ich einfach wenig erfahrung im umgang mit life server bzw db habe.

      ich hoffe jemand weiß rat.

      gz Lassi

      Dateien

      14-37-59.log 975 Byte – 272 Downloads arma3server_x64_2018-05-19_14-37-39.rpt 79,73 kB – 232 Downloads fn_queryRequest.sqf 6,01 kB – 445 Downloads
    • HelperLee
      Amateur
      Reaktionen
      12
      Trophäen
      9
      Beiträge
      181
      • 19. Mai 2018 um 17:36
      • #5

      Hey Lassi262612,

      Ich glaube es liegt nicht an deinen Fehlenden DB kenntnissen... esliegt an deinen Fehlenden Arma kenntnissen.

      Den oben genannten Fehler bekommt man meistens durch fehler in der Mission selber.

      Behebe die erstmal selber.

      Unten die Fehler in deiner Log.

      Code
      14:37:59 Error in expression <!= player)) exitWith {};
      if (FETCH_CONST(life_coplevel) > 1) exitWith {};
      
      {
      _sp>
      14:37:59   Error position: <(life_coplevel) > 1) exitWith {};
      
      {
      _sp>
      14:37:59   Error Missing )
      14:37:59 File core\cop\fn_radar.sqf [life_fnc_radar], line 12
      14:37:59 Error in expression <!= player)) exitWith {};
      if (FETCH_CONST(life_coplevel) > 1) exitWith {};
      
      {
      _sp>
      14:37:59   Error position: <(life_coplevel) > 1) exitWith {};
      
      {
      _sp>
      14:37:59   Error Missing )
      14:37:59 File core\cop\fn_radar.sqf [life_fnc_radar], line 12
      14:37:59 Error in expression <private "_rentMultiplier";
      
      switch (side) do {
      case civilian: {
      _buyMultiplier =>
      14:37:59   Error position: <) do {
      case civilian: {
      _buyMultiplier =>
      14:37:59   Error unexpected )
      14:37:59 File core\shops\fn_vehicleShopBuy.sqf [life_fnc_vehicleShopBuy], line 80
      14:37:59 Error in expression <private "_rentMultiplier";
      
      switch (side) do {
      case civilian: {
      _buyMultiplier =>
      14:37:59   Error position: <) do {
      case civilian: {
      _buyMultiplier =>
      14:37:59   Error unexpected )
      14:37:59 File core\shops\fn_vehicleShopBuy.sqf [life_fnc_vehicleShopBuy], line 80
      Alles anzeigen
    • Lassi262612
      Nerd
      Reaktionen
      55
      Trophäen
      11
      Beiträge
      730
      • 19. Mai 2018 um 18:22
      • #6

      Das radar wird nicht schuld sein da der fehler vorher auch schon war und der vehicleshop fehler der ist erst seit dem script hier da schau ich noch mal.

    • Lassi262612
      Nerd
      Reaktionen
      55
      Trophäen
      11
      Beiträge
      730
      • 19. Mai 2018 um 18:55
      • #7

      Die beiden fehler sind raus doch funktioniern tut es leider immer noch nicht. im anhahng sind die aktuellsten logs und die vermutlichen fehler datein.

      Dateien

      18-49-30.log 975 Byte – 229 Downloads arma3server_x64_2018-05-19_18-49-13.rpt 78,58 kB – 205 Downloads fn_queryRequest.sqf 6,01 kB – 358 Downloads fn_updatePartial.sqf 3,47 kB – 218 Downloads Arma3_x64_2018-05-19_18-27-03.rpt 109,24 kB – 213 Downloads
    • Natic
      Fortgeschrittener
      Reaktionen
      66
      Trophäen
      9
      Beiträge
      408
      • 20. Mai 2018 um 08:04
      • #8

      Ich finde es schön das du so ein Script veröffentlichst, so etwas gibt es Audi bei LiveYourLife von Vincent Heins

      Mit freundlichen Grüßen

      Natic

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

      Kein direkten PN - Support

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

      Programierung

      Wir lieben

      es

    • NiceKype
      Profi
      Reaktionen
      554
      Trophäen
      9
      Beiträge
      996
      Dateien
      1
      Bilder
      62
      • 27. Mai 2018 um 00:25
      • #9

      Moin zusammen, vielleicht kann mir ja jemand weiterhelfen.

      Bleibe im Blackscreen mit Frage Server nach UID ab hängen.

      RPT Log im Anhang... :D

      Dateien

      arma3server_x64_2018-05-27_00-11-30.rpt 66,03 kB – 405 Downloads

      𝗡𝗜𝗖𝗘𝗞𝗬𝗣𝗘 // 𝗧𝗜𝗠𝗢

      ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
      MEINE LINKS:

      Have Fun, stay Nice
      ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

    • Julian
      Nerd
      Reaktionen
      76
      Trophäen
      8
      Beiträge
      820
      • 27. Mai 2018 um 01:48
      • #10
      Zitat von =Recon=

      Moin zusammen, vielleicht kann mir ja jemand weiterhelfen.

      Bleibe im Blackscreen mit Frage Server nach UID ab hängen.

      RPT Log im Anhang... :D

      Deine fn_queryRequest.sqf wäre vll noch interessant :)

      Mit freundlichen Grüßen,

      Julian


      Bitte erst Denken und dann Fragen


      Hier lesen: das Heilige Buch der Arma3 Scripter

    • NiceKype
      Profi
      Reaktionen
      554
      Trophäen
      9
      Beiträge
      996
      Dateien
      1
      Bilder
      62
      • 27. Mai 2018 um 01:52
      • #11

      uff ja da war ja was xD Hier:

      Code
      #include "\life_server\script_macros.hpp"
      /*
          File: fn_queryRequest.sqf
          Author: Bryan "Tonic" Boardwine
      
          Description:
          Handles the incoming request and sends an asynchronous query
          request to the database.
      
          Return:
          ARRAY - If array has 0 elements it should be handled as an error in client-side files.
          STRING - The request had invalid handles or an unknown error and is logged to the RPT.
      */
      private ["_uid","_side","_query","_queryResult","_tickTime","_tmp"];
      _uid = [_this,0,"",[""]] call BIS_fnc_param;
      _side = [_this,1,"",[""]] call BIS_fnc_param;    //Side wurde dem Script übergeben
      _ownerID = [_this,2,objNull,[objNull]] call BIS_fnc_param;
      
      if (isNull _ownerID) exitWith {};
      _ownerID = owner _ownerID;
      
      _query = switch (_side) do {
          // West - 11 entries returned
          case west: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, cop_licenses, coplevel, cop_gear, blacklist, cop_stats, playtime FROM players WHERE pid='%1'",_uid];};
          // Civilian - 12 entries returned
          case civilian: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, civ_licenses, arrested, civ_gear, civ_stats, civ_alive, civ_position, playtime FROM players WHERE pid='%1'",_uid];};
          // Independent - 10 entries returned
          case independent: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, med_licenses, mediclevel, med_gear, med_stats, playtime FROM players WHERE pid='%1'",_uid];};
          
          case east: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, juslevel, jus_licenses, jus_gear, jus_stats, playtime FROM players WHERE pid='%1'",_uid];};
      };
      
      _tickTime = diag_tickTime;
      _queryResult = [_query,2] call DB_fnc_asyncCall;
      
      if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
          diag_log "------------- Client Query Request -------------";
          diag_log format ["QUERY: %1",_query];
          diag_log format ["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)];
          diag_log format ["Result: %1",_queryResult];
          diag_log "------------------------------------------------";
      };
      
      if (_queryResult isEqualType "") exitWith {
          [] remoteExecCall ["SOCK_fnc_insertPlayerInfo",_ownerID];
      };
      
      if (count _queryResult isEqualTo 0) exitWith {
          [] remoteExecCall ["SOCK_fnc_insertPlayerInfo",_ownerID];
      };
      
      //Blah conversion thing from a2net->extdb
      //CASH
      _tmp = _queryResult select 2;
      _queryResult set[2,[_tmp] call DB_fnc_numberSafe];
      //BANK
      _tmp = _queryResult select 3;
      _queryResult set[3,[_tmp] call DB_fnc_numberSafe];
      
      //Medic LVL
      _tmp = _queryResult select 5;
      _queryResult set[5,[_tmp] call DB_fnc_numberSafe];
      
      //Polizei LVL
      _tmp = _queryResult select 6;
      _queryResult set[6,[_tmp] call DB_fnc_numberSafe];
      
      //Ziv Lizenzen
      _new = [(_queryResult select 8)] call DB_fnc_mresToArray;
      if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
      _queryResult set[8,_new];
      
      //Convert tinyint to boolean
      _old = _queryResult select 8;
      for "_i" from 0 to (count _old)-1 do {
          _data = _old select _i;
          _old set[_i,[_data select 0, ([_data select 1,1] call DB_fnc_bool)]];
      };
      _queryResult set[8,_old];
      
      _queryResult set[9,([_queryResult select 9,1] call DB_fnc_bool)];
      
      //Gear
      _new = [(_queryResult select 10)] call DB_fnc_mresToArray;
      if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
      _queryResult set[10,_new];
      
      //Statistiken
      _new = [(_queryResult select 11)] call DB_fnc_mresToArray;
      if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
      _queryResult set[11,_new];
      
      //Alive
      _queryResult set[12,([_queryResult select 12,1] call DB_fnc_bool)];
      
      //Position
      _new = [(_queryResult select 13)] call DB_fnc_mresToArray;
      if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
      _queryResult set[13,_new];
      
      //Playtime
      _new = [(_queryResult select 14)] call DB_fnc_mresToArray;
      if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
      _index = TON_fnc_playtime_values_request find [_uid, _new];
      if (_index != -1) then {
          TON_fnc_playtime_values_request set[_index,-1];
          TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
          TON_fnc_playtime_values_request pushBack [_uid, _new];
      } else {
          TON_fnc_playtime_values_request pushBack [_uid, _new];
      };
      [_uid,_new select 2] call TON_fnc_setPlayTime;
      
      
      /* Make sure nothing else is added under here */
      _houseData = _uid spawn TON_fnc_fetchPlayerHouses;
      waitUntil {scriptDone _houseData};
      _queryResult pushBack (missionNamespace getVariable [format ["houses_%1",_uid],[]]);
      _gangData = _uid spawn TON_fnc_queryPlayerGang;
      waitUntil{scriptDone _gangData};
      _queryResult pushBack (missionNamespace getVariable [format ["gang_%1",_uid],[]]);
      
      publicVariable "TON_fnc_playtime_values_request";
      
      _keyArr = missionNamespace getVariable [format ["%1_KEYS_%2",_uid,_side],[]];
      _queryResult pushBack _keyArr;
      
      _queryResult remoteExec ["SOCK_fnc_requestReceived",_ownerID];
      Alles anzeigen

      𝗡𝗜𝗖𝗘𝗞𝗬𝗣𝗘 // 𝗧𝗜𝗠𝗢

      ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
      MEINE LINKS:

      Have Fun, stay Nice
      ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

    • Julian
      Nerd
      Reaktionen
      76
      Trophäen
      8
      Beiträge
      820
      • 27. Mai 2018 um 02:22
      • #12
      Zitat von =Recon=

      uff ja da war ja was xD Hier:

      Code
      #include "\life_server\script_macros.hpp"
      /*
          File: fn_queryRequest.sqf
          Author: Bryan "Tonic" Boardwine
      
          Description:
          Handles the incoming request and sends an asynchronous query
          request to the database.
      
          Return:
          ARRAY - If array has 0 elements it should be handled as an error in client-side files.
          STRING - The request had invalid handles or an unknown error and is logged to the RPT.
      */
      private ["_uid","_side","_query","_queryResult","_tickTime","_tmp"];
      _uid = [_this,0,"",[""]] call BIS_fnc_param;
      _side = [_this,1,"",[""]] call BIS_fnc_param;    //Side wurde dem Script übergeben
      _ownerID = [_this,2,objNull,[objNull]] call BIS_fnc_param;
      
      if (isNull _ownerID) exitWith {};
      _ownerID = owner _ownerID;
      
      _query = switch (_side) do {
          // West - 11 entries returned
          case west: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, cop_licenses, coplevel, cop_gear, blacklist, cop_stats, playtime FROM players WHERE pid='%1'",_uid];};
          // Civilian - 12 entries returned
          case civilian: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, civ_licenses, arrested, civ_gear, civ_stats, civ_alive, civ_position, playtime FROM players WHERE pid='%1'",_uid];};
          // Independent - 10 entries returned
          case independent: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, med_licenses, mediclevel, med_gear, med_stats, playtime FROM players WHERE pid='%1'",_uid];};
          
          case east: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, juslevel, jus_licenses, jus_gear, jus_stats, playtime FROM players WHERE pid='%1'",_uid];};
      };
      
      _tickTime = diag_tickTime;
      _queryResult = [_query,2] call DB_fnc_asyncCall;
      
      if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
          diag_log "------------- Client Query Request -------------";
          diag_log format ["QUERY: %1",_query];
          diag_log format ["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)];
          diag_log format ["Result: %1",_queryResult];
          diag_log "------------------------------------------------";
      };
      
      if (_queryResult isEqualType "") exitWith {
          [] remoteExecCall ["SOCK_fnc_insertPlayerInfo",_ownerID];
      };
      
      if (count _queryResult isEqualTo 0) exitWith {
          [] remoteExecCall ["SOCK_fnc_insertPlayerInfo",_ownerID];
      };
      
      //Blah conversion thing from a2net->extdb
      //CASH
      _tmp = _queryResult select 2;
      _queryResult set[2,[_tmp] call DB_fnc_numberSafe];
      //BANK
      _tmp = _queryResult select 3;
      _queryResult set[3,[_tmp] call DB_fnc_numberSafe];
      
      //Medic LVL
      _tmp = _queryResult select 5;
      _queryResult set[5,[_tmp] call DB_fnc_numberSafe];
      
      //Polizei LVL
      _tmp = _queryResult select 6;
      _queryResult set[6,[_tmp] call DB_fnc_numberSafe];
      
      //Ziv Lizenzen
      _new = [(_queryResult select 8)] call DB_fnc_mresToArray;
      if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
      _queryResult set[8,_new];
      
      //Convert tinyint to boolean
      _old = _queryResult select 8;
      for "_i" from 0 to (count _old)-1 do {
          _data = _old select _i;
          _old set[_i,[_data select 0, ([_data select 1,1] call DB_fnc_bool)]];
      };
      _queryResult set[8,_old];
      
      _queryResult set[9,([_queryResult select 9,1] call DB_fnc_bool)];
      
      //Gear
      _new = [(_queryResult select 10)] call DB_fnc_mresToArray;
      if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
      _queryResult set[10,_new];
      
      //Statistiken
      _new = [(_queryResult select 11)] call DB_fnc_mresToArray;
      if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
      _queryResult set[11,_new];
      
      //Alive
      _queryResult set[12,([_queryResult select 12,1] call DB_fnc_bool)];
      
      //Position
      _new = [(_queryResult select 13)] call DB_fnc_mresToArray;
      if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
      _queryResult set[13,_new];
      
      //Playtime
      _new = [(_queryResult select 14)] call DB_fnc_mresToArray;
      if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
      _index = TON_fnc_playtime_values_request find [_uid, _new];
      if (_index != -1) then {
          TON_fnc_playtime_values_request set[_index,-1];
          TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
          TON_fnc_playtime_values_request pushBack [_uid, _new];
      } else {
          TON_fnc_playtime_values_request pushBack [_uid, _new];
      };
      [_uid,_new select 2] call TON_fnc_setPlayTime;
      
      
      /* Make sure nothing else is added under here */
      _houseData = _uid spawn TON_fnc_fetchPlayerHouses;
      waitUntil {scriptDone _houseData};
      _queryResult pushBack (missionNamespace getVariable [format ["houses_%1",_uid],[]]);
      _gangData = _uid spawn TON_fnc_queryPlayerGang;
      waitUntil{scriptDone _gangData};
      _queryResult pushBack (missionNamespace getVariable [format ["gang_%1",_uid],[]]);
      
      publicVariable "TON_fnc_playtime_values_request";
      
      _keyArr = missionNamespace getVariable [format ["%1_KEYS_%2",_uid,_side],[]];
      _queryResult pushBack _keyArr;
      
      _queryResult remoteExec ["SOCK_fnc_requestReceived",_ownerID];
      Alles anzeigen

      ich gucke morgen mal drüber grade bin ich zu müde xD

      Mit freundlichen Grüßen,

      Julian


      Bitte erst Denken und dann Fragen


      Hier lesen: das Heilige Buch der Arma3 Scripter

    • Julian
      Nerd
      Reaktionen
      76
      Trophäen
      8
      Beiträge
      820
      • 27. Mai 2018 um 14:46
      • #13

      Hast du die Datei einfach aus dem Ordner genommen ?

      Mit freundlichen Grüßen,

      Julian


      Bitte erst Denken und dann Fragen


      Hier lesen: das Heilige Buch der Arma3 Scripter

    • NiceKype
      Profi
      Reaktionen
      554
      Trophäen
      9
      Beiträge
      996
      Dateien
      1
      Bilder
      62
      • 27. Mai 2018 um 15:03
      • #14

      Ja, habe sie aber editiert weil da Sachen drin waren die da drinne bleiben müssen :D

      𝗡𝗜𝗖𝗘𝗞𝗬𝗣𝗘 // 𝗧𝗜𝗠𝗢

      ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
      MEINE LINKS:

      Have Fun, stay Nice
      ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

    • Jonas2K
      Anfänger
      Reaktionen
      4
      Trophäen
      8
      Beiträge
      90
      • 27. Mai 2018 um 15:05
      • #15

      Na wenn du sie editiert hast dann ist es ja nicht die gleiche. Und ohne vollständige Datei kann dir niemand helfen.

    • NiceKype
      Profi
      Reaktionen
      554
      Trophäen
      9
      Beiträge
      996
      Dateien
      1
      Bilder
      62
      • 27. Mai 2018 um 15:06
      • #16

      Das ist die vollständige Datei, nur mit einer Zusatzzeile......

      Sonst hätte ich noch einen Fehler auf dem Server.

      𝗡𝗜𝗖𝗘𝗞𝗬𝗣𝗘 // 𝗧𝗜𝗠𝗢

      ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
      MEINE LINKS:

      Have Fun, stay Nice
      ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

    • Julian
      Nerd
      Reaktionen
      76
      Trophäen
      8
      Beiträge
      820
      • 27. Mai 2018 um 15:14
      • #17

      Du musst die komplette Datei anpassen also liest du jede Zeile und editierst sie ....

      Mit freundlichen Grüßen,

      Julian


      Bitte erst Denken und dann Fragen


      Hier lesen: das Heilige Buch der Arma3 Scripter

    • NiceKype
      Profi
      Reaktionen
      554
      Trophäen
      9
      Beiträge
      996
      Dateien
      1
      Bilder
      62
      • 27. Mai 2018 um 15:22
      • #18

      Ich wüsste halt nicht was da noch anzupassen wäre...

      𝗡𝗜𝗖𝗘𝗞𝗬𝗣𝗘 // 𝗧𝗜𝗠𝗢

      ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
      MEINE LINKS:

      Have Fun, stay Nice
      ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

    • Julian
      Nerd
      Reaktionen
      76
      Trophäen
      8
      Beiträge
      820
      • 27. Mai 2018 um 15:24
      • #19

      Auf deine DB und deinen restlichen Server

      Mit freundlichen Grüßen,

      Julian


      Bitte erst Denken und dann Fragen


      Hier lesen: das Heilige Buch der Arma3 Scripter

    • NiceKype
      Profi
      Reaktionen
      554
      Trophäen
      9
      Beiträge
      996
      Dateien
      1
      Bilder
      62
      • 27. Mai 2018 um 15:28
      • #20

      Nein ich meinte ich habe alles editiert was editiert werden musste, ich wüsste nicht was noch bearbeitet werden müsste...

      𝗡𝗜𝗖𝗘𝗞𝗬𝗣𝗘 // 𝗧𝗜𝗠𝗢

      ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
      MEINE LINKS:

      Have Fun, stay Nice
      ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

    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™