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

Affichage - Ajouter un bouton à l'interface


Craven

Messages recommandés

Bonjours à toutes et à tous !

Il ne me semble pas avoir vu ce tuto sur ce forum donc je vais partager la façon d'installer un nouveau bouton sur l'interface IG. Pour l'exemple, je vais utiliser la Bonus Gui en la mettant sur un nouveau bouton à côté de celui de l'inventaire. Bien évidemment on peut adapter ce tuto pour mettre sur le bouton tout autre chose que la bonus gui !

Commencez par télécharger le script python de la GUI:

Hidden Content

    Give reaction to this post to see the hidden content.
 ou Funky Bin

Mettez ce fichier dans votre root.

Pour commencer, nous allons ajouter le bouton à l'interface. Dépackez locale_fr puis ouvrez le fichier "taskbar.py" se trouvant dans:

depack\locale\fr\ui
Dans ce fichier, cherchez ceci:
		{
		"name" : "InventoryButton",
		"type" : "button",

		"x" : SCREEN_WIDTH - 110,
		"y" : 3 + Y_ADD_POSITION,

		"tooltip_text" : uiScriptLocale.TASKBAR_INVENTORY,

		"default_image" : ROOT + "TaskBar/Inventory_Button_01.sub",
		"over_image" : ROOT + "TaskBar/Inventory_Button_02.sub",
		"down_image" : ROOT + "TaskBar/Inventory_Button_03.sub",
	},
Une fois trouvé, faites un copier/coller de ceci juste en dessous:
				{
		"name" : "BonusGui",
		"type" : "button",

		"x" : SCREEN_WIDTH - 178,
		"y" : 3 + Y_ADD_POSITION,

		"tooltip_text" : "Bonus",

		"default_image" : ROOT + "TaskBar/Inventory_Button_01.sub",
		"over_image" : ROOT + "TaskBar/Inventory_Button_02.sub",
		"down_image" : ROOT + "TaskBar/Inventory_Button_03.sub",
	},
 
			"tooltip_text" : "Bonus",
 

Ceci veut dire que lorsque vous passez votre curseur sur la case, le texte "Bonus" s'affiche, vous pouvez donc le modifier comme vous le souhaitez

"default_image" : ROOT + "TaskBar/Inventory_Button_01.sub",
		"over_image" : ROOT + "TaskBar/Inventory_Button_02.sub",
		"down_image" : ROOT + "TaskBar/Inventory_Button_03.sub",
Cette partie gère les 3 images composant l'icône, il y a l'image lorsque l'icône est normal, lorsqu'on passe notre curseur sur l'icône est lorsqu'on clic dessus. Pour  ce tuto, c'est donc l'icône de l'inventaire, à vous de mettre ce que vous voulez !

 

			"name" : "BonusGui",
Ici, mettez le nom de ce que vous ajoutez, vous pouvez entrer ce que vous voulez mais il me paraît logique de mettre le nom de ce qu'on ajoute pour se repérer plus facilement (et que ce soit plus facile pour la suite du tuto). Suivant ce que vous ajoutez, modifiez cette ligne comme bon vous semble mais on en aura besoin pour la suite du tuto.

Lorsque vous avez ajouté et modifié comme vous le souhaitez, on va tester si l'icône s'affiche bien. Repackez puis connectez-vous, si vous avez gardé les mêmes coordonnées que dans le tuto, vous aurez un nouvel icône ayant le skin de celui de l'inventaire en bas à droite de votre écran. Lorsque vous cliquez dessus rien ne se passe ? c'est normal, ça se passe dans la suite du tuto !

On passe maintenant au plus "compliqué".

Dépackez root et ouvrez le fichier "uitaskbar.py" (attention, ce n'est pas celui qui se trouve dans locale_fr !)

Cherchez maintenant la ligne:

toggleButtonDict[TaskBar.BUTTON_CHARACTER]=self.GetChild("CharacterButton")
Puis collez en dessous ceci:
toggleButtonDict[TaskBar.BUTTON_BONUSGUI]=self.GetChild("BonusGui")
 
self.GetChild("BonusGui")
Dans ces crochets, veillez à écrire le "name" précédemment ajouté dans le fichier uitaskbar.py du locale_fr. Dans notre cas c'est donc "BonusGui"
toggleButtonDict[TaskBar.BUTTON_BONUSGUI]
Cette partie est importante ! vous pouvez écrire ce que vous souhaitez, ce sera le nom de la fonction qu'on utilisera plus tard, il faut que ce qu'il y a après "TaskBar." soit écrit EN MAJUSCULE comme dans l'exemple !

Cherchez maintenant:

BUTTON_CHAT = 4
 

On va donner un numéro à cette fonction, ajoutez donc en dessus:

BUTTON_BONUSGUI = 5
"BUTTON_BONUSGUI" est le nom de la fonction précédemment ajoutée, celle qu'on a dû écrire en majuscule, veillez à écrire le même nom ! Vous pouvez bien évidemment écrire ce que vous voulez, mais il faut que ce soit le même nom que la fonction qu'on a écrit ici:
toggleButtonDict[TaskBar.BUTTON_BONUSGUI]=self.GetChild("BonusGui")
Dans root, ouvrez le fichier "interfacemodule.py" puis cherchez:
self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_CHAT, ui.__mem_func__(self.ToggleChat))
Et ajoutez en dessous:
self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_BONUSGUI, ui.__mem_func__(self.BonusGui))
 
TaskBar.BUTTON_BONUSGUI
À cette ligne vous devez écrire le nom de la fonction (donc "BUTTON_BONUSGUI" si on suit ce tuto à la lettre)
(self.BonusGui)
Ici c'est "name" se trouvant dans uitaskbar.py dans locale_fr. Veillez à ce qu'il y ai écrit exactement la même chose que dans "name".

