İçeriğe geç

Metin2 Quest npc Fonksiyonları

Geçerli NPC üzerinde çalışan fonksiyonlar. Geçerli NPC; click, chat ve take olaylarında ilgili NPC, kill olayında ölen canavar (PvP'de ölen oyuncu), die olayında öldüren karakterdir. Bu modülde 28 fonksiyon var. Diğer modüller quest fonksiyonları listesinde, quest yazımının temeli quest yazma rehberinde.

FonksiyonNe yaparDöner
npc.getrace() npc.get_race ile aynı fonksiyon.
local irk = npc.getrace()
sayı
npc.get_race() Geçerli NPC'nin vnum'unu döndürür; geçerli NPC yoksa 0. Eski yazımı: npc.getrace.
if npc.get_race() == 20016 then
sayı
npc.open_shop(dükkân no (isteğe bağlı)) Geçerli oyuncuya geçerli NPC'nin dükkânını açar. Dükkân numarası verilirse shop tablosundaki o dükkân, verilmezse NPC'nin vnum'una bağlı dükkân açılır. Oyuncuda depo, ticaret, pazar ya da küp penceresi açıksa ya da NPC'ye fazla uzaksa açılmaz.
npc.open_shop()
yok
npc.get_empire() Geçerli NPC'nin krallığını döndürür: 1 Shinsoo, 2 Chunjo, 3 Jinno, 0 krallıksız ya da NPC yok.
if npc.get_empire() ~= pc.get_empire() then
sayı
npc.is_pc() Geçerli NPC aslında bir oyuncu karakteriyse true döner. PvP'de oyuncu öldürülünce çalışan kill olayında npc ölen oyuncuyu gösterdiği için canavar ile oyuncuyu ayırmakta kullanılır.
if npc.is_pc() then return end
true/false
npc.is_quest() Geçerli NPC bu quest tarafından yaratıldıysa (mob.spawn, mob.spawn_group) true döner.
if npc.is_quest() then
true/false
npc.kill() Geçerli NPC'yi öldürür (ölü duruma geçirir) ve oyuncunun quest NPC bağlantısını sıfırlar.
npc.kill()
yok
npc.purge() Geçerli NPC'yi ölüm işlemi olmadan haritadan siler ve oyuncunun quest NPC bağlantısını sıfırlar.
npc.purge()
yok
npc.is_near(mesafe (metre, isteğe bağlı, varsayılan 10)) Geçerli oyuncu geçerli NPC'ye verilen mesafeden daha yakınsa true döner; ikisinden biri yoksa false.
if not npc.is_near(5) then return end
true/false
npc.is_near_vid(vid, mesafe (metre, isteğe bağlı, varsayılan 10)) VID'i verilen karakter geçerli NPC'ye verilen mesafeden daha yakınsa true döner.
if not npc.is_near_vid(vid, 10) then
true/false
npc.lock() Geçerli NPC'yi geçerli oyuncuya kilitler. NPC boştaysa ya da zaten bu oyuncuya kilitliyse true, başka bir oyuncuya kilitliyse false döner. Aynı NPC'yi iki oyuncunun aynı anda kullanmasını önler; betik biterken kilit açık kalmışsa sunucu açar ve syserr'e uyarı yazar.
if not npc.lock() then say("Şu an başka biriyle ilgileniyorum.") return end
true/false
npc.unlock() npc.lock ile konan kilidi kaldırır; kilit bu oyuncuya ait değilse bir şey yapmaz.
npc.unlock()
yok
npc.get_guild() Geçerli NPC'nin bağlı olduğu loncanın kimliğini (lonca binası NPC'leri gibi) döndürür; yoksa 0.
if npc.get_guild() == pc.get_guild() then
sayı
npc.get_leader_vid() Geçerli canavar bir canavar grubunun üyesiyse grup liderinin VID'ini, lider yoksa 0 döndürür. Grup yoksa syserr'e yazar ve geçerli bir değer döndürmez.
local lider = npc.get_leader_vid()
sayı
npc.get_vid() Geçerli NPC'nin VID'ini döndürür. Gövdede denetim olmadığından geçerli NPC yokken çağrılmamalıdır.
local vid = npc.get_vid()
sayı
npc.get_vid_attack_mul(vid) VID'i verilen karakterin saldırı çarpanını döndürür (varsayılan 1); karakter bulunamazsa 0.
local carpan = npc.get_vid_attack_mul(vid)
sayı
npc.set_vid_attack_mul(vid, çarpan) VID'i verilen karakterin saldırı çarpanını ayarlar; karakterin düz vuruş hasarı bu çarpanla çarpılır. Zindan patronlarını güçlendirmek için kullanılır.
npc.set_vid_attack_mul(vid, 2)
yok
npc.get_vid_damage_mul(vid) VID'i verilen karakterin aldığı hasar çarpanını döndürür (varsayılan 1); karakter bulunamazsa 0.
local carpan = npc.get_vid_damage_mul(vid)
sayı
npc.set_vid_damage_mul(vid, çarpan) VID'i verilen karakterin aldığı bütün hasarı bu çarpanla çarpar; 0,5 aldığı hasarı yarıya indirir.
npc.set_vid_damage_mul(vid, 0.5)
yok
npc.get_remain_skill_book_count() Yılbaşı etkinliğindeki Noel Baba NPC'si (vnum 20031) için dağıtılacak kalan beceri kitabı sayısını döndürür; başka NPC'de 0.
if npc.get_remain_skill_book_count() > 0 then
sayı
npc.dec_remain_skill_book_count() Noel Baba NPC'sinin (20031) kalan beceri kitabı sayısını bir azaltır; başka NPC'de bir şey yapmaz.
npc.dec_remain_skill_book_count()
yok
npc.get_remain_hairdye_count() Noel Baba NPC'sinin (20031) dağıtacağı kalan saç boyası sayısını döndürür; başka NPC'de 0.
if npc.get_remain_hairdye_count() > 0 then
sayı
npc.dec_remain_hairdye_count() Noel Baba NPC'sinin (20031) kalan saç boyası sayısını bir azaltır.
npc.dec_remain_hairdye_count()
yok
npc.get_level0() Geçerli NPC'nin seviyesini döndürür. Gövdede denetim yoktur, önce npc.is_available0 ile bakılmalıdır. Topluluk eki (ENABLE_NEWSTUFF).
if npc.get_level0() > pc.get_level() + 10 then
sayı
npc.get_name0() Geçerli NPC'nin adını döndürür. Gövdede denetim yoktur. Topluluk eki (ENABLE_NEWSTUFF).
say(npc.get_name0())
metin
npc.get_pid0() Geçerli NPC bir oyuncuysa oyuncu kimliğini (PID), canavar ya da NPC ise 0 döndürür. Topluluk eki (ENABLE_NEWSTUFF).
local olen_pid = npc.get_pid0()
sayı
npc.get_vnum0() Geçerli NPC'nin vnum'unu döndürür (npc.get_race gibi, ama denetimsiz). Topluluk eki (ENABLE_NEWSTUFF).
local vnum = npc.get_vnum0()
sayı
npc.is_available0() Geçerli bir NPC olup olmadığını döndürür; denetimsiz *0 fonksiyonlarından önce kullanılır. Topluluk eki (ENABLE_NEWSTUFF).
if npc.is_available0() then
true/false

Önceki modül: pc | Sonraki modül: item

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.