Çözüldü Python İtem Vnum çektirme

  • Konuyu açan Konuyu açan xxsehabe
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 8
  • Gösterim Gösterim 839
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ı.

xxsehabe

Üye
Üye
Mesaj
71
Beğeni
24
Puan
671
Ticaret Puanı
0
Selam, farklı yükseltme oranlarında ritüel taşı yaptım. (Örn %100, %50 v.s).Bu item büyülü metal ve kutsama ile aynı mantıkla diğer itemin üstüne sürüklenince çalışıyor. Src kısmını yazabildim herhangi bir problem yok ancak, python'da çok iyi olmadığım için yazamıyorum. Yükseltme oranı hala, refine protodan çektiği şekilde gözüküyor. Yazdırmak istediğim şu Yükseltme Oranı = Refine'den gelen oran + Kullanılan itemin verdiği oran şeklinde. Bunun dinamik bir yapıya sahip olması gerekmiyor. Python'dan gelen itemin kodu örneğin 25042 ise prob = 100, 25043 ise = 50 gibi çektirmek istiyorum. Nasıl itemin vnumunu çektirebilirim ? Benim yapmak istediğim mantık şu şekilde ancak kodlarda yanlışlık var sanıyorum ;
Python:
Genişlet Daralt Kopyala
    def Open(self, targetItemPos, nextGradeItemVnum, cost, prob, type):

        isAttached = mouseModule.mouseController.isAttached()
        if isAttached:
            attachedSlotType = mouseModule.mouseController.GetAttachedType()
            attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
            mouseModule.mouseController.DeattachObject()
            attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)
            itemVNum = player.GetItemIndex(attachedInvenType, attachedSlotPos)
            if itemVnum == 25042:
                prob = 100
            elif itemVnum == 25043:
                prob = 20

        if FALSE == self.isLoaded:
            self.__LoadScript()

        #if app.ENABLE_TITLE_SYSTEM:
            #self.__InitializeOpen()
        #else:
            #self.__Initialize()
        self.__InitializeOpen()
        self.targetItemPos = targetItemPos
        self.vnum = nextGradeItemVnum
        self.cost = cost
        self.percentage = prob
        self.type = type

        self.Clear()

        self.probText.SetText(localeInfo.REFINE_CURRENT_PERCENTAGE % (self.percentage))
        self.costText.SetText("%s" % (localeInfo.NumberToMoneyString(self.cost)))
 
İtem vnum çektirmek için kodlar doğru gözüküyor.
mouseModule.mouseController.GetAttachedItemIndex() kodu ile itemin vid değerini alabilirsiniz. Daha sonra item.SelectItem ile eşyanın diğer özelliklerini alabilirsiniz.
 
Adminim öncelikle yorumunuz için teşekkür ederim ancak, yukarıda var olan kodlar sürüklenen itemin mi yoksa hedef itemin mi kodlarını vermekte?
 
Sürüklenen itemin vermekte. uiinventory, uitooltip içerisindeki kodları okuyabilirsiniz.
 
uirefine.py dosyasına sürüklenen itemlerin bilgisini kaynak kodundan gelen pos id ile belirleniyor.

game.py
Python:
Genişlet Daralt Kopyala
    def OpenRefineDialog(self, targetItemPos, nextGradeItemVnum, cost, prob, type=0):
        self.interface.OpenRefineDialog(targetItemPos, nextGradeItemVnum, cost, prob, type)

