Gerçek Zamanlı(Real-Time) Affect

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 93

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Oyuncularınıza gerçek zamanlı affectler verebilmenize yarar. Örneğin bir oyuncunuza 7 günlük tag verdiniz ama oyuncu oyunda yokken de süresinin eksilmesini istiyorsunuz. İşte bu size göre;

Not: Gcc sürümüne bilmem neye ihtiyaç yoktur, herkesin kullanabileceği şekilde düzenlenmiştir.
Not2: İfdef'i kafanıza göre ayarlamayı veya kaldırmayı unutmayın.

game/char_affect.cpp
Aratılır
Kod:
int CHARACTER::ProcessAffect()

Üstüne eklenir

Kod:
const DWORD realTimeAffList[*] = {     AFFECT_TAG_YOUTUBE,     AFFECT_TAG_TWITCH,     AFFECT_TAG_FACEBOOK, };


Kod:
int CHARACTER::ProcessAffect()
içinde Aratılır:

Kod:
if (--pkAff->lDuration <= 0) { bEnd = true; }

Değiştirilir


Kod:
const long timeNow = (long)get_global_time();         bool isRealTime = false;         for (uint8_t i = 0; i < _countof(realTimeAffList); i++) {             if (realTimeAffList[i] == pkAff->dwType) {                 //if (IsGM()) { ChatPacket(1, "<GM|realTimeAffListECT> affIdx:%d var.farkSn:%d", pkAff->dwType, (pkAff->lDuration - suanTime)); }                 if (pkAff->lDuration <= timeNow)                     bEnd = true;                 isRealTime = true;                 break;             }         }         if (!isRealTime) {             if (--pkAff->lDuration <= 0) { bEnd = true; }         }


Gerçek zamanlı çalışmasını istediğiniz AFFECT numarasını gercekZamanliAff arrayına eklemeniz yeterlidir.
Örnek affect eklemesi(get_global_time() + verilecekSaniye);

Kod:
AddAffect(AFFECT_BLOCK_CHAT, POINT_NONE, 0, AFF_CHATBAN, get_global_time() + 86400, 0, false); }

Gcc11 ve daha üstü sürümlerde bu eklentiyi kullananlar, gerçek süreli affect sona erdiğinde affect remove kod bloğu yüzünden core alacaktır. 22.06.2023 16:03 tarihiyle kodu düzgün hali ile değiştirdim. Kullanıp problem yaşamış olan var ise kusura bakmasın hiçbir geri dönüş almamıştım. Eğer bu düzenlemeyi kullanan var ise konudaki hali ile değiştirsin lütfen.

Gerçek Zamanlı (Real-Time) Affect Sistemi Nedir ve Metin2'de Nasıl Uygulanır?


Metin2, güçlü bir MMORPG altyapısına sahip oyun olarak, özel sunucu geliştiricileri tarafından yoğun olarak tercih edilmektedir. Bu bağlamda, oyuncuların karakterlerinde anlık olarak değişen etkileri (buff/debuff) yönetmek büyük önem taşır. İşte tam burada Gerçek Zamanlı (Real-Time) Affect sistemi devreye girer.

Real-Time Affect, oyuncunun karakteri üzerinde etkin olan pozitif veya negatif etkilerin, anlık olarak hesaplanmasını ve görüntülenmesini sağlar. Bu sayede örneğin bir şifrelinin üzerindeki zehir efekti, canavarın verdiği kan emme etkisi ya da bir savaşçının kullandığı koruyucu büyü gibi efektler doğru şekilde takip edilebilir ve zamanı geldiğinde otomatik olarak kaldırılabilir.

Bu sistem genellikle C++ tabanlı Game Server kaynak kodlarında geliştirilir. Özellikle Martysama gibi popüler Metin2 kaynakları üzerinden yapılan düzenlemelerle, bu tarz sistemler kolayca entegre edilebilir. Python[/COORD] scriptlerle birlikte Py Root ve UI Script yapıları kullanılarak istemci tarafında da etkilerin görsel olarak doğru yansıması sağlanabilir.

PVP sistemlerinde gerçek zamanlı affect yönetimi, oyun dengesini korumak açısından kritik öneme sahiptir. Örneğin bir düşmanın üzerine atılan zayıflatıcı bir büyü, anında etki etmeli ve karşı tarafın bu etkiyi görebilmesi gerekir. Bu sayede adil bir mücadele ortamı oluşur. Aynı zamanda, bu tür sistemler DB Core üzerinden karakter verileriyle senkronize çalışarak, sunucu yeniden başlatıldığında bile aktif etkilerin kaybolmamasını sağlayabilir.

Real-time affect sistemi genellikle şu bileşenlerden oluşur:

1. Affect Listesi (AffectManager): Aktif tüm efektlerin tutulduğu veri yapısıdır. Her karakterin kendi listesi vardır.

2. Süre Kontrolü: Efektlerin ne kadar süreyle aktif kalacağını belirler. Süresi dolan etkiler otomatik olarak silinir.

3. Görsel Yansıma: Oyuncuya efektin durumunu göstermek için Py GUI ile arayüzde simgeler veya sayaçlar oluşturulabilir.

4. Sunucu-İstemci Senkronizasyonu: Etkilerin hem sunucuda hem de istemcide aynı şekilde görünmesini sağlar.

Bu tür sistemlerin geliştirilmesinde, Metin2 Lobby gibi platformlarda bulunan source edit örneklerinden faydalanmak oldukça yararlı olur. Geliştiriciler, C++ bilgilerini pekiştirmek ve game performansını artırmak için bu yapıları detaylı incelemelidir. Ayrıca, auth ve db katmanlarında da bu etkilerle ilgili verilerin güvenli ve hızlı şekilde saklanması önemlidir.

Metin2 özel sunucularında real-time affect sistemi, kullanıcı deneyimini ciddi anlamda artırır. Hem PVP hem de PVE içeriklerde, oyuncuların karakterlerindeki etkileri anlık olarak takip edebilmesi, stratejik oyun tarzlarını besler. Bu da daha rekabetçi ve keyifli bir oyun ortamı sağlar.


What is Real-Time Affect System and How Is It Implemented in Metin2?


Metin2, with its robust MMORPG infrastructure, is widely preferred by private server developers. Within this context, managing real-time effects (buff/debuff) on players' characters is of great importance. This is where the Real-Time Affect system comes into play.

Real-Time Affect allows for instant calculation and display of active positive or negative effects on a player's character. For instance, effects such as a poison applied by a wizard, a life drain effect from a monster, or a protective spell used by a warrior can be tracked correctly and removed automatically when their duration expires.

This system is typically developed within C++-based Game Server source codes. Modifications made through popular Metin2 sources like Martysama allow these types of systems to be easily integrated. Combined with Python scripts, Py Root and UI Script structures ensure that the effects are visually reflected correctly on the client side as well.

In PVP systems, real-time affect management is crucial for maintaining game balance. For example, a weakening spell cast upon an enemy must take immediate effect, and the opposing player must be able to see this effect. This ensures a fair combat environment. Additionally, these systems can work in sync with DB Core to ensure that active effects do not disappear even if the server restarts.

Real-time affect systems generally consist of the following components:

1. Affect List (AffectManager): The data structure that holds all active effects. Each character has its own list.

2. Duration Control: Determines how long each effect remains active. Effects whose durations have expired are automatically removed.

3. Visual Representation: Icons or counters can be created via Py GUI to show the status of effects to the player.

4. Server-Client Synchronization: Ensures that the effects appear identically on both the server and the client.

When developing such systems, utilizing examples found on platforms like Metin2 Lobby can be highly beneficial. Developers should thoroughly examine these structures to strengthen their C++ knowledge and improve game performance. Furthermore, secure and fast storage of related data in auth and db layers is also important.

The real-time affect system in Metin2 private servers significantly enhances user experience. In both PVP and PVE content, allowing players to track character effects instantly supports strategic gameplay. This creates a more competitive and enjoyable gaming environment.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Geri
Üst Alt