Çözüldü Garip bir python sorunu (render target)

  • Konuyu açan Konuyu açan Kaiser
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 4
  • Gösterim Gösterim 1K
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ı.

Kaiser

Admin
Admin
Geliştirici
Yardımsever Üye
Mesaj
4.075
Çözümler
409
Beğeni
4.318
Puan
1.849
Ticaret Puanı
0
Merhaba, 2-3 gündür garip bir problem yaşıyorum.

Öncelikle ilgili kısımları şöyle belirteyim;

uitooltip - def AddItemData fonksiyonu (9 argüman alıyor):
Python:
Genişlet Daralt Kopyala
def AddItemData(self, itemVnum, metinSlot, attrSlot = 0, evolution = 0, flags = 0, unbindTime = 0, window_type = player.INVENTORY, slotIndex = -1, preview = 0):

uitooltip - def SetInventoryItem içindeki AddItemData(9 argüman alıyor):
Python:
Genişlet Daralt Kopyala
self.AddItemData(itemVnum, metinSlot, attrSlot, player.GetItemEvolution(window_type, slotIndex), 0, 0, window_type, slotIndex, 1)

Bu şekilde kullanabiliyorum fakat nedense bunu böyle kullandığımda savaşçı karakterine ait bütün silahların altında "Kalan Süre : 0 Dakika" yazıyor.
Ve bu yazı sadece savaşçı karaterinden bakıldığında görünüyor. Yani şamandan yada suradan zehir kılıcının üstüne geldiğimde böyle bir yazı yok.
Buna sebep olan asıl şey ise, render target sistemi(volvox)
Render targeti kapattığım sorun olmuyor.

Herhangi bir fikri olan var mı ?
 
Çözüm
Bir şey fark ettim.

item.SelectItem(sac) ile itemin slotuna yönlendirip öylece kalıyor, yani render target aynı zamanda itemi slot indexi üzerinden görüntülüyor.
Bu yüzden saç takılıyken silahın üzerine gelince süre zımbırtısını da gösteriyor.
Yukarıda verdiğim kodu şu şekilde düzenleyip önizleme işleminden hemen sonra render targeti tekrar itemin kendi indexine yönlendirdim.

Python:
Genişlet Daralt Kopyala
if test != 1:
    sac = player.GetItemIndex(player.INVENTORY, item.COSTUME_SLOT_START + 1)
    if sac != 0:
        item.SelectItem(sac)
        renderTarget.SetHair(RENDER_TARGET_INDEX, item.GetValue(3))
        item.SelectItem(Vnum)

Yardımcı olan herkese teşekkürler.
0, 0, buradaki 0'larda unbindtime 0 olarak kaydediyorsunuz onu deneyebilir misiniz
 
tooltip içindekine galiba preview = -1 veya 1 eklemen gerekiyor sparky filesten bakarmısın bendede vardı hata buna benzer bişey yapmıştım
 
0, 0, buradaki 0'larda unbindtime 0 olarak kaydediyorsunuz onu deneyebilir misiniz
tooltip içindekine galiba preview = -1 veya 1 eklemen gerekiyor sparky filesten bakarmısın bendede vardı hata buna benzer bişey yapmıştım
Maalesef sonuç aynı

///////////////
Sorunun tam nereden patladığını tespit ettim.

Python:
Genişlet Daralt Kopyala
if test != 1: # saç
    sac = player.GetItemIndex(player.INVENTORY, item.COSTUME_SLOT_START + 1)
    if sac != 0:
        item.SelectItem(sac)
        renderTarget.SetHair(RENDER_TARGET_INDEX, item.GetValue(3))

Bu koddan dolayı oluyor. Bu kodun görevi, silah yada zırhın üzerine gelindiğinde eğer kostüm saç takılıysa, render target penceresinde saçı da beraber gösteriyor. Sorunsuz da gösteriyor, ama eğer kostüm saç takılıysa karakterdeki (envanterde karakterin kendisine ait) tüm silahların altında "Kalan Süre : 0 Dakika" yazıyor. Kostüm saçı çıkarınca bu yazı kayboluyor. Bu kodu silince de bu sorun kökten çözülmüş oluyor ama çözüm bu değil.
Saçı da beraber göstermek istiyorum ama sanırım farklı şekilde tanımlamak gerekiyor...

GIF de daha anlaşılır bir şekilde görebilirsiniz:


10h2kl4.gif
 
Bir şey fark ettim.

item.SelectItem(sac) ile itemin slotuna yönlendirip öylece kalıyor, yani render target aynı zamanda itemi slot indexi üzerinden görüntülüyor.
Bu yüzden saç takılıyken silahın üzerine gelince süre zımbırtısını da gösteriyor.
Yukarıda verdiğim kodu şu şekilde düzenleyip önizleme işleminden hemen sonra render targeti tekrar itemin kendi indexine yönlendirdim.

Python:
Genişlet Daralt Kopyala
if test != 1:
    sac = player.GetItemIndex(player.INVENTORY, item.COSTUME_SLOT_START + 1)
    if sac != 0:
        item.SelectItem(sac)
        renderTarget.SetHair(RENDER_TARGET_INDEX, item.GetValue(3))
        item.SelectItem(Vnum)

Yardımcı olan herkese teşekkürler.
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst