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: 15 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] Arma 3 Database Log System

      • Altis Life
    • Joe Barbaro
    • 10. Juni 2019 um 15:43
    • Joe Barbaro
      Nerd
      Reaktionen
      199
      Trophäen
      8
      Beiträge
      688
      • 10. Juni 2019 um 15:43
      • #1

      Liebe NN-Community,

      hiermit veröffentliche ich mein DB-Log System.

      Dieses erspart euch ständig RPT´s welzen oder z.B A3_Log oder ähnliches nutzen zu müssen.

      (Bitte macht wegen dem letzten Satz kein Fass auf)

      So legen wir mal los

      Es sei jedoch vorher gesagt: Veränderungen erlaubt, jedoch MUSS der Author Tag stehen bleiben! Das verbreiten auf anderen Seiten ist ohne mein schriftliches Einverständnis VERBOTEN!

      Jetzt aber zum Tutorial:

      Schritt 1:

      Wir gehen in den @Life_Server dort erstellen wir im Ordner Functions\MySQL eine Datei mit dem Namen fn_AdvancedLog.sqfmit folgendem Inhalt

      Code
      /*
          Author: Joe Barbaro
          Description: Advanced Database logging System
      
          Syntax: 
          _PID = playerid des Spielers | String
          _LogTitle = kurze Beschreibung was geloggt wird | String
          _Log = Der Log an sich | String 
      
      */
      
      params [
      ["_PID","",[""]],
      ["_LOGTitle","",[""]],
      ["_LOG","",[""]]
      ];
      
      
      _query = format ["INSERT INTO playerlogs (playerID,logTitle,log) VALUES('%1','%2','%3')",_PID,_LOGTitle,_LOG];
      [_query,1] call DB_fnc_asyncCall;
      Alles anzeigen

      Schritt 2:

      danach definieren wir die Funktion in der config.cpp. Dort fügen wir class AdvancedLog {}; hinzu. Das sollte dann so aussehen

      Code
      class MySQL_Database {
              tag = "DB";
              class MySQL
              {
                  file = "\life_server\Functions\MySQL";
                  class numberSafe {};
                  class mresArray {};
                  class queryRequest{};
                  class asyncCall{};
                  class insertRequest{};
                  class updateRequest{};
                  class mresToArray {};
                  class insertVehicle {};
                  class bool {};
                  class mresString {};
                  class updatePartial {};
                  class AdvancedLog {};
              };
          };
      Alles anzeigen

      Jetzt sind wir im @Life_Server fertig

      Schritt 3:

      Jetzt definieren wir die Funktion in der CfgRemoteExec.hpp dise befindet sich im Hauptordner des Altis Life Client Repos(AltisLife.Altis)

      Dort fügen wir unter Server folgendes ein F(DB_fnc_AdvancedLog,SERVER) das sollte dann so aussehen

      Code
      F(BIS_fnc_execVM,SERVER)
             F(BIS_fnc_execVM,SERVER)
              F(DB_fnc_insertRequest,SERVER)
              F(DB_fnc_queryRequest,SERVER)
              F(DB_fnc_updatePartial,SERVER)
              F(DB_fnc_updateRequest,SERVER)
              F(life_fnc_jailSys,SERVER)
              F(life_fnc_wantedAdd,SERVER)
              F(life_fnc_wantedBounty,SERVER)
              F(life_fnc_wantedCrimes,SERVER)
              F(life_fnc_wantedFetch,SERVER)
              F(life_fnc_wantedProfUpdate,SERVER)
              F(life_fnc_wantedRemove,SERVER)
              F(SPY_fnc_cookieJar,SERVER)
              F(SPY_fnc_observe,SERVER)
              F(TON_fnc_addContainer,SERVER)
              F(TON_fnc_addHouse,SERVER)
              F(TON_fnc_chopShopSell,SERVER)
              F(TON_fnc_cleanupRequest,SERVER)
              F(TON_fnc_deleteDBContainer,SERVER)
              F(TON_fnc_getID,SERVER)
              F(TON_fnc_getVehicles,SERVER)
              F(TON_fnc_insertGang,SERVER)
              F(TON_fnc_keyManagement,SERVER)
              F(TON_fnc_manageSC,SERVER)
              F(TON_fnc_pickupAction,SERVER)
              F(TON_fnc_removeGang,SERVER)
              F(TON_fnc_sellHouse,SERVER)
              F(TON_fnc_sellHouseContainer,SERVER)
              F(TON_fnc_spawnVehicle,SERVER)
              F(TON_fnc_spikeStrip,SERVER)
              F(TON_fnc_updateGang,SERVER)
              F(TON_fnc_updateHouseContainers,SERVER)
              F(TON_fnc_updateHouseTrunk,SERVER)
              F(TON_fnc_vehicleCreate,SERVER)
              F(TON_fnc_vehicleDelete,SERVER)
              F(TON_fnc_vehicleStore,SERVER)
              F(TON_fnc_vehicleUpdate,SERVER)
              F(TON_fnc_handleBlastingCharge,SERVER)
              F(TON_fnc_houseGarage,SERVER)
              F(DB_fnc_AdvancedLog,SERVER)
      Alles anzeigen

      Schritt 4:

      Als letztes fügen wir die neue Tabelle in unsere Datenbank hinzu. Hierfür führen wir folgenden Code in der Datenbank aus

      Code
      CREATE TABLE `playerlogs` (
          `logID` INT(11) NOT NULL AUTO_INCREMENT,
          `playerID` VARCHAR(17) NULL DEFAULT NULL,
          `logTitle` VARCHAR(255) NULL DEFAULT NULL,
          `log` VARCHAR(255) NULL DEFAULT NULL,
          `logTimeStamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
          PRIMARY KEY (`logID`)
      )
      COLLATE='utf8mb4_general_ci'
      ENGINE=InnoDB
      AUTO_INCREMENT=1
      ;
      Alles anzeigen

      Danach sollte sich eine neue Tabelle in unserer Datenbanknames playerlogs erstellt haben.

      Schritt 5:

      Jetzt noch ein Fixes Anwendungsbeispiel für die neue Log Funktion (Das habe ich so getestet ^^)

      Code
      [getPlayerUID player, "TEST-Log", format ["%1 hat die Log Funktion mit Params getestet!",name player]] remoteExec ["DB_fnc_AdvancedLog",2];

      Das sieht in der Datenbank dann z.B so aus

      Bild

      Das wars schon ;)

      Ich hoffe es hilft euch.

      Es sollte alles so wie im Tutorial gezeigt funktionieren.

      Wenn ihr Probleme habt schreibt es hier runter.


      Mit freundlichen Grüßen

      Joe Barbaro

      Entwickler vom Arma 3 Batch Generator


      Einmal editiert, zuletzt von Joe Barbaro (10. Juni 2019 um 18:26)

    • flippa
      Fortgeschrittener
      Reaktionen
      30
      Trophäen
      8
      Beiträge
      319
      • 10. Juni 2019 um 18:22
      • #2

      Hi,

      ich habe grad versucht das einzufügen, jedoch scheitere ich kläglich daran.

      Folgender Fehler steht im RPT Log

      Code
      2019/06/10, 18:19:05 Error in expression <",_PID,_LOGTitle,_LOG];
      [_query,1] call SS_fnc_asyncCall;>
      2019/06/10, 18:19:05   Error position: <SS_fnc_asyncCall;>
      2019/06/10, 18:19:05   Error Undefined variable in expression: ss_fnc_asynccall
      2019/06/10, 18:19:05 File \life_server\Functions\MySQL\fn_AdvancedLog.sqf [DB_fnc_AdvancedLog], line 15

      Dazu spammt Arma jetzt meinen Client Log mit folgendem zu

      Code
      Bad conversion: scalar

      Dateien

      arma3server_2019-06-10_18-12-54.rpt 387,47 kB – 205 Downloads fn_AdvancedLog.sqf 443 Byte – 214 Downloads Arma3_x64_2019-06-10_18-13-28.rpt 654,79 kB – 214 Downloads
    • Joe Barbaro
      Nerd
      Reaktionen
      199
      Trophäen
      8
      Beiträge
      688
      • 10. Juni 2019 um 18:25
      • #3
      Zitat von PeterMayer

      Hi,

      ich habe grad versucht das einzufügen, jedoch scheitere ich kläglich daran.

      Folgender Fehler steht im RPT Log

      Code
      2019/06/10, 18:19:05 Error in expression <",_PID,_LOGTitle,_LOG];
      [_query,1] call SS_fnc_asyncCall;>
      2019/06/10, 18:19:05   Error position: <SS_fnc_asyncCall;>
      2019/06/10, 18:19:05   Error Undefined variable in expression: ss_fnc_asynccall
      2019/06/10, 18:19:05 File \life_server\Functions\MySQL\fn_AdvancedLog.sqf [DB_fnc_AdvancedLog], line 15

      Dazu spammt Arma jetzt meinen Client Log mit folgendem zu

      Code
      Bad conversion: scalar

      Da muss ich leider korregieren das heißt natürlich DB_fnc_AsyncCall.

      Danke für den Report wurde im Tut geändert:P

      Für die dies juckt SS steht für ServerSide. Wollts nur mal erwähnt haben.


      Mit freundlichen Grüßen

      Joe Barbaro

      Entwickler vom Arma 3 Batch Generator


    • flippa
      Fortgeschrittener
      Reaktionen
      30
      Trophäen
      8
      Beiträge
      319
      • 10. Juni 2019 um 18:37
      • #4

      Jo danke :)

      Jetzt geht alles

    • BlueType
      Nerd
      Reaktionen
      190
      Trophäen
      8
      Beiträge
      735
      Bilder
      27
      • 31. Juli 2019 um 00:04
      • #5

      Wenn jemand die Möglichkeit haben möchte das auf ner Website ausgelesen zu bekommen kann mir ne PN schreiben. Hatte grade Langeweile und hab da was gebastelte :)

      MFG ƁLƱΣƬΨƤΣ™

      :!:Hinweis:!:

      :!:Ich bin zwar erfahren mit der Sprache SQF, lerne trotzdem noch, definitiv kein Profi:!:

      Discord : ╲⎝⧹⎝ƁLƱΣƬΨƤΣ™⎠⧸⎠╱#0448

      Discord Server : https://discord.gg/K8KhAnE

      Teamspeak : ts.Endless-Net.de

    • Joe Barbaro
      Nerd
      Reaktionen
      199
      Trophäen
      8
      Beiträge
      688
      • 31. Juli 2019 um 01:40
      • #6
      Zitat von BlueType

      Wenn jemand die Möglichkeit haben möchte das auf ner Website ausgelesen zu bekommen kann mir ne PN schreiben. Hatte grade Langeweile und hab da was gebastelte :)

      Poste es doch hier runter ;)

      Entwickler vom Arma 3 Batch Generator


    • apple123
      Anfänger
      Reaktionen
      4
      Trophäen
      6
      Beiträge
      65
      • 10. August 2019 um 00:39
      • #7

      Jetzt definieren wir die Funktion in der CfgRemoteExec.hpp dise befindet sich im Hauptordner des Altis Life Client Repos(AltisLife.Altis)

      i cant find it

    • Alice Kingsleigh
      Profi
      Reaktionen
      329
      Trophäen
      8
      Beiträge
      1.141
      • 10. August 2019 um 00:51
      • #8

      apple123 like I said before you have a complete overworked version of Altis Life 5.0 so you wouldn't find every file that are in the tutorials. You have to look up the original Framework and search through your files and look up what matches.

    • apple123
      Anfänger
      Reaktionen
      4
      Trophäen
      6
      Beiträge
      65
      • 10. August 2019 um 00:55
      • #9
      Zitat von Alice Kingsleigh

      [user ='14462'] apple123 [/ user]和Altis Life 5.0一样,所以你找不到教程中的任何文件。您必须查找原始框架并搜索文件并查找匹配的内容。

      ok,thanks a lot!

    • apple123
      Anfänger
      Reaktionen
      4
      Trophäen
      6
      Beiträge
      65
      • 10. August 2019 um 01:02
      • #10
      Zitat von Alice Kingsleigh

      apple123 like I said before you have a complete overworked version of Altis Life 5.0 so you wouldn't find every file that are in the tutorials. You have to look up the original Framework and search through your files and look up what matches.

      Kannst du mir sagen, welcher Ordner dieser Datei in 5.0 is t? Ich kann sie nicht finden, weil ich sie mit N ++ globaler Suche nicht finden kann.

    • Alice Kingsleigh
      Profi
      Reaktionen
      329
      Trophäen
      8
      Beiträge
      1.141
      • 10. August 2019 um 01:17
      • #11

      You have to download the framework here [click me] and look into the foldern and not in notepad ++, just for the future. The file you are looking for (CfgRemoteExec.hpp) is in the mission main folder.

    • apple123
      Anfänger
      Reaktionen
      4
      Trophäen
      6
      Beiträge
      65
      • 10. August 2019 um 01:23
      • #12
      Zitat von Alice Kingsleigh

      你必须在这里下载框架 [点击我]并查看折叠,而不是在记事本++中,只是为了将来。您要查找的文件(CfgRemoteExec.hpp)位于任务主文件夹中。

      thank you very much!<3

    • warsteiner
      Amateur
      Reaktionen
      20
      Trophäen
      11
      Beiträge
      257
      • 4. September 2019 um 16:46
      • #13

      Moin wie und was kann ich jetzt damit genau Loggen oder wie muss ich es machen das überhaupt etwas geloggt wird

    • Joe Barbaro
      Nerd
      Reaktionen
      199
      Trophäen
      8
      Beiträge
      688
      • 4. September 2019 um 19:38
      • #14

      Ich habe oben im Tutorial einen Schnipsel eingefügt, wie man das System verwenden kann.

      Code
      [getPlayerUID player, "TEST-Log", format ["%1 hat die Log Funktion mit Params getestet!",name player]] remoteExec ["DB_fnc_AdvancedLog",2];

      Du kannst es überall anwenden und mit allen Daten füttern, die Arma dir bietet.

      Wenn du ein wenig SQF kannst, solltest du diesen Schnipsel auf jedes deiner Wünsche umbauen können.


      Mit freundlichen Grüßen

      Joe Barbaro

      Entwickler vom Arma 3 Batch Generator


    • flippa
      Fortgeschrittener
      Reaktionen
      30
      Trophäen
      8
      Beiträge
      319
      • 4. September 2019 um 20:31
      • #15

      Ich hab das auch mal eingearbeitet, z.B. beim pickupMoney.

      Wenn der Money Log aktiviert ist, wird dort normalerweise folgendes ausgeführt:

      Auszug aus der fn_pickupMoney Zeile 31

      Code
      money_log = format [localize "STR_DL_ML_pickedUpMoney_BEF",[_value] call life_fnc_numberText,[BANK] call life_fnc_numberText,[CASH] call life_fnc_numberText];

      Daraus habe ich folgendes gemacht: (bei mir wird es in den normalen Log und in die DB geschrieben

      Code
      money_log = format [localize "STR_DL_ML_pickedUpMoney_BEF",[_value] call life_fnc_numberText,[BANK] call life_fnc_numberText,[CASH] call life_fnc_numberText]; //normaler Teil
      [getPlayerUID player, "MONEY-Log", format [localize "STR_DL_ML_pickedUpMoney_BEF",[_value] call life_fnc_numberText,[BANK] call life_fnc_numberText,[CASH] call life_fnc_numberText]] remoteExec ["DB_fnc_AdvancedLog",2];//DB LOG

      Was habe ich ganz einfach gemacht?

      Ich hab einfach den Code vom normalen genommen und Stumpf in den Code-Schnipsel eingefügt

      Also einfach den Schnipsel nehmen, den Namen ändern und den Codeteil des Standard Frameworks einsetzen.

      Also sozusagen das hier:

      Code
      format ["%1 hat die Log Funktion mit Params getestet!",name player]

      mit dem Schnipsel aus dem Framework ersetzen, in meinem Beispiel wäre das:

      Code
      format [localize "STR_DL_ML_pickedUpMoney_BEF",[_value] call life_fnc_numberText,[BANK] call life_fnc_numberText,[CASH] call life_fnc_numberText]

      Hoffe das kam irgendwie rüber wie ich es mir gedacht habe :D

    Registrieren oder Einloggen

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

    Benutzerkonto erstellen

    Ähnliche Themen

    • Exile auf Linux - Hilfe Command History Aufbau

      • Fyndor
      • 19. Mai 2019 um 16:37
      • Linux-Server
    • ArmA 3 BEC - Battleye Extended Controls

      • nox
      • 16. März 2019 um 15:48
      • Tutorials & Releases
    • Modded Fahrzeuge einparken nicht möglich

      • flippa
      • 5. Februar 2019 um 20:55
      • Hilfeforum
    • Server FPS/CPS sehr gering - Verschiedene Ursachen aufgelistet

      • TheFireRunner Felix
      • 6. Dezember 2018 um 20:14
      • Hilfeforum
    • extDB2 konnte nicht geladen werden </3

      • HaNiTLG
      • 26. Juni 2018 um 14:59
      • Hilfeforum

    Tags

    • Datenbank
    • Logs
    • Arma 3
    • Altislife
    • System

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