Knight Online Lua Rehberi

Hasan06

Level 1
Katılım
30 Eyl 2024
Konular
8
Mesajlar
8
Beğeniler
30
GG Coin
339
Ticaret Değeri - 0%
0   0   0
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ı

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
 
Elinize sağlık, paylaşım için teşekkürler.
 
Geri
Üst Alt