Kod:
//@Kaynak/İstemci/Kullanıcı Arabirimi/PythonNetworkStreamPhaseGame. cpp //1 . ) Ara: TPacketGCChannel kChannelPacket; if (! Recv(sizeof(kChannelPacket), &kChannelPacket)) yanlış dönüş; //2 . ) Sonra ekle: #ifdef WJ_SHOW_ALL_CHANNEL PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_OnChannelPacket", Py_BuildValue("(i)", kChannelPacket. kanal)); #endif //@Kaynak/İstemci/UserInterface/Locale_inc.h #define WJ_SHOW_ALL_CHANNEL //@Kaynak/İstemci/Kullanıcı Arabirimi/PythonApplicationModule. cpp //1 . ) Ara: PyModule_AddIntConstant(poModule, "CAMERA_STOP", CPythonApplication::CAMERA_STOP); //2 . ) Sonra ekle: #ifdef WJ_SHOW_ALL_CHANNEL PyModule_AddIntConstant(poModule, "WJ_SHOW_ALL_CHANNEL", 1); #else PyModule_AddIntConstant(poModule, "WJ_SHOW_ALL_CHANNEL", 0); #endif kök / oyun. py //1 . ) Ara: def RefreshAlignment(self): kendini. arayüz. Yenileme Hizalama() //2 . ) Sonra ekle: if app.WJ_SHOW_ALL_CHANNEL: def BINARY_OnChannelPacket(self, kanal): ithalat net dict = {'name' : 'Metin2'} # Sunucu adınız ile değiştirin. Net. SetServerInfo(localeInfo. TEXT_CHANNEL % (dict['name'], kanal )). şerit()) eğer kendini. arayüz: kendini. arayüz. wndMiniMap. serverInfo. SetText(net. GetServerInfo()) locale_en/locale_game. txt: %TEXT_CHANNEL s,
Kod:
//1.) aratın TPacketGCChannel kChannelPacket; if (!Recv(sizeof(kChannelPacket), &kChannelPacket)) return false; //2.) altına ekleyin: #ifdef WJ_SHOW_ALL_CHANNEL PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_OnChannelPacket", Py_BuildValue("(i)", kChannelPacket.channel)); #endif
Kod:
#define WJ_SHOW_ALL_CHANNEL
Kod:
//1.) Aratın PyModule_AddIntConstant(poModule, "CAMERA_STOP", CPythonApplication::CAMERA_STOP); //2.) Ekle: #ifdef WJ_SHOW_ALL_CHANNEL PyModule_AddIntConstant(poModule, "WJ_SHOW_ALL_CHANNEL", 1); #else PyModule_AddIntConstant(poModule, "WJ_SHOW_ALL_CHANNEL", 0); #endif
Kod:
//1.) Aratın: def RefreshAlignment(self): self.interface.RefreshAlignment() //2.)Ekleyin if app.WJ_SHOW_ALL_CHANNEL: def BINARY_OnChannelPacket(self, channel): import net dict = {'name' : 'Metin2'} # Replace with your server name. net.SetServerInfo((localeInfo.TEXT_CHANNEL % (dict['name'], channel)).strip()) if self.interface: self.interface.wndMiniMap.serverInfo.SetText(net.GetServerInfo())
Kod:
TEXT_CHANNEL %s, CH%d
Metin2 Sunucularında Kanal Listeleme Sistemi: Show All Channel
Metin2 özel sunucularında oyuncuların sunucudaki tüm kanalları görebilmesi, hem oyun içi deneyimi artırmak hem de sunucu yöneticilerinin daha esnek yönetim yapabilmesi açısından oldukça önemlidir. Bu bağlamda geliştirilen Show All Channel küçük modül, oyuncuların mevcut kanal listesini detaylı şekilde görüntülemelerine olanak tanır. Bu yazıda, bu sistemin ne olduğu, nasıl çalıştığı ve Metin2 özel sunucularında nasıl entegre edileceği hakkında detaylı bilgi vereceğiz.
Show All Channel Nedir?
Show All Channel, Metin2 özel sunucularında bulunan kanalların tamamının istemci tarafında listelenmesini sağlayan küçük bir sistemdir. Normal şartlarda oyuncular sadece bağlı oldukları kanalı görürler; ancak bu sistem sayesinde sunucuda açık olan tüm kanalları görebilirler. Bu özellikle PvP sunucularında avantaj sağlar çünkü oyuncular diğer kanallardaki aktiviteleri takip edebilir, daha aktif kanallara geçiş yapabilir veya belirli kanallarda belirli etkinlikler olduğunu öğrenebilirler.
Sistemin Özellikleri
- Tüm kanalları listeler
- Oyuncuya sunucu durumu hakkında genel bakış sağlar
- Kolay entegrasyon
- C++ tabanlı sunucu tarafı kodları ile uyumlu
- UİScript ile kolayca istemciye entegre edilebilir
Entegrasyon Adımları
Sistemi Metin2 özel sunucunuza entegre etmek oldukça basittir. Öncelikle sunucu tarafında gerekli C++ değişiklikleri yapılmalıdır. Bu değişiklikler, sunucunun tüm kanalları istemciye göndermesini sağlar. Ardından istemci tarafında Python GUI (PyGUI) kullanılarak bir arayüz oluşturulur. Bu arayüzde kanallar listelenir ve oyuncular istedikleri kanala geçiş yapabilirler.
Sunucu Tarafı Değişiklikler
Sunucu tarafında, kanal bilgilerini istemciye gönderen fonksiyonlara müdahale edilir. Genellikle game/core dosyalarında bulunan kanal listeleme fonksiyonları üzerinde değişiklik yapılır. Bu fonksiyonlara, tüm kanalları değilse de aktif kanalları döndürecek şekilde yeniden yapılandırılır. Bu işlem için Martysama veya benzeri kaynaklar incelenebilir.
İstemci Tarafı Değişiklikler
İstemci tarafında, PyRoot klasöründe bulunan UI dosyaları düzenlenir. Burada bir pencere tasarımı yapılır ve kanal listesi bu pencereye aktarılır. UIScript yardımıyla arayüz hazırlanır ve oyuncuya sunulur. Gerekirse Python GUI ile daha gelişmiş kontroller eklenebilir.
Avantajlar
+ Oyuncular sunucuyu daha iyi tanıma fırsatı bulur
+ PvP sunucularında stratejik geçişler yapılabilir
+ Sunucu yöneticileri için deneyim artırıcı bir özelliktir
+ Oyuncu memnuniyetini artırır
Sonuç
Show All Channel sistemi, Metin2 özel sunucularında kullanıcı deneyimini artıran küçük ama etkili bir özelliktir. Özellikle PvP odaklı sunucularda bu sistemin kullanımı oldukça yaygındır. Sistem hem teknik olarak kolay entegre edilebilir hem de kullanıcı dostu bir arayüz sunar. Eğer Metin2 özel sunucusu geliştiriyorsanız, bu sistemi eklemek sunucunuzun rekabet gücünü artıracaktır.
Channel Listing System on Metin2 Servers: Show All Channel
Being able to view all channels available on private Metin2 servers significantly enhances both the in-game experience for players and provides server administrators with more flexible management options. In this context, the Show All Channel small module allows players to view the full list of channels within the client. In this article, we will provide detailed information about what this system is, how it works, and how it can be integrated into Metin2 private servers.
What is Show All Channel?
Show All Channel is a small system that enables players to view all active channels on Metin2 private servers directly from their client. Normally, players only see the channel they are currently connected to; however, with this system, they can see all channels open on the server. This is especially advantageous in PvP servers, as players can monitor activity across other channels, switch to more active ones, or learn about events happening in specific channels.
Features of the System
- Lists all server channels
- Provides an overview of the server status to players
-[/BR] Easy integration
-[/BR] Compatible with C++ based server-side code
-[/BR] Can be easily integrated into the client using UIScript
Integration Steps
Integrating this system into your Metin2 private server is quite straightforward. Initially, necessary modifications must be made on the server side in C++. These changes allow the server to send information about all channels to the client. Afterwards, a user interface is created on the client side using Python GUI (PyGUI). The channels are listed in this interface, allowing players to switch between channels as desired.
Server-Side Modifications
On the server side, functions responsible for sending channel information to the client are modified. Typically, these functions are located within game/core files. Changes are made so that instead of just sending the current channel, the server sends a list of all active channels. For this, resources such as Martysama can be referenced.
Client-Side Modifications
On the client side, UI files located in the PyRoot folder are edited. A window design is created here, and the channel list is displayed within this window. With the help of UIScript, the interface is prepared and presented to the player. If needed, more advanced controls can be added using Python GUI.
Advantages
+ Players get a better understanding of the server
+ Strategic switching between channels in PvP servers
+ Enhances experience for server administrators
+ Increases player satisfaction
Conclusion
The Show All Channel system is a small but effective feature that improves the user experience on Metin2 private servers. It is especially common in PvP-focused servers. Technically easy to integrate and offering a user-friendly interface, if you are developing a Metin2 private server, adding this system can enhance its competitiveness.
