Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Parser Web de Connection (demande)
Parser Web de Connection (demande)
Par eMRaistlin le 3/2/2003 à 11:45:14 (#3160010)
Je souhaiterait faire une interface Web qui parse le log d'un serveur, pour y lire qui est connecté a un instant T.
Donc, l'idée c'est de faire des sorties sur log du nom des connectées, effacer ce nom lors de la deconnection, et ensuite donner un acces a cette info depuis une page web.
1 : Serait-ce faisable (je pense que oui, mais bon...)
2 : Qui c'est qui se sacrifie ?
:merci: :merci: :merci: :merci: :merci: :merci: :merci: :merci: :merci:
Par RAT le 3/2/2003 à 13:01:51 (#3160568)
car cela existe déjà si je me souviens bien.
D'ailleurs je crois même en avoir récuperer sur mon PC.
Par eMRaistlin le 3/2/2003 à 13:07:43 (#3160616)
Pour le watch du vault, je croyais qu'il etait Linux-only. Si tu en a un pour windows, je veux bien un lien.
Par RAT le 3/2/2003 à 13:15:30 (#3160670)
Par Azrael07 le 3/2/2003 à 15:17:56 (#3161587)
1 : Serait-ce faisable (je pense que oui, mais bon...)
comme tu t'y attend, bien sur, c possible ;)
2 : Qui c'est qui se sacrifie ?
ben j'avais prévu de faire la même chose pour mon module, mais c'est vraiment pas ma principale préocupation pour le moment, j'ai bien asset de boulot, donc si ca presse pas (quand je dis ca presse pas je ferais surement pas ce truc avant 3 mois) je le ferais pour moi alors j'en publirais une version, sinon ben...
Mais en conaissant tes compétences en script, je pense que tu doit être tout à fait en mesure de réaliser ca non ?
Renseigne toi un peu sur les langages adaptés pour le créer, après je pense que tu as sans problèmes les bases en prog necessaires pour t'adapter à n'importe quel langage, pour manipuler un fichier c'est exatcement comme pour manipuler une chaine ;)
Bon après si ca existe deja (ce qui est probable) j'ai tappé tout ce baratin pour rien :bouffon: :bouffon: :bouffon:
bon courage ;)
Par eMRaistlin le 3/2/2003 à 15:35:52 (#3161756)
(allez hop... Dieu , donne moi la foi...)
(mais si qqu'un a envie de s'y mettre avant que j'ai fini d'apprendre le JavaScript, qu'il n'hesite pas... je suis pas moins surbooke qu'Azrael :p)
Par Major Donald le 3/2/2003 à 18:33:50 (#3163223)
Provient du message de eMRaistlin
je suis pas moins surbooke qu'Azrael :p)
:eek:
Hein ??? de quoi ??? non, ce doit être un mirage... :mdr: ;)
Par Jedaï le 3/2/2003 à 19:45:22 (#3163739)
Ensuite j'utiliserai mes maigres connaissances en PHP pour essayer de faire ça. :D
Ah si tu pouvais préciser ta demande ça m'aiderait : veux-tu une mise en forme précise, t'est-ce destiné exclusivement ou tes joueurs pourrait-il le consulter, options supplémentaires, etc... :confus:
Que ça ne te dispense pas d'apprendre un autre langage :p (le Python est très bien pour commencer, mais le C ou le PHP ressemble plus au NWScript...)
Par eMRaistlin le 3/2/2003 à 20:02:23 (#3163866)
Par RAT le 4/2/2003 à 3:18:48 (#3166086)
Donc voilà, en gros.
Merci jedaï de le faire, car moi en ce moment je n'ai pas le temps. Avec l'arrivé de mon nouvel hébergeur, je dois réinstaller tous mes sites de jeux de rôles.
Par Jedaï le 7/2/2003 à 21:03:35 (#3193199)
Parce que c'est sûr qu'il marche lorsque PHP et log sont sur le même serveur mais si ce n'est pas le cas...ben j'aimerais bien savoir, quoi, parce que c'est facile à corriger mais si c'est pas la peine, je m'épargnerais ce travail :D
Je mets le script ici mais je te l'ai déjà transmis par mail :p
(Celui-là est un tout petit peu mieux, un chouilla...)
Mauvaise version, décidément je me suis vraiment emmelé les pinceaux ! :mdr:
[Edit] euh, j'avais d'abord par erreur copié la vieille version, veuillez m'excusez pour cette erreur !:maboule:
Par eMRaistlin le 7/2/2003 à 22:55:18 (#3193799)
en tout cas, milles mercis :)( :merci: :merci: :merci: :merci: :merci: :merci: :merci: :merci: :merci: :merci: )*100
Par RAT le 8/2/2003 à 2:31:19 (#3194747)
Par Jedaï le 8/2/2003 à 13:11:46 (#3196115)
Par Jedaï le 8/2/2003 à 13:37:35 (#3196257)
Par Jedaï le 9/2/2003 à 12:48:33 (#3201090)
@ RAT > Je sais que le gros problème du PUMA, c'est que les logs ont tendance à enfler exagérément, je me demandais si un logiciel de nettoyage n'aiderait pas à garder des logs plus propres, je m'explique :
lorsqu'on fait un set/get/delete sur une variable persistante, cela a pour seul effet de rajouter une ligne au log, mais en supposant un logiciel qui scruterait en quasi-permanence le log, il pourrait intercepter toutes les demandes de persistance et les ranger dans une base de donnée, supprimer réellement les variables qui ont été "délétée", etc...
Je me demandais si ça ne serait pas plus efficace ?
(si c'est déjà ce qui a été fait, qu'on me pardonne... :o )
Accessoirement, ce logiciel pourrait mettre à jour une base de donnée qu'utiliserait le PHP pour afficher les joueurs en lignes, etc...
N'oublions pas que l'on pourrait modifier ou consulter les variables entre deux sessions.
Par RAT le 9/2/2003 à 13:13:42 (#3201232)
Donc voilà,
Mais ton idée est faisable et super intéressante jedaï.
:D
Par Jedaï le 10/2/2003 à 18:28:04 (#3209433)
@ RAT > Cool j'ai pas dit de connerie (pas trop ;) ), je suis prêt à me porter volontaire pour l'adaptation Linux, faut juste avoir les sources de nwnsscomp.exe, si je me rappelle bien Torlack les proposait mais j'arrive plus à les retrouver...:confus:
Par RAT le 10/2/2003 à 23:35:08 (#3211377)
Cela serait super sympa pour la version linux de puma. Merci d'avance :)
Par eMRaistlin le 11/2/2003 à 9:43:53 (#3212737)
Je t'ai promis : des que je sais ce que ca donne, je te met au parfum ^^
Par eMRaistlin le 11/2/2003 à 23:58:02 (#3218468)
Par eMRaistlin le 12/2/2003 à 11:29:09 (#3220667)
A priori, ca marche pas mal, mais Nylou m'annonce un leger bug (dont j'ignore l'effet) et me dis qu'il est facile a corriger...
Je continue a vous tenir au courant...
en attendant :
Serveur Watch NWNRo
Un grand merci a Jedaï et à Nylou (aka Petit Lapin Bleue ^^)
Par Nylou le 12/2/2003 à 11:52:57 (#3220889)
Je l'ai débugué et amélioré notement en rajoutant des stats sur les monstres et en changeant les expressions régulières qui ne géraient pas les noms composés et comportant des caractères spéciaux.
[Edit] Jedai, je vois que tu as aussi corrigé les pb de variables et d'expressions régulières. Faudra que je les fasse évoluer car les joueurs sont adeptes des caractères spéciaux.
reste qq affichage bizarre de 0 dans certains cas.
<?php
//ici tu mets l'emplacement du log
$log_place = "nwnserverlog.txt";
function drawhead()
{
print("\n");
print(" \n");
print(" Etat et occupation du serveur nwnRO\n");
print(" \n");
print("\n\n");
}
function drawfoot()
{
print("\n Le parser PHP d'origine a été écrit par Jedai puis exploité par Nylou. \n");
print("Note : l'état du serveur est rafraichi toutes les minutes\n");
print("\n");
print("\n");
}
function presents($text, $type)
{
if($type == "Player")
{
$nom = "Joueurs";
}
else if($type == "Game Master")
{
$nom = "Maîtres de jeu";
}
else
{
return;
}
$arP = array();
$total = 0;
foreach( $text as $line )
{
$name ) )
if( ereg( " (([a-zA-Z0-9\'\^ ]+)*)Joined as $type", $line, $name ) )
{
$arP[$name[1]]=1;
$total++;
}
$name ) )
if( ereg( " (([a-zA-Z0-9\'\^ ]+)*)Left as a $type", $line, $name ) )
{
$arP[$name[1]]=0;
$total--;
}
}
print(" \n");
print(" $nom en ligne :\n");
print(" \n\n");
foreach( $arP as $p => $online)
{
if($online)
{
print(" ".htmlentities($p)."\n") ;
}
}
print("\n\n");
print(" \n");
print(" Nombre total de $nom en ligne : ".$total);
print(" \n\n\n");
}
function streumsKilled($text)
{
$arP = array();
$total = 0;
foreach( $text as $line )
{
if( ereg( " (([a-zA-Z0-9\'\^ ]+)*)Died", $line, $monstre ) )
{
if( isset($arP[$monstre[1]]) ) {
$arP[$monstre[1]]++;
}
else {
$arP[$monstre[1]]=1;
}
$total++;
}
}
print(" \n");
print(" Statistique des monstres tombés au combat :\n");
print(" \n\n");
foreach( $arP as $p => $macab)
{
if($macab)
{
print(" ".htmlentities($p)." $macab\n") ;
}
}
print("\n\n");
print(" \n");
print(" Nombre total de créatures tuées : ".$total);
print(" \n\n\n");
}
function pcKilled($text)
{
$arP = array();
$total = 0;
foreach( $text as $line )
{
if( ereg( " (([a-zA-Z0-9\'\^ ]+)*)\(PC\) Died", $line, $pc ) )
{
if( isset($arP[$pc[1]]) ) {
$arP[$pc[1]]++;
}
else {
$arP[$pc[1]]=1;
}
$total++;
}
}
print(" \n");
print(" Statistique des joueurs tombés au combat :\n");
print(" \n\n");
foreach( $arP as $p => $macab)
{
if($macab)
{
print(" ".htmlentities($p)." $macab\n") ;
}
}
print("\n\n");
print(" \n");
print(" Nombre total de joueurs tués : ".$total);
print(" \n\n\n");
}
function etatServeur()
{
global $log_place;
global $ft;
$astat = fstat( fopen($log_place, "r") );
$ndate = $astat[9];
if( $ndate < time() - 60)
{
print(" \n");
print(" Le module n'est pas en ligne actuellement");
print(" \n\n\n");
}
else
{
print(" \n");
print(" Le module est en ligne actuellement");
print(" \n\n\n");
$ft = file( $log_place);
presents($ft, "Player");
presents($ft, "Game Master");
streumsKilled($ft);
pcKilled($ft);
}
}
drawhead();
etatServeur();
drawfoot();
?>
Pour le pb du fichier log distant, voici une solution en 2 fichiers à mettre dans le répertoire log.
DEMON.BAT :FTP
ftp -s:toto.txt
sleep 60
goto FTP
toto.txt
cd
put
bye
Par Jedaï le 12/2/2003 à 12:41:42 (#3221258)
Par Iridian le 12/2/2003 à 12:58:43 (#3221408)
Un jour, faudra vraiment que je me mette au php ...
Pour en revenir a la taille des logs, je vais voir ce qu'il est possible de faire ;)
Par Jedaï le 12/2/2003 à 13:29:10 (#3221687)
Maintenant je pense que c'est vraiment l'idéal : plus de problème de caractères spéciaux, plus de PJ dans les monstres, plus de "0" (ça c'était dû à ton usage erroné de "*", ce quantificateur demande 0 ou plus de ce qui le précède, donc quand il ne trouvait rien qui corresponde, il t'affichait "0" :) ), de plus j'ai supprimé quelques trucs inutiles comme les isset() dans tes fonctions (une valeur non-initialisée qu'on incrémente vaut bien 1, comme je l'avais utilisé dans ma première fonction) :
<?php
//ici tu mets l'emplacement du log
$log_place = "nwserverLog1.txt";
function drawhead()
{
print("\n");
print(" \n");
print(" Etat et occupation du serveur nwnRO\n");
print(" \n");
print("\n\n");
}
function drawfoot()
{
print("\n Le parser PHP d'origine a été écrit par Jedai puis exploité par Nylou. \n");
print("Note : l'état du serveur est rafraichi toutes les minutes\n");
print("\n");
print("\n");
}
function presents($text, $type)
{
if($type == "Player")
{
$nom = "Joueurs";
}
else if($type == "Game Master")
{
$nom = "Maîtres de jeu";
}
else
{
return;
}
$arP = array();
$total = 0;
foreach( $text as $line )
{
if( ereg( "] (.+) Joined as $type", $line, $name ) )
{
$arP[$name[1]]=1;
$total++;
}
if( ereg( "] (.+) Left as a $type", $line, $name ) )
{
$arP[$name[1]]=0;
$total--;
}
}
print(" \n");
print(" $nom en ligne :\n");
print(" \n\n");
foreach( $arP as $p => $online)
{
if($online)
{
print(" ".htmlentities($p)."\n") ;
}
}
print("\n\n");
print(" \n");
print(" Nombre total de $nom en ligne : ".$total);
print(" \n\n\n");
}
function streumsKilled($text)
{
$arP = array();
$total = 0;
foreach( $text as $line )
{
if( ereg( "] ([^\\(]+) Died", $line, $monstre ) )
{
if( isset( $arP[$monstre[1]] ) )
{
$arP[$monstre[1]]++;
}
else
{
$arP[$monstre[1]] = 1;
}
$total++;
}
}
print(" \n");
print(" Statistique des monstres tombés au combat :\n");
print(" \n\n");
foreach( $arP as $p => $macab)
{
print(" ".htmlentities($p)." $macab\n") ;
}
print("\n\n");
print(" \n");
print(" Nombre total de créatures tuées : ".$total);
print(" \n\n\n");
}
function pcKilled($text)
{
$arP = array();
$total = 0;
foreach( $text as $line )
{
if( ereg( "] (.+)\\(PC\\) Died", $line, $pc ) )
{
if(isset( $arP[$pc[1]] ) )
{
$arP[$pc[1]]++;
}
else
{
$arP[$pc[1]] = 1;
}
$total++;
}
}
print(" \n");
print(" Statistique des joueurs tombés au combat :\n");
print(" \n\n");
foreach( $arP as $p => $macab)
{
print(" ".htmlentities($p)." $macab\n") ;
}
print("\n\n");
print(" \n");
print(" Nombre total de joueurs tués : ".$total);
print(" \n\n\n");
}
function etatServeur()
{
global $log_place;
global $ft;
$astat = fstat( fopen($log_place, "r") );
$ndate = $astat[9];
if( $ndate < time() - 60)
{
print(" \n");
print(" Le module n'est pas en ligne actuellement");
print(" \n\n\n");
}
else
{
print(" \n");
print(" Le module est en ligne actuellement");
print(" \n\n\n");
$ft = file( $log_place);
presents($ft, "Player");
presents($ft, "Game Master");
streumsKilled($ft);
pcKilled($ft);
}
}
drawhead();
etatServeur();
drawfoot();
?>
Voilà, je supprime toutes les autres versions du script (à part la tienne) et je pense que celle-ci sera définitive (sauf bug passé inaperçu) :cool:
@ Iridian > si tu me passait les sources (dont celles de nwnsscomp), j'essaierai d'adapter le PUMA à linux, d'accord ? :p
Par Nylou le 12/2/2003 à 13:46:50 (#3221861)
Pas bête le ] (.+) ;) c'est exactement le résultat ou je voulais arriver à terme.
Pour les isset je vais les laisser, sinon pour les tests les warnings vont s'afficher par milliers.
C'est plus propre comme programmation.
Par eMRaistlin le 12/2/2003 à 13:58:45 (#3221973)
Nylou, je te laisse mettre le ftp a jour ^^; :D ;)
Par Nylou le 12/2/2003 à 14:04:27 (#3222025)
Provient du message de eMRaistlin
Et voila : tu file un truc a ces 2 la, et 1heure plus tard, t'es perdu....
Nylou, je te laisse mettre le ftp a jour ^^; :D ;)
J'ai mis à jour la version online.
Ce soir je mettrai le démon en place sur le serveur.
Après je ferai une étude pour la périodicité d'envoie pour ne pas pénaliser les joueurs car la log peut être très vite assez volumineuse.
Peut être envisager un append des modifs de la log au fil de l'eau.
Par eMRaistlin le 12/2/2003 à 14:15:50 (#3222127)
Peut être envisager un append des modifs de la log au fil de l'eau.
Euh....J'ai mis à jour la version online.
Ah ? Ok, alors : bug report : les PC tombés au combat apparaissent dans la liste des monstres...
PS : Si tu as besoin de sorties sur log particulieres, ou formatées d'une facon qui t'arrange, c'est faisable ^^
Par Jedaï le 12/2/2003 à 14:26:11 (#3222224)
Ah ? Ok, alors : bug report : les PC tombés au combat apparaissent dans la liste des monstres...
Mmmmhh, ça c'est l'avant-dernière version, la dernière corrige normalement ça (en tout cas j'ai testé et ça me le fait pas):p
[Edit] Revérifié, c'est bon !Pour les isset je vais les laisser, sinon pour les tests les warnings vont s'afficher par milliers.
C'est plus propre comme programmation.
Non non, je t'assure qu'il fait ça silencieusement, d'ailleurs dans la version que tu as posté, tu n'avais pas modifié ma fonction qui faisait déjà ainsi.:D
Et puis c'est pas sale, je t'assure ! undef + 1 = 1, rien d'étonnant à celà !:p
Par Nylou le 12/2/2003 à 14:27:47 (#3222243)
Provient du message de eMRaistlin
PS : Si tu as besoin de sorties sur log particulieres, ou formatées d'une facon qui t'arrange, c'est faisable ^^
T'inkietes, tu vas pas y couper. ah ! ah !Non non, je t'assure qu'il fait ça silencieusement, d'ailleurs dans la version que tu as posté, tu n'avais pas modifié ma fonction qui faisait déjà ainsi.
Et puis c'est pas sale, je t'assure ! undef + 1 = 1, rien d'étonnant à celà !
Ca dépend du paramétrage de ton serveur apache.
Et pour revenir à undef + 1 = 1
C'est pas bô ! pouah ! Pas glop !
Par Jedaï le 12/2/2003 à 14:44:55 (#3222393)
By Iridian > *comprend rien*
Un jour, faudra vraiment que je me mette au php ...
Pour en revenir a la taille des logs, je vais voir ce qu'il est possible de faire
@ Iridian > Mais non, c'est un script PHP simple, si t'as réussi à faire le parser en Delphi, ça devrait pas te poser problème ! :)
Pour les logs, je pense qu'une vérification toutes les 60 secondes suffira :
=> vérifie si au moins 5 caractères (un "." toutes les 10 secondes) ont été écrits, sinon relance le serveur
=>parse ligne par ligne et place les résultats dans une base de donnée ou un fichier hyper formaté
=>écrit les lignes non-parsé dans un autre log (en supprimant ces #$/§ de petits points au passage)
=>vide le log
=>attend 60 secondes et recommence
{Prévoir un mécanisme d'interruption}
Je pense que ça devrait le faire, j'en suis déjà capable en Perl, reste à voir si ça ne ralentit pas le serveur (à priori vu la légèreté du traitement : quelques lignes, ça devrait passer comme une fleur).
Si ça t'intéresse que je me charge du portage linux, fais moi signe et envoie moi les sources :p
Par Jedaï le 12/2/2003 à 14:48:05 (#3222417)
Ca dépend du paramétrage de ton serveur apache.
Et pour revenir à undef + 1 = 1
C'est pas bô ! pouah ! Pas glop !
Mais alors pourquoi n'avais-tu pas modifié ma fonction ?:confus:
(en fait je dois avouer que c'est mon premier script en PHP donc je ne connais pas bien les paramétrages extérieurs :o )
Par Nylou le 12/2/2003 à 15:09:32 (#3222574)
Provient du message de Jedaï
Mais alors pourquoi n'avais-tu pas modifié ma fonction ?:confus:
Dans ta fonction que j'ai gardé je ne fais pas undef++ mais je l'initialise à la valeur 1 ce qui est différent.
Par Jedaï le 12/2/2003 à 15:51:00 (#3222897)
Pour la correspondance nom de joueurnom de perso, ça vous intéresse ou pas ?:p
[Edit] J'ai arrangé la "version finale" de façon à ce qu'elle soit plus "propre" au goût de Nylou et peut-être au goût du serveur Apache d'un de ceux qui aurait envie de l'utiliser.:p
Par Nylou le 12/2/2003 à 16:22:38 (#3223164)
Autant pour moi ;)
Pour la correspondance nom de joueurnom de perso, ça vous intéresse ou pas ?:p
[Edit] J'ai arrangé la "version finale" de façon à ce qu'elle soit plus "propre" au goût de Nylou et peut-être au goût du serveur Apache d'un de ceux qui aurait envie de l'utiliser.:p
Pour la correspondance, je préferai l'avis des joueurs car ceux sont eux qui utiliseront le server watch.
Comme la plupart sont des habitués (des drogués meme) et qu'ils ont plusieurs personnages.
Je pense qu'ils se fliquent aussi avec leur login.
Si ca doit se faire, cela va demander des traces spécifiques, je donnerai le format Raist si nécessaire.
Par eMRaistlin le 12/2/2003 à 16:22:42 (#3223166)
Pour la correspondance nom de joueurnom de perso, ça vous intéresse ou pas ?
Bein... eventuellement, vi ^^
En plus : Peut tu concatener sa guilde avec ?
Sachant que je ferait une sortie sur log comme ceci :
WriteTimestampedLogEntry("guilde - "+nom_de_la_guilde)
(eventuellement, le niveau du PC)
[edit : ne pas oubliez que si Guilde est nulle, faut pas afficher :p]
PS :
Peut tu parser aussi pour savoir si
- 1 : une partie de foot est en cours
(je vais mettre un
WriteTimestampedLogEntry("PoringBall - Partie en cours") &
WriteTimestampedLogEntry("PoringBall - joueur "+GetName(oPC)) &
WriteTimestampedLogEntry("PoringBall - Fin")
)
- 2 : une partie du Jeu du pingouin est en cours
WriteTimestampedLogEntry("Pingouin - Partie en cours") &
WriteTimestampedLogEntry("Pingouin - joueur "+GetName(oPC)) &
WriteTimestampedLogEntry("Pingouin - Fin")
Merchiii ^^
Par Nylou le 12/2/2003 à 16:27:29 (#3223217)
Va falloir mettre en place des traces bien formatées.
Par eMRaistlin le 12/2/2003 à 16:32:09 (#3223259)
Moi, c'est parfait comme ca... ^^
(si tu veux des traces en plus, Nylou, demande par contre : je peut maitriser des nouvelles traces... Juste les anciennes traces sont assez dure à pister/nettoyer...)
Par eMRaistlin le 12/2/2003 à 17:21:22 (#3223684)
(PS : tu confirme que si je remplace la ligne "Le module n'est pas en ligne actuellement" dans le script php par une commande du type , il peut m'afficher une image ?)
Par Nylou le 12/2/2003 à 17:53:33 (#3224010)
Pour les objets acheter et le pb de resref, detruire un objet juste acheté et le recréer ne pourrait il pas resoudre le pb ?
PS Raist : oui c'est possible. On peut meme afficher la photo de Baphomet en string.
Par eMRaistlin le 12/2/2003 à 19:42:00 (#3224974)
On peut meme afficher la photo de Baphomet en string.
Euh... c'est toi qui va la prendre, alors, la photo....:monstre: :mdr: :maboule:
Par Nylou le 13/2/2003 à 9:51:40 (#3228424)
Toutes ces créatures sont messsantes.
Elles me font peur.
Bon, pour le serveur watch tout est ok.
Nous avons eu des problemes pour faire marcher le demon car sous win98 le ftp.exe ne fonctionne pas en mode passif et la commande sleep.exe n'est pas disponible.
Si vous avez des problemes de ce genre, contactez moi.
Je vais travailler sur la log avant de l'envoyer afin de limiter sa taille au stricte nécessaire et de rendre le parser plus rapide.
Par eMRaistlin le 13/2/2003 à 10:17:14 (#3228554)
- Added server option "RotateServerLog=0/1" to nwnplayer.ini, under [Server Options]. If this is turned off the server logs won't rotate (default is on).
Elle est bien, cette 1.28, ma foi ^^
Attention, aussi, je ne sais pas si ca va necessiter un changement du code du parser, mais ce serait dommage d'afficher ca :- Added server CDKey logging to "Player Name (XXXXXXXX) Joined as Player #" messages.
Par Nylou le 13/2/2003 à 10:45:20 (#3228723)
A terme, on n'exploitera que nos traces de toutes facon.
JOL Archives 1.0.1
@ JOL / JeuxOnLine