Fethi Polat 1
Fethi Polat
TuZaKK 1
TuZaKK
xranzei 1
xranzei
Agresifizm 1
Agresifizm
Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Hikaye Ekle

Basit Quest Yazma Dersleri

  • Konuyu başlatan Konuyu başlatan bodos4
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 19
  • Görüntüleme Görüntüleme 3K

Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!

Merhabalar
Bu konu üzerinden questler hakkında bilgilerimi paylaşacağım. :)
Quest yazarken;

  • Notepad++ kullanın.
  • ANSII kodlama türünü seçin.
  • Piramit yapısına dikkat edin.
  • Yazacağınız questi ilk olarak .lua uzantısıyla kaydedin.Lua uzantısı fonksiyon ve kod betiklerini renklendirerek daha kolay quest yazmanızı sağlayacaktır.

Aşağıdaki quest 8027 metinin kesilince vereceği notice, money , item gibi ekstra şeyleri vermenizi sağlar.


  • Kırmızıyla yazılı olan bölüm 8027 klasöründe 8027.start adında bir belge oluşturur, questi başlatır.
  • Lacivertle yazılı olan bölüm questin sürekli işlemesi için state belgesi oluşturur.
  • Yeşille yazılı olan bölüm 8027 mobunun hiç üzerinde tıklama işlemi gerçekleştirilmeden kesildiğinde alttaki belirlenmiş kodların aktif olacağını gösterir.
  • Kalın yazı stiliyle yazılmış alan mobun kesildiğinde herkeze vereceği toplu notice uyarısını açıklar ve gösterir.
  • Altınla yazılmış olan bölüm mobun katlediğildiğinde ekstra olarak katleden kişiye sunacağı itemdir game.drop özelliğini kullanır.Eşya envantere gelmez kesen kişinin ismi üzerinde yazılı şekilde yere düşer.
    • ​Altın renk ile yazdığım bölümde game.drop_item_with_ownership("Eşya Kodu",Miktarı) kodunu kullandım.Ben 50011 kodlu eşyayı vermesini istedim.


