Metin2 Quest affect Fonksiyonları
Geçerli oyuncuya süreli etki (bonus) ekleyen ve kaldıran fonksiyonlar. Süre saniyedir; eklenen etkiler veritabanına kaydedilir, oyundan çıkıp girince korunur. Apply numaraları için questlib.lua'daki apply tablosu (apply.MAX_HP gibi) kullanılabilir. Bu modülde 11 fonksiyon var. Diğer modüller quest fonksiyonları listesinde, quest yazımının temeli quest yazma rehberinde.
| Fonksiyon | Ne yapar | Döner |
|---|---|---|
affect.add(apply no, değer, süre (saniye)) |
Geçerli oyuncuya apply numarasıyla verilen bonusu, değer kadar ve süre boyunca ekler. Etki türü 1000 (quest etkisi) olarak kaydedilir. Apply numarası 1 ile en büyük apply numarası arasında değilse eklemez.affect.add(apply.MAX_HP, 500, 600) |
yok |
affect.remove(etki türü (isteğe bağlı)) |
Geçerli oyuncudaki verilen türdeki bütün etkileri kaldırır. Tür verilmezse ya da 0 ise 1000 + geçerli quest'in sıra numarası kullanılır; affect.add 1000 türünü kullandığından onun eklediği etkiyi kaldırmak için affect.remove(1000) yazılır.affect.remove(1000) |
yok |
affect.remove_bad() |
Geçerli oyuncudaki zehir, yanma, kanama (Lycan'lı kaynaklarda), sersemleme ve yavaşlama etkilerini ve bir kötü beceri etkisini kaldırır.affect.remove_bad() |
yok |
affect.remove_good() |
Geçerli oyuncudaki hız ve statü iksiri etkilerini, havai fişek etkisini ve destek becerilerinin etkilerini kaldırır.affect.remove_good() |
yok |
affect.add_hair(apply no, değer, süre (saniye)) |
Saç türünde (tür 514) bir apply bonusu ekler; saç modeli bonusları için kullanılır.affect.add_hair(apply.MAX_HP, 200, 2592000) |
yok |
affect.remove_hair() |
Saç türündeki etkiyi kaldırır ve kalan süresini (saniye) döndürür; etki yoksa 0.local kalan = affect.remove_hair() |
sayı |
affect.add_collect(apply no, değer, süre (saniye)) |
Toplama (collect, tür 515) türünde bir apply bonusu ekler. Toplama görevlerinin ödül bonusları bu türle verilir.affect.add_collect(apply.MAX_HP, 1000, 60*60*24*365) |
yok |
affect.add_collect_point(puan no, değer, süre (saniye)) |
affect.add_collect gibidir, ancak apply numarası yerine doğrudan karakter puanı (POINT) numarası alır.affect.add_collect_point(POINT_MAX_HP, 1000, 60*60*24*365) |
yok |
affect.remove_collect(apply no, değer) |
Apply türü ve değeri birebir eşleşen ilk toplama (collect) etkisini kaldırır.affect.remove_collect(apply.MAX_HP, 1000) |
yok |
affect.remove_all_collect() |
Geçerli oyuncudaki bütün toplama (collect) etkilerini kaldırır.affect.remove_all_collect() |
yok |
affect.get_apply_on(etki türü) |
Verilen türdeki ilk etkinin uygulandığı karakter puanının (POINT) numarasını döndürür; o türde etki yoksa nil.local puan = affect.get_apply_on(1000) |
sayı ya da nil |
Önceki modül: q | Sonraki modül: target
Liste, Metin2 sunucu kaynak kodundaki quest fonksiyon tablolarından (questlua dosyaları) ve sunucunun quest klasöründeki questlib.lua ile GFquestlib.lua dosyalarından çıkarıldı; açıklamalar fonksiyonların gövdelerinden yazıldı. İncelenen kaynak, orijinal koda topluluk düzeltmeleri eklenmiş bir sürümdür: "Topluluk eki" notu taşıyan fonksiyonlar (ENABLE_NEWSTUFF gibi derleme seçenekleri) her sunucuda bulunmaz, kapalı seçeneklere bağlı pc.open_shop0 ve pc.make_guild0 listede yoktur. "Geçerli oyuncu" quest'i tetikleyen oyuncudur; server_timer olaylarında geçerli oyuncu olmadığından pc, npc ve item fonksiyonlarının çoğu orada kullanılamaz. Koordinat birimi fonksiyona göre değişir: kimi metre, kimi oyun birimi (metre × 100) ister. C++'a eklenen yeni bir fonksiyonu kullanmadan önce adını quest klasöründeki quest_functions listesine de eklemek gerekir. Fonksiyonlar kaynak sürümüne göre değişebilir.