Metin2 Quest Sistemi Nedir? Quest Yazmaya Başlangıç

yusosyal · 13 Eylül 2026 · 0 görüntülenme · 0 cevap

📜 Metin2 Quest Sistemi Nedir? Quest Yazmaya Başlangıç


Metin2 server geliştirmeye başlayanların karşısına çıkan en önemli sistemlerden biri:

Quest sistemidir.

Quest denildiğinde akla yalnızca oyuncuya verilen görevler gelmemelidir.

Metin2'de quest sistemi;

🧙 NPC işlemleri,

🎁 ödüller,

⚔️ görevler,

👹 canavar öldürme kontrolleri,

📦 item teslimleri,

🗺️ ışınlanma işlemleri,

⏳ zamanlayıcılar,

📊 oyuncu ilerlemesi

ve çok sayıda oyun mekanizmasının oluşturulmasında kullanılabilir.

Bu nedenle quest sistemini öğrenmek, Metin2 server geliştirmeye başlayan biri için oldukça değerlidir.


📌 Quest Nedir?

Quest, belirli olaylar ve şartlar gerçekleştiğinde çalışabilen oyun mantığını tanımlamak için kullanılan sistemlerden biridir.

Basit bir örnek düşünelim:

Oyuncu bir NPC'ye tıklar.

NPC:

“10 adet item getir.”

der.

Oyuncu gerekli itemleri toplar.

NPC'ye tekrar gelir.

Sistem itemleri kontrol eder.

Şartlar sağlanıyorsa:

itemleri alır

ve oyuncuya ödül verir.

Bu sürecin mantığı quest sistemiyle oluşturulabilir.


🧠 Quest Sistemi Nasıl Düşünülmeli?

Yeni başlayanların quest yazarken ilk öğrenmesi gereken şey kod ezberlemek değildir.

Önce şu mantığı anlamak gerekir:

OLAY

↓

ŞART

↓

İŞLEM

↓

SONUÇ

Örneğin:

OLAY:
Oyuncu NPC'ye tıkladı.

ŞART:
Oyuncunun seviyesi 30 veya üzeri mi?

İŞLEM:
Görev ekranını göster.

SONUÇ:
Oyuncuya görev ver.

Quest yazımının büyük bölümü bu mantık etrafında düşünülebilir.


📜 Quest Yapısının Temel Mantığı

Quest dosyalarında genel olarak:

quest

state

when

gibi yapılarla karşılaşabilirsiniz.

Bunların görevlerini anlamak:

quest geliştirmeyi çok daha kolay hale getirir.


📦 quest Nedir?

quest

oluşturduğunuz quest yapısının başlangıcını tanımlar.

Basitleştirilmiş mantık:

quest → sistemin kendisi

state → sistemin mevcut aşaması

when → sistemin hangi olayda çalışacağı

şeklinde düşünülebilir.


🚦 state Nedir?

state

questin belirli aşamalarını yönetmek için kullanılabilir.

Örneğin bir görev:

başlamadı,

aktif,

tamamlandı

gibi farklı aşamalara sahip olabilir.

Metin2 quest sisteminde bu ilerleme:

state yapılarıyla

yönetilebilir.


⚡ when Nedir?

when

belirli bir olay gerçekleştiğinde:

hangi kodun çalışacağını

tanımlamak için kullanılır.

Örneğin:

oyuncu giriş yaptığında,

NPC'ye tıkladığında,

bir yaratık öldürdüğünde,

belirli seviyeye ulaştığında

veya bir item kullandığında

quest çalıştırılabilir.


👤 login Olayı

Oyuncu oyuna giriş yaptığında:

belirli işlemleri gerçekleştirmek için

login olayı kullanılabilir.

Örneğin:

oyuncuya bilgi vermek,

belirli şartları kontrol etmek

veya devam eden bir sistemi yönetmek

için kullanılabilir.

Ancak her girişte ağır işlemler çalıştırmak:

gereksiz yük oluşturabileceği için

dikkatli kullanılmalıdır.


🧙 NPC Click Mantığı

Quest sisteminin en yaygın kullanım alanlarından biri:

NPC etkileşimidir.

Oyuncu belirli NPC'ye tıkladığında:

konuşma ekranı,

seçenekler,

görev,

ödül

