Metin2 Quest Algoritma Fonksiyonları

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 62

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Merhaba Forum Severler
Bildiğiniz Üzere Metin2'nin Quest Kısmında Oyunun Kendisine Ait Fonksyon'ları Mevcuttur .
Bu Fonksyon'ları Aşşağıda Bellirmiş Olup Siz Değerli Metin2 Severlerin Daha İyi Kavrıya Bilmesi Adına Karşılarına Türkçesi İle Yazılmıştır İyi Forum'lar Dilerim .
  1. <li data-xf-list-type="ol"> PC Fonksiyonları;
    • <li data-xf-list-type="ul">
      pc.get_account() : String değer döndürür. Hesap adını verir. <li data-xf-list-type="ul">
      pc.get_account_id() : Int değer döndürür. Hesap idsini verir. <li data-xf-list-type="ul">
      pc.get_alignment() : Int değer döndürür. Karakterin sıralama derecesini verir. <li data-xf-list-type="ul">
      pc.get_dx() : Int değer döndürür. Karakterin dex puanını verir. <li data-xf-list-type="ul">
      pc.get_empire() : Int değer döndürür. Karakterin krallığını verir. (1: Kırmızı, 2: Sarı, 3: Mavi) <li data-xf-list-type="ul">
      pc.get_empty_inventory_count() : Int değer döndürür. Karakterin envanterinde boş olan slot sayısını verir. <li data-xf-list-type="ul">
      pc.get_equip_refine_level(LuaNumber cell) : 1 argument alır. Int değerindedir. Envanterde slot idsini gönderdiğiniz zaman o slottaki eşyanın refine levelini yani + değerini verir. <li data-xf-list-type="ul">
      pc.get_exp() : Int değer döndürür. Karakterin EXP bilgisini verir. <li data-xf-list-type="ul">
      pc.get_exp_level() : Int değer döndürür. Karakterin EXP kutusunun bilgisini verir. Kaç kutu dolu ise o kadar sayı döndürür. <li data-xf-list-type="ul">
      pc.get_gm_level() : Int değer döndürür. Karakterin GM yetkisini verir. (1: Player, 2: LOW_WIZARD, 3: GOD, 4: HIGH_WIZARD, 5: IMPLEMENTOR) <li data-xf-list-type="ul">
      pc.get_gold() : Int değer döndürür. Karakterin Yang miktarını verir. <li data-xf-list-type="ul">
      pc.get_guild() : Int değer döndürür. Karakterin loncasının idsini verir. Lonca yoksa false döndürür. <li data-xf-list-type="ul">
      pc.get_horse_level() : Int değer döndürür. Karakter at seviyesini verir. Atı yoksa false döndürür. <li data-xf-list-type="ul">
      pc.get_hp() : Int değer döndürür. Karakterin mevcut hayat puanını verir. <li data-xf-list-type="ul">
      pc.get_ht() : Int değer döndürür. Karakterin VIT puanını verir. <li data-xf-list-type="ul">
      pc.get_informer_item() <li data-xf-list-type="ul">
      pc.get_informer_type() <li data-xf-list-type="ul">
      pc.get_ip0() : String değer döndürür. Karakterin ip bilgisini verir. <li data-xf-list-type="ul">
      pc.get_iq() : Int değer döndürür. Karakterin INT puanını verir. <li data-xf-list-type="ul">
      pc.get_job(): Int değer döndürür. Karakterin cinsiyetini verir. <li data-xf-list-type="ul">
      pc.get_killee_drop_pct() <li data-xf-list-type="ul">
      pc.get_language() <li data-xf-list-type="ul">
      pc.get_leadership() <li data-xf-list-type="ul">
      pc.get_language2() <li data-xf-list-type="ul">
      pc.get_level() : Int değer döndürür. Karakterin levelini verir. <li data-xf-list-type="ul">
      pc.get_local_x() : Int değer döndürür. Client tabanlı karakterin bulunduğu konumun x değerini verir. <li data-xf-list-type="ul">
      pc.get_local_y() : Int değer döndürür. Client tabanlı karakterin bulunuduğu konumun y değerini verir. <li data-xf-list-type="ul">
      pc.get_logoff_interval() <li data-xf-list-type="ul">
      pc.get_map_index() : Int değer döndürür. Karakterin bulunduğu haritanın idsini verir. <li data-xf-list-type="ul">
      pc.get_max_hp() : Int değer döndürür. Karakterin alabileceği maksimum hp puanını verir. <li data-xf-list-type="ul">
      pc.get_max_sp() : Int değer döndürür. Karakterin alabileceğini maksimum sp puanını verir. <li data-xf-list-type="ul">
      pc.get_money() : Int değer döndürür. Karakterin Yang miktarını verir. <li data-xf-list-type="ul">
      pc.get_name() : String değer döndürür. Karakterin adını verir. <li data-xf-list-type="ul">
      pc.get_next_exp() : Int değer döndürür. Bir sonraki level için gerekli olan EXP miktarını verir. <li data-xf-list-type="ul">
      pc.get_part() <li data-xf-list-type="ul">
      pc.get_player_id() : Int değer döndürür. Karakterin idsini verir. <li data-xf-list-type="ul">
      pc.get_playtime() : Int değer döndürür. Toplam oyunda geçirilen zamanı verir. <li data-xf-list-type="ul">
      pc.get_premium_remain_sec() : Int değer döndürür. Premium süresini verir. <li data-xf-list-type="ul">
      pc.get_race() : Int değer döndürür. Karakterin sınıfını verir. <li data-xf-list-type="ul">
      pc.get_real_alignment() : Int değer döndürür. Karakterin sıralama puanını verir. <li data-xf-list-type="ul">
      pc.get_sex() : Int değer döndürür. Karakterin cinsiyetini verir. <li data-xf-list-type="ul">
      pc.get_sig_items(LuaNumber group_vnum) : Int argument alır. Dizi döndürür. Argument ile gönderilmiş eşya grubunun eşya listesini verir. <li data-xf-list-type="ul">
      pc.get_skill_group() : Int değer döndürür. Karakterin seçmiş olduğu yetenek grubunu verir. Örn: Bedensel, Zihinsel <li data-xf-list-type="ul">
      pc.get_skill_level(LuaNumber vnum) : 1 argument alır. Int döndürür. Argument ile gönderilen yetenek idsinin seviyesini verir. Örn: pc.get_skill_level(31) =&gt; Suikast yeteneğinin seviyesini verir. <li data-xf-list-type="ul">
      pc.get_skill_point() : Int değer döndürür. Karakterin kullanmamış olduğu yetenek puanlarının miktarını verir. <li data-xf-list-type="ul">
      pc.get_sockets_item() : Dizi döndürür. Karakterin envanterinde bulunan eşyaların socket bilgisini listeler. <li data-xf-list-type="ul">
      pc.get_sp() : Int değer döndürür. Karakterin SP miktarını verir. <li data-xf-list-type="ul">
      pc.get_special_ride_vnum() : Int değer dönderir. Special item bilgilerini verir. <li data-xf-list-type="ul">
      pc.get_st() : Int değer döndürür. Karakterin STR puanını verir. <li data-xf-list-type="ul">
      pc.get_start_location() <li data-xf-list-type="ul">
      pc.get_vid() : Int değer döndürür. Karakterin auth idsini verir. <li data-xf-list-type="ul">
      pc.get_war_map() <li data-xf-list-type="ul">
      pc.get_weapon() : Int değer döndürür. Karakterin eline giymiş olduğu silahn vnum değerini verir. Eli boşsa false döndürür. <li data-xf-list-type="ul">
      pc.get_wear(LuaNumber cell) : 1 tane int argument alır. Int değer döndürür. Argument ile gönderilen veri ile belirlenen envanterdaki kutuda eşyanın wear flagını verir. <li data-xf-list-type="ul">
      pc.get_x() : Int değer döndürür. Server tabanlı karakterin x koordinatını verir. <li data-xf-list-type="ul">
      pc.get_y() : Int değer döndürür. Server tabanlı karakterin y koordinatını verir. <li data-xf-list-type="ul">
      pc.getarmor() : Int değer döndürür. Karakterin üstüne giydiği zırhın vnumunu verir. Eğer yoksa false döndürür. <li data-xf-list-type="ul">
      pc.getcheque() : Int değer döndürür. Karakterin Won bilgisini verir. <li data-xf-list-type="ul">
      pc.getcurrentmapindex() : Int değer döndürür. Karakterin bulunduğu haritanın idsini verir. <li data-xf-list-type="ul">
      pc.getempire() : Int değer döndürür. Karakterin krallığını verir. (1: Kırmızı, 2: Sarı, 3: Mavi) <li data-xf-list-type="ul">
      pc.getf(LuaString questname, LuaString flagname) : 2 tane string argument alır. 1. quest adı, 2. flag adı. Int değer döndürür. quest veritabanına eklenen değeri döndürür. <li data-xf-list-type="ul">
      pc.getgold() : Int değer döndürür. Karakterin Yang miktarını verir. <li data-xf-list-type="ul">
      pc.getguild() : Int değer döndürür. Karakterin loncasının idsini verir. Lonca yoksa false döndürür. <li data-xf-list-type="ul">
      pc.gethp() : Int değer döndürür. Karakterin mevcut hayat puanını verir. <li data-xf-list-type="ul">
      pc.getleadership() <li data-xf-list-type="ul">
      pc.getmaxhp() : Int değer döndürür. Karakterin alabileceği maksimum hp puanını verir. <li data-xf-list-type="ul">
      pc.getmaxsp() : Int değer döndürür. Karakterin alabileceği maksimum sp puanını verir. <li data-xf-list-type="ul">
      pc.money() : Int değer döndürür. Karakterin Yang miktarını verir. <li data-xf-list-type="ul">
      pc.getplaytime() : Int değer döndürür. Toplam oyunda geçirilen zamanı verir. <li data-xf-list-type="ul">
      pc.getqf(LuaString flag) : 1 string argument alır. Int döndürür. Çalışan questin flag değerini quest veritabanında arar ve valuesini döndürür. <li data-xf-list-type="ul">
      pc.getsp() : Int değer döndürür. Karakterin mevcut mana puanını verir. <li data-xf-list-type="ul">
      pc.getweapon() : Int değer döndürür. Karakterin eline giymiş olduğu silahn vnum değerini verir. Eli boşsa false döndürür. <li data-xf-list-type="ul">
      pc.getx() : Int değer döndürür. Server tabanlı karakterin x koordinatını verir. <li data-xf-list-type="ul">
      pc.gety() : Int değer döndürür. Server tabanlı karakterin y koordinatını verir. <li data-xf-list-type="ul">
      pc.give_item(luaNumber item_vnum, luaNumber item_count) : Oyuncunun envanteri boşsa item verir. <li data-xf-list-type="ul">
      pc.give_item2(LuaNumber item_vnum, luaNumber item_count) : Oyuncuya item verir. Envanteri doluysa eşya yere düşer. <li data-xf-list-type="ul">
      pc.give_item2_select(luaNumber item_vnum, luaNumber count) : Oyuncuya item verdikten sonra seçim işlemi yapar. Daha sonra item. quest fonksiyonlarını kullanabilirsiniz. <li data-xf-list-type="ul">
    <li data-xf-list-type="ol"> Item Fonksiyonları
    • <li data-xf-list-type="ul">
      item.can_over9refine() : Eşyanın +9'dan sonra dönüşümü var mı diye kontrol eder. Boolean döndürür. (Varsa: 1, Yoksa: 0) <li data-xf-list-type="ul">
      item.change_to_over9() : Eşyanın dönüşümü değiştirir. <li data-xf-list-type="ul">
      item.copy_and_give_before_remove(LuaNumber vnum) : Argumentte verdiğimiz vnum ile size bir eşya verir ve eşyayı siler. <li data-xf-list-type="ul">
      item.get_addon_type() : Eşyanın ortalama ve beceri hasarı alabilip almadığı addon_type değerini döndürür. <li data-xf-list-type="ul">
      item.get_attribute_set_index() <li data-xf-list-type="ul">
      item.get_cell(LuaNumber cell) : Envanterinizdeki eşyanının bilgisini alır. <li data-xf-list-type="ul">
      item.get_count() : Eşyanın adetini döndürür. Int olarak. <li data-xf-list-type="ul">
      item.get_id() : Eşyanın idsini. Int olarak. <li data-xf-list-type="ul">
      item.get_level() : Eşyanın + değerini döndürür. Int olarak. <li data-xf-list-type="ul">
      item.get_level_limit() : Eşyanın level limitini alır. <li data-xf-list-type="ul">
      item.get_name() : Eşyanın locale name değerini döndürür. <li data-xf-list-type="ul">
      item.get_over9_material_vnum(LuaNumber vnum) : +9'dan sonra dönüşen eşyanın dönüşüm malzemelerini döndürür. <li data-xf-list-type="ul">
      item.get_refine_vnum(LuaNumber vnum) : Eşyanın refine (geliştirme) vnumunu alır. <li data-xf-list-type="ul">
      item.get_shop_price() : NPC'de eşyanın satılan fiyatı. <li data-xf-list-type="ul">
      item.get_size() : Eşyanın envanterde kaç slot kapladığının bilgisini verir. <li data-xf-list-type="ul">
      item.get_socket(LuaNumber index) : Eşyaya kakılan taşları veya eşyanın süresinin bilgilerini döndürür. <li data-xf-list-type="ul">
      item.get_sub_type() : Eşyanın alt türünün döndürür. <li data-xf-list-type="ul">
      item.get_type() : Eşyanın ana türünü döndürür. <li data-xf-list-type="ul">
      item.get_value(LuaNumber index) : Eşyanın value değerlerini döndürür. <li data-xf-list-type="ul">
      item.get_vnum() : Eşyanın item_proto'daki idsini döndürür. <li data-xf-list-type="ul">
      item.has_flag(LuaNumber value) : Argumentte verilen değerin eşyada olup olmadığını kontrol eder. <li data-xf-list-type="ul">
      item.next_refine_vnum() : Bir sonraki + geliştirmedeki refine vnumu döndürür. <li data-xf-list-type="ul">
      item.over9refine() : Eşyanın +9'dan sonra dönüşümü var mı diye kontrol eder. Boolean döndürür. (Varsa: 1, Yoksa: 0) <li data-xf-list-type="ul">
      item.remove() : Eşyayı siler. <li data-xf-list-type="ul">
      item.select(LuaNumber item_id) : Eşyanın idsi ile eşyayı seçer. (Questlerde kullanmak için.) <li data-xf-list-type="ul">
      item.select_cell(LuaNumber cell) : Eşyayı envanterdaki cell numarası ile seçer. (Questlerde kullanmak için.) <li data-xf-list-type="ul">
      item.set_shop_price() : Eşyanın npcde satılan değerini değiştirmek. <li data-xf-list-type="ul">
      item.set_socket(LuaNumber index, LuaNumber value) : Eşyanın socket değerini değiştirir. <li data-xf-list-type="ul">
      item.set_value(LuaNumber index, LuaNumber value) : Eşyanın valuesini değiştirir. <li data-xf-list-type="ul">
      item.start_realtime_expire() : Eşyanın süresi varsa süresini başlatır. <li data-xf-list-type="ul">
      /** Martysama Source New Stuff **/ <li data-xf-list-type="ul">
      item.get_wearflag0() : Eşyanın türünün bilgisini verir. <li data-xf-list-type="ul">
      item.has_wearflag0(luaNumber index) : Argument ile gönderilen veri eşyanın wearflagı ile uyuşup uyuşmadığını kontrol eder. <li data-xf-list-type="ul">
      item.get_antiflag0(luaNumber index) : Argument ile gönderilen veri eşyanın antiflagı ile uyuşup uyuşmadığını kontrol eder. <li data-xf-list-type="ul">
      item.has_antiflag0() : Eşyanın antiflag (şaman giyemez vs.) bilgisini döndürür. <li data-xf-list-type="ul">
      item.get_immuneflag0() : Eşyanın immuneflag değerini döndürür. <li data-xf-list-type="ul">
      item.has_immuneflag0(luaNumber index) : Argument ile gönderilen veri eşyanın immuneflag ile uyuşup uyuşmadığını kontrol eder. <li data-xf-list-type="ul">
      item.add_attr0(LuaNumber mode) : Eşyaya efsun eklemeye yarar. <li data-xf-list-type="ul">
      item.change_attr0(LuaNumber mode) : Eşyanın efsunlarını değiştirir. <li data-xf-list-type="ul">
      item.clear_attr0(LuaNumber mode) : Eşyanın efsunlarını temizler <li data-xf-list-type="ul">
      item.count_attr0(LuaNumber mode) : Eşyanın efsunlarının değerini değiştirir. <li data-xf-list-type="ul">
      item.get_attr0() : Eşyanın efsunlarını döndürür. <li data-xf-list-type="ul">
      item.set_attr0(LuaNumber id1, LuaNumber value1, LuaNumber id2, LuaNumber value2, LuaNumber id3, LuaNumber value3, LuaNumber id4, LuaNumber value4, LuaNumber id5, LuaNumber value5, LuaNumber id6, LuaNumber value6, LuaNumber id7, LuaNumber value7): Eşyanın efsunlarını tek tek girmeye yarıyor. <li data-xf-list-type="ul">
      item.set_count0(LuaNumber count) : Eşyanın adetini değiştirir. <li data-xf-list-type="ul">
      item.is_available0() : Kullanılan item. <li data-xf-list-type="ul">
      /** Martysama Source New Stuff **/ <li data-xf-list-type="ul">
    <li data-xf-list-type="ol"> NPC Fonksiyonları
    • <li data-xf-list-type="ul">
      npc.get_empire() : pc bulunduğu krallığın bilgisini verir. <li data-xf-list-type="ul">
      npc.get_guild() : npcnin loncasını verir. <li data-xf-list-type="ul">
      npc.get_leader_vid() : partynin liderinin vid değerini verir. <li data-xf-list-type="ul">
      npc.get_local_x0() : local x koordinatını verir. <li data-xf-list-type="ul">
      npc.get_local_y0() : local y koordinatını verir. <li data-xf-list-type="ul">
      npc.get_race() : npcnin vnum değerini verir. <li data-xf-list-type="ul">
      npc.get_remain_hairdye_count() <li data-xf-list-type="ul">
      npc.get_remain_skill_book_count() <li data-xf-list-type="ul">
      npc.dec_remain_hairdye_count() : mob 20031 idye sahipse true değerini dönderiyor. <li data-xf-list-type="ul">
      npc.dec_remain_skill_book_count() : mob 20031 idye sahipse true değerini dönderiyor. <li data-xf-list-type="ul">
      npc.get_vid() : npc vid değerini verir. <li data-xf-list-type="ul">
      npc.get_x0() : npcnin x koordinatını verir. <li data-xf-list-type="ul">
      npc.get_y0() : npcnin y koordinatını verir. <li data-xf-list-type="ul">
      npc.getrace() : npcnin vnum değerini verir. <li data-xf-list-type="ul">
      npc.is_pc() : bilgisayar oyuncusu ise true dönderir. <li data-xf-list-type="ul">
      npc.is_quest() : quest npccsi ise true dönderir. <li data-xf-list-type="ul">
      npc.kill() : npc öldürür. <li data-xf-list-type="ul">
      npc.lock() : npcyi kilitler. <li data-xf-list-type="ul">
      npc.open_shop(LuaNumber shop_vnum) : npcnin sattığı ürünleri gösterir. <li data-xf-list-type="ul">
      npc.purge() : npcyi yok eder. <li data-xf-list-type="ul">
      npc.unlock() : npc kilidi açar. <li data-xf-list-type="ul">
      npc.get_job() : npcnin cinsiyetini verir. <li data-xf-list-type="ul">
      /** new stuff **/ <li data-xf-list-type="ul">
      npc.get_level0() : npcnin levelini verir. <li data-xf-list-type="ul">
      npc.get_name0() : npcnin adını verir. <li data-xf-list-type="ul">
      npc.get_vnum0() : npcnin vnum verir. <li data-xf-list-type="ul">
      npc.get_pid0() : npcnin pid değerini verir. <li data-xf-list-type="ul">
      npc.is_available0() : npc ise true döndürür. <li data-xf-list-type="ul">
      /** new stuff end **/


Metin2 Quest Algoritma Fonksiyonları

Metin2 oyununda quest sistematiği, oyuncuların ilerlemesini yönlendiren ve oyun içi etkileşimleri artıran en önemli yapıdır. Bu sistemde quest algoritma fonksiyonları, görevlerin başlatılması, yönetilmesi ve tamamlanması süreçlerinde kritik rol oynar. Bu yazıda Metin2 quest sisteminde kullanılan temel algoritma fonksiyonlarını ve nasıl kullanılacağını detaylı olarak ele alacağız.

Quest Sistemine Genel Bakış

Metin2 quest sistemi, Lua programlama dili kullanılarak geliştirilir. Quest dosyaları genellikle .lua uzantılıdır ve sunucu tarafında çalıştırılır. Her quest, belirli bir trigger ile başlatılır, belirli koşulları kontrol eder ve sonunda ödül veya ceza gibi bir sonuca ulaşır.

Temel Quest Algoritma Fonksiyonları

1. Begin / End Fonksiyonları
Bir quest’teki ana yapı begin ve end bloklarıdır. Begin, quest’in başlatıldığı noktadır. Burada oyuncu kontrolü yapılır, gerekirse mesaj gösterilir ya da NPC ile etkileşim sağlanır. End ise quest’in tamamlandığı ya da iptal edildiği yerdir.

