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.
| Fonksiyon | Ne yapar | Dö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.