aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Metin2

Metin2 Lonca Savaşı Kurulumu: Kural, Alan ve Ödül

Metin2 lonca savaşı (guild war), iki loncanın resmi olarak savaş ilan edip belirli kurallar altında öldürme skoru topladığı, kazananın bahsi ve sıralama puanını aldığı temel PvP mekaniğidir. Doğru yapılandırıldığında sunucunuza günün her saati canlı bir rekabet ve sosyal hedef kazandırır; yanlış kurulduğunda ise sürekli açık kalan, hile yapılabilen ya da hiç sonuçlanmayan bir özelliğe dönüşür. Bu yazıda savaş türlerini, savaşın nasıl ilan edilip kabul edildiğini, skor ve bahis kurallarını, warp savaş haritalarını ve kazanan loncaya verilecek ödülleri nasıl yapılandıracağınızı adım adım anlatıyorum.

Lonca savaşı türleri

Çoğu Metin2 kaynağı üç farklı savaş türünü destekler; hangisini sunacağınız sunucunuzun karakterini belirler:

  • Normal savaş (skor savaşı): Savaş açık dünyada geçer. İki loncanın üyeleri birbirini nerede öldürürse öldürsün skor sayılır. Önceden belirlenen skor limitine ilk ulaşan lonca kazanır. Kurulumu en kolay olanıdır ama serbest dünyada üçüncü tarafların karışmasına açıktır.
  • Warp savaş (arena/davet savaşı): Her iki loncanın üyeleri ayrı bir savaş haritasına ışınlanır. Dış müdahale olmadan, izole bir alanda dövüşülür; bu yüzden en adil ve en popüler türdür.
  • Bayrak savaşı (CTF): Haritadaki sembol/bayrak noktalarını ele geçirme üzerine kuruludur; saf öldürme yerine alan kontrolü ister. Daha az kullanılır ama özgün bir his verir.

Üç türün de ortak iskeleti aynıdır: ilan, kabul, skor sayımı ve sonuç. Farkları yalnızca savaşın nerede geçtiği ve skorun nasıl kazanıldığıdır.

Savaşı ilan etmek ve kabul süreci

Savaş, oyun içi lonca menüsünden başlatılır. Saldıran loncanın lonca lideri hedef loncayı seçer, savaş türünü belirler ve varsa bahis miktarını girer. Sistem hedef loncanın liderine bir savaş daveti gönderir; karşı lider belirli süre içinde kabul ederse savaş başlar, etmezse istek düşer. Bu "iki taraflı onay" mantığı önemlidir, çünkü zorla savaş açmayı engeller.

İlanın geçerli olması için genellikle iki koşul aranır: her iki loncanın da minimum üye sayısını karşılaması ve liderin bahis tutarını karşılayabilecek yangının olması. Bu kuralları kaynağınızdaki guild war yapılandırmasında bulursunuz; ilgili kod tipik olarak guild.cpp, guild_manager.cpp ve quest tarafında questlua_guild.cpp içinde yer alır.

Skor ve bahis kurallarını yapılandırmak

Savaşın çekirdek kuralları, her savaş türü için ayrı satır içeren bir yapılandırma tablosunda tutulur. Kaynağa göre adı değişse de mantık aynıdır: tür başına bahis limiti, minimum üye sayısı ve kazanma skoru tanımlanır. Örnek bir tablo şuna benzer:

// her savaş türü için: { kazanma_skoru, min_uye, bahis_limiti }
const SGuildWarInfo c_aGuildWarInfo[GUILD_WAR_TYPE_MAX_NUM] =
{
    // NORMAL  : 100 skor, en az  7 üye, max bahis  5.000.000 yang
    { 100,  7,  5000000 },
    // WARP    : 100 skor, en az 10 üye, max bahis 10.000.000 yang
    { 100, 10, 10000000 },
    // CTF     : 100 skor, en az 10 üye, max bahis 10.000.000 yang
    { 100, 10, 10000000 },
};

Bu değerleri sunucunuzun popülasyonuna göre ölçeklendirin. Küçük bir sunucuda min_uye = 10 şartı hiçbir loncanın savaş açamamasına yol açar; o yüzden başlangıçta minimumu düşük (örneğin 3–5) tutmak daha gerçekçidir. Kazanma skorunu da test loncasıyla deneyin: 100 skor, yoğun loncalar arasında dakikalar; küçük loncalar arasında ise yorucu uzunlukta sürebilir.

Savaş alanı: warp savaş haritaları

Warp savaşın kalbi, savaşın gerçekleştiği özel savaş haritalarıdır. Bunlar açık dünyadan izole, yalnızca savaş süresince iki loncaya tahsis edilen ayrı map index'lerdir. Kaynak, aynı anda birden çok savaş yürütebilmek için bir savaş haritası havuzu tutar; savaş başladığında havuzdan boş bir harita kiralanır, savaş bitince geri bırakılır. Tipik adımlar şunlardır:

  • Savaş haritalarını sunucu CONFIG/atlas yapılandırmanıza tanıtın; her harita kendi index'iyle yüklü ve oyuncuya kapalı olmalı.
  • Loncaları haritanın iki ayrı başlangıç noktasına (spawn) ışınlayın; başlangıç noktaları arasında mesafe bırakın ki anında temas olmasın.
  • Savaş bitince tüm oyuncuları orijinal konumlarına geri ışınlayın ve haritayı havuza iade edin.

Eşzamanlı savaş sayısı, tanımladığınız harita sayısıyla sınırlıdır. Yoğun bir sunucuda yeterli savaş haritası ayırmazsanız, loncalar "şu an boş savaş alanı yok" hatasıyla karşılaşır. Hangi map index'lerinin savaşa ayrıldığını bir yerde belgeleyin; bu haritaları normal portal/ışınlama listesine eklemeyin, aksi halde oyuncular savaş alanına sızabilir.

Ödüller ve lonca sıralama puanı

Savaşın oyuncuyu motive eden kısmı sonuçtur. İki temel ödül mekanizması vardır:

  • Bahis havuzu: İki lonca da aynı miktarı yatırmışsa, kazanan loncanın deposuna toplam havuz aktarılır. Bu, savaşa somut bir bahis hissi katar; ama bahis limitini yüksek tutarsanız ekonomiyi tek savaşta sarsabilirsiniz.
  • Lonca sıralama puanı (ladder): Kazanan lonca sıralama puanı kazanır, kaybeden kaybeder. Bu puanı bir web sitesinde lonca sıralaması olarak yayınlamak, savaşlara prestij değeri ekler ve rekabeti kalıcı hâle getirir.

Bunlara ek olarak, savaş sonucuna quest tarafından tepki verip ekstra ödül dağıtabilirsiniz. Aşağıdaki örnek, savaşı kazanan loncanın liderine sembolik bir ödül sandığı verir:

when button or info begin
    local kazanan = guild.get_guild_id()    -- bağlamdaki lonca
    if kazanan == arg1 then                 -- arg1: kazanan lonca id'si
        pc.give_item2(50300, 1)             -- ödül sandığı (örnek item vnum)
        notice_all("Lonca savaşını "..guild.get_name().." kazandı!")
    end
end

Item vnum ve fonksiyon adlarını mutlaka kendi kaynağınızdaki gerçek değerlerle değiştirin; yukarıdaki blok yalnızca mantığı gösterir. Ödülleri ölçülü tutun: her savaşın değerli eşya yağdırması, eşyaların değerini düşürür ve oyuncuları sırf ödül için sahte savaşlar düzenlemeye iter.

Dengeleme ve sık yapılan hatalar

Lonca savaşı sistemini açtıktan sonra en sık karşılaşılan sorunlar yapılandırmadan kaynaklanır:

  • Sahte savaşlar: Aynı sahibin iki loncası, ödül toplamak için sürekli birbirine savaş açar. Bahis ve ödülü düşük tutmak, ayrıca aynı IP/aynı oyuncu kontrolü eklemek bunu caydırır.
  • Minimum üye çok yüksek: Hiçbir lonca şartı karşılayamaz ve sistem kullanılmaz. Popülasyonunuza göre ayarlayın.
  • Açık dünya savaşına dış müdahale: Normal savaşta üçüncü loncalar karışıp dengeyi bozabilir. Adil rekabet istiyorsanız warp savaşı varsayılan yapın.
  • Savaş haritası sızıntısı: Savaş map index'leri normal ışınlama listesine eklenirse oyuncular savaş alanına girer. Bu haritaları daima kapalı tutun.
  • Skor istismarı: Aynı oyuncuyu defalarca öldürerek skor toplanmasını, kısa bir öldürme bekleme süresi (cooldown) ile sınırlayabilirsiniz.

Her değişiklikten sonra iki test loncasıyla baştan sona bir savaş yürütün: ilan, kabul, ışınlama, skor sayımı, sonuç ve ödül. Bu uçtan uca testi yapmadan canlıya almak, çoğu lonca savaşı arızasının ortak sebebidir.

Sık Sorulan Sorular

Lonca savaşını ilan ediyorum ama başlamıyor, neden?

En sık iki sebep vardır: ya loncalardan biri minimum üye sayısı şartını karşılamıyordur, ya da hedef loncanın lideri daveti zaman aşımına uğramadan kabul etmemiştir. Yapılandırma tablosundaki min_uye değerini düşürüp tekrar deneyin ve kabul penceresinin açıldığından emin olun.

Warp savaşta haritaya ışınlanmıyoruz, sorun ne?

Genellikle savaş haritaları sunucu yapılandırmasına doğru yüklenmemiştir ya da ayrılmış savaş haritası kalmamıştır. Atlas/CONFIG dosyanızda savaş map index'lerinin tanımlı olduğundan ve eşzamanlı savaş sayısı için yeterli harita ayırdığınızdan emin olun.

Kazanan lonca bahsi alamıyor, bunu nasıl düzeltirim?

Bahis aktarımı genellikle savaş sonucunu işleyen koda bağlıdır; bahis limitinin doğru tanımlandığını ve kazanma koşulunun (skor limitine ulaşma) gerçekten tetiklendiğini kontrol edin. Savaş skor limitine ulaşmadan süreyle bitiyorsa, bazı kaynaklarda sonuç berabere sayılır ve havuz iade edilir.

Sunucunuza adil ve istikrarlı bir lonca savaşı sistemi mi kurmak istiyorsunuz? Warp savaş haritaları, skor/bahis dengesi ve sıralama puanı entegrasyonu üzerine birlikte çalışabiliriz. Projenizi konuşmak için benimle iletişime geçin.

Bu kategorideki tüm yazılar →

Devamı için