2. Trigger ve Event Fonksiyonları
Trigger fonksiyonları, quest’in ne zaman aktif olacağını belirler. Örneğin bir NPC’ye tıklanması, bir itemin alınması veya bir mob’ın öldürülmesi gibi eylemler tetikleyici olabilir. Event fonksiyonları ise bu eylemleri işler. Bunlar kill, use_item, button, letter gibi farklı şekillerde olabilir.

3. Flag ve State Kullanımı
Flag, oyuncunun quest ile ilgili durumunu saklamak için kullanılır. Örneğin bir quest tamamlandıysa flag değeri 1 yapılabilir. State ise quest’in hangi aşamada olduğunu gösterir. Quest birden fazla aşamadan oluşuyorsa her state farklı görevleri içerebilir.

4. Timer ve Zaman Tabanlı Fonksiyonlar
Timer fonksiyonları, quest içinde belirli zaman aralıklarında işlem yapmaya yarar. Örneğin bir görevin süresi dolarsa otomatik olarak iptal edilebilir. Timer_set, timer_stop gibi fonksiyonlar kullanılır.

5. Reward ve Item Yönetimi
Quest tamamlandığında oyuncuya ödül vermek için reward fonksiyonları kullanılır. Bu ödüller para, item veya tecrübe olabilir. Item verme işlemleri için pc.give_item2() gibi Lua komutları kullanılır.

Quest Hata Ayıklama (Debug)

Quest geliştirme sürecinde hatalarla karşılaşmak kaçınılmazdır. Hata ayıklama yaparken quest_manager.log veya say fonksiyonları ile log yazdırarak akışı takip edebilirsiniz. Ayrıca quest reload komutu ile quest dosyasını yeniden yükleyebilirsiniz.

Özel ve Günlük Questler

Daily quest sistemleri, oyuncuların her gün aynı görevi tekrar yapmasını sağlar. Bu tür görevlerde genellikle zaman kontrolü yapılır ve timer ile yenilenme sağlanır. Custom quest ise geliştiricinin tamamen kendi tasarladığı özel görevlerdir. Bunlar oyun içi etkinliklere özel olarak hazırlanabilir.

Sonuç

Metin2 quest sistematiği, hem sunucu sahipleri hem de geliştiriciler için büyük bir esneklik sunar. Algoritma fonksiyonlarını doğru kullanmak, daha akıcı ve kullanıcı dostu bir quest deneyimi sunmanızı sağlar. Lua bilgisi olan geliştiriciler, bu sistem üzerinden sınırsız görevler oluşturabilir ve oyuncu deneyimini zenginleştirebilir.

Kaynak: Metin2 Lobby


Metin2 Quest Algorithm Functions

