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

Python / LUA - Banquier sous forme de GUI


Messages recommandés

  • Retraité

Centre de Téléchargement

Hidden Content

    Give reaction to this post to see the hidden content.
( Interne )

Bonjour,

 

Je viens de trouver un système sympathique sur epvp qui permet de transférer vos yangs a un autre personnage présent sur le même compte,

et le banquier traditionnelle qui stock vos yangs bien évidemment,

et tout ca, en passant par une gui qui sera ffichable n'importe ou sans avoir à cliquer sur un Pnj , simplement par un raccourci !

 

Révélation

0441360glRe.png 0441367wIXd.png 044136JNxbf.png

 

Oui les screens sont en allemand mais j'ai pris la peine de tout vous traduire :o

 

--------------------------------------------

PARTIE : Tutoriel installation de la gui

--------------------------------------------

 

- Ouvrez naviat, allez dans player et player.

Faites un Ctrl + D et créez la colonne comme ceci :

 

Name : bank

Type : int

Lenght : 255

Decimals : 0

 

Pensez à faire une sauvegarde au cas ou !

 

- Ensuite, munissez vous d'un depacker, et extrayez root .

Allez dans le fichier constinfo.py et rajoutez ceci :

load_bank_einzahlen = 0
load_bank_abheben = 0
load_bank_uberweisen = 0
load_bank_abfragen = 0
bank = 0
yang_input = 0
 

 

 

- Maintenant, allez dans le fichier game.py et cherchez :

