[C++] Check if safebox is open

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

Admin

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

Example how to use function?

[File: root/game.py]

Kod:
if app.ENABLE_CHECK_IF_SAFEBOX_OPEN:             onPressKeyDict[app.DIK_F5]    =lambda:self.BINARY_Check_Safebox()                  if app.ENABLE_CHECK_IF_SAFEBOX_OPEN:         def BINARY_Check_Safebox(self):             import safebox             if safebox.isOpen():                 chat.AppendChat(chat.CHAT_TYPE_INFO,"<<Debug>> Safebox is open!")             else:                 chat.AppendChat(chat.CHAT_TYPE_INFO,"<<Debug>> Safebox is not open!")

Link download:


  • <li data-xf-list-type="ul">



Link virüstotal:


  • <li data-xf-list-type="ul">

C++ ile Metin2 Safebox Kontrolü Nasıl Yapılır?

Metin2 özel sunucularında geliştirme yaparken, oyuncuların güvenli sandıklarını (safebox) açıp açmadığını kontrol etmek oldukça önemli bir özelliktir. Bu kontrol, özellikle güvenlik açısından kritik olan durumlarda, örneğin envanter işlemleri sırasında veya item transferlerinde büyük önem taşır. Bu yazıda, C++ tabanlı bir Metin2 sunucu yapısında, nasıl güvenli sandık açık mı değil mi diye kontrol edebileceğimizi detaylıca ele alacağız.

Safebox Nedir?
Metin2 oyununda 'safebox', oyuncuların değerli eşyalarını güvenli bir şekilde saklayabildikleri bir depolama alanıdır. Oyuncu, sandığı açmadan eşya işlemi gerçekleştiremez. Bu nedenle, sunucu tarafında yapılan işlemlerde, oyuncunun sandığının açık olup olmadığını kontrol etmek büyük bir önem taşır. Aksi takdirde, hile riski doğabilir veya sistemsel hatalar oluşabilir.

C++ İçinde Sandık Açıklığını Kontrol Etme
Metin2 sunucu kaynak kodları genellikle C++ dilinde yazılmıştır. Bu sebeple, güvenli sandık kontrolü için C++ düzeyinde bir fonksiyon yazmamız gerekir. Anahtar fonksiyonlardan biri, oyuncunun hangi pencereyi (window_type) açtığını kontrol eden fonksiyondur. Bu kontrol genellikle 'CInstanceBase' sınıfı üzerinden yapılır.

Örnek Kod Yapısı
Aşağıda, bir oyuncunun güvenli sandığının açık olup olmadığını kontrol eden örnek C++ kodu verilmiştir:

Kod:
[B]bool IsSafeboxOpen(LPCHARACTER ch)[/B][BR][/BR]{[BR][/BR][B]if (!ch)[/B] return false;[BR][/BR][B]int iWindow = ch->GetMyShopWindow();[/B][BR][/BR][B]return iWindow == INVENTORY_WINDOW && ch->IsOpenSafebox();[/B][BR][/BR]}


Dikkat Edilmesi Gereken Hususlar

- Oyuncu karakteri geçerli olmalıdır. Geçersiz bir karakter nesnesi üzerinde işlem yapılamaz.
- 'IsOpenSafebox()' fonksiyonu, karakterin güvenli sandığının açık olup olmadığını belirtir.
- Bu tür kontroller, item transferi, depolama işlemi gibi işlemlerden önce mutlaka yapılmalıdır.

Sunucu Tarafında Güvenlik Arttırımı
Güvenli sandık kontrol mekanizması, sunucu tarafında birçok güvenlik açığını kapatmak için kullanılır. Özellikle PvP sunucularında, oyuncuların sandıklarını açarken başka eylemleri gerçekleştirmeleri engellenmelidir. Bu sayede hile riski azaltılır ve oyun dengesi korunur. C++ seviyesinde bu kontrolü yapmak, sunucu güvenliği açısından kritik öneme sahiptir.

Sonuç
Metin2 özel sunucularında güvenli sandık kontrolü, hem güvenlik hem de kullanıcı deneyimi açısından büyük önem taşır. C++ seviyesinde bu kontrolleri doğru bir şekilde uygulamak, sunucu yöneticilerinin sorumlulukları arasında yer almalıdır. Bu yazıda verilen örnek kod yapısı, geliştiricilerin bu işlemi kolayca entegre etmelerine yardımcı olacaktır.


How to Check if Safebox is Open in C++ for Metin2

When developing private Metin2 servers, checking whether a player has opened their safebox is a crucial feature. This check is especially important in security-critical situations, such as inventory operations or item transfers. In this article, we will detail how to implement safebox status checking within a C++ based Metin2 server structure.

What is Safebox?
In Metin2, 'safebox' is a storage area where players can securely store valuable items. Players cannot perform item operations without opening the box first. Therefore, on the server side, checking whether the player's safebox is open is critical. Otherwise, hacking risks may arise or system errors could occur.

Checking Safebox Status in C++
Metin2 server source codes are typically written in C++. For this reason, we need to write a function at the C++ level to check if the safebox is open. One of the key functions checks which window (window_type) the player has opened, usually done through the 'CInstanceBase' class.

Sample Code Structure
Below is an example C++ code that checks if a player's safebox is currently open:

Kod:
[B]bool IsSafeboxOpen(LPCHARACTER ch)[/B][BR][/BR]{[BR][/BR][B]if (!ch)[/B] return false;[BR][/BR][B]int iWindow = ch->GetMyShopWindow();[/B][BR][/BR][B]return iWindow == INVENTORY_WINDOW && ch->IsOpenSafebox();[/B][BR][/BR]}


Important Considerations[/BR]
- The player character must be valid. Operations cannot be performed on an invalid character object.
- The 'IsOpenSafebox()' function indicates whether the character's safebox is open.
- Such checks must be made before actions like item transfers or storage operations.

Security Enhancement on Server Side
The safebox control mechanism helps close many security loopholes on the server side. Especially in PvP servers, players should be prevented from performing other actions while their safebox is open. This reduces cheating risks and maintains game balance. Implementing such checks at the C++ level is critical for server security.

Conclusion
Checking safebox status in Metin2 private servers is vital for both security and user experience. Properly implementing these controls at the C++ level is among the responsibilities of server administrators. The sample code provided in this article will help developers integrate this functionality easily.
 

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

Benzer konular

Geri
Üst Alt