Bonjour, et bienvenue sur ce tutoriel de création de logs avancée.
Ce système permet d'enregistrer les actions des joueurs dans une base de donnée, afin d'avoir des logs un peu plus précis et poussé
Ce tutoriel fait suite a la demande d'aide de Kurby
Comme ce système est long à mettre en place, nous traiterons seulement un fichier dans ce tutoriel
Pour commencer, dans le fichier CfgRemoteExec.hpp de votre mission ajoutez ceci :
Code:
F(TON_fnc_insertLog,SERVER)
Ensuite ajouter dans le config.cpp de votre life_server une nouvelle fonction en dessous de file = "\life_server\Functions\Systems"; :
Code:
class insertLog;
Puis créér le fichier fn_insertLog.sqf dans le dossier life_server/Fonctions/Systems et mettre dans ce fichier ce bout de code :
Code:
/*
Author: Maxence for The-Programmer Forum
*/
params [
["_type","",[""]],
["_message","",[""]]
];
if ((_type isEqualTo "") || (_message isEqualTo "")) exitWith {};
_query = format ["INSERT INTO logs (type, message) VALUES ('%1', '%2')",[_type] call DB_fnc_mresString,[_message] call DB_fnc_mresString];
[_query,1] call DB_fnc_asyncCall;
Dans votre base de données exécuter le code suivant :
Code:
CREATE TABLE `logs` (
`id` int(100) NOT NULL,
`type` text NOT NULL,
`message` text NOT NULL,
`insert_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `logs` ADD PRIMARY KEY (`id`);
ALTER TABLE `logs` MODIFY `id` int(100) NOT NULL AUTO_INCREMENT;
Ensuite pour chaque fichier où vous voulez ajouter un log dans votre base de données, il faudra ajouter cette ligne : *
Code:
["type","message"] remoteExec ["TON_fnc_insertLog",2];
"message" est le message de log
Par exemple, pour les retraits d'argent à la banque, ajouter en bas de votre fn_bankWithdraw.sqf :
Code:
["Retrait à la banque",format ["%1 à retiré %2€ à la banque",(name player),_value]] remoteExec ["TON_fnc_insertLog",2];
Et voila
Cordialement,
Forum Manager Loic Shmit, avec la collaboration de Kurby