def __ServerCommand_Build(self):
	serverCommandList={ 
 

 

( Conseil : Dans notepad ++ , faites CTRL + F => rechercher => tapez : def __ServerCommand_Build(self): en disant d'aller chercher cette ligne vers le bas )

 

Une fois trouvé, rajoutez ceci juste aprés :

"bank_einzahlen"		: self.__bank_einzahlen,
		"bank_abheben"			: self.__bank_abheben,
		"bank_uberweisen"		: self.__bank_uberweisen,
		"bank_abfragen"			: self.__bank_abfragen, 
 

 

 

- Toujours par la même technique que je vous ai enseigné, recherchez cette ligne :

onPressKeyDict[app.DIK_F4]	= lambda : self.__PressQuickSlot(7)
 

 

 

Et rajoutez ceci :

onPressKeyDict[app.DIK_U]	= lambda : self.__money_in_bank()
	onPressKeyDict[app.DIK_F7]	= lambda : self._open_bank_() 
 

 

/!\ app.DIK_U ----- [app.DIK_F7] ------ Ca veut dire que si vous appuyez soit sur U ou sur F7 la gui s'affichera.

Vous pouvez modifier la lettre U par F8 par exemple et et F7 par F11 , vous faites ce que vous voulez tant que ces raccourcis

ne sont pas utilisés sur le jeu.

 

 

- Pour terminer, rajoutez a la fin de game.py ceci :

def __bank_einzahlen(self, id):
	constInfo.load_bank_einzahlen = int(id)

def __bank_abheben(self, id):
	constInfo.load_bank_abheben = int(id)

def __bank_uberweisen(self, id):
	constInfo.load_bank_uberweisen = int(id)

def __bank_abfragen(self, id):
	constInfo.load_bank_abfragen = int(id)

def _open_bank_(self):
	if constInfo.bank == 0:
		self.__Bank()
		constInfo.bank = 1
		return
	if constInfo.bank == 1:
		self.bank.Hide()
		constInfo.bank = 0
def __Bank(self):
	self.bank = ui.BoardWithTitleBar()
	self.bank.SetSize(180, 100)
	self.bank.SetCenterPosition()
	self.bank.AddFlag('movable')
	self.bank.AddFlag('float')
	self.bank.SetTitleName('Banque')
	self.bank.SetCloseEvent(self._bank_close)
	self.bank.Show()

	self.bank_Einzahlen = ui.Button()
	self.bank_Einzahlen.SetEvent(self._bank_einzahlen)
	self.bank_Einzahlen.SetParent(self.bank)
	self.bank_Einzahlen.SetPosition(20, 35)
	self.bank_Einzahlen.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub")
	self.bank_Einzahlen.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub")
	self.bank_Einzahlen.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub")
	self.bank_Einzahlen.SetText("Dépôt")
	self.bank_Einzahlen.SetToolTipText("Stocker les yangs dans la banque")
	self.bank_Einzahlen.Show()

	self.bank_Abheben = ui.Button()
	self.bank_Abheben.SetEvent(self._bank_abheben)
	self.bank_Abheben.SetParent(self.bank)
	self.bank_Abheben.SetPosition(100, 35)
	self.bank_Abheben.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub")
	self.bank_Abheben.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub")
	self.bank_Abheben.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub")
	self.bank_Abheben.SetText("Retirer")
	self.bank_Abheben.SetToolTipText("Retirer des yangs de votre banque")
	self.bank_Abheben.Show()

	self.bank_Abfragen = ui.Button()
	self.bank_Abfragen.SetEvent(self._bank_abfragen)
	self.bank_Abfragen.SetParent(self.bank)
	self.bank_Abfragen.SetPosition(20, 65)
	self.bank_Abfragen.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub")
	self.bank_Abfragen.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub")
	self.bank_Abfragen.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub")
	self.bank_Abfragen.SetText("Retirer")
	self.bank_Abfragen.SetToolTipText("Voir l'etat de votre compte")
	self.bank_Abfragen.Show()

	self.bank_uberweisen = ui.Button()
	self.bank_uberweisen.SetEvent(self._bank_uberweisen)
	self.bank_uberweisen.SetParent(self.bank)
	self.bank_uberweisen.SetPosition(100, 65)
	self.bank_uberweisen.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub")
	self.bank_uberweisen.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub")
	self.bank_uberweisen.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub")
	self.bank_uberweisen.SetText("Transférer")
	self.bank_uberweisen.SetToolTipText("Transférer des yangs a un autre joueur")
	self.bank_uberweisen.Show()
def _bank_einzahlen(self):
	self.bank.SetTitleName('Dépôt')
	self.bank.SetSize(125, 100)
	self.bank_Einzahlen.Hide()
	self.bank_Abheben.Hide()
	self.bank_Abfragen.Hide()
	self.bank_uberweisen.Hide()

	self.bank_YangSlotBar = ui.SlotBar()
	self.bank_YangSlotBar.SetParent(self.bank)
	self.bank_YangSlotBar.SetSize(60, 15)
	self.bank_YangSlotBar.SetPosition(15, 35)
	self.bank_YangSlotBar.SetWindowHorizontalAlignCenter()
	self.bank_YangSlotBar.Show()

	self.bank_Yang = ui.EditLine()
	self.bank_Yang.SetParent(self.bank_YangSlotBar)
	self.bank_Yang.SetSize(60, 15)
	self.bank_Yang.SetPosition(4, 1)
	self.bank_Yang.SetMax(10)
	self.bank_Yang.SetNumberMode()
	self.bank_Yang.SetText(constInfo.yang_input)
	self.bank_Yang.SetFocus()		
	self.bank_Yang.Show()

	self.bank_yang_text = ui.TextLine()
	self.bank_yang_text.SetParent(self.bank)
	self.bank_yang_text.SetDefaultFontName()
	self.bank_yang_text.SetPosition(15, 35)
	self.bank_yang_text.SetFeather()
	self.bank_yang_text.SetText("Yang: ")
	self.bank_yang_text.SetOutline()
	self.bank_yang_text.Show()	

	self.bank_Annehmen = ui.Button()
	self.bank_Annehmen.SetParent(self.bank)
	self.bank_Annehmen.SetEvent(self.bank_annehmen)
	self.bank_Annehmen.SetPosition(15, 60)
	self.bank_Annehmen.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub")
	self.bank_Annehmen.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub")
	self.bank_Annehmen.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub")
	self.bank_Annehmen.SetText("Déposer")
	self.bank_Annehmen.SetToolTipText("Mettez vos yangs ici")
	self.bank_Annehmen.Show()
def _bank_abheben(self):
	self.bank.SetTitleName('Retirer')
	self.bank.SetSize(130, 100)
	self.bank_Einzahlen.Hide()
	self.bank_Abheben.Hide()
	self.bank_Abfragen.Hide()
	self.bank_uberweisen.Hide()

	self.bank_YangSlotBar = ui.SlotBar()
	self.bank_YangSlotBar.SetParent(self.bank)
	self.bank_YangSlotBar.SetSize(60, 15)
	self.bank_YangSlotBar.SetPosition(15, 35)
	self.bank_YangSlotBar.SetWindowHorizontalAlignCenter()
	self.bank_YangSlotBar.Show()

	self.bank_Yang = ui.EditLine()
	self.bank_Yang.SetParent(self.bank_YangSlotBar)
	self.bank_Yang.SetSize(60, 15)
	self.bank_Yang.SetPosition(4, 1)
	self.bank_Yang.SetMax(10)
	self.bank_Yang.SetNumberMode()
	self.bank_Yang.SetText(constInfo.yang_input)
	self.bank_Yang.SetFocus()		
	self.bank_Yang.Show()

	self.bank_yang_text = ui.TextLine()
	self.bank_yang_text.SetParent(self.bank)
	self.bank_yang_text.SetDefaultFontName()
	self.bank_yang_text.SetPosition(15, 35)
	self.bank_yang_text.SetFeather()
	self.bank_yang_text.SetText("Yang: ")
	self.bank_yang_text.SetOutline()
	self.bank_yang_text.Show()	

	self.bank_Annehmen = ui.Button()
	self.bank_Annehmen.SetParent(self.bank)
	self.bank_Annehmen.SetEvent(self.bank_annehmen_b)
	self.bank_Annehmen.SetPosition(15, 60)
	self.bank_Annehmen.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub")
	self.bank_Annehmen.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub")
	self.bank_Annehmen.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub")
	self.bank_Annehmen.SetText("Déposer")
	self.bank_Annehmen.SetToolTipText("Selectionner le nombre de yangs")
	self.bank_Annehmen.Show()
def _bank_abfragen(self):
	event.QuestButtonClick(constInfo.load_bank_abfragen)
def _bank_uberweisen(self):
	self.bank.SetTitleName('Transférer)
	self.bank.SetSize(160, 145)
	self.bank_Einzahlen.Hide()
	self.bank_Abheben.Hide()
	self.bank_Abfragen.Hide()
	self.bank_uberweisen.Hide()

	self.bank_yang_text = ui.TextLine()
	self.bank_yang_text.SetParent(self.bank)
	self.bank_yang_text.SetDefaultFontName()
	self.bank_yang_text.SetPosition(15, 35)
	self.bank_yang_text.SetFeather()
	self.bank_yang_text.SetText("Yang: ")
	self.bank_yang_text.SetOutline()
	self.bank_yang_text.Show()	

	self.bank_empfanger_text = ui.TextLine()
	self.bank_empfanger_text.SetParent(self.bank)
	self.bank_empfanger_text.SetDefaultFontName()
	self.bank_empfanger_text.SetPosition(15, 60)
	self.bank_empfanger_text.SetFeather()
	self.bank_empfanger_text.SetText("Empfänger: ")
	self.bank_empfanger_text.SetOutline()
	self.bank_empfanger_text.Show()	

	self.bank_YangSlotBar = ui.SlotBar()
	self.bank_YangSlotBar.SetParent(self.bank)
	self.bank_YangSlotBar.SetSize(72, 15)
	self.bank_YangSlotBar.SetPosition(30, 35)
	self.bank_YangSlotBar.SetWindowHorizontalAlignCenter()
	self.bank_YangSlotBar.Show()

	self.bank_Yang = ui.EditLine()
	self.bank_Yang.SetParent(self.bank_YangSlotBar)
	self.bank_Yang.SetSize(72, 15)
	self.bank_Yang.SetPosition(4, 1)
	self.bank_Yang.SetMax(12)
	self.bank_Yang.SetNumberMode()
	self.bank_Yang.SetText(constInfo.yang_input)
	self.bank_Yang.SetFocus()		
	self.bank_Yang.Show()

	self.bank_EmpfangerSlotBar = ui.SlotBar()
	self.bank_EmpfangerSlotBar.SetParent(self.bank)
	self.bank_EmpfangerSlotBar.SetSize(72, 15)
	self.bank_EmpfangerSlotBar.SetPosition(30, 60)
	self.bank_EmpfangerSlotBar.SetWindowHorizontalAlignCenter()
	self.bank_EmpfangerSlotBar.Show()

	self.bank_Empfanger = ui.EditLine()
	self.bank_Empfanger.SetParent(self.bank_EmpfangerSlotBar)
	self.bank_Empfanger.SetSize(72, 15)
	self.bank_Empfanger.SetPosition(4, 1)
	self.bank_Empfanger.SetMax(12)
	self.bank_Empfanger.Show()

	self.from_bank_pressed = ui.Button()
	self.from_bank_pressed.SetParent(self.bank)
	self.from_bank_pressed.SetPosition(15, 85)
	self.from_bank_pressed.SetUpVisual("d:/ymir work/ui/public/middle_button_03.sub")
	self.from_bank_pressed.SetOverVisual("d:/ymir work/ui/public/middle_button_03.sub")
	self.from_bank_pressed.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub")
	self.from_bank_pressed.SetEvent(self.from_bank)
	self.from_bank_pressed.SetToolTipText("Nimmt den angegebenen Betrag von der Bank")
	self.from_bank_pressed.SetText("Vers la banque")
	self.from_bank_pressed.Hide()

	self.from_inven_pressed = ui.Button()
	self.from_inven_pressed.SetParent(self.bank)
	self.from_inven_pressed.SetPosition(80, 85)
	self.from_inven_pressed.SetUpVisual("d:/ymir work/ui/public/middle_button_03.sub")
	self.from_inven_pressed.SetOverVisual("d:/ymir work/ui/public/middle_button_03.sub")
	self.from_inven_pressed.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub")
	self.from_inven_pressed.SetEvent(self.from_inven)
	self.from_inven_pressed.SetToolTipText("Nimmt den angegebenen Betrag aus deinem Inventar")
	self.from_inven_pressed.SetText("Vers l'inventaire")
	self.from_inven_pressed.Show()

	self.from_bank_not_pressed = ui.Button()
	self.from_bank_not_pressed.SetParent(self.bank)
	self.from_bank_not_pressed.SetPosition(15, 85)
	self.from_bank_not_pressed.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub")
	self.from_bank_not_pressed.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub")
	self.from_bank_not_pressed.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub")
	self.from_bank_not_pressed.SetEvent(self.from_bank)
	self.from_bank_not_pressed.SetToolTipText("Nimmt den angegebenen Betrag von der Bank")
	self.from_bank_not_pressed.SetText("Vers la banque")
	self.from_bank_not_pressed.Show()

	self.from_inven_not_pressed = ui.Button()
	self.from_inven_not_pressed.SetParent(self.bank)
	self.from_inven_not_pressed.SetPosition(80, 85)
	self.from_inven_not_pressed.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub")
	self.from_inven_not_pressed.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub")
	self.from_inven_not_pressed.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub")
	self.from_inven_not_pressed.SetEvent(self.from_inven)
	self.from_inven_not_pressed.SetToolTipText("Nimmt den angegebenen Betrag aus deinem Inventar")
	self.from_inven_not_pressed.SetText("Vers l'inventaire")
	self.from_inven_not_pressed.Hide()

	self.Themp = ui.EditLine()
	self.Themp.SetMax(1)
	self.Themp.SetText("0")		
	self.Themp.Hide()

	self.bank_Annehmen = ui.Button()
	self.bank_Annehmen.SetParent(self.bank)
	self.bank_Annehmen.SetEvent(self.bank_annehmen_c)
	self.bank_Annehmen.SetPosition(15, 110)
	self.bank_Annehmen.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub")
	self.bank_Annehmen.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub")
	self.bank_Annehmen.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub")
	self.bank_Annehmen.SetText("Déposer")
	self.bank_Annehmen.SetToolTipText('Transférer le montant')
	self.bank_Annehmen.Show()
def bank_annehmen(self):
	constInfo.yang_input = self.bank_Yang.GetText()
	event.QuestButtonClick(constInfo.load_bank_einzahlen)
	net.SendQuestInputStringPacket(self.bank_Yang.GetText())
def bank_annehmen_b(self):
	constInfo.yang_input = self.bank_Yang.GetText()
	event.QuestButtonClick(constInfo.load_bank_abheben)
	net.SendQuestInputStringPacket(self.bank_Yang.GetText())
def bank_annehmen_c(self):
	constInfo.yang_input = self.bank_Yang.GetText()
	event.QuestButtonClick(constInfo.load_bank_uberweisen)
	net.SendQuestInputStringPacket(self.bank_Yang.GetText())		
	net.SendQuestInputStringPacket(self.bank_Empfanger.GetText())
	net.SendQuestInputStringPacket(self.Themp.GetText())
def from_bank(self):
	self.from_bank_pressed.Show()
	self.from_bank_not_pressed.Hide()
	self.from_inven_pressed.Hide()
	self.from_inven_not_pressed.Show()
	self.Themp.SetText("1")
def from_inven(self):
	self.from_bank_pressed.Hide()
	self.from_bank_not_pressed.Show()
	self.from_inven_pressed.Show()
	self.from_inven_not_pressed.Hide()		
	self.Themp.SetText("0")	
def _bank_close(self):
	self.bank.Hide()
	constInfo.bank = 0 
 

 

 

- Non non non, ce n'est pas terminé , bande de fénéants 🆒

Il vous reste ces quêtes que j'ai traduite à mettre sur votre serveur afin d'assurer le bon déroulement des transferts, c'est pas magique :mad:

 

quest bank_af begin
state start begin
	when login begin
		cmdchat("bank_abfragen "..q.getcurrentquestindex())
	end
	when info or button begin
		chat("Vous avez "..mysql_query("SELECT bank FROM player.player WHERE name = '"..pc.get_name().."' LIMIT 1;").bank[1].." yangs dans votre banque.")
	end
end
end
 

 

quest bank_az begin
state start begin
	when login begin
		cmdchat("bank_abheben "..q.getcurrentquestindex())
	end
	when info or button begin
		a = tonumber(getinput("getinput"))
		b = tonumber(mysql_query("SELECT bank FROM player.player WHERE name = '"..pc.get_name().."' LIMIT 1;").bank[1])
		if (pc.get_gold() + a) >= 2000000000 then
			chat("Les yangs de l'inventaire sont pleins.")
		elseif b < a then
			chat("Pas assez de Yang dans la banque")				
		else
			chat("Réalisée avec succès")
			pc.change_gold(a)
			mysql_query("UPDATE player.player SET bank = bank - "..a.." WHERE name = '"..pc.get_name().."' LIMIT 1;")
		end
	end
end
end
 

 

quest bank_ez begin
state start begin
	when login begin
		cmdchat("bank_einzahlen "..q.getcurrentquestindex())
	end
	when info or button begin
		a = getinput("getinput")
		if pc.get_gold() >= tonumber(a) then
			mysql_query("UPDATE player.player SET bank = bank + "..a.." WHERE name = '"..pc.get_name().."' LIMIT 1;")
			chat("Réalisée avec succès")
			pc.change_gold(-a)
		else
			chat("Vous n'avez pas assez de Yang.")
		end
	end
end
end
 

 

quest bank_uw begin
state start begin
	when login begin
		cmdchat("bank_uberweisen "..q.getcurrentquestindex())
	end
	when info or button begin
		local yang = tonumber(getinput("getinput"))
		local empfanger = tostring(getinput("getinput"))
		local way = tonumber(getinput("getinput"))
		if table.getn(mysql_query("SELECT name FROM player.player where name = '"..empfanger.."' LIMIT 1;").name) != 1 then
			chat("Le joueur spécifié est introuvable.")
			return
		elseif way == 0 then
			local myyang = pc.get_gold()
			if yang > myyang then
				chat("Vous n'avez pas assez de yangs.")
				return
			else
				pc.change_gold(-yang)
				mysql_query("UPDATE player.player SET bank = bank + "..yang.." WHERE name = '"..empfanger.."' LIMIT 1;")
				chat("Réalisée avec succès")
				return
			end
		elseif way == 1 then
			local myyang = tonumber(mysql_query("SELECT bank FROM player.player WHERE name = '"..pc.get_name().."' LIMIT 1;").bank[1])
			local myyang = pc.get_gold()
			if yang > myyang then
				chat("Vous n'avez pas assez de yangs.")
				return
			else
				mysql_query("UPDATE player.player SET bank = bank - "..yang.." WHERE name = '"..pc.get_name().."' LIMIT 1;")
				mysql_query("UPDATE player.player SET bank = bank + "..yang.." WHERE name = '"..empfanger.."' LIMIT 1;")
				chat("Réalisée avec succès !")
				return
			end
		end
	end
end
end
 

- Oh et puis j'allais oublier, pensez à reboot afin de prendre en compte la nouvelle colonne créé !

 

Vous pouvez maintenant vous amusez avec cette gui.

Faites la découvrir à vos joueurs, ils seront séduits par son efficacité.

Plus besoin de créer un autre compte pour transférer ces yangs.

Plus besoin de retournez map 1 pour voir le pnj.

Plus besoin d'utiliser d'anneau de banquier.

Plus rapide, plus efficace, plus pratique, bonne émulation !

  • Metin2 Dev 2
Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 5
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

  • Retraité
Oui les screens sont en allemand mais j'ai pris la peine de tout vous traduire :o

Il vous reste ces quêtes que j'ai traduite à mettre sur votre serveur afin d'assurer le bon déroulement des transferts, c'est pas magique Mad

 

Pourquoi me dis tu " Ou est ton travail " ?

Je sais pas, je partage quelque chose voila comment tu me remercie :P bref j'ai tout traduit rassure toi

Lien vers le commentaire
Partager sur d’autres sites

  • 4 mois après...


  • brilliantdiscord_widget
  • Flux d'Activité

    1. 37
    2. 21

      Metin2 en 2020 peut-on en parler?

    3. 0

      METIN2Project

    4. 3

      Ressources - UnPack - Metin2 Client - Officiel

    5. 0

      Barre des tâches d'argent étendue

    6. 16

      Redémarrage automatique des channels

    7. 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.