Yardım ShopEX fiyat satırı düzenlemek

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

Kaptan Yosun

Discord: kaptanyosun
Site yetkilisi
Acemi Moderatör
Premium Üye
Mesaj
628
Çözümler
21
Beğeni
455
Puan
839
Ticaret Puanı
0
İyi günler, başarısız denemelerin ardından yardım istemeye geldim. ShopEx Renewal kurdum, ancak şu anda eşya resmi nedense ortalı değil. Bunun sebebi ne olabilir? Ek olarak asıl yapmak istediğim şu andaki mevcut fiyat satırlarını değiştirmek. Bunu nasıl yapabilirim?

Şu anda bendeki:

Screenshot_3.png


İstediğim:
Screenshot_2.png


uitooltip kod:
    if app.ENABLE_RENEWAL_SHOPEX:
        def SetShopItemByShopEx(self, slotIndex, type):
            itemVnum = shop.GetItemID(slotIndex)
            PriceVnum = shop.GetItemPriceVnum(slotIndex)
            if itemVnum == 0 or (PriceVnum == 0 and type == shop.SHOPEX_ITEM):
                return
            price = shop.GetItemPrice(slotIndex)
            self.ClearToolTip()
            self.isShopItem = True
            metinSlot = []
            for i in xrange(player.METIN_SOCKET_MAX_NUM):
                metinSlot.append(shop.GetItemMetinSocket(slotIndex, i))
            attrSlot = []
            for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
                attrSlot.append(shop.GetItemAttribute(slotIndex, i))
            self.AddItemData(itemVnum, metinSlot, attrSlot)
            self.AppendSpace(5)
            if type == shop.SHOPEX_ITEM:
                self.AddSHOPEXItem(PriceVnum, price)
            else:
                self.AppendTextLine(localeInfo.TOOLTIP_BUYPRICE  % (localeInfo.NumberToShopEXP(price)), self.GetPriceColor(price))

        def AddSHOPEXItem(self, itemVnum, price):
            self.AppendTextLine(localeInfo.SHOPEX_PRICE)
            item.SelectItem(itemVnum)
            name = "%dx %s" % (price, item.GetItemName())
            self.AutoAppendTextLine(name, self.NORMAL_COLOR)
            itemImage = ui.ImageBox()
            itemImage.SetParent(self)
            itemImage.Show()         
            itemImage.LoadImage(item.GetIconImageFileName())
            itemImage.SetPosition(75, self.toolTipHeight)
            self.toolTipHeight += itemImage.GetHeight() - 10
            self.childrenList.append(itemImage)
            self.ResizeToolTip()
 
itemimage setposition diyor ya muhtemelen o kısımla alakalı kurcalayarak bulabilirsin sayıyı değiştirip
 
itemimage setposition diyor ya muhtemelen o kısımla alakalı kurcalayarak bulabilirsin sayıyı değiştirip
Peki her şeyi tek satıra nasıl alabilirim? Çünkü fiyat etiketi appendtextline, isim ve miktar autoappendtextline, resim de childrenList.append(itemImage). Üç farklı tipi tek satıra nasıl almışlar acaba aeldra'da merak ettim
 
Peki her şeyi tek satıra nasıl alabilirim? Çünkü fiyat etiketi appendtextline, isim ve miktar autoappendtextline, resim de childrenList.append(itemImage). Üç farklı tipi tek satıra nasıl almışlar acaba aeldra'da merak ettim
incelemeden kesin bir şey söylemem yanlış olur. bilgim yok bu yüzden bu konuda yardımcı olamayabilirim.
 
Resimi fiyattan sonra çıkmasını istiyorsan şu şekilde deneyebilirsin.
Python:
        def AddSHOPEXItem(self, itemVnum, price):
            self.AppendTextLine(localeInfo.SHOPEX_PRICE)
            item.SelectItem(itemVnum)
            itemImage = ui.ImageBox()
            itemImage.SetParent(self)
            itemImage.Show()           
            itemImage.LoadImage(item.GetIconImageFileName())
            itemImage.SetPosition(75, self.toolTipHeight)
            self.toolTipHeight += itemImage.GetHeight() - 10
            self.childrenList.append(itemImage)
            name = "%dx %s" % (price, item.GetItemName())
            self.AutoAppendTextLine(name, self.NORMAL_COLOR)
            self.ResizeToolTip()
 
