İçeriğe geç

Metin2 Quest q Fonksiyonları

Quest'in kendisini yöneten fonksiyonlar: durum değiştirme, görev penceresindeki başlık, saat ve sayaç, başka oyuncunun bağlamına geçme. Lua'da quest ayrılmış sözcük olduğu için tablonun adı q'dur. Bu modülde 17 fonksiyon var. Diğer modüller quest fonksiyonları listesinde, quest yazımının temeli quest yazma rehberinde.

FonksiyonNe yaparDöner
q.setstate(durum adı) Geçerli quest'in durumunu adı verilen duruma geçirir. Değişiklik betik bitince işlenir: eski durumun leave, yeni durumun enter olayları o zaman çalışır. Quest dosyasındaki set_state(ad) yazımı derleyicide bu çağrıya çevrilir; global set_state, setstate ve newstate aynı işi yapar.
q.setstate("run")
yok
q.set_state(durum adı) q.setstate ile aynı fonksiyon.
q.set_state("__COMPLETE__")
yok
q.yield(değerler) Betiği askıya alıp verilen değerleri sunucuya geçirir. select, wait, input, confirm gibi questlib.lua yardımcılarının iç kullanımı içindir; quest içinde doğrudan çağrılmaz. q.begin_other_pc_block bloğu içinde çağrılırsa askıya almaz, hata kaydı yazar. -
q.set_title(başlık) Geçerli quest'in görev penceresinde görünen başlığını ayarlar; en çok 30 karakter gönderilir. Başlık betik bitince istemciye gider.
q.set_title("Kayıp Mektup")
yok
q.set_title2(quest adı, başlık) Adı verilen başka bir quest'in görev penceresindeki başlığını ayarlar.
q.set_title2("skill_group", "Beceri eğitimi")
yok
q.set_clock_name(metin) Görev penceresinde quest'in altında gösterilen saat satırının adını ayarlar (en çok 16 karakter).
q.set_clock_name("Kalan süre")
yok
q.set_clock_value(saniye) Görev penceresindeki saat satırının değerini saniye olarak ayarlar.
q.set_clock_value(600)
yok
q.set_counter_name(metin) Görev penceresinde quest'in altında gösterilen sayaç satırının adını ayarlar (en çok 16 karakter).
q.set_counter_name("Kalan kurt")
yok
q.set_counter_value(sayı) Görev penceresindeki sayaç satırının değerini ayarlar.
q.set_counter_value(20 - pc.getqf("oldurulen"))
yok
q.set_icon(dosya adı) Görev penceresinde quest'in yanında gösterilecek simge dosyasının adını ayarlar (en çok 24 karakter). yok
q.start() Geçerli quest'i başlamış olarak işaretler; quest görev penceresi listesine eklenir.
q.start()
yok
q.done() Geçerli quest'i görev penceresi listesinden kaldırır (başlamış işaretini siler). Durumu değiştirmez; quest'i bitirmek için ayrıca set_state kullanılır.
q.done()
yok
q.getcurrentquestindex() Geçerli quest'in sunucudaki sıra numarasını döndürür. Görev simgesi (makequestbutton) gibi istemciye quest numarası giden yerlerde kullanılır.
local no = q.getcurrentquestindex()
sayı
q.getcurrentquestname() Geçerli quest'in adını döndürür. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
local ad = q.getcurrentquestname()
metin
q.no_send() Bu betik adımında biriken diyalog metninin istemciye gönderilmesini bir kereliğine iptal eder; tampon silinir.
q.no_send()
yok
q.begin_other_pc_block(oyuncu kimliği (PID)) Geçerli oyuncuyu geçici olarak PID'i verilen başka bir oyuncuyla değiştirir; sonraki pc.*, timer gibi çağrılar o oyuncuya uygulanır. Oyuncu bu çekirdekte çevrimiçi değilse bağlam değişmez. Blok içinde say, select, wait gibi bekleten çağrılar kullanılamaz; q.end_other_pc_block ile kapatılmalıdır.
q.begin_other_pc_block(pids[i])
yok
q.end_other_pc_block() q.begin_other_pc_block ile değiştirilen oyuncu bağlamını bir öncekine geri döndürür; bloklar iç içe kullanılabilir.
q.end_other_pc_block()
yok

Önceki modül: questlib | Sonraki modül: affect

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.