Çözüldü Aksesuar özelliklerinde görünüm eksikliği Sorunu,

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

tayfun5110191

Üye
Üye
Mesaj
101
Çözümler
4
Beğeni
50
Puan
724
Ticaret Puanı
0
Merhabalar , biliyorsunuz bu safir , turmalin , grena vb. madenler mevcut , bunları bilezik gibi iç itemlere ekleyebiliyoruz. Bir çoğunuzda bu madenleri ekledikten sonra verdikleri karakterlere karşı savunma yazmıyor.

Bu özelliklerin yazmamasının nedenini araştırdım ve bir forumda buldum sırasıyla aşağıdaki kodları uyguladım ve sorunu çözdüm.
@Whistle bu sorunu yardımınla çözebilirsek fixli halini burada paylaşabiliriz.
uitoltip.py
Uygulanan kodlar ;
arat ;
Python:
def __AppendAccessoryMetinSlotInfo

Fonksiyonu değiştir ;
Python:
    def __AppendAccessoryMetinSlotInfo(self, metinSlot, mtrlVnum):      
        ACCESSORY_SOCKET_MAX_SIZE = 4      

        cur=min(metinSlot[0], ACCESSORY_SOCKET_MAX_SIZE)
        end=min(metinSlot[1], ACCESSORY_SOCKET_MAX_SIZE)

        affectType1, affectValue1 = item.GetAffect(0)
        affectList1=[0, max(1, affectValue1*10/100), max(2, affectValue1*20/100), max(3, affectValue1*40/100), max(4, affectValue1*60/100)]

        affectType2, affectValue2 = item.GetAffect(1)
        affectList2=[0, max(1, affectValue2*10/100), max(2, affectValue2*20/100), max(3, affectValue2*40/100), max(4, affectValue1*60/100)]

        affectType3, affectValue3 = item.GetAffect(2)
        affectList3=[0, max(1, affectValue3*10/100), max(2, affectValue3*20/100), max(3, affectValue3*40/100), max(4, affectValue1*60/100)]


        mtrlPos=0
        mtrlList=[mtrlVnum]*cur+[player.METIN_SOCKET_TYPE_SILVER]*(end-cur)
        for mtrl in mtrlList:
            affectString1 = self.__GetAffectString(affectType1, affectList1[mtrlPos+1]-affectList1[mtrlPos])          
            affectString2 = self.__GetAffectString(affectType2, affectList2[mtrlPos+1]-affectList2[mtrlPos])
            affectString3 = self.__GetAffectString(affectType3, affectList3[mtrlPos+1]-affectList3[mtrlPos])          
            leftTime = 0
            if cur == mtrlPos+1:
                leftTime=metinSlot[2]

            self.__AppendMetinSlotInfo_AppendMetinSocketData(mtrlPos, mtrl, affectString1, affectString2 ,affectString3, leftTime)
            mtrlPos+=1

Arat ;
Python:
def __AppendMetinSlotInfo_AppendMetinSocketData

