- Mesaj
- 20
- Çözümler
- 1
- Beğeni
- 37
- Puan
- 673
- Ticaret Puanı
- 0
Merhabalar,
Konu girişlerinde pek başarılı olduğum söylenemez fakat konuya başlamadan önce kısa bir şekilde şunları belirtmek istiyorum:
Yakın bir zaman önce bir PvP server açmıştım. Ancak hiç bir bilgim yoktu. NPC içeriği bile düzetlemiyordum siz düşünün. Çok araştırdım, ettim derken bu Quest mevzularına kadar girdim. Bu olaya girişte şu şekilde oldu. Server'a otomatik olarak yüklenmiş biri "Otomatik Etkinlik" Questi vardı. Kafasına göre etkinlik başlatır, başlattığı etkinliği kapatmadan giderdi. Çok kişiye para teklif ettim bunu nasıl düzeltebiliriz, bizim istediğimiz gibi yazar mısınız diye. Para kaptırdığım bile oldu. Derken elim, kolum var ben neden yapamayayım gibi bir düşünceye girdim. -İyi ki de girmişim, diyorum. Çünkü yapılmayacak bir iş değilmiş. Forumlarda geziyorum, Server'im da ki mevcut Questleri inceliyorum fakat bir şey anlamıyordum.
İnternette dolaşan bilgilerin çoğu da kopyala-yapıştır formatında kaynağı olmayan bilgilerdi. Bundan sonrasını kısa geziyorum bu foruma girip sayın @Whistle 'nin konularını okuya okuya bir şeyleri anladım. Bazı şeyleri kendiniz yapmanız konusunda size de destek vermek amacı ile bu konuyu açıyorum.
Şimdi kendi olayımıza gelelim:
Öncelikle bu konu temelden başlamayacak çünkü forumda bu tip konular detaylı bir şekilde mevcut durumda. Yine de bazı hatırlatmaları yapacağım.
Quest Yazma Dersleri: Tıklayınız.
Quest Fonksiyonları ve Açıklamaları: Tıklayınız.
Quest Eklemek ve Kaldırmak: Tıklayınız.
(Konu başlıkları eklendikçe güncellenecektir.)
Konu 1: Etkinlikleri Manuel Olarak Başlatacak Ana Quest'in Yazılımı
Bu Quest'i çeşitli şekillerde tetikleyebilirsiniz, benim tercih ettiğim ve bana göre en kullanışlı olan yolu "letter" mantığı. Yani ekranınız sol tarafına gelen görevleri açtığınız bildiriler.
İlk olarak Notepad ++ ı açıyoruz.
Kodlama: ANSI
Dil: LuA olacak şekilde ayarlayıp giriş kodumuzu yazıyoruz.
Bunu bu şekilde kenara bırakıp yeni bir sayfa açıp hemen içini dolduracağımız etkinliklerin Quest'lerini oluşturmaya başlıyoruz:
Konu 1.1: Basit Etkinlik Türlerinin Yazılımı
Konu sıralamasında örnek verdiğim "Ayışığı Define Sandığı" nın etkliniği ile başlayalım. (Kodlama ve dili aynı şekilde ayarlamayı unutmayınız.)
Ayışığı Define Sandığı Etkinliği'mizin Quest'ini yazdık, şimdi daha iyi anlamanız açısından biraz detayına inelim:
Burada demek istediğimiz olay şudur (tam karşılığı olarak çeviremesemde):
"Ayışığı Define Sandığı Etkinliği aktif iken slotlardan elde edilir ve NPC'de bulunmaz."
Peki burada ne anlatmak istedik:
"local" komutunu seçeneklerimizi belirlemek üzere açtık ve seçeneklerimizi 1'den 150'ye kadar numaralandırdık.
"if 3 == s then" ile de; "Eğer 1'den 150'ye kadar olan numaralandırmalardan, 3 rakamını denk getirebilirsek/doğru bulabilirsek "50011" kodlu eşyayı yani Ayışığı Define Sandığının düşmesini istedik.
Yani düşme sıklığını değiştirmek istiyorsanız: (1, 150) olan kısmın aralığını değiştirebilirsiniz. Örneğin daha fazla düşsün derseniz (1,100); daha az düşsün derseniz (1,200) yapabilirsiniz. Tamamen size bağlı.
Yine etkinliğin Ayışığı Define Sandığı değil de başka bir eşyanın düşmesini istiyorsanız. "50011" kodlu eşyayı değiştirebilirsiniz.
Bu konu anlaşıldıysa Ayışığı Define Sandığı Etkinlik Quest'imizi ana Quest'imize yerleştirmeye geldi.
** İlk önce dikkat etmeniz gereken nokta kelime Türkçe karakter ile başlıyor/bitiyor ise tırnaktan önce/sonra birer boşluk bırakınız.
Sonra "menu" adında bir seçim ismi oluşturulmuş "Ayışığı Define Sandığı" adlı butonu ekledik. Butona tıkladığımızda "ay" adında bir seçim başlığı oluşturulmuş "Başlat", "Bitir" ve "Vazgeç" butonlarını ekledik.
Bir diğer önemli nokta ise game.set.event_flag("ayisigi",1) ya da 0 kısmında ki "ayisigi" kısmı önce ki etkinlik Quest'imizde ki ile aynı olmak zorundadır. Yoksa boşa tetikler ve eşya düşmez.
Konu 1.2: Basit-Etkileşimli Etkinlik Türlerinin Yazılımı
TR'de ki "Futbol Ateşi" etkinliğini hatırlıyor musunuz? Evet onun PVP sürümünü de şimdi biz yazalım. PVP sürümü diyorum ki çünkü TR'de 1 gün beklemeniz gerekiyordu. Biz süreyi komple kaldıralım.
İlk olarak Futbol Topu'nun düşmesini sağlayacak olan Quest'imizi yazalım. Yine Ayışığı Define Sandığı ile aynı mantıkta olacak.
Şimdi bu Questi "Altın Futbol Topu"na nasıl bağlayacağız. Hatırlasanız eğer, bu sistem NPC Yu-Hwan ile aktif oluyordu. Bizde aynı şekilde NPC Yu-Hwan'a bağlayalım.
Yeni bir dosya oluşturuyoruz.
İlk önce dikkat edilmesi gereken nokta şudur:
Bu Quest "Futbol Topu" etkinliği aktif edildiğinde çalışmaktadır. Eğer sürekli açık tutmak istiyorsanız.
yerine
yazmalısınız. Bu sayede sürekli NPC Yu-Hwan da "Futbol Ateşi" konuşması aktif kalır.
Şimdi gelelim ana Quest'imize yüklemeye:
Yalnızca "Futbol Topu" etkinliğini yüklememiz yeterli olacaktır. Çünkü "Futbol Ateşi" etkileşimini "Futbol Topu" tetiklemektedir.
Ana Quest'imize devam edecek şekilde;
"local menu" kısmına bir seçenek daha ekliyoruz.
Daha sonra seçeğimizi "Başlat", "Bitir" ve "Vazgeç" olarak yine aynı şekilde sınıflandırmamızı da yapıyoruz.
Bu işlemler bu kadardır. Quest'imizi ".quest" olarak kaydedip çıkıyoruz. Yüklemeleri yaptıktan sonra kullanabilirsiniz. Şu durumda hazırdır.
Özellikle fazla detaya girmek istemedim zamanla daha da detaylandıracağız ilk olarak biraz basitte kalması daha anlaşılır olmasına olanak sağlayacağını düşünüyorum.
Yakın bir zamanda devamını da getireceğim.
İyi forumlar...
Konu girişlerinde pek başarılı olduğum söylenemez fakat konuya başlamadan önce kısa bir şekilde şunları belirtmek istiyorum:
Yakın bir zaman önce bir PvP server açmıştım. Ancak hiç bir bilgim yoktu. NPC içeriği bile düzetlemiyordum siz düşünün. Çok araştırdım, ettim derken bu Quest mevzularına kadar girdim. Bu olaya girişte şu şekilde oldu. Server'a otomatik olarak yüklenmiş biri "Otomatik Etkinlik" Questi vardı. Kafasına göre etkinlik başlatır, başlattığı etkinliği kapatmadan giderdi. Çok kişiye para teklif ettim bunu nasıl düzeltebiliriz, bizim istediğimiz gibi yazar mısınız diye. Para kaptırdığım bile oldu. Derken elim, kolum var ben neden yapamayayım gibi bir düşünceye girdim. -İyi ki de girmişim, diyorum. Çünkü yapılmayacak bir iş değilmiş. Forumlarda geziyorum, Server'im da ki mevcut Questleri inceliyorum fakat bir şey anlamıyordum.

Şimdi kendi olayımıza gelelim:
Öncelikle bu konu temelden başlamayacak çünkü forumda bu tip konular detaylı bir şekilde mevcut durumda. Yine de bazı hatırlatmaları yapacağım.
Quest Yazma Dersleri: Tıklayınız.
Quest Fonksiyonları ve Açıklamaları: Tıklayınız.
Quest Eklemek ve Kaldırmak: Tıklayınız.
Konu Başlık Sıralaması
1. Manuel Olarak Başlatılacak Etkinliklere Ait Quest
1.1. Basit Etkinlik Türleri (Örn: Ayışığı Define Sandığı Etkinliği)
1.2. Basit - Etkileşimli Etkinlik Türleri (Örn: Futbol Topu'nun Altın Futbol Topu ile İlişkili Etkinliği)
1. Manuel Olarak Başlatılacak Etkinliklere Ait Quest
1.1. Basit Etkinlik Türleri (Örn: Ayışığı Define Sandığı Etkinliği)
1.2. Basit - Etkileşimli Etkinlik Türleri (Örn: Futbol Topu'nun Altın Futbol Topu ile İlişkili Etkinliği)
(Konu başlıkları eklendikçe güncellenecektir.)
Konu 1: Etkinlikleri Manuel Olarak Başlatacak Ana Quest'in Yazılımı
Bu Quest'i çeşitli şekillerde tetikleyebilirsiniz, benim tercih ettiğim ve bana göre en kullanışlı olan yolu "letter" mantığı. Yani ekranınız sol tarafına gelen görevleri açtığınız bildiriler.
İlk olarak Notepad ++ ı açıyoruz.
Kodlama: ANSI
Dil: LuA olacak şekilde ayarlayıp giriş kodumuzu yazıyoruz.
Lua (Quest):
quest etkinlik begin
state start begin
when letter with pc.is_gm() begin
send_letter("Etkinlik Yönetimi")
end
when info or button with pc.is_gm() begin
Bunu bu şekilde kenara bırakıp yeni bir sayfa açıp hemen içini dolduracağımız etkinliklerin Quest'lerini oluşturmaya başlıyoruz:
Konu 1.1: Basit Etkinlik Türlerinin Yazılımı
Konu sıralamasında örnek verdiğim "Ayışığı Define Sandığı" nın etkliniği ile başlayalım. (Kodlama ve dili aynı şekilde ayarlamayı unutmayınız.)
Lua (Quest):
quest ayisigi begin
state start begin
when kill with game.get_event_flag("ayisigi") == 1 and not npc.is_pc() begin
local s = number(1, 150)
if 3 == s then
game.drop_item_with_ownership("50011",1)
end
end
end
end
Ayışığı Define Sandığı Etkinliği'mizin Quest'ini yazdık, şimdi daha iyi anlamanız açısından biraz detayına inelim:
Lua (Quest):
when kill with game.get_event_flag("ayisigi") == 1 and not npc.is_pc() begin
Burada demek istediğimiz olay şudur (tam karşılığı olarak çeviremesemde):
"Ayışığı Define Sandığı Etkinliği aktif iken slotlardan elde edilir ve NPC'de bulunmaz."
Lua (Quest):
local s = number(1, 150)
if 3 == s then
game.drop_item_with_ownership("50011",1)
Peki burada ne anlatmak istedik:
"local" komutunu seçeneklerimizi belirlemek üzere açtık ve seçeneklerimizi 1'den 150'ye kadar numaralandırdık.
"if 3 == s then" ile de; "Eğer 1'den 150'ye kadar olan numaralandırmalardan, 3 rakamını denk getirebilirsek/doğru bulabilirsek "50011" kodlu eşyayı yani Ayışığı Define Sandığının düşmesini istedik.
Yani düşme sıklığını değiştirmek istiyorsanız: (1, 150) olan kısmın aralığını değiştirebilirsiniz. Örneğin daha fazla düşsün derseniz (1,100); daha az düşsün derseniz (1,200) yapabilirsiniz. Tamamen size bağlı.
Yine etkinliğin Ayışığı Define Sandığı değil de başka bir eşyanın düşmesini istiyorsanız. "50011" kodlu eşyayı değiştirebilirsiniz.
Bu konu anlaşıldıysa Ayışığı Define Sandığı Etkinlik Quest'imizi ana Quest'imize yerleştirmeye geldi.
Lua (Quest):
quest etkinlik begin
state start begin
when letter with pc.is_gm() begin
send_letter("Etkinlik Yönetimi")
end
when info or button with pc.is_gm() begin
local menu = select("Ayışığı Define Sandığı ")
if menu == 1 then
local ay = select("Başlat","Bitir","Vazgeç ")
if ay == 1 then
game.set.event_flag("ayisigi",1)
elseif ay == 2 then
game.set.event_flag("ayisigi",0)
elseif ay == 3 then
return
end
end
end
end
end
** İlk önce dikkat etmeniz gereken nokta kelime Türkçe karakter ile başlıyor/bitiyor ise tırnaktan önce/sonra birer boşluk bırakınız.
Sonra "menu" adında bir seçim ismi oluşturulmuş "Ayışığı Define Sandığı" adlı butonu ekledik. Butona tıkladığımızda "ay" adında bir seçim başlığı oluşturulmuş "Başlat", "Bitir" ve "Vazgeç" butonlarını ekledik.
Bir diğer önemli nokta ise game.set.event_flag("ayisigi",1) ya da 0 kısmında ki "ayisigi" kısmı önce ki etkinlik Quest'imizde ki ile aynı olmak zorundadır. Yoksa boşa tetikler ve eşya düşmez.
Konu 1.2: Basit-Etkileşimli Etkinlik Türlerinin Yazılımı
TR'de ki "Futbol Ateşi" etkinliğini hatırlıyor musunuz? Evet onun PVP sürümünü de şimdi biz yazalım. PVP sürümü diyorum ki çünkü TR'de 1 gün beklemeniz gerekiyordu. Biz süreyi komple kaldıralım.
İlk olarak Futbol Topu'nun düşmesini sağlayacak olan Quest'imizi yazalım. Yine Ayışığı Define Sandığı ile aynı mantıkta olacak.
Lua (Quest):
quest futbol begin
state start begin
when kill with game.get_event_flag("futbol") == 1 and not npc.is_pc() begin
local s = number(1, 150)
if 3 == s then
game.drop_item_with_ownership("50096",1)
end
end
end
end
Şimdi bu Questi "Altın Futbol Topu"na nasıl bağlayacağız. Hatırlasanız eğer, bu sistem NPC Yu-Hwan ile aktif oluyordu. Bizde aynı şekilde NPC Yu-Hwan'a bağlayalım.
Yeni bir dosya oluşturuyoruz.
Lua (Quest):
quest goldfutbol begin
state start begin
when 20017.chat."Futbol ateşi" with game.get_event_flag("futbol") == 1 begin
say_title("Yu-Hwan:")
say("")
say("Merhaba ben kesinlikle büyük futbol,")
say("fanatiğiyim. Futbol'un bir ölüm kalım")
say("meselesi olduğunu düşünüyorum. Biz erkekler")
say("bu oyunun hakkını vermeliyiz. Kız gibi")
say("oynayanlara yer yok!")
wait()
say_title("Yu-Hwan:")
say("")
say("Hayatında bir kere bile gol atamayan adamlar")
say("tanıyorum ben! Bunların çaresi ne aslında")
say("biliyor musun? Büyülü toplar!")
say("Büyülü top ne mi?")
say("")
say("Tabii ki altına bezenmiş futboldaki mükemmelliğin")
say("sahadaki adı! Bana 10 adet Futbol Topu geririr isen,")
say("sana Altın Futbol Topu verebilirim.")
local futbol = select("Altın top istiyorum.")
if pc.count_item(50096) < 10 then
say_title("Yu-Hwan:")
say("")
say("Yeterli top yok.")
else
say_title("Yu-Hwan:")
say("")
say("Bir futbol!")
say("Biraz bekle...")
say("Birazdan sana altın top yapacağım...")
wait()
say("Ah! İşte futbol topları! Bekle birazdan")
say("seninle topları takas edeceğiz.")
pc.remove_item(50096, 10)
pc.give_item2(50265, 1)
end
end
end
end
İlk önce dikkat edilmesi gereken nokta şudur:
Bu Quest "Futbol Topu" etkinliği aktif edildiğinde çalışmaktadır. Eğer sürekli açık tutmak istiyorsanız.
Lua (Quest):
when 20017.chat."Futbol ateşi" with game.get_event_flag("football") == 1 begin
yerine
Lua (Quest):
when 20017.chat."Futbol ateşi" begin
yazmalısınız. Bu sayede sürekli NPC Yu-Hwan da "Futbol Ateşi" konuşması aktif kalır.
Şimdi gelelim ana Quest'imize yüklemeye:
Yalnızca "Futbol Topu" etkinliğini yüklememiz yeterli olacaktır. Çünkü "Futbol Ateşi" etkileşimini "Futbol Topu" tetiklemektedir.
Lua (Quest):
quest etkinlik begin
state start begin
when letter with pc.is_gm() begin
send_letter("Etkinlik Yönetimi")
end
when info or button with pc.is_gm() begin
local menu = select("Ayışığı Define Sandığı ","Futbol Topu")
if menu == 1 then
local ay = select("Başlat","Bitir","Vazgeç ")
if ay == 1 then
game.set.event_flag("ayisigi",1)
elseif ay == 2 then
game.set.event_flag("ayisigi",0)
elseif ay == 3 then
return
end
if menu == 2 then
local futbol = select("Başlat","Bitir","Vazgeç ")
if futbol == 1 then
game.set.event_flag("futbol",1)
elseif futbol == 2 then
game.set.event_flag("futbol",0)
elseif futbol == 3 then
return
end
end
end
end
end
Ana Quest'imize devam edecek şekilde;
"local menu" kısmına bir seçenek daha ekliyoruz.
Daha sonra seçeğimizi "Başlat", "Bitir" ve "Vazgeç" olarak yine aynı şekilde sınıflandırmamızı da yapıyoruz.
Bu işlemler bu kadardır. Quest'imizi ".quest" olarak kaydedip çıkıyoruz. Yüklemeleri yaptıktan sonra kullanabilirsiniz. Şu durumda hazırdır.
Özellikle fazla detaya girmek istemedim zamanla daha da detaylandıracağız ilk olarak biraz basitte kalması daha anlaşılır olmasına olanak sağlayacağını düşünüyorum.
Yakın bir zamanda devamını da getireceğim.
İyi forumlar...
