Neler yeni
XenForo Bannerlar
Modern AdBlock Uyarısı

Foruma hoş geldin, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Kod Kanal Bazlı Boss Regen Kapatma Sistemi

Fatih Bulut

Süper Üye
Katılım
6 Kas 2021
Mesajlar
4,600
Tepkime puanı
5,841
Puanları
113
Yaş
32
Konum
Türkiye
Dc
fatihbulut
Kanal Bazlı Boss Regen Kapatma Sistemi
Belirli kanallarda (örn. CH3 / CH4) bossları tamamen devre dışı bırak. Tek binary, CONFIG'ten aç/kapa


📌 Nedir, Ne İşe Yarar?​


Bazen belirli kanalları boss'suz yapmak isteriz, sadece 1-2 kanalda boss ekonomisi dönsün diye.

Bu sistemle her kanal, kendi CONFIG dosyasındaki tek bir satırla boss regen'ini açıp kapatabilir. Aynı derlenmiş binary'yi tüm kanallara atarsın; hangi kanalda kapalı olacağına CONFIG karar verir. Kanal numarası koda hardcode edilmez.

Sadece boss.txt regen'i kapanır. Normal av (regen.txt), metin taşları (stone.txt), NPC'ler (npc.txt) ve dungeon etkilenmez.


🛠️ Kurulum (Game Source)​


1) config.h
g_bChannel tanımının hemen altına ekle:

Kod:
extern BYTE g_bChannel;
extern bool   g_bDisableBossRegen;    // boss.txt regen kapatma bayragi

2) config.cpp
g_bChannel[/ICODE] değişkeninin altına tanımı ekle:

Kod:
BYTE        g_bChannel = 0;
bool  g_bDisableBossRegen = false;

Ardından CONFIG okuma döngüsünde, TOKEN("channel") bloğunun altına yeni token'ı ekle:
Kod:
TOKEN("channel")
{
    str_to_number(g_bChannel, value_string);
    continue;
}

// bu kanalda boss.txt regen'i yukleme
TOKEN("disable_boss_regen")
{
    int iTmp = 0;
    str_to_number(iTmp, value_string);
    g_bDisableBossRegen = (iTmp != 0);
    fprintf(stdout, "DISABLE_BOSS_REGEN: %d\n", g_bDisableBossRegen ? 1
    continue;
}

3) sectree_manager.cpp

Kod:
snprintf(szFilename, sizeof(szFilename), "%s/%s/boss.txt", c_pszMapBasePath, szMapName);
if (!g_bDisableBossRegen)
    regen_load(szFilename, setting.iIndex, setting.iBaseX, setting.iBaseY);

Boss'u kapatmak istediğin kanalın CONFIG dosyasına şu satırı ekle

Kod:
DISABLE_BOSS_REGEN: 1

Diğer kanallara hiçbir şey ekleme (satır yoksa varsayılan false = boss'lar normal çalışır). Core açılışında log'da doğrulamanı görürsün:

Kod:
DISABLE_BOSS_REGEN: 1

Geri açmak: satırı sil ya da 0 yap + core'u restart et.

  • Quest/event boss'ları etkilenmez: mob.spawn, sppawn'lar boss.txt dışı olduğu için çalışmaya devam eder.Genelde istenen budur.
  • Map dosyaları paylaşımlıysa: Kanallar aynı share/data/map klasörünü paylaşıyorsa boss.txt'yi elle silmek tüm kanalları vurur. Bu yüzden kod tarafı çözüm kanal-bazlı ve güvenli.
  • boss.txt içeriğini teyit et: Konvansiyon "boss.txt = boss" ama bazı server'larda içine metin/başka spawn konabiliyor. O kanalda boss.txt'de ne varsa
    spawn olmayacak.
 

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap

Tema düzenleyici

Tema özelletirmeleri

Grafik arka planlar

Granit arka planlar