Yardım Catacomb Bug Sorunu

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

LethalStrikeR

Yardımsever Üye
Yardımsever Üye
MT Üye
Mesaj
701
Çözümler
41
Beğeni
168
Puan
609
Ticaret Puanı
0
Merhaba;

Catacaombda yada oyunun herhangi bir yerinde "w" tuşuna sürekli bas çek bas çek yapıldığında mapteki slotlar nesneler yüklenmemeye başlıyor bunu nasıl fixleyebiliriz ?

 
Yani bir cata için klavyeyi bozma riskine girmezdim şahsen :D
Fix hakkında bilgim yok fakat bir de şöyle bir bug var bazılarında, at skili ile kapıların içinden geçilebiliyor.
 
Yani bir cata için klavyeyi bozma riskine girmezdim şahsen :D
Fix hakkında bilgim yok fakat bir de şöyle bir bug var bazılarında, at skili ile kapıların içinden geçilebiliyor.
Bunu da bana serverime katılacak bir loncanın ekip üyesi söyledi. Görünce çok şaşırdım.
 
Ne saçma bişey hayatımda böyle bug görmedim. Uğraşmak bir yana bunu bulan ağır işsizmiş. Fakat oyunda belli bir mesafeden sonra moblar yükleniyor fakat böyle milim milim yürüyerek falan ne bileyim değişik bişey.
 
Konu amacından biraz çıktı tartışmaya döndü gibi. Her w'ye bastığında bir movepacket gidiyor clientten source'e. Bu yüzden geç yükleniyor olabilir.
 
