İçeriğe geç

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.

FonksiyonNe yaparDö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.