Duello Mapi için engellemeler c++

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
forumda paylaşım yapanlardan faydalandığım için bende paylaşım yapmak istedim.
alıntıdır.test edildi.


bi dipnot:
- Düelloda olmayan oyuncularla çarpışma olmaz (geçerli) (düello katılımcıları için geçerli değildir)

bunu yaptığınızda hile sadece 1v1 wsde işler.çünkü diğer karakterler korumalıdır.
hileli biri varsada oyuncu ws atmaz.








Kod:
Bir düello sırasında engellenen işlevler: - Düello sırasında arkadaşlık isteklerini engeller. - Bir düello sırasında grup isteklerini engeller. - Düello sırasında lonca isteklerini engeller. - Bir düello sırasında eylemi engeller. - Bir düello sırasında duyguların kullanımını engeller. - Bir düello sırasında ekipman değişimini engeller. Bir düello haritasındayken engellenen işlevler: - Bir şaman, sadece kendini parlatabilir. - Düello haritasındayken lonca isteklerini engeller. - Dönüşüm toplarının kullanımını engeller. - Evcil hayvanların kullanımını engeller. - Bineklerin kullanımını engeller. - PK modunun değiştirilmesini engeller. Bir düello haritasında etkinleştirilen işlevler: - Düelloda olmayan oyuncularla çarpışma olmaz (geçerli) (düello katılımcıları için geçerli değildir) - Negatif bonuslar (örneğin zehirlenme) düello sonunda kaldırılır. - Düello katılımcılarının yaşamları tamamlandıktan sonra yenilenecektir. - Düello haritalarında imparatorluk seçimi yok.

Kod:
char.cpp -> add to the final of the file char.cpp: bool CHARACTER::IS_PVP_MAP(long MapIndex) {     switch (MapIndex)     {         case 63: //Add your map indexes here         case 61:         case 152:         case 217:             return true;             break;         default:             return false;             break;     } } char.h -> add after int GetSyncHackCount() { return m_iSyncHackCount; } char.h: bool IS_PVP_MAP(long MapIndex);



update
70926_b97e3bc079c1dad6081369af9244ddbf.png
70927_c962962b196071a77852828acca3bd90.png

Duello Mapi İçin C++ Kullanarak Engellemeler Nasıl Eklenir?


Metin2 özel sunucularında Duello haritası, oyuncuların birbirleriyle birebir mücadele edebileceği özel bir PvP alanı olarak kullanılır. Ancak bu haritada istenmeyen durumları önlemek amacıyla bazı engelleme sistemlerine ihtiyaç duyulabilir. Bu yazıda, C++ dilinde geliştirilmiş sistemler üzerinden Duello Mapi için engelleme mekanizmalarının nasıl ekleneceğini detaylıca inceleyeceğiz.

Engelleme Sistemi Nedir?

Engelleme sistemleri, oyuncuların belirli haritalarda veya oyun içi eylemlerde kısıtlamalarla karşılaşmasını sağlar. Örneğin, bir oyuncu Duello haritasında belli itemleri kullanamaz ya da belli yetenekleri aktif edemez. Bu tür engellemeler, oyun dengesini korumak ve adil bir PvP ortamı oluşturmak açısından kritik öneme sahiptir.

C++ Kaynak Kodlarında Engelleme Ekleme Adımları

Öncelikle, game core dosyasında yer alan ana kaynak kodlara müdahale etmemiz gerekir. Duello haritasında geçerli olacak engelleme kuralları, character.cpp veya char_skill.cpp gibi dosyalarda tanımlanabilir. Bu dosyalar, karakterin yeteneklerini ve harita bazlı etkileşimlerini kontrol eder.

Aşağıda örnek bir engelleme fonksiyonu örneği verilmiştir:

Kod:
[B]bool CHARACTER::CanUseSkillInMap(int skill_vnum) const {[/B][BR][/BR]    [B]if (GetMapIndex() == DUEL_MAP_INDEX && IsSkillBlocked(skill_vnum)) {[/B][BR][/BR]        [B]ChatPacket(CHAT_TYPE_INFO, 'Bu haritada bu yetenek kullanilamaz!');[/B][BR][/BR]        [B]return false;[/B][BR][/BR]    [B]}[/B][BR][/BR]    [B]return true;[/B][BR][/BR][B]}[/B]


Yukarıdaki kod bloğu, belirli bir yeteneğin Duello haritasında kullanımını engeller. DUEL_MAP_INDEX sabiti, Duello haritasının indeks numarasıdır ve constants.h dosyasında tanımlanmalıdır. Benzer şekilde, IsSkillBlocked fonksiyonu ise yeteneğin engellenip engellenmeyeceğini kontrol eder.

Item Kullanımı Engelleme

Benzer şekilde, Duello haritasında belirli item'ların kullanımını da engelleyebilirsiniz. Bunun için item.cpp dosyasında CanUseItemInMap fonksiyonu tanımlanabilir:

Kod:
[B]bool CHARACTER::CanUseItemInMap(int item_vnum) const {[/B][BR][/BR]    [B]if (GetMapIndex() == DUEL_MAP_INDEX && IsItemBlocked(item_vnum)) {[/B][BR][/BR]        [B]ChatPacket(CHAT_TYPE_INFO, 'Bu haritada bu item kullanilamaz!');[/B][BR][/BR]        [B]return false;[/B][BR][/BR]    [B]}[/B][BR][/BR]    [B]return true;[/B][BR][/BR][B]}[/B]


Derleme ve Test İşlemi

Değişiklikleri yaptıktan sonra metin2 compile işlemi yapılmalıdır. Compile sonrası, test sunucusunda değişikliklerin doğru çalışıp çalışmadığı kontrol edilmelidir. Bu aşamada auth ve game server yapılandırmasının doğru yapılması önemlidir.

Sonuç

Duello haritasında engelleme sistemi oluşturmak, Metin2 özel sunucularında deneyim kalitesini artırmak için oldukça faydalıdır. C++ tabanlı geliştirme sayesinde güçlü ve esnek engelleme kuralları uygulanabilir. Bu tür sistemler, PvP oyunlarını daha adil ve dengeli hale getirir. Daha fazla bilgi ve kaynak kod örneği için Metin2Lobby sitesini takip edebilirsiniz.


How to Add Blocking Systems for Duel Map Using C++


The Duel map in Metin2 private servers is used as a special PvP area where players can fight one-on-one. However, to prevent unwanted situations on this map, certain blocking mechanisms may be needed. In this article, we will examine in detail how to add blocking mechanisms for the Duel Map using C++ systems.

What is a Blocking System?

Blocking systems ensure that players face restrictions in specific maps or in-game actions. For instance, a player may not be able to use certain items or activate specific skills on the Duel map. Such blocks are critical in maintaining game balance and creating a fair PvP environment.

Adding Blocks in C++ Source Code

Firstly, we need to modify the main source code files located within the game core. The blocking rules valid on the Duel map can be defined in files such as character.cpp or char_skill.cpp. These files control character skills and map-based interactions.

Below is an example block function:

Kod:
[B]bool CHARACTER::CanUseSkillInMap(int skill_vnum) const {[/B][BR][/BR]    [B]if (GetMapIndex() == DUEL_MAP_INDEX && IsSkillBlocked(skill_vnum)) {[/B][BR][/BR]        [B]ChatPacket(CHAT_TYPE_INFO, 'This skill cannot be used on this map!');[/B][BR][/BR]        [B]return false;[/B][BR][/BR]    [B]}[/B][BR][/BR]    [B]return true;[/B][BR][/BR][B]}[/B]


The above code block prevents the usage of a specific skill on the Duel map. The DUEL_MAP_INDEX constant should be defined in the constants.h file and represents the index number of the Duel map. Similarly, the IsSkillBlocked function checks whether the skill is blocked.

Blocking Item Usage

Likewise, you can also block the use of specific items on the Duel map. To do this, define a CanUseItemInMap function in the item.cpp file:

Kod:
[B]bool CHARACTER::CanUseItemInMap(int item_vnum) const {[/B][BR][/BR]    [B]if (GetMapIndex() == DUEL_MAP_INDEX && IsItemBlocked(item_vnum)) {[/B][BR][/BR]        [B]ChatPacket(CHAT_TYPE_INFO, 'This item cannot be used on this map!');[/B][BR][/BR]        [B]return false;[/B][BR][/BR]    [B]}[/B][BR][/BR]    [B]return true;[/B][BR][/BR][B]}[/B]


Compilation and Testing

After making changes, the metin2 compile process must be performed. After compilation, it should be tested on the test server whether the changes work correctly. At this stage, proper configuration of auth and game server is important.

Conclusion

Creating a blocking system on the Duel map is very beneficial for improving the experience quality in Metin2 private servers. With C++-based development, powerful and flexible blocking rules can be implemented. Such systems make PvP games more fair and balanced. You can follow the Metin2Lobby site for more information and source code examples.
 

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

Geri
Üst Alt