[C++]Moblara takılmayı kaldırın (Stop Collision with Mobs)

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
edit kapanabilir
Metin2 Server Geliştirme Serisi: [C++]Moblara Takılmayı Kaldırma (Stop Collision with Mobs)

Metin2 özel sunucularında oyun deneyimini artırmak adına geliştiriciler sürekli yeni sistemler eklerken, mevcut sistemler üzerinde de iyileştirmeler yaparlar. Bu bağlamda oyuncuların moblarla çarpışmasının engellenmesi, özellikle yüksek seviye PvP sunucularında büyük avantaj sağlar. Oyuncuların moblarla takılıp kalmaması, akıcı bir savaş ortamı yaratır ve stratejik hareketlenmeleri mümkün kılar. Bu yazıda, Metin2 C++ kaynak kodları üzerinden moblara takılmayı nasıl kaldıracağımızı adım adım ele alacağız.

Metin2 Sunucu Yapısı ve Çarpışma Sistemi
Metin2, client-server mimarisi üzerine kurulu bir MMORPG'dir. Oyuncu ve NPC (mob) gibi nesnelerin fiziksel etkileşimlerini sunucu tarafında yöneten çekirdek sistemlerden biridir. Bu sistemler genellikle game server kaynak kodunda C++ ile yazılmıştır. Oyuncu bir mobun üzerine gelmek istediğinde, sunucu tarafında çarpışma kontrolü yapılır ve buna göre hareket izni verilir veya engellenir.

Neden Moblara Takılmayı Kaldırmalısınız?
Oyuncuların moblarla çarpışması, özellikle yoğun PvP alanlarında büyük dezavantajlara yol açabilir. Örneğin bir savaş sırasında düşmanın arkasına geçmek isteyen bir oyuncu, araya giren bir mob yüzünden duraksayabilir veya pozisyonunu kaybedebilir. Bu da oyun deneyimini ciddi anlamda olumsuz etkiler. Bu nedenle geliştiriciler, mob collision özelliğini devre dışı bırakarak daha adil ve akıcı bir PvP deneyimi sunmayı hedeflerler.

C++ Kaynak Kodlarda Değişiklik Yapmak
Metin2 özel sunucularında moblara takılmayı kaldırmak için genellikle game/src/char/char.cpp veya benzeri dosyalarda bulunan çarpışma fonksiyonlarında değişiklik yapılması gerekir. Özellikle IsBlock veya CanMoveTo gibi fonksiyonlar bu işlem için hedef alınır.

Örnek olarak, character.cpp dosyasında bulunan bir fonksiyonu şu şekilde değiştirebiliriz:

Kod:
bool CHARACTER::CanMoveTo(int x, int y) const {[BR][/BR]    if (m_pkMobData && m_pkMobData->GetType() == CHAR_TYPE_MOB) {[BR][/BR]        return true; // Moblar diğer moblarla çarpışmasın[BR][/BR]    }[BR][/BR]    return false;[BR][/BR]}


Dikkat Edilmesi Gerekenler
Bu tarz değişiklikler, sunucu performansını ve dengesini etkileyebileceğinden dikkatli yapılmalıdır. Özellikle db_core ve game_core ile entegre çalışan sistemlerde, çarpışma kontrolünün kaldırılması başka mekanizmalarda sorunlara yol açabilir. Bu yüzden test sunucusu üzerinde mutlaka deneme yapılmalıdır. Ayrıca, martysama gibi topluluklardan destek alarak bu işlemi güvenli bir şekilde gerçekleştirmek mümkündür.

Python Ara Yüz ile Entegrasyon
Bazı durumlarda, çarpışma kontrolünü tamamen kaldırmak yerine belirli koşullara göre devre dışı bırakmak isteyebilirsiniz. Bu gibi durumlarda py root ve uiscript üzerinden Python GUI tabanlı bir arayüz geliştirip, sunucu ayarlarında bu özelliği açıp kapatabilen bir sistem kurabilirsiniz. Böylece adminler sunucu esnekliğini artırabilir.

Sonuç
Metin2 özel sunucularında moblara takılmayı kaldırmak, özellikle PvP odaklı sunucularda büyük bir fark yaratır. C++ kaynak kodlara müdahale ederek bu özelliği özelleştirmek, hem teknik bilgi gerektirir hem de sunucu deneyimini ciddi anlamda artırabilir. Ancak bu tür değişiklikler dikkatli yapılmalı ve test edilmelidir. Daha fazla bilgi ve örnek sistemler için Metin2Lobby sitesini takip etmeye devam edin.


Metin2 Server Development Series: [C++]Stop Collision with Mobs

In Metin2 private servers, developers constantly add new systems while also improving existing ones to enhance the gameplay experience. In this context, preventing players from colliding with mobs significantly benefits high-level PvP servers. By avoiding player-stuck scenarios with mobs, a fluid combat environment is created, allowing for strategic movements. In this article, we will explain step by step how to disable mob collision in Metin2 C++ source code.

Metin2 Server Architecture and Collision System
Metin2 is built on a client-server architecture. The physical interactions between entities like players and NPCs (mobs) are managed by core systems located on the server side. These systems are typically written in C++ within the game server source code. When a player attempts to move onto a mob, the server checks for collision and grants or denies movement accordingly.

Why Should You Disable Mob Collision?
Player-mob collisions can create significant disadvantages, especially in busy PvP areas. For example, during combat, a player trying to get behind an enemy may be blocked by an intervening mob, causing delays or loss of positioning. This greatly affects the gaming experience. Therefore, developers aim to provide fairer and more fluid PvP by disabling mob collision.

Making Changes in C++ Source Code
To disable mob collision in Metin2 private servers, modifications are usually made to collision-related functions found in files such as game/src/char/char.cpp. Functions like IsBlock or CanMoveTo are often targeted for this purpose.

As an example, you can modify a function in character.cpp as follows:

Kod:
bool CHARACTER::CanMoveTo(int x, int y) const {[BR][/BR]    if (m_pkMobData && m_pkMobData->GetType() == CHAR_TYPE_MOB) {[BR][/BR]        return true; // Mobs shouldn't collide with other mobs[BR][/BR]    }[BR][/BR]    return false;[BR][/BR]}


Points to Consider
Such modifications can affect server performance and balance, so they must be done carefully. In systems integrated with db_core and game_core, disabling collision checks might cause issues in other mechanisms. Therefore, testing on a test server is essential. Additionally, support from communities like martysama can help ensure these changes are implemented safely.

Integration with Python UI
In some cases, instead of completely disabling collision, you may want to allow it conditionally. In such situations, you can develop a Python-based GUI using py root and uiscript to create a toggleable feature in server settings. This allows admins to flexibly control this functionality.

Conclusion
Disabling mob collision in Metin2 private servers can make a significant difference, especially for PvP-focused servers. Customizing this feature through C++ source code requires technical knowledge but can substantially improve the server experience. However, these changes must be applied carefully and tested thoroughly. For more information and sample systems, continue following Metin2Lobby.
 

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

Benzer konular Forum Tarih
Admin C++ / C# / Python

Benzer konular

Geri
Üst Alt