Maintenant il vous suffit d'ajouter le code que vous souhaitez exécuter lorsqu'on clic sur ce bouton. Je vais donc utiliser le code pour  la Bonus Gui. Mettez où vous le souhaitez, pour ma part je l'ai mis au dessus de " def __MakeParty(self):

Pour les personnes implantant la bonus gui, ajoutez ceci:

	def BonusGui(self):
	import uiBonusPage
	global BPisLoaded
	try:
		if BPisLoaded != 1:
			exec 'uiBonusPage.BonusBoardDialog().Show()'
		else:
			pass
	except ImportError:
		import dbg,app
		dbg.Trace('uiBonusPage.py Importing error')
		app.Abort()
 

Pour les autres ajoutez VOTRE code.

Vous l'aurez sans doute compris, après "def" vous devez écrire le nom inscrit dans "name" dans uitaskbar.py du locale_fr.

Pour les personnes implantant quelque chose d'autre que la BonusGui, ce tuto est fini, vous pouvez repack root et tester votre icône ! pour ceux qui implantent la bonus gui du topic de Cube vous avez encore 2-3 choses à faire !

Toujours dans interfacemodule.py, cherchez:

IsQBHide = 0
 

Puis ajoutez en dessous:

BPisLoaded = 0
 

Toujours pour ceux implantant la Bonus Gui, on reprend simplement le topic de Cube, allez dans ui.py puis cherchez ceci:

 

def SetOverVisual(self, filename):
 

Ajoutez ensuite en dessous:

##Bonus
def GetText(self):
if not self.ButtonText:
return# ""
return self.ButtonText.GetText()

def SetDownVisual(self, filename):
wndMgr.SetDownVisual(self.hWnd, filename) 
 

N'oubliez pas que le python n'aime pas les espaces !  remplacez donc les espaces par des tabulations et mettez les tabulations aux bons endroits.

Ce tuto est maintenant terminé, vous pouvez repack root ! si vous avez des questions n'hésitez pas à les poser dans la section "Aide / Questions / Support" !

Bonne soirée/journée à toutes et à tous !

  • Love 11
Lien vers le commentaire
Partager sur d’autres sites

  • Funkiest

Merci bien, le gros plus est que ce boutton peut-être intégré partout sur l'écran, par contre, si vous pensiez le mettre par exemple dans une fenêtre de l'inventaire, ça ne marchera pas avec ce tutoriel.

 

Comme d'hab, je te donne un +1, très bon boulot :)

Lien vers le commentaire
Partager sur d’autres sites

Effectivement, comme Galet l'a dit ça ne fonctionne que sur l'interface "de base", je veux dire, on ne peut mettre une icône ni dans l'inventaire, ni sur la page de distribution des status etc ... pour ajouter une icône sur une de ces pages, ça se passe autre part !

Merci à vous, ça fait plaisir d'avoir de bons retours !

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...
  • Retraité

Pour le client 40+, à cette partie:

 

self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_CHAT, ui.__mem_func__(self.ToggleChat))

 

 

	def __MakeTaskBar(self):
	wndTaskBar = uiTaskBar.TaskBar()
	wndTaskBar.LoadWindow()
	self.wndTaskBar = wndTaskBar
	self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_CHARACTER, ui.__mem_func__(self.ToggleCharacterWindowStatusPage))
	self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_INVENTORY, ui.__mem_func__(self.ToggleInventoryWindow))
	self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_MESSENGER, ui.__mem_func__(self.ToggleMessenger))
	self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_SYSTEM, ui.__mem_func__(self.ToggleSystemDialog))
	self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_BONUSGUI, ui.__mem_func__(self.BonusGui))
	if uiTaskBar.TaskBar.IS_EXPANDED:
		self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_EXPAND, ui.__mem_func__(self.ToggleExpandedButton))
		self.wndExpandedTaskBar = uiTaskBar.ExpandedTaskBar()
		self.wndExpandedTaskBar.LoadWindow()
		self.wndExpandedTaskBar.SetToggleButtonEvent(uiTaskBar.ExpandedTaskBar.BUTTON_DRAGON_SOUL, ui.__mem_func__(self.ToggleDragonSoulWindow))

	else:
		self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_CHAT, ui.__mem_func__(self.ToggleChat))

	self.wndEnergyBar = None
	import app
	if app.ENABLE_ENERGY_SYSTEM:
		wndEnergyBar = uiTaskBar.EnergyBar()
		wndEnergyBar.LoadWindow()
		self.wndEnergyBar = wndEnergyBar	

 

Il faut ajouter:

 

self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_BONUSGUI, ui.__mem_func__(self.BonusGui))

 

 

En dessous de:

 

self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_SYSTEM, ui.__mem_func__(self.ToggleSystemDialog))

 

 

Et non en dessous de:

 

self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_CHAT, ui.__mem_func__(self.ToggleChat))

 

 

Merci pour ton tutoriel Craven :)

Lien vers le commentaire
Partager sur d’autres sites

  • 4 ans après...
  • 1 mois après...
  • 2 semaines après...
  • 6 mois après...
  • 1 mois après...


  • brilliantdiscord_widget
  • Flux d'Activité

    1. 21

      Metin2 en 2020 peut-on en parler?

    2. 0

      METIN2Project

    3. 3

      Ressources - UnPack - Metin2 Client - Officiel

    4. 0

      Barre des tâches d'argent étendue

    5. 16

      Redémarrage automatique des channels

    6. 16

      Multi Logo GM / SGM / GA

  • En ligne récemment

    • Aucun utilisateur enregistré regarde cette page.

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.