Offline shop Scaleli kuşak'ta item kopyalama Fixi

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Cümleten Selamun aleyküm
Bugun fixini @ ; paylaşmıştı fakat o eski kuşak sistemi içindi.

Direk fixe geçiyorum

For @ ;

char.h açılır

Aratılır

Kod:
boolisSashOpened(bool bCombination) {return bCombination ? m_bSashCombination : m_bSashAbsorption;}

üzerine eklenir

Kod:
boolIsSashCombinationOpen() const{return (m_bSashCombination?true:false);} boolIsSashAbsorptionOpen() const{return (m_bSashAbsorption?true:false);}

cmd_general.cpp açılır aratılır

Kod:
ACMD(do_open_offline_shop)

kobluğunun içinede tekrar aratılır

Kod:
if (ch->IsCubeOpen()) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bu Pencerede Offline Shop Acilamaz")); return; }

Altına eklenir

Kod:
if (ch->IsSashCombinationOpen()) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Kombinasyon penceresi acik")); return; } if (ch->IsSashAbsorptionOpen()) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Emis penceresi acik")); return; }

char.cpp açılır aratılır

Kod:
if (g_bEnableEmpireLimit) { if (GetEmpire() == 1 && (GetMapIndex() == 41 || GetMapIndex() == 21)) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("kendi koyuna gider misin?")); return; } else if (GetEmpire() == 2 && (GetMapIndex() == 1 || GetMapIndex() == 41)) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("kendi koyuna gider misin")); return; } else if (GetEmpire() == 3 && (GetMapIndex() == 1 || GetMapIndex() == 21)) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("kendi koyuna gider misin")); return; } }

altına eklenir

Kod:
if (IsSashCombinationOpen() || IsSashAbsorptionOpen()) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bu Pencerede Offline Shop Acilamaz")); return; }

kG2vAm.jpg


BvV2Z9.jpg


o0L7A2.jpg


pX7Pgm.jpg


NlyEq5.jpg

Offline Shop Scaleli Kuşak'ta Item Kopyalama Fixi


Metin2 özel sunucularında geliştirme yaparken karşılaşılan en sık rastlanan güvenlik açıklarından birisi olan 'item kopyalama' hatası, özellikle offline shop sistemlerinde büyük sorunlara yol açabilmektedir. Bu yazıda, scaleli kuşak sistemlerinde ortaya çıkabilen offline shop üzerinden item kopyalama sorununu detaylıca ele alacağız ve bu hatayı düzeltmek için gerekli adımları açıklayacağız.

Item Kopyalama Nedir?
Item kopyalama, oyuncuların yasadışı yollarla aynı eşyadan birden fazla elde etmesiyle oluşan bir hata türüdür. Özellikle offline shop gibi sistemlerde, eşya transferi sırasında kontrol mekanizmalarının yetersiz olması sebebiyle bu durum oluşabilmektedir. Eğer doğru şekilde engellenmezse, sunucu ekonomisini ciddi anlamda bozabilir.

Scaleli Kuşak Sistemi Nedir?
Metin2 sistemlerinde, karakterlerin belirli seviyelere göre farklı kuşaklara sahip olmaları için geliştirilmiş sistemlerdir. Scaleli kuşaklar sayesinde, düşük seviye karakterlerle yüksek seviye karakterlerin bir arada oynaması mümkün hale gelir. Ancak bu sistemlerde, özellikle eşya takası ve offline shop işlemleri sırasında güvenlik açıkları doğabilmektedir.

Offline Shop Sistemi Nasıl Çalışır?
Offline shop, oyuncuların internetten kopukken dahi eşyalarını diğer oyunculara satabilmesini sağlayan bir özelliktir. Bu sistemde, oyuncu bir sandık açar ve eşyalarını burada sergiler. Oyuncu offline iken bile satış işlemi gerçekleşebilir. Ancak bu sistem, item kopyalama gibi güvenlik açıklarına karşı hassas bir yapıdadır.

Fix Uygulaması ve Kaynak Kod Değişiklikleri
Bu hatayı çözmek için öncelikle game server tarafında yapılan kontrol mekanizmalarını gözden geçirmek gerekir. Öncelikle, offline shop'a eşya konulduğunda, eşyanın orijinal olarak envanterden silinip silinmediğini kontrol eden fonksiyonlara odaklanmalıyız. Bu kontrolü sağlamak için C++ dilinde yazılmış olan server source code üzerinde değişiklik yapılması gerekir.

