Search the Community

Showing results for tags 'tutoriel / partage'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Register & Login
    • Register
    • Login
  • Espace Communautaire
    • Funky Emulation
    • Présentations
    • Services
    • Discussions Générales
    • Bureau de la Communauté
    • Espace Premium
  • Emulation & Co
    • Rewrite a Release / Tutorial
    • Suggest a Release / Tutorial
    • The Ideas Box
  • Emulation de jeux
    • RaiderZ
    • Aura Kingdom
    • Metin2
    • Dofus
    • World of Warcraft
    • Minecraft
    • Aion
    • Habbo
    • Voir plus...
  • Espace Divers
  • Internationnal Forum
  • PassionDev's Forum
  • M2Project - Metin2's M2SF
  • M2Project - Metin2's Aide / Questions / Support
  • M2Project - Metin2's Tutoriels & Partages
  • M2Project - Metin2's Suggestions
  • M2Project - Metin2's Report de Bugs

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Nationality


Sexe


Discord


Skype


Biographie


Site


Nombre

 
or  

Found 780 results

  1. Salut à tous, voici le Système de recherche de groupe officiel [Hidden Content]
  2. Bonjour à tous, Ayant reçu et vu plusieurs demandes d'aide sur l'installation d'une machine virtuelle permettant de compiler tout en lançant les files ainsi que des personnes qui souhaitaient des liens autres que MEGA pour le VDI actuelle. J'ai décidé de me lancer dans la création d'une nouvelle machine virtuelle sous la version 9.2 32bit de FreeBSD, je vais vous expliquer ci-dessous les raisons pour lesquelles j'ai choisi cette version ainsi que les fonctionnalités de la VM. Sommaire : Pourquoi avoir choisi cette version de FreeBSD? Quelles sont les fonctionnalités de cette VM? Listing des packages installées sur la VM. Choses à savoir Donc commençons Pourquoi avoir choisi cette version de FreeBSD? Ça va être assez simple, la version 9.2 de FreeBSD reste la plus compatible avec les files Metin2, la version 9.3 fait aussi l'affaire mais il s'avère qu'elle pose quelques problèmes au niveau des fetch (permettant de télécharger via un lien), donc j'ai préféré ne pas la choisir. Ensuite, les versions beaucoup plus supérieures, à la 10 et au-dessus, la version de gcc (compilateur du game/db) n'est plus installée par défaut, ce qui veut dire que la version 4.2 n'est plus accessible d'installation via les ports/pkg (à ma connaissance). De ce fait vous ne pourrez donc pas compiler avec une version supérieure de gcc au dessus de la "4.2". Autrement, vous ne pourrez pas compiler les sources sans faire des modifications au niveau des libs/makefile et une dizaine de fichier serveur. Vous pouvez toujours installer une version supérieure de gcc et supprimer celle installée par défaut, vous êtes libre de faire ce que vous voulez. Quelles sont les fonctionnalités de cette VM? Alors, cette machine virtuelle a été créée dans le but d'être la plus compréhensible possible afin de pouvoir être utilisée par tout type de personnes, quel que soit leur niveau dans ce domaine. Tout d'abord, l'heure sera mise à jour automatiquement par le réseau informatique FreeBSD, le protocole utilisé pour permettre ceci est "ntpd", il peut être désactivé par le biais du ficher rc.conf du répertoire etc. Par la suite, MySQL a été optimisé de sorte à ce qu'il se mette en cache automatiquement, permettant ainsi l'ouverture rapide de votre serveur et d'éviter au maximum les connexions refused. La machine virtuelle a été défragmenté et compactée de sorte à être beaucoup plus rapide et légère par les services proposés par "VMware". Les packages ont étés installés par l'utilitaire "pkg" et il vous permet donc de les supprimer afin d'augmenter leurs versions ou les rétrograder. Par exemple pour mettre mysql56 au lieu de la 55 vous tapez juste "pkg remove mysql55-server" et une fois la désinstallation finie vous tapez "pkg install mysql56-server". Listing des packages installés sur la VM Chose à savoir Les files installées sur cette machine virtuelle sont les 2016, les files ont été éteintes, quêtes rechargées et les logs nettoyés pour éviter une surcharge inutile du VDI. Pour les sources, ceux-ci sont compilables, je me suis permis de régler le TIME BOMB pour que les files puissent se lancer sans soucis et pour que vous puissiez lancer les files directement, le MakeFile a été modifié de sorte à ce que vous puissiez obtenir un game et un db strippé ainsi que la version originale optimisée. Cependant, les sources ont été archivées au format .tar.gz pour éviter par la même occasion une surcharge du VDI au niveau de la taille, il se situe dans /usr/src/ vous aurez juste à entrer la commande "cd /usr/src && tar -zxvf mainline.tar.gz". Si vous ne savez pas compiler vous pouvez suivre le tutoriel de Calypso. Liste des modifications apportés sur les files Pour toute demande d'aide, veuillez poster dans la section appropriée qui est celle-ci. Cette machine virtuelle pourra être mis à jour à la demande des membres. La machine virtuelle a été upload au format .VDI pour ceux utilisant virtualbox ainsi qu'au format .VMDK pour ceux qui comme moi utilise VMware. Ils possèdent une taille de 9GO6 non compressés et une taille de 2GO compressé. Amusez-vous bien ! Liens VDI : Cliquez ici pour télécharger Mirror (1) Liens VMDK : Cliquez ici pour télécharger Mirror (1) Liens Files Mirrorace: MEGA Liens Sources Mirrorace: MEGA: Le mot de passe MYSQL/SSH est : funky-emu Voilà, j'espère que celles-ci vous auront aider. La vie ou la mort, faîtes votre choix. Cordialement, --- Download #Saw.
  3. Salut! Après avoir regardé mes anciens tutoriels, et voulant en refaire d'autre, j'ai conclu que certains manquaient vraiment d'informations, donc une petite rénovation ne lui fera pas de mal à celui la non plus. Le python est facilement compréhensible pour certain, pour d'autre non (cc @Kijaru, me demande pas pourquoi j'ai pensé à toi). Quelques explications ne seraient donc pas de refus. Objectifs : Comprendre comment marche un système, Connaître les principales fonctions essentielles à n'importes quelles interfaces. Réalisez vous même votre interface. Partie 1 : Comprendre comment marche un système : Pour bien comprendre comment marche un système, il faut déjà comprendre ce que c'est, et combien de partie le compose. Il faut savoir qu'un système, si nous suivons la manière de coder de ymir, est composé de deux parties : Les éléments et leurs positions : Dans ce fichier, on va répertorier dans un dictionnaire tous les éléments qui vont composer notre interface, comme des boutons, etc. Mais plus en général, c'est ici que nous allons définir la taille de la fenêtre, des boutons, et le texte. Le système : C'est la partie qui va gérer le tout. Il va afficher l'interface, et dire "si il clique là, tu fais ça" etc... Quand je vous dis que c'est "si nous respectons le format de ymir" c'est qu'il existe une autre façon. Effectivement, il vous est possible de tout regrouper en un fichier, et de définir "sur le tas" tous les éléments nécessaire. Je pourrais si vous le voulez vous faire un autre tutoriel pour vous présenter l'autre méthode. C'est notre partie système qui va être chargé en première, c'est elle même qui ira chercher la partie interface afin de s'en servir. On dispose généralement les parties comme ceci dans nos packs : Système : ui[nom système].py ---> root Interface: [nom système].py -----> uiscript Partie 2 : L'interface : Bien, pour créer une interface, nous allons créer un nouveau fichier dans le uiscript je vais l'appeler takuma.py de mon côté. Je vous invite à ouvrir le fichier que vous venez de créer. Nous pouvons commencer ! Avant, comme je compte vous apprendre à coder un minimum proprement, nous allons utiliser le uiScriptLocale, c'est un module qui permet de récupérer les phrases qui seront déclarées dans notre locale_interface, nous verrons ça plus tard. Pour l'ajouter à notre projet, tapez : import uiScriptLocale Bien. Maintenant, nous allons dès maintenant définir une variable qui va contenir le chemin d'accès aux différents éléments, je vous expliquerais ceci au moment venu, pour l'instant, tapez à la ligne : ROOT_PATH = "d:/ymir work/ui/public/" Bien ! Nous pouvons enfin commencer notre interface. Nous allons maintenant créer un dictionnaire que nous allons nommé "window" (fenêtre) : window = {} C'est ce dictionnaire qui va contenir toute notre interface, je vous invite à l'écrire comme ceci pour une meilleur lisibilité : window = { } Maintenant, tous les éléments se trouvant de dans seront devancés d'au moins une tabulation. Nous devons donc maintenant donner des propriétés à notre window, sinon, comment pourrait-on connaitre comment il est fait etc... ? Pour cela nous allons définir 6 propriétés : name : Tout simplement le nom de notre fenêtre, style : Le modèle utilisé pour notre fenêtre, x : L'apparition de la fenêtre sur l'axe des abscisses sachant qu'il démarre en haut à gauche de l'écran. y : L'apparition de la fenêtre sur l'axe des ordonnées. width : La largeur de la fenêtre height : la haute de la fenêtre. Bien, commençons par le nom : window = { "name" : "TakumaDialog", } Retenez la syntaxe elle est sensiblement la même pour tous les éléments. Maintenant pour le style, nous allons utiliser un tuple (liste immuable) qui va contenir nos deux propriétés : movable et float : "style" : ("movable", "float",), Pourquoi mettre une virgule à la fin me direz-vous ? C'est les tuples, ils doivent être défini comme ceci. Sinon python va enlever les parenthèses et considéré ça comme une variable lambda. Ensuite, pour x et y nous allons mettre 0 : window = { "name" : "TakumaDialog", "style" : ("movable", "float",), "x" : 0, "y" : 0, } Ajoutons maintenant les deux derniers paramètres : "width" : 305, "height" : 255+25, Compléter avec la taille que vous voulez généralement, on adapte au fur à mesure ! Nous allons ajouter "des enfants" à notre fenêtre sinon, on doit s'arrêter là... Autant vous dire que ça ne ressemble à rien ! Pour ça, nous allons ajouter une nouvelle balise : "chlidren" : window = { "name" : "TakumaDialog", "style" : ("movable", "float",), "x" : 0, "y" : 0, "width" : 305, "height" : 255+25, "children" : } Pour celle-ci, nous allons devoir mettre les parenthèses pour le tupples, puis ajouter des guillemets pour recréer un dictionnaire, les éléments qui seront de dans. Cela donne : window = { "name" : "TakumaDialog", "style" : ("movable", "float",), "x" : 0, "y" : 0, "width" : 305, "height" : 255+25, "children" : ( { }, ), } Bien ! Nous allons maintenant dans les childs définir le tableau en lui même "board", il aura les mêmes balises si ce n'est "style" qui va passer en "type", je le fais d'un coup pour abréger un peu : Maintenant dans notre board, nous allons ajouter tous les éléments que va contenir notre fenêtre. Cependant, n'oubliez pas un élément important : La barre de titre et le titre ! Vous ne pouvez pas deviner le code, je vous le donne : Oui, ça largeur doit être de 4 plus grande que le board. Maintenant, j'attire votre attention sur deux choses : J'ai définie les propriétés en ligne pour les chlidrens de titlebar, comme ça vous voyez comment cela se passe, La balise text à la fin, va nous renvoyer une valeur ("texte" ici). Cependant, nous allons faire de façon qu'elle nous renvoie une valeur de notre locale_interface. Pour cela, nous allons taper : "text": uiScriptLocale.TAKUMA_TITLE, Vous devrez ensuite ajouter une ligne dans votre locale_interface (locale/xx/) et taper : TAKUMA_TITLE valeur Ceci, bien séparer par une tabulation. Et votre fichier récupérera tout seul la variable comme un grand afin de la faire correspondre à la propriété texte. Et bien voilà, vous avez votre base. Il ne vous manque plus que un élément, les types qui existent et vous pourrez finir la partie interface tout seul. les éléments suivant vont se placer sur le board, il faut donc sortir de titlebar, et repartir dans board, pour cela, j'ai déjà comme vous pouvez le voir sur le screen du haut remis des autres balises au même niveau que titlebar. Et bien c'est elles qui vont contenir un nouvel élément, par exemple, un bouton : Quant au trois nouvelles propriétés apparues ici : defaut_image: Chemin d'accès de l'image du bouton par défaut, over_image : Chemin d'accès de l'image du bouton quand la souris passe dessus, down_image : Chemin d'accès de l'image du bouton quand on clique dessus. Notez qu'on utilise la variable ROOT_PATH afin de ne pas avoir à taper à chaque fois "d:/ymir work/ui/public/" Si vous voulez ajouter d'autres éléments, il vous suffit de procéder au même niveau que le bouton, et de répéter cette opération. Nous découvririons d'autres types plus tard. Vous avez donc à la fin de cette partie : Partie 3 : Le système : Enfin la troisième partie ! La plus sympa ! Pour celle-ci vous allez créer un fichier ui[nomsystème].py, pour moi, cela sera uitakuma.py. Nous repartons d'un fichier vide ! Comme l'autre, nous avons des importations à effectuer ! Elles ajoutent selon ce que vous voulez faire, mais vous aurez en général besoin de celles-ci : import ui import app Nous allons maintenant créer une class, nommée TakumaDialog qui prendra en paramètre ui.ScriptWindow : Nous allons ensuite créer la fonction init, c'est une fonction assez spéciale. C'est une fonction qui s'exécute automatiquement quand on fait appel à la class. Pour faire comme ymir, et respecter son caractère privé, elle va en réalité s'appeler __init__, tapez : Pourquoi utiliser self dans init me direz vous ? Et bien, outre que ce soit une norme, il va nous permettre si vous allez plus loin dans le Python de créer des instances. Bref, nous allons ensuite créer deux fonctions importantes : __Initialize, __Load, Je ne l'ai pas précisé jusque là, les deux tirets du huit devant marque le caractère privée de la fonction. Chaque fonction va avoir un but très précis : La fonction Initialize va créer toutes les variables, les listes, etc... nécessaires au bon fonctionnement du programme. Vous verrez plus tard que les listes seront très importantes quand vous utiliserez des radio_buttons (bouton donc un seul est actionnable). Je ne vous en ai pas parlé tout de suite car nous devons évoquer une histoire d'index avec eux. je vous en parlerai plus tard. Dans la fonction Initialize vous allez mettre par exemple pour l'interface que j'ai faite : self.takumaButton = 0 Cette fonction ne servira que à ça. Profitons en pour finir notre fonction __init__ : Maintenant avant de commencer notre fonction __Load(), nous allons en créer deux autres (oui ça fait beaucoup, je sais, mais plus tard ça sera automatique chez vous. Si vous voulez, je vous fournirai un .py avec toutes les fonctions essentielles pour coder proprement) : __Load_LoadScript() __Load_BindObject() La fonction LoadScript est toujours la même, la voici : def __Load_LoadScript(self, fileName): try: pyScriptLoader = ui.PythonScriptLoader() pyScriptLoader.LoadScriptFile(self, fileName) except: import exception exception.Abort("System.TakumaDialog.__Load_LoadScript") Je vous explique ne tombez pas de votre chaise ! try signifie "essayer", ici on essaye de faire ce qu'il y a après le try, et s'il n'y arrive pas, il envoie le except. Ici, nous utilisons en réalité cette fonction crée dans notre ui.py : def LoadScriptFile(self, window, FileName): import exception import exceptions import os import errno self.Clear() print "===== Load Script File : %s" % (FileName) try: # chr, player µîÀº sandbox ³»¿¡¼­ import°¡ Çã¿ëµÇÁö ¾Ê±â ¶§¹®¿¡,(º¿ÀÌ ¾Ç¿ëÇÒ ¿©Áö°¡ ¸Å¿ì Å­.) # ¹Ì¸® script dictionary¿¡ ÇÊ¿äÇÑ »ó¼ö¸¦ ³Ö¾î³õ´Â´Ù. import chr import player import app self.ScriptDictionary["PLAYER_NAME_MAX_LEN"] = chr.PLAYER_NAME_MAX_LEN self.ScriptDictionary["DRAGON_SOUL_EQUIPMENT_SLOT_START"] = player.DRAGON_SOUL_EQUIPMENT_SLOT_START self.ScriptDictionary["LOCALE_PATH"] = app.GetLocalePath() execfile(FileName, self.ScriptDictionary) except IOError, err: import sys import dbg dbg.TraceError("Failed to load script file : %s" % (FileName)) dbg.TraceError("error : %s" % (err)) exception.Abort("LoadScriptFile1") except RuntimeError,err: import sys import dbg dbg.TraceError("Failed to load script file : %s" % (FileName)) dbg.TraceError("error : %s" % (err)) exception.Abort("LoadScriptFile2") except: import sys import dbg dbg.TraceError("Failed to load script file : %s" % (FileName)) exception.Abort("LoadScriptFile!!!!!!!!!!!!!!") ##### Body = self.ScriptDictionary["window"] self.CheckKeyList("window", Body, self.BODY_KEY_LIST) window.ClearDictionary() self.InsertFunction = window.InsertChild window.SetPosition(int(Body["x"]), int(Body["y"])) if localeInfo.IsARABIC(): w = wndMgr.GetScreenWidth() h = wndMgr.GetScreenHeight() if Body.has_key("width"): w = int(Body["width"]) if Body.has_key("height"): h = int(Body["height"]) window.SetSize(w, h) else: window.SetSize(int(Body["width"]), int(Body["height"])) if True == Body.has_key("style"): for StyleList in Body["style"]: window.AddFlag(StyleList) self.LoadChildren(window, Body) Assez complexe, je vous l'accorde. Je vais donc vous simplifiez la chose : Elle permet de charger un fichier d'interface et ses éléments. Du côté de la fonction __Load_BindObject, elle va de son côté charger tous les éléments de notre interface et les stocker dans des variables. Bien, si on résume pour nous, nous avons : Retenez la manière de charger des éléments, avec le GetObject = self.GetChild c'est la manière la plus propre à mon goût. Bien, maintenant complétons la fonction __Load : Dans Load nous allons maintenant attribuer tous les événements(ce qu'il se passe quand on clique sur quelque chose) et la position de la fenêtre car si vous vous souvenez nous avions mis x = y = 0 pour coordonnées d'apparition de la fenêtre. Pour cela, ajoutons : self.SetCenterPosition() Tapez aussi cette ligne, qui ne change quelque soit la gui, sauf si elle n'a pas de titlebar ou que vous avez changé le nom des éléments : self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close)) Ce qui nous donne en tout : Définissons maintenant un événement à notre bouton. Pour cela nous allons utiliser la fonction SAFE_SetEvent(), renvoyant sur cette fonction : def SAFE_SetEvent(self, func, *args): self.eventFunc = __mem_func__(func) self.eventArgs = args Enfin, bref, je vous donne la syntaxe, cela donne : self.takumaButton.SAFE_SetEvent() Nous entrons ensuite entre les parenthèses la fonction qui va s'exécuter quand l'événement sera lancé, par exemple : self.takumaButton.SAFE_SetEvent(self.maFonction) Par exemple, nous allons faire que cette fonction envoie "Bonjour !" dans le chat à la place de celui qui déclenche l'événement. Créons la fonction : def maFonction(self): import net net.SendChatPacket("Bonjour ! ") Il ne vous manque plus qu'une seule fonction pour que votre système soit prêt, la fonction pour l'afficher ! Et la voici : def Show(self): ui.ScriptWindow.Show(self) Félicitation, vous avez maintenant les bases pour créer votre système ! Je vous ferais d'autre tutoriel, pour par exemple évoquer les radio_buttons, les images, etc. Je vous invite à essayer de découvrir par vous même en regardant dans votre fichier ui.py qui contient tout ce qu'il faut ! Vous obtenez donc à la fin : Comme promis, un fichier neutre contenant les fonctions minimums : ICI ! Bon développement !
  4. Bonjour à tous ! Un petit message d'introduction et on commence ! Tout d'abord merci à @Nicky31 pour son tutoriel qui représente une très grande partie de ce poste ! Je me permets de le reprendre pour corriger/apporter des éléments qui bloquaient pas mal de monde. Durée approximative : 10 à 30 en fonction de votre qualification. L'avantage d'Ancestra Remake 54 est le multi-serveurs (Il peut gérer plusieurs serveurs). Commençons ! 1 - Pré-Requis Disposer d'Ancestra Remake 54 Disposer d'une IP de connexion (Hamachi, No-Ip, dédié ...), à vous de voir ce que vous préférez. Hamachi : Simule un réseau local. No-Ip : Redirige sur votre IP accessible ici quand votre opérateur ne vous permet pas de la garder fixe. Dédié : Sur un autre PC constamment allumé fait maison ou loué en ligne. Hébergeur conseillé : Kimsufi / soyoustart. Disposer de WampServer (gratuit) et de Navicat (crack ou payé) sauf si vous savez vous débrouiller avec PhpMyAdmin Disposer de Dofus 1.29 (Certaines personnes ont des problèmes lors du lancement du client Dofus lorsqu'ils n'installent pas Dofus 1.29 dans Program Files (x86) ). 2 - Installer les base de données En premier lieu, l'émulateur a besoin, pour fonctionner, de deux bases de données. Je vais expliquer la procédure via Navicat, si vous utilisez PhpMyAdmin je pense que vous saurez vous débrouiller tout seul. Si ce n'est pas déjà fait, commencez par installer Wamp & Navicat. Lancez Wamp puis Navicat en attendant que Wamp passe au vert dans votre barre des tâches. Si Wamp ne passe pas vert (vous pouvez passer cette étape si c'est le cas), le problème vient probablement d'une interférence avec skype. Dans skype: Outils -> Options -> Avancées -> Connexion -> Décocher "Utiliser les ports 80 et 443 comme alternative". Redémarrez Skype & Wamp [*]Ouvrez Navicat, cliquez sur Connection -> MySQL [*]Mettez seulement localhost à Connection Name et un mot de passe de votre choix à Password (non obligatoire mais bon). Ne touchez pas à ce qui est déjà rempli, faites Ok [*]Double cliquez sur localhost normalement apparu dans la colonne de gauche de Navicat. (Afin d'ouvrir la connexion) [*]Click droit sur localhost (votre connexion), puis clickez sur New Database [*]Ecrivez ancestra_realm dans Enter database name puis clickez sur OK. [*]Répétez la même opération pour une bdd du nom de ancestra_game [*]Comme pour la connexion, double clickez sur vos deux bases de données afin de les "ouvrir" (cela s'affichera en vert) [*]On va maintenant importer des données dans nos deux bdd à partir de fichiers .sql: Click droit sur ancestra_realm, puis Execute Batch File et ciblez AncestraR_Realm.sql contenu dans le dossier AR54/BDD, puis faites Start [*]Répétez la même opération pour remplir ancestra_game à partir du fichier AncestraR_Game.sql, toujours situé dans le même dossier. Vous voilà maintenant avec vos deux bases de données crées, remplies, prêtes mais ... non à jours J'vous jure, j'vous ai pas fait faire de la *****, juste que les développeurs d'AR ont dû rectifier des choses sur les bases de données, et au lieu de mettre à jour les deux gros patchs qu'on vient d'exécuter, ont mis chaque rectification dans un fichier .sql à part. Tous ces fichiers .sql, vous pouvez les trouver dans le sous dossier BDD/Patchs. Attention ! Vous ne devez pas les exécuter n'importe comment. Vous pouvez observer que le nom de chaque fichier suit cette logique: AncestraR_Realm/Game - Patch revN°Patch - Infos sur contenu.sql Realm/Game correspond à la bdd sur laquelle doit être appliqué le patch. N°Patch correspond au numéro du patch (ils sont tous numérotés) Infos sur contenu correspond à quelques infos sur le contenu du patch. Vous devez exécuter tous ces patchs en faisant attention à le faire sur la bonne base de données, et dans l'ordre croissant des numéros. Exemple pour la db game: AncestraR_Game - Patch rev2 - Pets.sql en premier AncestraR_Game - Patch rev3 - Defenders of resources.sql en deuxième ... PS : Ne vous inquiétez pas "Patch rev5" affiche un message d'erreur dans les logs mais ce n'est pas grave. Au boulot ! Une fois ceci fait, vous aurez vos deux bases de données enfin prêtes et complètes. Nous pourrons alors passer à la configuration de l'émulateur en lui même 2(bis) - Survol du fonctionnement d'un Emulateur La particularité d'AR54 qui m'a poussé à faire un tuto sur son installation (alors qu'il y a déjà des tutos pour d'autres versions d'AR), c'est que la différence de fonctionnement entre cette version et celles antérieures complique sa configuration. Voilà comment fonctionne normalement un émulateur, dissocié en deux parties realm et game : Le client se connecte sur la partie realm. Il choisit son serveur, et le realm lui renvoi l'ip et le port du game gérant le serveur demandé. Le client coupe alors la connexion avec le realm pour se connecter au game Le game gère tout le reste du jeux. Il doit néanmoins communiquer avec le realm pour avoir certaine données. Dans les versions précédentes, le multi-serveur n'était pas géré: on ne pouvait alors avoir qu'un serveur, et il n'était plus utile d'avoir cette organisation avec une application realm et une autre pour chaque serveur. Les développeurs ont donc fusionné ces deux applications en une seule. De cette façon, le client restait tout le temps connecté sur la même application (pas tout à fait en réalité, mais on entrerait dans les détails techniques). Au niveau de la configuration; on n'avait qu'une config pour une application, avec une ip & un port à renseigner pour l'unique application. Avec le multi-serveur, les développeurs ont du dissocier le realm et le game : Un seul realm (serveur de connexion), et un game par serveur. Il faut donc à présent une config par appli' (deux pour un seul serveur), et des ips & ports en plus. En résumé, il nous faut: L'ip du realm et son port de connexion (celui sur lequel le client se connecte) L'ip de chaque serveur & leur port de connexion (donnés par le realm au client). Pour ne pas compliquer les choses, nous allons gérer qu'un serveur Le port de communication utilisé entre le realm et les games. L'identifiant de chaque game ; c'est avec celui-ci que le realm s'assure qu'il à affaire aux games attendus. (Sinon n'importe quel personne tierce pourrait connecter son propre game modifié) 3 - Configurer Ancestra Remake 54 La partie précédente n'était pas vraiment prévue, mais j'ai trouvé intéressant de parler du fonctionnement de l'émulateur, ça peut aider certains à comprendre certains éléments. Bon, la première étape est de faire connaître au realm notre game. Et une table de notre db realm est prévue pour cela. Une table ??? Kézako !? Voilà une nouvelle notion pour nous, jeunes padawans que nous sommes. Une table n'est rien d'autre qu'une partie d'une base de données, regroupant donc un certains nombre d'informations à propos d'une chose précise, informations organisées comme un tableau. D'où le nom table, qui en anglais signifie tableau. 1 - Base de Données Rendez vous dans ancestra_realm Double clickez sur la table gameservers Une fenêtre s'ouvre alors. Voilà que s'affiche le contenu de notre table. L'unique ligne affichée devrait être celle-ci : Colonnes en italiques id | ServerIP | ServerPort | State | ServerBDD | ServerDBName | ServerUser | ServerPassword | key 1 | 127.0.0.1 | 5555 | 0 | 127.0.0.1 | ancestra_game | root | | server1 L'id correspond à l'id du serveur. Vous pouvez trouver tous les fichiers d’emblème des serveurs dans Dofus/clips/artworks/servers. Leur nom correspond à leur id. Pour ma part je m'en fou un peu donc je laisse 1. IP de la machine qui aura le game. Donc votre ip hamachi/no-ip/dédié ou 127.0.0.1 si vous voulez tester en localhost. On laisse aussi 5555 au ServerPort, c'est ce port ainsi que la serverIP que le realm enverra au client pour qu'il se connecte au game. State, c'est l'état du serveur: 0 pour hors ligne, 1 en ligne, 2 sauvegarde. On laisse 0, le realm s'occupe de le mettre à 1 quand il reçoit la connexion du game. ServerBDD ; l'ip de notre db game. S'il est sur la même machine que le game vous pouvez laisser 127.0.0.1, sinon mettez son ip. ServerDbName ; le nom de la db game correspondante, on laisse ancestra_game (sauf si vous l'avez appelé autrement) ServerUser ; le nom d'utilisateur de la connexion à la db. Si vous ne l'avez pas changé depuis l'installation, c'est toujours root ServerPassword ; le mot de passe de la connexion à la db. Si vous n'en avez pas mit, il y en a pas. key ; c'est la clé qui identifie le game & qu'il devra donner au realm. Je décide de la laisser telle quelle, gardez la en mémoire si vous la changez. 2 - Configuration du realm A présent, direction AR54/Realm/Realm_Config.txt : REALM_PORT : Port de connexion à mettre dans la config.xml, on va prendre 444 REALM_COM_PORT : Port de communication entre le realm & les game. On prend 489 Je vous laisse configurer les identifiants de votre db realm. Dans le cas ou vous avez fait le tutoriel à la lettre ; vous êtes censé mettre : REALM_DB_HOST = 127.0.0.1 REALM_DB_USER = root REALM_DB_PASSWORD = REALM_DB_NAME = ancestra_realm Warning Si vous n'avez pas mis de mot de passe (password) ; n'oubliez pas de laisser un espace après le "=" sinon le serveur ne se lancera pas. 3 - Configuration du game Direction AR54/Game/Game_Config.txt: REALM_IP : l'ip hamachi/no-ip/dédié de la machine hébergeant le realm. Configurez l'accès à la db realm. Comme pour la partie db, mettez 127.0.0.1 si la db est sur la même machine que le game. HOST_IP : Ip hamachi/no-ip/dédié de la machine hébergeant le game. AUTH_KEY : La clé que vous avez indiqué dans la colonne key de la db GAME_PORT: Le port de connexion du game, que vous avez indiqué dans la colonne ServerPort (5555 dans ce tutoriel) COM_PORT : Port de communication entre le game & le realm. Il doit être identique à celui que nous avons mis dans la config realm, soit 489 PLAYER_LMIT : Ne pas laisser -1, il provoque un bug à la connexion au serveur (Merci à @Défense pour l'infos). Mettez donc une autre limite de joueurs, comme 100. Configurez l'accès à la db game de la même façon que pour la realm. Dans le cas ou vous avez fait le tutoriel à la lettre ; vous êtes censé mettre : #Configuration de la base de donnée du serveur de connexion REALM_DB_HOST = 127.0.0.1 REALM_DB_USER = root REALM_DB_PASS = REALM_DB_NAME = ancestra_realm # Configuration de la base de donnée DB_HOST = 127.0.0.1 DB_USER = root DB_PASS = DB_NAME = ancestra_game 4 - Configuration des .bat pour démarrer le realm et le game Ouvrez avec un éditeur de .txt les fichiers "startRealm.bat" du dossier "realm" et "game". Vous devez à présent renseigner la localisation de votre "java.exe". Dans mon cas : @echo off title Ancestra Remake rev 54 :loop "C:\Program Files\Java\jre1.8.0_191\bin\java.exe" -jar -Xmx1024m -Xms1024m Ancestra.jar goto loop PAUSE Petite astuce pour avoir votre chemin rapidement : - Cherchez votre java.exe qui devrait se trouver dans "Programmes". - Créez un raccourci sur le bureau - Clique droit sur le raccourci puis "propriété" - Copier le contenu de "Cible :" La partie "-Xmx1024m -Xms1024m" correspond à la ram que vous allouez à votre serveur. Ici 1024m donc 1G de ram. Normalement, vous avez à présent Ancestra Remake bien installé et configuré. Il ne reste plus qu'à indiquer au client Dofus l'ip et le port de connexion du realm. 5 - Configuration du client DOFUS Ne vous inquiétez pas, c'est beaucoup plus simple que pour l'émulateur. Direction Dofus/config.xml, remplacez tout le contenu par ceci : <config> <delay value="500"/> <rdelay value="3000"/> <rcount value="10"/> <conf name="En ligne"> <connserver ip="Adresse ip du serveur" name="Nom de votre serveur" port="Port du realm"/> <dataserver url="data/" type="local" priority="3" /> <dataserver url="[Hidden Content]" priority="1" /> <dataserver url="[Hidden Content]" priority="0" /> </conf> <conf name="En ligne (TEST)" type="test"> <dataserver url="data/" type="local" priority="3" /> <dataserver url="[Hidden Content]" priority="1" /> <dataserver url="[Hidden Content]" priority="0" /> </conf> <cacheasbitmap> <cache element="ExternalContainer/InteractionCell" value="false" /> <cache element="ExternalContainer/Ground" value="false" /> <cache element="ExternalContainer/Object1" value="false" /> <cache element="ExternalContainer/Object2" value="false" /> <cache element="ExternalContainer/Zone" value="false" /> <cache element="ExternalContainer/Select" value="false" /> <cache element="ExternalContainer/Grid" value="false" /> <cache element="ExternalContainer/Pointer" value="false" /> <cache element="GAPI/UI" value="false" /> <cache element="GAPI/UITop" value="false" /> <cache element="GAPI/Popup" value="false" /> <cache element="GAPI/UIUltimate" value="false" /> <cache element="GAPI/Cursor" value="false" /> <cache element="mapHandler/BACKGROUND" value="false" /> <cache element="mapHandler/Cell/Ground" value="false" /> <cache element="mapHandler/Cell/Object1" value="false" /> <cache element="mapHandler/Cell/Object2" value="false" /> <cache element="mapHandler/Cell/ObjectExternal" value="false" /> <cache element="Zone/Zone" value="true" /> <cache element="Zone/Pointers" value="true" /> </cacheasbitmap> </config> Remplacez de la ligne suivante par ce qui est demandé. <connserver ip="Adresse ip du serveur" name="Nom de votre serveur" port="Port du realm"> Exemple : <connserver ip="127.0.0.1" name="Serveur tuto" port="444"/> Si vous avez bien suivi ce tutoriel, vous devriez normalement mettre 444 pour le port du realm. Le nom du serveur ne dépend de rien de ce qu'on à fait avant. A présent que tout est en place, il ne reste qu'à lancer l'émulateur : En premier le Realm en lançant AR54/Realm/startRealm.bat puis le Game en lançant AR54/Game/startRealm.bat. (Vous pouvez renommer celui la en startGame.bat) Et voilà, distribuez la config.xml à vos joueurs, et votre serveur est en place ! Si vous avez des difficultés malgré le tutoriel je vous laisse les 3 configs que nous avons vu réglé pour faire tourner votre serveur en réseau local. Je conseille tout de même d'essayer un minimum pour ne pas être décourager pour la suite ! Game_Config.txt Realm_Config.txt config.xml Je me ferai une joie de répondre à vos questions et d'avoir des suggestions pour améliorer le contenu. Encore une fois, le tutoriel n'est pas de moi, j'ai seulement corrigé quelques parties causants des problèmes à beaucoup et apporter des précisions en accord avec @Calypso. Bonne chance à tous ! --- Download
  5. Bonjour Funky! Je vous partage aujourd'hui un petit CMS avec 3 couleurs changeable que j'ai fais en 10 minutes, il ne comporte qu'un système d'inscription et de classement. Pour la configuration de la base de données, c'est dans config/db.php, pas besoin de vous montrez comment configurer ça j'espère Téléchargement: Clique ici A+ --- Download
  6. Bonjour, Je viens vous partager un CMS développer en Laravel 5.1 par Synthx sous un design réaliser par Nicow. Fonctionnalité : Pages classiques (CGU, Règlement, Staff, News, etc...) Gestion de compte Ladder Mises à jours Achat de points (Starpass) Mode VIP (désactivable) Loterie Vote par IP Confirmation du vote avec vérification de la valeur OUT Boutique avec stock Téléchargement : GitHub --- Download
  7. Bonjour, aujourd'hui je vous partage le logiciel Flash Decompiller Trillix 5.3.1370. Ce programme sert à ouvrir les fichiers en .swf Vous pouvez vous en servir pour changer l'image du chargement de votre rétro par exemple ! Liens mega : ici Scan : ici Tutoriel : Il est déjà intégré dans l'archive, mais je l'explique quand même ici avec quelques screens ! Vous allez installer le programme qui se trouve dans Setup en prenant soins de décocher la case pour le lancer à la fin ! Je vous détaille l'installation même si je pense que vous savez faire... Sélectionnez votre langue puis, puis faite "OK" Faites suivants : Faites ensuite l'installation standard, c'est très important ! Après, faite attention à ne pas cocher cette case : SURTOUT PAS Allez ensuite dans sur votre bureau : Faites CLIQUES DROIT sur "Flash Decompiler Trillix.exe" (un menu déroulant s'affichera), et cliquez sur "Ouvrir l'emplacement du fichier". maintenant, vous avez les deux dossier "Program Files (x86)\Eltima Software\Flash Decompiler Trillix" & "Flash Decompiler Trillix 5.3.1370 cracked" Dans le dossier "Flash Decompiler Trillix 5.3.1370 cracked", glissez le programme "FlashDecompiler.exe" dans le dossier "Program Files (x86)\Eltima Software\Flash Decompiler Trillix" Et voilà c'est cracker. Bon jeu à vous Cordialement. --- Download
  8. Shivas est un émulateur Dofus 1.29 développé en Java avec Mina pour le réseau et Atomium pour la db. Voir les sources : [Hidden Content] Voir le changelog : [Hidden Content]/commits/master Features : (dernière màj 19.09.2012) se déplacer parler boost ses caractéristiques boost ses sorts gérer son inventaire, utiliser des consommables gérer sa liste d'amis/ennemis utiliser des commandes IG système de cadeau scripting groupes zaaps échanges entre joueurs Ce projet n'est plus maintenu, à contre-cœur, notamment à cause de mauvais choix dès le départ. Les travaux que j'ai fait ne me convienne plus et je me suis tourné vers d'autres techniques. J'ai conscience que le projet sera sûrement très lourd à maintenir mais je pense que ça en vaut la peine au moins pour apprendre. J'ai créé deux pages wiki pour savoir comment compiler le projet et comment créer un mod. Vous pouvez reprendre le projet sans ma permission tant que les sources sont partagées publiquement ou sinon veuillez juste m'en informer par MP, merci. --- Download
  9. Bonsoir à tous, Aujourd'hui, je vous partage l'instance Meley et le Temple d'Ochao version officielle. Lien de téléchargement pour l'instance Meley : ICI Lien de téléchargement pour le Temple d'Ochao : ICI Lien FE : ICI Source : TurkMMO Cordialement
  10. Citation de Azendar. [glow=red]Lien remplacé et fonctionnel, merci Ebrius.[/glow] ---------------------------------------------------------------------- Je vous partage le célèbre crack.exe de Ygg pour éviter de mettre la licence. Je ne me souviens plus qui a fait ce magnifique crack, m'enfin, je souhaite vous le partager quand même. crack.exe à mettre dans votre dossier d'Ygg. *Modification* Lien : clique ici (MegaU) VirusScan : clique ici (VirusTotal) Cordialement, Spyrow. --- Download
  11. Salut, Voici un Tuto pour changer les News ( Voir Pièce Jointe ).Dans un Premiers Temps, Télécharger ceci : News RSSEnsuite,Ouvrez le Dossier News RssOuvrez Ensuite Le Dossier RSSEnsuite Ouvrez config.phpFaites comme ceci : <?php define("DB_HOST","IP DE LA DB (PAR DÉFAUT 127.0.0.1)"); define("DB_LOGIN","root"); define("DB_PASS","MOT DE PASSE SI VOUS EN AVEZ UN"); define("DB_BDD","news");?> Enregistrez Puis fermezMaintenant Ouvrez RSS.PHPEt Remplissez Comme Ceci : <?php echo '<?xml version="1.0" encoding="utf-8"?>' ?>NOM DE VORE SERVEURURL DE VORE SERVEUR DESCRIPTION DE VORE SERVEUR<?php require "config.php"; mysql_connect(DB_HOST,DB_LOGIN,DB_PASS); mysql_select_db(DB_BDD); mysql_query("SET NAMES UTF8"); $sql="SELECT * FROM rss ORDER BY id DESC LIMIT 0, 6"; $req = mysql_query($sql) or die('Erreur SQL ! '.$sql.' '.mysql_error()); while($data=mysql_fetch_assoc($req)){ echo "\n"; echo "{$data["id"]}"; echo "{$data["title"]}\n"; echo "URL DE VORE SERVEUR\n"; echo "{$data["icon"]}\n"; echo "".date("D, d M Y H:i:s",strtotime($data["date"]))." +0200\n"; echo "\n"; }?> Enregistrez Puis FermezCopiez Rss.php et config.phpCollez-les dans votre dossier lang !- Ensuite, Ouvrez Sothink SWF QuickerAllez dans votre Dossier SWF et choisissez lang_fr_786Faites CTRL+F et dans la recherche tappez RSS_LINKVous devriez avoir une ligne ressemblant à ceci : Donc Replacez Comme Cela : Ensuite, Faites Export Et Fermer votre Sohtink SWF QuickerMaintenant, Retournez dans votre dossier de News RSS et ouvrez cette fois-ci le dossier News RSS ScriptOuvrez config.phpPuis Remplissez :<?php define("DB_HOST","IP DE LA DB (PAR DÉFAUT 127.0.0.1)"); define("DB_LOGIN","root"); define("DB_PASS","MOT DE PASSE SI VOUS EN AVEZ UN"); define("DB_BDD","news");?> Enregistrez Puis FermezEnsuite Copiez le dossier News RSS Script et collez-le dans votre dossier “www” De WampMaintenant Lancez Navicat, Créez une New Database Que vous appellerez "news"Une fois fait, executez le fichier sql "rss.sql" Qui se trouve dans le Dossier "RSS"Ajouter Une News :Ouvrez Navicat puis Double-clique sur NewsOuvrez la Table rsset Remplissez Comme ceci : Voici la liste des Icons : à écrire dans la colone Icon => Icon afficher Tuto By Icer Un Petit Merci ferai plaisir.
  12. Hello, Aujourd'hui je vous partage l'émulateur sur lequel je travaille de temps à autre quand j'ai du temps libre et de la motivation. J'ai commencé le développement en septembre 2013... ça date ! Je n'ai jamais eu beaucoup de temps à consacré au développement de l'émulateur du coup il n'est pas très avancé. Ce qui m'intéressait principalement dans ce projet c'est toute la partie "reverse engineering", comprendre comment le jeu fonctionne, développer des outils, etc. L'émulateur est développé en C++ avec la librairie Qt et le client supporté est le client officiel version 1.54.0. Sources: [Hidden Content] Je ferais un tutoriel à l'occaz' sur l'installation de l'ému Cordialement, Sgt --- Download
  13. Bonjour, Me voilà sur ce nouveau tutoriel pour vous apprendre à installer Ancestra Remake 54. Étant multi-serveur (peut gérer plusieurs serveurs), il est en effet plus compliqué à configurer que les précédents. Sans plus tarder, go go go 1 - Pré-Requis Disposer d'Ancestra Remake 54 Disposer d'une IP de connexion (Hamachi, No-Ip, dédié ...). Vous avez des tutoriels pour cela, je ferais comme si vous la connaissez Disposer de WampServer et de Navicat sauf si vous savez vous débrouiller avec PhpMyAdmin Disposer de Dofus 1.29 2 - Installer les base de données En premier lieu, l'émulateur a, pour fonctionner, besoin de deux bases de données. Je vais expliquer la procédure via Navicat, si vous utilisez PhpMyAdmin je pense que vous saurez vous débrouiller tout seul. Si ce n'est pas déjà fait, commencez par installer Wamp & Navicat. Lancez Wamp puis Navicat en attendant que Wamp passe au vert dans votre barre des tâches. Si Wamp ne passe pas vert (vous pouvez passer cette étape si c'est le cas), le problème vient probablement d'une interférence avec skype. Dans skype: Outils -> Options -> Avancées -> Connexion -> Décocher "Utiliser les ports 80 et 443 comme alternative". Redémarrez Skype & Wamp [*]Ouvrez Navicat, cliquez sur Connection -> MySQL [*]Mettez seulement localhost à Connection Name et un mot de passe de votre choix à Password. Ne touchez pas à ce qui est déjà rempli, faites Ok [*]Double cliquez sur localhost normalement apparu dans la colonne de gauche de Navicat. (Afin d'ouvrir la connection) [*]Click droit sur localhost (votre connection), puis clickez sur New Database [*]Ecrivez ancestra_realm dans Enter database name puis clickez sur OK. [*]Répétez la même opération pour une bdd du nom de ancestra_game [*]Comme pour la connection, double clickez sur vos deux bases de données afin de les "ouvrir" [*]On va maintenant importer des données dans nos deux bdd à partir de fichiers .sql: Click droit sur ancestra_realm, puis Execute Batch File et ciblez AncestraR_Realm.sql contenu dans le dossier AR54/BDD, puis faites Start [*]Répétez la même opération pour remplir ancestra_game à partir du fichier AncestraR_Game.sql, toujours situé dans le même dossier. Vous voilà maintenant avec vos deux bases de données crées, remplies, prêtes mais ... non à jours J'vous jure, j'vous ai pas fait faire de la *****, juste que les développeurs d'AR ont dû rectifier des choses sur les bases de données, et au lieu de mettre à jour les deux gros patchs qu'on vient d'exécuter, ont mis chaque rectification dans un fichier .sql à part. Tous ces fichiers .sql, vous pouvez les trouver dans le sous dossier BDD/Patchs. Attention ! Vous ne devez pas les exécuter n'importe comment. Vous pouvez observer que le nom de chaque fichier suit cette logique: AncestraR_Realm/Game - Patch revN°Patch - Infos sur contenu.sql Realm/Game correspond à la bdd sur laquelle doit être appliqué le patch. N°Patch correspond au numéro du patch (ils sont tous numérotés) Infos sur contenu correspond à quelques infos sur le contenu du patch. Vous devez exécuter tous ces patchs en faisant attention à le faire sur la bonne base de données, et dans l'ordre croissant des numéros. Exemple pour la db game: AncestraR_Game - Patch rev2 - Pets.sql en premier AncestraR_Game - Patch rev3 - Defenders of resources.sql en deuxième ... Au boulot ! Une fois ceci fait, vous aurez vos deux bases de données enfin prêtes et complètes. Nous pourrons alors passer à la configuration de l'émulateur en lui même 2 - Survol du fonctionnement d'un Emulateur La particularité d'AR54 qui m'a poussé à faire un tuto sur son installation (alors qu'il y a déjà des tutos pour d'autres versions d'AR), c'est que la différence de fonctionnement entre cette version et celles antérieures complique sa configuration. Voilà comment fonctionne normalement un émulateur, dissocié en deux parties realm et game : Le client se connecte sur la partie realm. Il choisit son serveur, et le realm lui renvoi l'ip et le port du game gérant le serveur demandé. Le client coupe alors la connection avec le realm pour se connecter au game Le game gère tout le reste du jeux. Il doit néanmoins communiquer avec le realm pour avoir certaine données. Dans les versions précédentes, le multi-serveur n'était pas géré: on ne pouvait alors avoir qu'un serveur, et il n'était plus utile d'avoir cette organisation avec une application realm et une autre pour chaque serveur. Les développeurs ont donc fusionné ces deux applications en une seule. De cette façon, le client restait tout le temps connecté sur la même application (pas tout à fait en réalité, mais on entrerait dans les détails techniques). Au niveau de la configuration; on n'avait qu'une config pour une application, avec une ip & un port à renseigner pour l'unique application. Avec le multi-serveur, les développeurs ont du dissocier le realm et le game : Un seul realm (serveur de connection), et un game par serveur. Il faut donc à présent une config par appli' (deux pour un seul serveur), et des ips & ports en plus. En résumé, il nous faut: L'ip du realm et son port de connection (celui sur lequel le client se connecte) L'ip de chaque serveur & leur port de connection (donnés par le realm au client). Pour ne pas compliquer les choses, nous allons gérer qu'un serveur Le port de communication utilisé entre le realm et les games. L'identifiant de chaque game ; c'est avec celui-ci que le realm s'assure qu'il à affaire aux games attendus. (Sinon n'importe quel personne tierce pourrait connecter son propre game modifié) 3 - Configurer Ancestra Remake 54 La partie précédente n'était pas vraiment prévue, mais j'ai trouvé intéressant de parler du fonctionnement de l'émulateur, ça peut aider certains à comprendre certains éléments. Bon, la première étape est de faire connaître au realm notre game. Et une table de notre db realm est prévue pour cela. Une table ??? Kézako !? Voilà une nouvelle notion pour nous, jeunes padawans que nous sommes. Une table n'est rien d'autre qu'une partie d'une base de données, regroupant donc un certains nombre d'informations à propos d'une chose précise, informations organisées comme un tableau. D'où le nom table, qui en anglais signifie tableau. 1 - Base de Données Rendez vous dans ancestra_realm Double clickez sur la table gameservers Une fenêtre s'ouvre alors. Voilà que s'affiche le contenu de notre table. L'unique ligne affichée devrait être celle-ci : Colonnes en italiques id | ServerIP | ServerPort | State | ServerBDD | ServerDBName | ServerUser | ServerPassword | key 1 | 127.0.0.1 | 5555 | 0 | 127.0.0.1 | ancestra_game | root | | server1 L'id correspond à l'id du serveur. Vous pouvez trouver tous les fichiers d’emblème des serveurs dans Dofus/clips/artworks/servers. Leur nom correspond à leur id. Pour ma part je m'en fou un peu donc je laisse 1. IP de la machine qui aura le game. Donc votre ip hamachi/no-ip/dédié ou 127.0.0.1 si vous voulez tester en localhost. On laisse aussi 5555 au ServerPort, c'est ce port ainsi que la serverIP que le realm enverra au client pour qu'il se connecte au game. State, c'est l'état du serveur: 0 pour hors ligne, 1 en ligne, 2 sauvegarde. On laisse 0, le realm s'occupe de le mettre à 1 quand il reçoit la connection du game. ServerBDD ; l'ip de notre db game. S'il est sur la même machine que le game vous pouvez laisser 127.0.0.1, sinon mettez son ip. ServerDbName ; le nom de la db game correspondante, on laisse ancestra_game (sauf si vous l'avez appelé autrement) ServerUser ; le nom d'utilisateur de la connection à la db. Si vous ne l'avez pas changé depuis l'installation, c'est toujours root ServerPassword ; le mot de passe de la connection à la db. Si vous n'en avez pas mit, il y en a pas. key ; c'est la clé qui identifie le game & qu'il devra donner au realm. Je décide de la laisser telle quelle, gardez la en mémoire si vous la changez. 2 - Configuration du realm A présent, direction AR54/Realm/Realm_Config.txt : REALM_PORT : Port de connection à mettre dans la config.xml, on va prendre 444 REALM_COM_PORT : Port de communication entre le realm & les game. On prend 489 Je vous laisse configurer les identifiants de votre db realm 3 - Configuration du game Direction AR54/Game/Game_Config.txt: REALM_IP : l'ip hamachi/no-ip/dédié de la machine hébergeant le realm. Configurez l'accès à la db realm. Comme pour la partie db, mettez 127.0.0.1 si la db est sur la même machine que le game. HOST_IP : Ip hamachi/no-ip/dédié de la machine hébergeant le game. AUTH_KEY : La clé que vous avez indiqué dans la colonne key de la db GAME_PORT: Le port de connexion du game, que vous avez indiqué dans la colonne ServerPort COM_PORT : Port de communication entre le game & le realm. Il doit être identique à celui que nous avons mis dans la config realm, soit 489 PLAYER_LMIT : Ne pas laisser -1, il provoque un bug à la connexion au serveur (Merci à Defense pour l'infos). Mettez donc une autre limite de joueurs, comme 100. Configurez l'accès à la db game de la même façon que pour la realm. Normalement, vous avez à présent Ancestra Remake bien installé et configuré. Il ne reste plus qu'à indiquer au client Dofus l'ip et le port de connexion du realm. 4 - Configuration du client DOFUS Ne vous inquiétez pas, c'est beaucoup plus simple que pour l'émulateur. Direction Dofus/config.xml, remplacez tout le contenu par ceci : <config> <delay value="500"/> <rdelay value="3000"/> <rcount value="10"/> <conf name="En ligne"> <connserver ip="Adresse ip du serveur" name="Nom de votre serveur" port="Port du realm"> <dataserver url="data/" type="local" priority="3" /> <dataserver url="[Hidden Content]" priority="1" /> <dataserver url="[Hidden Content]" priority="0" /> </conf> <conf name="En ligne (TEST)" type="test"> <dataserver url="data/" type="local" priority="3" /> <dataserver url="[Hidden Content]" priority="1" /> <dataserver url="[Hidden Content]" priority="0" /> </conf> <cacheasbitmap> <cache element="ExternalContainer/InteractionCell" value="false" /> <cache element="ExternalContainer/Ground" value="false" /> <cache element="ExternalContainer/Object1" value="false" /> <cache element="ExternalContainer/Object2" value="false" /> <cache element="ExternalContainer/Zone" value="false" /> <cache element="ExternalContainer/Select" value="false" /> <cache element="ExternalContainer/Grid" value="false" /> <cache element="ExternalContainer/Pointer" value="false" /> <cache element="GAPI/UI" value="false" /> <cache element="GAPI/UITop" value="false" /> <cache element="GAPI/Popup" value="false" /> <cache element="GAPI/UIUltimate" value="false" /> <cache element="GAPI/Cursor" value="false" /> <cache element="mapHandler/BACKGROUND" value="false" /> <cache element="mapHandler/Cell/Ground" value="false" /> <cache element="mapHandler/Cell/Object1" value="false" /> <cache element="mapHandler/Cell/Object2" value="false" /> <cache element="mapHandler/Cell/ObjectExternal" value="false" /> <cache element="Zone/Zone" value="true" /> <cache element="Zone/Pointers" value="true" /> </cacheasbitmap> </config> Remplacez de la ligne suivante par ce qui est demandé. <connserver ip="Adresse ip du serveur" name="Nom de votre serveur" port="Port du realm"> Si vous avez bien suivi ce tutoriel, vous devriez normalement mettre 444 pour le port du realm. A présent que tout est en place, il ne reste qu'à lancer l'émulateur : En premier le Realm en lançant AR54/Realm/start.bat puis le Game en lançant AR54/Game/start.bat. Et voilà, distribuez la config à vos joueurs, et votre serveur est en place ! Merci de respecter ce tutoriel qui m'a prit beaucoup de temps. Ainsi, je vous demanderai de ne pas le copier autre part et d'utiliser la section Aide / Question / Support si vous rencontrez des problèmes avec l'émulateur
  14. Tutoriel Vemµ I : Téléchargements Il vous faudra les logiciels ci-dessous : Vemµ 0.2.2.0 : Ici II : Installation : Créer 3 bases de données sous Navicat : vemu_accounts vemu_characters vemu_others Puis importez les fichiers .sql(Execute SQL File) qui se trouvent dans le dossier SQL -> Base Exemple : vemu_accounts.sql dans la base de données vemu_accounts Ensuite, vous aurez des fichiers comme : vers_2_0_1 . Exécutez les patch qu'il y a à l'intérieur dans l'ordre des versions. III : Configuration : Dans votre dossier vemu vous trouverez 2 fichiers : engine.txt et realm.txt Ouvrez-les avec le bloc notes puis configurez engine.txt : SYSTEM_PORT = 4041 --> Port system USELESS_PORT = 481 GAME_ID = 1 --> ID du serveur ( De base : 1= Jiva ; 2= Rushu ) GAME_PORT = 5556 --> Port de jeux SQL_IP = localhost --> Laissez LocalHost si votre BDD se trouve sur votre ordinateur SQL_USER = root --> Nom d'utilisateur SQL_PASS = --> Mot de passe utilisateur SQL_ACCOUNTS = vemu_accounts SQL_CHARACTERS = vemu_characters SQL_OTHERS = vemu_others MSG_COLOR = #CC0000 --> Couleur du message de Bienvenue MSG_WELCOME = Bienvenue sur Vemu --> Message de Bienvenue MSG_ONCONNECT = false --> True pour activer ( Le joueurs **** vient de se connecter ) START_LEVEL = 160 --> Level de départ START_KAMAS = 10000000 --> Kamas de départ START_STATS = 0 --> Stats de départ ( 101 pour être parchotté partout ) START_MAP = 10279 --> Map de départ START_CELL = 284 --> Case de départ START_DIR = 3 --> Direction de départ ENABLE_AURA = true --> Activer les aura ENABLE_NIGHT = true --> Activer le passage jour<->nuit RATES_PVP = 1 --> Rate PVP ( Player vs Player ) RATES_PVM = 0 --> Rate PVM ( Player vs Monster ) ANTISPAM_COMMERCE = 30 --> Nombre de secondes entre 2 messages en /b ANTISPAM_RECRUITMENT = 30 --> Nombre de secondes entre 2 messages en /r CENSURED_WORDS = .save SHOW_INFOS = True SHOW_NOTICES = True SHOW_WARNINGS = True POINTS_NAME = Points realm.txt : LOGIN_VERSION = 1.29.1 LOGIN_PORT = 468 --> Port de connection SQL_IP = localhost --> Laissez LocalHost si votre BDD se trouve sur votre ordinateur SQL_USER = root --> Nom d'utilisateur SQL_PASS = --> Mot de passe utilisateur SQL_ACCOUNTS = vemu_accounts SQL_OTHERS = vemu_others SHOW_INFOS = false SHOW_NOTICES = false SHOW_WARNINGS = false MAX_PLAYER = 500 --> Nombre de joueurs maximum Voila le plus dur est fait! Maintenant allez dans la table vemu_others puis servers_list Supprimez les 2 lignes puis créez-en une nouvelle comme ceci : 1 | 127.0.0.1 | 5556 | 4041 IV : Configurer un 2ème serveur : Allez dans votre dossier vemu , créez une nouveau dossier puis coller dedans : - Engine.txt - MySql.Data.dll - Vemu - GameServeur.exe Puis configurez à nouveau le engine.txt Il vous suffit de changer Le SYSTEM_PORT (4042 par exemple) Le USELESS_PORT (482 par exemple) Le GAME_ID (2 par exemple) Le GAME_PORT (5557 par exemple) Puis de configurer le reste à votre guise Ensuite rajoutez une ligne à votre BDD : 1 | 127.0.0.1 | 5556 | 4041 2 | 127.0.0.1 | 5557 | 4042 Et lancez le Realm puis les 2 games servers . Bonne Lecture --- Download
  15. Bonjour, Granny 2.9.12 Granny 2.11.8 Granny 2.8.41 Cordialement, History. --- Download
  16. Yep, Vous connaissez sans doutes les fameuses file 2013, avec les tools qui permettent de générer le côté client grâce au côté serveur. Mais malheureusement, certains n'arrivent plus à dump ces protos car ils sont beaucoup trop récents ... Bah ici, c'est la même chose ! Il suffit de mettre l'exe dans un dossier avec l'item proto et l'item name txt (ou mob), de les faire glisser sur le exe le tour est joué ! De plus, il prend en compte les nouveaux mob proto donc les nouvelles colonnes ! Téléchargement: [Hidden Content] --- Download
  17. Salut à tous, voici une petite API pour les votes sur RPG paradize. En gros elle fait : Récupère le captcha de la page de vote. Envoi le formulaire de vote. Regarde si le vote a été accepté et retourne true ou false. Donc au final plus besoin de faire une redirection vers RPG Paradize, et seul les bon votes seront comptés, et tout ça, très simplement ! RpgApi.php : ICI Exemple : ICI L'utilisation d'un tel système est relativement lourd, il est donc préférable de ne pas trop charger la page de vote. --- Download
  18. Bonjour, Bonsoir Les Funkiest, je vous partage un système qui va vous permettre de stocker vos items Up, Pierre, Manuel dans différents inventaires. Niveau requis : Intermédiaire Temps estimé : 30 minutes Pré-requis: - Sources Client - Sources Serveur - Client Tout se trouve dans le dossier, tout est expliquer la dedans. Download Aperçu : [Hidden Content] Sources : Turkmmo Pour continuer: Vous trouverez de nombreux partages et tutoriels sur Funky-Émulation dans la section Metin2. La FAQ pourra répondre à la plupart de vos questions. Une catégorie support est disponible. Si vous avez un problème ou une question, n'hésitez pas à poster une demande !
  19. Bonjour ! Voyant que beaucoup d'entre vous (ou presque ) cherche à avoir les anciennes ailes de l'officiel pour leur serveur (celle ci dessous), je les partages. Je parle bien entendu des ailes où les ailes bontarien ont leur auréole ! C'est vrai que l'auréole des anges ça fais déjà plus ange . Téléchargement : Aile Démon Ange Version 1.18 Cordialement, --- Download
  20. Bonjour, Bonsoir Je vous partage un système de magasin Hors Ligne qui est debug par rapport à celui qui est déjà partagé sur FE pars History/Liberty. Niveau requis : Intermédiaire Temps estimé : 30 minutes Pré-requis: - Sources Serveur - Sources Client - Client Download Un aperçu du système ( Je ne suis pas la personne qui à fait la vidéo ) : PS : Je n'ai pas testé le Partage de History/Liberty mais on ma dit qu'il ne fonctionnait pas si je me trompe merci de faire signe. Sources : Turkmmo Pour continuer: Vous trouverez de nombreux partages et tutoriels sur Funky-Émulation dans la section Metin2. La FAQ pourra répondre à la plupart de vos questions. Une catégorie support est disponible. Si vous avez un problème ou une question, n'hésitez pas à poster une demande !
  21. Bonjour, Je vous partage un petit tutoriel rédigé par mes soins afin d'installer le système de bonus dans l'inventaire sur les files 2014 (et 2016 by FE). PS : Sur l'image le système est en espagnol mais dans ce tutoriel le système est traduit en français par Eristoff. Point positif : Système fonctionnel une fois adapté. Point négatif : Le bouton "Minimiser" ne fonctionne plus (Ce qui n'est pas très grave). Edit : Le bouton fonctionne ! Voir plus bas dans le tutoriel. Dans un premier temps vous devez vous munir d'un éditeur de texte et de vos fichiers "root" et "local_fr". Dans root : Trouvez et ouvrez le fichier "uiinventory.py" Trouvez ce bout de code : ## Refresh self.SetInventoryPage(0) self.SetEquipmentPage(0) self.RefreshItemSlot() self.RefreshStatus() Le remplacer par : ## Refresh self.SetInventoryPage(0) self.SetEquipmentPage(0) self.RefreshItemSlot() self.RefreshStatus() self.ActualizarBonus() def MinimizarBonus(self): if self.ESTADO_PAGINA_INVENTORY == False: #####Esta parte pertence en volver al estado original al inventory self.GetChild("board").SetSize(176,585) self.GetChild("TitleBar").SetWidth(161) self.GetChild("TitleName").SetPosition(77, 3) self.GetChild("OcultarTabla").SetPosition(161 - 30, 10) self.SetSize(176, 585) self.SetPosition(wndMgr.GetScreenWidth() - 176, wndMgr.GetScreenHeight() - 37 - 585) self.GetChild("Money_Slot").SetPosition(8, 28) #Tabla self.GetChild("txt_info_defenza").Hide() self.ESTADO_PAGINA_INVENTORY = True else: #####Esta parte pertence en volver al estado editado al inventory self.GetChild("board").SetSize(306,585) self.GetChild("TitleBar").SetWidth(161 + 130) self.GetChild("TitleName").SetPosition((161 + 130) / 2, 3) self.GetChild("OcultarTabla").SetPosition(161 + 130 - 30, 10) self.SetSize(306, 585) self.SetPosition(wndMgr.GetScreenWidth() - 176 - 130, wndMgr.GetScreenHeight() - 37 - 585) self.GetChild("Money_Slot").SetPosition(-55, 28) #Tabla self.GetChild("txt_info_defenza").Show() self.ESTADO_PAGINA_INVENTORY = False self.OcultarInfoTable(self.ESTADO_PAGINA_INVENTORY) if self.wndBelt: self.wndBelt.AdjustPositionAndSize() def OcultarInfoTable(self, arg): if arg == True: self.GetChild("txt_info_defenza").Hide() self.GetChild("txt_info_defenza_espada").Hide() self.GetChild("Thin_info_defenza_espada").Hide() self.GetChild("txt_info_defenza_2manos").Hide() self.GetChild("Thin_info_defenza_2manos").Hide() self.GetChild("txt_info_defenza_daga").Hide() self.GetChild("Thin_info_defenza_daga").Hide() self.GetChild("txt_info_defenza_Felcha").Hide() self.GetChild("Thin_info_defenza_Felcha").Hide() self.GetChild("txt_info_defenza_campana").Hide() self.GetChild("Thin_info_defenza_campana").Hide() self.GetChild("txt_info_defenza_fan").Hide() self.GetChild("Thin_info_defenza_fan").Hide() self.GetChild("txt_info_resist_Magia").Hide() self.GetChild("Thin_info_resist_Magia").Hide() self.GetChild("txt_info_resist_veneno").Hide() self.GetChild("Thin_info_resist_veneno").Hide() self.GetChild("txt_info_resist_guerrero").Hide() self.GetChild("Thin_info_resist_guerrero").Hide() self.GetChild("txt_info_resist_ninja").Hide() self.GetChild("Thin_info_resist_ninja").Hide() self.GetChild("txt_info_resist_sura").Hide() self.GetChild("Thin_info_resist_sura").Hide() self.GetChild("txt_info_resist_chaman").Hide() self.GetChild("Thin_info_resist_chaman_").Hide() self.GetChild("txt_info_onfensivo").Hide() self.GetChild("txt_info_criticos").Hide() self.GetChild("Thin_info_criticos").Hide() self.GetChild("txt_info_penetracion").Hide() self.GetChild("Thin_info_penetracion").Hide() self.GetChild("txt_info_danomedia").Hide() self.GetChild("Thin_info_danomedia").Hide() self.GetChild("txt_info_danohabilidad").Hide() self.GetChild("Thin_info_danohabilidad").Hide() self.GetChild("txt_info_fmediohumano").Hide() self.GetChild("Thin_info_fmediohumano").Hide() self.GetChild("txt_info_fnomuerto").Hide() self.GetChild("Thin_info_fnomuerto").Hide() self.GetChild("txt_info_fdemonio").Hide() self.GetChild("Thin_info_fdemonio").Hide() self.GetChild("txt_info_fguerrero").Hide() self.GetChild("Thin_info_fguerrero").Hide() self.GetChild("txt_info_fninja").Hide() self.GetChild("Thin_info_fninja").Hide() self.GetChild("txt_info_fsura").Hide() self.GetChild("Thin_info_fsura").Hide() self.GetChild("txt_info_fcham").Hide() self.GetChild("Thin_info_fcham").Hide() else: self.GetChild("txt_info_defenza").Show() self.GetChild("txt_info_defenza_espada").Show() self.GetChild("Thin_info_defenza_espada").Show() self.GetChild("txt_info_defenza_2manos").Show() self.GetChild("Thin_info_defenza_2manos").Show() self.GetChild("txt_info_defenza_daga").Show() self.GetChild("Thin_info_defenza_daga").Show() self.GetChild("txt_info_defenza_Felcha").Show() self.GetChild("Thin_info_defenza_Felcha").Show() self.GetChild("txt_info_defenza_campana").Show() self.GetChild("Thin_info_defenza_campana").Show() self.GetChild("txt_info_defenza_fan").Show() self.GetChild("Thin_info_defenza_fan").Show() self.GetChild("txt_info_resist_Magia").Show() self.GetChild("Thin_info_resist_Magia").Show() self.GetChild("txt_info_resist_veneno").Show() self.GetChild("Thin_info_resist_veneno").Show() self.GetChild("txt_info_resist_guerrero").Show() self.GetChild("Thin_info_resist_guerrero").Show() self.GetChild("txt_info_resist_ninja").Show() self.GetChild("Thin_info_resist_ninja").Show() self.GetChild("txt_info_resist_sura").Show() self.GetChild("Thin_info_resist_sura").Show() self.GetChild("txt_info_resist_chaman").Show() self.GetChild("Thin_info_resist_chaman_").Show() self.GetChild("txt_info_onfensivo").Show() self.GetChild("txt_info_criticos").Show() self.GetChild("Thin_info_criticos").Show() self.GetChild("txt_info_penetracion").Show() self.GetChild("Thin_info_penetracion").Show() self.GetChild("txt_info_danomedia").Show() self.GetChild("Thin_info_danomedia").Show() self.GetChild("txt_info_danohabilidad").Show() self.GetChild("Thin_info_danohabilidad").Show() self.GetChild("txt_info_fmediohumano").Show() self.GetChild("Thin_info_fmediohumano").Show() self.GetChild("txt_info_fnomuerto").Show() self.GetChild("Thin_info_fnomuerto").Show() self.GetChild("txt_info_fdemonio").Show() self.GetChild("Thin_info_fdemonio").Show() self.GetChild("txt_info_fguerrero").Show() self.GetChild("Thin_info_fguerrero").Show() self.GetChild("txt_info_fninja").Show() self.GetChild("Thin_info_fninja").Show() self.GetChild("txt_info_fsura").Show() self.GetChild("Thin_info_fsura").Show() self.GetChild("txt_info_fcham").Show() self.GetChild("Thin_info_fcham").Show() def ActualizarBonus(self): self.GetChild("bonus_1").SetText(str(player.GetStatus(69))) self.GetChild("bonus_2").SetText(str(player.GetStatus(70))) self.GetChild("bonus_3").SetText(str(player.GetStatus(71))) self.GetChild("bonus_4").SetText(str(player.GetStatus(74))) self.GetChild("bonus_5").SetText(str(player.GetStatus(72))) self.GetChild("bonus_6").SetText(str(player.GetStatus(73))) self.GetChild("bonus_7").SetText(str(player.GetStatus(77))) self.GetChild("bonus_8").SetText(str(player.GetStatus(81))) self.GetChild("bonus_9").SetText(str(player.GetStatus(59))) self.GetChild("bonus_10").SetText(str(player.GetStatus(60))) self.GetChild("bonus_11").SetText(str(player.GetStatus(61))) self.GetChild("bonus_12").SetText(str(player.GetStatus(62))) self.GetChild("bonus_13").SetText(str(player.GetStatus(40))) self.GetChild("bonus_14").SetText(str(player.GetStatus(41))) self.GetChild("bonus_15").SetText(str(player.GetStatus(122))) self.GetChild("bonus_16").SetText(str(player.GetStatus(121))) self.GetChild("bonus_17").SetText(str(player.GetStatus(43))) self.GetChild("bonus_18").SetText(str(player.GetStatus(47))) self.GetChild("bonus_19").SetText(str(player.GetStatus(48))) self.GetChild("bonus_20").SetText(str(player.GetStatus(54))) self.GetChild("bonus_21").SetText(str(player.GetStatus(55))) self.GetChild("bonus_22").SetText(str(player.GetStatus(56))) self.GetChild("bonus_23").SetText(str(player.GetStatus(57))) En suite rendez vous tout tout à la fin et ajoutez : def OnUpdate(self): self.ActualizarBonus() Pour faire fonctionner le bouton "Minimiser" il faut (toujours dans le même fichier) trouver : wndItem = self.GetChild("ItemSlot") wndEquip = self.GetChild("EquipmentSlot") Et ajouter juste en dessous : self.ButonMinimize = self.GetChild2("OcultarTabla") self.ButonMinimize.SetEvent(ui.__mem_func__(self.MinimizarBonus)) Dans locale_fr : Trouvez et ouvrez le fichier "inventorywindow.py" Sélectionnez tout le début jusqu'à la ligne : (Arrêtez votre sélection juste avant cette ligne) ## Equipment Slot Et remplacez par : import uiScriptLocale import item EQUIPMENT_START_INDEX = 180 SPACE_BONUS_INVENTORY = 130 IMAGE_CHELO = "d:/ymir work/ui/public/Parameter_Slot_01.sub" window = { "name" : "InventoryWindow", ## 600 - (width + 오른쪽으로 부터 띄우기 24 px) "x" : SCREEN_WIDTH - 176 - SPACE_BONUS_INVENTORY, "y" : SCREEN_HEIGHT - 37 - 585, "style" : ("movable", "float",), "width" : 176 + SPACE_BONUS_INVENTORY, "height" : 585, "children" : ( ## Inventory, Equipment Slots { "name" : "board", "type" : "board", "style" : ("attach",), "x" : 0, "y" : 0, "width" : 176 + SPACE_BONUS_INVENTORY, "height" : 585, "children" : ( ## Title { "name" : "TitleBar", "type" : "titlebar", "style" : ("attach",), "x" : 8, "y" : 7, "width" : 161 + SPACE_BONUS_INVENTORY, "color" : "yellow", "children" : ( { "name":"TitleName", "type":"text", "x": (161 + SPACE_BONUS_INVENTORY) / 2, "y":3, "text":uiScriptLocale.INVENTORY_TITLE, "text_horizontal_align":"center" }, ), }, ##Ocultar table de bonus { "name" : "OcultarTabla", "type" : "button", "x" : 161 + SPACE_BONUS_INVENTORY - 30, "y" : 10, "default_image" : "d:/ymir work/ui/public/minimize_button_01.sub", "over_image" : "d:/ymir work/ui/public/minimize_button_02.sub", "down_image" : "d:/ymir work/ui/public/minimize_button_03.sub", "tooltip_text" : "Bonus", }, ################################################### ################################################### ################################################### #############Tabla de Bonus @Chelo############ #Bonus de Defenza.......................... { "name" : "txt_info_defenza", "type" : "horizontalbar", "x" : 176 - 7, "y" : 33, "width" : 125, "children" : ( { "name" : "bonus_text_1", "type" : "text", "x" : 0, "y" : 0, "all_align" : "center", "text" : "Defensif", }, ), }, ######################################## { "name" : "txt_info_defenza_espada", "type" : "text", "x" : 176 - 5, "y" : 55, "text" : "Epee:" }, { "name" : "Thin_info_defenza_espada", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 55 - 2, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_1", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ######################################## { "name" : "txt_info_defenza_2manos", "type" : "text", "x" : 176 - 5, "y" : 75, "text" : "Lance:" }, { "name" : "Thin_info_defenza_2manos", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 - 2, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_2", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ######################################## { "name" : "txt_info_defenza_daga", "type" : "text", "x" : 176 - 5, "y" : 75 + 20, "text" : "Dague:" }, { "name" : "Thin_info_defenza_daga", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_3", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ######################################## { "name" : "txt_info_defenza_Felcha", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20, "text" : "Fleche:" }, { "name" : "Thin_info_defenza_Felcha", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_4", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ######################################## { "name" : "txt_info_defenza_campana", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20, "text" : "Gong:" }, { "name" : "Thin_info_defenza_campana", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_5", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ######################################## { "name" : "txt_info_defenza_fan", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20, "text" : "Eventail:" }, { "name" : "Thin_info_defenza_fan", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_6", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ######################################## { "name" : "txt_info_resist_Magia", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20, "text" : "Magie:" }, { "name" : "Thin_info_resist_Magia", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_7", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ######################################## ######################################## { "name" : "txt_info_resist_veneno", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20, "text" : "Poison:" }, { "name" : "Thin_info_resist_veneno", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_8", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ######################################## { "name" : "txt_info_resist_guerrero", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "text" : "Guerrier:" }, { "name" : "Thin_info_resist_guerrero", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_9", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ######################################## { "name" : "txt_info_resist_ninja", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "text" : "Ninja:" }, { "name" : "Thin_info_resist_ninja", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_10", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ######################################## { "name" : "txt_info_resist_sura", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "text" : "Sura:" }, { "name" : "Thin_info_resist_sura", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_11", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ######################################## { "name" : "txt_info_resist_chaman", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "text" : "Shaman:" }, { "name" : "Thin_info_resist_chaman_", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_12", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ################################################### #Bonus de onfensivo.......................... { "name" : "txt_info_onfensivo", "type" : "horizontalbar", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "width" : 125, "children" : ( { "name" : "bonus_text_2", "type" : "text", "x" : 0, "y" : 0, "all_align" : "center", "text" : "Offensif", }, ), }, ######################################## { "name" : "txt_info_criticos", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "text" : "Critique:" }, { "name" : "Thin_info_criticos", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_13", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ################################################### { "name" : "txt_info_penetracion", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "text" : "Percant:" }, { "name" : "Thin_info_penetracion", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_14", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ################################################### { "name" : "txt_info_danomedia", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "text" : "Degats moyen:" }, { "name" : "Thin_info_danomedia", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_15", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ################################################### { "name" : "txt_info_danohabilidad", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "text" : "Degats comp.:" }, { "name" : "Thin_info_danohabilidad", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_16", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ################################################### { "name" : "txt_info_fmediohumano", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "text" : "Demi humains:" }, { "name" : "Thin_info_fmediohumano", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_17", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ################################################### { "name" : "txt_info_fnomuerto", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "text" : "Mort vivant:" }, { "name" : "Thin_info_fnomuerto", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_18", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ################################################### { "name" : "txt_info_fdemonio", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "text" : "Mal:" }, { "name" : "Thin_info_fdemonio", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_19", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ################################################### { "name" : "txt_info_fguerrero", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "text" : "Guerrier:" }, { "name" : "Thin_info_fguerrero", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_20", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ################################################### { "name" : "txt_info_fninja", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "text" : "Ninja:" }, { "name" : "Thin_info_fninja", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_21", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ################################################### { "name" : "txt_info_fsura", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "text" : "Sura:" }, { "name" : "Thin_info_fsura", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_22", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ################################################### { "name" : "txt_info_fcham", "type" : "text", "x" : 176 - 5, "y" : 75 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "text" : "Shaman:" }, { "name" : "Thin_info_fcham", "type" : "image", "x" : 176 + SPACE_BONUS_INVENTORY - 65, "y" : 75 + 20 - 2 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20 + 20, "image" : IMAGE_CHELO, "children" : ( { "name" : "bonus_23", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, ################################################### Et le tour est joué Petite astuce dans Notepad++ si en copiant/collant il vous remplace les tabulations par des espaces : Placez votre curseur là ou devraient être les tabulations, appuyez sur la touche de tabulation et appuyez sur la touche précédent. En faisant cette manip Notepad++ remplacera les espaces par le nombre de tabulation qu'il faut. Ce tutoriel est à présent terminé. Merci d'avoir lu en espérant en aider certains. Source : FreakGamers, et un peu moi ^^
  22. Bonjour, Module Loader est un projet similaire à Adhons les principales différence sont les fonctions et les modules (qui sont plus difficile a trouvé que les addons). Module Loader entièrement gratuit et si vous voulez les sources je peut vous les envoyé Lien : [Hidden Content] Contenu de l'archive : Le dossier "dev" avec quelques fichiers expliquant les fonctions disponibles. Le dossier module avec un fichier loader.swf et un fichier de configuration modules.txt (les modules à charger sont dans ce fichier). Le fichier dofus.dll (pour le menu au clic droit). Le fichier Dofus.exe (j'ai juste oublié de le viré de l'archive). Le fichier loader.swf qui permet de charger modules/loader.swf. Merci, --- Download
  23. Bonjour, Avant toute chose, je précise que ce partage m'a été demandé par Zano directement (on me pourra pas me dire "wesh dou ta l'droit d'partage comme ça?") Voici le partage officiel de Zano, via GitHub, d'Astria Map Editor V2, avec les sources et aussi une version compilée, en mode totalement offline (pas besoin de wamp). Voici directement le copié/collé de son partage sur un autre forum (aucun Hide en place car ceci n'est pas de moi mais de Zano, merci quand même de poster un remerciement à son égard) Je pense qu'il serait judicieux, pour ceux ayant les compétences, de travailler directement sur GitHub afin de continuer son travail. Encore merci à lui pour ce cadeau --- Download
  24. Salut Funky-Emu. Aujourd'hui je vais vous apprendre à installer HabboPHP et l'utiliser Pour suivre ce tutoriel, il vous faudra soit Phoneix soit Butterfly Il faudra totalement supprimer votre ancien CMS mais pas les SWF ! Téléchargement : ICI Scan virus : ICI On va maintenant l'installer, vous allez déplacer tout les fichiers de l'archive dans votre dossier web (ftp pour hebergeur // htdocs pour XAMP /// www pour WAMP) Un fois fait rendez vous sur : [Hidden Content] ou l'adresse de votre hébergement web. Faites "C'est partit" Allez ensuite dans votre base de donné, par exemple avec phpmydamin ça donne : -Allez dans votre base de données -Faites "importer" -sélectionner votre fichier .sql se trouvant dans pheonix : Faire ensuite "Exécuter" L'importation va durer un petit moment, c'est possible. Retournez sur votre localhost puis : Configurez comme il se doit ceci, puis, attendez phpmyadmin est finis toutes ses requêtes, puis faites : "Envoyer" puis "vérifier" Remplissez comme vous le voulez puis faites : "Envoyer" Ensuite, aller dans votre fichier web, puis supprimer le dossier "install" une fois ceci, fait allez sur [Hidden Content] Connectez-vous, et allez dans la Housepeeking (administration) : Allez dans l'onglet serveur et si vous avez suivis le tutoriel de Calypso vous devez entrer ça : (Si non, corrigez ce qu'il faut !) Adresse Emulateur : 127.0.0.1 Port Emulateur : 3000 Texts : [Hidden Content]game/gamedata/external_flash_texts.txt Variables : [Hidden Content]game/gamedata/external_variables.txt Habbo SWF : [Hidden Content]game/gordon/PRODUCTION-201602082203-712976078/Habbo.swf Ce qui devrait vous donnez ça : Une fois ceci fait, vous voilà Administrateur, cms configurer, je crois que c'est bon non ? Petit bonus, pour changer ça : Allez dans : admin\includes\footer.php admin\form\includes Voilà, après ce petit bonus, je vous laisse Bon jeu ! Cordialement. --- Download
  25. Yoh ! Tout le monde ! Lors de ce tutoriel, vous allez apprendre à créer un serveur Aura Kingdom en LOCAL . Voici les notions importantes à assimiler avant de commencer le tutoriel. Avant tout de choses j'aimerai m'expliquer; et ayant essayer divers moyens de contourner le problème. Vous pourrez lancer le serveur que en Local ( 192.168.1.x ). Mais ceci ne serra pas un SandBox [/u] Nous allons devoir émuler le jeu. L'émulation consiste à substituer (remplacer) un élément de matériel informatique, tel un terminal informatique, un ordinateur ou une console de jeux par un logiciel. La définition du terme émuler est « chercher à imiter ». L'objectif de ce tutoriel est donc de créer un serveur différent à celui des serveurs officiels de Aura Kingdom où nous allons pouvoir se connecter. Nous pourrons ensuite modifier le jeu selon nos envies. Un serveur Aura Kingdom (et comme la plupart des jeux) est composé de fichier serveurs, ici représenté sous les noms : LoginServer , MissionServer , WorldServer et ZoneServer. C'est les cœurs même du serveur. Ces fichiers sont important car ils permettent l'execution du serveur en symbiose et la connection à la base de données. Il sontdonc indispensable pour le bon fonctionnement de Aura Kingdom. À ce jour, les sources de ces fichiers ne sont pas encore disponible, et sont encore encoder en Sha1. Le serveur est aussi composé d'une base de données qui permet de stocker une multitude d'informations. Dans le domaine d'Aura Kingdom, elle permet de stocker les personnages, les comptes des joueurs, les variables de quêtes, liste des GM, etc ... On utilise le langage SQL pour interagir avec celle-ci. Ainsi, le serveur est composé d'un serveur LoginServer. Le LoginServer est un fichier service réseau qui va permettre d'authentifier un utilisateur. Un joueur d'Aura Kingdom qui va inscrire son nom d'utilisateur et son mot de passe va être authentifié via le service. Il pourra ensuite accéder au jeu. Ces fichiers serveurs fonctionne sous le système d'exploitation CentOS (GNU/Linux - UNIX) bien qu'il soit tout à fait possible de l'adapter à un autre système d'exploitation. Nous n'allons pas installer CentOS sur notre PC, nous allons le virtualiser. La virtualisation va nous permettre d'installer CentOS comme un simple logiciel sous Windows. Afin de faciliter la procédure, nous allons télécharger un fichier .VDI (Virtual Disk Image) qui peut être utilisé sous Virtual Box. C'est un disque dur virtuel déjà préparé. Le VDI que vous allez télécharger ainsi que certains screens sont le fruit de mon travail. PostGreSQL ainsi que toutes les configurations nécessaires sont déjà installées. > J'expliquerai plus bas certaines informations plus spécifique à ces choix. --- Download