Selamın Aleyküm Cümleten hayırlı akşamlar ranking sistemi ekledim fakat oyun içi gözükmüyor yardımcı olursanız sevinirim eklediğim yerelere baktım sırasıyla aynı şekilde client src game src derlendi build alındı ama yinede aynı syserde bu şekilde
Syserr olayı aslında olayı net söylüyor:
'Interface' object has no attribute 'wndRanking'
Yani:
- interfaceModule.py içinde OpenRanking fonksiyonu self.wndRanking’e erişmeye çalışıyor
- ama Interface sınıfında hiç self.wndRanking tanımlanmamış → pencereyi hiç oluşturmamışsın, o yüzden oyun içinde de görünmüyor.
Server / game src ile alakası yok, tamamen
client Python tarafı.
1) interfaceModule.py’ye pencereyi tanımla
a) En üstte import et
import uiRanking # eklemediysen mutlaka ekle
b) Interface.init içine alan aç
class Interface(object):
def __init__(self):
...
self.wndRanking = None
c) Pencereyi oluşturduğun yere ekle
Genelde __MakeWindows / __MakeInterface gibi bir fonksiyon olur, diğer pencerelerin yanında:
def __MakeWindows(self):
...
self.wndInventory = uiInventory.InventoryWindow()
...
self.wndRanking = uiRanking.RankingWindow()
self.wndRanking.Hide()
2) OpenRanking fonksiyonunu düzgün yap
interfaceModule.py içinde:
def OpenRanking(self):
if not self.wndRanking:
return
if self.wndRanking.IsShow():
self.wndRanking.Hide()
else:
self.wndRanking.Show()
3) HideAllWindows içine ekle
Syserr’de kapanırken de aynı hatayı veriyor, çünkü HideAllWindows içinde de self.wndRanking çağrılıyor ama tanımlı değil.
Orada da diğer pencerelerin yanına ekle:
def HideAllWindows(self):
...
if self.wndRanking:
self.wndRanking.Hide()
4) Sonrasında ne yapacaksın?
- interfaceModule.py ve uiRanking.py dosyalarını pack’e tekrar koy
- Client’ı yeniden başlat
- Hotkey / buton ne koyduysan ordan tekrar dene
Eğer bu adımlardan sonra hâlâ açılmazsa, bu sefer de uiRanking.RankingWindow içinde hata vardır; o durumda uiRanking.py dosyanı buraya atarsan satır satır bakarım.