uirefine.py;
Python:
Genişlet Daralt Kopyala
    def Open(self, targetItemPos, nextGradeItemVnum, cost, prob, type):

        if False == self.isLoaded:
            self.__LoadScript()

        self.__Initialize()

        self.targetItemPos = targetItemPos
        self.vnum = nextGradeItemVnum
        self.cost = cost
        self.percentage = prob
        self.type = type

        self.probText.SetText(localeInfo.REFINE_SUCCESS_PROBALITY % (self.percentage))
        self.costText.SetText(localeInfo.REFINE_COST % (self.cost))

        self.toolTip.ClearToolTip()
        metinSlot = []
        for i in xrange(player.METIN_SOCKET_MAX_NUM):
            metinSlot.append(player.GetItemMetinSocket(targetItemPos, i))

        attrSlot = []
        for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
            attrSlot.append(player.GetItemAttribute(targetItemPos, i))
        self.toolTip.AddRefineItemData(nextGradeItemVnum, metinSlot, attrSlot)

        item.SelectItem(nextGradeItemVnum)
        self.itemImage.LoadImage(item.GetIconImageFileName())
        xSlotCount, ySlotCount = item.GetItemSize()
        for slot in self.slotList:
            slot.Hide()
        for i in xrange(min(3, ySlotCount)):
            self.slotList[i].SetPosition(-35, i*32 - (ySlotCount-1)*16)
            self.slotList[i].Show()

        self.dialogHeight = self.toolTip.GetHeight() + 46
        self.UpdateDialog()

        self.SetTop()
        self.Show()
 
uirefine.py dosyasına sürüklenen itemlerin bilgisini kaynak kodundan gelen pos id ile belirleniyor.

game.py
Python:
Genişlet Daralt Kopyala
    def OpenRefineDialog(self, targetItemPos, nextGradeItemVnum, cost, prob, type=0):
        self.interface.OpenRefineDialog(targetItemPos, nextGradeItemVnum, cost, prob, type)

uirefine.py;
Python:
Genişlet Daralt Kopyala
    def Open(self, targetItemPos, nextGradeItemVnum, cost, prob, type):

        if False == self.isLoaded:
            self.__LoadScript()

        self.__Initialize()

        self.targetItemPos = targetItemPos
        self.vnum = nextGradeItemVnum
        self.cost = cost
        self.percentage = prob
        self.type = type

        self.probText.SetText(localeInfo.REFINE_SUCCESS_PROBALITY % (self.percentage))
        self.costText.SetText(localeInfo.REFINE_COST % (self.cost))

        self.toolTip.ClearToolTip()
        metinSlot = []
        for i in xrange(player.METIN_SOCKET_MAX_NUM):
            metinSlot.append(player.GetItemMetinSocket(targetItemPos, i))

        attrSlot = []
        for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
            attrSlot.append(player.GetItemAttribute(targetItemPos, i))
        self.toolTip.AddRefineItemData(nextGradeItemVnum, metinSlot, attrSlot)

        item.SelectItem(nextGradeItemVnum)
        self.itemImage.LoadImage(item.GetIconImageFileName())
        xSlotCount, ySlotCount = item.GetItemSize()
        for slot in self.slotList:
            slot.Hide()
        for i in xrange(min(3, ySlotCount)):
            self.slotList[i].SetPosition(-35, i*32 - (ySlotCount-1)*16)
            self.slotList[i].Show()

        self.dialogHeight = self.toolTip.GetHeight() + 46
        self.UpdateDialog()

        self.SetTop()
        self.Show()
Adminim tekrar cevabınız için teşekkür ederim ancak yine sürüklenen itemin kodunu nasıl çekebileceğimi attığınız kodlardan anlayamadım. Sadece itemin kodunu çekebileceğim kodu atar mısınız bana ?
 
uirefine.py’de bunu kullanamazsınız. Zaten itemi demirciye filan sürüklediğiniz zaman server tarafından itemin bilgileri belirttiğim kısıma geliyor. Başka bir dosyada ise mesajınızda belirttiğiniz kodları kullanarak alabilirsiniz
 
uirefine.py’de bunu kullanamazsınız. Zaten itemi demirciye filan sürüklediğiniz zaman server tarafından itemin bilgileri belirttiğim kısıma geliyor. Başka bir dosyada ise mesajınızda belirttiğiniz kodları kullanarak alabilirsiniz
uirefinede hiç bir şekilde itemin kodunu almam mümkün değil mi ? Farklı bir yöntem ile alabilme şansım var mı ?
@Whistle Adminim yardımlarınız için teşekkür ederim. Problemi çözdüm.
 
Son düzenleme:
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst