Fethi Polat 1
Fethi Polat
xranzei 1
xranzei
Bvural41 1
Bvural41
kralhakan2009 1
kralhakan2009
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Vahsi Uzman 1
Vahsi Uzman
Cannn6161 1
Cannn6161
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Cevaplanmadı Patron Takip

  • Konuyu başlatan Konuyu başlatan odinogluthorr
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 3
  • Görüntüleme Görüntüleme 124

odinogluthorr

Level 4
TM Üye
Üye
Katılım
27 Şub 2024
Konular
108
Mesajlar
324
Çözüm
16
Online süresi
4mo 9d
Reaksiyon Skoru
53
Altın Konu
0
TM Yaşı
2 Yıl 3 Ay 11 Gün
Başarım Puanı
101
MmoLira
7,913
DevLira
12
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

patron takip sistemi ekledim ama interfacemodule eklemesi olmadığı için F5 Menü gibi sistemlerde arayüzünü açamıyorum sistemin kendimce sistemin interface eklemelerini yaptım F5 Menü sisteminde açıldı fakat patronlara tıklanmıyor syser de atmıyor

normal f5 ekle ;
Kod:
        onPressKeyDict[app.DIK_F7]    = lambda : self.OpenBossTracking()

bu şekilde interface yazmdan eklersek sorun çıkmıyor ama "self.interface yazarsak qui açlıyor ama tıklanmıyor patronlara

Sistem linki;

 
patron takip sistemi ekledim ama interfacemodule eklemesi olmadığı için F5 Menü gibi sistemlerde arayüzünü açamıyorum sistemin kendimce sistemin interface eklemelerini yaptım F5 Menü sisteminde açıldı fakat patronlara tıklanmıyor syser de atmıyor

normal f5 ekle ;
Kod:
        onPressKeyDict[app.DIK_F7]    = lambda : self.OpenBossTracking()

bu şekilde interface yazmdan eklersek sorun çıkmıyor ama "self.interface yazarsak qui açlıyor ama tıklanmıyor patronlara

Sistem linki;

geçen gün birine kurmuştum bunu bir kaç düzenleme gerekliydi srcde ve py tarafında müsait olunca bakalım
 
Merhaba, karşılaştığın sorun çok yaygın ve mantığı anlaşıldığında çözümü oldukça basit bir "scope" problemidir. Sorun, interfacemodule içinden yarattığın pencerenin, ana oyun döngüsündeki olayları (tıklamalar gibi) dinleyecek olan ana pencereyle bağının kopuk olmasından kaynaklanıyor.

İşte bu bağı kurmak için en temiz yöntem:

Adım 1: interfacemodule.py Dosyasını Hazırlamak

interfacemodule.py dosyasını aç ve Interface sınıfının en başına, __init__ fonksiyonunun içine yeni bir değişken ekle. Bu değişken, ana oyun penceresini hafızasında tutacak.

[CODE title="Python"]# interfacemodule.py

import ui # Gerekli importları ekle
# ... diğer importlar

class Interface(ui.ScriptWindow):
def __init__(self):
ui.ScriptWindow.__init__(self)
# ... varsa diğer kodların ...
self.mainGame = None # 1. ADIM: Ana oyun penceresini saklamak için bir yer ayır.

def __del__(self):
ui.ScriptWindow.__del__(self)

# 2. ADIM: Ana oyun penceresini bize tanıtacak bir fonksiyon ekle.
def BindGameClass(self, mainGame):
self.mainGame = mainGame

# 3. ADIM: Patron Takip penceresini açan fonksiyonu düzenle.
def OpenBossTracking(self):
# Eğer mainGame tanımlıysa, pencereyi onun üzerinden aç.
if self.mainGame:
self.mainGame.OpenBossTracking()[/CODE]

Adım 2: game.py (veya Ana Sınıf) Dosyasını Düzenlemek

Şimdi ana oyun sınıfının olduğu dosyayı (game.py olabilir) aç. interface nesnesini oluşturduğun yerde, az önce yazdığımız BindGameClass fonksiyonunu çağırarak aradaki köprüyü kur.

[CODE title="Python"]# game.py

import interfacemodule
# ... diğer importlar

class GameWindow(ui.ScriptWindow):
def __init__(self):
# ...
self.interface = interfacemodule.Interface()
self.interface.BindGameClass(self) # 4. ADIM: Köprüyü kur! "self" yani kendimizi (ana oyun penceresini) interface'e tanıtıyoruz.
# ...

# ...

# 5. ADIM: Patron Takip penceresini açan fonksiyonun burada olduğundan emin ol.
# Bu fonksiyonu interfacemodule'e taşımana gerek yok.
def OpenBossTracking(self):
# Patron takip penceresini açan kodlar burada olmalı.
# self.wndBossTracking = uibosstracking.BossTrackingWindow()
# self.wndBossTracking.Show()
pass

def OnKeyDown(self, key):
# ...
# F5 menüsündeki butona basıldığında artık bu çağrılacak:
# self.interface.OpenBossTracking()
# ...[/CODE]

Özetle Ne Yaptık?

F5 menüsündeki butona bastığında, olay şöyle işleyecek:

  1. self.interface.OpenBossTracking() fonksiyonu çağrılacak.
  2. interfacemodule içindeki bu fonksiyon, içinde sakladığı self.mainGame (yani ana oyun penceresinin kendisi) üzerinden, ana oyun penceresinin kendi OpenBossTracking() fonksiyonunu çağıracak.
  3. Böylece pencereyi yine "aile reisi" açmış olacak ve pencere "yetim" kalmayacak. Tıklamalar sorunsuz çalışacak.
Bu yöntemle hem kodun daha düzenli olur hem de bu tür "tıklanmama" sorunlarını kökünden çözmüş olursun.
 

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

Geri
Üst