Ş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.
Quest Yazma Dersleri 3
Metin2 Lobby olarak, Metin2 quest sistemine odaklanan bu yazı dizimizin 3. bölümüne hoş geldiniz. Bu bölümde, Metin2 quest geliştirme sürecinde önemli olan quest chain, quest timer ve quest flag gibi gelişmiş konulara değineceğiz. Metin2 quest yazma konusunda uzmanlaşmak isteyen geliştiriciler için kritik bilgiler barındıran bu ders, özellikle lua quest scriptlerinde daha derinlemesine bilgi edinmenizi sağlayacaktır.
Quest Chain Nedir?
Metin2 quest sistemlerinde, oyuncuların takip edeceği belirli bir yolculuk oluşturmak için quest chain yapısı oldukça önemlidir. Bir quest tamamlandığında bir sonraki quest otomatik olarak aktif hale gelir veya bir önceki questin tamamlanması, bir sonraki questin açılmasını sağlar. Bu yapı sayesinde oyuncular, belirli bir hikaye akışına göre ilerler. Örneğin, bir NPC'ye talkedığınızda 'Görev 1' başlar. Görevi tamamladığınızda, 'Görev 2' otomatik olarak aktif olur. Bu, hem oyuncu deneyimini artırır hem de sunucunuzdaki.quest sistemini daha profesyonel hale getirir.
Quest Timer Kullanımı
Bazı görevlerin belirli bir süre içinde tamamlanması gerekir. İşte burada devreye quest timer girer. Timer kullanarak, bir questin ne kadar sürede tamamlanması gerektiğini belirleyebilirsiniz. Örneğin, bir oyuncuya '30 dakika içinde 10 adet canavar öldür' görevi verebilirsiniz. Eğer görev süresi dolmadan tamamlanmazsa quest başarısız olur. Bu yapı, Metin2 quest sistemlerinde zaman tabanlı görevler oluşturmak için idealdir. Timer kullanımı, lua[/COORD] içinde settimer ve clear_timer fonksiyonları ile sağlanır.
Quest Flag Ne İşe Yarar?
Metin2 quest sistemlerinde flag mekanizması, oyuncunun durumunu takip etmek için kullanılır. Oyuncunun bir görevi bitirip bitirmediğini, bir NPC ile konuşup konuşmadığını ya da bir iteme sahip olup olmadığını kontrol etmek için flag kullanılır. Bu değerler, quest scriptleri içinde pc.setqf() ve pc.getqf() gibi fonksiyonlarla ayarlanır ve okunur. Flag sistemi, questler arası geçişlerde ve özel durumların kontrolünde oldukça faydalıdır. Özellikle custom quest geliştirirken, flag kullanımı kaçınılmazdır.
Quest Debug ve Hata Ayıklama
Metin2 quest geliştirirken, hatalarla karşılaşmak kaçınılmazdır. Özellikle lua quest yazarken syntax hataları ya da mantık hataları oluşabilir. Quest debug işlemleri, bu hataları tespit etmede büyük kolaylık sağlar. Sunucu loglarını kontrol etmek, questin nerede takıldığını anlamak için önemlidir. Ayrıca, test sunucusunda questi farklı kullanıcılarla denemek, potansiyel sorunları önceden yakalamayı sağlar. Debug işlemleri sırasında say(), notice() gibi fonksiyonlar kullanılır.
Daily Quest Sistemleri
Metin2 sunucularında daily quest sistemleri, oyuncuların her gün aynı görevleri tekrar tekrar yapabilmesini sağlar. Bu görevler genellikle günlük ödül verir ve oyuncuların aktif kalmasını teşvik eder. Daily quest sistemi oluştururken, flag ve timer sistemleri doğru entegre edilmelidir. Örneğin, bir oyuncu günlük görevi tamamladığında bir flag değeri değişir ve 24 saat boyunca bu görevi tekrar alamaz.
Sonuç
Metin2 quest yazma konusunda ilerlemek istiyorsanız, lua dilini iyi bilmek, quest chain, timer, flag gibi yapıları doğru kullanabilmek çok önemlidir. Metin2 Lobby olarak bizler, bu tür gelişmiş quest sistemlerini destekleyen kaynaklar sunmaya devam ediyoruz. Quest geliştirme konusunda daha fazla bilgi için sitemizi takip etmeyi unutmayın!
Quest Writing Lessons 3
Welcome to the third part of our article series focusing on the Metin2 quest system here at Metin2 Lobby. In this section, we will cover advanced topics such as quest chain, quest timer, and quest flag, which are crucial in the process of developing Metin2 quests. This lesson provides in-depth information for developers looking to specialize in writing lua quests.
What is Quest Chain?
In Metin2 quest systems, the quest chain structure is essential for creating a specific journey that players must follow. When one quest is completed, the next quest may automatically become active, or completing a previous quest might unlock the next one. This structure allows players to progress along a particular storyline. For example, talking to an NPC might start 'Quest 1'. Upon completion, 'Quest 2' becomes active. This enhances the player experience and makes your quest system more professional.
Using Quest Timer
Some quests require completion within a specific time frame. That's where the quest timer comes into play. With timers, you can set how long a player has to finish a quest. For instance, you could give a player a task like 'Kill 10 monsters within 30 minutes'. If the quest isn't completed before the time runs out, it fails. This structure is ideal for creating timed events in Metin2 quest systems. Timer usage is handled within lua via functions like settimer and clear_timer.
What Does Quest Flag Do?
In Metin2 quest systems, the flag mechanism is used to track a player's status. Flags allow checking whether a player has finished a quest, spoken with an NPC, or owns a certain item. These values are set and read inside quest scripts using functions like pc.setqf() and pc.getqf(). The flag system is very useful for transitions between quests and handling special conditions. Especially when developing custom quests, using flags is unavoidable.
Quest Debugging and Error Handling
When developing Metin2 quests, encountering errors is inevitable. Particularly when writing lua quests, syntax or logical errors may occur. Quest debugging helps identify these issues. Checking server logs is important to understand where the quest gets stuck. Additionally, testing the quest with different users on a test server can help catch potential problems early. During debugging, functions like say(), notice() are often used.
Daily Quest Systems
On Metin2 servers, daily quest systems allow players to repeat the same tasks each day. These quests typically offer daily rewards and encourage player engagement. When creating a daily quest system, flags and timers should be properly integrated. For example, once a player completes a daily quest, a flag value changes so that the same quest cannot be taken again for 24 hours.
Conclusion
To advance in Metin2 quest writing, mastering the lua language and correctly utilizing structures like quest chain, timer, and flag are essential. At Metin2 Lobby, we continue to provide resources supporting such advanced quest systems. Follow our site for more information on quest development!
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.
Quest Yazma Dersleri 3
Metin2 Lobby olarak, Metin2 quest sistemine odaklanan bu yazı dizimizin 3. bölümüne hoş geldiniz. Bu bölümde, Metin2 quest geliştirme sürecinde önemli olan quest chain, quest timer ve quest flag gibi gelişmiş konulara değineceğiz. Metin2 quest yazma konusunda uzmanlaşmak isteyen geliştiriciler için kritik bilgiler barındıran bu ders, özellikle lua quest scriptlerinde daha derinlemesine bilgi edinmenizi sağlayacaktır.
Quest Chain Nedir?
Metin2 quest sistemlerinde, oyuncuların takip edeceği belirli bir yolculuk oluşturmak için quest chain yapısı oldukça önemlidir. Bir quest tamamlandığında bir sonraki quest otomatik olarak aktif hale gelir veya bir önceki questin tamamlanması, bir sonraki questin açılmasını sağlar. Bu yapı sayesinde oyuncular, belirli bir hikaye akışına göre ilerler. Örneğin, bir NPC'ye talkedığınızda 'Görev 1' başlar. Görevi tamamladığınızda, 'Görev 2' otomatik olarak aktif olur. Bu, hem oyuncu deneyimini artırır hem de sunucunuzdaki.quest sistemini daha profesyonel hale getirir.
Quest Timer Kullanımı
Bazı görevlerin belirli bir süre içinde tamamlanması gerekir. İşte burada devreye quest timer girer. Timer kullanarak, bir questin ne kadar sürede tamamlanması gerektiğini belirleyebilirsiniz. Örneğin, bir oyuncuya '30 dakika içinde 10 adet canavar öldür' görevi verebilirsiniz. Eğer görev süresi dolmadan tamamlanmazsa quest başarısız olur. Bu yapı, Metin2 quest sistemlerinde zaman tabanlı görevler oluşturmak için idealdir. Timer kullanımı, lua[/COORD] içinde settimer ve clear_timer fonksiyonları ile sağlanır.
Quest Flag Ne İşe Yarar?
Metin2 quest sistemlerinde flag mekanizması, oyuncunun durumunu takip etmek için kullanılır. Oyuncunun bir görevi bitirip bitirmediğini, bir NPC ile konuşup konuşmadığını ya da bir iteme sahip olup olmadığını kontrol etmek için flag kullanılır. Bu değerler, quest scriptleri içinde pc.setqf() ve pc.getqf() gibi fonksiyonlarla ayarlanır ve okunur. Flag sistemi, questler arası geçişlerde ve özel durumların kontrolünde oldukça faydalıdır. Özellikle custom quest geliştirirken, flag kullanımı kaçınılmazdır.
Quest Debug ve Hata Ayıklama
Metin2 quest geliştirirken, hatalarla karşılaşmak kaçınılmazdır. Özellikle lua quest yazarken syntax hataları ya da mantık hataları oluşabilir. Quest debug işlemleri, bu hataları tespit etmede büyük kolaylık sağlar. Sunucu loglarını kontrol etmek, questin nerede takıldığını anlamak için önemlidir. Ayrıca, test sunucusunda questi farklı kullanıcılarla denemek, potansiyel sorunları önceden yakalamayı sağlar. Debug işlemleri sırasında say(), notice() gibi fonksiyonlar kullanılır.
Daily Quest Sistemleri
Metin2 sunucularında daily quest sistemleri, oyuncuların her gün aynı görevleri tekrar tekrar yapabilmesini sağlar. Bu görevler genellikle günlük ödül verir ve oyuncuların aktif kalmasını teşvik eder. Daily quest sistemi oluştururken, flag ve timer sistemleri doğru entegre edilmelidir. Örneğin, bir oyuncu günlük görevi tamamladığında bir flag değeri değişir ve 24 saat boyunca bu görevi tekrar alamaz.
Sonuç
Metin2 quest yazma konusunda ilerlemek istiyorsanız, lua dilini iyi bilmek, quest chain, timer, flag gibi yapıları doğru kullanabilmek çok önemlidir. Metin2 Lobby olarak bizler, bu tür gelişmiş quest sistemlerini destekleyen kaynaklar sunmaya devam ediyoruz. Quest geliştirme konusunda daha fazla bilgi için sitemizi takip etmeyi unutmayın!
Quest Writing Lessons 3
Welcome to the third part of our article series focusing on the Metin2 quest system here at Metin2 Lobby. In this section, we will cover advanced topics such as quest chain, quest timer, and quest flag, which are crucial in the process of developing Metin2 quests. This lesson provides in-depth information for developers looking to specialize in writing lua quests.
What is Quest Chain?
In Metin2 quest systems, the quest chain structure is essential for creating a specific journey that players must follow. When one quest is completed, the next quest may automatically become active, or completing a previous quest might unlock the next one. This structure allows players to progress along a particular storyline. For example, talking to an NPC might start 'Quest 1'. Upon completion, 'Quest 2' becomes active. This enhances the player experience and makes your quest system more professional.
Using Quest Timer
Some quests require completion within a specific time frame. That's where the quest timer comes into play. With timers, you can set how long a player has to finish a quest. For instance, you could give a player a task like 'Kill 10 monsters within 30 minutes'. If the quest isn't completed before the time runs out, it fails. This structure is ideal for creating timed events in Metin2 quest systems. Timer usage is handled within lua via functions like settimer and clear_timer.
What Does Quest Flag Do?
In Metin2 quest systems, the flag mechanism is used to track a player's status. Flags allow checking whether a player has finished a quest, spoken with an NPC, or owns a certain item. These values are set and read inside quest scripts using functions like pc.setqf() and pc.getqf(). The flag system is very useful for transitions between quests and handling special conditions. Especially when developing custom quests, using flags is unavoidable.
Quest Debugging and Error Handling
When developing Metin2 quests, encountering errors is inevitable. Particularly when writing lua quests, syntax or logical errors may occur. Quest debugging helps identify these issues. Checking server logs is important to understand where the quest gets stuck. Additionally, testing the quest with different users on a test server can help catch potential problems early. During debugging, functions like say(), notice() are often used.
Daily Quest Systems
On Metin2 servers, daily quest systems allow players to repeat the same tasks each day. These quests typically offer daily rewards and encourage player engagement. When creating a daily quest system, flags and timers should be properly integrated. For example, once a player completes a daily quest, a flag value changes so that the same quest cannot be taken again for 24 hours.
Conclusion
To advance in Metin2 quest writing, mastering the lua language and correctly utilizing structures like quest chain, timer, and flag are essential. At Metin2 Lobby, we continue to provide resources supporting such advanced quest systems. Follow our site for more information on quest development!
