Français Ajouter des logs des actions des joueurs dans la base de données

  • Auteur de la discussion Auteur de la discussion Loic Shmit
  • Date de début Date de début

Loic Shmit

User
25/8/18
40
2
35
300
the-programmer.com
vdgrg-ConvertImage.png

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 Kurby

Comme ce système est long à mettre en place, nous traiterons seulement un fichier dans ce tutoriel :)
C'est parti !

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];
"type" est le texte de votre choix, vous pouvez vous 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, 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 Kurby
 
Avec Banking System, pour enregistrer les retraits d'argent à la banque, il faut ajouter en bas du @The_Programmer/addons/banking_system/client/atm/money/fn_atm_withdraw.sqf :
Code:
["Retrait à la banque",format ["%1 à retiré %2€ à la banque",(name player),_oldAmount]] remoteExec ["TON_fnc_insertLog",2];
 
Dernière édition:
Avec l'Iphone XI, pour enregistrer quand un joueur donne des objets à un autre joueur, il faut ajouter en bas du @The_Programmer/addons/iphone_xi/client/apps/tp_apps_giveItem.sqf :
Code:
["Don d'objet",format ["%1 à donné %2 %3 à %4",(name player),_amount,(localize (getText (missionConfigFile >> "VirtualItems" >> _item >> "displayName"))),(name _selectedPlayer)]] remoteExec ["TON_fnc_insertLog",2];
 
  • Heart
Les réactions: AltisLifeDev