[ C++ ] - Güvenli Bölge Icerisinde Moblara Takilmadan ilerleme

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0

CLIENTSOURCE / GAMELIB / ...

[TABLE=full][TR][TD]ActorInstance.h - Açılır[/TD][/TR][/TABLE]

[TABLE=full][TR][TD] [/TD][TD] [/TD][/TR][/TABLE]

[TABLE=full][TR][TD]ActorInstanceCollisionDetection.cpp - Açılır[/TD][/TR][/TABLE]
[TABLE=full][TR][TD] [/TD][TD] [/TD][/TR][TR][TD] [/TD][TD] [/TD][/TR][/TABLE]

Kaynak: Kori-Dev




0318_091902.jpg




0318_091810.jpg

Metin2 Oyununda Güvenli Bölge İçerisinde Moblara Takılmadan Hareket Etme Sistemi

Metin2 özel sunucularında geliştirilen güvenlik sistemleri, oyuncuların oyun deneyimini ciddi anlamda etkilemektedir. Bu bağlamda, oyuncuların belirli bölgelerde moblar tarafından saldırıya uğramamasını sağlayan 'güvenli bölge' sistemleri büyük önem taşır. Bu yazıda, C++ tabanlı Metin2 oyun motoru üzerinde güvenli bölgelerde moblara takılmadan ilerleme mekanizmasını nasıl geliştirebileceğimizi detaylıca ele alacağız.

Güvenli Bölge Nedir?
Metin2 oyununda, oyuncuların moblarla savaşmadığı, PvP yapılmasının da engellendiği alanlara 'güvenli bölge' denir. Bu bölgeler genellikle şehirlerdir ve oyuncuların dinlenmesi, ticaret yapması ve ekipmanlarını düzenlemesi için tasarlanmıştır. Bu bölgelerde moblar doğrudan oyuncuya saldıramaz veya takip edemez. Bu işlem, oyun motorunun AI ve pathfinding sistemleri üzerinden kontrol edilir.

Mobların Takip Mekanizması
Metin2 oyununda moblar, oyunculara saldırabilmek veya takip edebilmek için belirli AI kurallarına göre çalışır. Bu kurallar genellikle C++ kodları ile tanımlanır. Mobların bir oyuncuyu takip edebilmesi için o bölgenin güvenli bölge olup olmadığına dair kontrol yapılması gerekir. Bu kontrol, mob_manager.cpp veya benzeri dosyalarda yapılır.

Kodlama Adımları
Öncelikle, güvenli bölgeleri tanımlamak için map_info.txt veya locale_server.txt gibi dosyalarda gerekli ayarlamalar yapılır. Daha sonra, C++ kodlarında bu bölgelerin kontrolünü yapan fonksiyon yazılır:

Kod:
[B]bool IsSafeArea(int mapIndex, int x, int y)[/B]{[BR][/BR]    // Burada güvenli bölge koordinatları kontrol edilir[BR][/BR]    if ([B]mapIndex == MAP_INDEX_AYRAN[/B]){[BR][/BR]        if ([B]x > SAFE_X_MIN && x < SAFE_X_MAX && y > SAFE_Y_MIN && y < SAFE_Y_MAX[/B]) {[BR][/BR]            return [B]true[/B];[BR][/BR]        }[BR][/BR]    }[BR][/BR]    return [B]false[/B];[BR][/BR]}


Mob AI Fonksiyonuna Entegrasyon
Mobların takip sistemi, genellikle FollowTarget adlı fonksiyon ile sağlanır. Bu fonksiyonun başında, mobun bulunduğu alanın güvenli bölge olup olmadığını kontrol eden bir koşul eklenmelidir:

Kod:
[B]void FollowTarget(LPCHARACTER ch, LPCHARACTER victim)[/B]{[BR][/BR]    if ([B]IsSafeArea(ch->GetMapIndex(), ch->GetX(), ch->GetY()[/B])){[BR][/BR]        return; // Takip işlemi iptal edilir[BR][/BR]    }[BR][/BR]    // Normal takip işlemleri burada devam eder[BR][/BR]}


Oyun Sunucusunda Test Etme
Kodun doğru çalışıp çalışmadığını test etmek için lokal bir Metin2 sunucusu üzerinde değişikliklerin derlenip yüklenmesi gerekir. Game server yeniden başlatıldıktan sonra güvenli bölgede mobların oyuncuları takip etmediğini gözlemlemek mümkündür. Ayrıca, loglama işlemleri ile bu durum daha detaylı izlenebilir.

Sistem Geliştirmeye Devam
Bu sistem, daha gelişmiş seviyelerde Python scriptlerle birlikte entegre edilerek GUI üzerinden yönetim paneli aracılığıyla da yönetilebilir. Ancak temel mimari C++ tabanlıdır ve güvenli bölge mantığı bu şekilde kurulmalıdır. Metin2Lobby gibi platformlar, bu konuda yazılımcılara geniş kaynak sunmaktadır.


Moving Safely in Safe Zones without Getting Attacked by Mobs in Metin2

In Metin2 private servers, security systems significantly impact player experience. In this context, 'safe zones', where players are protected from mob attacks, play a critical role. This article will explain in detail how to implement a mechanism that allows characters to move freely within safe areas without being targeted by mobs, using C++ based on the Metin2 game engine.

What Are Safe Zones?
In Metin2, areas where players cannot be attacked by mobs or engage in PvP are called 'safe zones'. These areas are typically cities and designed for resting, trading, and organizing equipment. Mobs are prevented from directly attacking or following players in these zones. This is controlled through the game's AI and pathfinding systems.

Mechanism of Mob Targeting
In Metin2, mobs operate according to specific AI rules to attack or follow players. These rules are generally defined with C++ code. To ensure mobs do not pursue players in safe zones, a check must be implemented in files like mob_manager.cpp.

Coding Steps
Firstly, safe zones are defined in files such as map_info.txt or locale_server.txt. Then, a function in C++ checks whether a given area is safe:

Kod:
[B]bool IsSafeArea(int mapIndex, int x, int y)[/B]{[BR][/BR]    // Checks if the coordinates are within a safe zone[BR][/BR]    if ([B]mapIndex == MAP_INDEX_AYRAN[/B]){[BR][/BR]        if ([B]x > SAFE_X_MIN && x < SAFE_X_MAX && y > SAFE_Y_MIN && y < SAFE_Y_MAX[/B]) {[BR][/BR]            return [B]true[/B];[BR][/BR]        }[BR][/BR]    }[BR][/BR]    return [B]false[/B];[BR][/BR]}


Integration into Mob AI Functions
The mob following system is usually handled by a function named FollowTarget. At the beginning of this function, a check should be added to determine if the mob is in a safe area:

Kod:
[B]void FollowTarget(LPCHARACTER ch, LPCHARACTER victim)[/B]{[BR][/BR]    if ([B]IsSafeArea(ch->GetMapIndex(), ch->GetX(), ch->GetY()[/B])){[BR][/BR]        return; // Cancel following behavior[BR][/BR]    }[BR][/BR]    // Normal following continues here[BR][/BR]}


Testing on Game Server
To test whether the code works correctly, changes must be compiled and loaded onto a local Metin2 server. After restarting the game server, you can observe that mobs do not follow players in safe zones. Additionally, logging can provide more detailed tracking of this behavior.

Continuing System Development
This system can be extended at advanced levels using Python scripts integrated with GUI-based management panels. However, the underlying architecture relies on C++, and the safe zone logic must be built accordingly. Platforms like Metin2Lobby offer extensive resources for developers in this regard.
 

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

Benzer konular

Geri
Üst Alt