İçeriğe geç

Metin2 Quest global Fonksiyonları

Önek almadan çağrılan temel fonksiyonlar: diyalog metni, zamanlayıcılar, duyurular, durum değiştirme, canavar çıkarma, kayıt (log) ve veritabanı sorguları. select, wait, input, confirm, say_title gibi yardımcılar C++'ta değil questlib.lua'da tanımlıdır ve bu listede yer almaz. Bu modülde 83 fonksiyon var. Diğer modüller quest fonksiyonları listesinde, quest yazımının temeli quest yazma rehberinde.

FonksiyonNe yaparDöner
sys_err(metin) Metni geçerli quest ve oyuncu adıyla syserr kaydına yazar; oyuncuya da QUEST_SYSERR ile başlayan bilgi mesajı olarak gönderir (canlı sunucuda da görünür). Geçerli oyuncu yoksa (server_timer olayında) hiçbir şey yapmaz, orada sys_err2 kullanılır.
sys_err("Ödül tablosu bulunamadı")
yok
sys_log(seviye, metin) Metni geçerli quest ve oyuncu adıyla syslog kaydına yazar. Seviye 1 ve üstündeyse yalnız test sunucusunda yazar; test sunucusunda metin oyuncuya QUEST_SYSLOG bilgi mesajı olarak da gider. Geçerli oyuncu yoksa hiçbir şey yapmaz.
sys_log(0, "ödül verildi: "..pc.get_name())
yok
sys_err2(metin) sys_err gibi syserr kaydına yazar ama oyuncu gerektirmez: kayda yalnız quest adı girer, oyuncuya QUEST_SYSERR mesajı gitmez. server_timer olaylarında kullanılabilir. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
sys_err2("zindan bulunamadı: "..get_server_timer_arg())
yok
sys_log2(seviye, metin) sys_log gibi syslog kaydına yazar ama oyuncu gerektirmez; seviye 1 ve üstü yine yalnız test sunucusunda yazılır. server_timer olaylarında kullanılabilir. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
sys_log2(0, "devil_stone4_update çalıştı")
yok
char_log(değer, işlem adı, ipucu) Log veritabanındaki log tablosuna geçerli oyuncu için CHARACTER türünde kayıt ekler (değer what, işlem adı how, ipucu hint alanına; oyuncunun konumu ve IP'si ile). Yalnız ipucu kaçırılır, işlem adına oyuncunun yazdığı metni koymayın. Geçerli oyuncu yoksa syserr yazar.
char_log(0, "CHANGE_NAME", "HAVE NOT RE-LOGIN")
yok
item_log(eşya kimliği, işlem adı, ipucu) Log tablosuna geçerli oyuncu adına ITEM türünde kayıt ekler; ilk argüman vnum değil eşyanın benzersiz kimliğidir (item.get_id). Eşya sunucu belleğinde bulunamazsa kayıt yazılmaz. Yalnız ipucu kaçırılır, işlem adına oyuncu girdisi koymayın.
item_log(item.get_id(), "QUEST_USE", "kutu açıldı")
yok
set_state(durum adı) Geçerli quest'in durumunu değiştirir; q.setstate ile aynı fonksiyondur (questlib.lua'daki setstate ve newstate de buna bağlanır). Çağrıdan sonraki satırlar çalışmaya devam eder, leave ve yeni durumun enter/letter olayları quest bloğu bitince işler; var olmayan durum adı quest'i start durumuna götürür. qc derleyicisi tırnaksız yazımı (set_state(run)) metne çevirir.
set_state("run")
yok
set_skin(görünüm no) Gönderilecek diyalog penceresinin görünümünü ayarlar; questlib.lua sabitleriyle NOWINDOW (0) pencere açmaz, NORMAL (1) olağan penceredir. 0-5 dışındaki değer NORMAL'e döner; istemci sinematik görünümü 5 ile açar, questlib.lua'daki CINEMATIC sabiti ise 2'dir. Eski yazımı: setskin.
set_skin(NOWINDOW)
yok
setskin(görünüm no) set_skin ile aynı fonksiyon. Pencere açmadan işlem yapan bloklarda setskin(NOWINDOW) biçiminde sık kullanılır.
setskin(NOWINDOW)
yok
time_to_str(zaman (Unix saniye)) Unix zamanını İngilizce kalıplı tarih metnine çevirir (ör. Sun Oct 18 12:00:00 2026). Saat UTC'dir ve metnin sonunda satır sonu karakteri bulunur.
say(time_to_str(pc.getqf("next_time")))
metin
say(metin (birden çok argüman birleştirilir)) Argümanları birleştirip sonuna satır sonu ([ENTER]) ekleyerek diyalog tamponuna yazar; metin bir sonraki bekleme noktasında (select, wait, input, confirm) ya da blok bitince pencerede gösterilir. Sayılar metne çevrilir; nil, boolean ve tablo argümanları atlanır. Geçerli oyuncu yokken (server_timer olayında) kullanılmamalıdır.
say("Bu oltayı daha iyi yapmak istiyor musun?")
yok
chat(metin (birden çok argüman birleştirilir)) Argümanları birleştirip geçerli oyuncuya normal sohbet satırı olarak gönderir; yalnız o oyuncu görür. Geçerli oyuncu gerekir.
chat("Hoş geldin "..pc.get_name())
yok
cmdchat(komut metni (birden çok argüman birleştirilir)) Argümanları birleştirip geçerli oyuncunun istemcisine komut olarak gönderir; sohbette görünmez, istemcideki game.py serverCommandList içinde ilk kelimeye karşılık gelen işlev çalışır. Geçerli oyuncu gerekir.
cmdchat("PlayMusic 1 xmas.mp3")
yok
syschat(metin (birden çok argüman birleştirilir)) Argümanları birleştirip geçerli oyuncuya sistem bilgi mesajı olarak gönderir. Geçerli oyuncu gerekir.
syschat("Atını daha fazla geliştiremezsin.")
yok
chat_in_map0(harita no, metin) Metni verilen haritadaki (bu çekirdekteki) bütün oyunculara normal sohbet satırı olarak gönderir. Geçerli oyuncu gerektirmez, server_timer olaylarında kullanılabilir; argümanları birleştirmez. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
chat_in_map0(get_server_timer_arg(), "Kapılar 1 dakika sonra kapanacak.")
yok
cmdchat_in_map0(harita no, komut metni) cmdchat gibi istemci komutunu verilen haritadaki bütün oyunculara gönderir. Geçerli oyuncu gerektirmez. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
cmdchat_in_map0(pc.get_map_index(), "PlayMusic 1 xmas.mp3")
yok
syschat_in_map0(harita no, metin) Metni verilen haritadaki bütün oyunculara sistem bilgi mesajı olarak gönderir. Geçerli oyuncu gerektirmez, server_timer olaylarında kullanılabilir. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
syschat_in_map0(get_server_timer_arg(), "Zindan süresi doldu.")
yok
get_locale() Sunucunun yerel ayara bağlı karakter kümesi adını döndürür; turkey yerel ayarında latin5.
if get_locale() == "latin5" then
metin
setleftimage(dosya adı) Diyalog penceresinin soluna resim koyan [LEFTIMAGE] etiketini tampona yazar. Tam yol verilmezse istemci dosyayı d:/ymir work/ui/game/questboard/ klasöründe arar.
setleftimage("1001.tga")
yok
settopimage(dosya adı) Diyalog penceresinin üstüne resim koyan [TOPIMAGE] etiketini tampona yazar; dosya yolu kuralı setleftimage ile aynıdır.
settopimage("1001.tga")
yok
server_timer(zamanlayıcı adı, saniye, argüman (isteğe bağlı, varsayılan 0)) Sunucu geneli tek seferlik zamanlayıcı kurar; süre dolunca quest'lerin start durumundaki when ad.server_timer blokları geçerli oyuncu olmadan çalışır, argüman get_server_timer_arg ile okunur. Karşılayan blok yoksa olay yarım saniyede bir yeniden denenir. Aynı ad ve argümanla ikinci kez kurulursa syserr yazar ama yeni zamanlayıcı yine çalışır ve silinemez hale gelir.
server_timer("devil_stone4_fail1", 5*60, pc.get_map_index())
yok
clear_server_timer(zamanlayıcı adı, argüman) Aynı ad ve argümanla kurulmuş server_timer ya da server_loop_timer'ı iptal eder. Bu kaynaktaki bir yama nedeniyle argüman 0 olamaz: argümansız (0) kurulan zamanlayıcı clear_server_timer ile silinemez, yalnız syserr yazılır.
clear_server_timer("devil_stone4_update", get_server_timer_arg())
yok
server_loop_timer(zamanlayıcı adı, saniye, argüman (isteğe bağlı, varsayılan 0)) server_timer gibi ama tekrarlar: her süre dolduğunda when ad.server_timer blokları çalışır. clear_server_timer ile durdurulur; durdurulabilmesi için sıfırdan farklı bir argüman (ör. harita no) verilmelidir.
server_loop_timer("devil_stone4_update", 10, pc.get_map_index())
yok
get_server_timer_arg() Çalışmakta olan server_timer olayının argümanını döndürür (kurulurken verilen üçüncü değer, verilmediyse 0). Zindan zamanlayıcılarında argümanla harita no taşınır ve zindan d.select ile seçilir.
if d.select(get_server_timer_arg()) then
sayı
timer(zamanlayıcı adı (verilmezse adsız), saniye) Geçerli oyuncuya tek seferlik zamanlayıcı kurar; süre dolunca when ad.timer bloğu çalışır, aynı adla yeniden kurmak eskisini iptal eder. Oyuncu çıkış yapınca ya da ışınlanınca iptal olur; olay o an işlenemezse (açık diyalog varsa ya da geçerli durumda karşılayan blok yoksa) yarım saniyede bir yeniden denenir. Yalnız saniye verilirse adsız zamanlayıcı kurulur; bu NPC'ye bağlı olmayan timer olayını tetikler ve cleartimer ile silinemez.
timer("devil_stone1_2", 2)
yok
loop_timer(zamanlayıcı adı, saniye) Geçerli oyuncuya tekrarlayan zamanlayıcı kurar; her süre dolduğunda when ad.timer bloğu çalışır. cleartimer ile durdurulur; aynı adla yeniden kurmak eskisini iptal eder, oyuncu çıkış yapınca ya da ışınlanınca biter.
loop_timer("kontrol", 60)
yok
cleartimer(zamanlayıcı adı) Geçerli oyuncunun timer ya da loop_timer ile kurulmuş adlı zamanlayıcısını iptal eder. Yalnız saniyeyle kurulan adsız zamanlayıcıyı silemez.
cleartimer("kontrol")
yok
getnpcid(npc adı) questnpc.txt dosyasında NPC'ye verilen adın vnum'unu döndürür (ör. fisher için 9009).
local vnum = getnpcid("fisher")
sayı (vnum), bulunamazsa 0
is_test_server() CONFIG dosyasında test_server açıksa true, değilse false döndürür. Deneme kolaylıkları (kısa bekleme süresi gibi) için kullanılır.
if is_test_server() then
true/false
is_speed_server() CONFIG dosyasında speed_server açıksa true döndürür; bu ayar hız sunucusu etkinliğini (speedserver fonksiyonları) başlatır.
if is_speed_server() then
true/false
raw_script(metin) Metni diyalog tamponuna olduğu gibi, satır sonu eklemeden yazar; renk, resim, harita işareti gibi istemci etiketleri böyle gönderilir. questlib.lua'daki setcolor, addmapsignal, makequestbutton gibi yardımcılar bunu çağırır; yalnız son argüman kullanılır.
raw_script("[CLEARMAPSIGNAL]")
yok
number(en küçük, en büyük) İki değer arasında (ikisi dahil) rastgele tamsayı döndürür. Argümanlardan biri sayı değilse 0 döner; ilk değer büyükse ikisi yer değiştirir ve syserr yazılır.
local s = number(1, 7)
sayı
set_bgm_volume_enable() Haritaya girişte istemciye gönderilen arka plan müziği bilgisine ses düzeyinin de eklenmesini açar. İç kullanım içindir; settings.lua sunucu açılırken çağırır.
set_bgm_volume_enable()
yok
add_bgm_info(harita no, müzik dosyası adı, ses düzeyi (isteğe bağlı, varsayılan 0,02)) Haritanın arka plan müziğini kaydeder; oyuncu haritaya girince dosya adı (set_bgm_volume_enable açıksa ses düzeyiyle) istemciye gider, ad istemcinin BGM klasöründeki dosyayı gösterir. İç kullanım içindir; settings.lua sunucu açılırken çağırır.
add_bgm_info(1, "enter_the_east.mp3", 0.5)
yok
add_goto_info(ad, krallık (0 hepsi), harita no, x, y (dünya koordinatı, metre)) GM'lerin /goto komutu için hedef kaydeder; ad içinde | ile takma adlar yazılabilir, /goto #harita_no kullanımında harita no eşleşir. İç kullanım içindir; settings.lua sunucu açılırken çağırır.
add_goto_info("a1", 0, 1, 4693, 9642)
yok
__refine_pick(envanter hücresi) Geçerli oyuncunun verilen hücresindeki kazmayı geliştirmeyi dener: başarıda kazma aynı hücrede bir üst seviyesiyle değişir, başarısızlıkta kazma kalır ama ustalık puanı düşer (ENABLE_PICKAXE_RENEWAL). Eşya kazma değilse, ustalık puanı dolmamışsa ya da kuşanılmışsa 2 döner. İç kullanım içindir (çift alt çizgili ad).
local r = __refine_pick(item.get_cell())
sayı (1 başarılı, 0 başarısız, 2 geçersiz)
add_ox_quiz(seviye, soru metni, doğru cevap (true/false)) OX etkinliğinin soru listesine verilen seviye grubunda bir soru ekler (soru en çok 255 karakter). İç kullanım içindir: oxevent.open her çağrıldığında liste temizlenir ve oxquiz.lua yüklenir, dosyadaki her satır bunu çağırır.
add_ox_quiz(1, "Shinsoo kırmızı krallık mıdır?", true)
yok
__fish_real_refine_rod(envanter hücresi) Geçerli oyuncunun verilen hücresindeki oltayı geliştirmeyi dener: başarıda olta aynı hücrede bir üst seviyesiyle değişir, başarısızlıkta olta kalır ama ustalık puanı düşer (ENABLE_FISHINGROD_RENEWAL). Eşya olta değilse, kuşanılmışsa ya da ustalık puanı dolu değilse 2 döner. İç kullanım içindir; balıkçı NPC quest'i (fisher.lua) kullanır.
local f = __fish_real_refine_rod(item.get_cell())
sayı (1 başarılı, 0 başarısız, 2 geçersiz)
__give_char_priv(bonus türü, değer) Geçerli oyuncuya 2 saatlik kişisel bonus verir; tür 1 eşya düşme, 2 Yang düşme, 3 büyük Yang düşme, 4 EP. Değer 0-100 arasına kırpılır (negatif değer etkisizdir) ve aynı türde etkin bonus varsa yenisi yok sayılır. İç kullanım içindir; falcı quest'i (fortune_telling.lua) kullanır.
__give_char_priv(4, 20)
yok
__give_empire_priv(krallık (0 hepsi), bonus türü, değer, saniye) Krallığa süreli bonus verir (tür __give_char_priv ile aynı; değer en çok 200, süre en çok 7 gün) ve aynı türdeki önceki bonusun yerini alır. Oyunculara duyuru gider (krallık 0 ise yalnız GM'lere); kişisel, krallık ve lonca bonuslarından toplanmadan en yükseği geçerli olur. Yönetici (GM) işi içindir.
__give_empire_priv(0, 4, 50, 3600)
yok
__give_guild_priv(lonca id, bonus türü, değer, saniye) Loncaya süreli bonus verir (tür __give_char_priv ile aynı; değer en çok 50, süre en çok 7 gün); lonca sunucuda yüklüyse herkese duyuru gider. Yönetici (GM) işi içindir.
__give_guild_priv(pc.get_guild(), 1, 10, 3600)
yok
__get_empire_priv_string(krallık) Krallığın etkin bonuslarını tek metin olarak döndürür: her biri bonus adı, yüzde değer ve kalan saat (hours) ile; hiç yoksa None (sonunda ünlem işaretiyle). Kalıp İngilizcedir. İç kullanım içindir (çift alt çizgili ad).
say(__get_empire_priv_string(pc.get_empire()))
metin
__get_empire_priv(krallık, bonus türü) Krallığın verilen türdeki etkin bonus değerini döndürür; argümanlar sayı değilse 0. İç kullanım içindir (çift alt çizgili ad).
local v = __get_empire_priv(pc.get_empire(), 4)
sayı
__get_guild_priv_string(lonca id) Loncanın etkin bonuslarını __get_empire_priv_string ile aynı kalıpta metin olarak döndürür. İç kullanım içindir (çift alt çizgili ad).
say(__get_guild_priv_string(pc.get_guild()))
metin
__get_guildid_byname(lonca adı) Adı verilen loncanın kimliğini döndürür; argüman metin değilse syserr yazar ve 0 döner. İç kullanım içindir (çift alt çizgili ad).
local gid = __get_guildid_byname(input())
sayı (lonca id), bulunamazsa 0
__get_guild_priv(lonca id, bonus türü) Loncanın verilen türdeki etkin bonus değerini döndürür; argümanlar sayı değilse 0. İç kullanım içindir (çift alt çizgili ad).
local v = __get_guild_priv(pc.get_guild(), 1)
sayı
item_name(vnum) Eşyanın item_proto'daki yerel adını döndürür; vnum bulunamazsa ya da argüman sayı değilse boş metin.
local from_name = item_name(item.vnum)
metin
mob_name(vnum) Canavar ya da NPC'nin mob_proto'daki yerel adını döndürür; bulunamazsa boş metin.
say_title(mob_name(npc.get_race()))
metin
mob_vnum(canavar adı) Yerel adı birebir eşleşen canavarın vnum'unu döndürür; eşleşme büyük/küçük harfe duyarlıdır, aynı adı taşıyan birden çok canavar varsa yalnız biri döner.
local vnum = mob_vnum("Yabani Köpek")
sayı (vnum), bulunamazsa 0
get_time() Sunucu saatini Unix zaman damgası olarak döndürür; saat DB sunucusuyla eşitlenmiştir. Bekleme süresi bayraklarında kullanılır. get_global_time ile aynı fonksiyon.
if get_time() < pc.getqf("next_use_time") then
sayı (Unix zamanı, saniye)
get_global_time() get_time ile aynı fonksiyon: DB sunucusuyla eşitlenmiş sunucu saatini Unix zaman damgası olarak döndürür.
pc.setqf("new_withdraw_time", get_global_time())
sayı (Unix zamanı, saniye)
get_channel_id() Oyun çekirdeğinin kanal numarasını (CONFIG'teki CHANNEL) döndürür.
say("Kanal: "..get_channel_id())
sayı
command(komut metni) Metni geçerli oyuncu adına sohbet komutu olarak çalıştırır (başında / olmadan). Komut oyuncunun kendi GM yetkisiyle denetlenir, yetmezse komut yokmuş gibi ileti çıkar; GM olmayan oyuncuda saniyede 10 komut sınırı bu çağrıları da sayar ve aşılırsa bağlantı kesilir.
command("cube open")
yok
find_pc_cond(en düşük seviye, en yüksek seviye, sınıf bayrağı) Geçerli oyuncuyla aynı haritadaki (bu çekirdekteki) diğer oyunculardan seviyesi aralıkta olan birini rastgele seçip vid'ini döndürür. Sınıf bayrağı bit maskesidir: her sınıf ve beceri grubu için (sınıf+1)*3+beceri grubu numaralı bit; 0 verilirse sınıf süzülmez.
local vid = find_pc_cond(20, 40, 0)
sayı (vid), bulunamazsa 0
find_pc_by_name(oyuncu adı) Adı verilen çevrimiçi oyuncunun vid'ini döndürür; büyük/küçük harfe duyarsızdır ve yalnız aynı oyun çekirdeğindeki (aynı kanal ve çekirdek) oyuncuları bulur.
local u_vid = find_pc_by_name(u_name)
sayı (vid), bulunamazsa 0
find_npc_by_vnum(vnum) Geçerli oyuncunun haritasında verilen vnum'la bulduğu ilk karakterin (NPC ya da canavar) vid'ini döndürür. Geçerli oyuncu gerekir.
local vid = find_npc_by_vnum(11000)
sayı (vid), bulunamazsa 0
set_quest_state(quest adı, durum adı) Geçerli oyuncunun verilen quest'teki durumunu değiştirir. Ad geçerli quest'inse set_state gibi hemen işler; başka bir quest'te değişiklik sıraya alınır ve geçerli quest bloğu bitince leave/enter olaylarıyla uygulanır. Var olmayan durum adı start durumuna götürür.
set_quest_state("skill_group", "run")
yok
get_quest_state(quest adı) Geçerli oyuncunun verilen quest'teki durumunu sayı olarak döndürür; start durumu 0'dır. Diğer durumların numarası derleyicinin ürettiği büyük bir sayıdır, karşılaştırmak için quest_adı.durum_adı değeri kullanılır (ör. skill_group.run).
if get_quest_state("skill_group") == skill_group.run then
sayı (durum no)
under_han(metin) Metnin son Korece hecesinin son ünsüzle (batchim) bitip bitmediğini döndürür; Korece ek seçimi içindir. Türkçe metinde anlamlı sonuç vermez.
if under_han(from_name) then
true/false
notice(metin (birden çok argüman birleştirilir)) Argümanları birleştirip yalnız geçerli oyuncuya duyuru olarak gösterir (ekranın üstündeki duyuru şeridi ve sohbet penceresi). Geçerli oyuncu gerekir.
notice(guild.name(pc.get_guild()).." Loncası araziyi aldı.")
yok
notice_all(metin (birden çok argüman birleştirilir)) Argümanları birleştirip tüm kanal ve çekirdeklerdeki bütün oyunculara duyuru gönderir (diğer çekirdeklere P2P ile). Geçerli oyuncu gerektirmez.
notice_all(string.format("Metin2'ye hoş geldin %s", pc.get_name()))
yok
notice_in_map(metin, büyük yazı (isteğe bağlı, true/false)) Metni geçerli oyuncunun bulunduğu haritadaki (bu çekirdekteki) bütün oyunculara duyuru olarak gönderir; ikinci argüman true ise büyük yazı kullanılır. Argümanları birleştirmez; geçerli oyuncu yoksa hiçbir şey yapmaz.
notice_in_map("Zindan kapısı açıldı.")
yok
big_notice(metin (birden çok argüman birleştirilir)) notice gibi ama metni ekranda büyük yazıyla gösterir; yalnız geçerli oyuncuya gider ve geçerli oyuncu gerekir. Topluluk eki (ENABLE_FULL_NOTICE); her kaynakta bulunmaz.
big_notice("Görev tamamlandı.")
yok
big_notice_all(metin (birden çok argüman birleştirilir)) notice_all'ın büyük yazılı hali: tüm kanal ve çekirdeklerdeki oyunculara büyük duyuru gönderir. Topluluk eki (ENABLE_FULL_NOTICE); her kaynakta bulunmaz.
big_notice_all("OX etkinliği 10 dakika sonra başlıyor.")
yok
big_notice_in_map(metin) Metni geçerli oyuncunun haritasındaki bütün oyunculara büyük duyuru olarak gönderir; geçerli oyuncu yoksa hiçbir şey yapmaz. Topluluk eki (ENABLE_FULL_NOTICE); her kaynakta bulunmaz.
big_notice_in_map("Patron ortaya çıktı.")
yok
warp_all_to_village(harita no, saniye) Verilen haritadaki (bu çekirdekteki) GM olmayan bütün oyuncuları, süre dolunca kendi krallıklarının ilk köyüne ışınlar. Çağrıldığı anda haritaya duyuru gider; metin sabittir (turkey çevirisi 15 saniye der), verilen süreyi yansıtmaz.
warp_all_to_village(pc.get_map_index(), 15)
yok
warp_to_village() Geçerli oyuncuyu kendi krallığının ilk köyündeki başlangıç noktasına ışınlar. Argüman kullanmaz, verilen değer yok sayılır.
warp_to_village()
yok
say_in_map(harita no, metin) Verilen haritadaki bütün oyunculara metni içeren bir diyalog penceresi gönderir (metnin sonuna [ENTER][DONE] eklenir). Argümanları birleştirmez, geçerli oyuncu gerektirmez.
say_in_map(pc.get_map_index(), "Etkinlik sona erdi.")
yok
kill_all_in_map(harita no) Verilen haritadaki oyuncu ve evcil hayvan dışındaki bütün karakterleri öldürür; canavar ve taşların yanında NPC'ler de etkilenir.
kill_all_in_map(pc.get_map_index())
yok
regen_in_map(harita no, regen dosyası yolu) Regen dosyasındaki canavarları verilen haritaya bir kez çıkarır; koordinatlar haritanın başlangıç noktasına göre okunur, çıkan canavarlar saldırgandır ve yeniden doğmaz. Dosya yolu oyun sunucusunun çalışma klasörüne göredir; CONFIG'te no_regen açıksa hiçbir şey yapmaz.
regen_in_map(pc.get_map_index(), "data/dungeon/deviltower2_regen.txt")
yok
enable_over9refine(kaynak vnum, hedef vnum) +9 üstü yükseltme için eşleşme kaydeder: kaynak vnum'lu eşya hedef vnum'lu eşyaya dönüştürülebilir olur (item.can_over9refine ve item.change_to_over9 bu kaydı kullanır). Kayıt yalnız o oyun çekirdeğinin belleğinde tutulur, sunucu yeniden başlayınca silinir. yok
block_chat(oyuncu adı, süre (ör. 10m, 1h, 1d)) Geçerli oyuncu adına GM komutu olarak verilen oyuncuya sohbet yasağı koyar; 0 süresi yasağı kaldırır, oyuncu başka kanaldaysa ya da çevrimdışıysa istek iletilir. Geçerli oyuncu en az GM_HIGH_WIZARD değilse ve chat_privilege.block bayrağı yoksa komut reddedilir; true yalnız komutun çağrıldığını gösterir. Yönetici (GM) işi içindir.
block_chat("OyuncuAdi", "10m")
true/false
spawn_mob(vnum, adet (1-10), saldırgan (true/false)) Canavarı geçerli oyuncunun çevresine (her yönde en çok 7,5 metre) adet kadar çıkarır ve çıkan sayıyı döndürür; adet 1-10 arasına kırpılır. Üçüncü argüman boolean olmalıdır, değilse hiçbir şey çıkmaz ve 0 döner. Geçerli oyuncu gerekir.
local n = spawn_mob(101, 5, true)
sayı (çıkan canavar sayısı)
get_locale_base_path() Yerel ayar klasörünün yolunu döndürür (turkey için locale/turkey, oyun sunucusunun çalışma klasörüne göre). settings.lua ek Lua dosyalarını dofile ile yüklerken kullanır.
dofile(get_locale_base_path().."/quest/GFquestlib.lua")
metin
purge_area(x1, y1, x2, y2 (dünya koordinatı, pc.get_x() değerinin 100 katı)) Dikdörtgen içindeki canavar ve metin taşlarını (evcil hayvanlar hariç) ölüm ve ganimet olmadan haritadan siler; geçerli NPC korunur. Harita ilk köşeden bulunur, bulunamazsa syserr yazar.
purge_area(pc.get_x()*100 - 1000, pc.get_y()*100 - 1000, pc.get_x()*100 + 1000, pc.get_y()*100 + 1000)
yok
warp_all_in_area_to_area(kaynak x1, y1, x2, y2, hedef x1, y1, x2, y2 (dünya koordinatı, pc.get_x() değerinin 100 katı)) Kaynak dikdörtgendeki bütün oyuncuları (GM'ler dahil) hedef dikdörtgende rastgele bir noktaya ışınlar ve sayılarını döndürür. Harita kaynak dikdörtgenin ilk köşesinden bulunur; bulunamazsa 0 döner.
local n = warp_all_in_area_to_area(x1, y1, x2, y2, hx1, hy1, hx2, hy2)
sayı (ışınlanan oyuncu sayısı)
get_special_item_group(grup vnum) special_item_group grubundaki her girdi için sırayla vnum ve adet döndürür (vnum1, adet1, vnum2, adet2 ...); tabloya toplamak için {get_special_item_group(no)} yazılır. Yang ve EP gibi özel girdilerde vnum yerine küçük bir kod gelir (1 Yang, 2 EP). Grup yoksa syserr yazar.
local t = {get_special_item_group(item.get_vnum())}
çoklu sayı (vnum, adet çiftleri), grup yoksa hiçbir şey
spawn_mob0(vnum, harita no, x, y (harita içi metre)) Canavarı verilen haritada verilen noktaya çıkarır ve vid'ini döndürür; geçerli oyuncu gerektirmez. Argüman sayı değilse -1, canavar bilinmiyorsa -2, harita yoksa -3, çıkarılamazsa 0 döner. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
local vid = spawn_mob0(101, pc.get_map_index(), 250, 300)
sayı (vid); hatada -1, -2, -3 ya da 0
spawn_mob_in_map(vnum, adet (1-10), saldırgan (true/false), harita no, x, y (harita içi metre)) Canavarı verilen haritada, verilen noktanın çevresine (her yönde en çok 7,5 metre) adet kadar çıkarır ve çıkan sayıyı döndürür; geçerli oyuncu gerektirmez. Üçüncü argüman boolean olmalıdır; harita bulunamazsa 0 döner. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
spawn_mob_in_map(101, 5, true, pc.get_map_index(), 250, 300)
sayı (çıkan canavar sayısı)
get_table_postfix() CONFIG'teki table_postfix değerini döndürür (genelde boş); elle yazılan SQL sorgularında tablo adının sonuna eklenir. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
local tablo = "player"..get_table_postfix()
metin
mysql_direct_query(sql sorgusu) Sorguyu PLAYER_SQL veritabanı bağlantısında eşzamanlı çalıştırır; sorgu bitene kadar çekirdek bekler. İlk dönüş etkilenen ya da dönen satır sayısıdır (hatada 4294967295); ikinci dönüş rows[1].sutun_adi biçiminde satır tablosudur: sayısal sütun sayı, NULL nil, TEXT/BLOB sütunu bayt değerleri tablosu olarak gelir. Oyuncunun yazdığı metni sorguya koymadan önce mysql_escape_string ile kaçırın. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
local n, rows = mysql_direct_query("SELECT level FROM player WHERE id="..pc.get_player_id())
iki değer: sayı (satır sayısı) ve tablo (satırlar)
mysql_escape_string(metin) Metindeki tırnak gibi özel karakterleri MySQL için kaçırıp döndürür; oyuncu girdisini SQL sorgusuna koymadan önce kullanılır. 511 bayttan uzun metinde boş metin döner. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
local ad = mysql_escape_string(input())
metin
mysql_password(metin) Metnin MySQL PASSWORD() karmasını (yıldızla başlayan 41 karakter) döndürür. Topluluk eki (ENABLE_NEWSTUFF); her kaynakta bulunmaz.
local h = mysql_password("metin2")
metin

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

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.