Knight Online Lua Rehberi
Bu rehber, Knight Online'da Lua dilini kullanarak NPC'lerle etkileşimli görevler hazırlamayı öğretir. Buradaki komutlar ve örnekler, kendi görev scriptlerinizi oluştururken size rehberlik edecektir.
Lua ile NPC Bağlantısı
Değişken Tanımlamaları
NPC'ye Tıklayınca Açılan Menü
İlk Menü Tanımlaması
Örnek Menü Yapısı
Devam Eden Menü Yapısı
Genişletilmiş Menü Sistemi
Ekstra Komutlar
GiveItem(UID, ITEMNO, ADET): Kullanıcıya belirli miktarda item verir.
RobItem(UID, ITEMKOD, ADET): Kullanıcıdan belirli miktarda item alır.
RunExchange(UID, EVENTNO): Kullanıcı için belirli bir event başlatır.
CheckGiveSlot(UID, -1): Kullanıcının envanterinde boş yer olup olmadığını kontrol eder.
CheckLevel(UID): Kullanıcının seviyesini kontrol eder.
GoldLose(UID, ParaMiktarı): Kullanıcıdan belirtilen miktarda altın alır.
GiveLoyalty(UID, NPMIKTARI): Kullanıcıya belirli miktarda NP (national point) verir.
GiveMoney(UID, PARAMIKTARI): Kullanıcıya belirli miktarda para verir.
Örnek Görev Lua Scripti
Aşağıda, kullanıcıya görev verirken yapılan kontroller ve ödüller içeren bir örnek bulunmaktadır:
Bu rehber, Knight Online'da Lua dilini kullanarak NPC'lerle etkileşimli görevler hazırlamayı öğretir. Buradaki komutlar ve örnekler, kendi görev scriptlerinizi oluştururken size rehberlik edecektir.
Lua ile NPC Bağlantısı
Değişken Tanımlamaları
Kod:
local UserClass; -- Kullanıcı sınıfı
local QuestNum; -- Görev numarası
local Ret = 0; -- Fonksiyon dönüş değeri
local NPC = NPC_KODU; -- NPC'nin kimliği
NPC'ye Tıklayınca Açılan Menü
İlk Menü Tanımlaması
Kod:
if EVENT == EVENT_KODU then
SelectMsg(UID, 3, -1, MESAJ_KODU, NPC, MENU, ICERIK, -1, -1, -1, -1, -1);
end
- EVENT_KODU: Görevi tetikleyen olay kodu. Bu kod, benzersiz olmalıdır ve veritabanında yer alabilir ya da manuel atanabilir.
- MESAJ_KODU: NPC ile konuştuğunuzda ekranda beliren mesaj. Bu kodlar, Quest_Talk_us.tbl dosyasından çekilir.
- MENU: NPC menüsündeki butonlarda görünen metin. Bu metinler, Quest_Menu_us.tbl dosyasından alınır.
- ICERIK: Butonun tetikleyeceği event kodudur.
Örnek Menü Yapısı
Kod:
if EVENT == 100 then
SelectMsg(UID, 3, -1, 1186, NPC, 10, 150, -1, -1, -1, -1, -1);
end
- EVENT == 100: 100 numaralı olay tetiklenir.
- 1186: Quest_Talk_us.tbl dosyasından alınan mesaj kodu.
- 10: Quest_Menu_us.tbl dosyasından alınan buton kodu.
- 150: Butona basıldığında çalışacak event kodu.
Devam Eden Menü Yapısı
Kod:
if EVENT == 150 then
SelectMsg(UID, 3, -1, 1234, NPC, 27, 180, -1, -1, -1, -1, -1);
end
Genişletilmiş Menü Sistemi
Kod:
if EVENT == EVENT_KODU then
QuestNum = SearchQuest(UID, NPC);
if QuestNum == 0 then
SelectMsg(UID, 3, -1, MESAJ_KODU, NPC, MENU, ICERIK, -1, -1, -1, -1, -1);
Ret = 1;
elseif QuestNum > 1 and QuestNum < 100 then
NpcMsg(UID, Mesaj_Kodu, NPC);
else
EVENT = QuestNum;
end
end
Ekstra Komutlar
GiveItem(UID, ITEMNO, ADET): Kullanıcıya belirli miktarda item verir.
Kod:
GiveItem(12345, 10001, 10); -- Kullanıcıya 10 adet 10001 kodlu item verir.
RobItem(UID, ITEMKOD, ADET): Kullanıcıdan belirli miktarda item alır.
Kod:
RobItem(12345, 10001, 5); -- Kullanıcıdan 5 adet 10001 kodlu item alır.
RunExchange(UID, EVENTNO): Kullanıcı için belirli bir event başlatır.
Kod:
RunExchange(12345, 2001); -- Kullanıcı için 2001 kodlu event başlatılır.
CheckGiveSlot(UID, -1): Kullanıcının envanterinde boş yer olup olmadığını kontrol eder.
Kod:
local Check = CheckGiveSlot(12345, -1);
if Check > 1 then
-- Envanterde boş yer var, devam edebilirsiniz.
end
CheckLevel(UID): Kullanıcının seviyesini kontrol eder.
Kod:
local Level = CheckLevel(12345);
if Level >= 30 then
-- Kullanıcının seviyesi 30 veya üstü, görevi verebilirsiniz.
end
GoldLose(UID, ParaMiktarı): Kullanıcıdan belirtilen miktarda altın alır.
Kod:
GoldLose(12345, 1000); -- Kullanıcıdan 1000 altın alır.
GiveLoyalty(UID, NPMIKTARI): Kullanıcıya belirli miktarda NP (national point) verir.
Kod:
GiveLoyalty(12345, 500); -- Kullanıcıya 500 NP verilir.
GiveMoney(UID, PARAMIKTARI): Kullanıcıya belirli miktarda para verir.
Kod:
GiveMoney(12345, 2000); -- Kullanıcıya 2000 altın verilir.
Örnek Görev Lua Scripti
Aşağıda, kullanıcıya görev verirken yapılan kontroller ve ödüller içeren bir örnek bulunmaktadır:
Kod:
function OnEventStart(UID)
local Check = CheckGiveSlot(UID, -1);
if Check < 1 then
print("Envanterde boş yer yok.");
return;
end
local Level = CheckLevel(UID);
if Level < 30 then
print("Bu görevi yapmak için 30. seviyede olmalısınız.");
return;
end
GoldLose(UID, 1000);
GiveItem(UID, 10001, 10);
GiveLoyalty(UID, 500);
GiveMoney(UID, 2000);
print("Görev başarıyla tamamlandı. Ödüller verildi.");
end