Kod:
[COLOR=#ff0000]quest 8027 begin[/COLOR]
    [COLOR=#0000cd]state start begin[/COLOR]
        [COLOR=#008000]when 8027.kill begin[/COLOR]
[COLOR=#000000][B]           notice_all("CH"..pc.get_channel_id()..": Metin Jeon-Un Kayası " .. pc . get_name ( ) .. " tarafindan " .. pc . get_level ( ) .. ". seviyede yok edildi!") [/B][/COLOR]
[COLOR=#daa520][I]game.drop_item_with_ownership("50011",1)[/I][/COLOR]
            end
        end
    end



  • Eğer eşyanın direk yere düşmemesini isteseydim.
    • pc.give_item2("İtem Kodu",Miktari) özelliğini kullanırdım ve kullanalım.


Kod:
[COLOR=#FF0000]quest 8027 begin[/COLOR]
    [COLOR=#0000CD]state start begin[/COLOR]
        [COLOR=#008000]when 8027.kill begin[/COLOR]
[COLOR=#000000][B]           notice_all("CH"..pc.get_channel_id()..": Metin Jeon-Un Kayası " .. pc . get_name ( ) .. " tarafindan " .. pc . get_level ( ) .. ". seviyede yok edildi!") [/B][/COLOR]
[I][COLOR=#000000]pc.give_item2("19",1)[/COLOR][/I]
            end
        end
    end


  • Yazdığım
    • pc.give_item2(19,1) ile mobu kesen kişiye 1 adet +9 Kılıç vermesini sağladım.




Eğer katleden kişiye para vermesini isteseydim.
  • pc.change_money("Miktar") veya pc.give_gold("Miktar") özelliğini kullanırdım ve kullanalım.
    • pc.give_gold("100") yazdım ve 100 yang vermesini sağladım.


Kod:
[COLOR=#FF0000]quest 8027 begin[/COLOR]
    [COLOR=#0000CD]state start begin[/COLOR]
        [COLOR=#008000]when 8027.kill begin[/COLOR]
[COLOR=#000000][B]           notice_all("CH"..pc.get_channel_id()..": Metin Jeon-Un Kayası " .. pc . get_name ( ) .. " tarafindan " .. pc . get_level ( ) .. ". seviyede yok edildi!") [/B][/COLOR]
[COLOR=#DAA520]pc.give_gold("100")[/COLOR]
            end
        end
    end


  • Eğer katleden kişiye birden fazla eşya vermek isteseydim ve hangisini vereceğime ben değilde oyunun karar vermesini isteseydim şöyle yapardım;
    • Lacivert ile yazdığım kodlarda oyuna seçenek hakkı tanıdım ve yazdığım kodlardan birini seçmesini istedim.Oyunda dice falına göre herhangi birini seçerek kodların devamını yazdırmış oldu.
    • Altın ile yazdığım kodlarda 1. ve 2. seçenekte neler vereceğini, hangi kodu yazdıracağını belirledim.
      • Benim istediğim item vermesiydi, 71159 ve 71160 eşyalarından birini verecek.

Kod:
[COLOR=#FF0000]quest 8027 begin[/COLOR]
    [COLOR=#0000CD]state start begin[/COLOR]
        [COLOR=#008000]when 8027.kill begin[/COLOR]
[COLOR=#000000][B]           notice_all("CH"..pc.get_channel_id()..": Metin Jeon-Un Kayası " .. pc . get_name ( ) .. " tarafindan " .. pc . get_level ( ) .. ". seviyede yok edildi!") [/B][/COLOR]
[B][COLOR=#000080]            local chance = number(1,2)[/COLOR][/B]
[B][COLOR=#000080]            if chance == 1 then[/COLOR][/B]
            [B][COLOR=#DAA520]pc.give_item2("71159",1)[/COLOR][/B]
            notice("Milonun Sandığı sende!")
[B][COLOR=#000080]            elseif chance == 2 then[/COLOR][/B]
            [B][COLOR=#DAA520]pc.give_item2("71160",1)[/COLOR][/B]
            notice("Athenanın Sandığı sende!")
        end
            end
        end
    end


Fonksiyonları Tanımlayalım

"..pc.get_channel_id().." kodu kişinin hangi channelda olduğunu yansıtır.Syschat harici her alanda kullanılabilir. (Quest functions belgenizde pc.get_channel_id ekli olmazsa çalışmaz.)
" .. pc . get_name ( ) .. " kodu kişinin ismini yansıtır.Her alanda kullanılabilir.
" .. pc . get_level ( ) .. " kodu kişinin seviyesini yansıtır.Her alanda kullanılabilir.​
 
Son düzenleme:
Merhabalar size şimdi kişiye özel görev ile açılabilen GM paneli yazmayı öğretmeye çalışacağım.
Bunun yanında letter,info,button,local,if,elseif gibi komutlarıda anlatacağım.


  • Aşağıdaki questimiz oluşturacağımız GM Panelimizin iskeletidir.
    • when letter with pc.get_name() == "thesprit" begin kodları ile görevi başlattım yani when letter ile giriş yaparak görev şeklinde açılacağını belirttim.
    • Turkuaz renk ile yazdığım yazı ile pc.get_name komutunu şart vererek kullanarak görevi sadece "thesprit" isimli oyuncunun açacağını belirttim.
    • Kalın Altın renk ile yazılmış pc.is_gm komutuyla görevin sadece GM olan karektelere gelmesini sağladım.
  • Kırmızı renk ile yazdığım alanda send_letter("Görev İsmi") komutunu kullanarak sol tarafta GM:Panel isimli bir görev çıkarttım.
  • Lacivert renk ile aldığım alanlar end komutlarını ekleyeceğiniz yerleri anlamanız içindi.
    • ​Quest
    • State
    • When komutlarının herbiri için end yazarak aralığı kapatıyoruz.
​
  • when info or button with pc.is_gm and pc.get_name() == "thesprit" begin komutlarıyla send_letter("Görev İsmi") komutuyla verdirdiğim göreve tıklayınca açılacak yazacak kodlar için başlattım ve info or button komutlarını kullandım.

Kod:
[COLOR=#0000cd]quest gmpanel begin[/COLOR][COLOR=#0000cd]   state start begin[/COLOR]
[COLOR=#daa520]      when letter with [B]pc.is_gm[/B] and [/COLOR][COLOR=#40e0d0]pc.get_name() == "thesprit"[/COLOR][COLOR=#daa520] begin[/COLOR]
[COLOR=#ff0000]          send_letter("GM:Panel")[/COLOR]
[COLOR=#0000cd]      end[/COLOR]
     [COLOR=#daa520]          when info or button[/COLOR] [COLOR=#DAA520]with [/COLOR][B][COLOR=#daa520]pc.is_gm[/COLOR][/B][COLOR=#DAA520] and [/COLOR][COLOR=#40E0D0]pc.get_name() == "thesprit"[/COLOR][COLOR=#DAA520] begin[/COLOR]
      say("GM Paneline Hoşgeldiniz.")
[COLOR=#0000cd]      end[/COLOR]
[COLOR=#0000cd]   end[/COLOR]
[COLOR=#0000cd]end[/COLOR]


İş görür :) Teşekkürler

Teşekkürler anlatımlar devam edicek. :)


Hacı Sadece Viplerin girebilecegi bi CH Yapmak İstiyorum Nasıl Yapabilirim ?
GM_Mark düzenlemesi yaparak halledebilirsin.
 
Son düzenleme:
Merhabalar size şimdi kişiye özel görev ile açılabilen GM paneli yazmayı öğretmeye çalışacağım.
Bunun yanında letter,info,button,local,if,elseif gibi komutlarıda anlatacağım.


  • Aşağıdaki questimiz oluşturacağımız GM Panelimizin iskeletidir.
    • when letter with pc.get_name() == "thesprit" begin kodları ile görevi başlattım yani when letter ile giriş yaparak görev şeklinde açılacağını belirttim.
    • Turkuaz renk ile yazdığım yazı ile pc.get_name komutunu şart vererek kullanarak görevi sadece "thesprit" isimli oyuncunun açacağını belirttim.
    • Kalın Altın renk ile yazılmış pc.is_gm komutuyla görevin sadece GM olan karektelere gelmesini sağladım.
  • Kırmızı renk ile yazdığım alanda send_letter("Görev İsmi") komutunu kullanarak sol tarafta GM:Panel isimli bir görev çıkarttım.
  • Lacivert renk ile aldığım alanlar end komutlarını ekleyeceğiniz yerleri anlamanız içindi.
    • ​Quest
    • State
    • When komutlarının herbiri için end yazarak aralığı kapatıyoruz.
​
  • when info or button with pc.is_gm and pc.get_name() == "thesprit" begin komutlarıyla send_letter("Görev İsmi") komutuyla verdirdiğim göreve tıklayınca açılacak yazacak kodlar için başlattım ve info or button komutlarını kullandım.

Kod:
[COLOR=#0000cd]quest gmpanel begin[/COLOR][COLOR=#0000cd]   state start begin[/COLOR]
[COLOR=#daa520]      when letter with [B]pc.is_gm[/B] and [/COLOR][COLOR=#40e0d0]pc.get_name() == "thesprit"[/COLOR][COLOR=#daa520] begin[/COLOR]
[COLOR=#ff0000]          send_letter("GM:Panel")[/COLOR]
[COLOR=#0000cd]      end[/COLOR]
     [COLOR=#daa520]          when info or button[/COLOR] [COLOR=#DAA520]with [/COLOR][B][COLOR=#daa520]pc.is_gm[/COLOR][/B][COLOR=#DAA520] and [/COLOR][COLOR=#40E0D0]pc.get_name() == "thesprit"[/COLOR][COLOR=#DAA520] begin[/COLOR]
      say("GM Paneline Hoşgeldiniz.")
[COLOR=#0000cd]      end[/COLOR]
[COLOR=#0000cd]   end[/COLOR]
[COLOR=#0000cd]end[/COLOR]




Teşekkürler anlatımlar devam edicek. :)



GM_Mark düzenlemesi yaparak halledebilirsin.

nasıl yani hocam bi örnek gösterseniz
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst