romegames 1
romegames
Bvural41 1
Bvural41
Best Studio 1
Best Studio
BlackFullMoon 1
BlackFullMoon
NovaLst 1
NovaLst
SLyFeLLowTR 1
SLyFeLLowTR
xranzei 1
xranzei
InfernoShade 1
InfernoShade
shrpnl 1
shrpnl
D 1
delimuratt
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Quest Yazma Dersleri 3

  • Konuyu başlatan Konuyu başlatan sekoceza
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 4
  • Görüntüleme Görüntüleme 648

sekoceza

Level 6
TM Üye
Üye
Katılım
21 Kas 2009
Konular
234
Mesajlar
1,116
Reaksiyon Skoru
150
Altın Konu
0
TM Yaşı
16 Yıl 6 Ay 23 Gün
Başarım Puanı
132
MmoLira
18
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!

Ş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.
 
Teşekkürler.
 
teşekkürler
 
Paylaşım İçin Teşekkürler.
 

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

Geri
Üst