noisiv 1
noisiv
Manwe Work 1
Manwe Work
farkmt2official 1
farkmt2official
Mt2Hizmet 1
Mt2Hizmet
Bvural41 1
Bvural41
berzahx 1
berzahx
mavzermete 1
mavzermete
Hikaye Ekle

Cevaplanmadı overlay sorunu

  • Konuyu başlatan Konuyu başlatan IMD
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 4
  • Görüntüleme Görüntüleme 63

Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!

1766961203153.png


envanterdeki pazara konulamayan itemlerin overlay olmasını istiyorum nerden yapabilirim? 5.8 kullanııyorum yardımcı olursnız sevinirim
 
Bunu client tarafında envanter slot çiziminde yapıyorsun. Mantık şu: “Bu item pazara konulamaz” durumunu client zaten bir yerden anlıyor (kontrol fonksiyonu / flag). Sen de envanterde o slotun üstüne cover/overlay basıyorsun.

5.8’lerde en pratik yerler genelde şuralar:

  • root/uiinventory.py (envanter pencere kodu)
  • bazen root/uiprivateShopBuilder.py / root/uiofflineshopbuilder.py (pazar kurma penceresi)
  • slot güncellemesi yapan fonksiyonlar: RefreshBag(), RefreshItemSlot(), RefreshSlot() gibi

Yapılacak iş (özet)

  1. “pazara konulamaz” kontrolünü bul / oluştur
  2. Envanter refresh’inde o item varsa slotun üstüne overlay bas
  3. Pazar/normal mod değişince overlay’leri temizle

1) Kontrolü nereden alacağız?

Bu kısım sende hangi sistem olduğuna göre değişir:

  • Eğer item “antiflag” ile engelleniyorsa: item.IsAntiFlag(...) veya item.GetAntiFlags() benzeri.
  • OfflineShop özel engel listesi varsa: builder tarafında bir fonksiyon olur (örn. IsCanAddItem, CanAddItemToShop, IsSellableItem gibi).
Pratikte kontrol şöyle bir şeye bağlanır:

  • görev itemi / mühürlü / takılı / süreli / ruh bağlı / pazara kapalı flag
Senin sistemde bu kontrol zaten vardır çünkü pazar penceresi itemi reddediyor. Onu bulup aynı kontrolü envanterde kullanacaksın.

2) Overlay’yi envanter slotuna basma

Slot objelerinde genelde şu tarz fonksiyonlar oluyor (source’a göre isim değişebilir):

  • self.wndItem.SetCoverButton(slotIndex, imageName, ...)
  • self.wndItem.SetSlotColor(slotIndex, r, g, b, a) / SetSlotBaseImage
  • DisableSlot(slotIndex) (bu tıklamayı da kapatır, bazen istemezsin)
  • bazı clientlarda “cover” sistemi direkt var
Senin istediğin: tıklama dursun/durmasın fark etmez, ama görsel overlay olsun.

Envanterde refresh yapan yerde örnek mantık:

  • slot index 0..x dön
  • player.GetItemIndex(slot) ile vnum al
  • vnum 0 değilse kontrol et
  • uygunsa overlay kaldır, değilse overlay bas

3) Nerede ekleyeyim? (en doğru nokta)

Genelde en temiz yer:

uiinventory.py içinde

  • RefreshBag() veya RefreshItemSlot() fonksiyonu
  • çünkü her item değişiminde zaten burası çalışıyor
Oraya küçük bir blok ekleniyor:

  • if self.isOfflineShopBuildMode: gibi bir durumun varsa, sadece o moddayken overlay bas
  • yoksa sürekli basarsan envanter hep “pazara göre” boyanır (genelde istenmez)

4) Sende doğru dosyayı hızlı bulma

Arama yap:

  • SetCoverButton
  • Cover
  • RefreshItemSlot
  • RefreshBag
  • GetItemIndex
  • privateShop / offlineshop
Bu kelimeler seni direkt doğru çözüme götürür.
 
Ekstra eklenti yapmak gerekiyor fakat orjinal 5.8lerde zaten bu eklenti mevcut bende çalışmadığı için 5.8 kullanıp bilen kişiler tam yerini söylebilirse çok daha iyi olur çünkü eklenti ile çalışıyor ama ben farklı bir yerde bozmuşsam onu bulamıyorum :)
gine bilgilendirme için teşekkürler
 
Ekstra eklenti yapmak gerekiyor fakat orjinal 5.8lerde zaten bu eklenti mevcut bende çalışmadığı için 5.8 kullanıp bilen kişiler tam yerini söylebilirse çok daha iyi olur çünkü eklenti ile çalışıyor ama ben farklı bir yerde bozmuşsam onu bulamıyorum :)
gine bilgilendirme için teşekkürler
Overlaydan kastın ticaret ekranına veya pazara konulmayan envanterde oluşan görüntüden mi bahsediyorsun?

bunu indirip karşılaştırırmısın
"Slot Marking System"
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst