Français Solved Comment obtenir des logs d'action des joueurs?

  • Auteur de la discussion Auteur de la discussion Kurby
  • Date de début Date de début

Kurby

User
29/12/19
173
13
18
1 100
Bonjour , j'aurais bien aimer savoir comment avoir des logs pas les "rtp" mais des logs qui registre les actions des joueurs ... si quelq'un pourrais m'aider ce serait parfait.

je sais que ces possible mais j'ai perdu le tuto ...
 
Solution
Alors, c'est quelque chose d'asser long à faire mais je vais te montrer comment le faire pour un fichier et tu pourras le faire pour le reste.
Pour commencer, dans le fichier CfgRemoteExec.hpp de ta mission ajoute ceci :
Code:
F(TON_fnc_insertLog,SERVER)

Ensuite ajoute dans le config.cpp de ton 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 met dans ce fichier ce bout de code :
Code:
/*
    Author: Maxence for The-Programmer Forum
*/
params [
    ["_type","",[""]],
    ["_message","",[""]]
];

if ((_type isEqualTo "") || (_message isEqualTo ""))...
Alors, c'est quelque chose d'asser long à faire mais je vais te montrer comment le faire pour un fichier et tu pourras le faire pour le reste.
Pour commencer, dans le fichier CfgRemoteExec.hpp de ta mission ajoute ceci :
Code:
F(TON_fnc_insertLog,SERVER)

Ensuite ajoute dans le config.cpp de ton 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 met 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 ta base de données exécute 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ù tu veux ajouter un log dans ta base de données, il faudra ajouter cette ligne :
Code:
["type","message"] remoteExec ["TON_fnc_insertLog",2];

"type" est le texte de ton choix, tu peux t'en servir pour différencier les actions : dépôt / retrait / achat etc
"message" est le message de log


Par exemple, pour les retraits d'argent à la banque, ajoute en bas de ton fn_bankWithdraw.sqf :
Code:
["Retrait à la banque",format ["%1 à retiré %2€ à la banque",(name player),_value]] remoteExec ["TON_fnc_insertLog",2];
 
Dernière édition:
  • Like
Les réactions: IceEagle132
Solution