Metin2 game's quest system is one of the most important structures that guide player progression and increase in-game interactions. Within this system, quest algorithm functions play a critical role in starting, managing, and completing quests. In this article, we will discuss the basic algorithm functions used in the Metin2 quest system and how to use them in detail.

Overview of the Quest System

The Metin2 quest system is developed using the Lua programming language. Quest files are typically .lua extensions and run on the server side. Each quest is initiated by a specific trigger, checks certain conditions, and eventually leads to a result such as a reward or penalty.

Basic Quest Algorithm Functions

1. Begin / End Functions
The main structure in a quest includes begin and end blocks. Begin is where the quest starts. Player checks can be performed here, messages displayed, or interactions with NPCs initiated. End marks the completion or cancellation of the quest.

2. Trigger and Event Functions
Trigger functions determine when a quest becomes active. Actions like clicking an NPC, picking up an item, or killing a monster can act as triggers. Event functions process these actions. These can vary such as kill, use_item, button, letter.

3. Usage of Flags and States
Flag is used to store the player's status related to a quest. For instance, if a quest is completed, the flag value can be set to 1. State indicates which stage the quest is currently in. If a quest has multiple stages, each state may contain different tasks.

4. Timer and Time-Based Functions
Timer functions allow operations to occur at specific intervals within a quest. For example, a task might automatically cancel if its time expires. Functions like timer_set, timer_stop are used for this purpose.

5. Reward and Item Management
To award players upon completing a quest, reward functions are used. These rewards can be gold, items, or experience. For giving items, commands like pc.give_item2() are used in Lua.

Quest Debugging

Encountering errors during quest development is inevitable. While debugging, you can track the flow by printing logs using functions like quest_manager.log or say. Additionally, the quest reload command allows you to reload the quest file.

Special and Daily Quests

Daily quests allow players to repeat the same task every day. Time controls are often used in such quests, with renewal handled via timer. Custom quests are specially designed missions created entirely by developers. These can be tailored specifically for in-game events.

Conclusion

The Metin2 quest system offers great flexibility for both server owners and developers. Correctly utilizing algorithm functions enables a smoother and more user-friendly quest experience. Developers with Lua knowledge can create unlimited quests through this system, enriching the overall player experience.

Source: Metin2 Lobby
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt