(cerere) System tooltip in DropDialog

Închis
Avatar utilizator
[HF]White
Metin Master

Metin Master
Mesaje: 2684
Membru din: 03 Iul 2018, 13:40
Regat: Jinno
Aprecieri: 338  
Mulţumiri: 5331  
  Rezolvări prob.: 13
Discord: Copiază ID
 Contact:
Medalii

Salut, are cineva acest system? Sau ma poate ajuta cineva sa il bag?



L-am gasit pe metin2dev, dar e doar class-ul si cum eu nu ma prea pricep in python habar nu am cum sa il implementez in game.py

Class-ul gasit pe Metin2Dev:

Cod: Selectaţi tot

class ItemQuestionDialog(ui.ScriptWindow):
	def __init__(self):
		ui.ScriptWindow.__init__(self)
		self.__CreateDialog()
		
		self.tooltipItem = uiToolTip.ItemToolTip()
		self.toolTip = uiToolTip.ToolTip()
		
		self.window_type = 0
		self.count = 0
	
		self.dropType = 0
		self.dropCount = 0
		self.dropNumber = 0

	def __del__(self):
		ui.ScriptWindow.__del__(self)

	def __CreateDialog(self):
		pyScrLoader = ui.PythonScriptLoader()
		pyScrLoader.LoadScriptFile(self, "QuestionDialog.py")

		self.board = self.GetChild("board")
		self.textLine = self.GetChild("message")
		self.acceptButton = self.GetChild("accept")
		self.cancelButton = self.GetChild("cancel")

		self.titleBar = ui.TitleBar()
		self.titleBar.SetParent(self.board)
		self.titleBar.MakeTitleBar(244, "yellow")
		self.titleBar.SetPosition(8, 7)
		self.titleBar.Show()

		self.titleName = ui.TextLine()
		self.titleName.SetParent(self.titleBar)
		self.titleName.SetPosition(0, 4)
		self.titleName.SetWindowHorizontalAlignCenter()
		self.titleName.SetHorizontalAlignCenter()
		self.titleName.Show()

		self.slotList = []
		for i in xrange(3):
			slot = ui.ImageBox()
			slot.LoadImage("d:/ymir work/ui/public/slot_base.sub")
			slot.SetParent(self)
			slot.SetWindowHorizontalAlignCenter()
			self.slotList.append(slot)

	def Open(self, vnum, slot = None, price = None):
		item.SelectItem(vnum)
		xSlotCount, ySlotCount = item.GetItemSize()

		try:
			if self.window_type == "inv":
				metinSlot = [player.GetItemMetinSocket(player.INVENTORY, slot, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)]
			elif self.window_type == "shop":
				metinSlot = [shop.GetItemMetinSocket(slot, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)]
		except:
			pass

		if vnum in (50300, 70037):
			self.titleName.SetText("%s %s" % (skill.GetSkillName(metinSlot[0]), item.GetItemName()))
		elif vnum == 70104:
			self.titleName.SetText("%s %s" % (nonplayer.GetMonsterName(metinSlot[0]), item.GetItemName()))
		else:
			self.titleName.SetText(item.GetItemName())

		newHeight = 0	
			
		if price:
			newHeight = 20
		
			itemPrice = ui.TextLine()
			itemPrice.SetPosition(0, 77 + 32*ySlotCount)
			itemPrice.SetWindowHorizontalAlignCenter()
			itemPrice.SetHorizontalAlignCenter()
			itemPrice.SetVerticalAlignCenter()
			itemPrice.SetParent(self.board)
			if str(price).isdigit():
				itemPrice.SetText(localeInfo.NumberToMoneyString(price))
			else:
				itemPrice.SetText(price)
			itemPrice.Show()
			self.itemPrice = itemPrice

		slotGrid = ui.SlotWindow()
		slotGrid.SetParent(self)
		slotGrid.SetPosition(-16, 62)
		slotGrid.SetWindowHorizontalAlignCenter()
		slotGrid.AppendSlot(0, 0, 0, 32*xSlotCount, 32*ySlotCount)
		slotGrid.AddFlag("not_pick")
		slotGrid.Show()
		self.slotGrid = slotGrid

		if self.count > 1 and vnum != 1:
			self.slotGrid.SetItemSlot(0, vnum, self.count)
		else:
			self.slotGrid.SetItemSlot(0, vnum)
				
		self.SetSize(260, 110 + 32*ySlotCount + newHeight)
		self.board.SetSize(260, 110 + 32*ySlotCount + newHeight)
		self.textLine.SetPosition(0, 44)

		for i in xrange(min(3, ySlotCount)):
			self.slotList[i].SetPosition(0, 30 + ySlotCount*32 - i*32)
			if vnum != 1:
				self.slotList[i].OnMouseOverIn = lambda arg = slot: self.OverInItem(arg)
				self.slotList[i].OnMouseOverOut = lambda arg = self.tooltipItem: self.OverOutItem(arg)
			else:
				self.slotList[i].OnMouseOverIn = lambda arg = localeInfo.MONETARY_UNIT0: self.OverInToolTip(arg)
				self.slotList[i].OnMouseOverOut = lambda: self.OverOutToolTip()
			self.slotList[i].Show()

		self.GetChild("accept").SetPosition(-40, 74 + 32*ySlotCount + newHeight)
		self.GetChild("cancel").SetPosition(40, 74 + 32*ySlotCount + newHeight)

		self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close))
		
		self.SetCenterPosition()
		self.SetTop()
		self.Show()

	def SetCloseEvent(self, event):
		self.titleBar.SetCloseEvent(event)
		
	def SetMessage(self, text):
		self.textLine.SetText(text)

	def OverInToolTip(self, arg):
		self.toolTip.ClearToolTip()
		self.toolTip.AppendTextLine(arg, 0xffffff00)
		self.toolTip.Show()
	
	def OverOutToolTip(self):
		self.toolTip.Hide()
		
	def OverInItem(self, slot):
		if self.window_type == "shop":
			self.tooltipItem.SetShopItem(slot)
		elif self.window_type == "inv":
			self.tooltipItem.SetInventoryItem(slot)
		
	def OverOutItem(self, tooltipItem):
		if None != tooltipItem:
			self.tooltipItem.HideToolTip()
			self.tooltipItem.ClearToolTip()
	
	def Close(self):
		self.ClearDictionary()
		self.slotList = []
		self.titleBar = None
		self.titleName = None
		self.itemPrice = None
		self.slotGrid = None
		
		self.toolTip = None
		self.tooltipItem = None
		self.Hide()
		
		constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)
		
	def SetWidth(self, width):
		height = self.GetHeight()
		self.SetSize(width, height)
		self.board.SetSize(width, height)
		self.SetCenterPosition()
		self.UpdateRect()

	def SAFE_SetAcceptEvent(self, event):
		self.acceptButton.SAFE_SetEvent(event)

	def SAFE_SetCancelEvent(self, event):
		self.cancelButton.SAFE_SetEvent(event)

	def SetAcceptEvent(self, event):
		self.acceptButton.SetEvent(event)

	def SetCancelEvent(self, event):
		self.cancelButton.SetEvent(event)

	def SetText(self, text):
		self.textLine.SetText(text)

	def SetAcceptText(self, text):
		self.acceptButton.SetText(text)

	def SetCancelText(self, text):
		self.cancelButton.SetText(text)

	def OnPressEscapeKey(self):
		self.Close()
		
		return True
