Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 09/17/18 dans toutes les zones

  1. Centre de Téléchargement Télécharger ( Interne ) 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 ^^
    2 points
  2. Centre de Téléchargement Télécharger ( Interne ) Bonjour, Bonsoir Il est vrai que le forum manque de patcher de l'officiel. Donc je vais vous faire un tutoriel qui vous explique comment le mettre en marche et comment faire les mises à jour. Pour commencer nous allons télécharger le patcher: Patcher Officiel I- Le début On va commencer par décompresser l'archive (avec WinRAR), vous aurez donc un dossier "Metin2_Patcher_2013" avec à l'intérieur différents sous-dossiers "AutoPatcherClient", "AutoPatcherTool", "AutoPatcherWeb", vous aurez aussi "template.psd" qui vous permettra de le modifier le design de votre patcher. II- On commence Alors on va ouvrir le sous dossier "AutoPatcherClient", puis dedans on va chercher le fichier "TorrentPatch.url.xml" que l'on ouvre. On recherche ceci: remoteConfigPath="[Hidden Content]"" "glirariormetin.power-heberg.com" -> mettez le vôtre on parle ici de la redirection web c'est-à-dire que si vous allez mettre le dossier sur votre FTP, le dossier s'appellera "patcher" et pour accéder à ce dossier il faudra faire "[Hidden Content] Toujours dans le même sous dossier on cherche ""TorrentPatch.locale.xml"" que l'on ouvre aussi. On recherche ceci: Ligne 22 [Hidden Content] [Hidden Content] Ligne 46 GlirariorMt2 - Annonce Ligne 48 GlirariorMt2 TORRENT "glirariormetin.power-heberg.com"-> pareil que précédemment vous modifiez pas votre nom de domaine. "GlirariorMt2" -> le nom de votre serveur à la place Une fois tout ça est fait, votre design patcher modifié que vous avez mis en .png est introduit dans le dossier "AutoPatcherClient", vous aurez un fichier "copy.bat" vous cliquez dessus, vous laissez faire, une fois fini votre patcher est créé, vous avez juste à prendre les fichiers "metin2.bin" et "metin2.exe" et les introduire dans votre client. III- Le final, la partie web Nous avons fait la partie je dirais visible du patcher, la partie client en clair. Donc maintenant on va dans le sous dossier "AutoPatcheWeb", ensuite dans "patcher" et on va ouvrir "metin2torrent.config.xml". On recherche ceci: Ligne 1 [Hidden Content] Ligne 2 [Hidden Content] "91.121.138.12" -> pareil que pour la partie précédente on remplace par son nom de domaine Une fois que cela est fait, vous mettez le dossier "patcher" sous le même nom, avec tout ce qu'il contient, sur votre hébergement web. Pour que tout fonctionne, vous allez maintenant lancer le "metin2.exe" que vous avez mis dans votre client un peu plus tôt, il va télécharger un petit fichier "artpclnt.dll" et tout sera entièrement fonctionnel. IV- Faire une mise à jour ? [Hidden Content] Pour finir une fois que vous avez tous les .lz, vous allez sur votre hébergement web, dans patcher/0.0.0.1 et vous glissez tout dedans. Voilà comment faire une mise à jour. Vous pouvez simplement sélectionner que les fichiers que vous voulez modifier pas tout refaire à chaque fois. V- Un petit plus Pour ceux qui veulent modifier "Bienvenue dans Metin2" et le reste il suffit d'éditer le fichier "index.html" qui se trouve à la racine du dossier patcher coté web. Pour ceux voulant changer l'image de fond du patcher, vous les avez toutes dans le dossier "img" vous pouvez y mettre les vôtres. Pour changer l'image il suffit d'aller dans ce même "index.html" et de chercher ça : Il vous suffit de changer le bg_1.png par celui que vous voulez et qui se trouve dans "img" L'image "bg_2_update.jpg" il faut la redimensionner si vous voulez vous en servir elle est plus petite que les autres donc mal cadrée dans le patcher. Voilà j'espère que vous en ferez bon usage , ce patcher se trouve sur plein de forum et site mais celui-ci est entièrement débug vous n'aurez pas d'erreur "javascripts" ou "image 3 not found". Il est 100% fonctionnel et débug. Source: Moi Cordialement,
    2 points
  3. Centre de Téléchargement Télécharger ( Interne ) Salut à tous, Aujourd'hui je viens vous partager mon item_scale que j'ai retravaillé de A à Z niveau positions et tailles. Les grosses étoles qui n'étaient pas adaptées aux personnages ne me convenait pas, c'est pour cette raison que j'ai décidé de les refaire une à une. Rendu : [Hidden Content] [Hidden Content] [Hidden Content] [Hidden Content] Cordialement
    2 points
  4. 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 !
    1 point
  5. Centre de Téléchargement Télécharger ( Interne ) Bonjour, voici un système qui vous permettra d'équiper des stuffs pré-enregistrés dans une fenêtre ! Pré-requis: Cette archive : Téléchargement Votre client Eternexus I. Tutoriel II. Placer les fichiers Succès ! Vous pouvez désormais profiter pleinement de ce système, Enjoy ! A savoir : Si vous ne savez pas comment utiliser Eternexus, je vous invite à bien lire ce tutoriel : Depack & Repack avec Eternexus Si vous avez un problème, n'hésitez pas à rédiger un sujet dans la section A/Q/S
    1 point
  6. Niveau requis : Intermédiaire Temps estimé : 30 minutes Bonjour à tous, Ce tutoriel va vous expliquer comment installer un environnement FreeBSD complet pour Metin2 une machine complètement vierge en installant FreeBSD par vous même. Ce tutoriel fonctionne aussi pour installer un environnement sur un serveur dédié. Pré-requis: Virtual Box qui vous permet de virtualiser le système d'exploitation FreeBSD FreeBSD. Téléchargez l'ISO de la version souhaité. Dans ce tutoriel, j'utiliserai la version 9.3 Les sources de Metin2 Les libs, nécessaires au bon fonctionnement de votre environnement Avoir Internet I. Configurer sa Virtual Machine (VM) II. Configuration de MySQL III. Installer des files IV. Mettre en place les sources de Metin2 Pour continuer : Vous trouverez de nombreux partages et tutoriels sur Funky-Emu dans la section Metin2. Pour configurer votre client pour connecter à votre serveur, suivez ce tutoriel Vous pouvez apprendre à sauvegarder vos fichiers durablement 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 !
    1 point
  7. Centre de Téléchargement Télécharger ( Interne ) Salut FE, Je vous partage l'instance glaciale (Nemeres) , modifiée par moi même et fonctionnelle. ---------------------- -- Corpse II : Nemeres ---------------------- quest snowdungeon begin state start begin when 20397.chat."Tour de Nemeres" begin say_title("Statue Roi de gheata") say("Le mal ravage notre monde depuis des années et cela de différentes manières.") say("son pouvoir est plus fort de jour en jour.") say("Nos Royaumes commencent à tomber, mais qui pour arrêter ce cauchemar ?") say("De simple personne lambda, n'écoutant que leurs courages !") if pc.get_level() >= 90 then if party.is_party() or pc.is_gm() then if party.is_leader() or pc.is_gm() then say_reward("Êtes-vous prêt à affronter le mal et faire face à vos destins ?") if select("Oui, nous croyons en nos forces !","Non, nous sommes bien trop faibles.") == 1 then pc.remove_item(30256,1) d.join(240) end else say_reward("Vous devez être le Chef du groupe.") end else say_reward("Vous devrez faire partie d'un groupe.") end else say_reward("Vous devez etre level 100.") end end when 20397.chat."La place de Nemeres" with d.getf("actual_round") == 9 begin if party.is_leader() or pc.is_gm() then say_title("Statue Roi de gheata") say("L'aventure fut longue et périlleuse mais finalement") say("Je suis arrivé à la source de la rivière.") say("Nemeres est de l'autre côté, allez le vaincre !") say_reward("Êtes-vous prêt à y faire face ?") if select("Oui, nous sommes toujours confiants !","Non, nous ne croyons plus en nos forces.") == 1 then if d.getf("used_statue", 0) then d.setf("used_statue", 1) syschat("Dans les 10 prochaines secondes, vous serez téléporté avec votre groupe !") timer("nextlevel",10) end end end end when login with pc.get_map_index() >= 2400000 and pc.get_map_index() <= 2405000 begin d.notice("[Tour de Nemeres] La bataille a commencé.") d.notice("[Tour de Nemeres] Exterminez les ennemies ! bonne chance.") if party.is_party() then if party.is_leader() then snowdungeon.start() end else if pc.is_gm() then snowdungeon.start() end end end when 20398.take begin if d.getf("actual_round") == 5 then if item.get_vnum() == 30332 then pc.remove_item(item.get_vnum(),1) npc.purge() d.setf("box_opened", d.getf("box_opened")+1) if d.getf("box_opened") == 6 then d.notice("[Tour de Nemeres] Les joints ont été ouverts") d.notice("[Tour de Nemeres] Vous allez jusqu'au 6ème étage !") snowdungeon.purge() timer("nextlevel",10) else d.notice("[Tour de Nemeres] Courage, Il vous reste "..6-d.getf("box_opened").." sceaux à ouvrir !") end end end end when 30331.use begin if d.getf("actual_round") == 2 then if pc.get_job() == 3 or pc.get_job() == 7 then if number(1,8) == 5 then d.notice("[Tour de Nemeres] La chance vous sourit. La clé était parfaite !.") d.notice("[Tour de Nemeres] Bientôt vous serez redirigé vers le prochain étage.") snowdungeon.purge() timer("nextlevel",10) else syschat("[Tour de Nemeres] Suite à son impuissance la clé s'est brisée.") syschat("[Tour de Nemeres] Trouvez une autre clé et réessayez.") pc.remove_item(30331,1) end else syschat("La clé ne peut être utilisé seulement par un puissant chaman.") end end end when 30333.use begin if pc.get_job() == 3 or pc.get_job() == 7 or pc.get_job() == 1 or pc.get_job() == 5 then if d.getf("actual_round") == 8 then if number(1,8) == 5 then d.notice("[Tour de Nemeres] La chance vous sourit. La clé était parfaite !.") d.notice("[Tour de Nemeres] Bientôt vous serez redirigé vers le prochain étage.") snowdungeon.purge() timer("nextlevel",10) else d.notice("[Tour de Nemeres] Suite à son impuissance la clé s'est brisée.") d.notice("[Tour de Nemeres] Trouvez une autre clé et réessayez.") pc.remove_item(30333,1) end else syschat("La clé ne peut être utilisé seulement par un puissant chaman ou un ninja.") end end end when kill with pc.get_map_index() >= 2400000 and pc.get_map_index() <= 2405000 begin if d.getf("actual_round") == 6 and npc.get_race() == 6109 then d.notice("[Tour de Nemeres] Félicitations, vous avez détruit la source de ses pouvoirs") d.notice("[Tour de Nemeres] Dans quelques instants, vous monterez au 7ème étage.") timer("nextlevel",10) end if d.getf("actual_round") == 7 and npc.get_race() == 6151 then d.notice("[Tour de Nemeres] Félicitations, tuant Le fidèle Nemeres, vous serez amené au 8ème étage .") snowdungeon.purge() timer("nextlevel",10) end if d.getf("actual_round") == 9 and npc.get_race() == 20399 then d.notice("[Tour de Nemeres] Le dernier pilier de sa défense a été démoli ") d.notice("[Tour de Nemeres] Le Lion de glace est apparu.") snowdungeon.purge() d.spawn_mob(20397, 848, 669) end if d.getf("actual_round") == 10 and npc.get_race() == 6191 then d.notice("[Tour de Nemeres] Félicitations, vous avez tuer Nemeres, vous êtes les combattants de la destinée !") notice_all("Avec un dernier souffle de chef de file de l'espoir "..pc.get_name().."") notice_all("Suivi par ses guerriers fidèles ont réussi à battre le redoutable Nemeres.") d.setf("actual_round","0") ------------------ local time = get_time() d.setqf2("snowdungeon","daily_nemeres_last_kill", time) d.setqf2("snowdungeon","daily_nemeres", 1) ------------------ d.clear_regen() d.kill_all() d.spawn_mob(9012, 928, 338) timer("exit_snow", 60) d.notice("En 60 secondes, vous serez téléporté en dehors.") end if d.getf("actual_round") == 1 then d.setf("kill_count_sd1",d.getf("kill_count_sd1") +1) if d.getf("kill_count_sd1") == d.getf("sd_kill_to_next") then d.notice("[Tour de Nemeres] Vous avez terminé le premier étage .") d.notice("[Tour de Nemeres] Dans quelques instants, vous montez au 2ème étage.") snowdungeon.purge() timer("nextlevel",10) end elseif d.getf("actual_round") == 2 then if number(1,50) == 1 then game.drop_item_with_ownership(30331,1) end elseif d.getf("actual_round") == 3 then d.setf("kill_count_sd3",d.getf("kill_count_sd3") +1) if d.getf("kill_count_sd3") == d.getf("sd3_kill_to_next") then snowdungeon.purge() d.notice("[Tour de Nemeres] Vous avez terminé le 3ème étage .") d.notice("[Tour de Nemeres] Dans quelques instants, vous montez au 4ème étage.") timer("nextlevel",10) end elseif d.getf("actual_round") == 4 then d.setf("kill_count_sd4",d.getf("kill_count_sd4") +1) if d.getf("kill_count_sd4") == d.getf("sd4_kill_to_next") then snowdungeon.purge() d.notice("[Tour de Nemeres] La 4ème vague a été détruite.") d.notice("[Tour de Nemeres] Dans quelques instants, vous montez au 5ème étage.") timer("nextlevel",10) end elseif d.getf("actual_round") == 5 then if number(1,100) == 1 then game.drop_item_with_ownership(30332,1) end elseif d.getf("actual_round") == 6 then d.setf("kill_count_sd6",d.getf("kill_count_sd6") +1) if d.getf("kill_count_sd6") == d.getf("sd6_kill_to_next") then d.notice("[Tour de Nemeres] Ce qui se produit ? Il voit un ciel bleu !?") snowdungeon.purge() timer("level7metin",5) end elseif d.getf("actual_round") == 8 then if number(1,50) == 1 then game.drop_item_with_ownership(30333,1) end end end when level7metin.timer begin if d.getf("actual_round") == 6 then d.spawn_mob(6109, 743, 495) end end when nextlevel.timer begin if d.getf("actual_round") == 1 then -- Niveau 2 d.jump_all(5120+421,1536+264) d.setf("actual_round",2) d.set_regen_file("data/dungeon/snowdungeon/nivel_2.txt") d.notice("[Tour de Nemeres] Vous êtes dans le 2ème étage ") d.notice("[Tour de Nemeres] Cherchez la bonne clé pour avancer au niveau suivant.") elseif d.getf("actual_round") == 2 then -- Niveau 3 d.jump_all(5120+761,1536+268) d.setf("actual_round",3) d.setf("kill_count_sd3","0") d.setf("sd3_kill_to_next","300") d.set_regen_file("data/dungeon/snowdungeon/nivel_3.txt") d.notice("[Tour de Nemeres] Vous êtes dans le 3ème étage") d.notice("[Tour de Nemeres] Exterminez l'armée de Nemeres jusqu'au dernier pour avancer.") elseif d.getf("actual_round") == 3 then -- NIVEL 4 d.jump_all(5120+174,1536+526) d.setf("actual_round",4) d.setf("kill_count_sd4","0") d.setf("sd4_kill_to_next","300") d.set_regen_file("data/dungeon/snowdungeon/nivel_4.txt") d.notice("[Tour de Nemeres] Vouz êtes montés au 4ème étage.") d.notice("[Tour de Nemeres] Détruisez-les tous pour avancer.") elseif d.getf("actual_round") == 4 then -- Niveau 5 d.jump_all(5120+421,1536+533) d.setf("actual_round",5) d.set_regen_file("data/dungeon/snowdungeon/nivel_5.txt") local sequence = {{1,2,3,4,5},{4,3,2,1,5},{4,5,3,1,2},{5,3,4,2,1},{5,1,3,4,2}} local n = number(1,5) local coords = {{391,490},{451,490},{463,455},{380,456},{420,422}} for i = 1, 5 do d.spawn_mob(20398, coords[i][1],coords[i][2]) end d.setf("box_opened", 1) d.setf("sequence",n) d.notice("[Tour de Nemeres] Vous êtes dans le 5ème étage") elseif d.getf("actual_round") == 5 then -- Niveau 6 d.jump_all(5120+746,1536+536) d.setf("actual_round",6) d.setf("kill_count_sd6","0") d.setf("sd6_kill_to_next","200") d.set_regen_file("data/dungeon/snowdungeon/nivel_6.txt") d.notice("[Tour de Nemeres] Vous êtes dans le 6ème étage.") d.notice("[Tour de Nemeres] Ses troupes ont commencé à se désagréger.") elseif d.getf("actual_round") == 6 then -- Niveau 7 d.jump_all(5120+304,1536+719) d.setf("actual_round",7) d.regen_file("data/dungeon/snowdungeon/nivel_7.txt") d.spawn_mob(6109, 326, 657) elseif d.getf("actual_round") == 7 then -- Niveau 8 d.jump_all(5120+569,1536+642) d.setf("actual_round",8) d.set_regen_file("data/dungeon/snowdungeon/nivel_8.txt") d.notice("[Tour de Nemeres] Vous êtes dans le 8ème étage.") elseif d.getf("actual_round") == 8 then -- Niveau 9 d.notice("[Tour de Nemeres] Vous êtes dans le 9ème étage.") d.jump_all(5120+848,1536+689) d.set_regen_file("data/dungeon/snowdungeon/nivel_9.txt") d.setf("actual_round",9) d.spawn_mob(20399, 849, 659) elseif d.getf("actual_round") == 9 then -- NIVEL 10 BOSS ROOM d.setf("used_statue", 0) d.spawn_mob(6191, 927, 323) d.jump_all(5120+928,1536+390) d.setf("actual_round",10) d.set_regen_file("data/dungeon/snowdungeon/nivel_10.txt") end snowdungeon.NoticeTime() end function start() d.set_regen_file("data/dungeon/snowdungeon/nivel_1.txt") d.setf("actual_round",1) d.setf("time", get_time()+60*60*1) d.setf("sd_kill_to_next",100) d.setf("kill_count_sd1",0) server_timer("snowdungeontime",3600,pc.get_map_index()) --server_loop_timer("snowdungeontimenotice",300) snowdungeon.NoticeTime() end when snowdungeontimenotice.server_timer begin if pc.get_map_index()<= 2405000 then snowdungeon.NoticeTime() end end function GetPillarID() if pc.get_local_x() >= 391 - 5 and pc.get_local_x() <= 391 + 5 and pc.get_local_y() >= 490 - 5 and pc.get_local_y() <= 490 + 5 then return 1 elseif pc.get_local_x() >= 451 - 5 and pc.get_local_x() <= 451 + 5 and pc.get_local_y() >= 490 - 5 and pc.get_local_y() <= 490 + 5 then return 2 elseif pc.get_local_x() >= 463 - 5 and pc.get_local_x() <= 463 + 5 and pc.get_local_y() >= 455 - 5 and pc.get_local_y() <= 455 + 5 then return 3 elseif pc.get_local_x() >= 380 - 5 and pc.get_local_x() <= 380 + 5 and pc.get_local_y() >= 456 - 5 and pc.get_local_y() <= 456 + 5 then return 4 elseif pc.get_local_x() >= 420 - 5 and pc.get_local_x() <= 420 + 5 and pc.get_local_y() >= 422 - 5 and pc.get_local_y() <= 422 + 5 then return 5 else return false end end when snowdungeontime.server_timer begin if d.select(get_server_timer_arg()) then d.notice("............!") d.exit_all() end end when exit_snow.timer begin d.exit_all() end function NoticeTime() local secondsLeft = (d.getf("time") - get_time()) local minutesLeft = math.ceil(secondsLeft / 60) d.notice("[Tour de Nemeres] Temps Restant: "..minutesLeft.." minutes.") end function purge() d.kill_all() d.clear_regen() end end end Installer une quête : ici Pour les regen.txt/quest_function/group.txt vous les trouverez :Ici
    1 point
  8. Bonjour à tous ! Votre prénom : Anthony Votre âge : 24 ans Votre ville et région : Montauban Tarn et Garonne Définissez vous en quelques lignes (caractère, qualités, défauts) : Gentil , curieux , respectueux malheureusement je n'ai aucune patience quand je veux quelque chose ! Définissez vos activités et passions en quelques lignes : Chef pâtissier , je pratique toute sorte de sport et a mon temps perdue j'aime jouer sur mon ordi Comment avez-vous connu Funky-Emulation ? : Houla je me suis inscrit il y as 7ans quand j'ai fais mon premier serveur metin2 je l'ai connue quand je chercher de l'aide par hasard sur google ! Que recherches-tu sur Funky-Emulation ? : Je suis de retour pour refaire un serveur priver a mon image et comme j'ai toujours voulue qu'il soit même si cela nécessite de tout retravailler ,je pense trouver l'aide dont j'ai besoin ici ! Une petite phrase de fin :Merci d'avance pour tout vos partage et votre aide
    1 point
  9. Centre de Téléchargement Télécharger ( Interne ) Bonsoir à tous, Après avoir fait des recherches sur le forum j'ai vu qu'aucun partage pour le global_chat a été fait, je décide donc de vous le partager pour les files 2014 vierges car sur les 2016 il est déjà implanté et fonctionnel mais ce serait un petit plus pour les personnes utilisant les 2014 pures. Pour ce partage vous aurez besoin que de vos sources serveur et ces 4 fichiers: config.cpp config.h input_main.cpp input_p2p.cpp 1. config.cpp et config.h 2. input_main.cpp 3. input_p2p.cpp Vous pouvez recompiler vos sources et votre global_chat sera implanté et fonctionnel sans oublier de mettre global_chat: 1 dans les config de vos files. [Hidden Content] Link /uploads/emoticons/smile.png
    1 point
  10. Plus jamais Sinon bienvenue NeoZ :).
    1 point
  11. Bienvenue et bon anniversaire du coup (si Mei c'est toi la noob de l'équipe)
    1 point
  12. Kan j'ai tout installé j'ai eu ca [Hidden Content] et maintenant je ne peu plus me co sur navicat Stp tu peu passé skype live:sarraauroux69 merci ^^
    1 point
  13. Merci mais petit probléme mysql -u root -p demande un mdp j'ai mis funky-emu il m'a dis que l'mdp est faux [Hidden Content]
    1 point
  14. Bonsoir, Certains d'entre vous ont certainement remarquer in-game que les pet's n'étaient pas invocable en jeu. Voici deux fichiers à placer dans votre game de vos source serveur, en corrigeant des warning's j'ai commenté la ligne d'invocation des pet's, je vous partage donc la correction. PetSystem.cpp New_PetSystem.cpp
    1 point
  15. Centre de Téléchargement Télécharger ( Interne ) Salut tout le monde ! Etant donné que le topic des sources a été supprimé par son auteur, je vous donne un nouveau lien de téléchargement: Cliquez ici pour télécharger Vous pouvez y trouver toutes les branches. Ainsi, dans la catégorie Tutoriel, vous pouvez y trouver toutes les informations pour apprendre à compiler les sources de Metin2. Good Luck !
    1 point
  16. Bonjour, Dans ce tutoriel je vais vous accompagner pour faire quotidiennement des sauvegardes de votre serveur ainsi que de votre base de données. Vous allez voir, seule la mise en route prend quelques secondes I. Pré-requis Un fichier texte le fichier crontab de votre serveur II. Script de sauvegarde #!/bin/bash ########################################## # Sauvegarde des fichiers serveur # @author : Tha SmokKe # @version : 1.0 # # Diffusé sous licence GNU/Public # funky-emu.net ########################################## ######################### # Nettoyage des logs # ######################### cd /usr/metin2/ cd ./auth ./clear_logs.sh cd ../db ./clear_logs.sh cd ../channel1/core1/ ./clear_logs.sh cd ../core2/ ./clear_logs.sh cd ../core3/ ./clear_logs.sh cd ../core4/ ./clear_logs.sh cd ../core5/ ./clear_logs.sh cd ../../channel2/core1/ ./clear_logs.sh cd ../core2/ ./clear_logs.sh cd ../core3/ ./clear_logs.sh cd ../core4/ ./clear_logs.sh cd ../core5/ ./clear_logs.sh cd ../../channel3/core1/ ./clear_logs.sh cd ../core2/ ./clear_logs.sh cd ../core3/ ./clear_logs.sh cd ../core4/ ./clear_logs.sh cd ../core5/ ./clear_logs.sh cd ../../channel4/core1/ ./clear_logs.sh cd ../core2/ ./clear_logs.sh cd ../core3/ ./clear_logs.sh cd ../core4/ ./clear_logs.sh cd ../core5/ ./clear_logs.sh cd ../../game99 ./clear_logs.sh sleep 1 cd .. ##################################### # Compression des données serveur # ##################################### cd /usr/ tar cvf metin2-bak.tar.gz metin2 mv metin2-bak.tar.gz / rm metin2-bak.tar.gz ################################# # Compression des données SQL # ################################# cd /var/db/ tar cvf mysql-bak.tar.gz mysql mv mysql-bak.tar.gz / rm mysql-bak.tar.gz Avant de copier ce code dans votre fichier texte, vérifiez d'abord que le dossier où se situe vos fichiers serveurs est bien /usr/metin2. Si ce n'est pas le cas, modifiez la ligne suivante : cd /usr/metin2 En remplaçant metin2 par le nom du dossier contenant vos fichiers de serveur. Une fois que tout est bon, enregistrez le code précédemment copié et corrigé dans un fichier que vous nommerez à votre convenance. Je vous conseille tout de même de lui donner un nom assez clair, comme par exemple sauvegarde.sh ou save.sh. Notez que l'extension .sh est obligatoire pour le fonctionnement du script Placez ensuite ce script dans votre dossier /usr III. Implantation dans le crontab Je vous avais dit que seule l'installation allait nous prendre quelques secondes. Pour ceux qui ne le saurait pas, le fichier crontab va permettre au serveur d’exécuter notre script à un date donnée. Ici, j'ai choisi de faire une sauvegarde toutes les 23heures, mais vous pouvez très bien changer cela comme bon vous semblera. Ouvrez votre fichier crontab et modifié le comme ceci : #minute heure date mois jour utilisateur commande # # * * 23 * * root /usr/sauvegarde.sh Bien sûr, si vous n'avez pas mis sauvegarde.sh en temps que nom pour votre script, vous devez le changer dans le fichier crontab et le remplacer par celui que vous avez choisi. Une fois cela terminé, appréciez maintenant votre serveur qui se sauvegardera automatiquement. Allez, je vous autorise à prendre un café et à pousser un petit souffle de joie. Vos fichiers de sauvegarde se trouverons à la racine de votre serveur, à savoir /. En espérant que ce tutoriel vous aura été utile et que j'ai correctement expliqué son installation. Merci à Oscar pour m'avoir envoyé la partie permettant de nettoyer les logs avant d'effectuer la sauvegarde des fichiers du serveur. Cordialement,
    1 point

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.