Fonksiyonu değiştir ;
Python:
    def __AppendMetinSlotInfo_AppendMetinSocketData(self, index, metinSlotData, custumAffectString="", custumAffectString2="", custumAffectString3="",leftTime=0):

        slotType = self.GetMetinSocketType(metinSlotData)
        itemIndex = self.GetMetinItemIndex(metinSlotData)

        if 0 == slotType:
            return

        self.AppendSpace(5)

        slotImage = ui.ImageBox()
        slotImage.SetParent(self)
        slotImage.Show()

        ## Name
        nameTextLine = ui.TextLine()
        nameTextLine.SetParent(self)
        nameTextLine.SetFontName(self.defFontName)
        nameTextLine.SetPackedFontColor(self.NORMAL_COLOR)
        nameTextLine.SetOutline()
        nameTextLine.SetFeather()
        nameTextLine.Show()          

        self.childrenList.append(nameTextLine)

        if player.METIN_SOCKET_TYPE_SILVER == slotType:
            slotImage.LoadImage("d:/ymir work/ui/game/windows/metin_slot_silver.sub")
        elif player.METIN_SOCKET_TYPE_GOLD == slotType:
            slotImage.LoadImage("d:/ymir work/ui/game/windows/metin_slot_gold.sub")

        self.childrenList.append(slotImage)
       
        if localeInfo.IsARABIC():
            slotImage.SetPosition(self.toolTipWidth - slotImage.GetWidth() - 9, self.toolTipHeight-1)
            nameTextLine.SetPosition(self.toolTipWidth - 50, self.toolTipHeight + 2)
        else:
            slotImage.SetPosition(9, self.toolTipHeight-1)
            nameTextLine.SetPosition(50, self.toolTipHeight + 2)

        metinImage = ui.ImageBox()
        metinImage.SetParent(self)
        metinImage.Show()
        self.childrenList.append(metinImage)

        if itemIndex:

            item.SelectItem(itemIndex)

            ## Image
            try:
                metinImage.LoadImage(item.GetIconImageFileName())
            except:
                dbg.TraceError("ItemToolTip.__AppendMetinSocketData() - Failed to find image file %d:%s" %
                    (itemIndex, item.GetIconImageFileName())
                )

            nameTextLine.SetText(item.GetItemName())
           
            ## Affect      
            affectTextLine = ui.TextLine()
            affectTextLine.SetParent(self)
            affectTextLine.SetFontName(self.defFontName)
            affectTextLine.SetPackedFontColor(self.POSITIVE_COLOR)
            affectTextLine.SetOutline()
            affectTextLine.SetFeather()
            affectTextLine.Show()          
               
            if localeInfo.IsARABIC():
                metinImage.SetPosition(self.toolTipWidth - metinImage.GetWidth() - 10, self.toolTipHeight)
                affectTextLine.SetPosition(self.toolTipWidth - 50, self.toolTipHeight + 16 + 2)
            else:
                metinImage.SetPosition(10, self.toolTipHeight)
                affectTextLine.SetPosition(50, self.toolTipHeight + 16 + 2)
                           
            if custumAffectString:
                affectTextLine.SetText(custumAffectString)
            elif itemIndex!=constInfo.ERROR_METIN_STONE:
                for i in xrange(item.ITEM_APPLY_MAX_NUM):
                    (affectType, affectValue) = item.GetAffect(i)
                    affectString = self.__GetAffectString(affectType, affectValue)
                    if affectString:
                        self.AppendSpace(20)
                        self.StoneAppendTextLine(affectString, self.GetChangeTextLineColor(affectValue))
            else:
                affectTextLine.SetText(localeInfo.TOOLTIP_APPLY_NOAFFECT)
           
            self.childrenList.append(affectTextLine)          

            if custumAffectString2:
                affectTextLine = ui.TextLine()
                affectTextLine.SetParent(self)
                affectTextLine.SetFontName(self.defFontName)
                affectTextLine.SetPackedFontColor(self.POSITIVE_COLOR)
                affectTextLine.SetPosition(50, self.toolTipHeight + 16 + 2 + 16 + 2)
                affectTextLine.SetOutline()
                affectTextLine.SetFeather()
                affectTextLine.Show()
                affectTextLine.SetText(custumAffectString2)
                self.childrenList.append(affectTextLine)
                self.toolTipHeight += 16 + 2

            if custumAffectString3:
                affectTextLine = ui.TextLine()
                affectTextLine.SetParent(self)
                affectTextLine.SetFontName(self.defFontName)
                affectTextLine.SetPackedFontColor(self.POSITIVE_COLOR)
                affectTextLine.SetPosition(50, self.toolTipHeight + 16 + 2 + 16 + 2)
                affectTextLine.SetOutline()
                affectTextLine.SetFeather()
                affectTextLine.Show()
                affectTextLine.SetText(custumAffectString3)
                self.childrenList.append(affectTextLine)
                self.toolTipHeight += 16 + 2

            if 0 != leftTime:
                timeText = (localeInfo.LEFT_TIME + " : " + localeInfo.SecondToDHM(leftTime))

                timeTextLine = ui.TextLine()
                timeTextLine.SetParent(self)
                timeTextLine.SetFontName(self.defFontName)
                timeTextLine.SetPackedFontColor(self.POSITIVE_COLOR)
                timeTextLine.SetPosition(50, self.toolTipHeight + 16 + 2 + 16 + 2)
                timeTextLine.SetOutline()
                timeTextLine.SetFeather()
                timeTextLine.Show()
                timeTextLine.SetText(timeText)
                self.childrenList.append(timeTextLine)
                self.toolTipHeight += 16 + 2

        else:
            nameTextLine.SetText(localeInfo.TOOLTIP_SOCKET_EMPTY)

        self.toolTipHeight += 35
        self.ResizeToolTip()


p5G8vm.png

aksesuar_ozellikleri.jpg


fakat bu kodları ekledikten sonra silahlara ve zırhlara taş basamıyoruz. Silah veya zırha taşı sürükledikten sonra packe düşen syser şöyle ;

Kod:
0805 08:48:46015 :: Traceback (most recent call last):


0805 08:48:46015 ::   File "ui.py", line 1977, in OnSelectItemSlot

0805 08:48:46015 ::   File "ui.py", line 86, in __call__

0805 08:48:46016 ::   File "ui.py", line 77, in __call__

0805 08:48:46016 ::   File "uiInventory.py", line 809, in SelectItemSlot

0805 08:48:46016 ::   File "uiInventory.py", line 919, in __DropSrcItemToDestItemInInventory

0805 08:48:46017 ::   File "uiInventory.py", line 1128, in AttachMetinToItem

0805 08:48:46017 ::   File "uiAttachMetin.py", line 107, in Open

0805 08:48:46017 ::   File "uiToolTip.py", line 1369, in AddItemData

0805 08:48:46017 ::   File "uiToolTip.py", line 2245, in __AppendMetinSlotInfo

0805 08:48:46018 ::   File "uiToolTip.py", line 2341, in __AppendMetinSlotInfo_AppendMetinSocketData

0805 08:48:46018 :: AttributeError
0805 08:48:46018 :: :
0805 08:48:46018 :: 'ItemToolTip' object has no attribute 'StoneAppendTextLine'
0805 08:48:46018 ::
 
uitooltip.py dosyasında StoneAppendTextLine fonksiyonu var mı?
 
Evet var. Sorunu, uitooltip.py'yi biraz karıştırdıktan sonra çözdüm. birazdan paylaşacağım yorumun için teşekkür ederim.
 
Çözüm
Paylaşımcı olduğunuz için bende çok teşekkür ederim :)
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst