//edit
Metin2 özel sunucularında geliştirme yaparken birçok geliştirici, oyuncuların itemleri offline shop sistemine koyamaması gibi belirli sınırlamalarla karşılaşabilir. Bu durum genellikle güvenlik veya dengeli oyun ortamı sağlamak amacıyla yapılandırılır. Ancak bazı özel sunucularda bu tür engellerin kaldırılması istenebilir. Bu yazıda, 'kilitli itemi offline shop pazarına koyma engeli' konusunu detaylı olarak ele alacağız.
Metin2 oyununda offline shop sistemi, oyuncuların internete bağlı olmadan item satabilmesine olanak tanır. Bu sistem genellikle PvP sunucularında aktif olarak kullanılır. Ancak bazı itemlerin kilitli olması sebebiyle bu pazarda satışa sunulamaması gibi bir durum söz konusu olabilir. Bu kilit, genellikle oyunun içeriğinde sabitlenmiş olup, geliştiricilerin müdahale edebileceği C++ kaynak kodları veya Python betikleri üzerinden ayarlanabilir.
Offline shop sisteminde item kilit mekanizması, genellikle itemin 'wearing' statüsüne veya ID'sine göre kontrol edilir. Bu kontrol, game server üzerindeki C++ kodlarında yer alır. Eğer bir item, belirli bir kategoriye giriyorsa ya da belirli bir statüye sahipse, sistem tarafından otomatik olarak 'kilitli' olarak tanımlanabilir. Bu durumda oyuncu, bu itemi offline shop'a koymaya çalıştığında bir hata mesajı alır.
Bu tür kontrolleri kaldırmak isteyen geliştiriciler, öncelikle game_src dosyalarında yer alan ilgili fonksiyonları incelemelidir. Özellikle 'CItem::CanDropToGround' veya 'CItem::IsAntiFlag' gibi fonksiyonlar bu tür kontrollerde kilitleyici rol oynar. Bu fonksiyonlar değiştirilerek veya bypass edilerek, kilitli itemlerin offline shop sistemine girmesi sağlanabilir.
Python tarafında ise, GUI betiklerinde yer alan 'item.IsAntiFlag' gibi kontroller de göz ardı edilmemelidir. PyRoot ve UIScript dosyalarında yapılan ayarlamalar, istemci tarafında da bu tür engelleri etkileyebilir. Geliştiriciler, hem server-side hem de client-side kontrolleri gözden geçirerek, tam anlamıyla bu sınırlamayı kaldırabilirler.
Ayrıca, DB Core üzerinde de bu tür itemların özel flag'lerine göre filtreleme yapılabilir. Örneğin, bir itemin AntiFlags kısmında 'OFFLINE_SHOP_DISABLE' gibi bir değer varsa, bu itemin satışa sunulması engellenir. Bu veri tabanı düzeyinde yapılan ayarlamalar, hem güvenliği artırır hem de sunucu yöneticilerinin daha fazla kontrol sahibi olmasını sağlar.
Metin2 Lobby platformu olarak, bu tür teknik detayları paylaşarak topluluğun gelişmesine katkıda bulunuyoruz. C++ sistemler, Python GUI yapıları ve DB Core üzerinde yapılacak küçük değişikliklerle, Metin2 özel sunucularınızda daha özgür ve esnek sistemler kurabilirsiniz. Dilerseniz bu konularla ilgili daha fazla kaynak ve örnek kod parçasını sitemizde bulabilirsiniz.
While developing on Metin2 private servers, many developers may encounter certain restrictions such as preventing players from putting locked items into the offline shop system. This situation is usually configured for security reasons or to maintain a balanced gameplay environment. However, on some private servers, removing such restrictions might be desired. In this article, we will discuss the topic of 'locking items from being placed in the offline shop market' in detail.
The offline shop system in Metin2 allows players to sell items without being connected to the internet. This system is often actively used on PvP servers. However, there may be cases where certain items cannot be sold in this market due to their locked status. Such locks are typically hardcoded within the game content and can be adjusted through C++ source codes or Python scripts by developers.
In the offline shop system, the locking mechanism of items is usually checked based on the item's 'wearing' status or its ID. This check occurs in the C++ code located on the game server. If an item belongs to a specific category or has a particular status, it might automatically be labeled as 'locked'. In this case, when a player attempts to place the item in the offline shop, they receive an error message.
Developers who wish to remove these checks should first examine the relevant functions located in the game_src files. Functions like 'CItem::CanDropToGround' or 'CItem::IsAntiFlag' play a key role in such controls. By modifying or bypassing these functions, developers can allow locked items to enter the offline shop system.
On the Python side, checks like 'item.IsAntiFlag' found in GUI scripts should also not be overlooked. Adjustments made in PyRoot and UIScript files can affect these types of restrictions on the client side as well. Developers can fully remove such limitations by reviewing both server-side and client-side checks.
Additionally, filtering based on special flags of items can also be implemented at the database level. For example, if an item has a value such as 'OFFLINE_SHOP_DISABLE' in its AntiFlags section, selling that item will be blocked. These database-level adjustments enhance security and allow server administrators more control over the system.
As the Metin2 Lobby platform, we contribute to community growth by sharing such technical details. With small modifications in C++ systems, Python GUI structures, and DB Core, you can establish more flexible and free systems on your Metin2 private servers. You can find more resources and example code snippets related to these topics on our website.
