Markette Satılmayacak İtemleri Belirleme 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 38

Admin

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

Markette Satılmayacak İtemleri Belirleme C++

Metin2 özel sunucularında güvenliği ve deneyimi artırmak adına bazı eşyaların markette satışını engellemek büyük önem taşır. Bu tür kontroller, C++ tabanlı sunucu tarafında geliştirilerek oyuncuların hileli davranışlarını önlemeye yardımcı olur. Bu yazıda, C++ kullanarak nasıl markette satış yapılmaması gereken itemleri belirleyebileceğimizi adım adım inceleyeceğiz.

Neden Satış Engellenmeli?

Oyun içinde özel veya sınırlı kullanım için tasarlanan eşyaların satışa sunulması, oyun içi ekonomiyi bozabilir. Örneğin, turnuva ödülleri, sınırlı süreli itemler ya da özel sunucuya özel eşyalar gibi nesnelerin satışa çıkması istenmez. Bu durumda, C++ kod seviyesinde bir filtreleme sistemi oluşturmak gerekir.

Sunucu Tarafında Item Kontrolü

Öncelikle, itemlerin ID’lerine göre bir kontrol mekanizması kurmalısınız. game/core yapısı üzerinde çalışıyorsanız, src/client_src ve src/game_src klasörlerindeki fonksiyonlar üzerinden satış kontrolünü yapabilirsiniz. Özellikle packet_process.cpp veya benzeri dosyalarda yer alan market_sell_item fonksiyonuna müdahale ederek, belirli ID aralıklarındaki veya özel item ID’lerinin satışını engelleyebilirsiniz.

Kod Örneği

Aşağıda örnek bir kontrol fonksiyonu görebilirsiniz:

Kod:
[COLOR=#9365b8]int CheckItemSellable(DWORD item_vnum)[BR][/BR]{[BR][/BR]    // Satışa kapalı item ID'leri tanımla[BR][/BR]    static const DWORD blocked_items[*] = { 50001, 50007, 50015 };[BR][/BR][BR][/BR]    for (int i = 0; i < sizeof(blocked_items) / sizeof(DWORD); i++)[BR][/BR]    {[BR][/BR]        if (item_vnum == blocked_items[i])[BR][/BR]        {[BR][/BR]            return 0; // Satış engellendi[BR][/BR]        }[BR][/BR]    }[BR][/BR][BR][/BR]    return 1; // Satışa açık[BR][/BR]}[/COLOR]


Bu fonksiyonu, satış işlemi başlatıldığında çağırarak, satışın devam edip etmemesini kontrol edebilirsiniz. Ayrıca, DB Core üzerinden de benzer kontroller yapılabilir. auth_server ile senkronize çalışan yapılar sayesinde global olarak item filtreleme yapılabilir.

Python Script Entegrasyonu

C++ ile birlikte Python kullanıyorsanız, py_root klasöründe yer alan uiscript dosyaları üzerinden de istemci tarafında uyarı mesajları gösterebilirsiniz. Örneğin, PyGUI kullanarak, satış engelli item seçildiğinde bir popup kutusu açılabilir.

Sonuç

Metin2 özel sunucularında güvenliği artırmak ve oyun içi dengeleri korumak adına, C++ seviyesinde item filtreleme işlemleri yapmak oldukça faydalıdır. Satış engelli item listesi dinamik olarak genişletilebilir ve martysama gibi kaynaklardan alınan bilgilerle daha da optimize edilebilir. Bu tür sistemler, Metin2Dev sürecinde önemli bir rol oynar ve sunucunuzun kalitesini artırır.


Determining Items That Should Not Be Sold in the Market with C++

In Metin2 private servers, blocking certain items from being sold on the market is crucial for enhancing security and gameplay experience. These controls are developed at the C++ server-side level to help prevent players from engaging in fraudulent activities. In this article, we will examine step by step how to define items that should not be sold in the market using C++.

Why Should Sales Be Blocked?

Selling special or limited-use items within the game can disrupt the in-game economy. For example, tournament rewards, limited-time items, or exclusive server-specific items should not be allowed for sale. Therefore, a filtering system must be implemented at the C++ code level.

Item Control on the Server Side

Firstly, you need to establish a control mechanism based on item IDs. If you are working on the game/core structure, you can perform the sale control through functions located in src/client_src and src/game_src folders. Particularly in files like packet_process.cpp or similar, you can intervene in the market_sell_item function to block sales of specific ID ranges or custom item IDs.

Code Example

Here is an example control function:

Kod:
[COLOR=#9365b8]int CheckItemSellable(DWORD item_vnum)[BR][/BR]{[BR][/BR]    // Define non-sellable item IDs[BR][/BR]    static const DWORD blocked_items[*] = { 50001, 50007, 50015 };[BR][/BR][BR][/BR]    for (int i = 0; i < sizeof(blocked_items) / sizeof(DWORD); i++)[BR][/BR]    {[BR][/BR]        if (item_vnum == blocked_items[i])[BR][/BR]        {[BR][/BR]            return 0; // Sale blocked[BR][/BR]        }[BR][/BR]    }[BR][/BR][BR][/BR]    return 1; // Sellable[BR][/BR]}[/COLOR]


By calling this function when initiating a sale, you can determine whether the transaction should proceed. Additionally, similar checks can be performed via the DB Core. Structures synchronized with the auth_server allow for global item filtering.

Python Script Integration

If you are using Python alongside C++, you can display warning messages on the client side through uiscript files located in the py_root folder. For instance, with PyGUI, a popup window can appear when a non-sellable item is selected.

Conclusion

To enhance security and maintain in-game balance in Metin2 private servers, implementing item filtering at the C++ level is highly beneficial. The list of non-sellable items can be dynamically expanded and further optimized using information obtained from sources such as martysama. Such systems play an important role during the Metin2Dev process and improve the quality of your server.
 

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

Geri
Üst Alt