Ayrıca, eşya kopyalama sürecinde auth server ile game server arasındaki veri senkronizasyonu da önemli bir detaydır. Burada veri tabanı (db) seviyesinde yapılacak kontrollerle, her eşyanın benzersiz kimliği (item_id) üzerinden izlenmesi sağlanmalıdır. Bu sayede, bir eşyanın birden fazla kez aktif olarak kullanılmaması garanti altına alınabilir.

Python GUI ve Uiscript Kullanımı
Client tarafında uiscript dosyaları ve py root üzerinde yapılan düzenlemelerle, kullanıcı arayüzünden gelen istekler daha güvenli hale getirilebilir. Python GUI sistemleri ile de offline shop menüsüne özel kontroller entegre edilebilir. Örneğin, bir eşya tekrar tekrar konulmaya çalışıldığında, arayüzün bunu engellemesi sağlanabilir.

Sunucu Tarafında Güvenlik Arttırımı
Sunucu tarafında, her offline işlem sonrasında log tutulması önemlidir. Bu loglar sayesinde, şüpheli aktiviteler daha kolay tespit edilebilir. Ayrıca, martysama gibi sistemlerle entegre çalışan güvenlik modülleri, bu tür saldırıları önceden tespit edebilir ve engelleyebilir.

Sonuç
Offline shop sisteminde scaleli kuşaklarda ortaya çıkan item kopyalama hatası, hem client hem de server tarafında yapılacak kontrollerle çözülebilir. Bu işlemde source edit, compile, db core gibi teknik bilgilerin doğru kullanılması büyük rol oynar. Sunucu güvenliğini arttırmak için, düzenli olarak core güncellemeleri yapılmalı ve testler yapılmalıdır. Metin2 Lobby olarak, bu tür güvenlik açıklarını önlemek adına sürekli gelişmeler yapmaktayız.


Offline Shop Item Duplication Fix for Scaled Belt System


One of the most common security vulnerabilities encountered during Metin2 private server development is the 'item duplication' bug, particularly on offline shop systems, which can cause significant problems. In this article, we will thoroughly discuss the item duplication issue that can arise from offline shops within the scaled belt systems and explain the steps required to fix this bug.

What is Item Duplication?
Item duplication refers to a type of exploit where players illegally obtain multiple copies of the same item. In systems like offline shops, this can occur due to insufficient control mechanisms during item transfers. If not properly prevented, it can seriously disrupt the game economy.

What is the Scaled Belt System?
In Metin2 systems, characters may belong to different belts depending on their level. This system allows low-level and high-level characters to play together. However, in such systems, especially during item trading and offline shop transactions, security vulnerabilities can emerge.

How Does the Offline Shop System Work?
The offline shop allows players to sell items to other players even when they are disconnected from the game. Players open a shop box and display their items inside. Sales can still occur while the player is offline. However, this system is vulnerable to exploits such as item duplication.

Fix Implementation and Source Code Modifications
To resolve this issue, it's essential to review the control mechanisms implemented on the game server. First, we need to focus on functions that ensure the original item is removed from the inventory when placed into the offline shop. Modifications must be made to the C++ based server source code.

Additionally, data synchronization between the auth server and game server during the duplication process is critical. By implementing checks at the database (db) level, each item's unique ID (item_id) should be tracked to ensure no item is used more than once.

Using Python GUI and Uiscript
On the client side, adjustments to uiscript files and py root can secure incoming requests from the user interface. With Python GUI systems, special checks can be integrated into the offline shop menu. For example, attempts to place the same item repeatedly can be blocked by the interface.

Server-Side Security Enhancements
It’s important to maintain logs after every offline transaction on the server side. These logs help detect suspicious activities more easily. Additionally, security modules integrated with systems like martysama can detect and prevent such attacks in advance.

Conclusion
The item duplication bug occurring in offline shops within scaled belt systems can be resolved through checks on both the client and server sides. Proper use of technical knowledge such as source edit, compile, and db core plays a crucial role in this process. To enhance server security, regular core updates and testing should be performed. At Metin2 Lobby, we continuously develop improvements to prevent these types of security vulnerabilities.
 

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

Benzer konular

Geri
Üst Alt