veya farklı işlemler

başlatılabilir.


👹 kill Olayı

Oyuncu bir yaratık öldürdüğünde:

quest üzerinden işlem yapılabilir.

Örneğin:

“50 yaratık öldür”

görevi düşünelim.

Her uygun yaratık öldürüldüğünde:

sayaç artırılabilir.

Sayaç 50 olduğunda:

görev tamamlanabilir.


🎒 Item Kullanımı

Bazı questler:

oyuncunun belirli bir itemi

kullanmasıyla

başlatılabilir.

Bu mantık:

özel sandıklar,

ışınlanma eşyaları,

görev itemleri

ve farklı sistemlerde

kullanılabilir.


📊 Quest Flag Nedir?

Quest geliştirirken:

quest flag

kavramıyla sık karşılaşabilirsiniz.

Flag:

oyuncuya veya quest ilerlemesine ait

belirli bilgileri saklamak için

kullanılabilir.

Örneğin:

kaç yaratık öldürdü?

görevi tamamladı mı?

ödülü aldı mı?

hangi aşamada?

gibi bilgiler

flag mantığıyla takip edilebilir.


💡 Basit Bir Örnek

Bir görev tasarlayalım:

Oyuncu NPC'ye gider.

NPC:

“20 adet yaratık öldür.”

der.

Oyuncu görevi kabul eder.

Sistem:

öldürülen uygun yaratıkları

saymaya başlar.

20 yaratık öldürüldüğünde:

oyuncuya

“Görev tamamlandı.”

bilgisi verilir.

Oyuncu NPC'ye döner.

NPC:

ödülü verir.

Burada ihtiyaç duyduğumuz temel yapı:

NPC etkileşimi

+

görev durumu

+

kill kontrolü

+

sayaç

+

ödül

olacaktır.


🧩 Quest Yazmadan Önce Akış Hazırlayın

Doğrudan kod yazmaya başlamayın.

Önce düz yazıyla:

questin nasıl çalışacağını

hazırlayın.

Örneğin:

1️⃣ Oyuncu NPC'ye tıklar.

2️⃣ Seviye kontrol edilir.

3️⃣ Görev daha önce tamamlandı mı kontrol edilir.

4️⃣ Oyuncuya görev teklif edilir.

5️⃣ Kabul ederse görev başlar.

6️⃣ Yaratıklar sayılır.

7️⃣ Hedef tamamlanınca NPC'ye dönmesi istenir.

8️⃣ Gerekli kontroller tekrar yapılır.

9️⃣ Ödül verilir.

🔟 Quest tamamlandı olarak işaretlenir.

Bu akışı doğru kurduğunuzda:

kodu yazmak

çok daha kolay hale gelir.


🔐 Server Tarafındaki Kontroller Neden Önemli?

Quest sistemi:

oyuncuya item,

Yang,

EXP,

ışınlanma

ve farklı avantajlar

sağlayabilir.

Bu nedenle:

ödül vermeden önce

gerekli şartların gerçekten karşılandığı

kontrol edilmelidir.


⚠️ Ödülü İki Kez Alma Problemi

Kötü hazırlanmış questlerde:

oyuncu aynı ödülü

birden fazla kez alabilir.

Örneğin:

quest tamamlandıktan sonra

tamamlanma durumu kaydedilmiyorsa

NPC'ye tekrar tıklamak:

ödülün yeniden verilmesine

neden olabilir.

Bu yüzden ödül sistemlerinde:

“Bu oyuncu ödülü daha önce aldı mı?”

kontrolü önemlidir.


🎁 Item Verirken Nelere Dikkat Edilmeli?

Quest üzerinden item verirken:

doğru item ID,

doğru miktar,

gerekli şartlar

ve ödülün tekrar alınıp alınamayacağı

kontrol edilmelidir.

Yanlış item ID:

oyuncuya tamamen farklı bir item

verilmesine neden olabilir.


💰 Yang Ödüllerinde Dikkat

Quest üzerinden yüksek miktarda:

Yang

veya ekonomik değeri olan ödüller

veriliyorsa

quest mutlaka dikkatli test edilmelidir.

Tekrarlanabilir bir hata:

server ekonomisini

ciddi şekilde bozabilir.


🗺️ Işınlanma Questleri

