La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 27/11/2024 05:16:33


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 20/07/2006 18:17:14 Sujet du message : Une arene aléatoire

Salut à vous jeune scripteur/scripteuse, et maître des scripts Very Happy

J'ai un petit problème que je n'arrive pas à résoudre Confused J'ai chercher assez longtemps mais je n'ai pas la moindre idée du comment faire Razz Je vous explique :

Voila j'aimerais faire comme guilde war, pour les arènes :

Le joueur entre dans la zone, il va au centre est dit "[Commencer]" (ça j'arrive à le faire, normalement Razz). La, un script alors se lance, celui la fait écouler un temps qui est *X, et au bout de 0 sec, le module regarde si 8 joueurs on dit "commencer", et si il y a bien 8 joueurs, alors ils sont diviser en 4 (par exemple les 4 derniers et les 4 premiers) et ils vont dans une arène (la Téléportation je ferais) et sont grouper, et sont mis hostile envers les autres. Mais, si il n'y a pas 8 joueur alors le timer recommence à 15 secondes et s'écoule jusqu'à 0 sec et on recommence ce que j'ai dis plus haut.

*X = le module met en permanence le compteur en compte à rebours, un peu comme un HB qu'on arrête pas. Si vous preferez, si un joueur à dit "commencer" et que le timer est à 12 sec, par exemple, et que un autre joueur dit "commencer" 5 secondes après, le joueur attendra 7 secondes avant que le compte à rebours soit à 0(un message (SendMessageToPC()) dit à combien de seconde est le joueur). (j'espère que vous connaissez guilde war, pasque ça devient difficile à expliquer clairement la lol).

Donc, pour pas vous laissez tout faire, je vais donner des idées (je me lance pas dans des trucs sans réfléchir lol) :
Je ne sais pas comment faire pour que le temps descende comme toutes les 1 secondes... a par avec un DelayCommand, mais je prèfere que ce soit comment dire, réelle, comme si vous activiez votre montre. Pour ce qui est des 8 joueurs, je pense que mettre une local sur le module serait bon, on rajoute +1 a chaque joueur qui dit "commencer" et on enlève 1 si il quitte la zone. On met un LocalObject pour les téléporter, mais par contre, je ne vois pas aussi comment faire pour les diviser. Si vous savez comment faire, les grouper sera simple et les téléporter a leur place sera simple aussi.

Voila merci de votre aide, prenez votre temps, et posé moi toutes les questions nécessaire Smile
_________________
[http]
Dernière édition par Black Knight le 24/07/2006 10:22:16; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 23/07/2006 22:49:57 Sujet du message :


Citation :
Je ne sais pas comment faire pour que le temps descende comme toutes les 1 secondes.
T'inquiète pas le temps s'écoule tout seul de 1 secondes à chaque seconde, ce sont des lois naturelles Smile .
Enfaite pour ta question, je pense que les DelayCommands sont bons (je voie pas pourquoi tu ne veux pas les utiliser) si tu veux utiliser le temps écoulés comme un compte à rebours.


Citation :
Pour ce qui est des 8 joueurs, je pense que mettre une local sur le module serait bon, on rajoute +1 a chaque joueur qui dit "commencer" et on enlève 1 si il quitte la zone. On met un LocalObject pour les téléporter, mais par contre, je ne vois pas aussi comment faire pour les diviser.
Mets les gladiateurs en local sur la zone en question (et non sur le module).
Oui, rajoute "+1" à un compteur à chaque entrée de joueur.
Pour les diviser c'est très simple. Utilise une boucle for(i=0; i<8; i++), et traite joueurs par joueurs.

Le script est pas très difficile, mais si tu as des questions ou si tu veux que je te fasse une partie du script, dit le moi Wink.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 23/07/2006 23:01:07 Sujet du message :

Et aussi, histoire de ne surtout pas me répéter, pourrais-tu mettre des titres explicites à tes sujets stp ?
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 24/07/2006 10:21:29 Sujet du message :