Resimi fiyattan sonra çıkmasını istiyorsan şu şekilde deneyebilirsin.
Python:
        def AddSHOPEXItem(self, itemVnum, price):
            self.AppendTextLine(localeInfo.SHOPEX_PRICE)
            item.SelectItem(itemVnum)
            itemImage = ui.ImageBox()
            itemImage.SetParent(self)
            itemImage.Show()       
            itemImage.LoadImage(item.GetIconImageFileName())
            itemImage.SetPosition(75, self.toolTipHeight)
            self.toolTipHeight += itemImage.GetHeight() - 10
            self.childrenList.append(itemImage)
            name = "%dx %s" % (price, item.GetItemName())
            self.AutoAppendTextLine(name, self.NORMAL_COLOR)
            self.ResizeToolTip()
Hocam sizin kodla da böyle oluyor, Aeldradaki acaba emoji in chatline mı? Kötü ruh ikonunu emojiye çevirip deneyebilirim aslında.
Edit: Düşündüm de benim düşündüğüm gibi emojiyle olmaz. Emojiler dinamik değil

1644507552222.png


Kod şu şekildeyken ortalanıyor ve düzgün görünüyor ancak dediğim gibi tek satır yapmaya çalışıyorum...

Python:
        def AddSHOPEXItem(self, itemVnum, price):
            self.AppendTextLine(localeInfo.SHOPEX_PRICE)
            item.SelectItem(itemVnum)
            name = "%dx %s" % (price, item.GetItemName())
            self.AutoAppendTextLine(name, self.NORMAL_COLOR)
            itemImage = ui.ImageBox()
            itemImage.SetParent(self)
            itemImage.Show()          
            itemImage.LoadImage(item.GetIconImageFileName())
            itemImage.SetPosition(90, self.toolTipHeight)
            self.toolTipHeight += itemImage.GetHeight()
            self.childrenList.append(itemImage)
            self.ResizeToolTip()

1644507907609.png
 
İstem ismi uzun olanlarda mı böyle gözüküyor yoksa hepsinde icon bu şekilde bozuk mu? Mesela Ruh Taşı dene
 
İstem ismi uzun olanlarda mı böyle gözüküyor yoksa hepsinde icon bu şekilde bozuk mu? Mesela Ruh Taşı dene
Aynı malesef
1644509156774.png


Belki başka bir sistemin örnek kodu yardımcı olabilir diye ekleyeyim buraya. Antiflag emoji sisteminde birden fazla elementi yan yana tek satırda koyuyor (yukarıdaki fotolarda da göründüğü şekilde)

örnek sistem:
    if app.ENABLE_ANTIFLAG_TOOLTIP:
        def AppendAntiflagInformation(self):
            antiFlagDict = {
                "|Eemoji/anti_drop|e"     : item.ITEM_ANTIFLAG_DROP,    ## ++
                "|Eemoji/anti_sell|e"     : item.ITEM_ANTIFLAG_SELL,    ## ++
                #localeInfo.TOOLTIP_ANTIFLAG_GIVE: item.IsAntiFlag(item.ITEM_ANTIFLAG_GIVE),
                #localeInfo.TOOLTIP_ANTIFLAG_STACK: item.IsAntiFlag(item.ITEM_ANTIFLAG_STACK),
                "|Eemoji/anti_shop|e"     : item.ITEM_ANTIFLAG_MYSHOP,  ## ++
                "|Eemoji/anti_safebox|e" : item.ITEM_ANTIFLAG_SAFEBOX, ## ++
            }
            
            antiFlagNames = [name for name, flag in antiFlagDict.iteritems() if item.IsAntiFlag(flag)]
            if antiFlagNames:
                self.AppendSpace(5)

                textLine = self.AppendTextLine('{}'.format(' '.join(antiFlagNames)), self.DISABLE_COLOR)
                textLine.SetFeather()
 
