Herkese Senua'dan merhabalar, Hepinizin bildiği gibi görev ekleme ile ilgili güzel bir rehber hiçbir yerde mevcut değil. Gördüğüm en kapsamlı görev konusu Epvp'deki görev scpritleri paylaşıldığında anlatılan konu idi, ancak onun bile eksikleri vardı. Sizlere elimden geldiğinde tane tane ayrıntılı bir biçimde hazırsanız anlatmaya başlıyorum.
İlk olarak scpritlerden bahsetmek istiyorum. Nedir bu scpritler? Scpritler lua dilinde yazılmış kod parçalarıdır, fonksiyonlarıdır da diyebiliriz. Gameserver'e tanımlanmış lua komutları bu scpritlerin içerisinde aranır ve mevcut komutlar okunarak gameserver tarafından işleme alınır. Scprit olayının genel çalışma mantığı budur. Unutmadan söyleyeyim tanımlanmış çok fantastik komutlar mevcuttur, bunların %80'i mevcut scpitlerde kullanılmamıştır ama aktiflerdir. Bunların ne olduğunu ve neler yapılabileceğini sizin kabiliyetinize bırakıyorum. Her şeyi anlatmayalım değilmi tadı kaçmasın
Scpritlerin clean halini bu linkten indirebilirsiniz.
Rar içerisindeki Event klasöründekiler event lua'ları için, Quest klasöründekiler normal quest'ler içindir. @Define.lua genel komutlar için joymax tarafından yapılmış tanımları içermektedir. @Eventlist.lua event lua'larının listesi ve @QuestList.lua ise normal quest lua'larının listesidir. Konu sonuna kadarki tüm işlemleri yaptıktan sonra scprit kalsörümüzdeki bütün .bat uzantılı komutları çalıştırıp .sct uzantılarını serverfiles içerisindeki eski .sct'ler ile değiştireceğiz.
Anlatımda kendi server'imde Roc'a eklediğim görevi kullanacağım. Hadi başlayalım.
1- Görev lua'sı Ekli dosyayı görüntüle 376 1 numaralı kısım; Görevimizin fonksiyonudur. Bu fonsiyonumuzun ismi _RefQuest'e ekleyeceğimiz satırdaki codename ile aynı olmak zorundadır.
2 numaralı kısım; Görevimizin ID sinin alınmasını sağlayan komuttur. QNO_VENUS_ROC codename'ye sahip görevin ID'si bu komut ile alınır ve işleme konulur. _RefQuest'e ekleyeceğimiz satırdaki codename ile aynı olmak zorundadır.
3 numaralı kısım; Görevimizin başlama koşuludur. QSC_LEVEL, 1,1 li kısımın ilki max level, ikincisi min level şartıdır. 1,1 yaparsanız görev her seviyede kullanılabilir demektir.
4 numaralı kısım; Konuşma penceresi akfif/deaktif, 1 demek aktif demektir.
5 numaralı kısım; Göreve başlama metodu, QM_CONVERSATION konuşma şeklinde demek. 1 sayısı npc'lerin sayısı, ve sonraki kısımda ilgili npc'lerin kodunu göstermektedir.
6 numaralı kısım; Görevi tamamlama npc'si. ve bu npc'nin kodu
7 numaralı kısım; Görevin belireceği npc sayısı ve npc'lerin kodu
8 numaralı kısım; Görevi yapabilme sayısı, 0 demek sınırsız sayıda yapılabilir demek
9 numaralı kısım; Görevin kod kısmındaki veri boyutunun limiti, burada QuestID baz alınmış. 1 sayısı da baz alınan tanım sayısını göstermekte. Burada sadece QuestID baz alındığı için değerimiz 1.
10 numaralı kısım; MISSION_TYPE_GATHER_ITEM_FROM_MONSTER görevin yapılma şekli mob'tan item toplama demek, SN_ ile başlayan bütün kısımlar oyunda görünecek yazılardan bahsetmekte. Bunları konunun ilerisinde media kısmında kullanacağız. NPC'mizin kodu yine burada da var, düşecek itemin kodu ve bu itemden ne kadar toplanması gerektiği 1,1 li kısımda mevcut, 1,20 yaparsak 20 tane toplamamız gerekir. Mob'un kodu ve sondaki 100 rakamı item'in bu mob'tan düşme ihtimali. 100 demek %100 ihtimal demek.
11 numaralı kısım; NPC ve görev penceresindeki konuşma pencerelerinin olduğu kısım
12 numaralı kısım; Görevi yapabilme sayısı, 0 demek sınırsız sayıda yapılabilir demek
13 numaralı kısım; Görev ödüllerinin verilme şekli, 1 demek npc'den açılan pencere ile almak demek.
15 numaralı kısım; Görev ödüllerinin tanımlandığı kısım. İlk baştaki 4 adet sıfır orada olmak zorunda, bu alanda exp, gold, zerk gibi değişik görev ödülleri kullanılıyor. Bundan sonraki kısımda item kodundan önceki 1 sayısı bu itemin ödül olarak aktif olup olmadığını, item kodundan sonraki sayıda bu itemden kaç adet verileceğini belirtiyor.
16 numaralı kısım; Görev ödülü olarak skill point verebilmenin olduğu kısım
17 numaralı kısım; end komutumuz function'ın son bulduğu kısım end olmazsa gameserver lua'mızın hatalı olduğunu söyler ve görevi işleme almaz.
Bundan sonraki database ve media kısımlarında item sayılarımız, QuestID'miz ve görev codename'mizin lua ile tutarlı olması gerektiğini unutmayınız.
2- Database; Rich (BB code):
İçeriği görebilmek için
Uye olmanız gerekiyor.
Rich (BB code):
İçeriği görebilmek için
Uye olmanız gerekiyor.
Rich (BB code):
İçeriği görebilmek için
Uye olmanız gerekiyor.
3- Media; Rich (BB code):
İçeriği görebilmek için
Uye olmanız gerekiyor.
Konu giderek düzenlenecek ve ayrıntı artırılacaktır.