Leaderboard


Popular Content

Showing content with the highest reputation on 02/01/19 in all areas

  1. 2 points
    Informations : Config : Serveur: Systèmes: Screenshots: Téléchargements: Installation: --- Download
  2. 1 point
    Niveau requis : Débutant Temps estimé : 30 minutes Salut à toi ! Tu n'as jamais fait de serveur Metin2 ? Ce tutoriel est fait pour toi ! Je vais t'expliquer comment créer un serveur de A à Z ! Tu pourras ensuite le modifier à ta guise et le mettre à ton image. Information. Lors de ce tutoriel, vous allez apprendre à créer un serveur en local. Vous serez le seul à pouvoir vous y connecter. Information. Les fichiers utilisés sont les files 2014. Vous pourrez à l'avenir les changer sans aucun problème Pré-requis: Virtual Box, qui nous permettra de virtualiser un système d'exploitation. En effet, un serveur Metin2 fonctionne sous FreeBSD, il sera plus simple pour vous de virtualiser ce système sur votre Windows que de faire une deuxième installation sur votre ordinateur. Navicat, un client Mysql. Il vous permettra de vous connecter à la base de données de votre serveur Metin2. On y retrouveras toutes les informations liées aux joueurs, aux items, aux comptes des utilisateurs, etc ... WinSCP, un client SFTP. Similaire au FTP, il vous permettra de naviguer sur les différents fichiers de votre serveur (maps, configurations, etc ..) Le serveur VDI tout prêt pour vous qui possède déjà tous les fichiers du serveur avec FreeBSD d'installé. Il ne nous manquera plus qu'à le lancer avec Virtual Box. Le client metin2 qui vous permettra de vous connecter en jeu à votre serveur. I. La machine virtuelle II. Lancement du serveur Metin2 III. Se connecter In Game IV. Accéder aux fichiers du serveur V. Accéder à la base de données Succès ! Vous venez de créer un serveur Metin2 en local. Vous pouvez maintenant vous amuser sur votre serveur ou tout simplement y rajouter des fonctionnalités sympas. Pour continuer: Vous trouverez de nombreux partages et de tutoriels sur Funky-Emu dans la section Metin2. Cette FAQ pourra répondre à la plupart de vos questions. Vous pouvez créer un compte GM en suivant ce tutoriel Une catégorie support est disponible. Si vous avez un problème ou une question, n'hésitez pas à poster une demande ! Bon courage à vous et bienvenue dans le monde des serveurs privés Metin2 !
  3. 1 point
    Mesdames, Messieurs, Bonjour, Bonsoir, Files Metin2 2016 La Team FE ( Funky Émulation ) vous propose aujourd'hui des Files Metin2 2016 de qualité avec la majorité des systèmes de l'officiel jusqu'à aujourd'hui ( 2016 ). Les Files sont actuellement en version 3.0. Les versions 1.0 et 2.0 ne sont plus disponible au téléchargement. Ces Files sont compatibles avec les serveurs en No-IP / Hamachi / Local, attention, pour permettent aux joueurs de rejoindre votre devrez rediriger les ports de box, en NO-IP / Hamachi les joueurs ne pourront pas rejoindre. Changelog 3.0 A Savoir Screenshots Téléchargements Machine Virtuelle FreeBSD 9.2 avec VirtualBox - All In One Pour aller plus loin Master Guide - Le Guide de l’Émulation Metin2 Master Guide - Le Guide des Modifications sur Metin2 Cordialement, Team FE La vente de ces files est strictement interdite, si elles ont été mises en publique ce n'est pas pour les vendre mais pour faire profiter n'importe quelle communauté de ce travail.
  4. 1 point
    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
  5. 1 point
    Bonjour, J'aimerais vous faire part de mon partage d'un très gros pack complet de serveur metin 2 ou j ai passer presque 6 mois a bosser dessus suite , a ma reprise de boulot dans la vie actif je n'est plus le temps de m'occuper de tout sa et je trouve sa dommage de faire dormir sa sur mon pc donc je laisse un lien de dl pour récupéré tout sa en espérant que vous ailler une bonne connexion car le dossier et très gros en espérant que vous me laisserez des bon coms et oublier pas un pouce bleu Merci. Source=moi Lien de dl=Cliquez ici pour télécharger Le fichier a dl comporte : Client Lib source Files Se sont des files 2014 toute debug , tout l interface et modifier le client et en qualité hd , ce qui de l implantation dans le client tout et implanter les magasin hors ligne , le switchbot, interface inédite en jeu et plein autre surprise je vous laisse découvrir, je vous laisse un gros partage prenez en par que c'est beaucoup de boulot et que je partage tout sa avec plaisir pour ma part! --- Download
  6. 1 point
    Niveau requis : Débutant Temps estimé : 15 minutes Bonjour à tous, Ce tutoriel a pour but de vous expliquer comment configurer un item sur votre serveur. Voici la liste des configurations possibles : Pré-requis: Ce tutoriel vidéo et écrit vous permet d'apprendre comment modifier facilement votre item_proto à l'aide d'un tableur. Un item déjà implanté sur le serveur sur lequel vous souhaitez effectuer les configurations. Ce tutoriel vous explique comment implanter un objet sur votre serveur (item, arme, armure, coiffure, étole, ect ...) L'item_proto.txt qui se trouve dans les fichiers de votre serveur (WinSCP). C'est dans ce fichier que se trouve la configuration de tous les objets du jeu. I. Item_proto.txt, c'est quoi ? II. Partie II Pour continuer : Vous trouverez de nombreux partages et tutoriels sur Funky-Emu dans la section Metin2. Cette 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 !
  7. 1 point
    Niveau requis : Intermédiaire EterNexus Ce sont les sources du logiciel EterNexus, il permet de DePack & RePack votre Client Metin2. GitHub : ICI Téléchargement : ICI Cordialement, Hey hey
  8. 1 point
    Bonjour, J'ai décidé de refaire ce tutoriel Aujourd'hui je vais vous expliquer comment ajouté l'option "détruire" lorsque vous voulez jeter un item. Ca va être assez long, mais facile si vous suivez bien le tutoriel. Commençons ______________________________________________________________________ PRÉREQUIS ______________________________________________________________________ 1.Des source Serveur 2.Des sources Client 3.Un client ______________________________________________________________________ 1.SOURCE SERVEUR ______________________________________________________________________ Ouvrez votre "packet.h" et recherchez: HEADER_CG_ITEM_DROP2 = 20, Ajoutez ceci juste en dessous: HEADER_CG_ITEM_DESTROY = 21, Recherchez maintenant: typedef struct command_item_drop2 { BYTE header; TItemPos Cell; DWORD gold; BYTE count; } TPacketCGItemDrop2; Ajoutez ceci juste en dessous: typedef struct command_item_destroy { BYTE header; TItemPos Cell; } TPacketCGItemDestroy; Ouvrez maintenant le fichier packet_info.cpp et recherchez: Set(HEADER_CG_ITEM_DROP2, sizeof(TPacketCGItemDrop2), "ItemDrop2", true); Ajoutez ceci juste en dessous: Set(HEADER_CG_ITEM_DESTROY, sizeof(TPacketCGItemDestroy), "ItemDestroy", true); Ouvrez maintenant le fichier input_main.cpp et recherchez la fonction: void CInputMain::ItemDrop2(LPCHARACTER ch, const char * data) Ajoutez cette fonction juste après: void CInputMain::ItemDestroy(LPCHARACTER ch, const char * data) { struct command_item_destroy * pinfo = (struct command_item_destroy *) data; if (ch) ch->DestroyItem(pinfo->Cell); } Cherchez maintenant ceci: case HEADER_CG_ITEM_DROP2: if (!ch->IsObserverMode()) ItemDrop2(ch, c_pData); break; Et ajoutez: case HEADER_CG_ITEM_DESTROY: if (!ch->IsObserverMode()) ItemDestroy(ch, c_pData); break; Ouvrez maintenant le fichier char_item.cpp et recherchez la fonction: bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount) Ajoutez cette fonction juste au-dessus: bool CHARACTER::DestroyItem(TItemPos Cell) { LPITEM item = NULL; if (!CanHandleItem()) { if (NULL != DragonSoul_RefineWindow_GetOpener()) ChatPacket(CHAT_TYPE_INFO, LC_TEXT("°*È*âÀ» ¿¬ »óÅ¿¡¼*´Â ¾ÆÀÌÅÛÀ» ¿Å±æ ¼ö ¾ø½À´Ï´Ù.")); return false; } if (IsDead()) return false; if (!IsValidItemPosition(Cell) || !(item = GetItem(Cell))) return false; if (item->IsExchanging()) return false; if (true == item->isLocked()) return false; if (quest::CQuestManager::instance().GetPCForce(GetPlayerID())->IsRunning() == true) return false; if (item->GetCount() <= 0) return false; SyncQuickslot(QUICKSLOT_TYPE_ITEM, Cell.cell, 255); ITEM_MANAGER::instance().RemoveItem(item); ChatPacket(CHAT_TYPE_INFO, LC_TEXT("L'item %s est desormais detruit."), item->GetName()); return true; } Ouvrez maintenant le fichier char.h et recherchez: bool DropItem(TItemPos Cell, BYTE bCount=0); Ajoutez ceci juste au-dessus: bool DestroyItem(TItemPos Cell); Ouvrez maintenant le fichier input.h et recherchez: void ItemDrop2(LPCHARACTER ch, const char * data); Ajoutez ceci juste en dessous: void ItemDestroy(LPCHARACTER ch, const char * data); ______________________________________________________________________ 2. SOURCE CLIENT ______________________________________________________________________ Ouvrez le fichier packet.h et recherchez: HEADER_CG_ITEM_DROP2 = 20, Ajoutez ceci juste en dessous: HEADER_CG_ITEM_DESTROY = 21, Recherchez maintenant: typedef struct command_item_drop2 { BYTE header; TItemPos pos; DWORD gold; BYTE count; } TPacketCGItemDrop2; Ajoutez ceci juste en dessous: typedef struct command_item_destroy { BYTE header; TItemPos pos; }TPacketCGItemDestroy; Ouvrez maintenant le fichier PythonNetworkStreamPhaseGameItem.cpp et recherchez la fonction: bool CPythonNetworkStream::SendItemDropPacketNew(TItemPos pos, DWORD elk, DWORD count) Ajoutez cette fonction juste en dessous: bool CPythonNetworkStream::SendItemDestroyPacket(TItemPos pos) { if (!__CanActMainInstance()) return true; TPacketCGItemDestroy itemDestroyPacket; itemDestroyPacket.header = HEADER_CG_ITEM_DESTROY; itemDestroyPacket.pos = pos; if (!Send(sizeof(itemDestroyPacket), &itemDestroyPacket)) { Tracen("SendItemDestroyPacket Error"); return false; } return SendSequence(); } Ouvrez maintenant le fichier PythonNetworkStreamModule.cpp et recherchez la fonction: PyObject* netSendItemDropPacket(PyObject* poSelf, PyObject* poArgs) Ajoutez cette fonction juste en dessous: PyObject* netSendItemDestroyPacket(PyObject* poSelf, PyObject* poArgs) { TItemPos Cell; if (!PyTuple_GetInteger(poArgs, 0, &Cell.cell)) return Py_BuildException(); CPythonNetworkStream& rkNetStream = CPythonNetworkStream::Instance(); rkNetStream.SendItemDestroyPacket(Cell); return Py_BuildNone(); } Recherchez maintenant: { "SendItemDropPacketNew", netSendItemDropPacketNew, METH_VARARGS }, Ajoutez ceci juste après: { "SendItemDestroyPacket", netSendItemDestroyPacket, METH_VARARGS }, Ouvrez maintenant le fichier PythonNetworkStream.h et recherchez la fonction: bool SendItemDropPacketNew(TItemPos pos, DWORD elk, DWORD count); Ajoutez ceci juste après: bool SendItemDestroyPacket(TItemPos pos); ______________________________________________________________________ 3. PYTHON CLIENT ______________________________________________________________________ Ouvrez le fichier uicommon.py du pack root et recherchez la class: class QuestionDialog(ui.ScriptWindow): Juste après celle class, ajoutez la class suivante: class QuestionDialogItem(ui.ScriptWindow): def __init__(self): ui.ScriptWindow.__init__(self) self.__CreateDialog() def __del__(self): ui.ScriptWindow.__del__(self) def __CreateDialog(self): pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "uiscript/questiondialogitem.py") self.board = self.GetChild("board") self.textLine = self.GetChild("message") self.acceptButton = self.GetChild("accept") self.destroyButton = self.GetChild("destroy") self.cancelButton = self.GetChild("cancel") def Open(self): self.SetCenterPosition() self.SetTop() self.Show() def Close(self): self.Hide() def SetWidth(self, width): height = self.GetHeight() self.SetSize(width, height) self.board.SetSize(width, height) self.SetCenterPosition() self.UpdateRect() def SAFE_SetAcceptEvent(self, event): self.acceptButton.SAFE_SetEvent(event) def SAFE_SetCancelEvent(self, event): self.cancelButton.SAFE_SetEvent(event) def SetAcceptEvent(self, event): self.acceptButton.SetEvent(event) def SetDestroyEvent(self, event): self.destroyButton.SetEvent(event) def SetCancelEvent(self, event): self.cancelButton.SetEvent(event) def SetText(self, text): self.textLine.SetText(text) def SetAcceptText(self, text): self.acceptButton.SetText(text) def SetCancelText(self, text): self.cancelButton.SetText(text) def OnPressEscapeKey(self): self.Close() return True Ouvrez maintenant le fichier game.py et cherchez la def suivante: def __DropItem(self, attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount): Recherchez ce bout de code dans la fonction (2x): itemDropQuestionDialog = uiCommon.QuestionDialog() Remplacez par: itemDropQuestionDialog = uiCommon.QuestionDialogItem() Toujours dans la même fonction, recherchez: itemDropQuestionDialog.SetAcceptEvent(lambda arg=True: self.RequestDropItem(arg)) Ajoutez ceci juste après: itemDropQuestionDialog.SetDestroyEvent(lambda arg=True: self.RequestDestroyItem(arg)) Recherchez maintenant la fonction: def RequestDropItem(self, answer): Ajoutez cette fonction juste après: def RequestDestroyItem(self, answer): if not self.itemDropQuestionDialog: return if answer: dropType = self.itemDropQuestionDialog.dropType dropNumber = self.itemDropQuestionDialog.dropNumber if player.SLOT_TYPE_INVENTORY == dropType: if dropNumber == player.ITEM_MONEY: return else: self.__SendDestroyItemPacket(dropNumber) self.itemDropQuestionDialog.Close() self.itemDropQuestionDialog = None constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0) Recherchez ensuite la fonction: def __SendDropItemPacket(self, itemVNum, itemCount, itemInvenType = player.INVENTORY): Et ajoutez celle-ci juste après: def __SendDestroyItemPacket(self, itemVNum, itemInvenType = player.INVENTORY): if uiPrivateShopBuilder.IsBuildingPrivateShop(): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP) return net.SendItemDestroyPacket(itemVNum) Ouvrez maintenant le fichier locale_interface.txt et ajoutez ceci: DESTROY Destroy Placez le fichier questiondialogitem.py dans votre pack uiscript ! LIEN FE Screen du système: Voilà c'est fini ! Source du totoriel : .Avenue™ de Metin2Dev Traduction: moi Cordialement, #Saw.
  9. 1 point
    Bonjour, Je partage ici la dernière rev (il me semble) de l'émulateur sans doute le plus connu & le plus complet de l'émulation : Ancestra Remake par DeathDown Cet émulateur n'est en aucun cas ma création, mais celle de Deathdown. Merci d'utiliser la section A / Q / S pour toutes questions relatives à l'émulateur. I. Changelog II. Téléchargements
  10. 1 point
    Master Guide Le Guilde de l’Émulation sur Metin2 Le Guide des Modifications sur Metin2 Sommaire Introduction - Présentation de l’Émulation Metin2... Création & Gestion d'un Serveur Metin2 Introduction Créer son Serveur Metin2 Paramétrer & Gérer son Serveur Metin2 Serveur Client Quêtes Cartes Objets Entités Extra Sources de Metin2 Introduction Compilation Conclusion - A vous de jouer... Introduction - Présentation de l’Émulation Metin2... Si tu lis ce message, c'est que toi aussi tu cherches à concevoir un serveur de notre MMORPG préféré : Metin2. Sache, qu'avec ce guide en main, tu sauras à la fin de ce dernier, créer, gérer et modifier ton Serveur Metin2 comme bon te semble ! Avant toute choses : un peu de théorie ! Une certaine aisance en informatique est recommandée pour mener à bien la quête que tu mènes. Metin2 utilis plusieurs langages de programmation pour fonctionner, tels que le LUA, le Python, C++ et le SQL. Nous avons la chance de posséder depuis 2014, les Sources de Metin2, c'est-à-dire qu'avec les sources et quelques connaissances dans la programmation, tu seras capable de concevoir tes propres systèmes, ajouter des classes de personnages, ajouter des royaumes et pleins d'autres choses ! En soit, grâce aux sources, tu auras un contrôle complet sur le jeu ! Cette partie est réservée aux personnes ayant des connaissances dans la programmation. Le langage C++ nécessite de l'analyse et de la compréhension sur les erreurs et les informations qui sont transmises par le compilateur indépendamment des tutoriels et des partages proposés... L'émulation avant 2014, se basait exclusivement sur les fichiers serveurs (CF : Files Server) déjà conçus et on devait faire des modifications classiques et les serveurs se ressemblaient tous pour la plupart, une époque révolue ! Tu as la possibilité de t'auto-héberger et de l'installer sur ton ordinateur si ce dernier est suffisamment performant. Une utilisation locale pour des tests sera recommandée puis l'acquisition d'un serveur dédié chez un hébergeur tel que OVH, SoYouStart ou encore Kimsufi pour une utilisation publique avec des joueurs, moyennant quelques euros par mois. Ce guide, t'indiquera principalement quels sont les sujets importants à voir dans un premier temps, puis quelques extras pour améliorer ton serveur ! Pré-requis Un extra de patience... Une coulée de motivation... Une explosion d'imagination... Une infinité de logique... Une goûte de compréhension... Création & Gestion d'un Serveur Metin2 Introduction Rentrons dans le vif du sujet et je sais que tu attends ça avec impatience ! Aujourd'hui, tu verras sur le forum des Server Files avec une année de sortie, tel que les Server Files 2012, Server Files 2013, Server Files 2014, Server Files 2016, Server Files 2018... Garde en tête que les Server Files 2014++ disposent des Sources de Metin2. Je tiens à te rassurer sur un point, pour débuter, il n'est pas nécessaire de travailler sur les Sources de Metin2, les sources devront être utilisées que si tu souhaites te démarquer et dépend principalement du type de jeu que tu souhaites offrir à tes joueurs ou simplement de corriger des bugs qui nécessitent de faire des modifications sur les sources. La Création d'un Serveur Metin2 commence par l'émulation d'un système d'exploitation en plus du tiens, FreeBSD. FreeBSD est un système d'exploitation de type UNIX, sur lequel tourne majoritairement les Server Files de Metin2. C'est l'émulation d'un second système d'exploitation qui consomme des ressources en processeur, en mémoire vive et en stockage sur le système hôte, c'est-à-dire, ton ordinateur. Si tu utilises un serveur dédié, tu installeras directement FreeBSD en tant que système d'exploitation principal sans passer par Windows ! Un guide sur le fonctionnement d'une communication Serveur et Client est expliqué par @Kijaru : Comment fonctionne un serveur privé Metin2 ? Création d'un Serveur Metin2 Attention : A partir des Server Files 2014, il est impossible dans le cadre de la création d'un Serveur Metin2, Local, No-IP ou Hamachi de faire rejoindre des joueurs. Les Server Files 2014 fonctionnent exclusivement pour vos tests personnelles et du développement de votre serveur, mais nécessiteront un serveur dédié pour être utilisés avec des joueurs : un problème lié à la virtualisation et de la conception de la couche réseau du Game Metin2. Le bug est le suivant : le personnage sera déconnecté et un retour channel sera visible après avoir choisi son personnage. Une correction est désormais disponible mais nécessite une compilation des Sources de Metin2, si vous n'avez pas des Server Files déjà corrigés ! Les Server Files 2016 possèdent désormais la correction. Créer un Serveur Metin2 avec No-IP ou Créer un Serveur Metin2 avec Hamachi ou Créer un Serveur Metin2 en Local Extra : Changer ses Files Metin2 Extra : Installer un Serveur Dédié Metin2 Extra : Créer un Environnement pour un Serveur Metin2 Extra : Installer des Libs sur FreeBSD Paramétrer & Gérer son Serveur Metin2 Serveur Créer un Magasin via un PNJ Metin2 Gérer l'Apparition des Monstres, des Pierres Metins et de vos PNJ sur vos Cartes Metin2 Client Depack / Repack son Client Metin2 avec EterNexus Depack / Repack son Client Metin2 avec EterManager Configurer son Client Metin2 Quêtes Forum : Liste des Quêtes Metin2 Extra : Quêtes Metin2, les Bases Extra : Fonctions LUA Extra : LUA - Tableaux Multidimensionnels Implémenter une Quête Metin2 Cartes Forum : Liste des Cartes Metin2 Extra : WorldEditor Metin2 Extra : Utiliser WorldEditor Metin2 Extra : Calculer les Coordonnées Universelles Extra : Calculer la BasePosition de votre Carte Metin2 Implémenter une Carte Metin2 Mettre en place la Grande Carte Objets Forum : Liste des Objets Metin2 Extra : Configurer tous ses Objets Metin2 Extra : Changer la valeur des Bonus Metin2 Extra : Liste des Bonus Metin2 Implémenter une Arme / Armure / Costume / Objet... Metin2 Entités Forum : Liste des Monstres, Familiers, PNJ... Metin2 Implémenter une Entité Metin2 Implémenter une Monture Metin2 Extra Forum : Liste des Systèmes Metin2 Forum : Liste des Textures Metin2 Forum : Tutoriels & Partages ( Files 2012 ) Extra : Modifier facilement l'Item Proto TXT et le Mob Proto TXT avec Excel Extra : Comment Fonctionne un Serveur Metin2 ? Extra : Configurer ses Utilisateurs MySQL Extra : Désactiver le Stricte-Mode MySQL Extra : Créer un Mot de Passe Metin2 Extra : Rediriger ses Ports sur la Freebox Extra : Modifier le chemin d'une texture d'un GR2 Créer un Compte Metin2 et le mettre GM Commandes Metin2 GM 2014+ Sources de Metin2 Introduction Attention : Compiler nécessite tout de même quelques connaissances dans le domaine de la programmation, principalement dans la compréhension des erreurs et des alertes qui sont émises par le compilateur. La compilation, en informatique est un travail réalisé par un compilateur qui consiste à transformer un code source lisible par un humain en un fichier binaire exécutable par une machine. Par exemple, les Sources du Client Metin2, compilées avec l'aide de Microsoft Visual Studio nous donnerons un fichier exécutable que l'on nomme : metin2client.exe. Les Sources de Metin2, sont constituées de plusieurs fichiers dont les extensions sont respectivement .cpp et .h, ces fichiers forment ce qu'on appelle : les sources. La compilation de ces fichiers permet d'obtenir des files : db et le game dans un environnement UNIX avec FreeBSD, un fichier client : metin2client.exe et des tools : worldeditor.exe, dump_proto.exe dans un environnement WIN32 avec Windows... Un sujet de @Kijaru explique la compilation, le pourquoi du comment : Compilation Metin2 : Pourquoi ? Comment ? Compilation Extra : Compilation Metin2 : Pourquoi ? Comment ? Extra : Machine Virtuelle prête à l'Emploi Extra : Liste des Systèmes Metin2 Extra : BugFix 2014+ : Jouer à plusieurs sur son serveur Metin2 Apprendre à Compiler le Client Metin2 Apprendre à Compiler son Dump Proto Metin2 Apprendre à Compiler le Game et DB Metin2 Conclusion - A vous de jouer... Grâce à Funky-Émulation, les membres qui constituent ce forum, les partages et les tutoriels qui l'alimentent, tu es désormais capable de créer un Serveur Metin2. N'hésite pas à partager tes trouvailles et tes idées permettant de faire évoluer l'émulation de ce jeu. Tu as ouvert ton Serveur Metin2 ? Présente le nous dans la rubrique Vos Serveurs ! Montre nous maintenant de quoi tu es capable ! Bonne chance à toi ! Si tu as besoin d'aide, nous serons là pour t'aider dans l'Aide / Questions / Support. Cordialement, ASIKOO...
  11. 1 point
    Bonjours à toutes et à tous ! Il ne me semble pas avoir vu ce tuto sur ce forum donc je vais partager la façon d'installer un nouveau bouton sur l'interface IG. Pour l'exemple, je vais utiliser la Bonus Gui en la mettant sur un nouveau bouton à côté de celui de l'inventaire. Bien évidemment on peut adapter ce tuto pour mettre sur le bouton tout autre chose que la bonus gui ! Dans ce tuto nous allons utiliser la Bonus Gui partagée par Cube: [Hidden Content] Commencez par télécharger le script python de la GUI: [Hidden Content] Mettez ce fichier dans votre root. Pour commencer, nous allons ajouter le bouton à l'interface. Dépackez locale_fr puis ouvrez le fichier "taskbar.py" se trouvant dans: depack\locale\fr\ui Dans ce fichier, cherchez ceci: { "name" : "InventoryButton", "type" : "button", "x" : SCREEN_WIDTH - 110, "y" : 3 + Y_ADD_POSITION, "tooltip_text" : uiScriptLocale.TASKBAR_INVENTORY, "default_image" : ROOT + "TaskBar/Inventory_Button_01.sub", "over_image" : ROOT + "TaskBar/Inventory_Button_02.sub", "down_image" : ROOT + "TaskBar/Inventory_Button_03.sub", }, Une fois trouvé, faites un copier/coller de ceci juste en dessous: { "name" : "BonusGui", "type" : "button", "x" : SCREEN_WIDTH - 178, "y" : 3 + Y_ADD_POSITION, "tooltip_text" : "Bonus", "default_image" : ROOT + "TaskBar/Inventory_Button_01.sub", "over_image" : ROOT + "TaskBar/Inventory_Button_02.sub", "down_image" : ROOT + "TaskBar/Inventory_Button_03.sub", }, "tooltip_text" : "Bonus", Ceci veut dire que lorsque vous passez votre curseur sur la case, le texte "Bonus" s'affiche, vous pouvez donc le modifier comme vous le souhaitez "default_image" : ROOT + "TaskBar/Inventory_Button_01.sub", "over_image" : ROOT + "TaskBar/Inventory_Button_02.sub", "down_image" : ROOT + "TaskBar/Inventory_Button_03.sub", Cette partie gère les 3 images composant l'icône, il y a l'image lorsque l'icône est normal, lorsqu'on passe notre curseur sur l'icône est lorsqu'on clic dessus. Pour ce tuto, c'est donc l'icône de l'inventaire, à vous de mettre ce que vous voulez ! "name" : "BonusGui", Ici, mettez le nom de ce que vous ajoutez, vous pouvez entrer ce que vous voulez mais il me paraît logique de mettre le nom de ce qu'on ajoute pour se repérer plus facilement (et que ce soit plus facile pour la suite du tuto). Suivant ce que vous ajoutez, modifiez cette ligne comme bon vous semble mais on en aura besoin pour la suite du tuto. Lorsque vous avez ajouté et modifié comme vous le souhaitez, on va tester si l'icône s'affiche bien. Repackez puis connectez-vous, si vous avez gardé les mêmes coordonnées que dans le tuto, vous aurez un nouvel icône ayant le skin de celui de l'inventaire en bas à droite de votre écran. Lorsque vous cliquez dessus rien ne se passe ? c'est normal, ça se passe dans la suite du tuto ! On passe maintenant au plus "compliqué". Dépackez root et ouvrez le fichier "uitaskbar.py" (attention, ce n'est pas celui qui se trouve dans locale_fr !) Cherchez maintenant la ligne: toggleButtonDict[TaskBar.BUTTON_CHARACTER]=self.GetChild("CharacterButton") Puis collez en dessous ceci: toggleButtonDict[TaskBar.BUTTON_BONUSGUI]=self.GetChild("BonusGui") self.GetChild("BonusGui") Dans ces crochets, veillez à écrire le "name" précédemment ajouté dans le fichier uitaskbar.py du locale_fr. Dans notre cas c'est donc "BonusGui" toggleButtonDict[TaskBar.BUTTON_BONUSGUI] Cette partie est importante ! vous pouvez écrire ce que vous souhaitez, ce sera le nom de la fonction qu'on utilisera plus tard, il faut que ce qu'il y a après "TaskBar." soit écrit EN MAJUSCULE comme dans l'exemple ! Cherchez maintenant: BUTTON_CHAT = 4 On va donner un numéro à cette fonction, ajoutez donc en dessus: BUTTON_BONUSGUI = 5 "BUTTON_BONUSGUI" est le nom de la fonction précédemment ajoutée, celle qu'on a dû écrire en majuscule, veillez à écrire le même nom ! Vous pouvez bien évidemment écrire ce que vous voulez, mais il faut que ce soit le même nom que la fonction qu'on a écrit ici: toggleButtonDict[TaskBar.BUTTON_BONUSGUI]=self.GetChild("BonusGui") Dans root, ouvrez le fichier "interfacemodule.py" puis cherchez: self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_CHAT, ui.__mem_func__(self.ToggleChat)) Et ajoutez en dessous: self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_BONUSGUI, ui.__mem_func__(self.BonusGui)) TaskBar.BUTTON_BONUSGUI À cette ligne vous devez écrire le nom de la fonction (donc "BUTTON_BONUSGUI" si on suit ce tuto à la lettre) (self.BonusGui) Ici c'est "name" se trouvant dans uitaskbar.py dans locale_fr. Veillez à ce qu'il y ai écrit exactement la même chose que dans "name". Maintenant il vous suffit d'ajouter le code que vous souhaitez exécuter lorsqu'on clic sur ce bouton. Je vais donc utiliser le code pour la Bonus Gui. Mettez où vous le souhaitez, pour ma part je l'ai mis au dessus de " def __MakeParty(self): Pour les personnes implantant la bonus gui, ajoutez ceci: def BonusGui(self): import uiBonusPage global BPisLoaded try: if BPisLoaded != 1: exec 'uiBonusPage.BonusBoardDialog().Show()' else: pass except ImportError: import dbg,app dbg.Trace('uiBonusPage.py Importing error') app.Abort() Pour les autres ajoutez VOTRE code. Vous l'aurez sans doute compris, après "def" vous devez écrire le nom inscrit dans "name" dans uitaskbar.py du locale_fr. Pour les personnes implantant quelque chose d'autre que la BonusGui, ce tuto est fini, vous pouvez repack root et tester votre icône ! pour ceux qui implantent la bonus gui du topic de Cube vous avez encore 2-3 choses à faire ! Toujours dans interfacemodule.py, cherchez: IsQBHide = 0 Puis ajoutez en dessous: BPisLoaded = 0 Toujours pour ceux implantant la Bonus Gui, on reprend simplement le topic de Cube, allez dans ui.py puis cherchez ceci: def SetOverVisual(self, filename): Ajoutez ensuite en dessous: ##Bonus def GetText(self): if not self.ButtonText: return# "" return self.ButtonText.GetText() def SetDownVisual(self, filename): wndMgr.SetDownVisual(self.hWnd, filename) N'oubliez pas que le python n'aime pas les espaces ! remplacez donc les espaces par des tabulations et mettez les tabulations aux bons endroits. Ce tuto est maintenant terminé, vous pouvez repack root ! si vous avez des questions n'hésitez pas à les poser dans la section "Aide / Questions / Support" ! Bonne soirée/journée à toutes et à tous !
  12. 1 point
    Plop, Je vous partage l'item shop in game de shang dans sa dernière version v1.3.1 fonctionne parfaitement avec quelques petites retouches sur les files FE 2016 Dl : ICI FE Pour les problèmes et les bugs c'est dans l'A/Q/S Source : Shang
  13. 1 point
    Bonjour, Aujourd'hui je vous propose les files 2016 de la Team-FE, aussi, repris par Saw, que j'ai modifié de mon côté. Changelog V3.0 (Team-FE) : -Système d'étole (Avec les 4 types d'étoles) -Système de costume d'armes -Système de costume de monture -Système de liaison d'âme -Système des 7è & 8è compétences -Système du pet officiel (Meley, petit singe, Bébé némère, Bébé razador, petite araignée) -Pierres anti-magie disponibles jusque +4 -Interface de création et de sélection de personnages officielle -4 inventaires disponibles -Ajout de nombreux mobs et items (Utilisation des item_proto et mob_proto officiels avec quelques modifications) -Level 255 débloqué mais fixé à 115 dans les CONFIG -Système des targets de couleur -Ajout de nombreux costumes et coiffures -Possibilité d'acheter des items à 0 yangs -Ajout de l'effet officiel quand on drop un item. -Ajout des armures 115. -Certaines interfaces ont été traduites. -FIX du lame enchanté -Mise en place de sécurité afin d'éviter certaines injections SQL -Les games et DB sont optimisés et ont la possibilité d'être stripper pour obtenir des poids de 5.000 Ko et 7.180Ko Liste des modifications apportées sur les files (Saw) : Serveur : drop des yang's sur les moobs réglé Réglage des fichiers CONFIG Amélioration du start.sh Ajout des cshybridcrypt dans packages Correction des data find count etc.... (0 syserr à l'ouverture) Débug de la give_basic_weapon + rangement du locale_list dans l'ordre A-Z Installation MySQL_query Client : Suppression de fichiers inutiles Optimisation des lib's (beaucoup moins lourdes) On obtient un client de 1go5 au lieu de 2go6 Débug des effets d'étoles Possibilité d'appuyer sur "ENTRER" pour choisir son personnage Fix de la texture du Theowahdan Ajout de la texture du Azräel qui était invisible Ajout de la liste des GM dans la liste d'amis Fix de la texture du Seon-Pyeong Réorganisation des Inventaires Débug effets/sons des 6èmes skill's Source serveur : achats d'item à 0 yang les monstres ne contenant pas de race le sysser DB de la monarch election l'erreur de la table des pet's lors de l'ouverture du serveur la suppression des personnages. Réglage de quelques warning de compilations. (Makefile dans l'ordre A-Z) Réglage du chat global et activations sur tous les channels. Réglage du shutdown: tics did not updated (checkpoint). Fix injection sql Fix ban depuis le messenger Fix ouverture db (merci à @Darknessmt2) Fix création de guilde/injection guilde Fix d'accumulation de bonus Fix core dungeon Activation fonction "pc.change_name" fix motion pet (sysser) fix header 100 (syserr) activation 6/7 fix accumulation des bonus des pets via l'échange. Fix du Bug Aura. Fix event kill qui est déclenché deux fois (merci à @A n t 0 k) Fix d'un problème qui empêcher de changer d'item lorsque l'inventaire est plains Fix du BeltInventory Fix bug PV négative lors d'un tp/connexion Source client : Amélioration de la structure des fichiers (plus besoin de spécifié les includes/libs dans les paramètres/beaucoup plus compréhensible) Accélération du défilement des quêtes (0 secondes) Modification des "[Niv. %d" en "Lv %d" Suppression italique sur MP avec un staffien. Passage en Python 2.7 Et maintenant, ce que j'apporte de mon côté aux files : Files : Armures / Armes Kyanites et Zodiaque Biologiste universelle Multi-sélection de shop (à remplir) Bonus 6 et 7 dans l'item-proto Client : Correctif du temps restant dans les magasins Effet Berserk Prix à 0 yangs = Gratuit 999.999.999 yangs échangeables. Lisibilité du nombre de yang en échange (Séparation par ".") Ne plus avoir à consulter 2 fois le même magasin (Blanc = non ouvert / Vert = Ouvert) Détruire un Item (Inventaire) Armures / Armes Kyanites et Zodiaque Afficher le niveau des équipements dans l'inventaire (+0 à +9) Mode graphique HD Source client : Informations sur les entités Anti MobPuller // Waithack Changer la couleur des drops selon le propriétaire (rouge quand l'item ne nous revient pas) Remettre le niveau en temps réel. Détruire un Item (Inventaire) Afficher le niveau des équipements dans l'inventaire (+0 à +9) Mode graphique HD Stop collision Source serveur : Chance de lier les pierres sur les armes ou armures de 30% Chance d'insérer un diamant de 50% bonus 6-7 sur les costumes désactiver Enlevez les potions à chaque up level Cape de bravoure (100% de réussite) Les compétences passent à M1 directement dès 17 points Informations sur les entités Empêcher le buff entre joueur/staffien Remettre le niveau en temps réel Détruire un Item (Inventaire) Protection contre le kick et le Sync Hack Log MP surveillance (MySQL) Log d'échange surveillance (MYSQL) Drop de groupe en instance Bloquer n'importe quel objet, sur n'importe quelle Map sans reboot ! Anti Wall Hack Montrer un item dans le chat sans loupe magique Crash lorsqu'un objet est acheté en même temps en magasin J'espère que ce sera utile pour certains, je vous mets de suite les liens de téléchargement. Quelques images Client : Cliquez ici pour télécharger Files : Cliquez ici pour télécharger MySQL : Cliquez ici pour télécharger Source serveur : Cliquez ici pour télécharger Source client : Cliquez ici pour télécharger VDI (Utilisateur : root / Mot de passe : admin) : Cliquez ici pour télécharger Mise à jour le 04.08.2018 à 13h Cordialement, Saejin --- Download
  14. 1 point
    Niveau requis : Débutant Temps estimé : 20 minutes Bonjour à tous, Ce tutoriel va vous apprendre comment implanter un mob dans Metin2. Il ne vous expliquera seulement comment implanter un mob et non comment le configurer. Pré-requis: Avoir un mob à implanter. Voici les différents fichiers : Un fichier .gr2 qui correspond au modèle de votre mob. Vous pouvez visualiser le .gr2 avec Granny Viewer. La texture de votre .gr2, sous la forme d'un .tga ou .dds Tout un tas de fichiers .gr2 associés à des fichiers .msa de même noms correspondant aux animations. Un fichier .msm de même nom que le dossier mob Un fichier motlist.txt I. Côté client II. Côté serveur Pour continuer : Vous trouverez de nombreux partages et de tutoriels sur Funky-Emu dans la section Metin2. Cette 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 !
  15. 1 point
    Niveau requis : Débutant Temps estimé : 20 minutes Bonjour à tous ! Ce tutoriel a pour but de vous expliquer comment implanter n'importe quel item dans Metin2 tel que des armures, des armes ou tout simplement des objets. Pré-requis: Avoir un serveur Metin2 avec un accès WinSCP à votre serveur. Un outil pour depack votre client tel que EterNexus Un fichier TGA pour l'icône de l'item. Vous pouvez aussi créer une icône avec ce tutoriel. Vous pouvez aussi sans soucis, en utiliser une existante. Pour les objets 3D (armures, armes, coiffures, costumes, etc ..), il vous faudra en plus : Un fichier .gr2 qui correspond au modèle 3D de votre objet. L'outil Granny Viewer vous permet de visualiser ce type de modèle. Un ou plusieurs fichiers .dds / .tga qui correspondent aux textures de l'objet. I. Côté Client II. Côté Serveur Pour continuer : Vous trouverez de nombreux partages et tutoriels sur Funky-Emu dans la section Metin2. Cette 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 !
  16. 1 point
    Niveau requis : Débutant Temps estimé : 15 minutes Bonjour à tous, Ce tutoriel a pour but de vous permettre de remplir manuellement les fichiers regen de vos maps ou de les comprendre afin de les peaufiner. C'est-à-dire choisir ou corriger l'emplacement de vos monstres, metins, boss et pnj ainsi que leur temps de repop. Ce tutoriel présente le logiciel Regen Maker, qui permet de remplir ces fichiers beaucoup plus rapidement mais avec moins de précision. Information. Le tutoriel présente les 4 fichiers (regen/boss/stone/pnj) en même temps car ils fonctionnent exactement de la même façon. Ces fichiers se trouvent dans : /usr/metin2/share/locale/france/map/nom_de_la_map/ Pré-requis: Avoir un serveur Metin2 avec un accès WinSCP à votre serveur Une map sur laquelle vous allez appliquer ce tutoriel. I. Gérer les spawns Pour continuer : Vous trouverez de nombreux partages et tutoriels sur Funky-Emu dans la section Metin2. Cette 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 !
  17. 1 point
    Niveau requis : Débutant Temps estimé : Entre 15 et 20 minutes Salut à tous ! Ce tutoriel va vous expliquer comment créer un magasin via un PNJ. Il existe deux types de magasins : Le simple : Quand on clique sur un pnj, une fenêtre de magasin s'ouvre. La première partie vous suffira pour créer un magasin simple Le multi : Qui consiste a attribuer plusieurs magasins à un PNJ via un menu. Pré-requis: Posséder un serveur Metin2 avec un accès à la base de données. J'utiliserai Navicat dans ce tutoriel Avoir un PNJ de dispo. Vous pouvez implanter un PNJ en utilisant ce tutoriel et gérer le spawn de celui-ci avec ce tutoriel. Pour assigner plusieurs magasins à un PNJ, il vous faut savoir implanter une quête I. Créer / Modifier des magasins II. Attribuer plusieurs shops à un PNJ Pour continuer : Vous trouverez de nombreux partages et tutoriels sur Funky-Emu dans la section Metin2. Cette 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 !
  18. 1 point
    Niveau requis : Débutant Temps estimé : 2 minutes Salut à toi ! Dans ce tutoriel, je vais vous expliquer comment modifier le level maximum sur votre serveur Metin2. Ici, nous abaisserons le level maximum à 80. Pré-requis: Un serveur Metin2 avec un accès SFTP (WinSCP ou FileZilla) I. Modifier le level maximum Pour continuer : Une catégorie support est disponible. Si vous avez un problème ou une question, n'hésitez pas à poster une demande !
  19. 1 point
    Bonjour, Je vous partage une ancienne et texture que j'ai pu faire, même si l'armure est déjà partagée elle est quand même présente dans le fichier de téléchargement avec sa texture originale ! Téléchargement : ICI M38 Source : Mei Download
  20. 1 point
    Bonjour, Je vous présente un petit hack tout simple, que vous pouvez télécharger : ici Comme le virustotal est obligatoire le voilà : ici Pour l'installer, je vous invite à le déplacer directement dans votre client. Rien de plus simple non ? Ce cheat contient : -LevelBot -ChatSpammer -Wissperspammer -SwitchBot -InventoryManager -Map Loader -Item creator -Item Board L'item creator ne marche surement pas comme vous le pensez, il ne permet pas de vous givez des items mais de créer des items pour pouvoir les loupes et faire croire que vous êtes riche à tout le monde ! Ce cheat ne marche que sur les anciens clients, mais il peut peu etre servire à plusieurs personnes. Cordialement. --- Download
  21. 1 point
    Bonjour, Voici un nouveau monstre, un Dragon Squelette ! Téléchargement : ICI M3 Cordialement, Download
  22. 1 point
    Un ptit peu de style en plus, c'est pas mal non ? C'est pour ça que je vous propose de changer l'image du loader ! (vous savez, l'image qu'on a au chargement du client ...) I. Choses nécessaires • Flash Decompiler Trillix • Une image aux dimensions 1024x768, celle que vous mettrez à la place de l'originale... II. Let's go ! Yiiiihaaaa cowboy ! Déjà, allez dans le dossier Dofus. Faites clic droit sur loader.swf, et choisissez "Open with Flash Decompiler". Si à cause de euh ... à cause de quelque chose il n'y aurait pas ce choix, démarrez le logiciel et ouvrez loader.swf depuis celui-ci. Une fois le fichier ouvert, il apparaît dans votre liste des tâches à droite. Il faut donc déjà le cocher (vous verrez, ce sera hyper utile pour la sauvegarde ) et ensuite développer avec les [+] jusqu'à Images, pour sélectionner Image 74 : (je viens de me rendre compte que cette partie était pas très utile, mais en tout cas, faut cocher !) L'image est sélectionnée, il faut l'éditer ! Donc en haut cliquez sur Editer puis Images... C'est fait ? Alors vous avez le cadre avec l'image qui apparaît à gauche, non ? Comment ça non ? Ah oui y'a deux images, mais bon, on va pas toucher à l'autre ! Cliquez donc sur Image 74 à gauche et après choisissez la votre. Sauvegardez (oubliez surtout pas de tout cocher !!! et admirez ) Si l'image ne s'affiche pas, ton cache tu videras. III. Pas fini ! Mais presque Si ce tutoriel vous a plu (et vous a servi), un remerciement ne fait pas de mal Soit par message, soit en cliquant simplement dessus
  23. 1 point
    Voici mon tutoriel sur la protection client ! J'ajouterai des nouveautés quand j'aurais le temps Pour commencer, le client possède plusieurs clefs de base que vous devez connaître pour pouvoir le décompresser; - LZO1/2 - XTEA1/2 ( Magic ) Il existe une clef PONG à modifier dans le GAME et le Launcher pour que la connexion s'établisse. Il existe aussi une autre manière beaucoup moins connu pour que la connexion client // serveur se fasse. J'appellerai cette méthode la clef HxPong [ Partie HxPONG ] Suivis d'autres clefs pour l'itemproto, mobproto, founcc code ... On va donc commencer par la première ! LZO1/2 Vous avez besoin du petit logiciel HxD pour pouvoir chercher votre clef LZO1/2 dans votre lanceur ainsi que dans votre depacker. Une fois installé, vous pourrez faire un glisser-déposer du depacker sur le logiciel HxD. ( Le depacker n'est pas celui de moustikk, mais celui du logiciel Drag 'n Decrypt, le lien : [Hidden Content] ) [Hidden Content]] Voilà le m2.exe est correctement chargé dans HxD, on va maintenant pouvoir chercher la clef LZO1/2 ! Pour cela il vous faudra faire : CTRL + G ou Cliquer sur l'onglet "Recherche > Atteindre" La position à trouver est : 00083F40 Comme vous pouvez le voir sur le screen, la position trouvée est en bas. En texte ça donne : MCOZEPKD¹ž°.oi.. En hexa ça donne : 4D434F5A45504B44B99EB0026F698105 Voilà maintenant que vous avez trouvé la ligne importante, vous pouvez la placer au milieu du logiciel. La clef LZO commence à la fin de la clef XTEA, donc après : MCOZEPKD La clef lzo va s'étendre un peu plus loin dans les caractères. En texte ça donne : ¹ž°.oi..c˜›(y..."¸´.d²n.®ê..¦öû. En hexa ça donne : B99EB0026F69810563989B2879181A0022B8B40464B26E1FAEEA1800A6F6FB1C Et en image : Voilà donc maintenant vous avez votre LZO devant vous ! Comment la modifier ? Tout simplement en cliquant sur la zone de texte et de remplacer comme bon vous semble votre clef lzo. N'allez pas au dessus du nombre de caractère de la clef lzo qui est de 32. Sinon à partir de la 33ème lettre, vous arrivez dans la clef de l'itemproto ! Comment le mettre en place sur mon client ? Un autre tutoriel va vous expliquer comment changer l'intégralité des clefs de vos packs et changer les clefs de votre launcher pour qu'il puisse lire les packs correctement. XTEA1/2 La clef Xtea est tout simplement : MCOZ et EPKD Quand on parle de Xtea1, c'est MCOZ Et Xtea2 c'est EPKD Pour trouver ça dans le depacker, il vous suffit de faire : CTRL + F ou Cliquer sur l'onglet "Recherche > Rechercher..." Et de choisir pour l'xtea1 : MCOZ Et de choisir pour l'xtea2 : EPKD Dans le depacker il y aura plusieurs fois marqué MCOZ, vous le remplacerez par un autre code à 4 lettres ou 4 chiffres ( ou les deux ) de votre choix, il faut que ça soit le même pour tous. 0000F4E0 > MCOZ ( Vous pouvez le modifier par ce que vous voulez, par exemple : R5QK ) 0000F7F0 > MCOZ ( Pareil, il faudra mettre : R5QK ) 0000F8F9 > MCOZ ( Pareil, il faudra mettre : R5QK ) 00083F40 > MCOZ ( Pareil, il faudra mettre : R5QK ) 0000F98A > EPKD ( Vous pouvez le modifier par ce que vous voulez, par exemple : 9.Q! ) 00083CC2 > EPKD ( Pareil, il faudra mettre : 9.Q! ) 00083F44 > EPKD ( Pareil, il faudra mettre : 9.Q! ) Voilà votre Xtea1/2 est modifié et votre clef LZO aussi ! Dans une ligne particulière que vous devrez trouver, un MCOZ est désigné comme "Header eix" C'est a dire, comme une Xtea3.. Modifier le launcher avec les nouvelles clefs Pour cette partie du tutoriel je vais utiliser un launcher 2012. Pour installer la nouvelle clef LZO1/2 sur le launcher Une fois ouvert dans HxD, il vous faudra se rendre à la ligne 003B2C60 Vous aurez à cette ligne : [email protected]@..¹ž°. Donc on peut voir le début de la clef LZO1/2 qui n'a pas encore été modifié ! On prolonge un peu les caractères jusqu'à sélectionner toute la clef LZO1/2, c'est-à-dire : En texte : ¹ž°.oi..c˜›(y..."¸´.d²n.®ê..¦öû. En hexa : B99EB0026F69810563989B2879181A0022B8B40464B26E1FAEEA1800A6F6FB1C Vous remplacez la clef lzo1/2 par celle que vous aviez auparavant mise sur votre depacker Pour installer la nouvelle clef Xtea1/2 sur le launcher Rendez-vous aux lignes : EPKD > 001DF8A0 EPKD > 0034B850 MCOZ > 003B0700 Et donc vous remplacez le EPKD par celle que vous aviez mise avant et de même pour MCOZ. Le depacker et le launcher sont prêts ! Inutile de vous dire qu'il faudra depacker tous les fichiers ( *.epk, *.eix ) de votre client pour ensuite les repacker avec le m2.exe modifié ! L'itemproto et le mobproto La clef officiel de l'itemproto est en hexa : A1A40200AA155404E78B5A18ABD6AA01 Celle du mob proto est : 467449000B4A0000B76E08009D186800 Il vous suffit de faire une recherche en hexadécimal sur HxD dans votre Launcher et votre depacker pour pouvoir ensuite les modifier ! La clef pong La clef pong relie votre game et votre launcher pour faire la liaison. Il faut que celle du launcher soit identique à celle du game. Pour le launcher 2012, la clef pong se situe en : 340A38 Et se termine en : 340A48 Si vous avez oublié, il faut utiliser le CTRL + G ! Pour le game ( 2089 ), la clef pong se situe en : 00301470 Partie HxPONG La clef HxPong est en fait plusieurs caractères qui constitue la connexion Launcher > Game Pour cela il faudra récupérer votre clef HxPong dans votre launcher. J'espère que sur les autres versions de launcher l'offset de change pas de trop, vous me direz par MP ou commentaire. -- Recherchez votre HxPong en faisant sur HxD un CTRL+G Ensuite selon votre launcher vous choisissez l'offset le plus approprié. Launcher[4 041Ko] L'offset à rechercher est : 14260 Launcher[X Ko ] L'offset à rechercher est : [Envoyez moi un launcher lambda autre que celui du dessus pour que je puisse écrire l'offset à rechercher. Une fois que vous êtes à la bonne ligne, vous allez voir un truc de ce style : 04 3B C6 C6 44 24 10 [color=#FF0000]6F[/color] 72 08 8B 86 9C 00 00 00 Allons au plus utile et changeons notre HxPong. Dans la ligne si dessus on va uniquement changer le : 6F en ce que vous voulez ( c'est en fait un caractère de la clef HxPong ) Cette clef est plus longue que 1 seul caractère mais nul besoin de modifier plus que ça la clef HxPong pour bloquer la connexion. De plus, des caractères de la HxPong peuvent faire crash le client si le game n'a pas la même. En bref, le caractère "6F" est très bien et fonctionne comme la clef PONG. Elle fait en sorte que la connexion reste bloqué sur : Vous allez être connecté... Maintenant que vous avez modifié votre Clef HxPong sur votre launcher, on va passer au GAME. Recherchez l'offset dans votre game. GAME_2089 [45.9Mb] L'offset à rechercher est : A6F0 Votre ligne ressemblera à ça : 44 24 08 54 84 33 08 C7 44 24 04 [color=#FF0000]6F[/color] 00 00 00 C7 Donc voilà maintenant il faut changer le 6F en ce que vous avez mis dans votre launcher précédemment puis re-upload sur votre serveur! La suite du tutoriel sera surement sur les méthodes pour se protéger contre les injections. --- Download
  24. 1 point
    Bonjour, Avant de commencer ce tutoriel, je voudrai faire une petite introduction : Certaines personnes (dont moi) ont eu du mal à passer de Virtual PC (pour les anciens) à Virtual Box (je ne sais pas si vous êtes d'accord avec moi). Donc aujourd'hui, j'ai décidé de faire un petit tutoriel sur ce logiciel qui est selon moi un peu plus compliqué a utiliser que Virtual PC et de plus, je fais ce tutoriel car il n'y en a aucun qui se trouve sur Funky et aussi pour pouvoir participer un peu à ce super site. Sachez avant tout que ce tutoriel est destiné pour "Créer son serveur Metin2" donc si c'est pour autre chose, ceci servira à rien de continuer à suivre ce tutoriel. Tous d'abord, pour pouvoir suivre ce tutoriel, il faut logiquement VirtualBox : Voici un lien : Télécharger VirtualBox Une fois que vous l'avez téléchargé et bien sûr lancé, vous allez tomber sur ça : Ensuite vous cliquez sur "New" ou "Nouvelle" (si vous l'avez en français) : Puis vous faites Next ou Suivant : Une fois fait, on vous demande de régler la mémoire vive de votre serveur, vous mettez minimum "1000 Mb" (vous pouvez mettre plus si vous le souhaitez, mais n'allez pas jusqu'au rouge). Je ne mets pas d'image pour ça. Puis Suivant ou Next (vous avez sûrement compris, super ! Au moins, je le dirai plus ). Et là vous allez tomber sur une partie, et vous vous dites :"Qu'est-ce que c'est ce truc ?" Pas de stress (y'a point S, ok je sors) ! Voici une image : Votre serveur est créé, mais ce n'est pas finit car il faut le configurer ! Il suffit alors de cliquer sur "Setting" ou "Paramètre" et vous tombez sur ça : Non seulement votre serveur est créé mais il est aussi configuré ! Une fois ceci fait, faites Cancel ou Retour, puis vous faîtes Start ou Début. Pour éviter de copier-coller le tutoriel de Calypso, je vous invite pour la suite d'aller : ICI. Et de passer directement à l'étape : "Caché : Configuration de FreeBSD: Local, No-IP et Hamachi". Merci à vous. Cordialement,
  25. 1 point
    Coucou, FE possède son propre hébergeur d'images, de plus les tiennes sont des miniatures ignobles parce que ton SHacks les réduit! Utilise ça ( [Hidden Content] ) pour les uploader! Merki du tutoriel, j'arrivais jamais à m'en servir de VB!
This leaderboard is set to Paris/GMT+02:00