İçeriğe geç

Metin2 Quest pc Fonksiyonları

Geçerli oyuncunun (quest'i çalıştıran ya da pc.select ile seçilen oyuncu) karakterine ait fonksiyonlar: seviye ve EXP, Yang, eşya verme ve silme, quest bayrakları, ışınlanma, lonca, beceri, binek ve dönüşüm. Fonksiyonların çoğu geçerli oyuncu olup olmadığını denetlemediği için geçerli oyuncunun bulunmadığı olaylarda (server_timer gibi) kullanılmamalıdır. Bu modülde 214 fonksiyon var. Diğer modüller quest fonksiyonları listesinde, quest yazımının temeli quest yazma rehberinde.

FonksiyonNe yaparDöner
pc.get_wear(yuva no) Verilen giyim yuvasında takılı eşyanın vnum'unu döndürür; yuva boşsa 0 değil nil döner. Yuva numaraları: 0 zırh, 1 kask, 2 ayakkabı, 3 bilezik, 4 silah, 5 kolye, 6 küpe, 10 kalkan, 19 kostüm, 20 saç kostümü (sonraki yuvalar derleme seçeneklerine göre değişir).
if pc.get_wear(19) != nil then
sayı (vnum), yuva boşsa nil
pc.get_player_id() Geçerli oyuncunun kalıcı karakter numarasını (player tablosundaki id, pid) döndürür; geçerli oyuncu yoksa 0 döner. Oyuncuyu zindan ya da olay bayraklarında tanımak için kullanılır.
d.setf("party_leader_pid", pc.get_player_id())
sayı, geçerli oyuncu yoksa 0
pc.get_account_id() Geçerli oyuncunun hesap numarasını (account tablosundaki id) döndürür; geçerli oyuncu ya da bağlantısı yoksa 0 döner.
local hesap_no = pc.get_account_id()
sayı, bağlantı yoksa 0
pc.get_account() Geçerli oyuncunun hesap (giriş) adını döndürür; geçerli oyuncu ya da bağlantısı yoksa boş metin döner. Hesap adı gizli tutulması gereken bir bilgidir, oyunculara gösterilmemelidir.
local hesap = pc.get_account()
metin, bağlantı yoksa boş metin
pc.get_level() Geçerli oyuncunun seviyesini döndürür. questlib.lua'da pc.level olarak da tanımlıdır.
if pc.get_level() < 30 then
sayı
pc.set_level(seviye) Geçerli oyuncuyu doğrudan verilen seviyeye getirir: beceri, alt beceri ve durum puanlarını seviye farkına göre değiştirir, HP ve SP'yi yeniden hesaplar ve levelup olayını tetikler; EXP'ye dokunmaz. Seviye CONFIG'deki MAX_LEVEL'i aşarsa seviye değişmez ama beceri puanları yine eklenir, bu yüzden sınırı aşan değer verilmemelidir.
pc.set_level(30)
yok
pc.get_next_exp() Geçerli seviyeden bir sonraki seviyeye geçmek için gereken toplam EXP'yi (EXP tablosundaki değer) döndürür; kalan miktar pc.get_next_exp() - pc.get_exp() ile bulunur. questlib.lua'da pc.nextexp olarak da tanımlıdır.
local kalan = pc.get_next_exp() - pc.get_exp()
sayı
pc.get_exp() Geçerli oyuncunun bu seviyede biriktirdiği EXP'yi döndürür; seviye atlayınca sıfırdan başlar. questlib.lua'da pc.exp olarak da tanımlıdır.
local exp = pc.get_exp()
sayı
pc.get_job() Geçerli oyuncunun sınıfını döndürür: 0 savaşçı, 1 ninja, 2 sura, 3 şaman, 4 lycan. Cinsiyetten ve dönüşümden etkilenmez; questlib.lua'da pc.job olarak da tanımlıdır.
if pc.get_job() == 3 then
sayı (0-4)
pc.get_race() Geçerli oyuncunun ırk numarasını döndürür: 0 savaşçı erkek, 1 ninja kadın, 2 sura erkek, 3 şaman kadın, 4 savaşçı kadın, 5 ninja erkek, 6 sura kadın, 7 şaman erkek, 8 lycan. Oyuncu dönüşmüşse dönüştüğü canavarın vnum'unu döndürür.
local irk = pc.get_race()
sayı
pc.change_sex() Geçerli oyuncunun ırkını aynı sınıfın karşı cinsine çevirir; yeni görünüm oyuncu oyuna yeniden girince görünür. Dönüşmüş oyuncuda 0 döner, lycan'da ırk değişmez ama 1 döner; Lua'da 0 da doğru sayıldığından sonucu == 1 ile sınayın.
pc.change_sex()
sayı (başarılıysa 1, değilse 0)
pc.gethp() pc.get_hp ile aynı fonksiyon. Geçerli oyuncunun anlık HP'sini döndürür.
local hp = pc.gethp()
sayı
pc.get_hp() Geçerli oyuncunun anlık HP'sini döndürür. Eski yazımı: pc.gethp; questlib.lua'da pc.hp olarak da tanımlıdır.
if pc.get_hp() < pc.get_max_hp() / 2 then
sayı
pc.getmaxhp() pc.get_max_hp ile aynı fonksiyon. Geçerli oyuncunun azami HP'sini döndürür.
local mhp = pc.getmaxhp()
sayı
pc.get_max_hp() Geçerli oyuncunun azami HP'sini döndürür. Eski yazımı: pc.getmaxhp; questlib.lua'da pc.maxhp olarak da tanımlıdır.
local mhp = pc.get_max_hp()
sayı
pc.getsp() pc.get_sp ile aynı fonksiyon. Geçerli oyuncunun anlık SP'sini döndürür.
local sp = pc.getsp()
sayı
pc.get_sp() Geçerli oyuncunun anlık SP'sini döndürür. Eski yazımı: pc.getsp; questlib.lua'da pc.sp olarak da tanımlıdır.
if pc.get_sp() < 100 then
sayı
pc.getmaxsp() pc.get_max_sp ile aynı fonksiyon. Geçerli oyuncunun azami SP'sini döndürür.
local msp = pc.getmaxsp()
sayı
pc.get_max_sp() Geçerli oyuncunun azami SP'sini döndürür. Eski yazımı: pc.getmaxsp; questlib.lua'da pc.maxsp olarak da tanımlıdır.
local msp = pc.get_max_sp()
sayı
pc.change_sp(miktar) Geçerli oyuncunun SP'sini verilen miktar kadar değiştirir. Artırmada en çok azami SP'ye kadar doldurur ve true döner; azaltmada SP yetmiyorsa hiçbir şey yapmadan false döner, 0 ya da sayı olmayan değerde de false döner. Ölü ya da sersemlemiş oyuncuda SP değişmez.
if not pc.change_sp(-100) then return end
true/false
pc.getmoney() pc.get_money ile aynı fonksiyon. Geçerli oyuncunun üzerindeki Yang miktarını döndürür.
local yang = pc.getmoney()
sayı
pc.get_money() Geçerli oyuncunun üzerindeki Yang miktarını döndürür. Eski yazımı: pc.getmoney; pc.get_gold ve pc.getgold da aynı fonksiyondur, questlib.lua'da pc.money ve pc.gold olarak da tanımlıdır.
if pc.get_money() < 25000000 then
sayı
pc.get_real_alignment() Geçerli oyuncunun gerçek derece puanını oyunda görünen birimle döndürür (-20.000 ile +20.000 arası). Derece Görünmezlik pelerini (70048) ile gizlense de gerçek değeri verir; derece harcayan hesaplarda bu kullanılır.
local derece = pc.get_real_alignment()
sayı
pc.get_alignment() Geçerli oyuncunun görünen derece puanını döndürür (-20.000 ile +20.000 arası). Oyuncu derecesini Görünmezlik pelerini (70048) ile gizliyorsa 0 döner; gerçek değer için pc.get_real_alignment kullanın.
if pc.get_alignment() < 0 then
sayı
pc.getweapon() pc.get_weapon ile aynı fonksiyon. Silah yuvasındaki eşyanın vnum'unu döndürür, silah yoksa 0.
local silah = pc.getweapon()
sayı (vnum), silah yoksa 0
pc.get_weapon() Geçerli oyuncunun silah yuvasında takılı eşyanın vnum'unu döndürür, silah yoksa 0. Eski yazımı: pc.getweapon; questlib.lua'da pc.weapon olarak da tanımlıdır.
if pc.get_weapon() == 0 then
sayı (vnum), silah yoksa 0
pc.getarmor() pc.get_armor ile aynı fonksiyon. Zırh yuvasındaki eşyanın vnum'unu döndürür, zırh yoksa 0.
local zirh = pc.getarmor()
sayı (vnum), zırh yoksa 0
pc.get_armor() Geçerli oyuncunun zırh (gövde) yuvasında takılı eşyanın vnum'unu döndürür, zırh yoksa 0; kostüm yuvasına bakmaz. Eski yazımı: pc.getarmor.
local a = pc.get_armor()
sayı (vnum), zırh yoksa 0
pc.getgold() pc.get_money ile aynı fonksiyon. Geçerli oyuncunun üzerindeki Yang miktarını döndürür.
local yang = pc.getgold()
sayı
pc.get_gold() pc.get_money ile aynı fonksiyon. Geçerli oyuncunun üzerindeki Yang miktarını döndürür.
if pc.get_gold() >= 25000000 then
sayı
pc.changegold(miktar) pc.change_money ile aynı fonksiyon. Yang ekler, negatif miktarla düşer; sonuç 0'ın altına inecekse hiçbir şey yapmaz.
pc.changegold(-price)
yok
pc.changemoney(miktar) pc.change_money ile aynı fonksiyon. Yang ekler, negatif miktarla düşer; sonuç 0'ın altına inecekse hiçbir şey yapmaz.
pc.changemoney(-10000)
yok
pc.changealignment(miktar) pc.change_alignment ile aynı fonksiyon. Gerçek derece puanına verilen miktarı ekler, negatif miktarla düşer.
pc.changealignment(500)
yok
pc.change_gold(miktar) pc.change_money ile aynı fonksiyon. Yang ekler, negatif miktarla düşer; sonuç 0'ın altına inecekse hiçbir şey yapmaz.
pc.change_gold(-500000)
yok
pc.change_money(miktar) Geçerli oyuncuya verilen miktarda Yang ekler, negatif miktarla düşer ve Yang kaydına (money log) yazar. Sonuç 0'ın altına inecekse ya da 2.000.000.000 Yang'a ulaşacaksa Yang değişmez ve quest'e hata dönmez, bu yüzden önce pc.get_money ile kontrol edin. pc.changemoney, pc.change_gold ve pc.changegold da aynı fonksiyondur.
pc.change_money(-25000000)
yok
pc.change_alignment(miktar) Geçerli oyuncunun gerçek derece puanına verilen miktarı ekler, negatif miktarla düşer; miktar oyunda görünen birimdedir. Sonuç -20.000 ile +20.000 arasında sınırlanır; derece gizli değilse görünen değer de güncellenir. Eski yazımı: pc.changealignment.
pc.change_alignment(-1000)
yok
pc.getname() pc.get_name ile aynı fonksiyon. Geçerli oyuncunun karakter adını döndürür.
local ad = pc.getname()
metin
pc.get_name() Geçerli oyuncunun karakter adını döndürür. Eski yazımı: pc.getname; questlib.lua'da pc.name olarak da tanımlıdır.
notice_all(pc.get_name() .. " zindanı bitirdi.")
metin
pc.get_vid() Geçerli oyuncunun vid'ini (sunucudaki anlık nesne numarası) döndürür; pc.select ve vid alan diğer fonksiyonlara verilir. Değer her girişte değişir, kalıcı kimlik için pc.get_player_id kullanın.
local vid = pc.get_vid()
sayı (vid)
pc.getplaytime() pc.get_playtime ile aynı fonksiyon. Toplam oyun süresini dakika olarak döndürür.
local sure = pc.getplaytime()
sayı (dakika)
pc.get_playtime() Geçerli oyuncunun toplam oyun süresini dakika olarak döndürür. Süre karakter kaydedildikçe güncellendiği için son kayıttan sonraki dakikaları içermeyebilir. Eski yazımı: pc.getplaytime; questlib.lua'da pc.playtime olarak da tanımlıdır.
if pc.get_playtime() < 60 then
sayı (dakika)
pc.getleadership() pc.get_leadership ile aynı fonksiyon. Liderlik becerisinin seviyesini döndürür.
local lider = pc.getleadership()
sayı
pc.get_leadership() Geçerli oyuncunun Liderlik becerisinin seviyesini döndürür. Eski yazımı: pc.getleadership; questlib.lua'da pc.leadership olarak da tanımlıdır.
local lider = pc.get_leadership()
sayı
pc.getf2(bayrak tam adı (quest.bayrak)) Geçerli oyuncunun bayrağını tam adıyla okur (quest adı ve bayrak adı noktayla birleşik, ör. deviltower_zone.9_done); bayrak yoksa 0 döner. pc.getf ile aynı sonucu verir, tek argüman alır. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
local v = pc.getf2("deviltower_zone.9_done")
sayı
pc.setf2(bayrak tam adı (quest.bayrak), değer) Geçerli oyuncunun bayrağını tam adıyla (ör. deviltower_zone.9_done) yazar; değer tamsayıya yuvarlanır, 0 yazmak bayrağı siler. pc.setf ile aynı işi yapar; ad nokta içermezse bayrak veritabanına kaydedilmez. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.setf2("deviltower_zone.9_done", 1)
yok
pc.getqf(bayrak adı) Geçerli quest'in, geçerli oyuncuya ait bayrağını okur; hiç yazılmamışsa 0 döner. Yalnız son argümanı okur: iki argümanla çağrılsa da geçerli quest'in bayrağını verir, başka quest'in bayrağı için pc.getf kullanılır.
if pc.getqf("build_level") == 0 then
sayı
pc.setqf(bayrak adı, değer) Geçerli quest'in, geçerli oyuncuya ait bayrağına tamsayı değer yazar (kesirli değer en yakın tamsayıya yuvarlanır); 0 yazmak bayrağı siler. Bayraklar veritabanına kaydedilir, ancak quest adı 31, bayrak adı 63 karakteri aşarsa kayıt yapılmaz (syserr).
pc.setqf("next_time", get_time() + 259200)
yok
pc.delqf(bayrak adı) Geçerli quest'in, geçerli oyuncuya ait bayrağını siler; pc.setqf(ad, 0) ile aynı sonucu verir.
pc.delqf("next_time")
yok
pc.getf(quest adı, bayrak adı) Adı verilen başka bir quest'in, geçerli oyuncuya ait bayrağını okur; bayrak yoksa 0 döner. Quest'ler arasında bilgi paylaşmak için kullanılır.
local t = pc.getf("skill_reset2", "time")
sayı
pc.setf(quest adı, bayrak adı, değer) Adı verilen başka bir quest'in, geçerli oyuncuya ait bayrağına değer yazar (tamsayıya yuvarlanır); 0 yazmak bayrağı siler. Quest adı 31, bayrak adı 63 karakteri aşarsa bayrak veritabanına kaydedilmez (syserr).
pc.setf("deviltower_zone", "9_done", 1)
yok
pc.get_x() Geçerli oyuncunun dünya X koordinatını metre cinsinden (ham koordinat / 100) döndürür. pc.warp ham koordinat beklediği için 100 ile çarpılarak verilir; questlib.lua'daki pc.x aynı değeri verir.
local x, y = pc.get_x(), pc.get_y()
sayı (metre)
pc.get_y() Geçerli oyuncunun dünya Y koordinatını metre cinsinden (ham koordinat / 100) döndürür. pc.warp ile kullanırken 100 ile çarpılır; questlib.lua'daki pc.y aynı değeri verir.
if pc.get_x() < 2048 + 88 or pc.get_y() < 6656 + 577 then
sayı (metre)
pc.getx() pc.get_x ile aynı fonksiyon. Dünya X koordinatını metre cinsinden döndürür.
local x = pc.getx()
sayı (metre)
pc.gety() pc.get_y ile aynı fonksiyon. Dünya Y koordinatını metre cinsinden döndürür.
local y = pc.gety()
sayı (metre)
pc.get_local_x() Geçerli oyuncunun bulunduğu haritadaki yerel X koordinatını metre cinsinden (harita başlangıcına göre) döndürür. Harita bilgisi bulunamazsa dünya koordinatını / 100 verir; questlib.lua'da pc.local_x olarak da tanımlıdır.
local lx, ly = pc.get_local_x(), pc.get_local_y()
sayı (metre)
pc.get_local_y() Geçerli oyuncunun bulunduğu haritadaki yerel Y koordinatını metre cinsinden (harita başlangıcına göre) döndürür. Harita bilgisi bulunamazsa dünya koordinatını / 100 verir; questlib.lua'da pc.local_y olarak da tanımlıdır.
local ly = pc.get_local_y()
sayı (metre)
pc.getcurrentmapindex() pc.get_map_index ile aynı fonksiyon. Bulunulan haritanın numarasını döndürür.
local idx = pc.getcurrentmapindex()
sayı
pc.get_map_index() Geçerli oyuncunun bulunduğu haritanın numarasını döndürür. Zindan kopyasında özel harita numarasını verir (ana harita no x 10.000 + sıra; ör. 66 numaralı haritanın kopyaları 660.000 ile 669.999 arasında). Eski yazımı: pc.getcurrentmapindex.
if pc.get_map_index() == 66 then
sayı
pc.give_exp(etiket (bayrak adı), miktar) Etiketli EXP ödülü verir: geçerli quest'in etiket adlı bayrağı 0 ise EXP ödül listesine eklenir ve betik sonuna kadar çalışıp bitince verilir; toplam bir sonraki seviyenin sınırını aşacaksa sınırın 1 altına kesilir, yani seviye atlatmaz. Bayrak 0 değilse ödül verilmez ve oyuncuya bu ödülü daha önce aldığı bildirilir; fonksiyon bayrağı kendisi yazmadığı için ardından pc.setqf(etiket, 1) çağrılmalıdır.
pc.give_exp("odul", 50000)
yok
pc.give_exp_perc(etiket (bayrak adı), seviye, yüzde) EXP tablosunda verilen seviyenin gerektirdiği EXP'nin yüzde kadarını hesaplar (yüzde kesirli olabilir) ve pc.give_exp gibi etiketli ödül olarak verir; aynı bayrak denetimi ve seviye atlatmama kuralı geçerlidir. Geçerli oyuncu yoksa ya da argümanlar hatalıysa sessizce çıkar.
pc.give_exp_perc("odul", pc.get_level(), 10)
yok
pc.give_exp2(miktar) Verilen EXP'yi beklemeden ve etiket denetimi olmadan ekler; yetiyorsa oyuncuyu bir ya da birkaç seviye atlatır. Oyuncu CONFIG'deki MAX_LEVEL seviyesindeyse EXP eklenmez; argüman sayı değilse sessizce çıkar.
pc.give_exp2(50000)
yok
pc.give_item(etiket (bayrak adı), vnum ya da eşya adı, adet (isteğe bağlı, varsayılan 1)) Etiketli, bir kerelik eşya ödülü verir: geçerli quest'in etiket adlı bayrağı 0 ise eşya ödül listesine eklenir ve betik sonuna kadar çalışıp bitince envantere konur (envanter doluysa yere düşer). Bayrak 0 değilse eşya verilmez ve oyuncuya bu ödülü daha önce aldığı bildirilir; fonksiyon bayrağı kendisi yazmadığı için ardından pc.setqf(etiket, 1) çağrılmalıdır.
pc.give_item("odul", 27001, 5)
yok
pc.give_item2(vnum ya da eşya adı, adet (isteğe bağlı, varsayılan 1)) Eşyayı hemen verir; yığınlanabilir eşyayı önce mevcut yığınlara ekler. Envanter doluysa eşyayı oyuncunun bulunduğu yere düşürür (60 saniye yalnız o oyuncu alabilir, atılamaz eşyada 300 saniye). Verilen eşyanın benzersiz ID'sini (vnum değil) döndürür, eşya oluşturulamazsa 0; adet 0 ya da negatifse 1 verilir, bir bayta çevrildiği için 255'i aşmamalıdır.
local id = pc.give_item2(27001, 10) -- Kırmızı İksir(K)
sayı (eşya ID), verilemezse 0
pc.give_item2_with_dice(vnum ya da eşya adı, adet (isteğe bağlı, varsayılan 1)) pc.give_item2 gibi eşya verir; oyuncu gruptaysa ve yakınında başka grup üyesi varsa eşyanın sahibi yakındaki üyeler arasında zarla belirlenir ve sonuç grup sohbetine yazılır. Eşya kazananın envanterine konur (doluysa yanına düşer), mevcut yığınlara eklenmez. Topluluk eki (ENABLE_DICE_SYSTEM); her kaynakta bulunmaz.
pc.give_item2_with_dice(50011, 1) -- Ayışığı Define Sandığı
sayı (eşya ID), verilemezse 0
pc.give_item2_select(vnum ya da eşya adı, adet (isteğe bağlı, varsayılan 1)) pc.give_item2 gibi eşya verir ve verilen eşyayı geçerli eşya yapar; ardından item.set_socket gibi item fonksiyonları bu eşyaya uygulanır. Eşya mevcut bir yığına eklendiyse seçilen o yığındır; eşya ID'si döndürmez.
pc.give_item2_select(new_vnum, 1); item.set_socket(0, remain_time)
yok
pc.give_gold(miktar) Geçerli oyuncuya verilen miktarda Yang verir ve Yang kaydına yazar. Miktar 0 ya da negatifse hiçbir şey yapmaz (syserr), toplam 2.000.000.000 Yang'a ulaşacaksa Yang eklenmez; Yang düşmek için pc.change_money kullanılır.
pc.give_gold(100000)
yok
pc.count_item(vnum ya da eşya adı) Geçerli oyuncunun envanterinde o eşyadan bulunan toplam adedi (bütün yığınlar) döndürür. Giyili eşyalar ve oyuncunun açık pazarında satışta olanlar sayılmaz; eşya adı verilirse yerel adı bu metinle başlayan ilk eşya aranır, bulunamazsa 0 döner.
if pc.count_item(30006) >= 10 then -- Ork Dişi
sayı
pc.remove_item(vnum ya da eşya adı, adet (isteğe bağlı, varsayılan 1)) Geçerli oyuncunun envanterinden o eşyadan verilen adet kadar siler, gerekirse birden çok yığından. Yeterli eşya yoksa bulunanların hepsini siler ve hata dönmez, bu yüzden önce pc.count_item ile kontrol edilmelidir; açık pazarda satıştaki eşyalara dokunmaz. Üç ya da daha fazla argümanla çağrılırsa hiçbir şey yapmaz.
pc.remove_item(50084, 1) -- Kilit Açma Taşı
yok
pc.countitem(vnum ya da eşya adı) pc.count_item ile aynı fonksiyon. Envanterdeki toplam adedi döndürür.
if pc.countitem("50005") >= 1 then
sayı
pc.removeitem(vnum ya da eşya adı, adet (isteğe bağlı, varsayılan 1)) pc.remove_item ile aynı fonksiyon. Envanterden verilen adet kadar siler.
pc.removeitem("50005", 1)
yok
pc.reset_point() Geçerli oyuncunun durum puanlarını (güç, canlılık, çeviklik, zeka) sınıfın başlangıç değerlerine döndürür ve dağıtılabilir durum puanlarını seviyeye göre yeniden verir. HP ve SP yeniden hesaplanıp doldurulur; beceriler değişmez.
pc.reset_point()
yok
pc.has_guild() Geçerli oyuncu bir loncaya üyeyse true döndürür. Eski yazımı: pc.hasguild.
if pc.has_guild() then
true/false
pc.hasguild() pc.has_guild ile aynı fonksiyon. Oyuncu bir loncaya üyeyse true döndürür.
if pc.hasguild() then
true/false
pc.get_guild() Geçerli oyuncunun loncasının numarasını (lonca id) döndürür, loncası yoksa 0; guild ve building fonksiyonlarına bu numara verilir. Eski yazımı: pc.getguild.
if npc.get_guild() == pc.get_guild() then
sayı (lonca id), loncası yoksa 0
pc.getguild() pc.get_guild ile aynı fonksiyon. Oyuncunun lonca numarasını döndürür, loncası yoksa 0.
local lonca = pc.getguild()
sayı (lonca id), loncası yoksa 0
pc.isguildmaster() pc.is_guild_master ile aynı fonksiyon. Oyuncu loncasının lideriyse true döndürür.
if pc.hasguild() and pc.isguildmaster() then
true/false
pc.is_guild_master() Geçerli oyuncu loncasının lideriyse true, lider değilse ya da loncası yoksa false döndürür. Eski yazımı: pc.isguildmaster.
if not pc.is_guild_master() then
true/false
pc.destroy_guild() Geçerli oyuncu loncasının lideriyse loncayı dağıtma isteğini gönderir, loncanın arazisindeki binaları siler ve araziyi sahipsiz bırakır. Lider değilse ya da loncası yoksa hiçbir şey yapmaz.
pc.destroy_guild()
yok
pc.remove_from_guild() Geçerli oyuncuyu loncasından çıkarma isteğini gönderir. Lonca lideri bu yolla çıkarılamaz; loncası yoksa hiçbir şey yapmaz.
pc.remove_from_guild()
yok
pc.in_dungeon() Geçerli oyuncu bir zindan kopyasının içindeyse true döndürür.
if pc.in_dungeon() then
true/false
pc.getempire() pc.get_empire ile aynı fonksiyon. Oyuncunun krallığını döndürür (1-3).
if pc.getempire() == npc.get_empire() then
sayı (1-3)
pc.get_empire() Geçerli oyuncunun krallığını döndürür: 1 Shinsoo (kırmızı), 2 Chunjo (sarı), 3 Jinno (mavi). Eski yazımı: pc.getempire; questlib.lua'da pc.empire olarak da tanımlıdır.
local empire = pc.get_empire()
sayı (1-3)
pc.get_skill_group() Geçerli oyuncunun beceri grubunu (eğitim yolu) döndürür: 0 henüz seçmemiş, 1 ya da 2. questlib.lua'da pc.skillgroup olarak da tanımlıdır.
if pc.get_skill_group() == 0 then
sayı (0-2)
pc.set_skill_group(grup no) Geçerli oyuncunun beceri grubunu (0, 1 ya da 2) ayarlar ve istemciye bildirir; becerileri sıfırlamaz. Önce oyuncudaki olumlu etkileri (beceri güçlendirmeleri, hız ve durum iksiri etkileri) kaldırır; grup 2'den büyükse ya da oyuncu 5. seviyenin altındaysa grup değişmez ama etkiler yine kaldırılmış olur.
pc.set_skill_group(1)
yok
pc.warp(x (ham koordinat), y (ham koordinat), zindan harita no (isteğe bağlı)) Geçerli oyuncuyu ham dünya koordinatına (metre x 100, ör. pc.get_x() * 100) ışınlar; hedef harita koordinattan bulunur, üçüncü değer yalnız 10.000 ve üstü bir zindan kopyası numarası verilirse kullanılır. Ticaret, dükkân, pazar, depo, küp ya da kuşak penceresi açıksa veya son 10 saniye içinde depo açma, ticaret, dükkân ya da pazar işlemi veya yükseltme yapıldıysa ışınlamaz, nedeni oyuncuya yazılır ve false döner. Argümanlar sayı değilse false, diğer durumlarda (ışınlanma sonradan başarısız olsa bile) true döner.
pc.warp(590500, 110500)
true/false
pc.warp_local(harita no, x (yerel, metre x 100), y (yerel, metre x 100)) Geçerli oyuncuyu verilen haritanın içindeki yerel koordinata ışınlar; koordinat harita başlangıcına göre ham birimdedir (yerel metre x 100). Koordinat harita boyutunu aşarsa ya da harita bulunamazsa syserr'e yazıp ışınlamaz; yalnız ana harita numarasıyla çalışır, zindan kopyasına götürmez ve pc.warp'taki pencere ve süre denetimini yapmaz.
pc.warp_local(pc.get_map_index(), x * 100, y * 100)
yok
pc.warp_exit() Geçerli oyuncuyu kayıtlı dönüş konumuna ışınlar: pc.set_warp_location ile ayarlanan konum ya da zindan kopyasına girerken saklanan çıkış konumu. Dönüş konumu yoksa ışınlama başarısız olur (syserr); pc.warp'taki pencere ve süre denetimini yapmaz.
pc.warp_exit()
yok
pc.set_warp_location(harita no, x (metre), y (metre)) Geçerli oyuncunun dönüş konumunu ayarlar; x, y metre cinsindendir (ham koordinat / 100). Oyuncu oyundan çıkarsa bir sonraki girişte bu konumda başlar ve pc.warp_exit buraya ışınlar; sonraki her ışınlanma bu kaydın üzerine yazar.
pc.set_warp_location(65, 5905, 1105)
yok
pc.set_warp_location_local(harita no, x, y) Yerel koordinatla dönüş konumu ayarlamak için yazılmıştır: koordinatı harita boyutuna göre denetler, ama kaydederken harita başlangıç koordinatını eklemez ve değeri pc.set_warp_location gibi metre cinsinden dünya konumu sayar. Bu yüzden başlangıcı 0 olmayan haritalarda yanlış konum kaydeder; yerine pc.set_warp_location kullanın. yok
pc.get_start_location() Geçerli oyuncunun krallığına ait başlangıç noktasını döndürür: harita numarası (1, 21 ya da 41) ile metre cinsinden x ve y (ham koordinat / 100). Değerler sunucu koduna gömülüdür; pc.warp ile kullanırken x ve y 100 ile çarpılır.
local idx, x, y = pc.get_start_location(); pc.warp(x * 100, y * 100)
üç sayı (harita no, x, y)
pc.has_master_skill() Geçerli oyuncunun en az bir becerisi 21. seviyede (M2) ya da üstündeyse (usta, Grand Master ya da Perfect Master aşaması) true döndürür; destek becerileri dahil bütün beceriler taranır. Tam M1 (20. seviye) olan beceri sayılmaz.
if pc.has_master_skill() then
true/false
pc.set_part(parça no, değer) Geçerli oyuncunun görünüm parçasını verilen değerle değiştirir ve yeni görünümü çevredeki oyunculara gönderir (parça no: 0 gövde, 1 silah, 2 kafa, 3 saç, 4 kuşak). Eşya takıp çıkarmak bu değerin üzerine yazar; argümanlar sayı değilse hiçbir şey yapmaz.
pc.set_part(1, 0)
yok
pc.get_part(parça no) Geçerli oyuncunun görünüm parçasının değerini döndürür (0 gövde, 1 silah, 2 kafa, 3 saç, 4 kuşak). Argüman sayı değilse 0 döner.
local sac = pc.get_part(3)
sayı
pc.is_polymorphed() Geçerli oyuncu bir canavara dönüşmüş haldeyse true döndürür.
if pc.is_polymorphed() then
true/false
pc.remove_polymorph() Geçerli oyuncudaki dönüşüm etkisini kaldırır ve oyuncuyu kendi görünümüne döndürür.
pc.remove_polymorph()
yok
pc.is_mount() Geçerli oyuncu bir bineğe ya da ata biniyorsa (binek vnum'u 0 değilse) true döndürür.
if not pc.is_mount() then
true/false
pc.polymorph(canavar vnum, süre (saniye)) Geçerli oyuncuyu verilen canavarın görünümüne dönüştürür; dönüşüm etkisi süre (saniye) dolunca kalkar. Dönüşürken ata binmeyi bırakır; argümanlar denetlenmez.
pc.polymorph(101, 300) -- Yabani Köpek
yok
pc.mount(binek vnum, süre (saniye, isteğe bağlı, varsayılan 60)) Geçerli oyuncuyu verilen vnum'lu bineğe süre boyunca bindirir; önce eski binek etkisini ve binek bonusunu kaldırır, çağrılmış atı geri gönderir (vnum 0 ise yalnız bunları yapar). 20201-20218 arasındaki binekler ayrıca hareket hızı verir. ENABLE_NEWSTUFF ile gelen no_mount_at_guild_war olay bayrağı açıkken lonca savaşı haritasında bindirmez ve oyuncuyu binekten indirir.
pc.mount(20030, 600)
yok
pc.mount_bonus(bonus türü (apply no), değer, süre (saniye)) Geçerli oyuncu bir bineğe biniyorsa eski binek bonusunu kaldırıp verilen bonusu süre boyunca ekler; binmiyorsa hiçbir şey yapmaz. Bonus türü questlib.lua'daki apply tablosundaki numaradır (ör. apply.MAX_HP); genelde pc.mount ile aynı süreyle çağrılır.
pc.mount_bonus(apply.MAX_HP, 500, 3600)
yok
pc.unmount() Geçerli oyuncudaki binek etkisini ve binek bonusunu kaldırır; oyuncu ata biniyorsa attan indirir.
pc.unmount()
yok
pc.warp_to_guild_war_observer_position(lonca id, rakip lonca id) Geçerli oyuncuyu iki lonca arasında süren savaşın haritasına izleyici konumunda ışınlar; ışınlamadan önce bulunduğu yeri çıkış konumu olarak kaydeder ve war quest'inin is_war_member bayrağını 0 yapar. Loncalardan biri yoksa ya da aralarında savaş haritası yoksa Lua hatası verir (betik durur); pc.warp'taki pencere ya da süre denetimine takılırsa ışınlamaz, nedeni oyuncuya yazılır.
pc.warp_to_guild_war_observer_position(g[s][1], g[s][2])
yok
pc.give_item_from_special_item_group(grup vnum) special_item_group dosyasındaki grubu sandık açar gibi açıp sonucu geçerli oyuncuya uygular: gruba göre eşya, Yang ya da EXP verebilir, canavar çıkarabilir ya da yavaşlatma, zehir gibi etkiler uygulayabilir. Yang ve EXP verildiğinde oyuncuya sohbet mesajı gider; grup yoksa syserr'e yazar.
pc.give_item_from_special_item_group(50011)
yok
pc.learn_grand_master_skill(beceri vnum) Verilen beceri için bir Grand Master eğitim denemesi yapar (Ruh Taşı quest'inin kullandığı işlem; eşyayı kendisi silmez). Beceri G aşamasında değilse nedeni oyuncuya yazılır ve false döner; deneme başarılıysa beceri bir seviye artar ve true, başarısızsa false döner. Her denemede training_grandmaster_skill.skill<vnum> bayrağını artırır, varsa Münzevi Tavsiyesi etkisini tüketir, okuma bekleme süresini denetlemez.
if pc.learn_grand_master_skill(skill_vnum) then
true/false
pc.is_skill_book_no_delay() Geçerli oyuncuda beceri kitabı okuma bekleme süresini bir kez kaldıran etki (Kötü Ruh Kovma Kağıdı, 71001) varsa true döndürür.
if pc.is_skill_book_no_delay() then
true/false
pc.remove_skill_book_no_delay() Geçerli oyuncudaki beceri kitabı okuma bekleme süresini kaldıran etkiyi (Kötü Ruh Kovma Kağıdı, 71001) siler.
pc.remove_skill_book_no_delay()
yok
pc.enough_inventory(vnum) Verilen vnum'daki eşyanın boyutu kadar boş yerin geçerli oyuncunun ana envanterinde olup olmadığını döndürür. Yığınlanmayı, kemer ve ejderha taşı envanterini hesaba katmaz; vnum sayı değilse ya da item_proto'da yoksa false döner.
if not pc.enough_inventory(27001) then return end
true/false
pc.get_horse_level() Geçerli oyuncunun at seviyesini döndürür; atı yoksa 0. Kayıt tablosunda silinecek diye işaretlidir, aynı işi horse.get_level görür.
if pc.get_horse_level() == 0 then
sayı
pc.is_horse_alive() Geçerli oyuncunun atı varsa ve atın canı 0'dan büyükse true döndürür. Kayıt tablosunda silinecek diye işaretlidir; horse modülündeki fonksiyonlar tercih edilmelidir.
if not pc.is_horse_alive() then
true/false
pc.revive_horse() Geçerli oyuncunun ölü atını diriltir: atın canı ve dayanıklılığı en yükseğe çıkar, at yeniden çağrılır. At yoksa ya da ölü değilse bir şey yapmaz. Kayıt tablosunda silinecek diye işaretlidir, aynı işi horse.revive görür.
pc.revive_horse()
yok
pc.have_pos_scroll(x (genel koordinat, pc.get_x() değerinin 100 katı), y (aynı birim), yarıçap (aynı birim)) Geçerli oyuncunun envanterinde, kaydettiği konum verilen noktaya yarıçaptan yakın olan bir dönüş kağıdı (USE_TALISMAN türü, konum kaydeden) varsa true döndürür. Yarıçap verilmezse 0 sayılır ve sonuç hep false olur; x ya da y sayı değilse syserr yazıp false döner.
if pc.have_pos_scroll(pc.get_x() * 100, pc.get_y() * 100, 5000) then
true/false
pc.have_map_scroll(harita adı) Adı verilen harita bölgesinin sınırları içinde kayıtlı konumu olan bir dönüş kağıdı (USE_TALISMAN) envanterde varsa true döndürür; bölge bulunamazsa false. Sunucudaki bölge arama kodu ters çalışır, adı verilen metinle başlamayan ilk bölgeyi seçer; bu yüzden sonuç güvenilir değildir.
if pc.have_map_scroll("metin2_map_a1") then
true/false
pc.get_war_map() Geçerli oyuncu bir lonca savaşı haritasındaysa o haritanın numarasını, değilse 0 döndürür.
if pc.get_war_map() == 0 then
sayı (harita no), savaş haritasında değilse 0
pc.get_equip_refine_level(ekipman yuvası (0 zırh, 1 kask, 2 ayakkabı, 3 bilezik, 4 silah, 5 kolye, 6 küpe ...)) Geçerli oyuncunun verilen ekipman yuvasında giydiği eşyanın yükseltme seviyesini (eşya adındaki +N) döndürür. Yuva boşsa 0; yuva numarası geçersizse syserr yazıp 0 döner.
local arti = pc.get_equip_refine_level(4)
sayı
pc.refine_equip(ekipman yuvası, en yüksek yükseltme seviyesi, başarı yüzdesi (isteğe bağlı, varsayılan 100)) Verilen yuvada giyilen eşyayı item_proto'daki yükseltilmiş vnum'una çevirir; eşyanın şu anki +N değeri verilen sınırı aşıyorsa ya da yükseltilmiş vnum'u yoksa false döner. Yang ya da malzeme almaz. Başarıda taşlar, açık soketler ve efsunlar yeni eşyaya taşınır (kırık taş boş sokete döner), başarısızlıkta eşya olduğu gibi kalır.
if pc.refine_equip(4, 8, 50) then
true/false
pc.get_skill_level(beceri vnum) Geçerli oyuncunun verilen becerideki seviyesini döndürür: 1-19 normal, 20-29 M, 30-39 G, 40 P. Parametre sayı değilse syserr yazıp 0 döner.
local seviye = pc.get_skill_level(131)
sayı (0-40)
pc.give_lotto() Eski piyango sistemi: veritabanındaki lotto_list tablosuna kayıt ekler, kayıt başarılı olunca geçerli oyuncuya İyi Şans Kitabı (50001) verir. Kitabın 0. soketine kayıt numarası, 1. soketine lotto_round olay bayrağının değeri yazılır; eşya veritabanı yanıtı geldikten sonra verilir.
pc.give_lotto()
yok
pc.aggregate_monster() Geçerli oyuncunun çevresindeki, o an hedefi olmayan ve 100 metre içindeki canavarları oyuncuya saldırtır. Metin taşları ve NPC'ler etkilenmez, hareket edemeyen canavarlar gelmez.
pc.aggregate_monster()
yok
pc.forget_my_attacker() Çevrede geçerli oyuncuyu hedef almış canavarların hedefi bırakmasını sağlar ve oyuncuya 5 saniyelik diriliş görünmezliği verir. Bu sürede canavarlar onu hedef almaz; oyuncu saldırırsa etki kalkar.
pc.forget_my_attacker()
yok
pc.pc_attract_ranger() Çevredeki uzak menzilli canavarların (saldırı menzili 150'den büyük) menzilini 3 dakikalığına 150'ye indirir, böylece oyuncuya yaklaşarak saldırırlar; yalnız hedefi olmayan ya da bu oyuncuyu hedef alan canavarlar etkilenir. Kayıt adı yanlışlıkla pc_ önekiyle yapılmıştır, Lua'da pc.pc_attract_ranger diye çağrılır.
pc.pc_attract_ranger()
yok
pc.select(vid) Vid'i verilen oyuncuyu geçici olarak geçerli oyuncu yapar, sonraki pc fonksiyonları onun üzerinde çalışır; önceki geçerli oyuncunun vid'ini döndürür (önceki yoksa 0), iş bitince pc.select(eski) ile geri dönülür. Vid bulunamazsa 0 döner, vid bir canavara aitse seçim değişmez; seçim değişince d.select ile seçilmiş zindan da sıfırlanır. pc.select_vid ile aynı fonksiyon; quest dosyalarında bu ad kullanılır.
local eski = pc.select(u_vid)
sayı (önceki oyuncunun vid'i), bulunamazsa 0
pc.get_sex() Geçerli oyuncunun cinsiyetini karakter ırkından hesaplayıp döndürür. questlib.lua bunun için MALE = 0 ve FEMALE = 1 sabitlerini tanımlar.
if pc.get_sex() == MALE then
sayı (0 erkek, 1 kadın)
pc.is_married() Geçerli oyuncu evliyse true döndürür.
if pc.is_married() then
true/false
pc.is_engaged() Geçerli oyuncu nişanlıysa, yani evlilik töreni henüz tamamlanmamışsa true döndürür.
if pc.is_engaged() then
true/false
pc.is_engaged_or_married() Geçerli oyuncu nişanlı ya da evliyse true döndürür.
when oldwoman.chat."Evlenmek istiyorum" with not pc.is_engaged_or_married() begin
true/false
pc.is_gm() Geçerli oyuncunun GM seviyesi HIGH_WIZARD (3) ya da üstüyse true döndürür. Test sunucusunda (test_server açıkken) herkes en yüksek GM seviyesinde sayıldığından hep true döner.
if pc.is_gm() then
true/false
pc.get_gm_level() Geçerli oyuncunun GM seviyesini döndürür: 0 oyuncu, 1 LOW_WIZARD, 2 WIZARD, 3 HIGH_WIZARD, 4 GOD, 5 IMPLEMENTOR. Test sunucusunda herkes için 5 döner.
if pc.get_gm_level() >= 4 then
sayı (0-5)
pc.mining() Geçerli NPC bir maden damarıysa geçerli oyuncu için kazıyı başlatır; oyuncu zaten kazıyorsa kazıyı iptal eder. Silah yuvasında kazma olmalı ve damar aynı haritada 10 metre içinde olmalıdır; kazma yoksa uyarı gösterir.
pc.mining()
yok
pc.ore_refine(Yang ücreti, başarı yüzdesi, metin taşı hücresi) Geçerli eşya olan ham cevherden 100 adet harcayıp verilen yüzdeyle 1 işlenmiş cevher vermeyi dener; verilen envanter hücresindeki eşya (metin taşı olduğu denetlenmez) ve Yang ücreti de harcanır, başarısızlıkta geri gelmez. Geçerli NPC gerekir ve ücret lonca binası kurallarına göre değişir (kendi loncana %10 indirim, başka krallıktan gelene 3 kat). Cevher Yang denetiminden önce düşüldüğü için Yang yetmezse cevher yine gider; quest önce Yang'ı denetlemelidir.
if pc.ore_refine(3000, pct, selected_item_cell) then
true/false
pc.diamond_refine(Yang ücreti, başarı yüzdesi) pc.ore_refine gibi çalışır ama metin taşı istemez; lonca binasındaki simyacının elmas işlemesinde kullanılır. Geçerli eşyadan 100 adet harcanır ve Yang yetmese de cevher düşülür; başarı yüzdesi verilmezse 0 sayılır.
if pc.diamond_refine(10000, pct) then
true/false
pc.clear_one_skill(beceri vnum) Geçerli oyuncunun verilen becerisini 0'a indirir ve becerinin seviyesi kadar, en çok 17 beceri puanını geri verir. Beceri Sıfırlama Kağıdı (71003) quest'i bunu kullanır.
pc.clear_one_skill(1)
yok
pc.clear_skill() Geçerli oyuncunun bütün becerilerini sıfırlar ve dağıtılmamış beceri puanını seviye eksi 1 yapar. Yardımcı beceriler (liderlik, kombo, madencilik, dil, dönüşüm, at becerileri) korunur; beceri grubu değişmez.
pc.clear_skill()
yok
pc.clear_sub_skill() Geçerli oyuncunun yardımcı becerilerini (liderlik, kombo, madencilik, dil, dönüşüm, at becerileri) sıfırlar ve yardımcı beceri puanını seviye eksi 9 yapar; seviye 10'un altındaysa puana dokunmaz.
pc.clear_sub_skill()
yok
pc.set_skill_point(puan) Geçerli oyuncunun dağıtılmamış beceri puanını verilen değere ayarlar ve istemciyi günceller. Parametre sayı değilse bir şey yapmaz.
pc.set_skill_point(pc.get_level() - 1)
yok
pc.is_clear_skill_group() Geçerli oyuncunun skill_group_clear quest'indeki clear bayrağı 1 ise true döndürür. Beceri grubu seçtiren questler oyuncuya beceri puanı verip vermeyeceğine buna bakarak karar verir.
if not pc.is_clear_skill_group() then
true/false
pc.save_exit_location() Geçerli oyuncunun bulunduğu konumu ve haritayı çıkış konumu olarak kaydeder. Bu konum karakterle birlikte saklanır; oyuncu bir zindan (örnek harita) içindeyken oyundan çıkarsa sonraki girişte buraya gönderilir.
pc.save_exit_location()
yok
pc.teleport(kasaba no (0-9) ya da oyuncu adı) Sayı verilirse kaynakta sabit yazılmış 10 kasaba konumundan birine, oyuncu adı verilirse o oyuncunun yanına ışınlar ve 1 döner. Hedef başka bir çekirdekte ama aynı kanaldaysa onun haritasının ortasına ışınlar ve 0 döner, başka kanaldaysa yalnız bilgi yazar. Kasaba numarası denetlenmez, 0-9 dışı değer verilmemelidir; yönetici (GM) işi içindir.
pc.teleport(0)
sayı (1 ya da 0)
pc.set_skill_level(beceri vnum, seviye) Geçerli oyuncunun verilen becerisini doğrudan verilen seviyeye ayarlar (en çok 40) ve ustalık türünü seviyeden belirler: 20 ve üstü M, 30 ve üstü G, 40 P. Beceri puanı harcamaz ya da geri vermez; istemciye yeni beceri listesi gönderilir.
pc.set_skill_level(1, 20)
yok
pc.give_polymorph_book(canavar vnum, kalan pratik sayısı, kitap seviyesi, seviye sınırı (kullanılmaz)) Geçerli oyuncuya Dönüşüm Aracı (50322) verir; 0. sokete canavar vnum'u, 1. sokete kalan pratik sayısı, 2. sokete kitap seviyesi yazılır. Dördüncü parametre okunur ama kullanılmaz. Canavar vnum'u geçersizse eşya yine verilir ama soketleri boş kalır.
pc.give_polymorph_book(101, 10, 1, 0)
yok
pc.upgrade_polymorph_book() Geçerli eşyayı dönüşüm kitabı sayıp seviyesini 1 artırır ve kalan pratik sayısını eski seviyenin 50 katı yapar. Eşyanın gerçekten dönüşüm kitabı olduğunu denetlemez; geçerli eşya yoksa false döner.
if pc.upgrade_polymorph_book() then
true/false
pc.get_premium_remain_sec(premium türü (0 deneyim, 1 eşya düşürme, 2 depo, 3 Yang otomatik toplama, 4 balıkçılık, 5 evlilik, 6 Yang düşürme)) Geçerli oyuncunun verilen premium hizmetinin bitmesine kalan saniyeyi döndürür. Değer bitiş zamanından şimdiki zamanın çıkarılmasıyla bulunur; hizmet hiç alınmamışsa ya da bitmişse 0 ya da eksi çıkar, bu yüzden 0'dan büyük olup olmadığına bakılmalıdır. Geçersiz türde syserr yazar.
if pc.get_premium_remain_sec(0) > 0 then
sayı (saniye), geçersiz türde nil
pc.send_block_mode(engelleme bayrakları (toplam)) Geçerli oyuncunun engelleme modunu bit toplamıyla ayarlar ve istemciye bildirir: 1 ticaret, 2 grup daveti, 4 lonca daveti, 8 fısıltı, 16 arkadaş daveti, 32 grup isteği. game_option bayraklarını yazmaz; game_option quest'i girişte kayıtlı seçenekleri bununla yükler.
pc.send_block_mode(1 + 8)
yok
pc.change_empire(krallık no (1 Shinsoo, 2 Chunjo, 3 Jinno)) Geçerli oyuncunun hesabının krallığını veritabanında değiştirir; krallık hesap düzeyinde tutulduğu için hesaptaki bütün karakterler etkilenir. Hesaptaki bir karakter loncadaysa 2, nişanlı ya da evliyse 3 döner; başarıda krallık değiştirme sayacı 1 artar ve değişiklik yeniden girişte görünür. Oyuncu gruptaysa uyarı yazar ve değer döndürmez; Yang ya da eşya almak quest'in işidir.
if pc.change_empire(2) == 999 then
sayı (999 başarı, 0 hata, 1 aynı krallık, 2 lonca, 3 evlilik), grupta ise nil
pc.get_change_empire_count() Geçerli oyuncunun hesabının şimdiye kadar kaç kez krallık değiştirdiğini change_empire tablosundan okur; kayıt yoksa 0 döner. Her çağrı veritabanına doğrudan sorgu gönderir.
if pc.get_change_empire_count() >= 1 then
sayı
pc.set_change_empire_count() Geçerli oyuncunun hesabının krallık değiştirme sayacını 1 artırır, kayıt yoksa 1 ile oluşturur. Başarılı pc.change_empire sayacı zaten artırdığından ardından bunu çağırmak sayacı iki kez artırır.
pc.set_change_empire_count()
yok
pc.change_name(yeni ad) Geçerli oyuncunun adını değiştirir, yeni ad sonraki girişte geçerli olur; başarıda arkadaş listesi temizlenir. Dönüş: 4 başarılı, 0 bu oturumda zaten ad değiştirilmiş (yeniden giriş gerekir), 1 metin verilmemiş, 2 ad kurallara uymuyor (yalnız harf ve rakam, en az 2 karakter, yasaklı kelime ya da canavar adı olamaz), 3 ad kullanımda. Uzunluk üst sınırını denetlemez, bunu quest yapmalıdır.
local ret = pc.change_name(str)
sayı (0-4)
pc.is_dead() Geçerli oyuncu ölüyse true döndürür. Geçerli oyuncu yoksa da true döner, bu yüzden server_timer içinde de çağrılabilir.
if pc.is_dead() then return end
true/false
pc.reset_status(statü no (0 HT, 1 IQ, 2 ST, 3 DX)) Geçerli oyuncunun verilen temel statüsünü 1'e indirir ve aradaki farkı dağıtılmamış statü puanı olarak geri verir. HT ya da IQ sıfırlanınca seviyeye bağlı rastgele HP/SP yeniden hesaplanır ve HP/SP doldurulur; numara 0-3 dışındaysa false döner.
if pc.reset_status(0) == true then
true/false
pc.get_ht() Geçerli oyuncunun temel HT (canlılık, VIT) değerini döndürür; ekipman ve etki bonusları dahil değildir.
if pc.get_ht() == 1 then
sayı
pc.set_ht(değer) Geçerli oyuncunun temel HT değerini verilen değere ayarlar; aradaki fark dağıtılmamış statü puanından düşülür ya da ona eklenir. Sınır denetimi yoktur, statü puanı eksiye düşebilir.
pc.set_ht(pc.get_ht() + 1)
yok (verilen değer geri gelir)
pc.get_iq() Geçerli oyuncunun temel IQ (zekâ, INT) değerini döndürür; ekipman ve etki bonusları dahil değildir.
if pc.get_iq() == 1 then
sayı
pc.set_iq(değer) Geçerli oyuncunun temel IQ değerini verilen değere ayarlar; aradaki fark dağıtılmamış statü puanından düşülür ya da ona eklenir. Sınır denetimi yoktur, statü puanı eksiye düşebilir.
pc.set_iq(pc.get_iq() + 1)
yok (verilen değer geri gelir)
pc.get_st() Geçerli oyuncunun temel ST (güç, STR) değerini döndürür; ekipman ve etki bonusları dahil değildir.
if pc.get_st() == 1 then
sayı
pc.set_st(değer) Geçerli oyuncunun temel ST değerini verilen değere ayarlar; aradaki fark dağıtılmamış statü puanından düşülür ya da ona eklenir. Sınır denetimi yoktur, statü puanı eksiye düşebilir.
pc.set_st(pc.get_st() + 1)
yok (verilen değer geri gelir)
pc.get_dx() Geçerli oyuncunun temel DX (çeviklik, DEX) değerini döndürür; ekipman ve etki bonusları dahil değildir.
if pc.get_dx() == 1 then
sayı
pc.set_dx(değer) Geçerli oyuncunun temel DX değerini verilen değere ayarlar; aradaki fark dağıtılmamış statü puanından düşülür ya da ona eklenir. Sınır denetimi yoktur, statü puanı eksiye düşebilir.
pc.set_dx(pc.get_dx() + 1)
yok (verilen değer geri gelir)
pc.is_near_vid(vid, mesafe (metre)) Vid'i verilen karakter geçerli oyuncuya verilen metreden yakınsa true döndürür. Karakter bulunamazsa ya da parametreler sayı değilse false; harita karşılaştırması yapmaz, yalnız koordinat farkına bakar.
if not pc.is_near_vid(find_pc_by_name(s), 10) then
true/false
pc.get_socket_items() Geçerli oyuncunun envanterinde giyili olmayan ve soketinde metin taşı takılı eşyaları listeler; her öğe {eşya adı, hücre no} biçiminde bir tablodur. Taş sökme işleri için yazılmıştır; geçerli oyuncu yoksa boş tablo döner.
local liste = pc.get_socket_items()
tablo ({ad, hücre} listesi)
pc.get_empty_inventory_count() Geçerli oyuncunun ana envanterindeki boş hücre sayısını döndürür (bu derlemede 4 sayfa, 180 hücre); çok hücreli eşyalar boyutları kadar sayılır. Geçerli oyuncu yoksa 0.
if pc.get_empty_inventory_count() < 5 then
sayı
pc.get_logoff_interval() Karakterin son çıkışından (son kaydından) bu girişe kadar geçen süreyi saniye olarak döndürür; değer girişte hesaplanır. Geçerli oyuncu yoksa 0.
if pc.get_logoff_interval() > 86400 then
sayı (saniye)
pc.is_riding() Geçerli oyuncu ata ya da bir bineğe binmişse true döndürür; geçerli oyuncu yoksa false.
if pc.is_riding() then
true/false
pc.get_special_ride_vnum() Geçerli oyuncunun takılı özel binek eşyasını arar: önce iki özel eşya yuvasında özel binek grubundan bir eşya, yoksa binek kostümü yuvası. Bulunan eşyanın vnum'unu ve 0. soket değerini (süreli eşyada süre bilgisi) döndürür.
local vnum, kalan = pc.get_special_ride_vnum()
iki sayı (vnum, 0. soket), yoksa 0, 0
pc.can_warp() Geçerli oyuncunun şu an ışınlanabilir durumda olup olmadığını döndürür. Ticaret, kendi pazarı, dükkân, depo, cube ya da omuz kuşağı penceresi açıksa veya son 10 saniye içinde depo açmış, ticaret yapmış, pazar kurmuş ya da yükseltme yapmışsa false döner.
if not pc.can_warp() then return end
true/false
pc.dec_skill_point() Geçerli oyuncunun dağıtılmamış beceri puanını 1 azaltır. Geçerli oyuncu yoksa bir şey yapmaz.
pc.dec_skill_point()
yok
pc.get_skill_point() Geçerli oyuncunun dağıtılmamış beceri puanını döndürür; geçerli oyuncu yoksa 0.
if pc.get_skill_point() > 0 then
sayı
pc.get_channel_id() Quest'in çalıştığı oyun çekirdeğinin kanal numarasını döndürür. Geçerli oyuncu gerektirmez.
local kanal = pc.get_channel_id()
sayı
pc.give_poly_marble(canavar vnum) Verilen canavarın mob_proto'daki dönüşüm eşyasını (Dönüşüm Küresi gibi) 0. soketine canavar vnum'u yazılmış olarak geçerli oyuncunun envanterine koyar. Canavarın dönüşüm eşyası yoksa ya da envanterde yer yoksa false döner, eşya yere düşmez.
pc.give_poly_marble(101) -- Yabani Köpek
true/false
pc.get_sig_items(grup vnum) Geçerli oyuncunun envanterinde special_item_group'taki verilen gruba üye eşyaların kimliklerini (item id) ayrı değerler olarak döndürür; tablo değil çoklu değer döndüğü için süslü parantezle tabloya alınır. Quest türü eşyalar quest türü gruplara, unique türü eşyalar special türü gruplara üye sayılır.
local items = {pc.get_sig_items(10032)}
birden çok sayı (eşya kimlikleri)
pc.charge_cash(miktar (1-50.000), tür (isteğe bağlı, "cash" ya da "mileage", varsayılan cash)) Geçerli oyuncunun hesabına EP (account.cash) ya da mileage eklemesi için veritabanı sunucusuna istek gönderir. Miktar 1-50.000 dışındaysa ya da geçerli oyuncu yoksa false döner; true yalnız isteğin gönderildiğini gösterir, güncelleme eşzamansız yapılır. EP kuponu quest'i bunu kullanır.
if pc.charge_cash(100, "cash") then
true/false
pc.get_informer_type() item_informer olayında, hesaba gelen nesne market ödülünün komut türünü döndürür. Veritabanı yalnız neden (why) alanı [GIFT] ile başlayan item_award kayıtları için bildirim gönderdiğinden değer pratikte GIFT olur; değer yalnız bu bildirimle ayarlanır, olay dışında kullanılmamalıdır.
if pc.get_informer_type() == "GIFT" then
metin
pc.get_informer_item() item_informer olayında, bildirimi gelen nesne market ödülünün eşya vnum'unu döndürür; değer yalnız bu bildirimle ayarlanır. Geçerli oyuncu yoksa 0.
local vnum = pc.get_informer_item()
sayı
pc.give_award(vnum, adet, neden metni) Geçerli oyuncunun hesabının nesne market deposuna (item_award tablosu) eşya ekler. Aynı hesap ve aynı neden metniyle daha önce kayıt varsa eklemez, böylece ödül hesap başına bir kez verilir. Neden metni sabit olmalıdır, oyuncunun yazdığı bir metin verilmemelidir.
pc.give_award(71084, 10, "hosgeldin_odulu")
sayı (her zaman 0)
pc.give_award_socket(vnum, adet, neden metni, soket0, soket1, soket2) pc.give_award gibi nesne market deposuna hesap başına bir kez eşya ekler, ayrıca eşyanın üç soket değerini yazar. Altı parametrenin hepsi zorunludur; neden metni ve soket değerleri sabit olmalı, oyuncu girdisi verilmemelidir.
pc.give_award_socket(50300, 1, "kitap_odulu", 1, 0, 0)
sayı (her zaman 0)
pc.get_killee_drop_pct() Kill olayında, ölen canavar için sunucunun eşya düşürme hesabında kullandığı iki değeri döndürür: seviye farkı, premium ve düşürme bonusları uygulanmış yüzde çarpanı ile rastgele aralık. Yalnız kill olayında kullanılmalıdır; canavar bulunamazsa syserr yazıp -1, -1 döner. questlib.lua'daki drop_gamble_with_flag bunu kullanır.
local dp, range = pc.get_killee_drop_pct()
iki sayı (yüzde çarpanı, rastgele aralık), hata durumunda -1, -1
pc.set_race0(sınıf no (0 savaşçı, 1 ninja, 2 sura, 3 şaman, 4 lycan)) Geçerli oyuncunun sınıfını cinsiyetini koruyarak değiştirir (lycan yalnız erkek olduğundan kadın karakter erkek lycan olur), becerilerini sıfırlar ve beceri grubunu 0 yapar; model hemen yenilenir. Statülere ve ekipmana dokunmaz. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.set_race0(2)
yok
pc.delf(quest adı, bayrak adı) Geçerli oyuncunun başka bir quest'e ait bayrağını siler; bayrak varsa true, yoksa false döner. Parametreler metin değilse syserr yazar ve değer döndürmez. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.delf("skill_reset2", "time")
true/false, geçersiz parametrede nil
pc.make_item0(eşya tablosu ({vnum ya da eşya adı, adet}), soket tablosu, efsun tablosu, verme şekli (0, 1 ya da 2), sahiplik süresi (isteğe bağlı, saniye)) Soketleri ve en çok 7 efsunu ({tür1, değer1, ..., tür7, değer7}) belirlenmiş tek bir eşya üretir; adet okunur ama kullanılmaz, eşya hep 1 adet olur. Verme şekli 0 ise envantere koyar (yer yoksa false), 1 ise oyuncunun yakınına yere atar, 2 ise yere atıp sahipliğini oyuncuya verir (10 saniye ve altı 30 saniye sayılır); yere atılan eşya 5 dakika sonra silinir. Eşya adı verilirse adı bu metinle başlayan ilk eşya seçilir. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.make_item0({19, 1}, {0, 0, 0}, {1, 500, 7, 5}, 0) -- Kılıç+9, Max HP +500, saldırı hızı +%5
true/false, geçersiz parametrede nil
pc.pointchange(puan türü no, miktar, miktarı göster (isteğe bağlı, true/false), çevreye yayınla (isteğe bağlı, true/false)) Geçerli oyuncunun verilen puan türünü sunucu tarafında doğrudan miktar kadar değiştirir (1 seviye, 3 deneyim, 5 HP, 7 SP, 11 Yang, 26 statü puanı, 28 beceri puanı gibi). Üçüncü parametre değişim miktarını istemciye gönderir, dördüncüsü güncellemeyi çevredeki oyunculara da yollar. Denetim yapmaz; yönetici (GM) ve ileri düzey quest işi içindir. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.pointchange(26, 5)
yok
pc.pullmob() Geçerli oyuncunun 1-30 metre çevresindeki canavarları ona doğru 3 metre çeker, en fazla 1 metre yakına kadar. Metin taşları ve NPC'ler etkilenmez. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.pullmob()
yok
pc.select_pid(oyuncu kimliği (pid)) pc.select gibi çalışır ama oyuncuyu vid yerine oyuncu kimliğiyle (pid) bulur ve önceki geçerli oyuncunun pid'ini döndürür; oyuncu bu çekirdekte değilse 0. Gövdede geçerli oyuncu denetimi yoktur, server_timer gibi oyuncusuz bağlamda kullanılmamalıdır. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
local eski = pc.select_pid(hedef_pid)
sayı (önceki oyuncunun pid'i), bulunamazsa 0
pc.select_vid(vid) Vid'i verilen oyuncuyu geçici olarak geçerli oyuncu yapar ve önceki geçerli oyuncunun vid'ini döndürür; bulunamazsa 0. Eski yazımı: pc.select (aynı fonksiyon, quest dosyalarında o ad kullanılır). Bu ikinci adı topluluk eki (ENABLE_NEWSTUFF) ekler; her kaynakta bulunmaz.
local eski = pc.select_vid(vid)
sayı (önceki oyuncunun vid'i), bulunamazsa 0
pc.set_level0(seviye) Geçerli oyuncunun seviyesini verilen değere ayarlar ve karakteri o seviyeye göre sıfırlar: statüler sınıfın başlangıç değerine döner, statü puanı yeniden hesaplanır, HP/SP dolar, normal ve yardımcı bütün beceriler sıfırlanır. Seviye değişince levelup olayı da çalışır. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.set_level0(1)
yok
pc.set_gm_level() Geçerli oyuncunun GM seviyesini sunucuda yüklü GM listesine göre yeniden hesaplar; yetkiyi /reload a yapmadan tazelemek içindir. Yetki vermez, listede olmayan oyuncu 0'da kalır. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.set_gm_level()
yok
pc.is_flag_fire() Geçerli oyuncuda yanma etkisi varsa true döndürür. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
if pc.is_flag_fire() then
true/false
pc.is_flag_invisible() Geçerli oyuncuda görünmezlik etkisi varsa true döndürür. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
if pc.is_flag_invisible() then
true/false
pc.is_flag_poison() Geçerli oyuncuda zehir etkisi varsa true döndürür. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
if pc.is_flag_poison() then
true/false
pc.is_flag_bleeding() Geçerli oyuncuda kanama etkisi varsa true döndürür. Topluluk eki (ENABLE_NEWSTUFF) ve Lycan desteği (ENABLE_WOLFMAN_CHARACTER) gerekir; her kaynakta bulunmaz.
if pc.is_flag_bleeding() then
true/false
pc.is_flag_slow() Geçerli oyuncuda yavaşlama etkisi varsa true döndürür. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
if pc.is_flag_slow() then
true/false
pc.is_flag_stun() Geçerli oyuncuda sersemleme etkisi varsa true döndürür. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
if pc.is_flag_stun() then
true/false
pc.set_flag_fire(açık (true/false)) true verilirse geçerli oyuncuya 16 saniyelik yanma etkisi ekler, false verilirse kaldırır. Yalnız etkiyi koyar, yanma hasarı vermez. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.set_flag_fire(true)
yok
pc.set_flag_invisible(açık (true/false)) true verilirse geçerli oyuncuya süresi pratikte sınırsız (yaklaşık 60 yıl) görünmezlik etkisi ekler, false verilirse kaldırır. Bu etkideki oyuncuyu canavarlar hedef almaz. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.set_flag_invisible(false)
yok
pc.set_flag_poison(açık (true/false)) true verilirse geçerli oyuncuya 31 saniyelik zehir etkisi ekler, false verilirse kaldırır. Hasar vermez ama etki sürerken doğal HP/SP yenilenmesi durur; false yalnız etkiyi kaldırır, canavardan gelen gerçek zehrin hasarı sürer. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.set_flag_poison(false)
yok
pc.set_flag_bleeding(açık (true/false)) true verilirse geçerli oyuncuya 31 saniyelik kanama etkisi ekler, false verilirse kaldırır. pc.set_flag_poison gibi hasar vermez, etki sürerken doğal HP/SP yenilenmesi durur. Topluluk eki (ENABLE_NEWSTUFF) ve Lycan desteği (ENABLE_WOLFMAN_CHARACTER) gerekir; her kaynakta bulunmaz.
pc.set_flag_bleeding(false)
yok
pc.set_flag_slow(açık (true/false)) true verilirse geçerli oyuncunun hareket hızını 30 saniye boyunca 30 düşüren yavaşlama etkisi ekler, false verilirse kaldırır. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.set_flag_slow(true)
yok
pc.set_flag_stun(açık (true/false)) true verilirse geçerli oyuncuya 30 saniyelik sersemleme etkisi ekler: oyuncu yerinde durdurulur ve hareket edemez. false verilirse kaldırır. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.set_flag_stun(true)
yok
pc.set_flag_kill(oyuncu adı) Adı verilen oyuncu bu oyun çekirdeğindeyse onu öldürür, öldüren olarak kimse yazılmaz; geçerli oyuncuya dokunmaz. Oyuncu bulunamazsa bir şey yapmaz. Yönetici (GM) işi içindir. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.set_flag_kill("OyuncuAdi")
yok
pc.set_flag_dead() Geçerli oyuncuyu öldürür, öldüren olarak kimse yazılmaz. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.set_flag_dead()
yok
pc.get_exp_level(seviye) Deneyim tablosunda verilen seviyenin değerini (o seviyeden sonrakine geçmek için gereken deneyim) 100'e bölüp, yani yüzde birini döndürür; seviye 0-250 aralığına sıkıştırılır. Tablo yorumu gereken deneyimin kendisini döndürdüğünü söyler ama kod 100'e böler; parametre sayı değilse syserr yazar. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
local yuzde_bir = pc.get_exp_level(pc.get_level())
sayı, geçersiz parametrede nil
pc.get_exp_level0(seviye, yüzde (1-100)) Verilen seviye için gereken deneyimin verilen yüzdesini döndürür (değer önce 100'e bölünür, sonra yüzdeyle çarpılır); yüzde 1-100 aralığına sıkıştırılır. Parametrelerden biri sayı değilse syserr yazar. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.give_exp2(pc.get_exp_level0(pc.get_level(), 10))
sayı, geçersiz parametrede nil
pc.set_max_health() Geçerli oyuncunun HP ve SP'sini en yüksek değerine doldurur; ölü oyuncuda işe yaramaz. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.set_max_health()
yok
pc.get_ip0() Geçerli oyuncunun sunucuya bağlandığı IP adresini metin olarak döndürür. Kişisel veri içerir, yalnız yönetim amaçlı kullanılmalıdır. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz. metin
pc.get_client_version0() Geçerli oyuncunun istemcisinin girişte bildirdiği sürüm bilgisini (istemcinin derleme zaman damgası) metin olarak döndürür; istemci bildirmediyse boş metin. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
local surum = pc.get_client_version0()
metin
pc.dc_delayed0(saniye (0-300)) Geçerli oyuncunun bağlantısını verilen saniye sonra keser; süre 0-300 aralığına sıkıştırılır. Zaten bekleyen bir bağlantı kesme varsa false döner. Yönetici (GM) işi içindir. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.dc_delayed0(5)
true/false
pc.dc_direct0(neden metni) Geçerli oyuncunun bağlantısını hemen keser; verilen metin yalnız sunucu kaydına neden olarak yazılır. Kayıt tablosundaki yorum oyuncu adı aldığını söyler ama fonksiyon başka oyuncuyu hedeflemez. Yönetici (GM) işi içindir. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.dc_direct0("quest")
yok
pc.is_trade0() Geçerli oyuncunun ticaret penceresi açıksa true döndürür. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
if pc.is_trade0() then return end
true/false
pc.is_busy0() Geçerli oyuncunun ticaret, kendi pazarı, bir dükkân, depo ya da cube penceresi açıksa true döndürür; omuz kuşağı penceresine bakmaz. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
if pc.is_busy0() == true then
true/false
pc.is_arena0() Geçerli oyuncu bir arena düellosunun katılımcısıysa true döndürür. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
if pc.is_arena0() then
true/false
pc.is_arena_observer0() Geçerli oyuncu arenada izleyici modundaysa true döndürür. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
if pc.is_arena_observer0() then
true/false
pc.equip_slot0(envanter hücresi) Geçerli oyuncunun envanterinde verilen hücredeki eşyayı giydirmeyi dener; normal giyme kuralları (cinsiyet, dönüşüm, son saldırı ya da beceriden sonra 1,5 saniye bekleme gibi) geçerlidir. Hücre boşsa ya da eşya giyilemezse false. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.equip_slot0(0)
true/false
pc.unequip_slot0(ekipman yuvası (0 zırh, 4 silah gibi)) Geçerli oyuncunun verilen ekipman yuvasındaki eşyayı çıkarıp envantere koymayı dener; yuva boşsa ya da eşya çıkarılamıyorsa false. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.unequip_slot0(4)
true/false
pc.is_available0() Quest'te geçerli oyuncu varsa true döndürür. server_timer gibi oyuncusuz olaylarda pc fonksiyonlarını çağırmadan önce denetim için kullanılır. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
if not pc.is_available0() then return end
true/false
pc.give_random_book0(sınıf no (isteğe bağlı, 0-4; verilmezse rastgele sınıf)) Geçerli oyuncuya rastgele bir becerinin Beceri Kitabı'nı (50300) verir; sınıf numarası verilirse beceri o sınıfın becerileri arasından seçilir. Envanter doluysa kitap oyuncunun yanına yere düşer; eşya oluşturulduysa true döner. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
pc.give_random_book0(pc.get_job())
true/false
pc.is_pvp0() Geçerli oyuncunun iki tarafın da kabul ettiği etkin bir düellosu varsa true döndürür; geçerli oyuncu yoksa false. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
if pc.is_pvp0() then
true/false
pc.open_acce(birleştirme (true) ya da bonus emme (false)) Geçerli oyuncuya omuz kuşağı penceresini açar: true birleştirme, false bonus emme penceresidir. Parametre true/false değilse syserr yazar, pencere zaten açıksa uyarı verir; çağırmadan önce genellikle setskin(NOWINDOW) ile quest penceresi kapatılır. Diğer adı: pc.open_sash. Omuz kuşağı eki (ENABLE_ACCE_SYSTEM); her kaynakta bulunmaz.
pc.open_acce(true)
yok
pc.open_sash(birleştirme (true) ya da bonus emme (false)) pc.open_acce ile aynı fonksiyon: true birleştirme, false bonus emme penceresini açar. Omuz kuşağı eki (ENABLE_ACCE_SYSTEM); her kaynakta bulunmaz.
pc.open_sash(false)
yok

Sonraki modül: npc

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.