Ön Bilgi:
Aslında sh make.sh toplu derleme işleminden başka birşey değildir ve shell'in içinde yazılı olan kod gereği tüm object'i siler ve baştan hongkong_list veya locale_list içindeki önceden yazılmış tüm questleri tek tek derler.
-Server'ınıza yeni bir quest eklerken,
-Mevcut bir quest'i düzenlerken
vs. birçok durumda sh make.sh çekmemiz gerekebilir.
Yeni Quest Ekleme:
Bu ön bilgileri geçtikten sonra, yeni bir quest ekleyeceğimizde
Örn: merhaba.quest isimli dosyamıza quest'i yazdık,
önceden bildiğimiz yöntemlerle bunu filezilla'dan (veya herhangi başka bir ftp programı) sunucumuza
Kod:
/usr/rain/channel/share_data/locale/hongkong/quest /usr/game/channel/share_data/locale/hongkong/quest /usr/game/share/locale/turkey/quest
Kod:
cd /usr/rain/channel/share_data/locale/hongkong/quest veya cd /usr/game/channel/share_data/locale/hongkong/quest veya cd /usr/game/share/locale/turkey/quest
./qc merhaba.quest yazıp {ENTER}'a basıyoruz.
(Burada karşımıza gelen yazılar ve buradan quest problemlerini çözmeyi isteğe göre bir başka konuda anlatabilirim.)
Küçük bir tavsiye: quest'inizin tam doğru çalışacağından emin olmak için her quest'inizin sonuna (en son end'den önce) aşağıdaki kodu ekleyebilirsiniz. Bu sayede gelen yazılardan en sonda __COMPLETE__ çıktığında quest'iniz doğru olarak derlenmiş olacaktır.
(Herhangi bir probleme sebep olmaz.)
Kod:
state __COMPLETE__ begin when enter begin q.done() end end
Quest ekleme işlemi tamam fakat değiştirdiğimiz bir quest'i derlerken ne yapacağız. Burası birazcık uzun gelebilir ama yaptıktan sonra sebebini anlarsınız.
(Düzenleme yapmadan önce)
Şimdi öncelikle server'daki quest klasörünün bulunduğu dizinde
Kod:
/usr/rain/channel/share_data/locale/hongkong /usr/game/channel/share_data/locale/hongkong /usr/game/share/locale/turkey
sh make.sh çekeceğimiz yere geliyoruz fakat bu sefer quest yerine quest2 yazıyoruz. Biraz önce yaptığımız gibi ./qc merhaba.quest yazıyoruz.
(Not: Bunu yapmamızdaki amaç, merhaba.quest'in object içinde hangi dosyaları oluşturduğunu bulmak.)
Şimdi quest2 dosyamızdaki object klasöründe oluşan her dosyayı quest deki object klasörü içinden siliyoruz, ki düzgün bir şekilde quest'i kaldırmış olalım.
Şimdi quest'te düzenleyeceğimiz yeri düzenleyip, Yeni Quest Ekleme başlığı altında yaptıklarımızı tekrarlıyoruz.
Bu Ne İşe Yaradı ?:
-Yeni görev geliştirme sırasında sağlayacağı problem çözme kolaylıklarının yanı sıra, bir tanecik quest eklemek için tüm o make.sh çekme süresini kaybetmemenizi sağlar.
-Tabii bunlarla birlikte zırt pırt object dosyalarınızda kaybolma, şişme vs. gibi problemler olmaz.
-Güvenli bir quest derleme ve kaldırma yapmanıza olanak sağlar.
-Çalışmayan questlerin korkulu rüyasıdır
İşinizi kolaylaştırması dileğiyle,
Sevgiler, Astrid.
Make.sh Çekmeden Quest Eklemek/Düzenlemek!
Metin2 sunucularında quest sistemleri, oyuncuların oyun içindeki ilerlemesini yönlendiren ve deneyimi zenginleştiren en önemli unsurlardan biridir.
Ancak bazı geliştiriciler, make.sh komutunu çekmeden quest dosyalarını doğrudan sisteme entegre etmek isteyebilir.
Bu yöntem özellikle küçük değişiklikler veya test amaçlı questler için oldukça pratiktir.
Quest Sistemine Genel Bakış
Metin2 quest sistemi, Lua dili kullanılarak yazılmaktadır ve sunucu tarafında çalışmaktadır.
Her quest, belirli bir yapıya sahiptir ve genellikle 'quest name begin' ile başlayıp 'end' ile biter.
Questler, NPC ile etkileşim, zamanlayıcılar, item ödülleri gibi birçok özelliği destekler.
Doğrudan Quest Yükleme Yöntemi
Make.sh çekmeden quest yüklemek için, mevcut quest dosyanızı sunucu dizinine manuel olarak kopyalamanız yeterlidir.
Bunun için öncelikle quest dosyasının doğru formatta olduğundan emin olmalısınız.
Örnek bir quest yapısı şu şekildedir:
quest example_quest begin
state start begin
when login or levelup or enter begin
say('Hoş geldin!')
end
end
end
Bu yapıyı doğrudan quest dosyasına yazdıktan sonra, dosyayı /usr/home/metin2/share/locale/tr/quest/ klasörüne koyabilirsiniz.
Quest Dosyası Hataları ve Kontrol
Quest yazarken dikkat edilmesi gereken en önemli konulardan birisi, syntax hatalarıdır.
Hatalı bir quest, sunucunuzda sorunlara yol açabilir.
Bazı geliştiriciler,.quest dosyasını değiştirmeden önce yedek almayı ihmal etmemelidir.
Quest Trigger Mekanizmaları
Triggerlar, quest'in ne zaman aktif olacağına karar verir.
Login, levelup, enter gibi eventler üzerinden çalışabilir.
Ayrıca timer kullanarak belirli aralıklarla çalışan questler de yazılabilir.
Daily Quest ve Flag Kullanımı
Günlük görevler için flag kullanmak oldukça yaygındır.
Flag, quest'in daha önce çalışıp çalışmadığını kontrol eder.
Örneğin, bir daily quest şu şekilde tanımlanabilir:
if pc.getqf('daily_flag') == 0 then
pc.setqf('daily_flag', 1)
-- Görev kodları buraya
end
Sunucuyu Yeniden Başlatma Gerekliliği
Quest dosyası değiştirildikten sonra make.sh çekilmediğinden, bazı durumlarda sunucu yeniden başlatılması gerekir.
Ancak bazı sunucu yapıları, questleri dinamik olarak yeniden yükleme özelliğine sahiptir.
Martysama ve Metin2Dev Quest Uyumluğu
Popüler quest sistemleri olan Martysama ve Metin2Dev ile uyumlu questler yazılırken, standart yapıya sadık kalınmalıdır.
Bu sistemler, bazı özel fonksiyonlar içerse de temel yapı aynıdır.
Sonuç
Make.sh çekmeden quest eklemek, hızlı testler ve küçük güncellemeler için ideal bir yöntemdir.
Ancak büyük projelerde, yapısal hataların önüne geçmek adına make.sh kullanmak önemlidir.
Adding/Editing Quests Without Pulling make.sh!
In Metin2 servers, quest systems are one of the most important elements that guide player progression and enrich their in-game experience.
However, some developers prefer to integrate quest files directly into the system without pulling the make.sh command.
This method is especially practical for minor changes or testing quests.
Overview of Quest System
The Metin2 quest system is written in Lua and runs on the server-side.
Each quest has a specific structure and typically starts with 'quest name begin' and ends with 'end'.
Quests support many features such as interaction with NPCs, timers, and item rewards.
Direct Quest Loading Method
To load a quest without pulling make.sh, you simply need to manually copy your quest file into the server directory.
Firstly, ensure your quest file is in the correct format.
An example quest structure looks like this:
quest example_quest begin
state start begin
when login or levelup or enter begin
say('Welcome!')
end
end
end
After writing this structure into your quest file, you can place it in the /usr/home/metin2/share/locale/tr/quest/ folder.
Quest File Errors and Validation
One of the most critical aspects when writing quests is avoiding syntax errors.
A faulty quest may cause issues on your server.
Some developers should not neglect to take backups before modifying .quest files.
Quest Trigger Mechanisms
Triggers determine when a quest becomes active.
They can operate based on events like login, levelup, enter, etc.
Additionally, quests can be written to run at certain intervals using timers.
Daily Quest and Flag Usage
Using flags is common for daily quests.
A flag checks whether a quest has been executed before.
For example, a daily quest could be defined as follows:
if pc.getqf('daily_flag') == 0 then
pc.setqf('daily_flag', 1)
-- Quest code goes here
end
Necessity of Restarting the Server
After changing a quest file, since make.sh is not pulled, sometimes the server must be restarted.
However, some server configurations have dynamic quest reloading capabilities.
Compatibility with Martysama and Metin2Dev Quest Systems
When writing quests compatible with popular systems like Martysama and Metin2Dev, stick to the standard structure.
Although these systems may include special functions, the basic structure remains the same.
Conclusion
Adding quests without pulling make.sh is an ideal method for quick tests and small updates.
However, in larger projects, using make.sh is crucial to avoid structural errors.
