OBT~Eazy
Messages : 358 Date d'inscription : 11/09/2020 Age : 58 Localisation : Brussels
| Sujet: Tracelog du code d'une mission. Jeu 20 Mai - 19:30 | |
| Je trouve très pratique d'avoir un fichier "TraceLog" dans mes applications personnels et professionnelles surtout lorsqu'il n'existe pas d'outil de débogage disponible.Le principe est que le "programme" envoie des messages, via l'appel d'une fonction, dans un fichier en format texte sauvegardé sur le disque dur. Le programmeur peut placer l'appel à cette fonction où il le désire dans son code.J'ai donc appliquer ce principe sur le code de mes missions développées dans le créateur de mission de CloDo.Pour mettre en place ce traceur il suffit d'ajouter quelques lignes de code dans le fichier .cs lié à la mission.On part du principe qu'on est tout au début du processus de création de la mission et que le code c# n'existe pas encore.Il suffit de copier le code ci-dessous dans l'onglet "Script" de l'éditeur de mission (menu Modifier -> Script) - Code:
-
using System; using System.Collections; using System.Collections.Generic; using maddox.game; using maddox.game.world; using System.IO;
public class Mission : AMission { // objets flux fichier private System.IO.FileStream oLogFile = null; private System.IO.StreamWriter oLogStream = null;
private void toLog(string strMessage) { try { oLogStream.WriteLine(DateTime.Now.ToString("[dd-MM-yyyy hh:mm:ss];") + strMessage); oLogStream.Flush(); } catch(Exception ex) { // ignorer et continuer, pas la peine de faire crasher la mission // } return; } public override void Inited() { base.Inited(); try { string filename = @"c:\temp\Dogfight-" + DateTime.UtcNow.ToString("yyyyMMdd-hhMMss") + ".log"; oLogFile = new System.IO.FileStream(filename, System.IO.FileMode.Append); oLogStream = new System.IO.StreamWriter(oLogFile); toLog("Inited"); } catch(Exception ex) { // ignorer et continuer // } } } Choix de la destination et du nom du fichier. Dans la fonction "public override void Inited()" vous pouvez choisir la destination et le nom de votre fichier traceur. Dans le code ci-dessus, le répertoire de destination est c:\temp et le nom du fichier est "Dogfight-" suivi de la date et heure du lancement de la mission avec l'extension ".log" (j'ai choisi d'ajouter la date et l'heure car ça me permet d'obtenir un fichier différent à chaque lancement de la mission). Pour envoyer une ligne de texte dans le fichier traceur, il suffit d'appeler la fonction toLog avec, en paramètre, le texte à envoyer. (remarque, cette fonction est appelée lors de l'initialisation de la mission dans le code précédent) Par exemple, si vous souhaitez tracer la connexion d'un nouveau joueur, ajouter cette fonction dans le code - Code:
-
public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex) { base.OnPlaceEnter(player, actor, placeIndex); toLog("Le joueur " + player.Name() + " s'est connecté"); } Code complet - Code:
-
using System; using System.Collections; using System.Collections.Generic; using maddox.game; using maddox.game.world; using System.IO;
public class Mission : AMission { // objets flux fichier private System.IO.FileStream oLogFile = null; private System.IO.StreamWriter oLogStream = null;
private void toLog(string strMessage) { try { oLogStream.WriteLine(DateTime.Now.ToString("[dd-MM-yyyy hh:mm:ss];") + strMessage); oLogStream.Flush(); } catch(Exception ex) { // ignorer et continuer, pas la peine de faire crasher la mission // } return; } public override void Inited() { base.Inited(); try { string filename = @"c:\temp\Dogfight-" + DateTime.UtcNow.ToString("yyyyMMdd-hhMMss") + ".log"; oLogFile = new System.IO.FileStream(filename, System.IO.FileMode.Append); oLogStream = new System.IO.StreamWriter(oLogFile); toLog("Inited"); } catch(Exception ex) { // ignorer et continuer // } }
public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex) { base.OnPlaceEnter(player, actor, placeIndex); toLog("Le joueur " + player.Name() + " s'est connecté"); } } Dernière remarque, la ligne de texte dans le fichier traceur est précédée de la date et de l'heure lors de l'appel à la fonction toLog() [20-05-2021 03:13:41];Inited [20-05-2021 03:14:15];Le joueur Ezzy s'est connecté Joyeux débogage à tous. | |
|