- Katılım
- 2 Ağu 2010
- Konular
- 5,330
- Mesajlar
- 24,645
- Çözüm
- 54
- Online süresi
- 1mo 20d
- Reaksiyon Skoru
- 6,396
- Altın Konu
- 425
- Başarım Puanı
- 514
- MmoLira
- -2,509
- DevLira
- 0
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!
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 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;
3- Media;
ALINTIDIR.
İ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.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
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 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):
_REFQUEST
1 1042 QNO_VENUS_ROC 1 xxx SN_QNO_VENUS_ROC SN_PAY_QNO_VENUS_ROC xxx SN_PAYCON_QNO_VENUS_ROC SN_NN_QNO_VENUS_ROC SN_NC_QNO_VENUS_ROC
Rich (BB code):
_REFQUESTREWARD
1 1042 QNO_VENUS_ROC 1 1 1 0 0 0 0 0 0 0 0 0 xxx 0 0 0 0 0 xxx 0 xxx 0 xxx
Rich (BB code):
_REFQUESTREWARDITEMS
1 1042 QNO_VENUS_ROC 0 ITEM_ETC_SD_TOKEN_03 xxx 0 40 xxx 0 xxx 0 xxx
1 1042 QNO_VENUS_ROC 0 ITEM_ETC_SD_TOKEN_04 xxx 0 20 xxx 0 xxx 0 xxx
1 1042 QNO_VENUS_ROC 0 ITEM_ETC_VENUS_ADVANCED_ELIXIR_SCROLL xxx 0 1 xxx 0 xxx 0 xxx
3- Media;
Rich (BB code):
REFQUESTREWARD (dbtomedia)
1042 QNO_VENUS_ROC 1 1 1 0 0 0 0 0 0 0 0 0 xxx 0 0 0 0 0 xxx 0 xxx 0 xxx
REFQUESTREWARDITEMS (dbtomedia)
1042 QNO_VENUS_ROC 0 ITEM_ETC_SD_TOKEN_03 xxx 0 40 xxx 0 xxx 0 xxx
1042 QNO_VENUS_ROC 0 ITEM_ETC_SD_TOKEN_04 xxx 0 20 xxx 0 xxx 0 xxx
1042 QNO_VENUS_ROC 0 ITEM_ETC_VENUS_ADVANCED_ELIXIR_SCROLL xxx 0 1 xxx 0 xxx 0 xxx
QUESTCONTENTDATA
QNO_VENUS_ROC xxx 1 xxx 1 SN_CON_QNO_VENUS_ROC_01 xxx xxx xxx xxx xxx xxx xxx 0 xxx xxx 0
TEXTOBJECTDATA
1 SN_ITEM_QNO_VENUS_ROC Roc's Heart
1 SN_ITEM_QNO_VENUS_ROC_TT_DESC Quest item of "Obtain Roc's Heart"
TESTQUEST_OTHERSTRING
1 SN_PAYCON_QNO_VENUS_ROC <sml2><strong><font color="255,226,74,0">♦ Mission</font></strong><br>Getting Roc's heart<br><br><strong><font color="255,226,74,0">♦ Reward</font></strong><br>40 Silver Coin<br>20 Gold Coin<br>Advanced Elixir Scroll (Class B)(Lvl. 10)<br><strong><font color="255,226,74,0">♦ Form</font></strong><br>Available unlimited times<br><br><strong><font color="255,226,74,0">♦ NPC</font></strong><br>[VenusOnline] Quest Manager<br><br><strong><font color="255,226,74,0">♦ Monster</font></strong><br>Roc<br><br><font color="255,44,15,1"><strong>♦ Scenario</strong><br>Hmm .. Most players complain that everyone can get Roc's items.<br>Can you obtain Roc's heart for me ?<br>If you can do this for me, I will give you items that nobody else can.</font></sml2>
1 SN_NN_QNO_VENUS_ROC [VenusOnline] Quest Manager
1 SN_NC_QNO_VENUS_ROC Unlimited repeats.
TEXTQUEST_QUESTSTRING
1 SN_TALK_QNO_VENUS_ROC_01 Obtain Roc's heart
1 SN_TALK_QNO_VENUS_ROC_02 Hmm .. You must be very confident. I hope you are someone as I expected.
1 SN_TALK_QNO_VENUS_ROC_03 Ahhahaha ... Is not your strength enough? Roc is not a unique that noobs or something like that can kill.
1 SN_TALK_QNO_VENUS_ROC_04 Are you noob or something like that ? Do not keep me busy at all. Obtain Roc's heart and then come to me.
1 SN_TALK_QNO_VENUS_ROC_05 I want to reward you, but the inventory is full. First destroy some unnecessary items.
1 SN_TALK_QNO_VENUS_ROC_06 Wow ! You are fascinated me. You deserve to receive very special gifts for the time you spend and for your labour. Congratulations!
1 SN_TALK_QNO_VENUS_ROC_07 Obtain Roc's heart has been completed.
TEXTQUEST_SPECH&NAME
1 SN_QNO_VENUS_ROC Obtain Roc's heart
1 SN_PAY_QNO_VENUS_ROC Obtain Roc's heart
1 SN_CON_QNO_VENUS_ROC Obtain Roc's heart (%d)
WORLDMAPGUIDE
1 xxx QNO_VENUS_ROC 0 field 0 0 0 0 0 0 MOB_RM_ROC
ALINTIDIR.
- Katılım
- 6 Nis 2014
- Konular
- 25,408
- Mesajlar
- 52,478
- Çözüm
- 1
- Online süresi
- 5d 3h
- Reaksiyon Skoru
- 2,410
- Altın Konu
- 2
- TM Yaşı
- 12 Yıl 2 Ay 8 Gün
- Başarım Puanı
- 877
- MmoLira
- 3,740
- DevLira
- 0
Teşekkürler.
- Katılım
- 8 Nis 2017
- Konular
- 2,285
- Mesajlar
- 4,322
- Çözüm
- 4
- Online süresi
- 21h 15m
- Reaksiyon Skoru
- 1,452
- Altın Konu
- 3
- TM Yaşı
- 9 Yıl 2 Ay 5 Gün
- Başarım Puanı
- 347
- MmoLira
- 1,836
- DevLira
- 0
Vay benim babam, eline koluna sağlık
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 2
- Görüntüleme
- 107
- Cevaplar
- 1
- Görüntüleme
- 33
- Cevaplar
- 4
- Görüntüleme
- 2K
- Cevaplar
- 0
- Görüntüleme
- 835