Kod yazma konusunda çok iyi sayılmam. Src tarafını bilemem şuanlı ama python tarafından bilgim kadarıyla bir şeyler yapmaya çalıştım ve işe de yaradı. Herhangi bir sıkıntı yaratır mı emin değilim ancak sanmıyorum.
Basit bir sayaç mantığı ve timer kontrolüyle bu durumun önüne geçtim sadece. Bu engel sayesinde belirlenen süre boyunca karaker W ve Ok tuşuyla ilerleyemez. (Sol mouse tuşuyla tıklayarak ilerleyebilir fakat bu da bug'a sebep olmaz zaten)

Aşağıda verdiğim düzenlemeler test amacıyla sadece ve sadece Mavi 1.Köyde çalışmaktadır. Mavi 1.Köy Haritası haricinde hiç bir haritaya etkisi yoktur. Ayrıca, W tuşuna etki ettiği gibi klavyedeki Yukarı Ok tuşuna da aynı engeli uygulamaktadır.

Yine test amacıyla koddaki değerler minimum seviyede tutulmuştur. Saniyeyi ve tuşa basma sayısını falan kendinize göre düzenleyebilirsiniz.

Adsız.jpg


root > game.py içinde arat:

Python:
Genişlet Daralt Kopyala
self.pressNumber = None

Altına ekle:
Python:
Genişlet Daralt Kopyala
self.bugsayac = 0
self.bugfix = 0

Yine arat:
Python:
Genişlet Daralt Kopyala
def MoveUp(self):
    player.SetSingleDIKKeyState(app.DIK_UP, True)

Fonksiyonu komple değiştir:
Python:
Genişlet Daralt Kopyala
    def MoveUp(self):

        ### Özel Haritalar İçin 'W' Tuş Engeli -- Start
        if self.bugsayac < 10:
            player.SetSingleDIKKeyState(app.DIK_UP, True)
            self.bugsayac += 1

        if self.bugsayac == 10 and background.GetCurrentMapName() == "metin2_map_c1": ### 'and' KISMI KALACAK. SONRAKİ HARİTALAR ARASINA 'or' EKLENECEK
            player.SetSingleDIKKeyState(app.DIK_UP, False)
            chat.AppendChat(1, "<Uyarı> Şüpheli hareket algılandı. Lütfen bir süre bekleyin..")
            if app.GetTime() < self.bugfix + 5: ### 'W' TUŞU VE YUKARI OK TUŞU 5 SANİYE UYKUYA GECECEK
                player.SetSingleDIKKeyState(app.DIK_UP, False)
                return
            else:
                self.bugsayac = 0
                player.SetSingleDIKKeyState(app.DIK_UP, True)
        ### Özel Haritalar İçin 'W' Tuş Engeli -- End
               
        else:
            player.SetSingleDIKKeyState(app.DIK_UP, True)

        self.bugfix = app.GetTime()
        #player.SetSingleDIKKeyState(app.DIK_UP, True)


Kod içerisinde göreceğiniz üzere haritayı packteki ismiyle tanıtıyoruz. Eğer harita klasörü tek bir dizine aitse koddaki gibi ekleyeceksiniz. Fakat ikili veya daha fazla dizine bağlıysa aşağıdaki örnekteki gibi eklemeniz gerek.

Örneğin mmotutkunlari adında bir harita var diyelim ve bunun yolu şu şekilde olsun;
haritalar.eix içinde > klasör1 > mmotutkunlari

Koda eklenme şekli;
"klasör1/mmotutkunlari"

Eğer haritalar.eix içinde > mmotutkunlari şeklinde ise benim kodda eklediğim gibi direkt adını yazabilirsiniz.
 
Kod yazma konusunda çok iyi sayılmam. Src tarafını bilemem şuanlı ama python tarafından bilgim kadarıyla bir şeyler yapmaya çalıştım ve işe de yaradı. Herhangi bir sıkıntı yaratır mı emin değilim ancak sanmıyorum.
Basit bir sayaç mantığı ve timer kontrolüyle bu durumun önüne geçtim sadece. Bu engel sayesinde belirlenen süre boyunca karaker W ve Ok tuşuyla ilerleyemez. (Sol mouse tuşuyla tıklayarak ilerleyebilir fakat bu da bug'a sebep olmaz zaten)

Aşağıda verdiğim düzenlemeler test amacıyla sadece ve sadece Mavi 1.Köyde çalışmaktadır. Mavi 1.Köy Haritası haricinde hiç bir haritaya etkisi yoktur. Ayrıca, W tuşuna etki ettiği gibi klavyedeki Yukarı Ok tuşuna da aynı engeli uygulamaktadır.

Yine test amacıyla koddaki değerler minimum seviyede tutulmuştur. Saniyeyi ve tuşa basma sayısını falan kendinize göre düzenleyebilirsiniz.

7072 eklentisini görüntüle

root > game.py içinde arat:

Python:
Genişlet Daralt Kopyala
self.pressNumber = None

Altına ekle:
Python:
Genişlet Daralt Kopyala
self.bugsayac = 0
self.bugfix = 0

Yine arat:
Python:
Genişlet Daralt Kopyala
def MoveUp(self):
    player.SetSingleDIKKeyState(app.DIK_UP, True)

Fonksiyonu komple değiştir:
Python:
Genişlet Daralt Kopyala
    def MoveUp(self):

        ### Özel Haritalar İçin 'W' Tuş Engeli -- Start
        if self.bugsayac < 10:
            player.SetSingleDIKKeyState(app.DIK_UP, True)
            self.bugsayac += 1

        if self.bugsayac == 10 and background.GetCurrentMapName() == "metin2_map_c1": ### 'and' KISMI KALACAK. SONRAKİ HARİTALAR ARASINA 'or' EKLENECEK
            player.SetSingleDIKKeyState(app.DIK_UP, False)
            chat.AppendChat(1, "<Uyarı> Şüpheli hareket algılandı. Lütfen bir süre bekleyin..")
            if app.GetTime() < self.bugfix + 5: ### 'W' TUŞU VE YUKARI OK TUŞU 5 SANİYE UYKUYA GECECEK
                player.SetSingleDIKKeyState(app.DIK_UP, False)
                return
            else:
                self.bugsayac = 0
                player.SetSingleDIKKeyState(app.DIK_UP, True)
        ### Özel Haritalar İçin 'W' Tuş Engeli -- End
              
        else:
            player.SetSingleDIKKeyState(app.DIK_UP, True)

        self.bugfix = app.GetTime()
        #player.SetSingleDIKKeyState(app.DIK_UP, True)


Kod içerisinde göreceğiniz üzere haritayı packteki ismiyle tanıtıyoruz. Eğer harita klasörü tek bir dizine aitse koddaki gibi ekleyeceksiniz. Fakat ikili veya daha fazla dizine bağlıysa aşağıdaki örnekteki gibi eklemeniz gerek.

Örneğin mmotutkunlari adında bir harita var diyelim ve bunun yolu şu şekilde olsun;
haritalar.eix içinde > klasör1 > mmotutkunlari

Koda eklenme şekli;
"klasör1/mmotutkunlari"

Eğer haritalar.eix içinde > mmotutkunlari şeklinde ise benim kodda eklediğim gibi direkt adını yazabilirsiniz.
Teşekkürler, fixi deneyeceğim. Farenin sol tık tuşuylada aynı şey yapılıyor fixi sol tık içinde ayarlayabilir misiniz ?
 
Teşekkürler, fixi deneyeceğim. Farenin sol tık tuşuylada aynı şey yapılıyor fixi sol tık içinde ayarlayabilir misiniz ?
Farenin sol tuşuna basılı tutarak ard arda W'ye basarak oluşan durumu diyorsanız, bu engel ona da etki etmektedir.
Kodlar döngü şeklinde çalışıyor, ilk engelden sonra tekrar aynı şey yapılırsa yine aynı engel uygulanıyor.
 
Farenin sol tuşuna basılı tutarak ard arda W'ye basarak oluşan durumu diyorsanız, bu engel ona da etki etmektedir.
Kodlar döngü şeklinde çalışıyor, ilk engelden sonra tekrar aynı şey yapılırsa yine aynı engel uygulanıyor.
Yok sadece farenin sol tuşuna basarakta yapılıyor ben şimdi denedim.
 
Klavye bir nebze teşvik eder belki ama en uyanık oyuncunun bile mouse tuşuna ard arda basmaya yelteneceğini veya o kadar basmaya parmağının dayanacağını sanmam :)
 
Klavye bir nebze teşvik eder belki ama en uyanık oyuncunun bile mouse tuşuna ard arda basmaya yelteneceğini veya o kadar basmaya parmağının dayanacağını sanmam :)
Biliyorsunuz metin2 oyuncularından her şey beklenir. Ben sadece fixi kullanıcak kişiler için söyledim. Bu hali zaten işi görür. :)
 
Biliyorsunuz metin2 oyuncularından her şey beklenir. Ben sadece fixi kullanıcak kişiler için söyledim. Bu hali zaten işi görür. :)
Catacomb yollarını ezbere bilen oyuncular, buga girişecek oyunculardan kat be kat daha fazla. Hal böyle olunca böyle işsizliklere yeltenecek kişi sayısı bir hayli az olur. Bu engel fazlasıyla yeterli diye düşünüyorum :)
 
Üst