#0 

16-12-2008 22:23:37

ayboangelus
Membre
Date d'inscription: 08-12-2008
Messages: 53

Bonjour,

Je suis en train de développer mon appli 3D.

J'ai fais une page login.cpp, character.cpp, et akhynia.cpp (qui contient le main).

Dans akhynia.cpp j'ai ce code

#include "Login.h"
#include "Character.h"
#include <stdio.h>

#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
#pragma comment(lib, "Irrlicht.lib")

int main() {
    login();
    if (login() == 2) { character(); }
}

truc simple.

Et pour les 2 autres j'ai le même code sauf que pour character.cpp j'ai qu'un seul affichage de test.

Lorsque je valide mon login et mot de passe en cas d'erreur j'ai rien c normal je n'ai pas configurer ce cas encore, mais lorsque c'est bon j'ai 2x ma fenêtre de login.

Quelqu'un peut m'éclairer svp.

Merci et bonne soirée.

Dernière modification par ayboangelus (16-12-2008 22:26:15)


Akhynia - MMORPG en projet => http://www.akhynia.fr

Hors ligne


#1 

17-12-2008 00:44:48

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

yop ^^
regarde ta condition :p
" if(login() == 2) "
tu crée une première fois login en début puis une deuxième fois dans la condition smile
et euh login renvoie une variable que tu le maitte dans une condition ? ^^
sinon je pense que tu devraient passer ton codes en c++ sa seraient plus simple si tu veut faire une application asse complexe wink
car na pas l'aire de l'être smile

sinon si j'est pas "capter" se que tu expliquai poste ton codes source je peut toujours aider wink

Hors ligne


#2 

17-12-2008 05:38:10

ayboangelus
Membre
Date d'inscription: 08-12-2008
Messages: 53

non c'est tout a fait ça.

je veux lancer le fichier login.cpp, et s'il est validé passer au fichier character.cpp

Comme j'apprend le c++ sur le tas ce n'est pas tout le temps facile ^^. Peut tu m'aider ?

En fait à la fin si le login est bon j'ai un return 2;

Mais apparement cela ne fonctionne pas comme ça. Vu que je n'ai plus de dev c++ sur le projet, je dois apprendre en attendant d'en trouver un autre.


Akhynia - MMORPG en projet => http://www.akhynia.fr

Hors ligne


#3 

17-12-2008 15:04:52

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