Quest sistemi:

oyuncuyu farklı haritalara

ışınlamak için de kullanılabilir.

Örneğin:

NPC'ye tıkla

→ bölge seç

→ şartları kontrol et

→ gerekli itemi kontrol et

→ itemi al

→ oyuncuyu ışınla

şeklinde bir sistem kurulabilir.


⚠️ Işınlamadan Önce Kontrol

Özellikle:

level şartı,

giriş itemi,

grup şartı,

bekleme süresi

ve harita gereksinimleri

varsa

ışınlamadan önce kontrol edilmelidir.


⏳ Timer Nedir?

Bazı questlerde:

belirli bir süre sonra

işlem yapılması gerekir.

Örneğin:

zindanın kapanması,

oyuncunun belirli süre beklemesi,

dalga başlangıcı,

geri sayım

veya zaman sınırlı görev

gibi sistemlerde

timer mantığı kullanılabilir.


⚠️ Timer Kullanırken Dikkat

Zamanlayıcılar:

özellikle zindanlarda

dikkatli tasarlanmalıdır.

Oyuncu:

çıkış yaparsa,

ölürse,

haritadan ayrılırsa

veya server yeniden başlarsa

sistemin nasıl davranacağı

önceden düşünülmelidir.


🏰 Zindanlar Quest ile Yapılabilir mi?

Metin2'de birçok zindan mantığında:

quest sistemi önemli rol oynayabilir.

Örneğin:

giriş kontrolü,

grup kontrolü,

Metin kesme,

boss oluşturma,

kat ilerletme,

zaman sınırı,

ödül

ve çıkış

gibi aşamalar

questlerle yönetilebilir.


🧠 Zindan Questi Neden Daha Zordur?

Basit NPC questinden farklı olarak:

zindanlarda

aynı anda birçok durum

takip edilir.

Örneğin:

kaç oyuncu içeride?

boss öldü mü?

hangi kattalar?

süre doldu mu?

gerekli item kullanıldı mı?

ödül alındı mı?

Bu nedenle yeni başlayan biri:

ilk quest olarak büyük bir zindan

yazmaya çalışmamalıdır.


🌱 İlk Questiniz Ne Olmalı?

Başlangıç için:

basit NPC konuşması

iyi bir seçimdir.

Sonrasında:

level kontrolü,

item kontrolü,

ödül verme,

kill görevi,

quest flag,

state değiştirme

gibi özellikleri

tek tek öğrenebilirsiniz.


📈 Quest Öğrenme Sırası

Başlangıç:

NPC konuşması

↓

Seçenek menüsü

↓

Level kontrolü

↓

Item kontrolü

↓

Item verme/alma

↓

Yang ve EXP işlemleri

↓

Quest flag

↓

Kill sayacı

↓

State sistemi

↓

Timer

↓

Işınlanma

↓

Grup kontrolleri

↓

Zindan sistemleri

Bu sırayla ilerlemek:

karmaşık questleri anlamayı

kolaylaştırır.


🧪 Quest Nasıl Test Edilmeli?

Quest yazıldıktan sonra:

yalnızca normal senaryoyu

test etmek yeterli değildir.

Örneğin görev:

10 item istiyorsa

şunları da deneyin:

Oyuncuda 0 item var.

Oyuncuda 9 item var.

Oyuncuda tam 10 item var.

Oyuncuda 20 item var.

Görev daha önce tamamlandı.

Oyuncu görevi yarıda bıraktı.

Oyuncu çıkış yapıp geri geldi.

Oyuncu NPC'ye tekrar tekrar tıkladı.

Bu testler:

beklenmeyen hataları

bulmanıza yardımcı olur.


🔁 Tekrar Edilebilir Questler

Bazı görevler:

yalnızca bir kez,

bazıları:

günlük,

bazıları:

belirli bekleme süresiyle,

bazıları ise:

sınırsız

tekrar edilebilir.

Quest tasarlanırken:

bu davranış açık şekilde

belirlenmelidir.


📅 Günlük Görev Mantığı

Günlük görev oluşturuyorsanız:

yalnızca:

“ödülü verdi”

bilgisini saklamak

yeterli değildir.

Oyuncunun:

ödülü ne zaman aldığı

ve yeniden ne zaman alabileceği

de doğru şekilde

takip edilmelidir.


⚠️ Saat ve Tarih Sistemlerinde Dikkat

Günlük reset:

00:00 mı?

24 saat sonra mı?

server saatine göre mi?

belirli bir reset saatinde mi?

çalışacak?

Bunlar birbirinden farklı sistemlerdir.

Quest yazmadan önce:

reset kuralını

net belirleyin.


🧹 Quest Değişkenlerini Gereksiz Kullanmayın

Her küçük bilgi için:

kalıcı flag oluşturmak

iyi tasarım olmayabilir.

Gerçekten:

oyuncunun ileride tekrar ihtiyaç duyacağı

bilgileri

saklayın.

Quest büyüdükçe:

değişken isimlerinin anlaşılır olması

çok önemlidir.


📝 İsimlendirme Neden Önemli?

Şöyle bir değişken:

a

ilk yazdığınız anda

size anlaşılır gelebilir.

Aylar sonra:

ne işe yaradığını

hatırlamayabilirsiniz.

Bunun yerine:

görevin amacını anlatan

tutarlı isimler kullanmak

bakımı kolaylaştırır.


🛠️ Quest Hatası Nasıl Bulunur?

Quest çalışmıyorsa:

rastgele kod değiştirmek yerine

adım adım ilerleyin.

Kontrol edin:

Syntax doğru mu?

Doğru quest yüklendi mi?

NPC veya mob ID doğru mu?

State doğru mu?

When olayı gerçekten tetikleniyor mu?

Şart yanlış mı?

Flag beklenen değerde mi?

Server logunda hata var mı?


📋 Loglar Neden Önemli?

Quest derleme veya çalışma sırasında:

hata mesajları

problemin nerede olduğunu

gösterebilir.

Logları okumadan:

sürekli farklı kodlar denemek

hem zaman kaybettirir

hem yeni hatalar oluşturabilir.


⚠️ İnternetten Quest Kopyalarken Dikkat

İnternette:

çok sayıda hazır quest

bulunabilir.

Ancak her quest:

sizin Server Files yapınıza

uygun olmayabilir.

Ayrıca kod:

eski,

hatalı,

güvensiz

veya kötü optimize edilmiş

olabilir.

Bu nedenle:

kopyala → yükle → canlıya al

yaklaşımı yerine:

kodu incele → ne yaptığını anla → test et → kullan

yaklaşımı daha sağlıklıdır.


🔐 Kaynağı Bilinmeyen Questlere Dikkat

Özellikle:

uzun,

karmaşık

ve ne yaptığı anlaşılmayan

questleri

canlı servera doğrudan eklemeyin.

Kodun:

item üretip üretmediğini,

oyuncu verisini değiştirip değiştirmediğini,

komut çalıştırıp çalıştırmadığını

ve hangi sistemlere dokunduğunu

inceleyin.


💾 Quest Değiştirmeden Önce Yedek

Çalışan bir sistemi:

değiştirmeden önce

mevcut quest dosyasının

yedeklenmesi

iyi bir alışkanlıktır.

Büyük değişikliklerde:

ilgili server dosyalarının

ve gerekiyorsa veritabanının

yedeklenmesi

geri dönüşü kolaylaştırır.


🧪 Test Server Kullanmanın Avantajı

Test ortamında:

hatalı quest,

yanlış ödül,

bozuk ışınlanma,

sonsuz döngü,

tekrar ödül alma

gibi problemleri

gerçek oyuncular etkilenmeden

tespit edebilirsiniz.


⚠️ Questlerde Yapılan Yaygın Hatalar

Kodun ne yaptığını anlamadan kopyalamak.

Canlı serverda doğrudan test yapmak.

Quest flag kullanmayı bilmemek.

Ödülün tekrar alınmasını engellememek.

Yanlış item veya mob ID kullanmak.

Level şartını kontrol etmemek.

Timer davranışını düşünmemek.

Oyuncu çıkış yaptığında ne olacağını hesaba katmamak.

Quest state yapısını gereksiz karmaşıklaştırmak.

Logları okumamak.

Yedek almamak.

Birinci quest olarak büyük zindan yazmaya çalışmak.


❓ Metin2 Quest Hangi Dille Yazılır?

Metin2 quest sistemi:

Lua tabanlı bir söz dizimi ve Metin2'ye özgü quest fonksiyonları/yapıları

kullanır.

Bu nedenle:

genel Lua bilgisi

faydalıdır.

Ancak yalnızca standart Lua öğrenmek:

Metin2'nin quest API'sini

otomatik olarak öğretmez.


❓ Kodlama Bilmeden Quest Yazılır mı?

Basit questleri:

örnekleri inceleyerek

öğrenmek mümkündür.

Ancak:

değişken,

koşul,

fonksiyon,

olay

ve programlama mantığını

öğrenmek

çok büyük avantaj sağlar.


❓ Quest Yazmak İçin Source Gerekir mi?

Basit ve mevcut quest sistemi tarafından desteklenen işlemler için:

her zaman source değişikliği

gerekmez.

Quest sistemi:

serverın sunduğu mevcut fonksiyonları

kullanabilir.

Ancak quest sisteminde bulunmayan

yeni bir çekirdek davranış gerekiyorsa:

source tarafında geliştirme

gerekebilir.


❓ Quest ile Item Verilir mi?

Evet.

Questler:

şartlar karşılandığında

oyuncuya item

ve farklı ödüller

vermek için kullanılabilir.


❓ Quest ile NPC Yapılır mı?

Quest:

mevcut NPC ile oyuncu arasındaki

etkileşimleri

yönetebilir.

NPC konuşmaları,

seçenekler

ve farklı işlemler

quest üzerinden

oluşturulabilir.


❓ Quest ile Zindan Yapılır mı?

Evet.

Zindanların:

giriş,

ilerleme,

boss,

süre

ve ödül

gibi birçok mekanizmasında

quest sistemi kullanılabilir.

Ancak zindan questleri:

başlangıç seviyesi için

karmaşıktır.


❓ Quest Çalışmıyorsa İlk Neye Bakmalıyım?

Öncelikle:

questin başarıyla yüklenip yüklenmediğini

ve loglarda:

syntax veya çalışma hatası

olup olmadığını

kontrol edin.

Sonra:

olay,

şart,

ID

ve state mantığını

adım adım inceleyin.


🏆 İlk Questinizi Yazmadan Önce Kontrol Listesi

Questin amacını belirleyin.

Akışı düz yazıyla hazırlayın.

Başlangıç olayını belirleyin.

Gerekli şartları yazın.

Quest state yapısını planlayın.

Gerekli flagleri belirleyin.

Ödülü tanımlayın.

Ödülün tekrar alınıp alınamayacağını belirleyin.

Hatalı kullanım senaryolarını düşünün.

Test serverda deneyin.

Logları kontrol edin.

Çıkış/giriş senaryosunu test edin.

Tekrar tıklama senaryosunu test edin.

Çalışan dosyanın yedeğini saklayın.


📌 Sonuç: Quest Öğrenmeye Nereden Başlanmalı?

Metin2 Quest Sistemi:

yalnızca görev yazmak için kullanılan

küçük bir sistem değildir.

Questler;

🧙 NPC etkileşimleri,

👹 yaratık görevleri,

🎁 ödüller,

📦 item işlemleri,

🗺️ ışınlanmalar,

⏳ zamanlayıcılar,

🏰 zindanlar

ve çok sayıda oyun sisteminde

kullanılabilir.

Yeni başlıyorsanız:

karmaşık hazır questleri

ezberlemek yerine

önce şu mantığı öğrenin:

OLAY

↓

ŞART

↓

İŞLEM

↓

SONUÇ

Ardından:

NPC konuşması,

level kontrolü,

item kontrolü,

quest flag,

kill sayacı,

state,

timer

ve zindan mantığına

adım adım ilerleyin.

Quest sistemini gerçekten öğrenmenin en iyi yolu:

hazır kodu kopyalamak değil,

küçük bir sistem yazıp

neden çalıştığını

anlamaktır. 📜🛠️


💬 Developer & Files Tartışması

Quest geliştirmeye ilk başladığınızda:

en çok hangi bölümde zorlandınız?

NPC işlemleri,

quest flag,

kill sayacı,

timer

yoksa zindan questleri mi?

Kendi tecrübelerinizi ve quest geliştirme sorularınızı konu altında paylaşabilirsiniz. 👇