Son düzenleme:
Böyle dene
Python:
        def AddSHOPEXItem(self, itemVnum, price):
            self.AppendTextLine(localeInfo.SHOPEX_PRICE)
            item.SelectItem(itemVnum)
            name = "%dx %s" % (price, item.GetItemName())
            self.AutoAppendTextLine(name, self.NORMAL_COLOR)

            itemImage = ui.ImageBox()
            itemImage.SetParent(self)
            itemImage.Show()
            itemImage.LoadImage(item.GetIconImageFileName())
            itemImage.SetPosition(self.toolTipWidth / 2 - 16, self.toolTipHeight + 2.5)

            self.toolTipHeight += itemImage.GetHeight() + 2.5
            self.childrenList.append(itemImage)
            self.ResizeToolTip()
 
Böyle dene
Python:
        def AddSHOPEXItem(self, itemVnum, price):
            self.AppendTextLine(localeInfo.SHOPEX_PRICE)
            item.SelectItem(itemVnum)
            name = "%dx %s" % (price, item.GetItemName())
            self.AutoAppendTextLine(name, self.NORMAL_COLOR)

            itemImage = ui.ImageBox()
            itemImage.SetParent(self)
            itemImage.Show()
            itemImage.LoadImage(item.GetIconImageFileName())
            itemImage.SetPosition(self.toolTipWidth / 2 - 16, self.toolTipHeight + 2.5)

            self.toolTipHeight += itemImage.GetHeight() + 2.5
            self.childrenList.append(itemImage)
            self.ResizeToolTip()
Bu kodla harika ortalandı. Hocam neden tooltip genişliğini ikiye böldükten sonra 16 çıkardınız? Buradaki mantık nedir? Bir yandan da anlamaya çalışıyorum.

1644510471692.png
 
Bu kodla harika ortalandı. Hocam neden tooltip genişliğini ikiye böldükten sonra 16 çıkardınız? Buradaki mantık nedir? Bir yandan da anlamaya çalışıyorum.

9170 eklentisini görüntüle
Muhtemelen görseller metin2 de 32x32 boyutunda olduğundan (tek slotluk itemler) dolayı resmin yarısı boyunda çıkararak tam ortada durmasını sağlıyor. yani width / 2 tam ortayı veriyor. Görseli ekleyince width +32 olmuş oluyor. 16 sını çıkararak tam ortaya gelmesini sağlıyor.

Yanlış ise silebilirsin bu yorumu @Trashy
 
Bu kodla harika ortalandı. Hocam neden tooltip genişliğini ikiye böldükten sonra 16 çıkardınız? Buradaki mantık nedir? Bir yandan da anlamaya çalışıyorum.

9170 eklentisini görüntüle
itemler 32x32 32x64 32x128 şeklinde gidiyor 32 itemin genişliği bunu yarısını yazıyorsun merkezin ortasında olması için

Edit:
Muhtemelen görseller metin2 de 32x32 boyutunda olduğundan (tek slotluk itemler) dolayı resmin yarısı boyunda çıkararak tam ortada durmasını sağlıyor. yani width / 2 tam ortayı veriyor. Görseli ekleyince width +32 olmuş oluyor. 16 sını çıkararak tam ortaya gelmesini sağlıyor.

Yanlış ise silebilirsin bu yorumu @Trashy
zamanlama :D
 
Çok teşekkür ederim arkadaşlar anladım. Peki bir sorun ortadan kalktı... Asıl konu, @Trashy hocam Aeldra tarzı tek satır için fikriniz var mı?
 
şu şekilde item için childrenlist oluşturmuşlar bunu text içinde oluşturman lazım 2 tane oluştur mesela şu şekilde gözükür text itemimage text2 istediğinde olmuş olur deneyerek yapmak lazım belki yapan birisi var ise seninle paylaşabilir.

Python:
self.childrenList.append(itemImage)

Kod:
self.childrenList.append(text)
self.childrenList.append(itemImage)
self.childrenList.append(text2)

text kısmında Fiyatı: yazısını gösterirsin sonra itemimage ile resim gelir text2 ilede adet ve eşya adını yazdırırsın.
 
Son düzenleme:
Geri
Üst