et bien il te suffi de ne garder que ta condition ...
int main()
{
    if (login() == 2)
      {
         character();
      }
}
ou alors tu fait des class ( je peut t'expliquer le fonctionnement si tu veut ses un peut chiant a comprend quant on viens du C *-* )
mais je te propose plutôt de faire un schémas de l'application que tu veut faire ... sa m'arrive de temps en temps dans faire un sa aide beaucoup
pour donner un exemple celle de mon application même si se n'est pas très exacte ( je sais pas trop comment mis prend avec les socket )

voila ^^ sinon je suppose que tu connait le site du zero :p ...
et sinon je risque de poster mon codes source tu pourras t'en inspirer wink

Hors ligne


#4 

17-12-2008 17:30:38

ayboangelus
Membre
Date d'inscription: 08-12-2008
Messages: 53

Je te remercie pour ce bout de code ça marche presque parfaitement. Par contre il m'ouvre une nouvelle fenêtre. Je suis sur que cela vient du fait que je recréé mon moteur 3d et que je remets une boucle de rendu.

Y'a t-il une solution pour ça.

Code:

#include "Login.h"

using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace gui;

int login() {
    
    stringc varlogin,varpass;

    IrrlichtDevice* device = createDevice(video::EDT_OPENGL,core::dimension2d<s32>(1024,768), 32);
    video::IVideoDriver* driver = device->getVideoDriver ();
    scene::ISceneManager *scenegraph = device->getSceneManager ();
 
    //On récupère un pointeur vers la gui.
    IGUIEnvironment* env = device->getGUIEnvironment();
    IGUIEnvironment *gui = scenegraph->getGUIEnvironment();

    //On crée une instance contenant la police.
    gui::IGUIFont *font = env ->getFont("font.png");
 
    //affichage du texte
    gui::IGUIStaticText* login = env->addStaticText(L"Login",core::rect<s32>(710,190,900,220), false);
    gui::IGUIEditBox *loginbox = env->addEditBox(L"", core::rect<s32>(610,230,890,280));
    gui::IGUIStaticText* pass = env->addStaticText(L"Mot de passe",core::rect<s32>(660,320,900,350), false);
    gui::IGUIEditBox *passbox = env->addEditBox(L"", core::rect<s32>(610,360,890,410));
    gui::IGUIButton *boutonval = gui->addButton(core::rect<s32>(670,480,830,530), 0, -1, L"Validez");

    //Mise en place de la police d'écriture pour les zones indiquées.
    login->setOverrideFont(font);
    loginbox ->setOverrideFont(font);
    pass ->setOverrideFont(font);
    passbox ->setOverrideFont(font);
    boutonval ->setOverrideFont(font);

    //On charge la page d'intro
    video::ITexture *image = driver->getTexture ("intro.jpg");
    //On teste que ça a marché
    if (image == 0)
    {
       return 0;
    }
 
    //On met un titre dans la barre fenetre windows
    wchar_t titre[100];
    swprintf(titre, 100, L"Akhynia");
    device->setWindowCaption(titre);
      
    //boucle de rendu
    while(device->run())
    {
        driver->beginScene(true, true, SColor(255,100,101,140));
        driver->draw2DImage(image, core::position2d<s32> (0,0));
        env->drawAll();
        scenegraph->drawAll ();
        driver->endScene();
        if (boutonval->isPressed() == true) 
        {
            varlogin = loginbox->getText();
            varpass = passbox->getText();
            stringc loginbase = "aybo"; stringc passbase = "test";
            if (varlogin == loginbase && varpass == passbase) return 2;
        }


    }
 
    device->drop ();
    return 1;
}

Ca c'est mon login

Code:

#include "Character.h"

using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace gui;

int character() {

    IrrlichtDevice* device = createDevice(video::EDT_OPENGL,core::dimension2d<s32>(1024,768), 32);
    video::IVideoDriver* driver = device->getVideoDriver ();
    scene::ISceneManager *scenegraph = device->getSceneManager ();
 
    //On récupère un pointeur vers la gui.
    IGUIEnvironment* env = device->getGUIEnvironment();
    IGUIEnvironment *gui = scenegraph->getGUIEnvironment();

    //On crée une instance contenant la police.
    gui::IGUIFont *font = env ->getFont("font.png");

    //affichage du texte
    gui::IGUIStaticText* login = env->addStaticText(L"test réussi avec succès",core::rect<s32>(710,190,900,220), false);
    login->setOverrideFont(font);

    //On met un titre dans la barre fenetre windows
    wchar_t titre[100];
    swprintf(titre, 100, L"Akhynia");
    device->setWindowCaption(titre);
      
    //boucle de rendu
    while(device->run())
    {
        driver->beginScene(true, true, SColor(255,100,101,140));
        env->drawAll();
        scenegraph->drawAll ();
        driver->endScene();
    }
 
    device->drop ();
    return 1;
};

Et ça c'est ma création de perso.


Akhynia - MMORPG en projet => http://www.akhynia.fr

Hors ligne


#5 

17-12-2008 18:35:54

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

et bien oui wink
et pourquoi tu ne ferais pas appelle au caractère depuis le login ?
ou alors faire une fonction pour crée et faire le rendue de la fenêtre et dans cette fonction tu fait appelle au rendue ? smile
exemple :

Code:

class login
{
          public:
             login(irrDevice*device) : Device(device)
              {  creation du menu  }
             ~login{  guiEnvironement->clear()  }
             int draw(){ tu retourn ta valeur }
          private:
                  IrrDevice *Device;
                  ......
}
class caratere
{
          public:
             caratere(irrDevice*device) : Device(device)
              { ..... }
             ~caratere{  guiEnvironement->clear();  smgr->clear();   driver->removeAllTextures();  }
             int draw(){ tu retourn ta valeur }
          private:
                  IrrDevice *Device;
                  ......
}
class core
{
     public:
         core()
         {
               creation de la fentre ...
              LOGIN = new login(device);
         }
         ~core() //destructeur
         {
               device->closeDevice();
         }
         void draw()
         {
                  bool truc = true;
                   while()
                  {
                           rendue de la fentre
                           int plop = LOGIN->draw();
                           if(truc && plop == 2)
                           {
                                    delete LOGIN;
                                    LOGIN = NULL;
                                    Carac = new caratere(device);
                                    true = false;
                           }
                           f(Carac)
                                    Carac->draw();
                  }
          }
      private:
         IrrDevice *device;
         login *LOGIN;
         caratere *Carac;
        ......
}
int main()
{
     core CORE;
     core.draw();
}

voila j'espere que je n'est rien oublier wink
tu me dit quand sa marche ... uo pas tout compris ^^

Dernière modification par Magun (17-12-2008 18:36:41)

Hors ligne


#6 

17-12-2008 18:57:36

ayboangelus
Membre
Date d'inscription: 08-12-2008
Messages: 53

oula je test ça de suite, c'est ce qu'il me semblait que ma structure de programme était foireuse.

Pour la compréhension de ton code, google m'aidera je pense c'est un super copain.

Je test et merci en tout cas pour ton aide. Je te tiens au courant.

-- EDIT 1 -- Euh finalement c'est la panique mdr. J'ai 182 erreurs du jamais vu. Faut que je reprenne ça. sad

-- EDIT 2 -- Je vais me trouver un codeur, c'est une catastrophe. tant pis mon équipe de graphiste, modeleur, et musicien sont au chomage technique pour quelque temps. :'(

J'ai comprit le code dans ces grandes lignes, mais impossible à comprendre le fonctionnement.

Dernière modification par ayboangelus (17-12-2008 19:55:25)


Akhynia - MMORPG en projet => http://www.akhynia.fr

Hors ligne


#7 

17-12-2008 23:31:45

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

et bien je peut te faire un code utilisable si tu le souhaite ( core et juste les fonction d'appele de login et caractere )
néanmoins il faudrait d'abord que tu comprenne comment exploiter une class :p sans cela tu n'iras pas bien loin ^^
regarde se tuto que l'explique http://www.siteduzero.com/tutoriel-3-11 … e-1-2.html
sinon poste ton nouveaux code et je te corrige tes erreur smile
j'est un peut de temps libre ( rendue qui seras peut-être prochainement la vidéo d'introduction de mon application ... tres long avec ma becanne ...)


ehum a ui j'avais pas pensser a qu'elle que chause sur l'avans dernier poste :s
tu pouvais faire un device->closeDevice();
avans le device->drope(); a la fin du login()
et aussi j'est oublier d'ecrire le " ; " a la fin de la class :

class truc
{
    public:
          .....
};

Dernière modification par Magun (17-12-2008 23:57:25)

Hors ligne


#8 

18-12-2008 17:28:16

ayboangelus
Membre
Date d'inscription: 08-12-2008
Messages: 53

pour le ; c'est bon j'ai corrigé, pour le tuto des classes j'ai comprit sur la gestion de mon personnage ca va etre super pratique par contre pour mon appli je vois pas comment faire c'est ca le soucis.

Tiens je te file mon petit bout de code, ya rien de particulier pour l'instant. Si tu me le met comme tu l'a marqué j'arriverais peut être mieux à comprendre.

Merci par avance.

http://rapidshare.com/files/174587342/aragon.rar.html

Bonne soirée ^^

PS: j'ai essayé avec le bout de code que tu m'a donné à mettre après le rendu et cela ne change rien.

PS2: le nom que tu as est celui d'un ancien projet. Aragon n'existe plus en 3D, c'est Akhynia maintenant.

Dernière modification par ayboangelus (18-12-2008 17:33:19)


Akhynia - MMORPG en projet => http://www.akhynia.fr

Hors ligne


#9 

18-12-2008 20:23:19

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

voila je tes fait un code utilisable dans l'état wink
j'espère que se seras tout :p

login.h :

Code:

#ifndef LOGIN_H
#define LOGIN_H

#include <irrlicht.h>
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace gui;

class login
{
    public:
        login(IrrlichtDevice* Device)
        {
            device = Device;
            driver = device->getVideoDriver();
            scenegraph = device->getSceneManager ();
            env = device->getGUIEnvironment();

            IGUIFont *font = env->getFont("font.png");
            if(font)
                env->getSkin()->setFont(font);

            env->addStaticText(L"Login",core::rect<s32>(710,190,900,220), false);
            loginbox = env->addEditBox(L"", core::rect<s32>(610,230,890,280));
            env->addStaticText(L"Mot de passe",core::rect<s32>(660,320,900,350), false);
            passbox = env->addEditBox(L"", core::rect<s32>(610,360,890,410));
            boutonval = env->addButton(core::rect<s32>(670,480,830,530), 0, -1, L"Validez");

            image = driver->getTexture("intro.jpg");
        }
        ~login()
        {
            env->clear();
            scenegraph->clear();
            driver->removeAllTextures();
        }
        char draw()
        {
            if(image)
                driver->draw2DImage(image, core::position2d<s32> (0,0));
            if (boutonval->isPressed() == true)
            {
                varlogin = loginbox->getText();
                varpass = passbox->getText();
                stringc loginbase = "aybo"; stringc passbase = "test";
                if (varlogin == loginbase && varpass == passbase)
                    return 2;
            }
        }
    private:
        stringc varlogin,varpass;
        ITexture *image;
        IVideoDriver *driver;
        IrrlichtDevice *device;
        ISceneManager *scenegraph;
        IGUIEnvironment *env;
        IGUIButton *boutonval;
        IGUIEditBox *loginbox;
        IGUIEditBox *passbox;
};

#endif

coreApp.h:

Code:

#ifndef IRR_CORE
#define IRR_CORE

#include "Character.h"

class coreApp
{
    public:
        coreApp();
        ~coreApp();
        void draw();
    protected:
    private:
        IrrlichtDevice *device;
        IGUIEnvironment* env;
        IVideoDriver *driver;
        ISceneManager *scenegraph;
        login *LOGIN;
        character *Carac;
};

#endif

caoreApp.cpp:

Code:

#include "coreApp.h"

coreApp::coreApp()
{
    device = createDevice(EDT_OPENGL,dimension2d<s32>(1024,768), 32);
    driver = device->getVideoDriver();
    scenegraph = device->getSceneManager();
    env = device->getGUIEnvironment();
    LOGIN = new login(device);
}
coreApp::~coreApp()
{
    device->closeDevice();
}
void coreApp::draw()
{
    while(device->run())
    {
        driver->beginScene(true, true, SColor(255,100,101,140));
        env->drawAll();
        scenegraph->drawAll();
        static bool next = true;
        if(LOGIN && LOGIN->draw() == 2)
        {
            delete LOGIN;
            LOGIN = false;
            Carac = new character(device);
        }
        if(Carac)
            Carac->draw();
        driver->endScene();
    }
    device->drop();
}

charactere.h:

Code:

#ifndef CHARACTER_H
#define CHARACTER_H

#include "Login.h"

class character
{
    public:
        character(IrrlichtDevice* Device);
        ~character();
        char draw();
    private:
        IrrlichtDevice* device;
};

#endif

charactere.cpp

Code:

#include "Character.h"

character::character(IrrlichtDevice* Device)
{
    device = Device;
    IVideoDriver* driver = device->getVideoDriver ();
    ISceneManager *scenegraph = device->getSceneManager ();

    //On récupère un pointeur vers la gui.
    IGUIEnvironment* env = device->getGUIEnvironment();
    IGUIStaticText* login = env->addStaticText(L"test reussi avec succes",rect<s32>(710,190,900,220),false);

    wchar_t titre[100];
    swprintf(titre, 100, L"Akhynia");
    device->setWindowCaption(titre);
}
character::~character()
{
}
char character::draw()
{
}

akhynia/main .cpp:

Code:

#include "coreApp.h"

int main()
{
    coreApp *coreApli = new coreApp();
    coreApli->draw();
}

voila et la prochaine fois stp
recopie pas  bêtement les codes que l'on donne, je t'avais écris le principe du code ...
quand tu voie des commentaire dans un code sans les // avants ou entre /* et */ ses que se n'est pas forcement un code compilable smile

a par sa et bien tu avais écris des caractère spéciaux dans une chaine de caractère ( é, è,@, .... ) ne peuve être écrire seulement avec une fonction qui est qu'elle que par dans le forum wink

voila voila bonne chance pour le futur de ton aplication smile

Hors ligne


#10 

18-12-2008 21:36:01

ayboangelus
Membre
Date d'inscription: 08-12-2008
Messages: 53

Merci pour ton code, mais j'ai une erreur:

character.cpp(22) : error C4716: 'character::draw' : doit retourner une valeur

et si je met :

Code:

char character::draw()
{ return 1; 
}

J'ai ces erreurs encore pire à comprendre :

Code:

coreApp.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) class irr::IrrlichtDevice * __cdecl irr::createDevice(enum irr::video::E_DRIVER_TYPE,class irr::core::dimension2d<int> const &,unsigned int,bool,bool,bool,class irr::IEventReceiver *,char const *)" (__imp_?createDevice@irr@@YAPAVIrrlichtDevice@1@W4E_DRIVER_TYPE@video@1@ABV?$dimension2d@H@core@1@I_N22PAVIEventReceiver@1@PBD@Z) référencé dans la fonction "public: __thiscall coreApp::coreApp(void)" (??0coreApp@@QAE@XZ)
1>C:\aragon\projetencours\Akhynia\Debug\Akhynia.exe : fatal error LNK1120: 1 externes non résolus

Alors à mon avis ce que je retourne n'est pas bon


Akhynia - MMORPG en projet => http://www.akhynia.fr

Hors ligne


#11 

18-12-2008 21:52:55

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

char charactere::draw()
{
       return 1;
}

devrait marcher ....
du moins sur mon compilateur sa marche ...
uhm ....
essaye de rajouter :
#pragma warning(default:4716)
dans charactere.cpp

Hors ligne


#12 

20-12-2008 14:25:18

ayboangelus
Membre
Date d'inscription: 08-12-2008
Messages: 53

J'ai essayé avec un

char charactere::draw()
{
       return device;
}

comme il est mis dans le coreApp.ccp mais j'ai cette erreur:
character.cpp(21) : error C2440: 'return' : impossible de convertir de 'irr::IrrlichtDevice *' en 'char'

et avec ta ligne pour le warning ca fonctionne pas mieux. :'(

Vais jamais y arriver.

Dernière modification par ayboangelus (20-12-2008 14:26:46)


Akhynia - MMORPG en projet => http://www.akhynia.fr

Hors ligne


#13 

20-12-2008 16:25:25

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

ses normale faut pas retourner un device tu fait n'importe quoi la :p
faut bien faire un return variable; et pas device ><
et bien écoute pour ma par je suit sous code::blocks ... migre donc vers celui-la il est très bien, comparer a visual c++ apparemment il n'est pas très au point puis que beaucoup de personne on des problèmes avec wink

Hors ligne


#14 

20-12-2008 19:33:15

ayboangelus
Membre
Date d'inscription: 08-12-2008
Messages: 53

Bon alors j'ai pas d'erreurs ils se compile bien ,donc je vais rester sur code::block

Par contre si je compile en release en fait tout passe sans condition en fait j'ai mon login et mon character à la suite. C'est bizard.

Dernière modification par ayboangelus (20-12-2008 20:07:41)


Akhynia - MMORPG en projet => http://www.akhynia.fr

Hors ligne


#15 

20-12-2008 22:55:07

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

ah tu voulais pas comme sa ? neutral
dsl ^^

Hors ligne


#16 

20-12-2008 23:22:51

ayboangelus
Membre
Date d'inscription: 08-12-2008
Messages: 53

En fait j'ai créé un login.cpp et ca m'a réglé le problème.

Tout fonctionne actuellement. A part le fait que je n'ai pas mon image de fond, ce qui est du à mon avis à une histoire de plan.

Je vais approfondir le sujet. Merci beaucoup en tout cas.

On Peut clore le sujet. ^^

J'ai trouver un topic de DragonBlood, concernant la gestion des plan avec cette commande:

IGUIElement* guiRoot=guiEnv->getRootGUIElement( ) ;
guiRoot->bringToFront(Ma_guiElement);

J'ai essayé vite fait de l'intégrer mais marche pas, je réssayerais demain.

Bonne soirée

Dernière modification par ayboangelus (20-12-2008 23:59:41)


Akhynia - MMORPG en projet => http://www.akhynia.fr

Hors ligne


#17 

21-12-2008 01:46:56

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

merci et de rien wink
pour les plan tu passe soient par le topic de DragonBlood ( par initialisation des image de la gui
soient tu peut faire un driver->draw2DImage(driver->getTexture("img.jpg"), ..................
et suivent dans l'ordre ou tu les mais il se super pose enfin bon wink

Dernière modification par Magun (21-12-2008 01:47:14)

Hors ligne


#18 

21-12-2008 13:37:12

ayboangelus
Membre
Date d'inscription: 08-12-2008
Messages: 53

Pour ce que est du driver->draw2DImage(driver->getTexture("img.jpg"), je comprend le principe tu fait apparaitre au fur et à mesure des plans tes images. Mais pour mon appli je ne vois pas comment faire car le rendu est dans la partie core, et l'image dans le login et d'après ce que je comprend le core.cpp charge le rendu et ensuite c'est le le rendu du login qui est enclenché.

Donc pour moi cela ne peut pas fonctionner, mais comme je suis un newbie ^^ je me trompe peut être.

Quand au code de DragonBlood, je n'ai que des erreurs je n'arrive pas à le faire fonctionner correctement.


Akhynia - MMORPG en projet => http://www.akhynia.fr

Hors ligne


#19 

21-12-2008 14:23:16

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

et bien tu peut changer le mode de rendue de core
rendre d'abord le login
puis la scène et la gui wink
sinon tu tu peut faire plus simple wink
exemple
IGUImage *img = guienv->addImage(rect<s32>(0,0,800,600);
                 img->setImage(diver->getTexture("plop.tga"));
                 img->setAlphatruc(true);
                 img->setScaleImage(true);
IGUImage *img2 = guienv->addImage(rect<s32>(0,0,800,600);
                 img2->setImage(diver->getTexture("plop.tga"));
                 img2->setAlphatruc(true);
                 img2->setScaleImage(true);
de cette façon l'img s'affiche d'abord puis ses img2 donc img2 est par dessus img wink
et tu peut changer la texture a nimport qu'elle moment sans que sa change qu'elle que chose ... seul problème ses de rajouter une img entre 2 ( poste de dragonblood )

Hors ligne


#20 

21-12-2008 16:01:48

ayboangelus
Membre
Date d'inscription: 08-12-2008
Messages: 53

Youpiiiiiii ca fonctionne, je vais pouvoir continuer mon projet maintenant que mes problèmes sont résolus.

Un grand merci pour ta patience ^^.

Au plaisir j'espère.


Akhynia - MMORPG en projet => http://www.akhynia.fr

Hors ligne


#21 

21-12-2008 17:18:44

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
83 invités en ligne
Aucun membre connecté
RSS Feed