Jump to content

Search the Community

Showing results for tags 'mt2 fr python'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Espace Communautaire
    • Funky Emulation
    • Services
    • Bureau de la Communauté
    • Espace Premium
  • Emulation & Co
    • Suggest a Release / Tutorial
    • M2 Project
  • Emulation de jeux
    • Metin2
    • Metin2 Dev
    • Minecraft
    • Dofus
    • World of Warcraft
    • Voir plus...
  • Espace Divers
  • PassionDev's Forum
  • EmuTarkov's Liens importants
  • EmuTarkov's Discussions

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Nationality


Sexe


Discord


Skype


Site


Steam ID


Minecraft


Dofus


Metin2


RaiderZ


X


World of Warcraft


Aion


Habbo


GTA


Roblox


Wakfu


PHP


SQL


HTML


CSS


JavaScript


Java


LUA


Python


VisualBasic


C++


c#


C


3D


2D


Mapper


PHP

Found 36 results

  1. Bonjour, 1. Dépackez root. 2. Direction uiminimap.py 3. Ajoutez: import time 4. Sous le: __init__ Ajoutez ce code : t = time.time() 5. Allons à la ligne 355. Modifier ce code: self.positionInfo.SetText Vous devriez obtenir quelque chose comme ceci : self.positionInfo.SetText(time.strftime('[%X]')) 6. Nous allons aux lignes 302-304 et trouver : if constInfo.MINIMAP_POSITIONINFO_ENABLE==1: En dessous, ajoutez le code suivant : self.positionInfo.Show() Merci! Joyeux temps des fêtes!
  2. Hello, Tout le monde le sait vous ne pouvez pas assembler le parchemins de bénédiction - soit un item avec une fonction "Drop" - ne peut pas être empiler. Ouvrez : uiinventory.py Cherchez : def __DropSrcItemToDestItemInInventory En dessous : if srcItemSlotPos == dstItemSlotPos: return Ajoutez : elif srcItemVID == player.GetItemIndex(dstItemSlotPos): self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0) return Comme vous pouvez le voir ci dessous vous pouvez voir les le parchemin de bénédiction peut se pack maintenant sans problèmes: Si vous souhaitez le fond en jaune au lieu de rouge comme présenté ci dessous Toujours dans uiinventory.py Cherchez : def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos): Faite défilez jusqu'à : if item.IsRefineScroll(srcItemVNum): if player.REFINE_OK == player.CanRefine(srcItemVNum, dstSlotPos): return True Et le remplacer par : if srcItemVNum == player.GetItemIndex(dstSlotPos): if player.GetItemCount(dstSlotPos) < 200: return True Ceci fonctionne pas seulement avec les parchemins de bénédiction et les changements de bonus. C'est un tout. (Ajout 6-7 & Changement, Orbe de bénédiction, ajout 1-5 & changement) Litchy, Rénové par Takuma.
  3. Ce tutoriel a pour but de vous expliquer comment mettre un effet visuel sur berserk. Tous les buffs en ont un, par exemple bénédiction entoure le joueur d'une aura bleutée, berserk est l'exception. 1 -- Pour commencer dépacker le pack root puis ouvrez le fichier playersettingmodule.py vers la ligne 300 vous aurez : chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+16, "", "d:/ymir work/pc/warrior/effect/gyeokgongjang_loop.mse") ajoutez cette ligne là avant : chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+14, "Bip01", "d:/ymir work/pc/warrior/effect/berserk.mse") 2 -- Enregistrez, puis dépackez le pack pc. Il faut rajouter le fichier berserk.mse dans le dossier ymir work/pc/warrior/effect/ si vous n'en avez pas, voici le mien : 3 -- Repackez root et pc puis lancez berserk, vous devriez avoir ça: En espérant vous avoir aidé. Pour toutes questions, rendez-vous dans la catégorie Aide/Questions/Support
  4. Niveau requis : Intermédiaire Temps estimé : 10 minutes Ré-écrit par @Gurgarath Bonjour, Grâce à ce tutoriel, vous pourrez, voir les PV et les PM de votre adversaire lors d'un duel. En contrepartie, il pourra voir les vôtres ! Plus de tricherie possible lors d'un duel grâce à ça Pré-Requis : L'accès au fichier root dépacké Un accès aux files serveur (quêtes) I. Installation (Partie client) II. Installation (Partie serveur -> quêtes) III. Potentielles remarques Source : ElitePvPers Cordialement,
  5. Niveau requis : Débutant Temps estimé : Entre 10 et 15 minutes Réécriture by Xayah 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 ou FE 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
  6. Niveau requis : Débutant Temps estimé : 15 minutes Réécriture by Xayah Ce tutoriel aura pour but de vous aider à installer le SwitchBot sur votre Client Metin2. Pré-requis : L'archive suivante : ICI ou ICI ou FE I. Installation Pour continuer: Si vous avez un soucis, n'hésitez pas à faire une demande d'aide dans l'AQS
  7. Hellow, Je vous partage un petit "systeme ?" pour choisir le skin de son magasin ==> ICI FE Le tuto est dans le dossier , petit screen de ce petit système a l'ouverture d'un magasin : source : turkmmo feat. iRyZz ^_-
  8. Bonjour à tous. Dans ce tutoriel, je vais vous expliquer comment avoir 6 inventaires dans l'entrepôt. Pour ce faire, vous aurez besoin de : -Source client -Source serveur -Votre client SOURCE CLIENT SOURCE SERVEUR CLIENT Voici un aperçu IG: Le tutoriel est à présent terminé, j'espère qu'il vous sera utile. Cordialement. Source: Freakgamers
  9. Bien le bonjour, comme son nom l'indique, je viens vous proposer ce tutoriel détaillé pour modifier votre Selection Empire, sur un serveur files 2014. Tout d'abord il faut télécharger cette archive: ICI FE -Commençons avec le plus simple, il suffit de suivre l'emplacement des dossier. -Pour la modification du selectempirewindow.py, si vous avez un fichier modifier, plutôt que de remplacer le fichier ou que vous n'avez pas envie de chercher, il suffit de modifier comme ceci : Remplacez : ## Alpha { "name" : "Alpha", "type" : "expanded_image", "x" : 0, "y" : 0, "image" : "d:/ymir work/ui/intro/select/background_alpha.sub", "x_scale" : float(SCREEN_WIDTH) / 100.0, "y_scale" : float(SCREEN_HEIGHT) / 69.0, }, Par ceci : ## Alpha { "name" : "Alpha", "type" : "expanded_image", "x" : 0, "y" : 0, "image" : "d:/ymir work/ui/intro/select/background_alpha.sub", "x_scale" : float(SCREEN_WIDTH) / 100.0, "y_scale" : float(SCREEN_HEIGHT) / 69.0, }, { "name" : "bg_A", "type" : "expanded_image", "x" : 0, "y" : 0, "x_scale" : float(SCREEN_WIDTH) / 1024.0, "y_scale" : float(SCREEN_HEIGHT) / 768.0, "image" : "d:/ymir work/ui/intro/select/empire_A.jpg", }, { "name" : "bg_B", "type" : "expanded_image", "x" : 0, "y" : 0, "x_scale" : float(SCREEN_WIDTH) / 1024.0, "y_scale" : float(SCREEN_HEIGHT) / 768.0, "image" : "d:/ymir work/ui/intro/select/empire_B.jpg", }, { "name" : "bg_C", "type" : "expanded_image", "x" : 0, "y" : 0, "x_scale" : float(SCREEN_WIDTH) / 1024.0, "y_scale" : float(SCREEN_HEIGHT) / 768.0, "image" : "d:/ymir work/ui/intro/select/empire_C.jpg", }, Voila pour le selectempirewindow.py. -Concernant le root, modifiez introempire.py et, pareil, remplacer ceci : def __init__(self, stream): print "NEW EMPIRE WINDOW ----------------------------------------------------------------------------" ui.ScriptWindow.__init__(self) net.SetPhaseWindow(net.PHASE_WINDOW_EMPIRE, self) self.stream=stream self.empireID=app.GetRandom(1, 3) self.descIndex=0 self.empireArea = {} self.empireAreaFlag = {} self.empireFlag = {} self.empireAreaButton = {} self.empireAreaCurAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 } self.empireAreaDestAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 } self.empireAreaFlagCurAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 } self.empireAreaFlagDestAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 } self.empireFlagCurAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 } self.empireFlagDestAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 } Par ceci : def __init__(self, stream): print "NEW EMPIRE WINDOW ----------------------------------------------------------------------------" ui.ScriptWindow.__init__(self) net.SetPhaseWindow(net.PHASE_WINDOW_EMPIRE, self) self.stream=stream self.empireID=app.GetRandom(1, 3) self.descIndex=0 self.bg = {} self.empireArea = {} self.empireAreaFlag = {} self.empireFlag = {} self.empireAreaButton = {} self.empireBGCurAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 } self.empireBGDestAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 } self.empireAreaCurAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 } self.empireAreaDestAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 } self.empireAreaFlagCurAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 } self.empireAreaFlagDestAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 } self.empireFlagCurAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 } self.empireFlagDestAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 } -Ensuite cherchez def OnSelectEmpire(self, arg): for key in self.empireArea.keys(): self.empireAreaDestAlpha[key] = 0.0 self.empireAreaFlagDestAlpha[key] = 0.0 self.empireFlagDestAlpha[key] = 0.0 self.empireAreaDestAlpha[arg] = 1.0 self.empireAreaFlagDestAlpha[arg] = 1.0 self.empireFlagDestAlpha[arg] = 1.0 self.empireID = arg et remplacez par : def OnSelectEmpire(self, arg): for key in self.empireArea.keys(): self.empireBGDestAlpha[key] = 0.0 self.empireAreaDestAlpha[key] = 0.0 self.empireAreaFlagDestAlpha[key] = 0.0 self.empireFlagDestAlpha[key] = 0.0 self.empireBGDestAlpha[arg] = 1.0 self.empireAreaDestAlpha[arg] = 1.0 self.empireAreaFlagDestAlpha[arg] = 1.0 self.empireFlagDestAlpha[arg] = 1.0 self.empireID = arg Continuons, cherchez : try: GetObject=self.GetChild self.leftButton = GetObject("left_button") self.rightButton = GetObject("right_button") self.selectButton = GetObject("select_button") self.exitButton = GetObject("exit_button") self.textBoard = GetObject("text_board") self.empireArea[net.EMPIRE_A] = GetObject("EmpireArea_A") self.empireArea[net.EMPIRE_B] = GetObject("EmpireArea_B") self.empireArea[net.EMPIRE_C] = GetObject("EmpireArea_C") self.empireAreaFlag[net.EMPIRE_A] = GetObject("EmpireAreaFlag_A") self.empireAreaFlag[net.EMPIRE_B] = GetObject("EmpireAreaFlag_B") self.empireAreaFlag[net.EMPIRE_C] = GetObject("EmpireAreaFlag_C") self.empireFlag[net.EMPIRE_A] = GetObject("EmpireFlag_A") self.empireFlag[net.EMPIRE_B] = GetObject("EmpireFlag_B") self.empireFlag[net.EMPIRE_C] = GetObject("EmpireFlag_C") GetObject("prev_text_button").SetEvent(ui.__mem_func__(self.PrevDescriptionPage)) GetObject("next_text_button").SetEvent(ui.__mem_func__(self.NextDescriptionPage)) et remplacez par : try: GetObject=self.GetChild self.leftButton = GetObject("left_button") self.rightButton = GetObject("right_button") self.selectButton = GetObject("select_button") self.exitButton = GetObject("exit_button") self.textBoard = GetObject("text_board") self.bg[net.EMPIRE_A] = GetObject("bg_A") self.bg[net.EMPIRE_B] = GetObject("bg_B") self.bg[net.EMPIRE_C] = GetObject("bg_C") self.empireArea[net.EMPIRE_A] = GetObject("EmpireArea_A") self.empireArea[net.EMPIRE_B] = GetObject("EmpireArea_B") self.empireArea[net.EMPIRE_C] = GetObject("EmpireArea_C") self.empireAreaFlag[net.EMPIRE_A] = GetObject("EmpireAreaFlag_A") self.empireAreaFlag[net.EMPIRE_B] = GetObject("EmpireAreaFlag_B") self.empireAreaFlag[net.EMPIRE_C] = GetObject("EmpireAreaFlag_C") self.empireFlag[net.EMPIRE_A] = GetObject("EmpireFlag_A") self.empireFlag[net.EMPIRE_B] = GetObject("EmpireFlag_B") self.empireFlag[net.EMPIRE_C] = GetObject("EmpireFlag_C") GetObject("prev_text_button").SetEvent(ui.__mem_func__(self.PrevDescriptionPage)) GetObject("next_text_button").SetEvent(ui.__mem_func__(self.NextDescriptionPage)) Pour finir il suffit de chercher : def OnUpdate(self): (xposEventSet, yposEventSet) = self.textBoard.GetGlobalPosition() event.UpdateEventSet(self.descIndex, xposEventSet+7, -(yposEventSet+7)) self.descriptionBox.SetIndex(self.descIndex) self.__UpdateAlpha(self.empireArea, self.empireAreaCurAlpha, self.empireAreaDestAlpha) self.__UpdateAlpha(self.empireAreaFlag, self.empireAreaFlagCurAlpha, self.empireAreaFlagDestAlpha) self.__UpdateAlpha(self.empireFlag, self.empireFlagCurAlpha, self.empireFlagDestAlpha) et de rajouter ceci juste en dessous : self.__UpdateAlpha(self.bg, self.empireBGCurAlpha, self.empireBGDestAlpha) Et voila, plus qu'a repacker etc, local_fr et root, petit reboot et vous aurez une jolie selection d'empire, aperçus de mon sp Je sais que le tuto existe, enfin si on peut dire "tuto", mais c'est un peu mode "j'vous le donne et demerdez vous". Au moins là, même les débutants peuvent se débrouiller Amusez vous bien !
  10. Bonjour la communauté! Après avoir été sur Epvp j'ai trouvé un joli système en python. Je vous glisse une aperçu. Pour commencer ouvrez: game.py Recherchez: import ime Ajoutez en dessous: import uisidebar Recherchez: self.__ServerCommand_Build() self.__ProcessPreservedServerCommand() Passer une ligne et ajoutez: self.sideBar = uisidebar.SideBar() self.sideBar.Show() Recherchez: self.KillFocus() app.HideCursor() Passer une ligne et ajoutez: self.sideBar.Destroy() self.sideBar = None Téléchargez-ici FE Bonne journée!
  11. Hello tout le monde, Je vous partage une interface pour votre kill gui. Interface adapté et traduite par moi. Source de base : epvp Aperçu du kill gui : Installation : Pour l'installer il vous faudra suivre le tutoriel de Craven ici : ICI DL : FE L'interface est téléchargeable en pièce jointe. Code optimisé pour cette interface : #START_KILLGUI KillGuiBg = ui.AniImageBox() KillGuiBg.AppendImage("d:/ymir work/ui/blue_killgui_interface.tga") self.KillGuiBg = KillGuiBg self.KillGuiBg.SetPosition(wndMgr.GetScreenWidth()-235,185) self.KillBlauReich = ui.TextLine() self.KillBlauReich.SetDefaultFontName() self.KillBlauReich.SetPosition((wndMgr.GetScreenWidth()-220)+120, 207) self.KillBlauReich.SetText("Bleu Tuer: NaN") self.KillBlauReich.SetOutline() self.KillGelbReich = ui.TextLine() self.KillGelbReich.SetDefaultFontName() self.KillGelbReich.SetPosition((wndMgr.GetScreenWidth()-220)+120, 231) self.KillGelbReich.SetText("Jaune Tuer: NaN") self.KillGelbReich.SetOutline() self.KillRotReich = ui.TextLine() self.KillRotReich.SetDefaultFontName() self.KillRotReich.SetPosition((wndMgr.GetScreenWidth()-220)+120, 253) self.KillRotReich.SetText("Rouge Tuer: NaN") self.KillRotReich.SetOutline() self.KillMob = ui.TextLine() self.KillMob.SetDefaultFontName() self.KillMob.SetPosition((wndMgr.GetScreenWidth()-220)+120, 276) self.KillMob.SetText("Monstre: NaN") self.KillMob.SetOutline() ##END_KILLGUI Have fun ! Emulateur.
  12. Bonjour, Voici un système de blocage identique à celui du FR : Lien : ICI FE Source : metin2dev.org
  13. Bonjour ! C'est un bug tellement répandu que plus personne n'y fait attention pourtant il est là, mais plus pour longtemps Screen : Chez le marchand, le temps restant ne s'affiche pas ! Pourtant, une fois acheté, le temps est correct. Voila ce que vous devez faire : - Dépack root. - Ouvrir uitooltip.py - Cherchez la ligne : def AppendUniqueItemLastTime(self, restMin): vous devriez avoir ça : Voici par quoi vous devez le remplacer : def AppendUniqueItemLastTime(self, restMin): if restMin == 0 and shop.IsOpen() and not shop.IsPrivateShop(): restMin = item.GetValue(0) restSecond = restMin*60 self.AppendSpace(5) self.AppendTextLine(locale.LEFT_TIME + " : " + locale.SecondToHM(restSecond), self.NORMAL_COLOR) def AppendMallItemLastTime(self, endTime): if endTime == 0 and shop.IsOpen() and not shop.IsPrivateShop(): endTime = item.GetValue(0)+app.GetGlobalTimeStamp() leftSec = max(0, endTime - app.GetGlobalTimeStamp()) self.AppendSpace(5) self.AppendTextLine(locale.LEFT_TIME + " : " + locale.SecondToDHM(leftSec), self.NORMAL_COLOR) (attention aux tabulations !) Voici ce que vous devriez avoir : Repackez le root et vérifiez ig : Et voilà ! le tutoriel est terminé ! Bon jeu à tous
  14. Salut à tous, aujourd'hui, je vais vous faire un petit tutoriel sur comment implanter le BonusPage, alors commençons d'abord, téléchargez le fichier suivant : ICI FE Ouvrez votre game.py Cherchez la ligne import chat Ajoutez en dessous import uibonuspage Cherchez la ligne onPressKeyDict[app.DIK_F4] = lambda : self.__PressQuickSlot(7) Ajoutez en dessous onPressKeyDict[app.DIK_U] = lambda : self.__BonusPage() Allez à la fin de votre game.py et ajoutez # Page de bonus def __showbonus(self): import uiBonusPage global bonuspp try: if bonuspp != 1: exec 'uiBonusPage.BonusBoardDialog().Show()' else: pass except ImportError: import dbg,app dbg.Trace('uiBonusPage.py Importing error') app.Abort() def __BonusPage(self): import uibonuspage self.wndBonus = uibonuspage.BonusBoardDialog() self.wndBonus.Show() Enregistrez votre game.py, fermez le et ouvrez ui.py Cherchez la ligne def SetOverVisual(self, filename): wndMgr.SetOverVisual(self.hWnd, filename) Ajoutez en dessous en sautant une ligne # Page de bonus def GetText(self): if not self.ButtonText: return return self.ButtonText.GetText() Voilà, le tutoriel est fini, le BonusPage apparaîtra quand vous appuierez sur la touche U Le BonusPage est totalement traduit en français, il n'y aura donc pas besoin de le traduire Sources : J'ai copié ce système sur le client de Metin2 World Bonne journée !
  15. Bonjour à tous, je partage donc aujourd'hui le système de costume weapon. Je tiens à signialer que celui si bug au niveau des arc et des dagues, en effet, le personnage porte l'arc du mauvais coter, et la dague une seul partie est apparente l'autre c'est la dague normal. Je vous met tout de même deux screen vous montrant les bug Le liens de téléchargement : ICI FE
  16. Plop, je vous partage un système que j'ai trouvé avec l'aide de Franch Chaque grade comporte un grade IMPLEMENTOR = GA HIGH_WIZARD = SGM GOD = GM LOW_WIZARD = MOD Il faudra modifier la partie Source serveur ( tutoriel dans le fichier rar ) Il faudra modifier la partie source client ( tutoriel dans le fichier rar ) Il faudra modifier la partie root.eix Il faudra modifier la partie locale_fr.eix Toute les informations ce trouve dans le fichiers rar, Le partage vient du forum turkmmo l'auteur c'est Suky Voici les screens qui vont avec : Virus Total : ICI Download : ICI FE Mirroir : Yeni Yetkili Tagları.rar J’espère que sa pourra vous intéressé
  17. Carquois de flèche. 1) Qu'est-ce que c'est? 2) Les prérequis. 3) Les téléchargements. 1) Qu'est-ce que c'est? Il existe 4 type de carquois qui ont chacun un temps différent. Durée de 24 Heures. Durée de 7 Jours. Durée de 15 Jours. Durée de 30 Jours. Une carquois c'est un stock de flèche illimité sauf en temps comme indiqué ci-dessus, Les dégâts infligés ne sont pas réduit par la distances. 2) Les prérequis. Sources Client / Server. Un Client. Files. Les fichiers en téléchargement. Votre tête qui encore une fois vous sera utile. 3) Les téléchargements. Cliquez ici FE Sources : Board-Legend LeNn't. Traduction : Moi. Bonne installation. Cordialement, History.
  18. Plop, J'ai vue que certains avait des problèmes avec l'ajout d'effets sur leurs costumes, je vous ai fait un petit tuto rapido :p, bien-sur ce n'est pas la méthode la plus optimisé etc etc mais elle marche. Alors on a besoin des fichiers suivant : InstanceBase.h InstanceBase.cpp playersettingmodule.py Ouvrez votre instanceBase.h (qui est dans vos sources client) Cherchez: EFFECT_BODYARMOR_SPECIAL2, En dessous mettez: EFFECT_BODYCOSTUME, C'est le nom de variable qui va nous servir a attribué un effet a nos costumes !! une variable = un effet !! !! Maintenant mettez votre souris sur la variable EFFECT_BODYCOSTUME vous allez voir un petit message du style: enum CInstanceBase::<unnamed>::EFFECT_BODYCOSTUME =25 retenez bien ce nombre on en aura besoin plus tard !! Enregistrez instanceBase.h on en a plus besoin Ouvrez votre instanceBase.cpp(toujours dans vos sources client) Cherchez: if (pItem->GetSubType() == CItemData::ARMOR_BODY) { m_armorRefineEffect = EFFECT_REFINED+EFFECT_BODYARMOR_REFINED7+refine-7; __AttachEffect(m_armorRefineEffect); } break; Apres le break; revenez a la ligne et collez ce code: case CItemData::ITEM_TYPE_COSTUME: if (pItem->GetSubType() == CItemData::COSTUME_BODY) { DWORD vnum = pItem->GetIndex(); if (41517 == vnum) { __AttachEffect(EFFECT_REFINED + EFFECT_BODYCOSTUME); } } break; De sorte a ce que sa ressemble à ça: if (pItem->GetSubType() == CItemData::ARMOR_BODY) { m_armorRefineEffect = EFFECT_REFINED+EFFECT_BODYARMOR_REFINED7+refine-7; __AttachEffect(m_armorRefineEffect); } break; case CItemData::ITEM_TYPE_COSTUME: if (pItem->GetSubType() == CItemData::COSTUME_BODY) { DWORD vnum = pItem->GetIndex(); if (41517 == vnum) { __AttachEffect(EFFECT_REFINED + EFFECT_BODYCOSTUME); } } break; if (41517 == vnum) veut dire si l'id est égal a 41517(Costume à crocs+) alors on lui attribue un effet ici sa sera effect_refined + notre effet Enregistrez instanceBase.cpp et vous pouvez compilé vos sources client Ensuite on va ouvrir playersettingmodule.py (qui est dans votre dossier root) Cherchez: chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+20, "Bip01", "D:/ymir work/pc/common/effect/armor/armor-4-2-2.mse") En dessous on va coller le code suivant en changeant ""votre nombre"" et ""le chemin de votre effet"" par votre nombre et votre chemin bien-sur : chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED + votre nombre, "Bip01", "d:/ymir work/le chemin de votre effet") votre nombre = le nombre qui c'est affiche au passage de la souris dans notre instanceBase.h le chemin de votre effet = le chemin de votre effet ^^^^^^^^ Ce code renseigne le chemin de l'effet a notre variable Enregistrer, repacker et c'est parti ! Noubliez pas de mettre votre nouveau lanceur ^^ Petite bonus, Pour rajouter plusieurs effet on devra crée plusieurs variable EXEMPLE : EFFECT_BODYCOSTUME, EFFECT_BODYCOSTUME_1, EFFECT_BODYCOSTUME_2, EFFECT_BODYCOSTUME_N, Une variable = un effet Pour rajouter un effet a plusieurs costume EXEMPLE: if (41517 == vnum || 41518 == vnum || 41519 == vnum) { __AttachEffect(EFFECT_REFINED + EFFECT_BODYCOSTUME); } Ou si vous voulez ajouter l'effet a 10 costumes qui se suivent (id parlant) on pourra faire EXEMPLE: if (41517 <= vnum && vnum <= 41530) { __AttachEffect(EFFECT_REFINED + EFFECT_BODYCOSTUME); } Ici tout les costumes de l'id 41517 à 41530 auront l'effet (EFFECT_REFINED + EFFECT_BODYCOSTUME) Pour rajouter plusieurs effet sur un costume EXEMPLE: if (41517 == vnum) { __AttachEffect(EFFECT_REFINED + EFFECT_BODYCOSTUME + EFFECT_BODYCOSTUME_1 + EFFECT_BODYCOSTUME_N); } Et enfin pour finir ajouté plusieurs effet different sur plusieurs costumes different on va répéter notre condition if EXEMPLE: if (41517 == vnum) { __AttachEffect(EFFECT_REFINED + EFFECT_BODYCOSTUME); } if (41555 == vnum) { __AttachEffect(EFFECT_REFINED + EFFECT_BODYCOSTUME_N); } if (41590 == vnum) { __AttachEffect(EFFECT_REFINED + EFFECT_BODYCOSTUME_N); } Voilà maintenant vous pouvez ajouter vos effets sur vos costumes ps : c'est mon premier tuto si y'a des choses mal expliquer ou a modifier dites le moi ps2 : je suis loin d'être expert c++ donc si on peu optimiser ce code dites le moi aussi
  19. Shop Hors-Ligne. 1) Qu'est-ce que c'est? 2) Les prérequis. 3) Le téléchargement. 1) Qu'est-ce que c'est? Les shop hors-ligne sont des shop ou sont propriétaire est soit déconnecter ou soit en train de jouer les shops sont séparer de sont propriétaire! Finit de ce déshabiller pour ce mettre en shop! Maintenant vous être libre de jouer tout en ayant un shop ouvert! 2) Les prérequis. Sources Client/Serveur. Un Client. Des files. Les fichiers en téléchargement. Votre tête qui est encore une fois utile. 3) Le téléchargement. Cliquez ici FE Autres fonctions: Support multi-prix. Montre l'emplacement de l'item vendu. Possibilité d'ouvrir jusqu'à 2 shop par joueurs. Source: BoardLegend/Koray. Traduction: Moi. ( Temps de traduction environ 2 à 3h.) Cordialement, History.
  20. Bonsoir à tous, SOLUTION 1 suite à mon précédent post : [Hidden Content] je tenais à vous donner la solution complète pour ceux qui ont cet affichage après une compilation de leur Lanceur.exe (Screen : [Hidden Content]) Pour résoudre l'affichage complet, il vous faut dépack les 'root' du client, et une fois dépack chercher 'game.py' et l'ouvrir. Une fois ouvert, cherchez la ligne : (ctrl+f) if self.isShowDebugInfo: ATTENTION : la ligne recherchée existe en 2 fois dans le document, pour être sûr que ça soit la bonne ligne faites ctrl+g puis rentrer le numéro de la ligne -> 1455 (#ClientTeam-FE : Vierge) -> Pour les autres clients, et pour être sûr que ça soit la bonne rendez-vous à la seconde occurence. Une fois trouvé, il vous faut commenter la ligne chercher y compris les lignes qui se trouvent en dessous comme sur le screen ci-dessous : (Screen : [Hidden Content]) Une fois commenté les lignes, vous avec juste à enregistrer et à repack les 'root'. Voilà maintenant vous avez plus qu'à vous connecter in game pour constater le changement. PS : Sur mon ancienne demande d'aide une solution coté client a été apportée mais elle n'était pas complète, si vous la faites vous allez tomber sur une erreur niveau syserr : (Screen : [Hidden Content]) voir le message de Galet ci-dessous pour la correction. SOLUTION 2 Je rajoute la solution source : Il faut aller dans "User Interface" et remplacer "__DEBUG__ = 1" par "__DEBUG__ = 0" Merci d'avoir donné la solution pour ceux qui en ont besoin Cordialement.
  21. Bonsoir à tous, Suite à une récente demande d'@Abass. J'ai décidé de vous partager ce petit tweak, qui franchement ne casse pas trois pattes à un canard mais qui mine de rien est assez sympathique. Et puis, qui dit inutile dit indispensable. Qu'est-ce que ça fait au juste ? Tout simplement, dès lors qu'un objet dans un magasin vaudra 0 Yang, le jeu vous dira "Prix : Gratuit" à la place de "Prix : 0 Yangs". C'est tout ! Sans plus attendre, commençons le tutoriel, ça va être très rapide. Ouvrez le fichier "uitooltip.py" qui se situe dans root puis changez la définition "AppendPrice(self, price)" avec la mienne, qui contient la condition en plus. def AppendPrice(self, price): self.AppendSpace(5) if price == 0: self.AppendTextLine(localeInfo.TOOLTIP_BUYPRICE_FREE) else: self.AppendTextLine(localeInfo.TOOLTIP_BUYPRICE % (localeInfo.NumberToMoneyString(price)), self.GetPriceColor(price)) Enregistrez, fermez, repackez root puis rendez vous dans votre fichier locale_fr, ouvrez "locale_game.txt" et rajoutez cette ligne : TOOLTIP_BUYPRICE_FREE Prix : Gratuit En dessous de celle-ci (pour la propreté) : TOOLTIP_BUYPRICE Prix : %s Enregistrez, fermez, repackez locale_fr puis rendez-vous en jeu. Voici le résultat : Voilà, c'est tout pour ce mini-guide ! Passez une bonne journée
  22. Bonjour à toutes et à tous ! J'ai fais quelques recherches sur ce forum mais je n'ai rien trouvé à ce sujet donc je vais vous expliquer comment mettre en place une GUI (Graphical User Interface) montrant les statistiques sans passer par une quête. Bien sûr, il y a possibilité de désactiver ou réactiver l'affichage de cette interface à tout moment à l'aide d'une petite quête. Bref, au travail ! Pour commencer vous aurez besoin de dépack le fichier "root" afin d'avoir accès au fichier "game.py" puis ouvrez le. Petite précision: le copier-coller c'est pas terrible vu que le python n'aime pas les espaces. Donc si vous avez des problèmes à la fin du tuto, remplacez les espaces par des tabulations. /!\La quête est nécessaire pour afficher l'interface/!\ Cherchez la ligne: self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight()) Puis faites un copier/coller de ceci: #START_KILLGUI KillGuiBg = ui.AniImageBox() KillGuiBg.AppendImage("d:/ymir work/ui/blue_killgui_interface.tga") self.KillGuiBg = KillGuiBg self.KillGuiBg.SetPosition(wndMgr.GetScreenWidth()-235,185) self.KillBlauReich = ui.TextLine() self.KillBlauReich.SetDefaultFontName() self.KillBlauReich.SetPosition((wndMgr.GetScreenWidth()-285)+120, 412) self.KillBlauReich.SetText("Royaume bleu: NaN") self.KillBlauReich.SetOutline() self.KillGelbReich = ui.TextLine() self.KillGelbReich.SetDefaultFontName() self.KillGelbReich.SetPosition((wndMgr.GetScreenWidth()-289)+120, 332) self.KillGelbReich.SetText("Royaume jaune: NaN") self.KillGelbReich.SetOutline() self.KillRotReich = ui.TextLine() self.KillRotReich.SetDefaultFontName() self.KillRotReich.SetPosition((wndMgr.GetScreenWidth()-289)+120, 255) self.KillRotReich.SetText("Royaume Rouge: NaN") self.KillRotReich.SetOutline() self.KillMob = ui.TextLine() self.KillMob.SetDefaultFontName() self.KillMob.SetPosition((wndMgr.GetScreenWidth()-268)+120, 490) self.KillMob.SetText("Monstre: NaN") self.KillMob.SetOutline() ##END_KILLGUI Cherchez maintenant la ligne: serverCommandList={ Puis faites un copier/coller de ceci: ##KILLGUI "ShowKillGui" : self.__showkillgui, "HideKillGui" : self.__hidekillgui, "KillBlauReich" : self.__KillBlauReich, "KillGelbReich" : self.__KillGelbReich, "KillRotReich" : self.__KillRotReich, "KillMob" : self.__KillMob, ##END_KILLGUI Maintenant, allez à la fin de votre fichier game.py, personnellement je l'ai mis au dessus de cette ligne: def __ProcessPreservedServerCommand(self): Lorsque vous avez repéré cette ligne, faites un copier/coller de ceci: def __hidekillgui(self): self.KillGuiBg.Hide() self.KillBlauReich.Hide() self.KillGelbReich.Hide() self.KillRotReich.Hide() self.KillMob.Hide() def __showkillgui(self): self.KillGuiBg.Show() self.KillBlauReich.Show() self.KillGelbReich.Show() self.KillRotReich.Show() self.KillMob.Show() def __KillBlauReich(self, KillBlauReich): self.KillBlauReich.SetText("Royaume bleu " + KillBlauReich) def __KillGelbReich(self, KillGelbReich): self.KillGelbReich.SetText("Royaume jaune " + KillGelbReich) def __KillRotReich(self, KillRotReich): self.KillRotReich.SetText("Royaume rouge " + KillRotReich) def __KillMob(self, KillMob): self.KillMob.SetText("Monstre " + KillMob) Repackez votre fichier root. Vous devez maintenant extraire "etc" pour avoir accès à votre dossier "ui" Téléchargez ce fichier: [Hidden Content] Placez le dans le dossier "ui" d:/ymir work/ui/blue_killgui_interface.tga Ouvrez le fichier "etc_repack.xml" et ajoutez cette ligne: depack\ymir work\ui\blue_killgui_interface.tga Sauvegardez et repackez "etc" Le côté client est terminé ! maintenant il faut implanter la quête permettant de cacher ou afficher l'interface. Allez dans le dossier "quest" via winscp ou filezilla. Créez un fichier nommé: kill_gui.quest Puis ajoutez la quête au fichier: quest killgui begin state start begin when kill begin if npc.is_pc() then local new_point = pc.getqf("empire"..npc.get_empire())+1 pc.setqf("empire"..npc.get_empire(), new_point) cmdchat("KillRotReich "..pc.getqf("empire1")) cmdchat("KillGelbReich "..pc.getqf("empire2")) cmdchat("KillBlauReich "..pc.getqf("empire3")) else local new_point = pc.getqf("mob")+1 pc.setqf("mob", new_point) cmdchat("KillMob "..pc.getqf("mob")) end end when login begin if pc.getqf("showkillgui") == 1 then cmdchat("ShowKillGui") cmdchat("KillRotReich "..pc.getqf("empire1")) cmdchat("KillGelbReich "..pc.getqf("empire2")) cmdchat("KillBlauReich "..pc.getqf("empire3")) cmdchat("KillMob "..pc.getqf("mob")) else cmdchat("HideKillGui") end end when letter begin send_letter("Statistiques") end when info or button begin say_title("Statistiques") say("Voulez-vous désactiver l'affichage de vos") say("statistiques ?") say("Les personnes ou mobs tués seront tout de même") say("comptabilisés. Vous pourrez réactiver à tout moment") say("l'affichage des statistiques.") local janein = select("Afficher", "Cacher") if janein == 2 then pc.setqf("showkillgui", 0) cmdchat("HideKillGui") else pc.setqf("showkillgui", 1) cmdchat("ShowKillGui") cmdchat("KillRotReich "..pc.getqf("empire1")) cmdchat("KillGelbReich "..pc.getqf("empire2")) cmdchat("KillBlauReich "..pc.getqf("empire3")) cmdchat("KillMob "..pc.getqf("mob")) end end end end Ajoutez le fichier à filezilla ou winscp puis ouvrez le fichier: locale_list et ajoutez cette ligne: kill_gui.quest (N'oubliez pas de laisser une ligne vide en dessous de la dernière ligne ajoutée) Sauvegardez puis recompilez la quête. Dans la liste des quêtes vous verrez la quête "Statistiques" cliquez dessus puis activez l'affichage de la GUI, le tour est joué ! Petit plus ! Il y a en tout 5 interfaces (en comptant celle-ci) j'ai choisis de vous partager cette interface car je trouve que c'est la plus belle, mais après chacun ses goûts. Téléchargement: [Hidden Content] Téléchargement: [Hidden Content] Pour changer d'interface, renommez le fichier téléchargé en "blue_killgui_interface.tga" puis déplacez le ici en remplaçant l'ancienne interface si besoin est: d:/ymir work/ui/blue_killgui_interface.tga Changer l'emplacement de l'écriture Si vous changez d'interface, vous aurez sans doute besoin de régler la position du texte. Ouvrez le fichier "game.py" puis cherchez la ligne: self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight()) Vous verrez donc les coordonnées de chaque ligne: Si vous souhaitez changer le texte, c'est simple. Cherchez la ligne: def __hidekillgui(self): Laisser la GUI affichée après chaque téléportation: Merci à Spark pour la modification du python et de la quête ! Pour commencer, remplacez la quête implantée précédemment par celle-ci: quest killgui begin state start begin when kill begin if npc.is_pc() then local new_point = pc.getqf("empire"..npc.get_empire())+1 local tab = {"KillRotReich", "KillGelbReich", "KillBlauReich"} pc.setqf("empire"..npc.get_empire(), new_point) cmdchat(tab[npc.get_empire()].." "..new_point) else local new_point = pc.getqf("mob")+1 pc.setqf("mob", new_point) cmdchat("KillMob "..new_point) end end when login begin cmdchat("ShowKillGui") cmdchat("KillRotReich "..pc.getqf("empire1")) cmdchat("KillGelbReich "..pc.getqf("empire2")) cmdchat("KillBlauReich "..pc.getqf("empire3")) cmdchat("KillMob "..pc.getqf("mob")) end end end Allez dans vitre game.py puis remplacez: "ShowKillGui" : self.__showkillgui, Par: "ShowKillGui" : self.__showkillgui2, Remplacez ensuite: def __hidekillgui(self): self.KillGuiBg.Hide() self.KillBlauReich.Hide() self.KillGelbReich.Hide() self.KillRotReich.Hide() self.KillMob.Hide() Par: def __showkillgui2(self): constInfo.killgui = 1 self.KillGuiBg.Show() self.KillBlauReich.Show() self.KillGelbReich.Show() self.KillRotReich.Show() self.KillMob.Show() Repackez votre root puis testez ! Merci à Spark ! Afficher/cacher l'interface à l'aide d'un raccourcis (F5)Passer par une quête à chaque fois pour afficher ou cacher l'interface peut être assez chiant, voilà la solution: un raccourcis sur la touche F5 ! Ouvrez le fichier game.py de votre root puis allez à la fin de votre fichier pour trouver ces lignes: Remplacez donc: def __hidekillgui(self): self.KillGuiBg.Hide() self.KillBlauReich.Hide() self.KillGelbReich.Hide() self.KillRotReich.Hide() self.KillMob.Hide() def __showkillgui(self): self.KillGuiBg.Show() self.KillBlauReich.Show() self.KillGelbReich.Show() self.KillRotReich.Show() self.KillMob.Show() Par ceci: def __hidekillgui(self): self.KillGuiBg.Hide() self.KillBlauReich.Hide() self.KillGelbReich.Hide() self.KillRotReich.Hide() self.KillMob.Hide() def __showkillgui(self): if constInfo.killgui == 0: constInfo.killgui = 1 self.KillGuiBg.Show() self.KillBlauReich.Show() self.KillGelbReich.Show() self.KillRotReich.Show() self.KillMob.Show() elif constInfo.killgui == 1: constInfo.killgui = 0 self.KillGuiBg.Hide() self.KillBlauReich.Hide() self.KillGelbReich.Hide() self.KillRotReich.Hide() self.KillMob.Hide() Cherchez la ligne: onPressKeyDict[app.DIK_F4] = lambda : self.__PressQuickSlot(7) Puis ajoutez en dessous: onPressKeyDict[app.DIK_F5] = lambda : self.__showkillgui() (ne rien ajouter dans la parenthèse en fin de ligne) Sauvegardez puis quittez le fichier game.py. Toujours dans root ouvre le fichier "constinfo.py" Cherchez la ligne: PVPMODE_PROTECTED_LEVEL = 30 (la valeur à la fin de cette ligne peut changer) Puis en dessous ajoutez cette ligne: killgui = 0 Sauvegardez, repackez et en jeu, appuyez sur F5 ! Après ça on a toujours besoin de la quête, donc ne la supprimez pas ! Optimisé pour l'interface V4 (avec raccourcis) Je me suis intéressé à la version 4 de l'interface, voilà donc les emplacements que je trouve optimaux pour cet interface: /!\Vous devez avoir installé le raccourcis de la partie juste au dessus/!\ En dessous de la ligne: self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight()) Mettre ceci: ##START_KILLGUI KillGuiBg = ui.AniImageBox() KillGuiBg.AppendImage("d:/ymir work/ui/blue_killgui_interface.tga") self.KillGuiBg = KillGuiBg self.KillGuiBg.SetPosition(wndMgr.GetScreenWidth()-245,171) self.KillBlauReich = ui.TextLine() self.KillBlauReich.SetDefaultFontName() self.KillBlauReich.SetPosition((wndMgr.GetScreenWidth()-285)+120, 445) self.KillBlauReich.SetText("Royaume bleu: NaN") self.KillBlauReich.SetOutline() self.KillGelbReich = ui.TextLine() self.KillGelbReich.SetDefaultFontName() self.KillGelbReich.SetPosition((wndMgr.GetScreenWidth()-289)+120, 340) self.KillGelbReich.SetText("Royaume jaune: NaN") self.KillGelbReich.SetOutline() self.KillRotReich = ui.TextLine() self.KillRotReich.SetDefaultFontName() self.KillRotReich.SetPosition((wndMgr.GetScreenWidth()-289)+120, 231) self.KillRotReich.SetText("Royaume Rouge: NaN") self.KillRotReich.SetOutline() self.KillMob = ui.TextLine() self.KillMob.SetDefaultFontName() self.KillMob.SetPosition((wndMgr.GetScreenWidth()-268)+120, 557) self.KillMob.SetText("Monstre: NaN") self.KillMob.SetOutline() ##END_KILLGUI Puis au dessus de la ligne: def __ProcessPreservedServerCommand(self): Ceci: def __hidekillgui(self): self.KillGuiBg.Hide() self.KillBlauReich.Hide() self.KillGelbReich.Hide() self.KillRotReich.Hide() self.KillMob.Hide() def __showkillgui(self): if constInfo.killgui == 0: constInfo.killgui = 1 self.KillGuiBg.Show() self.KillBlauReich.Show() self.KillGelbReich.Show() self.KillRotReich.Show() self.KillMob.Show() elif constInfo.killgui == 1: constInfo.killgui = 0 self.KillGuiBg.Hide() self.KillBlauReich.Hide() self.KillGelbReich.Hide() self.KillRotReich.Hide() self.KillMob.Hide() def __KillBlauReich(self, KillBlauReich): self.KillBlauReich.SetText(" " + KillBlauReich) def __KillGelbReich(self, KillGelbReich): self.KillGelbReich.SetText(" " + KillGelbReich) def __KillRotReich(self, KillRotReich): self.KillRotReich.SetText(" " + KillRotReich) def __KillMob(self, KillMob): self.KillMob.SetText(" " + KillMob) Repackez votre fichier root et c'est bon. Optimisé pour l'interface V5 (avec raccourcis) Par LordGune Nul besoin de faire tout un pitch pour expliquer comment mettre ce changement: #START_KILLGUI KillGuiBg = ui.AniImageBox() KillGuiBg.AppendImage("d:/ymir work/ui/blue_killgui_interface.tga") self.KillGuiBg = KillGuiBg self.KillGuiBg.SetPosition(wndMgr.GetScreenWidth()-235,185) self.KillBlauReich = ui.TextLine() self.KillBlauReich.SetDefaultFontName() self.KillBlauReich.SetPosition((wndMgr.GetScreenWidth()-207)+120, 458) self.KillBlauReich.SetText("Bleue Tuer: NaN") self.KillBlauReich.SetOutline() self.KillGelbReich = ui.TextLine() self.KillGelbReich.SetDefaultFontName() self.KillGelbReich.SetPosition((wndMgr.GetScreenWidth()-209)+120, 354) self.KillGelbReich.SetText("Jaune Tuer: NaN") self.KillGelbReich.SetOutline() self.KillRotReich = ui.TextLine() self.KillRotReich.SetDefaultFontName() self.KillRotReich.SetPosition((wndMgr.GetScreenWidth()-209)+120, 246) self.KillRotReich.SetText("Rouge Tuer: NaN") self.KillRotReich.SetOutline() self.KillMob = ui.TextLine() self.KillMob.SetDefaultFontName() self.KillMob.SetPosition((wndMgr.GetScreenWidth()-215)+120, 572) self.KillMob.SetText("Monstre: NaN") self.KillMob.SetOutline() ##END_KILLGUI Merci à LordGune pour avoir partagé cette version optimisée ! Sources: Tuto, screens, adaptation de l'interface/écriture, (petite) traduction de la quête entièrement par moi. Le reste est de ©ChaoSS sur epvp. L'option "raccourcis" provient de "ToBii™" sur epvp. GUI v5 par .ωєιя∂ sur epvp. J'espère ne rien avoir oublié. Bon jeu à tous et bonne chance ! Source : Craven LIEN DE DL GENERAL
  23. Salut tout le monde, petit partage rapide de ce que je viens de faire. Problèmatique: Un joueur souhaite vendre un item 160m, il se retrouve avec 160k car son acheteur n'a pas mis tous les zéros. Conséquence : Il est énervé et souhaite avoir plus de lisibilité. Rendu: Code : Dépack le root, cherchez le fichier uiexchange.py, remplacez la fonction Refresh. def Refresh(self): self.RefreshOwnerSlot() self.RefreshTargetSlot() #Début des modifs prix = exchange.GetElkFromTarget() string_prix = "" compteur = 0 for i in range(len(str(prix)),0,-1): if(compteur == 3): string_prix = "."+string_prix compteur = 0 compteur = compteur+1 string_prix = str(prix)[i-1]+string_prix self.OwnerMoney.SetText(str(exchange.GetElkFromSelf())) self.TargetMoney.SetText(string_prix) #Fin des modifs if True == exchange.GetAcceptFromSelf(): self.OwnerAcceptLight.Down() else: self.AcceptButton.Enable() self.AcceptButton.SetUp() self.OwnerAcceptLight.SetUp() if True == exchange.GetAcceptFromTarget(): self.TargetAcceptLight.Down() else: self.TargetAcceptLight.SetUp() Si vous avez des questions n'hésitez pas.
  24. Coucou ! Voici un court tuto qui vous permettra d'avoir un bouton de raccourci à l'entrepôt dans l'inventaire. L'entrepôt du magasinier permettant de stocker vos items. ______________________________________________________________ CÔTÉ CLIENT ______________________________________________________________ Pour la partie client on va uniquement modifier le locale_fr et le root. Locale_fr : Rendez vous donc dans le fichier locale_interface.txt Cherchez : MALL_TITLE Et mettez ceci en dessous : LAGER_TITLE Entrepôt d'objets Sauvegardez et quittez. Maintenant ouvrez le inventorywindow.py En dessous de : ## MallButton { "name" : "MallButton", "type" : "button", "x" : 120, "y" : 150, "tooltip_text" : uiScriptLocale.MALL_TITLE, "default_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_01.tga", "over_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_02.tga", "down_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_03.tga", }, Ajoutez ceci : { "name" : "LagerButton", "type" : "button", "x" : 80, "y" : 150, "tooltip_text" : uiScriptLocale.LAGER_TITLE, "default_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_01.tga", "over_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_02.tga", "down_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_03.tga", }, Sauvegardez et quittez. Root : Ouvrez le uiinventory.py Cherchez : self.mallButton = self.GetChild2("MallButton") Et ajoutez ceci à la suite : self.LagerButton = self.GetChild2("LagerButton") Cherchez : self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton)) Et ajoutez ceci à la suite : if self.LagerButton: self.LagerButton.SetEvent(ui.__mem_func__(self.ClickLagerButton)) Cherchez enfin : net.SendChatPacket("/click_mall") Et ajoutez à la suite : def ClickLagerButton(self): import event event.QuestButtonClick(84) ATTENTION : le chiffre 84 est à changer en fonction de la quête , c'est à dire que la quête est déclaré dans le locale_list vous prenez la ligne oú elle se situe ______________________________________________________________ CÔTÉ SERVEUR ______________________________________________________________ Ajoutez dont cette quête quest lagerbutton begin state start begin when button or info begin game.open_safebox() end end end Une fois ceci déclarez la dans votre locale_list , rebootez vos quêtes , faites un reload q in game. Et enjoy ! Ce tutoriel a été testé sous files 2012 ,2013 et 2014 Source de base : Just4Metin Réecriture du tuto : Jinx Cordialement,
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.