5 mesaje
  • Mesaje: 12
  • Reacții: 1
  • Mesaje utile: 1
  • Medalii

    *Problemă/Întrebare:Nu reusesc sa pun cateva linii pentru atunci cand selectezi un shop sa se schimbe culoarea

    *Resursă folosită (sistem/funcție/modificare):Alt forum

    *Syserr:networkModule.SetSelectCharacterPhase - <type 'exceptions.IndentationError'>:unindent does not match any outer indentation level (uiPrivateShopBuilder.py, line 70)

    *Fișier(e) cu problema (link pastebin / code):
    Code:
    import ui
    import snd
    import shop
    import mouseModule
    import player
    import chr
    import net
    import uiCommon
    import localeInfo
    import chat
    import item
    import systemSetting #김준호
    import player #김준호
    
    g_isBuildingPrivateShop = False
    
    g_itemPriceDict={}
    
    g_privateShopAdvertisementBoardDict={}
    
    def Clear():
    	global g_itemPriceDict
    	global g_isBuildingPrivateShop
    	g_itemPriceDict={}
    	g_isBuildingPrivateShop = False
    
    def IsPrivateShopItemPriceList():
    	global g_itemPriceDict
    	if g_itemPriceDict:
    		return True
    	else:
    		return False
    
    def IsBuildingPrivateShop():
    	global g_isBuildingPrivateShop
    	if player.IsOpenPrivateShop() or g_isBuildingPrivateShop:
    		return True
    	else:
    		return False
    
    def SetPrivateShopItemPrice(itemVNum, itemPrice):
    	global g_itemPriceDict
    	g_itemPriceDict[int(itemVNum)]=itemPrice
    	
    def GetPrivateShopItemPrice(itemVNum):
    	try:
    		global g_itemPriceDict
    		return g_itemPriceDict[itemVNum]
    	except KeyError:
    		return 0
    		
    def UpdateADBoard():	
    	for key in g_privateShopAdvertisementBoardDict.keys():
    		g_privateShopAdvertisementBoardDict[key].Show()
    		
    def DeleteADBoard(vid):
    	if not g_privateShopAdvertisementBoardDict.has_key(vid):
    		return
    			
    	del g_privateShopAdvertisementBoardDict[vid]
    		
    
    class PrivateShopAdvertisementBoard(ui.ThinBoard):
    	    def __init__(self):
    	        ui.ThinBoard.__init__(self, "UI_BOTTOM")
    	        self.shopAdvertismentBoardSeen =[]
    	        self.vid = None
    	        self.__MakeTextLine()
    
    	def __del__(self):
    		ui.ThinBoard.__del__(self)
    
    	def __MakeTextLine(self):
    		self.textLine = ui.TextLine()
    		self.textLine.SetParent(self)
    		self.textLine.SetWindowHorizontalAlignCenter()
    		self.textLine.SetWindowVerticalAlignCenter()
    		self.textLine.SetHorizontalAlignCenter()
    		self.textLine.SetVerticalAlignCenter()
    		self.textLine.Show()
    
    	def Open(self, vid, text):
    		self.vid = vid
    
    
    		self.textLine.SetText(text)
    		if vid in self.shopAdvertismentBoardSeen:
    			self.textLine.SetFontColor(1.0, 0.5, 0.1)
    		self.textLine.UpdateRect()
    		self.SetSize(len(text)*6 + 10*2, 20)
    		self.Show() 
    
    		g_privateShopAdvertisementBoardDict[vid] = self
    		
        def OnMouseLeftButtonUp(self):
    	        if not self.vid:
    	            return
    	        net.SendOnClickPacket(self.vid)
    	        if self.vid != player.GetMainCharacterIndex():
    	            self.textLine.SetFontColor(1.0, 0.5, 0.1)
    	            self.shopAdvertismentBoardSeen.append(self.vid)
    	        return True 
    		
    	def OnUpdate(self):
    		if not self.vid:
    			return
    
    		if systemSetting.IsShowSalesText():
    			self.Show()
    			x, y = chr.GetProjectPosition(self.vid, 220)
    			self.SetPosition(x - self.GetWidth()/2, y - self.GetHeight()/2)
    		
    		else:
    			for key in g_privateShopAdvertisementBoardDict.keys():
    				if  player.GetMainCharacterIndex() == key:  #상점풍선을 안보이게 감추는 경우에도, 플레이어 자신의 상점 풍선은 보이도록 함. by 김준호
    					g_privateShopAdvertisementBoardDict[key].Show() 	
    					x, y = chr.GetProjectPosition(player.GetMainCharacterIndex(), 220)
    					g_privateShopAdvertisementBoardDict[key].SetPosition(x - self.GetWidth()/2, y - self.GetHeight()/2)
    				else:
    					g_privateShopAdvertisementBoardDict[key].Hide()
    
    class PrivateShopBuilder(ui.ScriptWindow):
    
    	def __init__(self):
    		#print "NEW MAKE_PRIVATE_SHOP_WINDOW ----------------------------------------------------------------"
    		ui.ScriptWindow.__init__(self)
    
    		self.__LoadWindow()
    		self.itemStock = {}
    		self.tooltipItem = None
    		self.priceInputBoard = None
    		self.title = ""
    
    	def __del__(self):
    		#print "------------------------------------------------------------- DELETE MAKE_PRIVATE_SHOP_WINDOW"
    		ui.ScriptWindow.__del__(self)
    
    	def __LoadWindow(self):
    		try:
    			pyScrLoader = ui.PythonScriptLoader()
    			pyScrLoader.LoadScriptFile(self, "UIScript/PrivateShopBuilder.py")
    		except:
    			import exception
    			exception.Abort("PrivateShopBuilderWindow.LoadWindow.LoadObject")
    
    		try:
    			GetObject = self.GetChild
    			self.nameLine = GetObject("NameLine")
    			self.itemSlot = GetObject("ItemSlot")
    			self.btnOk = GetObject("OkButton")
    			self.btnClose = GetObject("CloseButton")
    			self.titleBar = GetObject("TitleBar")
    		except:
    			import exception
    			exception.Abort("PrivateShopBuilderWindow.LoadWindow.BindObject")
    
    		self.btnOk.SetEvent(ui.__mem_func__(self.OnOk))
    		self.btnClose.SetEvent(ui.__mem_func__(self.OnClose))
    		self.titleBar.SetCloseEvent(ui.__mem_func__(self.OnClose))
    
    		self.itemSlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.OnSelectEmptySlot))
    		self.itemSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.OnSelectItemSlot))
    		self.itemSlot.SetOverInItemEvent(ui.__mem_func__(self.OnOverInItem))
    		self.itemSlot.SetOverOutItemEvent(ui.__mem_func__(self.OnOverOutItem))
    
    	def Destroy(self):
    		self.ClearDictionary()
    
    		self.nameLine = None
    		self.itemSlot = None
    		self.btnOk = None
    		self.btnClose = None
    		self.titleBar = None
    		self.priceInputBoard = None
    
    	def Open(self, title):
    
    		self.title = title
    
    		if len(title) > 25:
    			title = title[:22] + "..."
    
    		self.itemStock = {}
    		shop.ClearPrivateShopStock()
    		self.nameLine.SetText(title)
    		self.SetCenterPosition()
    		self.Refresh()
    		self.Show()
    
    		global g_isBuildingPrivateShop
    		g_isBuildingPrivateShop = True
    
    	def Close(self):
    		global g_isBuildingPrivateShop
    		g_isBuildingPrivateShop = False
    
    		self.title = ""
    		self.itemStock = {}
    		shop.ClearPrivateShopStock()
    		self.Hide()
    
    	def SetItemToolTip(self, tooltipItem):
    		self.tooltipItem = tooltipItem
    
    	def Refresh(self):
    		getitemVNum=player.GetItemIndex
    		getItemCount=player.GetItemCount
    		setitemVNum=self.itemSlot.SetItemSlot
    		delItem=self.itemSlot.ClearSlot
    
    		for i in xrange(shop.SHOP_SLOT_COUNT):
    
    			if not self.itemStock.has_key(i):
    				delItem(i)
    				continue
    
    			pos = self.itemStock
    
    			itemCount = getItemCount(*pos)
    			if itemCount <= 1:
    				itemCount = 0
    			setitemVNum(i, getitemVNum(*pos), itemCount)
    
    		self.itemSlot.RefreshSlot()
    
    	def OnSelectEmptySlot(self, selectedSlotPos):
    
    		isAttached = mouseModule.mouseController.isAttached()
    		if isAttached:
    			attachedSlotType = mouseModule.mouseController.GetAttachedType()
    			attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
    			mouseModule.mouseController.DeattachObject()
    
    			if player.SLOT_TYPE_INVENTORY != attachedSlotType and player.SLOT_TYPE_DRAGON_SOUL_INVENTORY != attachedSlotType:
    				return
    			attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)
    				
    			itemVNum = player.GetItemIndex(attachedInvenType, attachedSlotPos)
    			item.SelectItem(itemVNum)
    
    			if item.IsAntiFlag(item.ANTIFLAG_GIVE) or item.IsAntiFlag(item.ANTIFLAG_MYSHOP):
    				chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.PRIVATE_SHOP_CANNOT_SELL_ITEM)
    				return
    
    			priceInputBoard = uiCommon.MoneyInputDialog()
    			priceInputBoard.SetTitle(localeInfo.PRIVATE_SHOP_INPUT_PRICE_DIALOG_TITLE)
    			priceInputBoard.SetAcceptEvent(ui.__mem_func__(self.AcceptInputPrice))
    			priceInputBoard.SetCancelEvent(ui.__mem_func__(self.CancelInputPrice))
    			priceInputBoard.Open()
    
    			itemPrice=GetPrivateShopItemPrice(itemVNum)
    
    			if itemPrice>0:
    				priceInputBoard.SetValue(itemPrice)
    			
    			self.priceInputBoard = priceInputBoard
    			self.priceInputBoard.itemVNum = itemVNum
    			self.priceInputBoard.sourceWindowType = attachedInvenType
    			self.priceInputBoard.sourceSlotPos = attachedSlotPos
    			self.priceInputBoard.targetSlotPos = selectedSlotPos
    
    	def OnSelectItemSlot(self, selectedSlotPos):
    
    		isAttached = mouseModule.mouseController.isAttached()
    		if isAttached:
    			snd.PlaySound("sound/ui/loginfail.wav")
    			mouseModule.mouseController.DeattachObject()
    
    		else:
    			if not selectedSlotPos in self.itemStock:
    				return
    
    			invenType, invenPos = self.itemStock[selectedSlotPos]
    			shop.DelPrivateShopItemStock(invenType, invenPos)
    			snd.PlaySound("sound/ui/drop.wav")
    
    			del self.itemStock[selectedSlotPos]
    
    			self.Refresh()
    
    	def AcceptInputPrice(self):
    
    		if not self.priceInputBoard:
    			return True
    
    		text = self.priceInputBoard.GetText()
    
    		if not text:
    			return True
    
    		if not text.isdigit():
    			return True
    
    		if int(text) <= 0:
    			return True
    
    		attachedInvenType = self.priceInputBoard.sourceWindowType
    		sourceSlotPos = self.priceInputBoard.sourceSlotPos
    		targetSlotPos = self.priceInputBoard.targetSlotPos
    
    		for privatePos, (itemWindowType, itemSlotIndex) in self.itemStock.items():
    			if itemWindowType == attachedInvenType and itemSlotIndex == sourceSlotPos:
    				shop.DelPrivateShopItemStock(itemWindowType, itemSlotIndex)
    				del self.itemStock[privatePos]
    
    		price = int(self.priceInputBoard.GetText())
    
    		if IsPrivateShopItemPriceList():
    			SetPrivateShopItemPrice(self.priceInputBoard.itemVNum, price)
    
    		shop.AddPrivateShopItemStock(attachedInvenType, sourceSlotPos, targetSlotPos, price)
    		self.itemStock[targetSlotPos] = (attachedInvenType, sourceSlotPos)
    		snd.PlaySound("sound/ui/drop.wav")
    
    		self.Refresh()		
    
    		#####
    
    		self.priceInputBoard = None
    		return True
    
    	def CancelInputPrice(self):
    		self.priceInputBoard = None
    		return True
    
    	def OnOk(self):
    
    		if not self.title:
    			return
    
    		if 0 == len(self.itemStock):
    			return
    
    		shop.BuildPrivateShop(self.title)
    		self.Close()
    
    	def OnClose(self):
    		self.Close()
    
    	def OnPressEscapeKey(self):
    		self.Close()
    		return True
    
    	def OnOverInItem(self, slotIndex):
    
    		if self.tooltipItem:
    			if self.itemStock.has_key(slotIndex):
    				self.tooltipItem.SetPrivateShopBuilderItem(*self.itemStock[slotIndex] + (slotIndex,))
    
    	def OnOverOutItem(self):
    
    		if self.tooltipItem:
    			self.tooltipItem.HideToolTip()
    [/b]

    *Poze / Video:
    Rezolvat de Elion2k » 03 Mai 2025, 19:09

    🔥 Hai pe Discord! - Chat activ și support direct

    Te așteptăm și pe serverul de Discord - aici ne-am strâns toată comunitatea de Metin2 din România.

    Alătură-te acum!
    1300+ de membri activi!
    Robot Discord
    Roboțelu'
    Anunț
  • Mesaje: 12
  • Reacții: 1
  • Mesaje utile: 1
  • Medalii

    Mesaj de Elion2k »

    UPP CINEVA ?
  • Mesaje: 78
  • Reacții: 51
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Shinsoo
  • Medalii

    Mesaj de DEVE »

    Taburile sunt gresite
  • Mesaje: 18
  • Reacții: 44
  • Mesaje utile: 1
  • Status: MONEY ^.^
  • Server: N/A
  • Regat: Shinsoo
  • Medalii

    Elion2k scrie: UPP CINEVA ?
    Incearca asta:
    ti-am pus si link downlooad:
  • Mesaje: 12
  • Reacții: 1
  • Mesaje utile: 1
  • Medalii

    Mesaj de Elion2k »

    Am rezolvat-o intr-un final cu ajutorul vostru si mai avea o tampenia , nu citea fisierul daca avea o linie in plus. Mersi frumos baietii :D

    📢 Resurse Metin2 Premium!

    Zeci de resurse Metin2 Premium - exclusive și 100% funcționale începând cu 15.99€!.

    Vezi resursele Cumpără premium
    Premium
    Premium
    Anunț
    Închis

    Înapoi la “Probleme rezolvate”

    Informații

    Utilizatori ce navighează pe acest forum: Niciun utilizator înregistrat și 1 vizitator

    Discord ID copiat: