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