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
Fr: 16 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] Der Umgang mit ExtDB3 & MySQL

      • Altis Life
    • Joe Barbaro
    • 14. Juli 2019 um 17:44
    • Joe Barbaro
      Nerd
      Reaktionen
      199
      Trophäen
      8
      Beiträge
      688
      • 14. Juli 2019 um 17:44
      • #1

      Moin Liebe Native Network Community,

      da ich im erweiterten Rahmen kein Tut gefunden habe, und ich damals gerne eins gehabt hätte verfasse ich hiermit eins.

      Dieses Tut wird sich im ersten Part um das grundsätzliche arbeiten mit MySQL Datenbanken drehen.

      Im zweiten Part gehe ich die Verwendung in Altis Life ein.

      Im dritten Part werde ich mit Hilfe von blackfisch auf die Nutzung von SQL-Custom eingehen.


      Ich möchte hiermit darauf hinweisen, dass ich keine IT-Ausbildung mache. Dies ist der Stand meines Wissens.

      Wenn sich Fehler einschleichen würde ich um eine sachliche Verbesserung bitten.

      Da ich mir nicht sicher bin, in welchen Bereich das Thema gehört, habe ich das hierhin gepostet.

      Wenn das Falsch war bitte ich um Nachsicht.

      Dieses Tutorial darf nicht ohne mein Einverständnis woanders gepostet werden.

      !!!WICHTIG: Ich setze für dieses Tutorial Vorwissen in Funktionen definieren , RemoteExec und weiteren Sachen voraus!!!!

      Viel Spaß

      Part 1 ~SQL Syntax und etwas allgemeines~

      Schritt 1 ~Die Verwendungsmöglichkeiten (Syntax)~

      Voraus eine kurze Erklärung. Es gibt 4+1 Kern SQL Befehle.

      SQL Befehle

      SELECT ist dafür zuständig Sachen zu lesen.

      UPDATE ist fürs "überschreiben/updaten" zuständig.

      INSERT ist dafür da neue Werte in eine Tabelle zu schreiben.

      DELETE ist für das löschen einer Zeile da.

      REPLACE funktioniert ähnlich wir INSERT und "updated" quasi die ganze Zeile bzw überschreibt die ganze Zeile

      ~Die Ausgangssituation~

      Beispieltabelle

      In dieser Tabelle (tutorial) Haben wir 2 Spalten. Die erste heißt wert 1 und die 2te wert 2. Die erste hat als Datentyp INT was für Integer steht. Dieser Dateityp arbeitet nur mit Zahlen. Die Aufgabe dieser Spalte ist das AUTO_INCREMENT.

      Das bedeutet das Pro Insert die nächst höhere Zahl eingesetzt wird.

      Beispiel

      Die 2te Spalte hat den Datentyp VARCHAR. Dieser Dateityp arbeitet mit Strings bzw Text generell. Hier haben wir keinen Standardwert gesetzt und erlauben auch nicht NULL als Standardwert.

      Das wars hier mit der Ausgangssituation.

      So fangen wir an mit INSERT.

      Insert
      SQL
      INSERT INTO tutorial (wert2) VALUES('Joe Barbaro')

      Als nächstes kümmern wir uns um SELECT.

      Select
      SQL
      SELECT wert2 FROM tutorial WHERE wert1='1'

      Dann kommen wir zu UPDATE.

      Update
      SQL
      UPDATE tutorial SET wert2='Boe Jarbaro' WHERE wert1='1'

      Und zu gut allerletzt zu DELETE.

      Delete
      SQL
      DELETE FROM tutorials WHERE wert1='1'

      Als nächstes kümmern wir uns um REPLACE.

      Replace

      Bild+Beispiel kommt von Henne INFO: Beim Testen in der Beispiel Tabelle gab es Probleme mit AUTO_INCREMENT. (Mehr Infos zu REPLACE -->Dokumentation<--)

      SQL
      Replace INTO tutorial (uid,name,rank,ranks,kit,moneycash,moneybank,thirst,hunger,health,licenses,parole,prison,needRespawn,admin) VALUES('76561198010416315','Henne',['civ','civ',0],[['civ','civ',0]],[['civ','civ',1]],100000000,50000,100,100,100,[],0,0,0,99)

      Das erstmal für´s allgemeine.

      Part 2 ~Die Benutzung von ExtDB3 in Altis Life~

      Ausgangssituation: Wir möchten Ingame die DB ID des Clients abfragen. Dies machen wir beispielsweise mal mit einem Hint. Hierbei handelt es sich um ein hoffentlich leicht zu verstehendes Beispiel. Hier wird nicht auf Performance o.Ä. geachtet.

      Zunächst erstellen wir eine Funktion mit dem Namen fn_SendtoServer.sqf. Diese wird dann mit folgendem Inhalt gefüllt.

      Code: fn_SendtoServer.sqf.
      /*
      Author: Joe Barbaro
      Description: Daten werden zum Server geschickt
      */
      
      private _PID = getplayerUID player;
      
      [_PID] remoteExec ["TON_fnc_DBID",2];

      Dann erstellen wir im Life_Server eine neue Function mit dem Namen fn_DBID.sqf.

      Code: fn_DBID.sqf
      /*
      Author: Joe Barbaro
      Description: MySQL Abfrage für den Client
      */
      
      params [
      ["_pid","",[""]]
      ];
      
      
      _query = format ["SELECT uid FROM players WHERE pid='%1'",_pid];
      _queryResult = [_query,2] call DB_fnc_asyncCall;
      
      [_queryResult] remoteExec ["life_fnc_ClientReturn",remoteExecutedOwner];
      Alles anzeigen

      Dann erstellen wir noch die Funktion die der Client ausführen soll. Diese nenen wir mal fn_ClientReturn.sqf

      Code: fn_ClientReturn.sqf
      /*
      Author: Joe Barbaro
      Description: Empfängt den Return aus der DB
      */
      
      params [
      "_DBID"
      ];
      
      hint format ["DatenbankID = %1",_DBID];

      Hierbei müssen die fn_DBID.sqf und die fn_ClientReturn in der CfgRemoteExec.hppfolgendermaßen definiert werden.

      Code
      F(TON_fnc_DBID,SERVER)
      F(life_fnc_ClientReturn,SERVER)

      Natürlich auch noch in der Functions.hpp folgendermaßen definieren.

      Code
      class ClientReturn{};
      class SendToServer{};

      Jetzt noch ein kleiner Zusatz zu fn_AsyncCall.sqf Danke an TaktischerSpeck der mich darauf aufmerksam gemacht hat.

      Code
      Parameters: 0: STRING (Query to be ran).
       1: INTEGER (1 = ASYNC + not return for update/insert,
       2 = ASYNC + return for query's).
       3: BOOL (True to return a single array, false to return multiple entries mainly for garage).
      ---------------------------------------------------------------------------------------------------
      Das heißt im Klartext:
      1 = Wird für Insert und Update benutzt
      2 = Wird für Select benutzt + gibt was zurück (logisch ne :D)
      Wenn ihr mehrere Sachen selecten wollt, müsst ihr das so schreiben: [_query,2,true] call DB_fnc_asyncCall. 
      Das ist der Multiarray Support von ExtDB3. Anderenfalls werdet ihr nur den ersten Wert bzw. die Werte der ersten Zeile returned kriegen.

      ~SQL Custom~ Hier geht <3 raus an blackfisch

      Zitat


      SQLCustom hat aber weiterhin den Vorteil, dass ich gleiche Querys nur einmal zentral definieren muss. Damit verhindere ich (A) SQL-Injection, (B) falsche Parametrisierung, (C) "Schusselfehler" die entstehen, wenn man eine Query überarbeitet aber die gleiche Query in einer anderen Datei nicht editiert. Die Lösung heißt SQLCustom.

      Hier ein Beispiel

      Beispiel
      Code
      Hier erstmal das Statement ohne SQL-Custom
      
      _query = format["SELECT uid, name, bankacc FROM players WHERE uid='%1'","01234567891234567"];
      [_query, 2] spawn DB_fnc_asyncCall;
      Code
      Jetzt mit Verwendung von SQL-Custom
      
      _query = format["selectBank:%1","01234567891234567"];
      [_query, 2] spawn DB_fnc_asyncCall;

      Zur Erklärung: Mit vorgefertigten SQL-Statements sparen wir uns die Sachen immer wieder zu schreiben. Zudem ist mit dieser Methode klar festgelegt, was abgefragt/geupdated/Inserted werden darf. Dies verhindert z.B das Löschen einer Datenbank durch Hacker etc mittels SQL-Injection.

      Damit SQL-Custom funktioniert muss eine INI angelegt werden, in der die SQL Statements definiert werden.

      Code
      [selectBank] --Bezeichner, der Später im Script verwendet wird
      SQL1_1 = SELECT uid, name, bankacc FROM players WHERE uid=?; --die Query, ? sind Parameter
      SQL1_INPUTS = 1-string --Input Parameter in Reihenfolge des Auftretens oben
      OUTPUT = 1, 2, 3 //Output in der Reihenfolge des Auftretens

      Für die genaue Informationen über ExtDB3 hier ein Link zum Wiki -->ExtDB 3 Wiki<--


      Ich hoffe ich habe nichts vergessen.

      Ebenfalls hoffe ich, dass ich euch die Welt der Datenbanken und den Umgang mit ExtDB3 etwas näher bringen konnte.

      Für Fragen und Verbesserungsvorschläge bin ich natürlich offen und freue mich auf eurer Feedback.

      Es gibt noch die Möglichkeit mit SQL-Custom bzw. prepared Statements zu nutzen. Dies ist eine weitere Möglichkeit ExtDB3 zu nutzen.

      Da ich keine Erfahrung damit habe würde ich dies wenn ich ein Beispiel hat nachreichen.


      Mit freundlichen Grüßen

      Joe Barbaro

      Entwickler vom Arma 3 Batch Generator


      9 Mal editiert, zuletzt von Joe Barbaro (27. Juli 2019 um 14:38)

    • Henne
      Nerd
      Reaktionen
      155
      Trophäen
      7
      Beiträge
      840
      Bilder
      7
      • 14. Juli 2019 um 18:43
      • #2

      Schön das du eine Anleitung machst wie man extDB3 nutzen kann, sie wird mit Sicherheit einigen hilfreich sein.

      Allerdings ist sie mir noch ein wenig zu mager um die vollen Funktionen von extDB3 zu erklären. ;)

      Daher möchte ich doch etwas anmerken.

      1. Was ist mit dem Befehl REPLACE? Denn in deiner Auflistung sollte er nicht fehlen.
        REPLACE arbeitet ähnlich wie INSERT, allerdings wird ein (möglicherweiße) vorhandener Eintrag ersetzt (anhand der Uniquewerten). Auf eine ID mit AUTO_INCREMENT sollte verzichtet werden. Da ein Spieler eine UID besitzt, kann bei Spielern sowieso darauf verzichtet werden.
        Je nach Anwendungsgebiet ist der Befehl sinnvoll, da nicht zuvor geprüft werden muss, ob nun INSERT oder UPDATE verwendet werden muss.
      2. Die Verlinkung zu der extDB3-Seite sollte deutlich sichtbar sein.
        Auch wäre eine direkte Verlinkung zur Dokumentation schön. ;)
      3. Wenn es darum geht extDB3 für ein anderes Projekt zu verwenden, sollte erwähnt werden, dass wenn einfach der Code aus dem Life-Server kopiert wird, man sich weiterhin an die geltende Lizenz halten muss.
        Ich erwarte dann auch eigentlich, dass selber eine Verbindung erstellt wird und erklärt wird welche Zeile was macht und warum diese benötigt wird.
      4. Im Part 3, ist der Clientseitige Code "unvollständig".
        Denn wenn die Datenbank-Verbindung aufgebaut wurde, bekommt der Spieler keine Meldung. Wenn der Datenbank-Verbindung nicht aufgebaut werden konnte, bekommt der Spieler die Meldung Datenbank verbindung wird hergestellt.
        Ich empfinde so etwas als "sinnvoller":
      Code
      999999 cutFadeOut 99999999;
      999999 cutText ["Datenbank-Verbindung wird hergestellt","BLACK FADED"];
      waitUntil {!isNil "extDB_notLoaded"};
      if (extDB_notLoaded) exitWith {
          999999 cutText ["Datenbank-Verbindung konnte nicht hergestellt werden","BLACK FADED"]
      };
      999999 cutText ["Datenbank-Verbindung wurde hergestellt","BLACK FADED"];


      Ich möchte anmerken, mein Ziel ist es nicht deine Initiative hier eine Anleitung zu extDB3 zu erstellen schlecht zu reden. ;)

    • Joe Barbaro
      Nerd
      Reaktionen
      199
      Trophäen
      8
      Beiträge
      688
      • 14. Juli 2019 um 19:50
      • #3

      #Updated ExtDB3 für andere Frameworks vorrübergehend entfernt. Danke Henne


      Mit freundlichen Grüßen

      Joe Barbaro

      Entwickler vom Arma 3 Batch Generator


    • Krypton91
      Schüler
      Reaktionen
      10
      Trophäen
      7
      Beiträge
      154
      • 14. Juli 2019 um 22:43
      • #4

      Echt super erklärt!

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

      Projektleitung bei http://forum.planb-life.com

      teamspeak: ts.planb-life.com

    • Joe Barbaro
      Nerd
      Reaktionen
      199
      Trophäen
      8
      Beiträge
      688
      • 15. Juli 2019 um 15:08
      • #5

      #Updated

      Entwickler vom Arma 3 Batch Generator


    • TaktischerSpeck
      Profi
      Reaktionen
      292
      Trophäen
      9
      Beiträge
      1.211
      Dateien
      6
      Bilder
      35
      • 27. Juli 2019 um 12:15
      • #6

      Ich würde für anfänger noch das hier hinzufügen bzw umschreiben und anmerken.

      (Hiermit beziehe ich mich darauf wie ich es verstehe bzw glaube es verstanden zu haben)

      Die Funktion DB_fnc_asyncCall bekommt Parameter überliefert, in dem fall _query und einen mode welcher durch folgenden möglichen zahlen definiert wird: 0,1,2,3 (in unserem beispiel 2)

      _queryResult = [_query,2] call DB_fnc_asyncCall;

      Diese zahlen verkörpern den mode der anfrage / antwort

      Somit ist eine 0 einfach ein String und somit ein Query welcher aber kein return hat.

      Die 1 ist ein Integer welche für Update und Insert benutzt wird, hierbei gibt es keinen return

      Die 2 wäre für Querys welche ein Return benötigen

      Die 3 ist ein Boolean und returnt arrays

      Spoiler anzeigen

      Parameters: 0: STRING (Query to be ran). 1: INTEGER (1 = ASYNC + not return for update/insert, 2 = ASYNC + return for query's). 3: BOOL (True to return a single array, false to return multiple entries mainly for garage).


      Mir ist klar das ist da oben recht holperig geschrieben aber das ist was ich mich gefragt hab, was macht diese verdammt zahl

      Mit freundlichen Grüßen

      TaktischerSpeck - Vincent

      2945262602.gif

      Leidenschaftlicher Analphabet mit leichtem Drang zum Sabbern.

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

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

      2945262602.gif

      Kontaktmöglichkeiten

      Twitch

      Youtube

      Steam

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

      --alternativ--

      Ts.TheLastGamer.de

      Website

      Forum

      E-Mail: [email protected]

      Twitch

      Youtube

      Steam

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

      --alternativ--

      Ts.TheLastGamer.de

      Website

      Forum

      E-Mail: [email protected]

    • Joe Barbaro
      Nerd
      Reaktionen
      199
      Trophäen
      8
      Beiträge
      688
      • 27. Juli 2019 um 12:48
      • #7
      Zitat von TaktischerSpeck

      Ich würde für anfänger noch das hier hinzufügen bzw umschreiben und anmerken.

      (Hiermit beziehe ich mich darauf wie ich es verstehe bzw glaube es verstanden zu haben)

      Die Funktion DB_fnc_asyncCall bekommt Parameter überliefert, in dem fall _query und einen mode welcher durch folgenden möglichen zahlen definiert wird: 0,1,2,3 (in unserem beispiel 2)

      _queryResult = [_query,2] call DB_fnc_asyncCall;

      Diese zahlen verkörpern den mode der anfrage / antwort

      Somit ist eine 0 einfach ein String und somit ein Query welcher aber kein return hat.

      Die 1 ist ein Integer welche für Update und Insert benutzt wird, hierbei gibt es keinen return

      Die 2 wäre für Querys welche ein Return benötigen

      Die 3 ist ein Boolean und returnt arrays

      Spoiler anzeigen

      Parameters: 0: STRING (Query to be ran). 1: INTEGER (1 = ASYNC + not return for update/insert, 2 = ASYNC + return for query's). 3: BOOL (True to return a single array, false to return multiple entries mainly for garage).


      Mir ist klar das ist da oben recht holperig geschrieben aber das ist was ich mich gefragt hab, was macht diese verdammt zahl

      Alles anzeigen

      Werde Ich später einfügen;)

      Entwickler vom Arma 3 Batch Generator


    • Chase McCain
      Gast
      • 30. Januar 2020 um 16:15
      • #8

      hey hab alles wie oben gemacht aber wie kann ich mit den parm _dbid in anderen datein wie eine statusbar einbauen

    • Deathman
      Profi
      Reaktionen
      259
      Trophäen
      10
      Beiträge
      676
      Dateien
      12
      Bilder
      106
      • 30. Januar 2020 um 16:17
      • #9

      in dem du auf die datei eine remoteexec machst

    • Chase McCain
      Gast
      • 30. Januar 2020 um 16:18
      • #10

      wie geht das nochmal

    • Deathman
      Profi
      Reaktionen
      259
      Trophäen
      10
      Beiträge
      676
      Dateien
      12
      Bilder
      106
      • 30. Januar 2020 um 21:05
      • #11

      Sieht dann so aus in der life_server

      C
      /*
      Author: Joe Barbaro
      Description: MySQL Abfrage für den Client
      */
      params [
      ["_pid","",[""]]
      ];
      _query = format ["SELECT uid FROM players WHERE pid='%1'",_pid];
      _queryResult = [_query,2] call DB_fnc_asyncCall;
      [_queryResult] remoteExec ["life_fnc_hudUpdate",remoteExecutedOwner];

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 30. Januar 2020 um 23:11
      • #12

      aber das kann man auch direkt in die queryrequest und requestreceive einbauen dazu muss man nicht nochmal extra die db befragen 8o

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • Deathman
      Profi
      Reaktionen
      259
      Trophäen
      10
      Beiträge
      676
      Dateien
      12
      Bilder
      106
      • 31. Januar 2020 um 08:06
      • #13

      ja gebe ich dir auch recht, ich mag es aber so

    • Chase McCain
      Gast
      • 31. Januar 2020 um 12:37
      • #14

      Asuu danke fürs nächste mal weis ich es

    • AtrixZockt
      Schüler
      Reaktionen
      9
      Trophäen
      9
      Beiträge
      141
      Bilder
      12
      • 3. April 2020 um 00:39
      • #15

      woher weiß die "_DBID" was sie ist also was dann im hint stehen muss?

    • Joe Barbaro
      Nerd
      Reaktionen
      199
      Trophäen
      8
      Beiträge
      688
      • 3. April 2020 um 00:51
      • #16

      Man könnte auch schreiben

      Code
      private _DBID = _this select 0;

      Entwickler vom Arma 3 Batch Generator


    • AtrixZockt
      Schüler
      Reaktionen
      9
      Trophäen
      9
      Beiträge
      141
      Bilder
      12
      • 3. April 2020 um 01:18
      • #17

      "extDB3: Protocol Error: [0,""Error MariaDBQueryException Exception""]"

      ich glaub ich hab einen fehler gemacht

      Code: fn_requestbitcoin.sqf
      params [
      ["_pid","",[""]]
      ];
      
      
      _query = format ["SELECT pid, bitcoin FROM players WHERE pid='%1'",_pid];
      _queryResult = [_query,2] call DB_fnc_asyncCall;
      [_queryResult] remoteExec ["digi_bitcoin_fnc_checkbitcoin",remoteExecutedOwner];
      Code: fn_checkbitcoin.sqf
      private _DBID = _this select 0;
      
      hint format ["Bitcions = %1",_DBID];
      Code: auszug aus der datei die das ganze startet
      private _PID = getplayerUID player;
          [_PID] remoteExec ["DB_fnc_requestbitcoin",2];

      DB:

      rrwvyl

    • Joe Barbaro
      Nerd
      Reaktionen
      199
      Trophäen
      8
      Beiträge
      688
      • 3. April 2020 um 01:29
      • #18

      Mach doch dazu lieber nen neuen Post auf ich helfe gerne:P

      Entwickler vom Arma 3 Batch Generator


    • AtrixZockt
      Schüler
      Reaktionen
      9
      Trophäen
      9
      Beiträge
      141
      Bilder
      12
      • 3. April 2020 um 01:36
      • #19

      oh sry dachte ich wäre noch in meinem post von vorhin sry xD

    • JohnWhite
      Anfänger
      Trophäen
      4
      Beiträge
      31
      Dateien
      1
      • 4. Mai 2022 um 18:58
      • #20

      Wo muss den welche datei genau hin ? Wenn ich es richtig verstehe muss man das machen damit die Spieler nicht mehr Manuel sondern automatisch in die Datenbank eingetragen werden?

      http://www.KRAlife-RPG.org

    Registrieren oder Einloggen

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

    Benutzerkonto erstellen

    Tags

    • extBD3
    • extdb3 tutorial
    • mysql tutorial
    • extdb3 mysql

    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. Verhaltensregeln
    3. Datenschutzerklärung
    4. Impressum
    5. Urheberrechts- oder Lizenzverstoß melden
  • Trimax Design coded & layout by Gino Zantarelli 2023-2025©
    Community-Software: WoltLab Suite™