Arama mesafesi çok sinirime giden bir şeydi bu mesafeyi çoğatır. VIEW_RANGE diye bir şeyden çekiyordu mesafeyi, onu biraz araştırdığımda da enitty_view'de view_range'de kullanıldığını gördüm. Yeni bir Değer atadım olan bi kontrol üstünden olmasın diye.
Eksik görürseniz söylemenizi rica ediyorum eleştiriye açığım.
Bu da 1. Köyler dışında almamayı sağlar normalde aynı mapde değilsen almıyordu sadece 1. köylere sabitledim
Bunda da eleştiriye açığım teşekkürler şimdiden.
Shop Search İçin Ufak Bir Düzenleme
Metin2 Lobby olarak, Metin2 özel sunucu geliştirme konusunda aktif olan tüm geliştiricilerin ihtiyaç duyduğu küçük ama etkili değişikliklerden birini sizlerle paylaşmaya karar verdik. Bu yazıda, Shop Search yani mağaza arama fonksiyonuna getirilebilecek ufak bir düzenlemeyi ele alacağız. Bu düzenleme sayesinde, hem oyuncular hem de geliştiriciler açısından kullanıcı deneyimi artacak.
Neden Shop Search Düzenlemesi?
Metin2 özel sunucularında mağazalar, oyuncuların gerek PvP sistemlerde gerekse diğer aktivitelerde kullanacakları eşyaları satın alabildiği merkezi alanlardır. Ancak büyük sunucularda binlerce item bulunabilir. Bu durumda oyuncuların belirli bir eşyayı bulması oldukça zorlaşabilir. İşte burada devreye Shop Search sistemi girer. Mevcut sistemde genellikle sadece tam adla arama yapılabiliyor. Ancak bizim yapacağımız düzenlemeyle, kelimelerin içeriğinde geçen harflerle bile eşya bulunabilecek.
C++ Tarafında Temel Yapısı
Öncelikle, arama fonksiyonunun game server tarafında nasıl çalıştığını anlamak gerekir. Genellikle bu işlem shop_manager.cpp veya benzeri dosyalarda tanımlanır. Arama fonksiyonu, eşyanın adını veritabanından çeker ve kullanıcıdan gelen metinle karşılaştırır. Biz bu karşılaştırmayı string::find() fonksiyonu ile daha esnek hale getireceğiz. Böylece 'Zulrah' yazıldığında 'Zulrah Snake King Sword' gibi uzun isimler bile bulunabilecek.
Python Tarafında GUI Entegrasyonu
Eğer Py UI kullanıyorsanız, arama kutusu genellikle uiscript[/COORD] üzerinden tanımlanır. Burada EditLine elementi ile kullanıcıdan giriş alınır. Bu veri, py root üzerinden network manager ile sunucuya gönderilir. Biz bu yapıya bir filtreleme mekanizması ekleyerek, arama sonuçlarını anlık olarak ekrana basacağız.
Arama Performansını Artırmak
Geniş sunucularda arama işlemi zaman alabilir. Bu yüzden DB Core tarafında indeksleme önemlidir. Eşya isimlerine göre bir indeks oluşturmak, LIKE sorgularının performansını ciddi anlamda artırır. Ayrıca, aramayı case insensitive yaparak büyük/küçük harf duyarlılığını ortadan kaldırabiliriz.
Martysama Tarzı Geliştirme Yaklaşımı[/COORD]
Martysama gibi gelişmiş sistemlerde, arama fonksiyonu sadece eşya ismiyle sınırlı kalmaz. Seviye, sınıf, slot gibi kriterlerle de filtreleme yapılabilir. Bu tür ekstra özellikler, kullanıcı memnuniyetini ciddi oranda artırır. Biz bu yazıda temele odaklansak da, ileride bu tür gelişmiş filtreleme sistemlerini de ele alacağız.
Sonuç
Shop Search sistemine yapılan bu küçük ama etkili düzenleme, hem kullanıcı deneyimini artırır hem de sunucu yöneticilerinin oyunculara daha iyi hizmet sunmasını sağlar. Metin2 Development dünyasında bu tür küçük geliştirmeler, büyük farklar yaratır. Core seviyesinde yapılan bu tip değişiklikler, uzun vadede sistemin daha stabil ve kullanıcı dostu olmasına yardımcı olur.
A Small Adjustment for Shop Search
Metin2 Lobby brings you one of the small but effective changes needed by all active developers in the Metin2 private server scene. In this article, we will discuss a minor adjustment that can be made to the Shop Search functionality. This modification will improve user experience for both players and developers.
Why Adjust Shop Search?
In Metin2 private servers, shops are central areas where players can purchase items they need for PvP systems and other activities. However, on large servers, thousands of items may exist. Finding a specific item can become very difficult. That’s where the Shop Search system comes into play. In most current systems, only exact name matches work. Our modification allows searching by partial text matches, so typing 'Zulrah' could find 'Zulrah Snake King Sword'.
Basic Structure in C++
Firstly, understanding how the search function works on the game server side is crucial. Usually defined in files like shop_manager.cpp, the search compares the item's name from the database with the user input. We'll enhance this comparison using the string::find() function to allow more flexible matching.
GUI Integration in Python
If you are using Py UI, the search box is usually defined through uiscript. An EditLine element takes user input, which is sent to the server via py root and network manager. We’ll add a filtering mechanism to update results in real-time.
Improving Search Performance
Search operations can take time on larger servers. Therefore, indexing in the DB Core is important. Creating an index based on item names significantly improves the performance of LIKE queries. Additionally, making the search case insensitive removes case sensitivity issues.
Development Approach in Martysama Style
In advanced systems like Martysama, search functions go beyond just item names. Filters based on level, class, slots, etc., are also possible. Such additional features greatly enhance user satisfaction. While we focus on basics here, we will explore such advanced filtering in future content.
Conclusion
This small but effective adjustment to the Shop Search system enhances user experience and helps server administrators provide better service to players. In the world of Metin2 Development, these types of small improvements make significant differences. Changes at the core level help make the system more stable and user-friendly in the long run.
Eksik görürseniz söylemenizi rica ediyorum eleştiriye açığım.
Kod:
// Arat config.h extern int VIEW_BONUS_RANGE; // Altına ekle extern int VIEW_SHOP_RANGE; // Arat config.cpp int VIEW_RANGE = 5000; // Altına ekle int VIEW_SHOP_RANGE = 25000; // Arat input_main.cpp if (1 == quest::CQuestManager::instance().GetEventFlag("enable_shop_search_mesafe")) // Değiştir if (1 == quest::CQuestManager::instance().GetEventFlag("enable_shop_search_mesafe")) { if (DISTANCE_APPROX(ch->GetX() - pkChrShop->GetX(), ch->GetY() - pkChrShop->GetY()) > VIEW_SHOP_RANGE) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("상점과의 거리가 너무 멀어 물건을 살 수 없습니다.")); return; } }
Bu da 1. Köyler dışında almamayı sağlar normalde aynı mapde değilsen almıyordu sadece 1. köylere sabitledim
Bunda da eleştiriye açığım teşekkürler şimdiden.
Kod:
// Arat input_main.cpp if (ch->GetMapIndex() != pkChrShop->GetMapIndex()) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("YOU_CANNOT_BUY_THIS_BECAUSE_NOT_IN_SAME_MAP")); return; } // Değiştir if ((ch->GetMapIndex() != 1) && (ch->GetMapIndex() != 21) && (ch->GetMapIndex() != 41)) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("YOU_CANNOT_BUY_THIS_BECAUSE_NOT_IN_SAME_MAP")); return; }
Shop Search İçin Ufak Bir Düzenleme
Metin2 Lobby olarak, Metin2 özel sunucu geliştirme konusunda aktif olan tüm geliştiricilerin ihtiyaç duyduğu küçük ama etkili değişikliklerden birini sizlerle paylaşmaya karar verdik. Bu yazıda, Shop Search yani mağaza arama fonksiyonuna getirilebilecek ufak bir düzenlemeyi ele alacağız. Bu düzenleme sayesinde, hem oyuncular hem de geliştiriciler açısından kullanıcı deneyimi artacak.
Neden Shop Search Düzenlemesi?
Metin2 özel sunucularında mağazalar, oyuncuların gerek PvP sistemlerde gerekse diğer aktivitelerde kullanacakları eşyaları satın alabildiği merkezi alanlardır. Ancak büyük sunucularda binlerce item bulunabilir. Bu durumda oyuncuların belirli bir eşyayı bulması oldukça zorlaşabilir. İşte burada devreye Shop Search sistemi girer. Mevcut sistemde genellikle sadece tam adla arama yapılabiliyor. Ancak bizim yapacağımız düzenlemeyle, kelimelerin içeriğinde geçen harflerle bile eşya bulunabilecek.
C++ Tarafında Temel Yapısı
Öncelikle, arama fonksiyonunun game server tarafında nasıl çalıştığını anlamak gerekir. Genellikle bu işlem shop_manager.cpp veya benzeri dosyalarda tanımlanır. Arama fonksiyonu, eşyanın adını veritabanından çeker ve kullanıcıdan gelen metinle karşılaştırır. Biz bu karşılaştırmayı string::find() fonksiyonu ile daha esnek hale getireceğiz. Böylece 'Zulrah' yazıldığında 'Zulrah Snake King Sword' gibi uzun isimler bile bulunabilecek.
Python Tarafında GUI Entegrasyonu
Eğer Py UI kullanıyorsanız, arama kutusu genellikle uiscript[/COORD] üzerinden tanımlanır. Burada EditLine elementi ile kullanıcıdan giriş alınır. Bu veri, py root üzerinden network manager ile sunucuya gönderilir. Biz bu yapıya bir filtreleme mekanizması ekleyerek, arama sonuçlarını anlık olarak ekrana basacağız.
Arama Performansını Artırmak
Geniş sunucularda arama işlemi zaman alabilir. Bu yüzden DB Core tarafında indeksleme önemlidir. Eşya isimlerine göre bir indeks oluşturmak, LIKE sorgularının performansını ciddi anlamda artırır. Ayrıca, aramayı case insensitive yaparak büyük/küçük harf duyarlılığını ortadan kaldırabiliriz.
Martysama Tarzı Geliştirme Yaklaşımı[/COORD]
Martysama gibi gelişmiş sistemlerde, arama fonksiyonu sadece eşya ismiyle sınırlı kalmaz. Seviye, sınıf, slot gibi kriterlerle de filtreleme yapılabilir. Bu tür ekstra özellikler, kullanıcı memnuniyetini ciddi oranda artırır. Biz bu yazıda temele odaklansak da, ileride bu tür gelişmiş filtreleme sistemlerini de ele alacağız.
Sonuç
Shop Search sistemine yapılan bu küçük ama etkili düzenleme, hem kullanıcı deneyimini artırır hem de sunucu yöneticilerinin oyunculara daha iyi hizmet sunmasını sağlar. Metin2 Development dünyasında bu tür küçük geliştirmeler, büyük farklar yaratır. Core seviyesinde yapılan bu tip değişiklikler, uzun vadede sistemin daha stabil ve kullanıcı dostu olmasına yardımcı olur.
A Small Adjustment for Shop Search
Metin2 Lobby brings you one of the small but effective changes needed by all active developers in the Metin2 private server scene. In this article, we will discuss a minor adjustment that can be made to the Shop Search functionality. This modification will improve user experience for both players and developers.
Why Adjust Shop Search?
In Metin2 private servers, shops are central areas where players can purchase items they need for PvP systems and other activities. However, on large servers, thousands of items may exist. Finding a specific item can become very difficult. That’s where the Shop Search system comes into play. In most current systems, only exact name matches work. Our modification allows searching by partial text matches, so typing 'Zulrah' could find 'Zulrah Snake King Sword'.
Basic Structure in C++
Firstly, understanding how the search function works on the game server side is crucial. Usually defined in files like shop_manager.cpp, the search compares the item's name from the database with the user input. We'll enhance this comparison using the string::find() function to allow more flexible matching.
GUI Integration in Python
If you are using Py UI, the search box is usually defined through uiscript. An EditLine element takes user input, which is sent to the server via py root and network manager. We’ll add a filtering mechanism to update results in real-time.
Improving Search Performance
Search operations can take time on larger servers. Therefore, indexing in the DB Core is important. Creating an index based on item names significantly improves the performance of LIKE queries. Additionally, making the search case insensitive removes case sensitivity issues.
Development Approach in Martysama Style
In advanced systems like Martysama, search functions go beyond just item names. Filters based on level, class, slots, etc., are also possible. Such additional features greatly enhance user satisfaction. While we focus on basics here, we will explore such advanced filtering in future content.
Conclusion
This small but effective adjustment to the Shop Search system enhances user experience and helps server administrators provide better service to players. In the world of Metin2 Development, these types of small improvements make significant differences. Changes at the core level help make the system more stable and user-friendly in the long run.
