Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Cannn6161 1
Cannn6161
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Cevaplanmadı İTem arama sistemi efect hatası

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

safsag

Level 1
Üye
Katılım
23 Mar 2010
Konular
18
Mesajlar
44
Online süresi
7d 18h
Reaksiyon Skoru
6
Altın Konu
0
TM Yaşı
16 Yıl 2 Ay 16 Gün
Başarım Puanı
100
MmoLira
2,637
DevLira
0
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!

İkarus ofline Shop için item arama sistemi kurdum
Sistemin çalışma mantığı f5 tuşuna basınca bir panel açılıyor bu panele itemin ismini yazıyoruz ve o haritadaki hangi pazarlarda o item den var ise o pazarların üstünde target oku beliriyor
Yaşadığım sorun ise şöyle
Panele itemin adını yazıp ara dediğimde itemin olduğu pazarın üstünde target oku bir defa düzgünce renderlenip ardından bir anda defalarca renderleniyor bunu nasıl tek sefer renderlenmesi ini ayarlarım
 
Bu sorun genellikle OnUpdate veya sürekli çalışan bir döngü (render loop) içerisinde kontrolsüz bir şekilde "ok oluşturma" fonksiyonunun çağrılmasından kaynaklanır. Sistem, itemi bulduğu her karede (frame) yeni bir ok objesi oluşturmaya çalışıyor olabilir.
Sorunu çözmek için Bayrak (Flag) mantığını veya Varlık Kontrolü yöntemini kullanmalısın. İşte uygulayabileceğin adımlar:
1. Bayrak (Flag) Mantığı ile Kontrol
Arama butonuna basıldığında bir değişkeni True yapıp, ok render edildikten sonra bunu False çekerek döngüyü kırabilirsin.

# Başlangıçta değişkeni tanımla
self.isTargetCreated = False

# Ara butonuna basıldığında
def SearchItem(self):
self.isTargetCreated = False # Yeni arama için sıfırla
# ... arama kodları ...
if item_found and not self.isTargetCreated:
self.__CreateTargetArrow(vid)
self.isTargetCreated = True

2. Mevcut Target Okunu Temizleme
Yeni bir ok oluşturmadan önce, eğer ekranda halihazırda bir ok varsa onu sildirmen gerekir. Aksi takdirde üst üste binen onlarca ok hem görüntüyü bozar hem de FPS düşürür.
def __CreateTargetArrow(self, vid):
# Eğer daha önceden bir target varsa onu kapat/sil
if self.target_vid != 0:
background.DeleteTarget(self.target_vid)

# Yeni targetı oluştur
background.RegisterTarget(vid, "Search_Target")
self.target_vid = vid

3. Update Döngüsünden Çıkarın​


Eğer ok oluşturma fonksiyonun OnUpdate (Python tarafı) veya Update (C++ tarafı) altındaysa, bu fonksiyon saniyede 60-144 kez çalışır. Ok oluşturma işlemini sadece "Ara" (Search) butonuna basıldığı an çalışan fonksiyonun içine (Event) yazmalısın.


4. C++ Tarafında Pointer Kontrolü (Eğer Source'tan yapıyorsan)​


Eğer sistemi C++ tarafında InstanceBase üzerinden yönetiyorsan, efektin (arrow) ekli olup olmadığını kontrol eden bir if bloğu ekle:

if (!pkInst->HasTargetArrow()) {
pkInst->CreateTargetArrow();
}

girintilerde hata olabilir
 
Değerli Yorumunuz için çok teşekkür ederim efendim
İlk fırsatta bunları deneyeceğim geri dönüş sağlayacağım
 

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

Geri
Üst