[C++] Agresif Item Düşürme Dupe Fix

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

Admin

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

Bugün ilk kimin akıl edipte denediğini merak ettiğim, item kopyalamaya sebebiyet veren bir açığın fixini paylaşacağım.

Alıntıdır, bu fix ve dupenin anlatımı için Metin2Downloads'dan Yuma'ya teşekkürler.

Nedir Bu Açık ?

Eski tarzda bir sunucu sahibiyseniz muhtemelen zalim karakterlerden item düşmesini ( item drop penalty ) kullanıyorsunuzdur, dupe tam olarak bununla alakalı kabaca nasıl yapıldığını anlatayım ;

Nasıl Yapılır ?

1- Negatif sıralamaya ( Zalim, Hileli vs. ) düşün ve ışınlanma yüzüğüne tıklayıp belirli bir haritanın üstünde tıkladığınızda hemen ışınlanacak şekilde hazırda bekleyin.
2- Karakterin slotlara veya başka bir karaktere ölmesine izin verin.
3- Karakter öldüğü ve itemi düşürdüğü milisaniyede kendinizi başka bir yere ışınlayın. ( Çok hızlı olmalısınız, bir kaç denemeye ihtiyaç olabilir. )
4- Eğer dupe sizin için çalışıyorsa hem yerde hemde envanterinizde aynı itemler duruyor olacak.
5- Eşyaları depoya koyup geri çıkartın ( off shop vs. de olabilir ) ve bu kadar artık itemlerinizi kopyalayabilirsiniz.

Nasıl Çözeriz ?

Kısaca, artı basma veya ticaret vs. gibi işlemlerden sonra belirli bir saniyede başka mape ışınlanamama engelini ( portal limit time ) item drop içinde ekleyeceğiz.

İndirme ;


-


Alternatif Çözüm ;

Metin2 Sunucularında C++ ile Agresif Item Düşürme ve Dupelama Sistemini Onarma

Metin2 özel sunucularında geliştirme yaparken, bazı güvenlik açıklarının önüne geçmek büyük önem taşır. Özellikle Agresif Item Düşürme ve Dupelama (Dupe) gibi açıklar, sunucu ekonomisini ciddi şekilde etkileyebilir. Bu yazıda, C++ tabanlı bir Metin2 sunucu üzerinde agresif item düşürme sorununa nasıl çözüm getirebileceğimizi ve dupelama riskini nasıl azaltabileceğimizi detaylı olarak inceleyeceğiz.

Agresif Item Düşürme Nedir?

Agresif item düşürme, oyuncuların karakterlerini bilerek öldürerek veya belli komutlarla eşyaları hızlıca düşürmelerini sağlayan bir haktır. Bu yöntemle, oyuncular ekonomik olarak avantaj sağlayabilir veya sunucuda item yığınları oluşturabilir. Bu durum hem sunucu yönetimi hem de diğer oyuncular için istenmeyen bir durumdur.

Neden Bu Sorunu Çözmek Gereklidir?

Bu tür açıkların düzeltilmesi, sunucunuzun uzun vadeli başarısı için kritiktir. Oyuncuların adil oyun deneyimi yaşamalarını sağlamak, ekonomik dengenin korunmasını sağlamak ve sunucu güvenliğini artırmak açısından bu fix'leri uygulamak gerekir. Ayrıca, sunucu sahipleri olarak bu konularda bilgi sahibi olmak, gelişmiş sistemler geliştirmeye de olanak tanır.

C++ ile Agresif Item Düşürme Fix Uygulaması

C++ tabanlı Metin2 sunucularında agresif item düşürme fixi genellikle game_core üzerinde değişiklik yapılarak sağlanır. Özellikle char_item.cpp ve char_battle.cpp dosyalarında yapılan küçük değişikliklerle bu sorun çözülebilir. Örneğin, bir karakter öldürüldüğünde item düşürme mekanizmasının sadece belirli koşullarda çalışması sağlanabilir. Bunun için öncelikle karakterin PvP modunda olup olmadığını kontrol eden bir fonksiyon yazılır.

Örnek Kod Yapısı:

if (ch->IsPKMode() && ch->GetMapIndex() != NON_PVP_MAP_INDEX) {

//Item düşürme işlemi burada yapılır

} else {

//Item düşürme iptal edilir

}

Dupelama Riskini Azaltmak

Dupelama, aynı itemin birden fazla kez yaratılması anlamına gelir. Bu genellikle item transferi sırasında karşıya geçilen itemin doğru şekilde silinmemesiyle oluşur. C++ seviyesinde item silme fonksiyonlarının doğruluğundan emin olmak ve gerekirse loglama yaparak bu işlemleri takip etmek, dupelama riskini büyük ölçüde azaltabilir.

Aşağıdaki kontroller yapılmalıdır:

- Item silme işlemi tamamlandı mı?
- Transfer sırasında itemin orijinali silinmeden mi yeni bir kopyası yaratıldı?
- Item ID'lerinin doğru şekilde yönetildiğinden emin olun.

Sunucu Performansı ve Güvenlik

Fix uygulamaları sırasında performans kaybı yaşamamak için kodların optimize edilmesi gerekir. Gereksiz fonksiyon çağrılarından kaçınılmalı ve sıklıkla çalışan fonksiyonlarda hafıza sızıntısı riski göz ardı edilmemelidir. Aynı zamanda sunucu loglarında bu işlemler izlenebilir şekilde olmalıdır. Metin2Lobby olarak, C++ sistemlerde güvenlik fixleri hakkında daha fazla bilgiye ulaşabilirsiniz.

Sonuç

Agresif item düşürme ve dupelama gibi güvenlik açıklarını kapatmak, Metin2 özel sunucularında uzun vadeli başarıyı doğrudan etkiler. C++ bilgisiyle bu fixleri doğru şekilde uygulamak, hem oyuncu memnuniyetini artırır hem de sunucu yönetimini kolaylaştırır.


Fixing Aggressive Item Drop and Duplication in Metin2 Servers with C++

When developing Metin2 private servers, it's crucial to address certain security vulnerabilities. Issues like Aggressive Item Dropping and Duplication (Dupe) can severely impact the server economy. In this article, we will examine in detail how to fix aggressive item drop issues and reduce dupe risks on a C++ based Metin2 server.

What is Aggressive Item Dropping?

Aggressive item dropping refers to the practice where players intentionally kill their characters or use specific commands to quickly drop items. This method allows players to gain economic advantages or create item stacks on the server, which is undesirable for both administrators and other players.

Why Is It Important to Fix These Issues?

Addressing these vulnerabilities is critical for the long-term success of your server. Ensuring fair gameplay experiences for players, maintaining economic balance, and enhancing server security all require fixing such exploits. Additionally, being knowledgeable about these topics enables the development of more advanced systems.

Implementing Aggressive Item Drop Fix with C++

On C++ based Metin2 servers, aggressive item drop fixes are usually implemented by modifying the game_core. Changes made in files such as char_item.cpp and char_battle.cpp can resolve the issue. For instance, you can ensure that the item drop mechanism only works under specific conditions when a character dies. To do this, you can write a function that checks whether the character is in PvP mode.

Sample Code Structure:

if (ch->IsPKMode() && ch->GetMapIndex() != NON_PVP_MAP_INDEX) {

//Item drop happens here

} else {

//Item drop is cancelled

}

Reducing Duplication Risks

Duplication means creating multiple copies of the same item. This typically occurs if the original item isn't properly deleted during transfer. Ensuring proper deletion functions at the C++ level and logging these operations can significantly reduce dupe risks.

The following checks should be performed:

- Was the item deletion completed?
- Was a new copy created without deleting the original during transfer?
- Are item IDs being managed correctly?

Server Performance and Security

To avoid performance losses while applying fixes, ensure that code is optimized. Avoid unnecessary function calls and be cautious of memory leaks, especially in frequently executed functions. Server logs should also allow tracking of these operations. Visit Metin2Lobby for more information about security fixes in C++ systems.

Conclusion

Closing security loopholes like aggressive item drops and duplication directly impacts the long-term success of Metin2 private servers. Properly implementing these fixes with C++ knowledge enhances both player satisfaction and server management.
 

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

Benzer konular

Geri
Üst Alt