[/FONT]
Kullanacaklar:Ara sıra ch değiştirmiyor python'la alakalı isteyen başka ch değiştirici ekleyebilir.
Kullanacaklar:Ara sıra ch değiştirmiyor python'la alakalı isteyen başka ch değiştirici ekleyebilir.
cmd.cpp açılır-aratılır:
Kod:
ACMD(do_pcbang_update);
Altına Ekleyin;
Kod:
ACMD(do_kanal);
Tekrar Aratılır:
Kod:
{ "respawn", do_respawn, 0, POS_DEAD, GM_WIZARD },
Altına Eklenir;
Kod:
{ "kanal", do_kanal, 0, POS_DEAD, GM_PLAYER },
Kod:
ACMD(do_party_request)
Altına Eklenir;
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Kod:
ACMD(do_kanal) { ///black char arg1[256]; one_argument(argument, arg1, sizeof(arg1)); int chh = ch->GetQuestFlag("black.ch"); /******************* __ayarlar yalnizca buralari yapin*/ int yasakli_mapler[*] = {1, 113}; //aralarina , koyarak map index yazin 1: 1. krallik const char* dialoglar[*] = {"yasaklii", "kanal1", "kanal2", "kanal3", "kanal4", "ayni", "hopp dur lan %d saniye!", "kanal5", "kanal6", "olusun", "yalnizca_gm!"}; int sure[*] = {60}; //sure 60 saniye int ch_6[*] = {0}; // eger sv 6 ch'liyse: acik 1 , kapali 0 int yalnizca_gm[*] = {0}; // 0 kapali, 1 acik /******************* __ayarlar_bitti*/ if (yalnizca_gm[0] == 1){ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(dialoglar[11]));return;} if (ch->GetMapIndex() == yasakli_mapler[0] || ch->GetMapIndex() == yasakli_mapler[1]) {ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(dialoglar[0])); return;} if (ch->IsDead()){ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(dialoglar[9])); return;} if (get_global_time() - chh < sure[0]){ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(dialoglar[6]), (sure[0] + chh) - get_global_time()); return;} if (*arg1) { switch (LOWER(*arg1)) { case '1': if (g_bChannel == 1) {ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(dialoglar[5])); return;} else {ch->ChatPacket(CHAT_TYPE_COMMAND, dialoglar[1]); break;} case '2': if (g_bChannel == 2) {ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(dialoglar[5])); return;} else {ch->ChatPacket(CHAT_TYPE_COMMAND, dialoglar[2]); break;} case '3': if (g_bChannel == 3) {ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(dialoglar[5])); return;} else {ch->ChatPacket(CHAT_TYPE_COMMAND, dialoglar[3]); break;} case '4': if (g_bChannel == 4) {ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(dialoglar[5])); return;} else {ch->ChatPacket(CHAT_TYPE_COMMAND, dialoglar[4]); break;} if (ch_6[0] == 1){case '5': if (g_bChannel == 5) {ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(dialoglar[5])); return;} else {ch->ChatPacket(CHAT_TYPE_COMMAND, dialoglar[6]); break;} case '6': if (g_bChannel == 6) {ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(dialoglar[5])); return;} else {ch->ChatPacket(CHAT_TYPE_COMMAND, dialoglar[7]); break;}} } ch->SetQuestFlag("black.ch", get_global_time()); } }
game.py açılır-importların altına eklenir;
Kod:
serverip = "192.168.0.100" girisportu = 11002 ch1port = 13000 ch2port = 16000 ch3port = 19000 ch4port = 21000 SERVERADI = "BETA"
Aratılır:
Kod:
"PlayMusic"
Altına Eklenir;
Kod:
"kanal1" : self.kanal_degis_1, "kanal2" : self.kanal_degis_2, "kanal3" : self.kanal_degis_3, "kanal4" : self.kanal_degis_4,
Py Sonuna Eklenir;
Kod:
def kanal_degis_1(self): net.SetServerInfo(SERVERADI+" , |cFF00FFFF|hCH1") net.SetLoginInfo(net.ACCOUNT_ID, net.ACCOUNT_PW) net.ConnectToAccountServer(serverip, ch1port, serverip, girisportu) net.DirectEnter(0) net.SendSelectCharacterPacket(0) net.SendEnterGamePacket() def kanal_degis_2(self): net.SetServerInfo(SERVERADI+" , |cFF00FFFF|hCH2") net.SetLoginInfo(net.ACCOUNT_ID, net.ACCOUNT_PW) net.ConnectToAccountServer(serverip, ch2port, serverip, girisportu) net.DirectEnter(0) net.SendSelectCharacterPacket(0) net.SendEnterGamePacket() def kanal_degis_3(self): net.SetServerInfo(SERVERADI+" , |cFF00FFFF|hCH3") net.SetLoginInfo(net.ACCOUNT_ID, net.ACCOUNT_PW) net.ConnectToAccountServer(serverip, ch3port, serverip, girisportu) net.DirectEnter(0) net.SendSelectCharacterPacket(0) net.SendEnterGamePacket() def kanal_degis_4(self): net.SetServerInfo(SERVERADI+" , |cFF00FFFF|hCH4") net.SetLoginInfo(net.ACCOUNT_ID, net.ACCOUNT_PW) net.ConnectToAccountServer(serverip, ch4port, serverip, girisportu) net.DirectEnter(0) net.SendSelectCharacterPacket(0) net.SendEnterGamePacket()
intrologin.py açılır-aratılır:
Kod:
def __OnClickLoginButton(self):
Bunun içinde
Kod:
if len(pwd)==0:
Altına Eklenir;
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Kod:
net.ACCOUNT_ID = id net.ACCOUNT_PW = pwd self.Connect(id, pwd)
locale_string.txt'ye eklenir;
Kod:
"yasaklii"; "|cffFFC125Yasaklı haritalarda kanal değiştiremezsiniz!"; "ayni"; "|cffFFC125Zaten aynı kanaldasın."; "hopp dur lan %d saniye!"; "|cffFFC125Yeniden kanal değiştirmek için |cff00ccff%d |cffFFC125saniye beklemelisiniz."; "yalnizca_gm!"; "|cffFFC125Yalnızca GM'ler hızlı kanal değiştirebilir.";
Metin2 Lobby'da Kanal ve Ch Değiştirme Sistemleri (C++, PYTHON)
Metin2 özel sunucularında oyuncuların kanal ve karakter (ch) değişimini sağlayabilmek, hem kullanıcı deneyimini artırır hem de sunucu yönetimini kolaylaştırır. Bu işlem genellikle C++ tarafında sunucu çekirdeğinde ya da Python tarafında GUI üzerinden gerçekleştirilir. Bu yazıda hem C++ hem de Python kullanarak kanal ve ch değiştirme işlemlerinin nasıl yapıldığını detaylıca ele alacağız.
Kanal Değiştirme Sistemi Nedir?
Kanal değiştirme işlemi, oyuncuların farklı sunucu kanallarına geçerek daha az yoğunlukta oyun oynamasını sağlar. Bu sistem genellikle game core içinde tanımlanır ve auth ile senkronize çalışır. C++ tabanlı server src üzerinde bu işlem doğrudan çekirdek seviyesinde yapılabileceği gibi, Python ile yazılmış bir arayüz üzerinden de sağlanabilir.
C++ ile Kanal Değiştirme
C++ ile kanal değiştirme işlemi, Metin2 server src üzerinde geliştirilen bir sistemdir. Bu sistemde, oyuncu belirli bir komut veya butonla kanal seçimi yapar. Oyuncunun bulunduğu kanal bilgisi db core üzerinden kontrol edilir ve yeni kanala yönlendirilmesi sağlanır. Bu işlem sırasında auth server ile iletişim çok önemlidir. C++ source edit işlemleri sırasında bu bağlantıyı kuran fonksiyonları doğru implemente etmek gerekir.
Python GUI ile Kanal ve Ch Değiştirme
Python tarafında Py GUI kullanarak kullanıcı dostu bir arayüz oluşturulabilir. Bu arayüz sayesinde oyuncu kolayca kanal veya karakter (ch) seçebilir. Py Root dosyaları üzerinde geliştirilen bu sistem, uiscript ile entegre edilir. Oyuncu seçim yaptıktan sonra istemci, server src ile haberleşerek kanal veya karakter geçişini başlatır. Python GUI sistemleri, özellikle Metin2 lobby gibi kullanıcı odaklı platformlarda tercih edilir.
Martysama ve Metin2Dev Araçları
Metin2Dev ve Martysama projeleri, Metin2 development sürecinde önemli araçlar sunar. Bu projelerde yer alan pack dosyaları ve source edit araçları sayesinde, hem client src hem de server src üzerinde değişiklikler kolaylıkla yapılabilir. Kanal ve ch değiştirme işlemleri için bu projelerden faydalanmak oldukça mantıklıdır.
PVP Sistemlerinde Kanal ve Ch Geçişi
Metin2 PVP sistemlerinde kanal ve karakter geçişi çok önemlidir. Özellikle yüksek seviye oyuncuların farklı kanallarda oynaması, dengeli savaş ortamları yaratır. Bu geçişlerin güvenli ve hızlı olması gerekir. Game server programming süreçlerinde bu tür sistemlerin stabil çalışması, sunucunun kalitesini doğrudan etkiler.
Kanal ve Ch Geçişi için Gerekli Dosya Türleri
Metin2 özel sunucularında bu geçişler için aşağıdaki dosya türleri kullanılır:
- Server SRC: Sunucu tarafında kanal geçişlerini yönetir.
- Client SRC: Oyuncunun istemcisindeki geçiş arayüzünü sağlar.
- DB Core: Kanal ve karakter bilgilerini saklar.
- UIScript: Python GUI arayüzlerinin çalışmasını sağlar.
- Py Root: Python ile yazılmış sistemlerin kök dizinidir.
Sonuç
Metin2 özel sunucularında kanal ve ch değiştirme işlemleri, kullanıcı memnuniyetini artıran temel özelliklerden biridir. Hem C++ hem de Python ile geliştirilebilen bu sistemler, Metin2 lobby gibi platformlarda büyük rol oynar. Source edit, server src, game core gibi yapıların doğru kullanılması bu işlemlerin stabil ve güvenli çalışmasını sağlar.
Channel and Ch Switching Systems on Metin2 Lobby (C++, PYTHON)
In Metin2 private servers, allowing players to switch channels and characters (ch) enhances user experience and eases server management. This process is typically implemented either in C++ at the server core level or via a Python GUI interface. In this article, we will examine in detail how to perform channel and ch switching operations using both C++ and Python.
What Is Channel Switching System?
Channel switching allows players to move between different server channels to play with less congestion. This system is usually defined within the game core and works in sync with the auth server. The channel switching operation can be performed directly at the kernel level on C++ based server src, or alternatively through a Python-based UI.
Channel Switching with C++
C++ channel switching is a system developed on the Metin2 server src. In this system, the player selects a channel via a command or button. The player's current channel information is checked via db core, and they are redirected to the new channel. Communication with the auth server is critical during this process. When performing C++ source edit, implementing these channel-switching functions correctly is essential.
Channel and Ch Switching with Python GUI
Python GUI can be used to create a user-friendly interface where players can easily select a channel or character (ch). This interface, developed on Py Root files, integrates with uiscript. After the player makes their selection, the client communicates with the server src to initiate the channel or character transition. Such Python GUI systems are preferred in user-focused platforms like Metin2 lobby.
Martysama and Metin2Dev Tools
Metin2Dev and Martysama projects provide important tools for Metin2 development. The pack files and source edit tools provided by these projects allow easy modifications on both client src and server src. Utilizing these projects for channel and ch switching systems is highly recommended.
Channel and Ch Switching in PVP Systems
In Metin2 PVP systems, channel and character transitions are crucial. Especially for high-level players, playing on different channels creates balanced battle environments. These transitions must be secure and fast. In game server programming, ensuring these systems run stably directly impacts server quality.
File Types Required for Channel and Ch Switching
The following file types are used for such transitions in Metin2 private servers:
- Server SRC: Manages channel switching on the server side.
- Client SRC: Provides the transition interface on the player's client.
- DB Core: Stores channel and character data.
- UIScript: Enables the operation of Python GUI interfaces.
- Py Root: The root directory for Python-based systems.
Conclusion
Channel and ch switching operations in Metin2 private servers are among the key features that increase user satisfaction. These systems, which can be developed with both C++ and Python, play a significant role in platforms like Metin2 lobby. Proper use of structures such as source edit, server src, and game core ensures these operations work stably and securely.
