Çok eski bir web tarayıcısı kullanıyorsunuz. Bu veya diğer siteleri görüntülemekte sorunlar yaşayabilirsiniz.. Tarayıcınızı güncellemeli veya alternatif bir tarayıcı kullanmalısınız.
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!
Sırada timer var. 3 çeşit timer vardır.
Kod:
timer()
server_timer()
loop_timer()
Bunlar adı üstünde zamanlayıcılar. Yani bir şey yaparsınız. Sonuna timer koyarsınız. Belirlediğiniz süre geçtikten sonra istediğiniz bir şeyi yapar. Peki neden 3 çeşit timer var? Farkları ne?
Kod:
timer(): normal bir zamanlayıcıdır. Ek bir fonksiyonu yoktur.
server_timer(): Bu da timer() komutu ile aynı şeyi yapar. Ama bu komutla yine güzel bir komut olan get_server_timer_arg() kullanılabilir. Ayrıntısından birazdan bahsedeceğim.
loop_timer(): Adı üstünde bir döngü şeklindedir. Bir süre belirlersiniz ve bu timer sürekli kendini tekrarlar. Şimdi örneklerle daha kolay anlayacaksınız.
Ayrıca timerlara başladığımıza göre artık bir quest içinde birden fazla when komutu kullanımını da bu örneklerle açıklayabiliriz.
Önce bir queste başlayalım.
Kod:
quest ornek_quest begin
state start begin
when login with not pc.is_gm() and pc.get_map_index() == 79 and pc.getqf("lider") == 1 begin
timer("disari_yolla",600)
notice_in_map("10 dakika sonra dışarı ışınlanacaksınız.")
end
when disari_yolla.timer begin
warp_all_to_village(79)
end
end
end
Buradaki "lider" e takılmayın onu kafadan salladım.
Şimdi bu questte bir timer kullandım. Ayrıca 2 defa when kullandım. Bu nasıl oldu? Şimidye kadar hep bir defa when kullandık.
Arkadaşlar bir quest içinde when i de state i de istediğiniz kadar kullanabilirsiniz. Yeter ki bir önceki when i ya da state i end komutu ile bitirin. whenin kullanımı basittir ama state i sonlandırıp yeni bir state başlatmak için araya bağlantıyı sağlayacak komutu girmek lazım. Neyse şimdi state i geçelim bizim işimiz when ile.
Bu end olayı şöyledir. ilk koyduğunuz end son kullandığınız komutu bitirir. Yani ben burda ne kullandım? quest, state, when. ilk koyduğum end son koyduğum when i bitirdi. Eğerki ben bu whenden sonra bir de if kullansaydım, bu when kısmını bitirmem için 2 tane end kullanmam gerekecekti. Tahmin edersiniz ki state'i bitirmek için de bir end daha koymak gerekecekti.
Bu quesste ne yaptık? Bir kişi map index i 79 olan bir haritaya girdi ve bu kişinin qf("lider")'i 1. Şartları sağladığını düşünüyoruz. Bunlar hikaye kısmı. Her neyse oyuncu haritaya giriş yaptı ve haritadaki tüm oyuncuları 10 dakika sonra dışarı atacağım diye uyardım.(notice_in_map komutu) Sonra 10 dakika dolunca da dışarı yollamak (burada tüm oyuncuları köye yollama kodunu kullandım) için when disari_yolla.timer begin le yeni bir when başlattım. Bu questin bir sakıncası var. Hazır yeri gelmişken ona değinelim. Burada haritaya giriş yapan oyuncu eğer bu haritadan timer dolmadan çıkarsa nolur? timer işlemez. Bunun önüne de şu şekilde geçeriz;
Kod:
quest ornek_quest begin
state start begin
when login with not pc.is_gm() and pc.get_map_index() == 79 and pc.getqf("lider") == 1 begin
server_timer("disari_yolla",600,get_server_timer_arg())
notice_in_map("10 dakika sonra dışarı ışınlanacaksınız.")
end
when disari_yolla.server_timer begin
warp_all_to_village(79)
end
end
end
Yukarıdaki gibi server_timer kullanırsak oyuncu o haritadan çıksa bile orada timer işlemeye devam eder. Bir de loop_timer a örnek verip timerları bitirelim.
Kod:
quest ornek_quest begin
state start begin
when login with pc.is_gm() begin
cleartimer("duyuru")
loop_timer("duyuru",600)
end
when duyuru.timer begin
notice_all("Bu oyun bilmem ne bilişime aittir.")
end
end
end
Bu quest ne yapar? Oyuna bir gm girdiğinde işlemeye başlar. Peki neden cleartimer koydum? Login komutundan dolayı. Eğer bu komutu koymazsam gm her oyuna girdiğinde ya da bi yere ışınlandığında bu timer tekrar tekrar başlayacak. Bu da sürekli saçma sapan zamanlarda duyuru geçmesine neden olabilir. Benim yaptğım şekilde gm oyuna her girdiğinde bir önceki timer sıfırlanıp tekrar timer başlatılır. Bu quest 10 dakikada bir duyuru geçer.