GUI Butonları İle Quest Çalıştırma

Whistle

I LIKE LikapaTR
Kurucu
Kurumsal Üye
Geliştirici
Yardımsever Üye
Mesaj
11.905
Çözümler
564
Beğeni
13.270
Puan
5.915
Ticaret Puanı
2
Merhaba arkadaşlar,
Normalde 5. ünitede bu konuyu anlatacaktım ama şöyle bi yardım konusu açıldığından dolayı bekletmemek için yazılı bi rehber paylaşma kararı aldım.
Yardım - Python Butonu Queste bağlamak?

Başlamadan önce dikkat;
Bu konuda yazılanları anlamak için Metin2 Geliştirici Eğitimi 5. üniteyi ve 4. üniteyi izlemeniz gerekmektedir.
Eğitimlerin konusu: Metin2 Geliştirici Eğitimi Video Serisi

Tuş oluşturmayı filan anlatmayacağım için nasıl oluşturulacağını öğrenmek istiyorsanız bunu izleyin;


Giriş kısmında tüm dediklerimi uyguladıysanız artık bu konuya devam edebilirsiniz. Buton ile questleri tetiklemek için ilk önce tetikleyeceğiniz questten qid değerini almamız gerekiyor.
Örnek;
Lua (Quest):
Genişlet Daralt Kopyala
quest yaziyazdir begin
    state start begin
        when login begin
            cmdchat("yaziyazdir "..q.getcurrentquestindex())
        end

        when button or info begin
            syschat("Bu benim ilk Lua to Python uygulamam. MMO Tutkunları")
        end
    end
end

Bunu yazdıktan sonra root/constInfo.py dosyasına bir sabit oluşturun;
Python:
Genişlet Daralt Kopyala
MMOTUTKUNLARI_YAZI_YAZDIR = 0

Daha sonra cmdchat komutu ile gelen verileri alabilmek için root/game.py altında düzenleme yapmamız gerekiyor.
Aratın;
Python:
Genişlet Daralt Kopyala
def __ServerCommand_Build(self):

Kod içinde diziler olacak. Müsahit bir yere yeni bir tane oluşturun. Örnek;
Python:
Genişlet Daralt Kopyala
            "yaziyazdir"        : self.__MMOTutkunlariYaziYazdir,

Daha sonra game.py en alt kısımlara bir yere fonksiyonumuzu tanımlıyoruz.
Python:
Genişlet Daralt Kopyala
    def __MMOTutkunlariYaziYazdir(self, qid):
        constInfo.MMOTUTKUNLARI_YAZI_YAZDIR = int(qid)


Bu şekilde oyuna her giriş yaptığınızda tuş ile tetiklemek istediğiniz questin id değerini alabileceksiniz. Farklı yöntemler ile de idler alınır ama geleneksel kullanım bu şekilde. Bundan gerisi artık yapacağınız sisteme göre butonlara event aktarmak.
Anlayabilmeniz için devam edelim...
Python:
Genişlet Daralt Kopyala
self.yaziYazdirBtn = self.GetChild("MMOTutkunlariYaziYazdirBtn")
Python:
Genişlet Daralt Kopyala
self.yaziYazdirBtn.SetEvent(ui.__mem_func__(self.MMOTutkunlariYaziYazdir))

Python:
Genişlet Daralt Kopyala
    def MMOTutkunlariYaziYazdir(self):
        qid = constInfo.MMOTUTKUNLARI_YAZI_YAZDIR
        event.QuestButtonClick(qid)

Artık butona tıkladığınızda quest çalışacak. Bu rehber konusu için basit bi uygulama anlattım. Tuşa tıkladığınız zaman chatte yazı yazacak.
 
konudaki işlemleri anlıyamadığım için farklı bir kaynaktan bakarak yaptım.
buton işlevsiz oluyor. Yorum yaparak üstteki konuyu yapmaya çalıştım buton yine işlevsiz oldu.

Benzeri olan konuları araştırdım net birşey bulamadım.

Örnek alabiliceğim bir ufak yazılmış python var mı kendime göre uyarlayabileceğim. Fazla ayrıntısı olmayan.

istiyen olursa gerekli py dosyalarını atarım kendiside dener bir hata syserr almıyorum buton işlevsiz oluyor.
 
Konudaki videoyu izleyerek butonların nasıl eklendiğini öğrenebilirsiniz
 
Videoyu aktif ettim. Sayfayı yenileyiniz. :)
 
keşke daha çok python örnekleri yada udemy videoları gelse harika olur.oyunun python ve C kısmı çok önemli bu ikisi üzerinde daha çok durulmalı
 
Üst