OBT ~ Escadrille virtuelle
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

OBT ~ Escadrille virtuelle


 
PortailAccueilRechercherDernières imagesS'enregistrerConnexion
Qui est en ligne ?
Il y a en tout 8 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 8 Invités

Aucun

Le record du nombre d'utilisateurs en ligne est de 98 le Ven 16 Mar - 3:04
ECOLE DE CHASSE
TS3 OBT
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-20%
Le deal à ne pas rater :
-20% Récupérateur à eau mural 300 litres (Anthracite)
79 € 99 €
Voir le deal

 

 Tracelog du code d'une mission.

Aller en bas 
AuteurMessage
OBT~Eazy




Messages : 358
Date d'inscription : 11/09/2020
Age : 58
Localisation : Brussels

Tracelog du code d'une mission. Empty
MessageSujet: Tracelog du code d'une mission.   Tracelog du code d'une mission. Icon_minitimeJeu 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.
Revenir en haut Aller en bas
 
Tracelog du code d'une mission.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» mission SOW
» mission du 08/05
» Mission MTO
» Mission DCS WW2
» Mission "Course de navigation"

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
OBT ~ Escadrille virtuelle :: Forum Simulateurs Warbirds :: IL-2 Sturmovik: Cliffs of Dover :: Patchs, réglages, utilitaires, astuces pour le soft-
Sauter vers: