Web Sitemizde 32 Kategoride 30 makale yazılmıştır. Bugüne kadar 5404 kez ziyaret edilmiştir!


( Merhaba arkadaşlar quest derslerine aşağıdaki bağlantılardan gidebilirsiniz. Dersler birbirinin devamıdır. )

quest DERS 1  GİTMEK İÇİN TIKLA

quest DERS 2  GİTMEK İÇİN TIKLA

quest DERS 3  GİTMEK İÇİN TIKLA

quest DERS 4  GİTMEK İÇİN TIKLA

quest DERS 5  GİTMEK İÇİN TIKLA

 

 

 

 

Başlıyalım

Şimdi daha fazla içlere girmeden önce with komutunun kullanılışına bakalım. Bu komutu hem if komutu hem de when komutu ile kullanabilirsiniz. Aslından bir bakıma when ile beraber kullanıldığında sizi if komutu kullanmaktan kurtarır. with Türkçede "bununla birlikte" anlamına gelir. Kullanışı için örnek verelim:
 

Kod:

quest ornek_quest begin
   state start begin
     when login with pc.level() == 75 begin
        say("Tebrikler. 75. seviye olmuşsun.")
     end
   end
end

Yukarıdaki questte şunu yaptık. Bir oyuncu 75. seviye olarak oyuna giriş yaptığında ekranında Tebrikler. 75.seviye olmuşsun. yazısı çıkar. Hatırlarsanız daha önce şöyle yapmıştık:
 

Kod:

quest ornek_quest begin
   state start begin
     when login begin
        if pc.level() == 75 then
          say("Tebrikler. 75. seviye olmuşsun.")
        end
     end
   end
end

Bu son yazdığım 2 quest aynı şeyi yapar. Tek fark gereksiz yere if kullanmadan with ile olayı bağladım. Eğer 75 level olmayanlar için de bir şeyler yapacaksam, if kullanmakta fayda var. Çünkü diğerleri için elseif ya da else kullanacağım. with ile de bu yapılabilir fakat iş daha da uzar. Hangi komutu ne zaman kullanacağımızı bilmek lazım.

Şimdi basit bir komut olan wait() komutundan bahsedelim kısaca. Diyelim ki chat ya da use kullanarak hazırladığınız bir quest var. say("") komutu kullanarak bir sayfa yazı yazdınız ve sayfa yetmiyor. Diğer sayfaya geçmek için araya wait() koyuyorsunuz. Bu oyunun içine "Devam" olarak yansıyor. Örneğin;
 

Kod:

quest ornek_quest begin
   state start begin
      when 20000.chat."deneme quest" begin
      say("bilmem ne bilmem ne")
      say("kem küm kem küm")
      wait()
      say("Bilmem ne bilmem ne")
      end
   end
end


Yukarıdaki gibi kullanabilirsiniz.


Sırada daha önce söylediğim şeyi anlatmaya geldi. Mesela bir oyuncuya oyuna ilk girişinde item vermek istiyorsunuz. Örneğin give_start_weapon.quest dosyasındaki gibi. Şimdi şöyle bir şey var. Eğer questi şu şekilde yazarsanız;
 

Kod:

quest ornek_quest begin
   state start begin
      when login begin
      pc.give_item2("109",1)
      end
   end
end

Bu oyuncu her karakter attığında tekrar item alacaktır. Bunu nasıl engelleriz. İşte bizim jokerimiz: pc.setqf() ve pc.getqf(). Bu komutları çok sevin 

Şimdi bu komutlar ne yapar? Bu komutlar mysql deki player> quest dizinine kayıt yapar. Yani siz bir questte bu komutu kullanırsanız kayıt tutulacak. 2. defa aynı şeyi yaptığınızda o quest sizin için çalışmayacak. Örneğin;
 

Kod:

quest ornek_quest begin
   state start begin
      when login with pc.getqf("yaptinmi") == 0 begin
       pc.give_item2("109",1)
       pc.setqf("yaptinmi",1)
       end
   end
end

Ne yaptık? pc.getqf("yaptinmi") ile daha önce bu kelime için bir kayıt yapılmış mı baktık. Eğer bu quest içinde hiç pc.setqf("yaptinmi",1) ya da 2,3... gibi bir şey kullanmadıysanız o kişi için pc.getqf("yaptinmi") 0'dır. Ben şimdi yazdığım pc.setqf("yaptinmi",1) ile bu oyuncuya eşyayı verdikten sonra kayıt tutturdum. Bir daha ki girişlerinde aynı eşyayı alamayacak. Peki bu qf ne zaman silinir derseniz sonsuza kadar kalır. Tabi siz mysql player içindeki questi silmezseniz.

Şimdi ise diğer jokerlerimize geçelim. game.set_event_flag() ve game.get_event_flag()'ı da çok sevin  Bu komutları şöyle düşünün. qf komutları yani bir üstteki komutlar sadece bir oyuncu içindi. bu game.set_event_flag() ve game.get_event_flag() oyunun tamamı için aynı şeyi yapıyor. Ama bunun daha güzel bir yanı var gm karakterinizle bu komutu oyun içinde kontrol edebilirsiniz. Ve ayrıca bu komut sadece tek quest için değildir. Tüm questleri etkiler. Yani bi questte bu komutu kullandıysanız diğer questlerde de bu komuta bağlı bir şey varsa onu da etkiler. Ama yanlış anlamanızı istemem. Aynı kelime için kullandığınız komutlardan bahsediyorum. Örnekle daha güzel anlatacağıma inanıyorum.
 

Kod:

quest ornek_quest begin
   state start begin
      when login with game.get_event_flag("uyari") == 1 begin
         notice("xxx etkinliği devam ediyor.")
      end
   end
end

Şimdi bu quest napar? eğer event_flag("uyari") 1 ise oyuna giren oyuncuya uyarı verir. Oyun içinden bu komutu kontrol edebileceğimizi söylemiştim peki nasıl yapıcaz? Şu şekilde. Gm karakterinizden /e uyari 1 yazdığınızda bu quest çalışmaya başlar. Yani oyuna giren oyuncuya uyarı vermeye başlayacaktır. Bu komut nelerde var? Mesela o x yarışması'nın questi bu komutla ilgili. /e uyari 0 ya da 1 den farklı bir sayı yazarsanız bu quest çalışmayacaktır.

 

devamı ders 3'te ...

 

 

www.xbilge.com



Ücretsiz Hosting
Xbilgeye Destek Ol deneme