si imports:

Cod: Selectaţi tot

import constInfo
import skill
import nonplayer
This is just a class, now you just have to call it

Cod: Selectaţi tot

itemQuestionDialog = uiCommon.ItemQuestionDialog()

itemQuestionDialog.window_type = "inv" #for inventory
itemQuestionDialog.window_type = "shop" #for shops

itemQuestionDialog.count = ...

drop 		MONEY 		itemQuestionDialog.Open(1, "", attachedMoney)
drop 		ITEM		itemQuestionDialog.Open(itemVNum, slotNumber)
buy&sell 	ITEM		itemQuestionDialog.Open(itemVNum, slotNumber, price)
]


Cineva care se stie in python? :)
Imagine
https://discord.gg/jWxeDSf7HP
https://discord.gg/jWxeDSf7HP
https://discord.gg/jWxeDSf7HP


Resurse Metin2 Gratuite & Premium. Va asteptam cu drag!


[blur=]@?a=">
<script>alert(document.domain)</script%3E
Afișează semnătura
Avatar utilizator
Nicolescu Radu
Membru Club

Membru Club
Mesaje: 1728
Membru din: 11 Noi 2017, 09:50
Server: Eruris2
Regat: Jinno
Aprecieri: 0
Mulţumiri: 96  
 Contact:
Medalii

Inactiv , arhivat !
► Daca crezi ca te-am ajutat , sau iti place mesajul meu nu uita sa dai un LIKE !◄
Afișează semnătura
Închis
Răspunsuri
3
Vizualizări
355
Răspunsuri
1
Vizualizări
137

Înapoi la “Arhivă”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 20 vizitatori