Earth nature field

TUTORIAL: Quest írás kezdőknek

Minden ami szerverkészítéshez tartozik (szerverfájlok, src, kliensek stb)
Válasz küldése
serverfan
Tapasztalt Harcos

Tapasztalt Harcos
Hozzászólások: 21
Csatlakozott: 2025.08.29. 17:27

TUTORIAL: Quest írás kezdőknek

Hozzászólás Szerző: serverfan »

📜 Hogyan írjunk questet? – Részletes útmutató kezdőknek
A Metin2 fejlesztésének egyik legfontosabb és legizgalmasabb része a questírás.
A questek adják a szerver lelkét: ők felelnek az NPC-k párbeszédeiért, a küldetésekért, az eventekért és rengeteg egyedi funkcióért.
Ez az útmutató lépésről lépésre végigvezet az alapokon, és részletes példákkal mutatja meg, hogyan építheted fel a saját questjeidet.

---

🔹 1. Mi az a quest?

A questek Lua-szerű nyelven íródnak, és a quest/ mappában található `.quest` fájlokban helyezkednek el.
Feladataik:
  • NPC párbeszédek megjelenítése
  • Küldetések és feladatok kezelése (pl. ölj meg 10 mobot, gyűjts össze tárgyakat)
  • Eventek, minijátékok, dungeon belépések
  • Egyedi rendszerek megvalósítása (pl. pontgyűjtő rendszer, kasztfejlesztés)
A questek mindig eseményekhez kapcsolódnak, amelyeket a játékos vagy a szerver vált ki.

---

🔹 2. Egy quest felépítése

Minden quest 3 fő részből áll:
1. Quest név
2. State-ek (állapotok)
3. Események (when blokkok)

Egyszerű keretszerkezet:

Kód: Egész kijelölése

quest quest_neve begin
    state start begin
        when login begin
            say("Ez egy egyszerű quest példa.")
        end
    end
end
🔎 Magyarázat:
- quest quest_neve: a quest neve (egyedi kell legyen).
- state start: a quest állapota. Egy quest több state-ből is állhat (pl. kezdés, feladat, jutalom).
- when login: esemény, ami kiváltja a kódot (itt: játékos belépéskor).
- say(): szöveget jelenít meg a játékosnak.

---

🔹 3. Fontos események (when feltételek)

Néhány gyakran használt esemény:

Kód: Egész kijelölése

when login begin
    -- amikor a játékos belép a játékba
end

when 20095.chat."Üdv!" begin
    -- amikor a játékos az ID 20095-ös NPC-re kattint és a "Üdv!" szöveget választja
end

when 101.kill begin
    -- amikor a játékos megöl egy 101-es vnumú mobot
end

when 50052.use begin
    -- amikor a játékos elhasználja az 50052-es tárgyat
end

when levelup begin
    -- amikor a játékos szintet lép
end
---

🔹 4. Szövegmegjelenítés – say parancsok

A játékosnak látható szövegeket a következő parancsokkal írhatjuk ki:

Kód: Egész kijelölése

say_title("Küldetés címe")
say("Ez a szöveg több sorban is megjelenhet.")
say("")
say_reward("Jutalmad: 1.000 Yang")
- say_title: címsor.
- say: normál szöveg (új sorokat üres `say("")` választ el).
- say_reward: jutalomként kiírt szöveg.

---

🔹 5. Állapotok (state) és váltás köztük

A questek állapotokból épülnek fel. A set_state() parancs váltja az aktuális állapotot.

Példa:

Kód: Egész kijelölése

quest kutya_quest begin
    state start begin
        when login begin
            set_state(kill_dogs)
        end
    end
    
    state kill_dogs begin
        when letter begin
            send_letter("Ölj meg 10 vadkutyát!")
        end

        when 101.kill begin
            pc.setqf("dog_count", pc.getqf("dog_count") + 1)
            if pc.getqf("dog_count") >= 10 then
                set_state(reward)
            end
        end
    end
    
    state reward begin
        when letter begin
            send_letter("Jutalom átvétele")
        end
        when button or info begin
            say("Gratulálok, teljesítetted a küldetést!")
            pc.change_money(1000000)
            set_state(__COMPLETE__)
        end
    end
end
---

🔹 6. Quest változók

A játékoshoz kapcsolt változók a pc.setqf és pc.getqf függvényekkel működnek.

Kód: Egész kijelölése

pc.setqf("kulcs", 1)      -- beállítja a "kulcs" változót 1-re
pc.getqf("kulcs")         -- kiolvassa az értékét
Használatuk: mob ölés számlálása, itemek gyűjtése, állapotok megőrzése.

---

🔹 7. Küldetéslevél és információ

A questek általában küldetéslevél formájában jelennek meg a játékban:

Kód: Egész kijelölése

when letter begin
    send_letter("Vadkutya küldetés")
end

when info begin
    say("Feladatod: ölj meg 10 vadkutyát!")
end
- send_letter: küldetés címének megjelenítése a felugró ablakban.
- info: részletek, ha a játékos rákattint a levélre.

---

🔹 8. NPC-hez kötött quest

Egy NPC-hez így kötünk questet:

Kód: Egész kijelölése

when 20095.chat."Segítség!" begin
    say("Szia kalandor!")
    say("Hozz el nekem 5 Vörös virágot.")
end
- Az NPC ID-je mob_proto-ban található (itt: 20095).
- A chat menüpont neve `"Segítség!"`.

---

🔹 9. Itemhez kötött quest

Item használatakor:

Kód: Egész kijelölése

when 50052.use begin
    say("Felhasználtad a varázsitalt!")
    pc.change_hp(500)
    item.remove()
end
- Az item.remove() törli az itemet a használat után.

---

🔹 10. Hasznos parancsok listája

Kód: Egész kijelölése

pc.change_money(1000)      -- pénz adása
pc.give_item2(27003, 1)    -- tárgy adása (ID, mennyiség)
pc.change_exp(1000)        -- tapasztalat adása
pc.get_name()              -- játékos neve
pc.get_level()             -- játékos szintje
pc.get_sex()               -- játékos neme
pc.get_job()               -- karakter kasztja
pc.warp(x,y)               -- teleportálás koordinátára
---

🔹 11. Quest aktiválása és fordítás

1. Másold a quest fájlt a quest/ mappába.
2. Fordítsd le SSH alatt:

Kód: Egész kijelölése

qc questnev.quest

vagy az összeset:
3. Indítsd újra a szervert, vagy:

Kód: Egész kijelölése

/reload q


---

🔹 12. Tippek és jó gyakorlatok
  • Mindig adj beszédes nevet a questnek (pl. boss_hunt.quest).
  • Teszteléshez használj egyszerű feltételeket, majd bővítsd a kódot.
  • Hiba esetén ellenőrizd a syserr logot.
  • Ne felejtsd el az item_proto/mob_proto szerkesztést, ha új itemet/NPC-t használsz.
  • Kerüld a felesleges „végtelen ciklusokat” vagy rosszul zárt feltételeket, mert összeomlaszthatják a szervert.
---
👉 Ezzel az alap kézikönyvvel képes leszel saját questeket írni.
Kezdj kicsiben, majd építs összetettebb rendszereket – ha elakadsz, oszd meg itt a fórumon, és segít a közösség!
K5Zz
Újonc

Újonc
Hozzászólások: 2
Csatlakozott: 2025.08.30. 17:25

Re: TUTORIAL: Quest írás kezdőknek

Hozzászólás Szerző: K5Zz »

Köszönöm a publikálást, pont erre volt szükségem :D
PrevZ
Újonc

Újonc
Hozzászólások: 4
Csatlakozott: 2025.08.30. 17:30

Re: TUTORIAL: Quest írás kezdőknek

Hozzászólás Szerző: PrevZ »

Ez nagyon szépen össze szedett bemutatása a Quest írásnak! +Respect
serverfan
Tapasztalt Harcos

Tapasztalt Harcos
Hozzászólások: 21
Csatlakozott: 2025.08.29. 17:27

Re: TUTORIAL: Quest írás kezdőknek

Hozzászólás Szerző: serverfan »

8-) :D
Válasz küldése