Aller au contenu

Trxyy

Membre
  • Compteur de contenus

    40
  • Inscription

  • Dernière visite

  • Days Won

    6

Trxyy last won the day on 18 août

Trxyy had the most liked content!

Réputation sur la communauté

7 Réputation

1 abonné

À propos de Trxyy

  • Rang
    Membre

Jeux

  • Minecraft
    Trxyy

Visiteurs récents du profil

1088 visualisations du profil
  1. Serveur RolePlay Minecraft (Armasky) - Fermer

    Bonjour, Le menu principal a pris une grosse inspiration d'un mod j'imagine. Car je vois une grosse ressemblance du Menu Principal par ici: Cordialement.
  2. Mod pour mon future serveur

    Salut, Ajoute moi sur Discord, je vais essayer de t'aider au maximum pour ton launcher. Même si on sait tous que Minecraft meurt a petit feu, je veux bien t'aider pour ton launcher. Mon discord: Trxyy#2332 Cordialement.
  3. Bonsoir, le crack n'est pas autorisé. Je ne peux donc pas t'expliquer comment faire ceci. Cependant, si tu le souhaite, tu peux éventuellement m'ajouter sur Discord pour en parler, mais sache que je n'apprécie pas du tout les systèmes de crack. Discord Name: Trxyy#2332 Cordialement.
  4. Bonjour, La librairie est en développement ;). Je n'ai pas encore pensé a ajouter une barre de progression ni le pourcentage, je vais y travailler dessus ;) Cordialement.
  5. Bonjour. Tu peux les télécharger ICI (pour la 1.8) Cordialement.
  6. Bonjour. Ouvre la librairie avec Winrar et tu la récupère (tu auras 2 dossiers ainsi que 1 fichier => le index.php) Cordialement.
  7. Créer un launcher Minecraft Animé UN PROBLEME MAJEUR AU LANCEMENT DU JEU A ETAIT PATCH. Cette œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas dUtilisation Commerciale - Pas de Modification 3.0 non transposé . Tout partage implique que vous citiez l'auteur original. < INTRODUCTION > Bonjour a tous. Dans ce tutoriel, nous allons voir comment faire un launcher "animé" grâce a une librairie faite par moi-même. CECI EST UNE LIBRAIRIE EST EN DEVELOPPEMENT! ELLE SERA MODIFIEE AVEC LE TEMPS. ATTENTION, cette librairie est utilisée surtout pour le visuel de votre launcher! DES TUTOS VIDEOS SANS UTILISATION DE LA LIBRAIRIE SE TROUVENT ICI (CLIQUER POUR VOIR) La librairie est basée sur le JavaFX, elle ne sert que de support. Le mieux est quand même de développer sois-même. < PRE-REQUIS > -La librairie "TLib" qui vous pouvez vous procurer ici: TLib.jar -Le fichier index.php pour les fichiers a télécharger. index.php -Les bases du développement -Un cerveau, du temps ainsi que de l'envie. < SOMMAIRE > 1) CREER LA PARTIE VISUELLE 2) OPTIONNEL MISE A JOUR & LANCEMENT 3) AUTHENTIFICATION 4) OPTIONNEL SAUVEGARDE DES IDENTIFIANTS [1] CRÉER LA CLASSE PRINCIPALE Alors pour commencer, il faut crée un nouveau Projet Java (Click droit, new > java project) puis mettre le nom que vous voulez. On va ajouter notre librairie au projet, clique droit sur le projet, Properties (tout en bas), puis a gauche aller sur "Java build Path", puis dans Libraries dans l'onglet en haut, et enfin sur Add external JARs a droite, sélectionnez la librairie TLib.jar, puis faites ok, ensuite, cliquez sur la fleche sur le "JRE System Library [JavaSE-**], cliquez sur Access rules, puis sur EDIT a droite, cliquez sur ADD Dans Résolution mettez ACCESSIBLE et dans rule Pattern ecrivez "javafx/**", puis validez tout et faites OK jusqu’à retourner sur le plan de travail. Après on va créer une classe qui s'appellera comme vous le voulez. Pour le coup, je l'appellerais Main, puis juste avant de cliquer sur Finish, on va cocher un carré avec écrit "public static void main(String[] args) comme ça, ça nous aura créer cette fonction qui est la fonction "maître", car c'est la fonction qui lancera notre application. Voila, ensuite on va extends notre classe vers "Application" Pour l'import, ca sera javafx.application.Application, ensuite on aura une petite erreur sur Main, pour remédier a ça, on mets le curseur sur Main et clique sur "Add unimplementeds methods" Et on obtient alors ceci Ensuite, on va écrire quelques lignes de code pour préparer le terrain. Dans la fonction void main, on ajoute ceci. TConstants.setParameters("MonServeur", "monServeur", 880, 520, "/chemin vers le package des resources/", "url de mise à jour", Versions.V1_7_10, "g2po"); launch(args); // JAVAFX Alors, décortiquons un peu. Nom du Launcher, nom de la APPDATA, Taille horizontale de la fenêtre, Taille verticale de la fenêtre, le chemin vers le package des ressources, L’URL du site de mise a jour, La version du jeu, et une série de caractères (pour enregistrer le pseudonyme et le mot de passe) Pour l'URL de mise à jour => Votre lien est par exemple http://monsite.fr/downloads/, il doit y avoir http://monsite.fr/downloads/index.php, http://monsite.fr/downloads/assets,/ http://monsite.fr/downloads/game/ et http://monsite.fr/downloads/libraries/ Pour le package, çà sera votre package ou il y aura toutes vos ressources (Images des boutons, vidéo d’arrière plan, logo, icone...) Moi pour le coup je l'ai appelé resources_custom. Retrouvez ICI les resources utilisés pour le tuto. Bon maintenant, on va dans la fonction start, puis on va écrire Scene scen = new Scene(); <= C'est la base de notre appli. TApp app = new TApp(arguments...); <= C'est une classe que j'ai fait déjà prête afin de pouvoir déplacer la fenêtre en cliquant etc.. les arguments sont, Stage, Scene, Nom du Launcher, Taille horizontal, taille verticale, et le style de la fenêtre, du genre, avec bordure, sans bordures etc... La j'ai mis, StageStyle.UNDECORATED pour qu'il n'y ai pas de rebord. enfin nous avons le app.setIconImage pour définir l'icone de la fenêtre. On a une erreur sur create(); et c'est normal car nous n'avons pas créer la fonction encore, donc on se mets au boulot et on génère ça! Donc la on a une vue d'ensemble de la classe en même temps comme ça, on vérifie qu'on ai rien oublié. bref surtout on regarde la fonction create. on creer le "Pane root = new Pane()", on défini sa taille avec setPrefSize. et on return root. Et c'est ici qu'on va définir nos "Constantes" pour afficher la vidéo d'arrière plan ainsi que le logo, les boutons etc.. En haut de la classe un va écrire ceci: private TBackground bk; private ResourceLocation loc; private TConfig data; private LauncherPanel panel; Et dans la fonction create on ajoute ceci: root.setPrefSize(TConstants.getWidth(), TConstants.getHeight()); // DEBUT AJOUT data = new TConfig(McDir.getDirectory()); bk = new TBackground(loc.getMedia("background.mp4"), root); panel = new LauncherPanel(root, stage); // FIN AJOUT return root; Donc alors, la on a ajouté le background vidéo, le ResourceLocation, la classe Config ainsi qu'une classe LauncherPanel qui a une erreur. le data = new TConfig() C'est pour l'enregistrement des logs tout ça tout ça. Le bk = new TBackground(), le background.mp4 c'est le nom de votre video dans votre package, si la video se nomme "giselle_en_trotinette.mp4", bah vous remplacez background.mp4 par giselle_en_trotinette.mp4. panel = new LauncherPanel() C'est notre panel qu'on a pas encore crée. Donc on mets le curseur sur LauncherPanel et on clique sur Create classe LauncherPanel. Bon déjà la, si vous avez mis vos ressources dans votre package prévu a l'effet, ainsi que les lignes de codes, vous devez avoir votre vidéo qui se lit. Pour moi, ça rends comme ça, après, tout dépendra de votre vidéo hein. Bon, maintenant on va faire nos boutons ainsi que les textfields pour le pseudo et mot de passe. On va dans la classe LauncherPanel qui est vide normalement, et on ajoute ceci en haut public static TTextField usernameField; public static TPassField passwordField; public static TButton loginButton; public static TButton closeButton; public static TButton minimizeButton; private static TConstants config; private ResourceLocation resourceLocation; Puis le constructeur aussi public LauncherPanel(Pane contentPane, Stage primaryStage) { } Bon, la on défini nos boutons ainsi que nos textfields. Ensuite dans le constructeur de LauncherPanel, on ajoutes ces lignes de codes la. loginButton = new TButton(contentPane); loginButton.setFont(FontLoader.loadFont(config, "Sabado-Regular.otf", "Sabado", 16F)); loginButton.setText("JOUER"); loginButton.setSize(100, 30); loginButton.setPosition(config.getWidth() / 2 - 50, config.getHeight() / 2 + 75); loginButton.setAction(event -> { // ACTION }); minimizeButton = new TButton(contentPane); minimizeButton.setSize(37, 20); minimizeButton.setPosition(config.getWidth() - 83, -4); minimizeButton.setInvisible(); minimizeButton.setGraphic(new ImageView(resourceLocation.loadImage("minimize.png"))); minimizeButton.setHover(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { minimizeButton.setOpacity(0.80); } }); minimizeButton.setUnHover(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { minimizeButton.setOpacity(1.0); } }); minimizeButton.setAction(event -> { Stage stage = (Stage)((TButton)event.getSource()).getScene().getWindow(); stage.setIconified(true); }); closeButton = new TButton(contentPane); closeButton.setSize(37, 20); closeButton.setPosition(config.getWidth() - 45, -4); closeButton.setInvisible(); closeButton.setGraphic(new ImageView(resourceLocation.loadImage("close.png"))); closeButton.setHover(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { closeButton.setOpacity(0.80); } }); closeButton.setUnHover(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { closeButton.setOpacity(1.0); } }); closeButton.setAction(event -> { TConfig.onExit(); System.exit(0); }); usernameField = new TTextField(contentPane); usernameField.setFont(FontLoader.loadFont(config, "Sabado-Regular.otf", "Sabado", 17F)); usernameField.setSize(200, 30); usernameField.setPosition(config.getWidth() / 2 - 100, config.getHeight() / 2); usernameField.setVoidText("pseudonyme"); usernameField.setOnKeyPressed(new EventHandler<KeyEvent>() { @Override public void handle(KeyEvent ke) { if (ke.getCode().equals(KeyCode.ENTER)) { // ACTION } } }); passwordField = new TPassField(contentPane); passwordField.setFont(FontLoader.loadFont(config, "Sabado-Regular.otf", "Sabado", 17F)); passwordField.setSize(200, 30); passwordField.setPosition(config.getWidth() / 2 - 100, config.getHeight() / 2 + 35); passwordField.setVoidText("mot de passe"); passwordField.setOnKeyPressed(new EventHandler<KeyEvent>() { @Override public void handle(KeyEvent ke) { if (ke.getCode().equals(KeyCode.ENTER)) { //ACTION } } }); Bon on va décrypter un peut tout ça. loginButton = new TButton(contentPane); loginButton.setFont(TFont.loadFont(config, "Sabado-Regular.otf", "Sabado", 16F)); loginButton.setText("JOUER"); loginButton.setSize(100, 30); loginButton.setPosition(config.getWidth() / 2 - 50, config.getHeight() / 2 + 75); loginButton.setAction(event -> { // ACTION }); Pour les boutons, on dis que leBouton = nouveau Bouton. leBouton.setFont <= On défini la police d’écriture (args: config, "nom de la police d’écriture dans le package", "Nom de la police d’écriture (se trouve on ouvrant la police d’écriture)", taille police. leBouton.setText <= on dis quel texte on veut qu'il y ai sur notre bouton) leBouton.setSize <= Taille horizontale et verticale du bouton. leBouton.setPosition <= Position du bouton sur la fenetre. leBouton.setAction <= Action du bouton et eventuellement, pour les boutons Images on mets leBouton.setInvisible() Et leBouton.setGraphic <= pour afficher une image. usernameField = new TTextField(contentPane); usernameField.setFont(TFont.loadFont(config, "Sabado-Regular.otf", "Sabado", 17F)); usernameField.setSize(200, 30); usernameField.setPosition(config.getWidth() / 2 - 100, config.getHeight() / 2); usernameField.setVoidText("pseudonyme"); usernameField.setOnKeyPressed(new EventHandler<KeyEvent>() { @Override public void handle(KeyEvent ke) { if (ke.getCode().equals(KeyCode.ENTER)) { // ACTION } } }); leField = nouveau textField leField.setFont <= Police d'ecriture leField.setSize <= taille horizontale et verticale leField.setPosition <= position sur la fenêtre leField.setVOidText <= texte quand le textfield est vide. leField.setOnKeyPressed <= Action quand on appuie sur une touche, actuellement, c'est KeyCode.ENTER pour que quand on appuie sur ENTREE, ca fasse l'action du bouton JOUER. Pour l'instant on obtient un truc comme ça: Pour l'instant on a un assez bon résultat. On va ajouter le Logo du Serveur. On va retourner dans la Classe Main, on va ajouter public static TLogo logoPanel; Et logoPanel = new TLogo(loc.loadImage("logo.png"), 600, 100, 150, 40, root); Décryptons. TLogo(loadImage(imageLogo, taille de l'image X, taille Y, position X, position Y, root,) Si vous souhaitez avoir un petit effet de mouvement du Logo, mettez ceci a la place: logoPanel = new TLogo(loc.loadImage("logo.png"), 400, 80, root); logoPanel.setImagePos(TConstants.WIDTH / 2 - 180, 50); Ajouter setImagePos(position X, position Y); // Tout simplement et le mouvement se fera tout seul =) Bon après, ça fais un peu vide en haut, et en bas aussi, et aussi au milieu tiens, pourquoi pas. On va ajouter 3 rectangles dans la classe LauncherPanel qui vont redonner un peu plus de style ;) public static TRectangle rectTop = new TRectangle(0, 0, 1100, 20); public static TRectangle rectLow = new TRectangle(0, config.getHeight() - 20, 1100, config.getHeight()); public static TRectangle rectLoginBox; // A AJOUTER EN HAUT DE CLASSE Et ensuite on ajoute ceci mais au dessus de "loginButton = new TButton(contentPane);" : rectTop.setColor(Color.WHITE); rectTop.setOpacity(0.8); contentPane.getChildren().add(rectTop); rectLow.setColor(Color.BLACK); rectLow.setOpacity(0.6); contentPane.getChildren().add(rectLow); rectLoginBox = new TRectangle(config.getWidth() / 2 - 110, config.getHeight() / 2 - 25, 220, 140); rectLoginBox.setColor(Color.BLACK); rectLoginBox.setOpacity(0.6); contentPane.getChildren().add(rectLoginBox); Car sinon les rectangles seront en dessus et çà cacherais nos boutons. La en gros on dis: rectangle = nouveau Rectangle rectangle.setColor <= On défini la couleur du rectangle. rectangle.setOpacity <= L'opacité du rectangle contentPane.getChildren.add() <= Ajouter a la fenêtre. Bref, voila que maintenant on a une barre en haut, en bas et un carré au milieu pour faire comme une zone de Login. Dans la barre du haut, on va afficher notre nom de serveur. public TLabel labelTitle; Et labelTitle = new TLabel(contentPane); labelTitle.setText("Tutoriel Launcher"); labelTitle.setPosition(TConstants.WIDTH / 2 - 90, -4); labelTitle.setFont(FontLoader.loadFont(config, "Sabado-Regular.otf", "Sabado", 22F)); labelTitle.setTextFill(Color.WHITE); Ligne 1: définir le texte à afficher Ligne 2: position X et Y Ligne 3: La police d'ecriture Ligne 4: Couleur du texte Bon, voila déja on a une base de launcher. Après c'est vrai que ça fais un peu brouillon.. Donc faut modifier tout ça et rajouter du Style. On ajoute ceci en desous de loginButton = new TButton(contentPane); loginButton.setStyle("-fx-background-color: rgba(53,89,119,0.4); -fx-text-fill: white;"); Ça va faire un truc un peu plus "joulie tout beau tahu.", Un effet assez sympathique, que l'on peut réutiliser sur les usernameField et passwordField. Si on décortique, on écrit: -fx-background-color: rgba(53,89,119,0.4); || Pour définir la couleur d'arrière plan ainsi que l'opacité (rgba(rouge,vert,bleu,opacité); -fx-text-fill: white; || Pour définir la couleur du texte. (pour l'exemple, white (blanc)). Ça nous rends un truc comme ça On profite de regarder le rendu du Logo aussi ;) [2] Bon c'est bien beau tout ça, mais la partie du téléchargement et du lancement du jeu ? Bien nous avons plusieurs solutions. Soit utiliser un système de téléchargement custom, ou bien utiliser ce qui suit. Personnellement, je vous conseille de faire votre propre système de téléchargement, c'est toujours mieux. Il va falloir déjà upload sur notre site les fichiers que Minecraft aura besoin. Ce que je vous conseille c'est de supprimer votre .minecraft et de télécharger la version de votre minecraft que vous souhaitez utiliser. vu que votre minecraft a était supprimé, votre installation sera neuve et donc ça sera mieux pour regrouper tout les fichiers nécessaires. Moi je l'ai fait et j'ai téléchargé la version 1.7.10. PACKS PREFAITS: PACK 1.7.10 PACK 1.8 PACK 1.9 Pour le Pattern du Dossier de téléchargement il faut qu'il soit présenté comme ceci: Dans le dossier assets, il vous faut les assets de votre version, personnellement j'ai ceci Ensuite dans le dossier game il faut: un dossier natives avec toutes les natives (télécharger les natives ICI (1.7.10)) et un fichier game.jar (en gros c'est le 1.7.10.jar qu'il faut renommer game.jar) Et dans le dossier libraires, il faut toutes les libs. Après, il faut le index.php a la racine, comme sur la première image. Mettez le dans le dossier de téléchargement sur votre hebergeur WEB. Ensuite dans votre classe LauncherPanel, public static Updater updater = new Updater(); public static XMLParser parser = new XMLParser(); public TLabel labelState; public static DecimalFormat df2 = new DecimalFormat(".##"); public TProgressBar bar; XMLParser <= Il va vérifier les fichiers Updater <= il va mettre a jour. labelState <= nombre de fichiers restants. df2<= Format décimal pour le pourcentage du téléchargement. bar <= Barre de progression. ensuite on ajoute ceci labelState = new TLabel(contentPane); labelState.setText("WAIT"); labelState.setPosition(2, TConstants.getHeight() - 20); labelState.setFont(FontLoader.loadFont(config, "votre police ecriture", "nom de la police", 60F)); labelState.setTextFill(Color.WHITE); labelState.setVisible(false); Ligne 2: texte a afficher Ligne 3 position Ligne 4: définir police écriture Ligne 5: Mettre sur Non visible car on télécharge pas directement. Puis: bar = new TProgressBar(contentPane); bar.setPosition(0, TConstants.getHeight() - 10); bar.setStyle("-fx-background-color: rgba(255, 255, 255, 0.0); -fx-padding: 1px; -fx-background-insets: 0; -fx-text-box-border: forestgreen; -fx-control-inner-background: palegreen;"); bar.setSize(TConstants.getWidth(), 20); Ligne 2: position Ligne 3: style (décoration) Ligne 4: taille de la barre. On va créer une fonction play() en bas de la classe et dans le loginButton.SetOnAction() on écrit play();. C’est ce qu va faire notre action quand on va cliquer sur le bouton. on ajoute de même pour les fields Pour être plus rapide, et si vous avez copié le code, faire une recherche avec CTRL + F et recherchez //AJOUT et remplacez //AJOUT par play();. dans la fonction play(), Il faut ajouter ceci à l’intérieur. Wrapper.log("Logging In..."); loginButton.setVisible(false); usernameField.setVisible(false); passwordField.setVisible(false); labelState.setVisible(true); rectLoginBox.setVisible(false); Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(0), event -> labelState.setText("Mise a jour en cours... (" + df2.format(bar.getProgress() * 100) + "%)")), new KeyFrame(Duration.seconds(0.1))); timeline.setCycleCount(Animation.INDEFINITE); timeline.play(); if (!updater.isUpdating) { updater.checkForUpdate(parser, updater, bar); } Ligne 2 -> 5 <= On mets en invisible tout les composants et on affiche le label de téléchargement (labelState) ensuite on dis que si le updater n'est pas entrain de travailler, on va démarrer le téléchargement. et updater.CheckForUpdate va vérifier les fichiers invalides et les télécharger. Si vous n'avez pas de barre de progression, mettez null a la place de bar. Voilà, maintenant plus qu'a faire notre système d'authentification car sinon, c'est du Launcher Crack qu'on parle la :/ [3] Authentification Alors Maintenant, pour l'authentification, on va devoir écrire en haut de notre fonction play(); Authenticator auth = new Authenticator(usernameField.getText(), passwordField.getText(), true); auth.auth(); Puis ensuite, avec tout le code qu'il y a en dessous, on va devoir dire que si on est connecté, on lance le téléchargement, sinon, on affiche une erreur. if (auth.isAuthed) { Wrapper.log("Logging In..."); loginButton.setVisible(false); usernameField.setVisible(false); passwordField.setVisible(false); labelState.setVisible(true); rectLoginBox.setVisible(false); Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(0), event -> labelState.setText("Mise a jour en cours... (" + df2.format(bar.getProgress() * 100) + "%)")), new KeyFrame(Duration.seconds(0.1))); timeline.setCycleCount(Animation.INDEFINITE); timeline.play(); if (!updater.isUpdating) { updater.checkForUpdate(parser, updater, labelState); } } else { new TALert("Can't connect to minecraft.net", AlertType.ERROR); Wrapper.log("Can't connect to minecraft.net"); } Et c'est tout! [4] SAUVEGARDE DES IDENTIFIANTS En haut de notre classe LauncherPanel, on ajoute public Preferences savedData = Preferences.userRoot(); Ensuite, on va récupérer les identifiants, ensuite, en dessous de usernameField.setFont(Font.font("Sabado", 17F)); usernameField.setText(savedData.get(config.PREFERENCES_ABREV + "_username", "")); en dessous de passwordField.setFont(Font.font("Sabado", 17F)); On ajoute: passwordField.setText(savedData.get(config.PREFERENCES_ABREV + "_pwd", "")); Et dans la fonction play();, en dessous de if (auth.isAuthed) { On ajoute: savedData.put(config.PREFERENCES_ABREV + "_username", usernameField.getText()); savedData.put(config.PREFERENCES_ABREV + "_pwd", passwordField.getText()); Et voilà, la nos identifiants sont enregistrés & sauvegardés. Bon voilà, il y a des chances que le tuto soit modifié pour des raisons d'optimisation car ce n'est pas optimisé du tout (du moins je pense car c'est la première version de la Lib) Merci de m'avoir lu, passez une agréable journée/soirée. N'hésitez pas à réagir a ce tutoriel afin de me faire remonter des problèmes etc..
  8. Launcher animé

    Salut, Merci bien a toi. Cordialement.
  9. Problème de son

    En gros, faut tu trouves, les sons de la witch en .ogg (où bien tu les télécharges sur internet direct depuis l'url des resources de minecraft.). Ensuite tu dois les ajouter dans ton dossier de tes assets comme sur l'image. C'est tout ce que tu as a faire. Tu peux avoir les sons ICI (Audio Witch) C'est ce que j'ai réccupéré d'un gars qui a mis sur internet sa map ainsi que son pack de resources pour avoir les sons de la witch (ICI). Voila, amuses-toi bien Cordialement, Trxyy.
  10. Problème de son

    Moi, j'ai pris ça sur internet pour un test, et ça fonctionne.
  11. Problème de son

    Salut, si tu es en 1.7 il me semble que les audios de la witch n'etaient pas encore là. Donc en gros faudrait que tu les récupères directement sur internet, on bien en les prenant du dossier d'installation du .minecraft. Cordialement, Trxyy.
  12. Launcher animé

    Bonjour. Oui, par Skype, steven.perso10 Bonne journée.
  13. Launcher animé

    Oh merci :3, Si plusieurs personnes me le demande, oui un tutoriel sera la ^_^ En tout cas, merci de ta réponse, Cordialement.
  14. Launcher animé

    Bonjour, J'ai remarqué qu'il y a une section Créations, donc je me permet de montrer une"création test" car ce n'est pas fini. Voici le rendu que j'ai obtenu en tentant de faire un launcher un peu plus animé, pour changer d'une image fixe . (Le gif est de qualité médiocre je vous l'accorde.) Bien cordialement. Bonne Soirée/journée. Il semblerait que quelque chose s'est reveillé ICI :O
  15. Nouveau Style de Serveur

    Merci de ta reponse.
×