Heu alors j'ai compris une partie, bon oué je vais utilisé un DelayCommand, mais, comment faire pour que dès qu'un joueur arrive 7 sec aprés (donc 15-7 = Cool il soit dit : "Début de l'arène dans : 8 secondes" ?

Heu par contre pour le script avec le FOR je veux bien que tu me le fasse j'ai jamais fait de script avec donc, j'y connais pas grand chose... Razz FOR c'est une sort de WHILE je suppose?

Enfaite faudrais que je fasse une localint qui met un numero au joueur (c'est simple ça) et dans le FOR je dit que 1 nommé Truc Chouette et que 2 nomme Trop Cool soit reuni? Mais si un joueur quitte la zone, comment faire pour retrouver le bonne équilibre ? xD

Merci

Finipe> Exact j'ai oublier dsl, je corrige
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Tethilyssak
Grand Chevalier
Inscrit le: 07 Sep 2005
Messages: 100
Répondre en citant
Posté le : 24/07/2006 10:26:32 Sujet du message :

Kicker de la zone le dernier pj entré dans le camp adverse ?
_________________
Prenez votre destin en main !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 24/07/2006 13:20:33 Sujet du message :

Si un joueur quitte la zone d'arène en plein duel alors tu fais un système de bannissement (persistant) qui comptabilise le nombre de déco et tu banni la clef CD si le joueur déco trop souvent. Enfin bon, tu invente un truc quoi Razz

Pour ce qui est des compteurs à rebours, je connais pas de système "timer" comme ceux de warcraft III. Mais je m'y prendrai comme cela : lorsqu'un joueur commence une partie ("commencer") tu démarre un script qui en appelle un script nommé "verif_joueur" au bout de X secondes. Lorsque "verif_joueur" demarre, tu vérifie qu'il y a bien 8 joueurs dans le LocalInt et tu fais en conséquence.
Si tu veux envoyer un message au joueur qui entre dans l'arène en lui disant combien de temps il reste avant que le duel ne commence tu enregistre la date a laquelle a commencer la partie, et la date a laquelle le joueur est entrée. Avec un calcul tu as la différence. Mais bon ca c'est pas très important.

Maintenant on envoie les joueurs :
Imaginons que l'on stock ceux qui vont faire l'arène en LocalObjet sous GLADIATEUR_0, GLADIATEUR_1, GLADIATEUR_2, ..., GLADIATEUR_7.
On les groupera et téléporteront comme ceux :
NWScript :
void main()
{
    int i = 0;
    for(i=0; i<4; i++)
    {
    // On ajoute les joueurs 1, 2, 3 au groupe de gladiateur 0
    AddToParty(
        GetLocalObject(GetArea(OBJECT_SELF), "GLADIATEUR_" + IntToString(i)),
            GetLocalObject(GetArea(OBJECT_SELF), "GADIATEUR_1")); // Gladiateur_0 est le leader du groupe 1
    // On teleporte les joueurs 0, 1, 2, 3 a TELEPORTATION_GROUPE_1
    AssignCommand(
        GetLocalObject(GetArea(OBJECT_SELF), "GLADIATEUR_" + IntToString(i)),
            ActionJumpToObject(
                GetObjectByTag("TELEPORTATION_GROUPE_1")));
    }
    for(i=4; i<8; i++)
    {
    // On ajoute les joueurs 5, 6, 7 au groupe de gladiateur 4
    AddToParty(
        GetLocalObject(GetArea(OBJECT_SELF), "GLADIATEUR_" + IntToString(i)),
            GetLocalObject(GetArea(OBJECT_SELF), "GADIATEUR_4")); // Gladiateur_4 est le leader du groupe 2
    // On teleporte les joueurs 4, 5, 6, 7 a TELEPORTATION_GROUPE_1
    AssignCommand(
        GetLocalObject(GetArea(OBJECT_SELF), "GLADIATEUR_" + IntToString(i)),
            ActionJumpToObject(
                GetObjectByTag("TELEPORTATION_GROUPE_2")));
    }
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

Bon c'est pas très difficile mais seulement ya un problème qu'il faut éviter : que des des GLADIATEUR_X soit OBJECT_INVALID. Imaginons qu'on a stocké les gladiateurs 0, 1, 2, 3 et que le numéro 2 s'en aille. Alors il ne faut pas que le prochain joueur a commencer soit stocké sous 4 (qui est le nombre après 3) mais sous 2 (car ce joueur a quitté et donc le localObject est invalid).
Comment remédier a ca ?
Il faut que le dialogue ou le joueur accède à "commencer" est 8 branches nommés "commencer. Sous aurora ca donne ca :

Dans chaque "commencer" il y a une condition (si gladiateur X est présent) et il y a une conséquence (on définie le localObject gladiateur X et on défini aussi le booléen gladiateur_X_présent sous TRUE).
Voici ce que j'ai écrit dans les conditions et conséquence de la première branche donc du gladiateur 0 :
NWScript :
//condition
int StartingConditional()
{
    int iBooleen = FALSE;
    if(GetLocalInt(OBJECT_SELF, "GLADIATEUR_0_PRESENT") == FALSE) // Si le gladiateur_1 n'est pas present
        iBooleen = TRUE; // Alors la place est libre
    return iBooleen;
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

NWScript :

void main()
{
// enregistrer le gladiateur en LocalObject sous GLADIATEUR_0
// definir le LocalInt GLADIATEUR_0_PRESENT a TRUE
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Bon je te donne des idées et quelques pistes. Mais, bon bah n'hésite toujours pas à continuer à poster des questions ou réponses.

P.S : J'ai fais le message d'une traite donc peut être des erreurs involontaires se sont glissées Wink.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 24/07/2006 18:20:14 Sujet du message :

Bon merci déjà Smile

1) L'idées du dialogue est bonne, mais... si il y a deux place présente (deux joueurs qui on dit commencer et qui sont pas encore dans l'arene quitte) dans ton dialogue on va avoir :

Bonjour, voulez faire un 4 vs 4?
Commencer
Commencer
Non


Donc ça pose un peu un probleme, peut être que ça pourrait marcher :

NWScript :
void main()
{
int i=1;
int tf = TRUE;
object oPC;
while(i<9 && tf == TRUE)
{
if(GetLocalObject(GetArea(OBJECT_SELF), "GLADIATEUR_" + IntToString(i)) != GetObjectByTag("PlaceLibre"))
{
i++;
}
else
{
SetLocalObject(GetArea(OBJECT_SELF), "GLADIATEUR_"+IntToString(i));
tf = FALSE;
}
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


La on regarde les 8 joueurs (même si il y en a pas). Si, normalement (par exemple) GLADIATEUR_1 est déjà pris, alors il ne se passe rien on passe au suivant. En revanche si GLADIATEUR_2 est libre, on donne la place a celui qui a dit commencer (le joueur qui a quitter la zone pendant le timer on le remplace par un objet posé dans la zone qui se tag "PlaceLibre").

Aprés je pense que regrouper les joueurs comme ta fait doit etre parfait, j'attends vos reponse et je teste ensuite Smile

EDIT: en re-regardant mon script je pense qu'on aurait plus de probleme pour ce qui est des joueurs qui quitte la zone.
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 24/07/2006 19:50:47 Sujet du message :

Ha bah oui j'y avais pas pensé mon dialogue n'est pas bon (j'étais sûrement dans le coltar).

J'ai pas regardé ton code mais je te fait confiance Smile.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 24/07/2006 22:12:39 Sujet du message :

Je teste ça demain, et je vous dis ça, mais je pourrais pas voir ça en multijoueur.. Confused
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 25/07/2006 10:33:22 Sujet du message :

Bon je me suis décidé de regarder ton code et j'ai pas compris cette ligne :
NWScript :
if(GetLocalObject(GetArea(OBJECT_SELF), "GLADIATEUR_" + IntToString(i)) != GetObjectByTag("PlaceLibre"))
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

Tu marque Si GLADIATEUR_X n'est pas le même objet que l'objet portant le tag "placelibre", ca veut dire qu'au début tu les défini comme celui ci ?
Enfin personnellement j'aurai fait :
NWScript :Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

Comme ca lorsqu'un joueur quitte, ya pas besoin de redéfinir GLADIATEUR_X comme l'objet untel, si il quitte le LocalObject sera OBJECT_INVALID

Avec le script bien identé :
NWScript :
void main()
{
int i = 1;
int quitter = FALSE;

while(i < 9 && quitter == FALSE)
{
  if(GetLocalObject(GetArea(OBJECT_SELF), "GLADIATEUR_" + IntToString(i)) != OBJECT_INVALID)
      i++;
  else
  {
      SetLocalObject(GetArea(OBJECT_SELF), "GLADIATEUR_" +IntToString(i));
      quitter = TRUE;
  }
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 25/07/2006 12:26:16 Sujet du message :

Bon j'ai deux problèmes, donc je vais récapituler un petit peu tout ça.

On a besoin de un Objet Invisible tagger : "Arene1"
D'un garde

OnSpawn du Garde de l'entrée de l'arène:
(script name: "test")
NWScript :Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


OnConversation du Garde de l'entrée de l'arène:
(script name: "test1")
NWScript :
#include "NW_I0_GENERIC"
void main()
{
int iNb = GetListenPatternNumber();
object oPC = GetLastSpeaker();
switch (iNb)
{
case 1000 :
SetLocalObject(GetObjectByTag("Arene1"), "Mec", oPC);
ExecuteScript("test2", oPC);
break;
}
}

[b:3dd97a0d52]Script[/b:3dd97a0d52]:
(script name: "test2")
[nwscript]void main()
{
int i2=1;
int tf = TRUE;
object oPC = GetLocalObject(GetObjectByTag("Arene1"), "Mec");
while(i2<9 && tf == TRUE)
{
if(GetLocalObject(GetObjectByTag("Arene1"), "GLADIATEUR_" + IntToString(i2)) != OBJECT_INVALID)
{
SendMessageToPC(oPC, "Gladiateur "+IntToString(i2)+" pris.");
i2++;
}
else
{
SetLocalObject(GetObjectByTag("Arene1"), "GLADIATEUR_"+IntToString(i2), oPC);
SendMessageToPC(oPC, "Script executer, vous etes le gladiateur : "+IntToString(i2));
tf = FALSE;
DeleteLocalObject(GetObjectByTag("Arene1"), "Mec");
SetLocalInt(GetObjectByTag("Arene1"), "Joueurs", GetLocalInt(GetObjectByTag("Arene1"), "Joueurs")+1);
if(GetLocalInt(GetObjectByTag("Arene1"), "Joueurs") == 8)
{
int j=1;
while(j<9)
{
ExecuteScript("test3", GetLocalObject(GetObjectByTag("Arene1"), "GLADIATEUR_"+IntToString(j)));
}
}
}
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Script:
(script name: "test3")
NWScript :
void main()
{
int i = 1;
for(i=1; i<5; i++)
{
AddToParty(GetLocalObject(GetObjectByTag("Arene1"), "GLADIATEUR_" + IntToString(i)),GetLocalObject(GetObjectByTag("Arene1"), "GLADIATEUR_1"));
AssignCommand(GetLocalObject(GetObjectByTag("Arene1"), "GLADIATEUR_" + IntToString(i)),ActionJumpToObject(GetObjectByTag("TELEPORTATION_GROUPE_1")));
SpeakString("Party1", TALKVOLUME_SHOUT);
}
for(i=5; i<9; i++)
{
AddToParty(GetLocalObject(GetObjectByTag("Arene1"), "GLADIATEUR_" + IntToString(i)),GetLocalObject(GetObjectByTag("Arene1"), "GLADIATEUR_5"));
AssignCommand(GetLocalObject(GetObjectByTag("Arene1"), "GLADIATEUR_" + IntToString(i)),ActionJumpToObject(GetObjectByTag("TELEPORTATION_GROUPE_2")));
SpeakString("Party2", TALKVOLUME_SHOUT);
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Mon premier probleme, le dernier script ("test3"), pour le tester j'ai mis un SpeakString("", TALKVOLUME_SHOUT);, et malheuresement, ça fait un gros bug, le message apparait 30 mille fois! J'ai essayé avec un While et ça fait pareil...

Mon deuxieme probleme c'est que je ne sais pas comment faire les secondes, je sais que un heartbeat se "met à jour" toutes les 6 secondes, mais je ne sais pas du tout commencer faire pour que le temps descende a 15 sec en envoyant un message a tous les gladiateurs et de rebooter le timer a 0 sec quand on est arriver a 15...

Voila
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 26/07/2006 14:07:00 Sujet du message :

[:UP:] Razz
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
SephirothFr
Ecuyer
Inscrit le: 24 Fév 2005
Messages: 57
Localisation: Rennes, bretagne
Répondre en citant
Posté le : 26/07/2006 17:19:20 Sujet du message :

Ce script ne marche que sur les serveur arène, non ?
_________________

Le site du Troll-Farceur, bar médiéval rennais !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 26/07/2006 19:09:47 Sujet du message :

non lol, tu peux faire un serveur RP, et tu mets une petite zone avec mes scripts pour faire quelque arène avec des joueurs aléatoires Smile
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
SephirothFr
Ecuyer
Inscrit le: 24 Fév 2005
Messages: 57
Localisation: Rennes, bretagne
Répondre en citant
Posté le : 27/07/2006 08:16:31 Sujet du message :

Ah oki ! merci ! ça ,peut être intéressant !
_________________

Le site du Troll-Farceur, bar médiéval rennais !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 31/07/2006 09:20:27 Sujet du message :

up? il y a plus personne pour m'aider? Sad
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 101.888ms