- 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
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:
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:
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;
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;
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;
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.
Ş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.
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.
- Katılım
- 22 Tem 2014
- Konular
- 163
- Mesajlar
- 1,890
- Çözüm
- 3
- Online süresi
- 12d 16h
- Reaksiyon Skoru
- 219
- Altın Konu
- 0
- Başarım Puanı
- 170
- Yaş
- 26
- MmoLira
- 1,006
- DevLira
- 0
Teşekkürler.
- 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
Teşekkürler.
işinizi gördüysem ne mutlu bana
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 10
- Görüntüleme
- 328




