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
/*
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
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
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
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 ^^)
[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
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