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

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

⋞ 〈 ☪ 〉 ⋟
Site yetkilisi
Admin
Premium Üye
Geliştirici
Yardımsever Üye
Mesaj
3.696
Çözümler
345
Beğeni
3.588
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:
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:
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:
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:
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:
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