Sorunsuz kanal değiştirici

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 71

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Aslında daha önce paylaşmam gerekidi bu zamana kısmetmiş, çoğu kanal değiştiricide bulunan bir apiden kaynaklanan bir sorundan dolayı karakter kısmında donduğu için oyuna bağlanmıyor dolayısıyla çalışmıyor

Piyasada+120tl+bizde+bedava+bugsuz+sorunsuz
"""En azından çalışıyor """




uichangechannel ve ui_wrapper dosyalarını ı root'a atın


*networkmodule.py


Arat:
Kod:
self.isAutoLogin=0
Kod:

Altına ekle:
Kod:
self.channel = 0
Kod:



*locale/tr/ui/systemdialog.py

Arat:
Kod:
[COLOR=#BB0000][FONT=Verdana]{[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]"name" : "game_option_button",[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]"type" : "button",[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]"x" : 10,[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]"y" : 117,[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]"text" : uiScriptLocale.GAMEOPTION_TITLE,[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]"default_image" : ROOT + "XLarge_Button_01.sub",[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]"over_image" : ROOT + "XLarge_Button_02.sub",[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]"down_image" : ROOT + "XLarge_Button_03.sub",[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]},[/FONT][/COLOR]
Altına ekle:
Kod:
{
Kod:
[COLOR=#BB0000][FONT=Verdana]"name" : "change_ch_button",[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]"type" : "button",[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]"x" : 10,[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]"y" : 147,[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]"text" : "Kanal degistir",[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]"default_image" : ROOT + "XLarge_Button_01.sub",[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]"over_image" : ROOT + "XLarge_Button_02.sub",[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]"down_image" : ROOT + "XLarge_Button_03.sub",[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]"disable_image" : ROOT + "XLarge_Button_03.sub",[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]},[/FONT][/COLOR]


*game.py


Arat:
Kod:
self.interface.ShowDefaultWindows()
Kod:

Altına ekle:
Kod:
self.stream.isAutoSelect = 0
Kod:

Arat:
Kod:
self.interface = interfaceModule.Interface()
Kod:
Altına ekle:
Kod:
self.interface.SetStream(self.stream)
Kod:




*intrologin.py
Arat:
Kod:
if constInfo.SEQUENCE_PACKET_ENABLE:
Kod:
[COLOR=#BB0000][FONT=Verdana]net.SetPacketSequenceMode()[/FONT][/COLOR]
Üstüne ekle:
Kod:
net.ACC_ID = id
Kod:
[COLOR=#BB0000][FONT=Verdana]net.ACC_PWD = pwd[/FONT][/COLOR]

*interfacemodule.py

Arat:
Kod:
[COLOR=#BB0000][FONT=Verdana]def __del__(self):[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]systemSetting.DestroyInterfaceHandler()[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]event.SetInterfaceWindow(None)[/FONT][/COLOR]

Altına ekle:
Kod:
[COLOR=#BB0000][FONT=Verdana]def SetStream(self, stream):[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]self.stream = stream[/FONT][/COLOR]

Arat:
Kod:
self.dlgSystem = uiSystem.SystemDialog()
Kod:

Değiştir:
Kod:
self.dlgSystem = uiSystem.SystemDialog(self.stream)
Kod:



*uisystem.py

Importların arasına ekleyin:
Kod:
import uiChangeChannel
Kod:

Arat:
Kod:
def __init__(self):
Kod:

Değiştir:
Kod:
def __init__(self, stream):
Kod:



Arat:
Kod:
[COLOR=#BB0000][FONT=Verdana]def __init__(self, stream):[/FONT][/COLOR]

Bul:
Kod:
[COLOR=#BB0000][FONT=Verdana]self.__Initialize()[/FONT][/COLOR]

Altına ekle:
Kod:
self.stream = stream
Kod:



Arat:
Kod:
self.GetChild("system_option_button").SAFE_SetEven t(self.__ClickSystemOptionButton)
Kod:

Üstüne ekle:
Kod:
self.GetChild("change_ch_button").SAFE_SetEvent(se lf.__ClickChangeChOptionButton)
Kod:

Arat:
Kod:
def __OnClosePopupDialog(self):
Kod:

Üstüne ekle:
Kod:
def __ClickChangeChOptionButton(self):
Kod:
[COLOR=#BB0000][FONT=Verdana]self.Close()[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]if not self.changeChDlg:[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]self.changeChDlg = uiChangeChannel.uiChangeChannel(self.stream)[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]self.changeChDlg.Show()[/FONT][/COLOR]
Arat:
Kod:
self.gameOptionDlg = None
Kod:

Altına ekle:
Kod:
self.changeChDlg = None
Kod:

Arat:
Kod:
if self.systemOptionDlg:
Kod:
[COLOR=#BB0000][FONT=Verdana]self.systemOptionDlg.Destroy()[/FONT][/COLOR]
Altına ekle:
Kod:
if self.changeChDlg:
Kod:
[COLOR=#BB0000][FONT=Verdana]self.changeChDlg.Destroy()[/FONT][/COLOR]



Python 2.2 kullanıyorsanız True kısımlarını TRUE, False kısımlarını FALSE olarak değiştirin
TAB ile ilgili problem yaşarsanız tüm işlemlerden sonra notepad++ dan ctrl+h ye basıp gelen menüden üst boşluğa 4adet boşluk alt kısmada tab ile yapılan boşluk dan ekleyip tümünü değiştir diyin





QWll3G.png




Sorunsuz Kanal Değiştirici Sistemi Nedir?
Metin2 özel sunucularında oyun deneyimini artırmak adına geliştirilen sistemlerden biri olan kanal değiştirici, oyuncuların farklı sunucu kanalları arasında hızlıca geçiş yapmalarını sağlar. Bu sistem özellikle PvP odaklı sunucularda büyük önem taşır. Oyuncuların aktif oldukları kanalları kolayca değiştirmesi, hem stratejik olarak avantaj sağlar hem de oyun içi hareketliliği artırır. Bu yazıda, Metin2 özel sunucularında sorunsuz bir kanal değiştirici sisteminin nasıl kurulacağı, hangi dosyalara müdahale edileceği ve kullanıcı dostu bir arayüzün nasıl sağlanacağı ele alınacaktır.

Kanal Değiştirme Sisteminin Temel Yapısı
Kanal değiştirici sistem genellikle client-side ve server-side olmak üzere iki ana bileşenden oluşur. Client tarafında, oyuncuya grafiksel bir arayüz sunulur. Bu arayüzde kanal listesi, mevcut oyuncu sayısı ve kanal durumu gibi bilgiler görüntülenebilir. Server tarafında ise, oyuncunun seçtiği kanala güvenli bir şekilde yönlendirilmesi sağlanır. Bu işlem sırasında oyun içi verilerin kaybolmaması, envanterin veya karakterin durumunun değişmemesi büyük önem taşır.

Client Tarafında Uygulama
Kanal değiştiriciyi client tarafında entegre etmek için uiscript dosyalarında değişiklik yapılması gerekir. Öncelikle bir buton tanımlanır ve bu butona tıklandığında kanal listesinin gösterilmesi sağlanır. Bu arayüz genellikle Python GUI ile oluşturulur. PyRoot[/B] klasöründe bulunan root dosyasında gerekli fonksiyonlar tanımlanır. Örneğin, ChannelSelectWindow adında bir sınıf oluşturularak, listede sunucudan gelen kanal bilgileri dinamik olarak gösterilir. Bu pencere aynı zamanda oyuncu sayısını ve kanalın aktif olup olmadığını da gösterebilir. Böylece oyuncu daha bilinçli bir kanal seçimi yapabilir.

Server Tarafında Yönlendirme Mekanizması
Server tarafında, kanal değiştirme işlemi genellikle game server tarafından yönetilir. Sunucu, oyuncunun yeni kanala geçiş yapabilmesi için geçici bir bağlantı sağlar. Bu süreçte auth server ile koordinasyon çok önemlidir. Oyuncunun kimliği doğrulanır ve yeni kanala geçmeden önce mevcut oturum güvenli şekilde sonlandırılır. Martysama[/B] gibi gelişmiş sistemlerde, bu işlemler C++ ile yazılmış fonksiyonlarla optimize edilir. Böylece kanal geçişi esnasında lag ya da disconnect gibi sorunlar minimum seviyeye indirgenir.

Sorunsuz Kanal Geçişinin Sağlanması
Sorunsuz bir kanal geçişi için birkaç kritik nokta dikkate alınmalıdır. İlk olarak, veri bütünlüğü sağlanmalıdır. Oyuncunun envanteri, karakteri ve PvP durumu yeni kanala doğru aktarılmalıdır. İkinci olarak, sunucu senkronizasyonu hızlı ve hatasız olmalıdır. Üçüncü olarak, kullanıcı arayüzü temiz ve hızlı tepki verebilmelidir. Tüm bu süreçler, Metin2 lobby gibi profesyonel sistemlerde test edilerek, olası hatalar önceden bertaraf edilmelidir.

Kanal Değiştirici Sisteminin Avantajları
Sorunsuz kanal değiştirici sistemi sayesinde oyuncular, farklı PvP ortamlarında hızlıca yer alabilir. Bu da oyun içi rekabeti ve aktifliği artırır. Ayrıca sunucu yöneticileri, trafiği dengeli bir şekilde dağıtabilir. Bu da sunucu performansını olumlu yönde etkiler. Sistem modüler olarak tasarlandığında, özel efektler, kanal özel bonuslar gibi ekstra özellikler de kolayca entegre edilebilir.


What is a Seamless Channel Switcher System?
The channel switcher, one of the systems developed to enhance the gaming experience on Metin2 private servers, allows players to quickly switch between different server channels. This system is especially important on PvP-oriented servers. Easy switching between active channels by players provides both strategic advantages and increases in-game mobility. In this article, we will discuss how to set up a seamless channel switcher system on Metin2 private servers, which files need modifications, and how to provide a user-friendly interface.

Basic Structure of Channel Switching System
The channel switcher system generally consists of two main components: client-side and server-side. On the client side, a graphical interface is presented to the player. The interface can display information such as the channel list, number of players online, and the status of each channel. On the server side, the player is securely redirected to their selected channel. During this process, ensuring that in-game data is not lost, and the character's inventory or status remains unchanged, is critical.

Client-Side Implementation
To integrate the channel switcher on the client side, modifications must be made to the uiscript files. First, a button is defined, and upon clicking it, the channel list is displayed. This interface is typically created with Python GUI. Within the root file located in the PyRoot folder, necessary functions are defined. For instance, a class named ChannelSelectWindow can be created to dynamically show channel information received from the server. This window can also display player counts and whether the channel is active, allowing the player to make an informed choice.

Server-Side Redirect Mechanism
On the server side, channel switching is usually managed by the game server. The server establishes a temporary connection for the player to switch to a new channel. During this process, coordination with the auth server is crucial. The player’s identity is verified, and their current session is safely terminated before switching. In advanced systems like Martysama[/B], these operations are optimized using C++ functions, minimizing issues such as lag or disconnection during the transition.

Ensuring Seamless Channel Transition
Several critical points must be considered for a seamless channel switch. First, data integrity must be ensured. The player's inventory, character, and PvP status should be correctly transferred to the new channel. Second, server synchronization must be quick and error-free. Third, the user interface must be clean and responsive. All these processes should be tested within professional systems like Metin2 lobby to eliminate potential errors in advance.

Benefits of the Seamless Channel Switcher System
Thanks to the seamless channel switcher system, players can quickly join different PvP environments, increasing in-game competition and activity. Additionally, server administrators can distribute traffic evenly, which positively impacts server performance. When designed in a modular way, additional features such as special effects or channel-specific bonuses can be easily integrated.
 

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

Geri
Üst Alt