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 03/13/18 dans toutes les zones

  1. Bonjour et bonsoir à tous, Au vu de l'activité dans l'A/Q/S à ce sujet ainsi qu'à un problème de @Sufhal sur Discord, j'ai remarqué que les tutoriaux d'installation du World Editor tendaient à être flous ou pas assez explicatifs sur la manière dont il fallait l'installer, de ce fait, j'ai donc décidé de créer un tutoriel vidéo sur l'installation du World Editor ! La procédure est complète à l'exception près de la création de la partition "D:\" du disque dur. Ce tutoriel est très rapide, je l'ai réalisé d'une traite dans la vidéo, je m'excuse pour la petite erreur de langue qui s'est glissée au début ainsi que pour la petite erreur où j'ai dit "côté client" alors que c'était bel et bien "côté serveur" (j'ai fait une correction dans la vidéo). Les packs que vous devrez depacker : Effect ETC PC PC2 Property Terrain textureset Tree Zone Voici donc la vidéo !
    1 point
  2. Bonjour. Ayant fait un ancien tutoriel pour créer des gui de A à Z, je vais vous proposez ici une manière un peu plus facile de les faire. Une petite explication s'impose : On va passer par des selfs à chaque fois. Je vais vous donner une class, avec tous les éléments principaux et vous pourrez les définir et les placer comme je vais vous expliquer ci-dessous. Créez un fichier Python, par exemple : takuma.py Dans ce fichier, commencez par ajouter cette structure : import ui import dbg import app class Dialog1(ui.Window): def __init__(self): ui.Window.__init__(self) self.BuildWindow() def __del__(self): ui.Window.__del__(self) def BuildWindow(self): self.Board = ui.BoardWithTitleBar() self.Board.SetSize(170, 170) self.Board.SetCenterPosition() self.Board.AddFlag('movable') self.Board.AddFlag('float') self.Board.SetTitleName('Window') self.Board.SetCloseEvent(self.Close) self.Board.Show() self.__BuildKeyDict() self.comp = Component() def __BuildKeyDict(self): onPressKeyDict = {} onPressKeyDict[app.DIK_F5] = lambda : self.OpenWindow() self.onPressKeyDict = onPressKeyDict def OnKeyDown(self, key): try: self.onPressKeyDict[key]() except KeyError: pass except: raise return TRUE def OpenWindow(self): if self.Board.IsShow(): self.Board.Hide() else: self.Board.Show() def Close(self): self.Board.Hide() class Component: def Button(self, parent, buttonName, tooltipText, x, y, func, UpVisual, OverVisual, DownVisual): button = ui.Button() if parent != None: button.SetParent(parent) button.SetPosition(x, y) button.SetUpVisual(UpVisual) button.SetOverVisual(OverVisual) button.SetDownVisual(DownVisual) button.SetText(buttonName) button.SetToolTipText(tooltipText) button.Show() button.SetEvent(func) return button def ToggleButton(self, parent, buttonName, tooltipText, x, y, funcUp, funcDown, UpVisual, OverVisual, DownVisual): button = ui.ToggleButton() if parent != None: button.SetParent(parent) button.SetPosition(x, y) button.SetUpVisual(UpVisual) button.SetOverVisual(OverVisual) button.SetDownVisual(DownVisual) button.SetText(buttonName) button.SetToolTipText(tooltipText) button.Show() button.SetToggleUpEvent(funcUp) button.SetToggleDownEvent(funcDown) return button def EditLine(self, parent, editlineText, x, y, width, heigh, max): SlotBar = ui.SlotBar() if parent != None: SlotBar.SetParent(parent) SlotBar.SetSize(width, heigh) SlotBar.SetPosition(x, y) SlotBar.Show() Value = ui.EditLine() Value.SetParent(SlotBar) Value.SetSize(width, heigh) Value.SetPosition(1, 1) Value.SetMax(max) Value.SetLimitWidth(width) Value.SetMultiLine() Value.SetText(editlineText) Value.Show() return SlotBar, Value def TextLine(self, parent, textlineText, x, y, color): textline = ui.TextLine() if parent != None: textline.SetParent(parent) textline.SetPosition(x, y) if color != None: textline.SetFontColor(color[0], color[1], color[2]) textline.SetText(textlineText) textline.Show() return textline def RGB(self, r, g, b): return (r*255, g*255, b*255) def SliderBar(self, parent, sliderPos, func, x, y): Slider = ui.SliderBar() if parent != None: Slider.SetParent(parent) Slider.SetPosition(x, y) Slider.SetSliderPos(sliderPos / 100) Slider.Show() Slider.SetEvent(func) return Slider def ExpandedImage(self, parent, x, y, img): image = ui.ExpandedImageBox() if parent != None: image.SetParent(parent) image.SetPosition(x, y) image.LoadImage(img) image.Show() return image def ComboBox(self, parent, text, x, y, width): combo = ui.ComboBox() if parent != None: combo.SetParent(parent) combo.SetPosition(x, y) combo.SetSize(width, 15) combo.SetCurrentItem(text) combo.Show() return combo def ThinBoard(self, parent, moveable, x, y, width, heigh, center): thin = ui.ThinBoard() if parent != None: thin.SetParent(parent) if moveable == TRUE: thin.AddFlag('movable') thin.AddFlag('float') thin.SetSize(width, heigh) thin.SetPosition(x, y) if center == TRUE: thin.SetCenterPosition() thin.Show() return thin def Gauge(self, parent, width, color, x, y): gauge = ui.Gauge() if parent != None: gauge.SetParent(parent) gauge.SetPosition(x, y) gauge.MakeGauge(width, color) gauge.Show() return gauge def ListBoxEx(self, parent, x, y, width, heigh): bar = ui.Bar() if parent != None: bar.SetParent(parent) bar.SetPosition(x, y) bar.SetSize(width, heigh) bar.SetColor(0x77000000) bar.Show() ListBox=ui.ListBoxEx() ListBox.SetParent(bar) ListBox.SetPosition(0, 0) ListBox.SetSize(width, heigh) ListBox.Show() scroll = ui.ScrollBar() scroll.SetParent(ListBox) scroll.SetPosition(width-15, 0) scroll.SetScrollBarSize(heigh) scroll.Show() ListBox.SetScrollBar(scroll) return bar, ListBox Dialog1().Show() Vous pouvez aussi retrouver ce code avec les tabulations ici : [Hidden Content] Sinon, faites un copier/coller et remplacez 4 espaces par une tabulation. Bien, je vous ai presque entièrement fais le travail... Changez la touche pour ouvrir la gui ici : onPressKeyDict[app.DIK_F5] = lambda : self.OpenWindow() Retrouvez la taille de la fenêtre : self.Board.SetSize(170, 170) Retrouvez le nom de la fenêtre ici : self.Board.SetTitleName('Window') Pour les test, je vous conseille de laisser le : Dialog1().Show() Cela va vous permettre de directement ouvrir la fenêtre une fois import dans un fichier, supprimez le si vous voulez l'ouvrir avec un bouton, et utilisez la méthode au dessus. Toute la class component, n'y touchez pas, c'est là ou j'ai mis toute la gestion des items à mettre sur la gui. Donc à partir de : class Component: Jusqu'à la fin du fichier. Bien, maintenant on voit comment ajouter quelque chose ? Pour ajouter un bouton, dans la make window, ajoutez: self.de = self.comp.Button(self.Board, 'Déconnexion', '', 10, 294, self.de_func, 'd:/ymir work/ui/public/middle_button_01.sub', 'd:/ymir work/ui/public/middle_button_02.sub', 'd:/ymir work/ui/public/middle_button_03.sub') Par exemple, ce bouton va créer un bouton avec le texte "Déconnexion" de coordonnées (10;294), exécutant la fonction "de-func" et on a ensuite la texture du bouton. Vous ajoutez ensuite cette fonction, par exemple : def de_func(self): pass Ici, cette fonction ne fait rien, mais vous pouvez très bien faire : def de_func(self): import chat net.SendChatPack("/logout") Aucun problème là dessus. Vous pouvez par exemple ajouter du texte, dans le make windows : self.text = self.comp.TextLine(self.Board, 'Channels', 108, 33, self.comp.RGB(255, 255, 255)) On créer ici une ligne de texte avec écrit "Channels" en coordonnées (108;33) et de couleur RGB(255, 255, 255) Assez simple non ? Par exemple, pour ajouter une barre pour entrer des valeurs (input) : self.slotbar_Input, self.Input = self.comp.EditLine(self.Board, '', 143, 41, 60, 15, 10) Avec à la fin les coordonnées, la taille, et le nombre de caractère maximal. Je vous laissez consulter les self pour le reste des éléments. Si vous avez des questions, je peux y répondre sans problème. Cordialement, Takuma.
    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.