[Python] 2 Veya Daha Çok Serveri Tek Packde Birleştirme

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Herkese merhabalar 🔥.

Konuya başlamadan önce bu konu önceden açılmış ve yazı fontları olsun anlatım biçimi olsun çok farklı. Mesela konuda arkadaşın bazı yazılarının fontları gitmiş ve arkadaş heryere "TurfanMt2" diye reklam koymuş. konuda onun alıntısıdır. Ve yorumlarında siyah ekranla vs karşılaşılmış bu açtığım konuda öyle birşey bulunmamakta.

Konuya geçicek olursak. :eyebrows:.

İlk öncelikle Root/serverinfo.py dosyasını Notepad++ gibi yardımcı bir programla açın. (Not defteride olur fakat kafa karıştırıcı olabilir.)

Mesela benim serverinfo.py dosyam aynen şu şekilde

Kod:
import os import app import localeInfo import debugInfo CHINA_PORT = 50000 STATE_NONE = "|cFFFF0000|hKAPALI" SERVER_NAME = "|cff00ff00|h[FK]FedakarMt2" SERVER_IP = "192.168.1.7" CH1_PORT = 13001 CH2_PORT = 13002 CH3_PORT = 13003 CH4_PORT = 13004 AUTH_PORT = 11002 def BuildServerList(orderList):     retMarkAddrDict = {}     retAuthAddrDict = {}     retRegion0 = {}     ridx = 1     for region, auth, mark, channels in orderList:         cidx = 1         channelDict = {}         for channel in channels:             key = ridx * 10 + cidx             channel["key"] = key             channelDict[cidx] = channel             cidx += 1         region["channel"] = channelDict         retRegion0[ridx] = region         retAuthAddrDict[ridx] = auth         retMarkAddrDict[ridx*10] = mark         ridx += 1     return retRegion0, retAuthAddrDict, retMarkAddrDict app.ServerName = None if (localeInfo.IsEUROPE() and app.GetLocalePath() == "locale/tr"):                        STATE_DICT = {         0 : "|cFFFF0000|hKAPALI",         1 : "|cff00ff00|hNORMAL",         2 : "|cff00ff00|hYOĞUN",         3 : "|cff00ff00|hDOLU"     }     SERVER01_CHANNEL_DICT = {         1:{"key":11,"name":"|cff00ff00|hCH1","ip": SERVER_IP,"tcp_port": CH1_PORT,"udp_port": CH1_PORT,"state":STATE_NONE,},            2:{"key":12,"name":"|cff00ff00|hCH2","ip": SERVER_IP,"tcp_port": CH2_PORT,"udp_port": CH2_PORT,"state":STATE_NONE,},            3:{"key":13,"name":"|cff00ff00|hCH3","ip": SERVER_IP,"tcp_port": CH3_PORT,"udp_port": CH3_PORT,"state":STATE_NONE,},            4:{"key":14,"name":"|cff00ff00|hCH4","ip": SERVER_IP,"tcp_port": CH4_PORT,"udp_port": CH4_PORT,"state":STATE_NONE,},          }        REGION_NAME_DICT = {         0 : "Turkey",          }     REGION_AUTH_SERVER_DICT = {         0 : {             1 : { "ip": SERVER_IP,"port":AUTH_PORT, },            }          }     REGION_DICT = {         0 : {             1 : { "name" : SERVER_NAME,"channel" : SERVER01_CHANNEL_DICT, },                              },     }     MARKADDR_DICT = {         10 : { "ip" : SERVER_IP,"tcp_port" : CH1_PORT, "mark" : "10.tga", "symbol_path" : "10", },     }     TESTADDR = { "ip" : SERVER_IP,"tcp_port" : CHINA_PORT, "udp_port" : CHINA_PORT, }

Şimdi biz bunu nasıl 2 serveri birleştiricez veya daha çok serveri. Şimdi ilk 1 server eklemeyi göstereceğim sonra bunu siz 4-5 server kadar çoğaltabilirsiniz.

Serverinfo.py niz olduğu gibi kalsın. Kendi py üzerinden anlatacağım mantığı anlarsanız gerisi gelir ztn.
(Kopyala yapıştır :bump2:.)

Şimdi benim burda
Kod:
STATE_NONE = "|cFFFF0000|hKAPALI" SERVER_NAME = "|cff00ff00|h[FK]FedakarMt2" SERVER_IP = "192.168.1.7"
bi yer var SERVER_NAME = "|cff00ff00|h[FK]FedakarMt2" altına iniyorum.
(Dikkat |cff00ff00 bu gibi kodlar renk kodlarıdır sizde olmasada olur.)

İndikten sonra şunu yazıyorum

Kod:
SERVER_NAME2 = "|cff00ffff|hTest"

Ordaki test yazısını kendinize göre düzenleyin mesela "Server2" diye.

Sonra SERVER_IP = "192.168.1.7" buluyorum yani SERVER_IP yazan yeri. Satırı kopyalıyıp bir boşluk bırakıp altına yapıştırıyorum.

Ve sonra SERVER_IP2 diye değiştiriyorum.Yani şöyle olacak.
Kod:
SERVER_IP2 = "İp adresini yazınız"

İp adresini yazınız dediğim yere 2.serveriniz ip adresini yazın. Ben boş bıraktım çünkü 2. serverim bulunmamakta.

Yani düzenlediğimiz yerler bitince aynen şöyle olacaktır.

Kod:
SERVER_NAME = "|cff00ff00|h[FK]FedakarMt2" SERVER_NAME2 = "|cff00ffff|hTest" SERVER_IP = "192.168.1.7" SERVER_IP2 = ""

Sonra aşağı iniyorum ve şurayı buluyorum.

Kod:
SERVER01_CHANNEL_DICT = {

bulduktan sonra kod satırının devamı şöyledir.

Kod:
SERVER01_CHANNEL_DICT = {         1:{"key":11,"name":"|cff00ff00|hCH1","ip": SERVER_IP,"tcp_port": CH1_PORT,"udp_port": CH1_PORT,"state":STATE_NONE,},            2:{"key":12,"name":"|cff00ff00|hCH2","ip": SERVER_IP,"tcp_port": CH2_PORT,"udp_port": CH2_PORT,"state":STATE_NONE,},            3:{"key":13,"name":"|cff00ff00|hCH3","ip": SERVER_IP,"tcp_port": CH3_PORT,"udp_port": CH3_PORT,"state":STATE_NONE,},            4:{"key":14,"name":"|cff00ff00|hCH4","ip": SERVER_IP,"tcp_port": CH4_PORT,"udp_port": CH4_PORT,"state":STATE_NONE,},          }

Kod satırını kopyalıyorum. ve boşluk bırakıp altına aynısını ekliyorum. Yani şöyle olacak.

Kod:
SERVER01_CHANNEL_DICT = {         1:{"key":11,"name":"|cff00ff00|hCH1","ip": SERVER_IP,"tcp_port": CH1_PORT,"udp_port": CH1_PORT,"state":STATE_NONE,},            2:{"key":12,"name":"|cff00ff00|hCH2","ip": SERVER_IP,"tcp_port": CH2_PORT,"udp_port": CH2_PORT,"state":STATE_NONE,},            3:{"key":13,"name":"|cff00ff00|hCH3","ip": SERVER_IP,"tcp_port": CH3_PORT,"udp_port": CH3_PORT,"state":STATE_NONE,},            4:{"key":14,"name":"|cff00ff00|hCH4","ip": SERVER_IP,"tcp_port": CH4_PORT,"udp_port": CH4_PORT,"state":STATE_NONE,},          }        SERVER01_CHANNEL_DICT = {         1:{"key":11,"name":"|cff00ff00|hCH1","ip": SERVER_IP,"tcp_port": CH1_PORT,"udp_port": CH1_PORT,"state":STATE_NONE,},            2:{"key":12,"name":"|cff00ff00|hCH2","ip": SERVER_IP,"tcp_port": CH2_PORT,"udp_port": CH2_PORT,"state":STATE_NONE,},            3:{"key":13,"name":"|cff00ff00|hCH3","ip": SERVER_IP,"tcp_port": CH3_PORT,"udp_port": CH3_PORT,"state":STATE_NONE,},            4:{"key":14,"name":"|cff00ff00|hCH4","ip": SERVER_IP,"tcp_port": CH4_PORT,"udp_port": CH4_PORT,"state":STATE_NONE,},          }

Burda düzenleyeceğimiz yerler şunlardır.

2. eklediğimiz

Kod:
SERVER01_CHANNEL_DICT = {

yeri şu şekilde değiştiriyorum.

Kod:
SERVER02_CHANNEL_DICT = {

sonra 2. eklediğimiz

Kod:
SERVER_IP

yazan yerleri

Kod:
SERVER_IP2

olarak değiştiriyorum. Dikkat: 2. eklediğimiz yerleri yapacaksınız.

Son hali şöyle olacaktır.

Kod:
SERVER02_CHANNEL_DICT = {         1:{"key":11,"name":"|cff00ff00|hCH1","ip": SERVER_IP2,"tcp_port": CH1_PORT,"udp_port": CH1_PORT,"state":STATE_NONE,},              2:{"key":12,"name":"|cff00ff00|hCH2","ip": SERVER_IP2,"tcp_port": CH2_PORT,"udp_port": CH2_PORT,"state":STATE_NONE,},              3:{"key":13,"name":"|cff00ff00|hCH3","ip": SERVER_IP2,"tcp_port": CH3_PORT,"udp_port": CH3_PORT,"state":STATE_NONE,},              4:{"key":14,"name":"|cff00ff00|hCH4","ip": SERVER_IP2,"tcp_port": CH4_PORT,"udp_port": CH4_PORT,"state":STATE_NONE,},            }

Sonra şu yeri aratıp buluyoruz.

Kod:
REGION_AUTH_SERVER_DICT = {

bu sizde şöyle olacaktır.

Kod:
REGION_AUTH_SERVER_DICT = {         0 : {             1 : { "ip": SERVER_IP,"port":AUTH_PORT, },            }          }

Bunu şöyle değiştiriyoruz.

Kod:
REGION_AUTH_SERVER_DICT = {         0 : {             1 : { "ip": SERVER_IP,"port":AUTH_PORT, },             2 : { "ip": SERVER_IP2,"port":AUTH_PORT, },         }          }

Burası tamamdır. Sonra tekrar aratıp buluyoruz.
Kod:
REGION_DICT = {
burası sizde böyledir.
Kod:
REGION_DICT = {         0 : {             1 : { "name" : SERVER_NAME,"channel" : SERVER01_CHANNEL_DICT, },                              },     }

burayı şöyle değiştiriyoruz.

Kod:
REGION_DICT = {         0 : {             1 : { "name" : SERVER_NAME,"channel" : SERVER01_CHANNEL_DICT, },             2 : { "name" : SERVER_NAME2,"channel" : SERVER02_CHANNEL_DICT, },         },     }

Dikkat ederseniz yaptıklarımızı kopyala yapıştır ile çoğaltıyoruz.

Sonra tekrar aratıp buluyoruz.
Kod:
MARKADDR_DICT = {

Burası sizde böyledir.

Kod:
MARKADDR_DICT = {         10 : { "ip" : SERVER_IP,"tcp_port" : CH1_PORT, "mark" : "10.tga", "symbol_path" : "10", },     }

Bunu şöyle değiştiriyoruz.

Kod:
MARKADDR_DICT = {         10 : { "ip" : SERVER_IP,"tcp_port" : CH1_PORT, "mark" : "10.tga", "symbol_path" : "10", },         20 : { "ip" : SERVER_IP2,"tcp_port" : CH1_PORT, "mark" : "10.tga", "symbol_path" : "10", },     }

İşlemler bitti py nin son hali şöyle olacaktır.

Kod:
import os import app import localeInfo import debugInfo CHINA_PORT = 50000 CH1_PORT = 13001 CH2_PORT = 13002 CH3_PORT = 13003 CH4_PORT = 13004 AUTH_PORT = 11002 STATE_NONE = "|cFFFF0000|hKAPALI" SERVER_NAME = "|cff00ff00|h[FK]FedakarMt2" SERVER_NAME2 = "|cff00ffff|hTest" SERVER_IP = "192.168.1.7" SERVER_IP2 = "" def BuildServerList(orderList):     retMarkAddrDict = {}     retAuthAddrDict = {}     retRegion0 = {}     ridx = 1     for region, auth, mark, channels in orderList:         cidx = 1         channelDict = {}         for channel in channels:             key = ridx * 10 + cidx             channel["key"] = key             channelDict[cidx] = channel             cidx += 1         region["channel"] = channelDict         retRegion0[ridx] = region         retAuthAddrDict[ridx] = auth         retMarkAddrDict[ridx*10] = mark         ridx += 1     return retRegion0, retAuthAddrDict, retMarkAddrDict app.ServerName = None if (localeInfo.IsEUROPE() and app.GetLocalePath() == "locale/tr"):                        STATE_DICT = {         0 : "|cFFFF0000|hKAPALI",         1 : "|cff00ff00|hNORMAL",         2 : "|cff00ff00|hYOĞUN",         3 : "|cff00ff00|hDOLU"     }     SERVER01_CHANNEL_DICT = {         1:{"key":11,"name":"|cff00ff00|hCH1","ip": SERVER_IP,"tcp_port": CH1_PORT,"udp_port": CH1_PORT,"state":STATE_NONE,},            2:{"key":12,"name":"|cff00ff00|hCH2","ip": SERVER_IP,"tcp_port": CH2_PORT,"udp_port": CH2_PORT,"state":STATE_NONE,},            3:{"key":13,"name":"|cff00ff00|hCH3","ip": SERVER_IP,"tcp_port": CH3_PORT,"udp_port": CH3_PORT,"state":STATE_NONE,},            4:{"key":14,"name":"|cff00ff00|hCH4","ip": SERVER_IP,"tcp_port": CH4_PORT,"udp_port": CH4_PORT,"state":STATE_NONE,},                 }        SERVER02_CHANNEL_DICT = {         1:{"key":11,"name":"|cff00ff00|hCH1","ip": SERVER_IP2,"tcp_port": CH1_PORT,"udp_port": CH1_PORT,"state":STATE_NONE,},            2:{"key":12,"name":"|cff00ff00|hCH2","ip": SERVER_IP2,"tcp_port": CH2_PORT,"udp_port": CH2_PORT,"state":STATE_NONE,},            3:{"key":13,"name":"|cff00ff00|hCH3","ip": SERVER_IP2,"tcp_port": CH3_PORT,"udp_port": CH3_PORT,"state":STATE_NONE,},            4:{"key":14,"name":"|cff00ff00|hCH4","ip": SERVER_IP2,"tcp_port": CH4_PORT,"udp_port": CH4_PORT,"state":STATE_NONE,},          }        REGION_NAME_DICT = {         0 : "Turkey",          }     REGION_AUTH_SERVER_DICT = {         0 : {             1 : { "ip": SERVER_IP,"port":AUTH_PORT, },             2 : { "ip": SERVER_IP2,"port":AUTH_PORT, },         }          }     REGION_DICT = {         0 : {             1 : { "name" : SERVER_NAME,"channel" : SERVER01_CHANNEL_DICT, },             2 : { "name" : SERVER_NAME2,"channel" : SERVER02_CHANNEL_DICT, },         },     }     MARKADDR_DICT = {         10 : { "ip" : SERVER_IP,"tcp_port" : CH1_PORT, "mark" : "10.tga", "symbol_path" : "10", },         20 : { "ip" : SERVER_IP2,"tcp_port" : CH1_PORT, "mark" : "10.tga", "symbol_path" : "10", },     }     TESTADDR = { "ip" : SERVER_IP,"tcp_port" : CHINA_PORT, "udp_port" : CHINA_PORT, }

Şimdi kaydedip packliyelim ve sonuca bakalım.

r2VEra.png


Gördüğünüz gibi 1. ekli olan server açık ve 1 tane daha server eklenmiş. Hatırlarsanız onun "IP" kısmını boş bırakmıştık oda şöyle gözükecektir.

7NbAzL.png


Gördüğünüz gibi kanallar kapalı 2. eklediğimizde. Yani başarılı bir şekilde eklemiş bulunmaktayız.
Eğer iki yerede aynı ip i yazsaydım 2 serverinde CH1 kanalları açık olacaktı.

Evet bu kadar dı :rockon:. Bunun gibi orda ki sayıyı istediğiniz kadar çoğaltıp istediğiniz kadar server ekliyebilirsiniz.

Teşekkür ederim. Sağlıcakla Kalın :twitch:. Görüşmek dileğiyle 🍵.

Dipnot: Eğer 2 ayrı serveriniz varsa ve prtları değişikse baştaki portlara 2. serverinizin portlarınızıda eklemeniz gerekmekte. Örnek verirsek biri xxMt2 olsun biride xxxMt2 olsun. Bunların makinaları ayrıysa ve filesları. Portları ona göre düzenlemeniz gerekmekte. Fakat "Test" server gibi birşey oluşturacaksınız böyle bir şeye gerek yoktur.
Metin2 Server Geliştirme Serisi: Python Kullanarak 2 veya Daha Fazla Sunucuyu Tek Pakette Birleştirme

Metin2 özel sunucuları geliştirirken karşılaşılan en yaygın ihtiyaçlardan biri, birden fazla sunucuyu tek bir paket yapısı altında yönetebilmektir. Bu işlem hem zaman kazandırır hem de bakım kolaylığı sağlar. Python dili, özellikle otomasyon ve dosya işlemleri konusunda güçlü bir araçtır ve Metin2 geliştiricileri tarafından sıklıkla kullanılır. Bu makalede, Python kullanarak 2 veya daha fazla Metin2 sunucusunu nasıl tek bir pakette birleştireceğimizi detaylı olarak ele alacağız.

Metin2 Sunucu Yapısı Nedir?

Metin2 özel sunucuları genellikle 3 ana bileşenden oluşur: Auth Server, Game Server ve Client. Auth sunucusu kullanıcı girişlerini yönetir, Game sunucusu oyun mantığını çalıştırır ve Client tarafında ise oyun arayüzü yer alır. Birden fazla sunucuda farklı kanallar veya oyun modları barındırılabilir. Bu yapıların hepsini tek bir pakette toplamak, hem geliştiriciler hem de oyuncular için büyük kolaylık sağlar.

Neden Python Kullanılır?

Python, özellikle dosya işlemleri, klasör taşıma, içerik değiştirme gibi görevlerde oldukça kullanışlıdır. Python betikleri (.py uzantılı dosyalar), Metin2 sunucu yönetiminde sıkça kullanılır. Örneğin, root ve uiscript dosyalarında değişiklik yapmak, derlenmiş paketleri düzenlemek veya birden fazla sunucu dosyasını tek bir yapıya sokmak için idealdir. Ayrıca Python’un os, shutil, zipfile gibi kütüphaneleri bu tür işlemler için harika destek sağlar.

Sunucu Paketlerini Birleştirme Süreci

İlk adım, tüm sunucu dosyalarının bulunduğu dizinleri belirlemektir. Örneğin: Server1, Server2. Bu iki sunucuyu birleştirmek istiyoruz. Her birinin kendi game, auth, client, db ve diğer yapıları vardır. Python kullanarak bu yapıları yeni bir klasörde organize edebiliriz.

Python Betiği Örneği:

Aşağıdaki örnek Python betiği, iki sunucu dizinini tarar ve onları birleştirilmiş bir yapıya dönüştürür:

Kod:
import os[BR][/BR]import shutil[BR][/BR][BR][/BR]def merge_servers(server1_path, server2_path, output_path):[BR][/BR]    if not os.path.exists(output_path):[BR][/BR]        os.makedirs(output_path)[BR][/BR][BR][/BR]    for root, dirs, files in os.walk(server1_path):[BR][/BR]        for file in files:[BR][/BR]            src = os.path.join(root, file)[BR][/BR]            dst = src.replace(server1_path, output_path)[BR][/BR]            os.makedirs(os.path.dirname(dst), exist_ok=True)[BR][/BR]            shutil.copy2(src, dst)[BR][/BR][BR][/BR]    for root, dirs, files in os.walk(server2_path):[BR][/BR]        for file in files:[BR][/BR]            src = os.path.join(root, file)[BR][/BR]            dst = src.replace(server2_path, os.path.join(output_path, 'server2'))[BR][/BR]            os.makedirs(os.path.dirname(dst), exist_ok=True)[BR][/BR]            shutil.copy2(src, dst)[BR][/BR]


Bu betik, Server1 klasörünü doğrudan output_path içine kopyalar, Server2 ise output_path/server2 altına kopyalanır. Bu sayede karışmalar önlenir ve sunucular ayrılmaya devam eder.

Otomatik Yapılandırma Dosyaları

Sunucuların doğru şekilde çalışabilmesi için yapılandırma dosyalarının da değiştirilmesi gerekir. Özellikle game.ini, auth.ini gibi dosyalarda IP adresleri, port numaraları gibi bilgilerin düzenlenmesi önemlidir. Python ile bu dosyaları otomatik olarak güncelleyebilirsiniz. Örneğin, replace_config_values() adlı bir fonksiyon, belirtilen IP veya port değerlerini yeni sunucuya göre değiştirir.

Paketleme ve Dağıtım

Tüm bu işlemler tamamlandıktan sonra, ortaya çıkan yapı bir ZIP dosyasına dönüştürülebilir. Bu sayede sunucu dosyaları kolayca dağıtılabilir. Python’un zipfile modülü bu işlem için kullanılabilir. Böylece hem tek bir pakette birden fazla sunucu bulunmuş olur hem de dağıtım kolaylaşır.

Sonuç

Python kullanarak Metin2 sunucularını birleştirmek, gelişmiş seviyedeki geliştiriciler için güçlü bir yöntemdir. Zaman kazandırması, hata payını azaltması ve otomasyon imkanı sunması açısından tercih edilir. Bu makalede anlatılan adımlar, Metin2 geliştiricilerinin kendi projelerini optimize etmeleri için rehber niteliğindedir. Daha fazla bilgi ve örnek proje için Metin2Lobby sitesini ziyaret edebilirsiniz.


Metin2 Server Development Series: Merging Two or More Servers into One Package with Python

One of the most common needs when developing Metin2 private servers is to manage multiple servers under a single package structure. This process saves time and provides easier maintenance. Python is a powerful tool especially for automation and file operations and is frequently used by Metin2 developers. In this article, we will explain in detail how to combine two or more Metin2 servers into one package using Python.

What is the Metin2 Server Structure?

Metin2 private servers generally consist of three main components: Auth Server, Game Server, and Client. The Auth server handles user logins, the Game server runs the game logic, and the Client contains the game interface. Different channels or game modes can be hosted across multiple servers. Combining all these structures into one package provides great convenience for both developers and players.

Why Use Python?

Python is highly useful especially for tasks such as file operations, folder transfers, and content modifications. Python scripts (.py files) are frequently used in Metin2 server management. For example, modifying root and uiscript files, editing compiled packages, or merging multiple server files into one structure is ideal with Python. Additionally, Python libraries like os, shutil, zipfile provide excellent support for such tasks.

The Process of Merging Server Packages

The first step is to identify the directories where each server's files are located. For example: Server1, Server2. We want to merge these two servers. Each has its own game, auth, client, db, and other structures. Using Python, we can organize these structures into a new folder.

Example Python Script:

The following example Python script scans two server directories and merges them into a combined structure:

Kod:
import os[BR][/BR]import shutil[BR][/BR][BR][/BR]def merge_servers(server1_path, server2_path, output_path):[BR][/BR]    if not os.path.exists(output_path):[BR][/BR]        os.makedirs(output_path)[BR][/BR][BR][/BR]    for root, dirs, files in os.walk(server1_path):[BR][/BR]        for file in files:[BR][/BR]            src = os.path.join(root, file)[BR][/BR]            dst = src.replace(server1_path, output_path)[BR][/BR]            os.makedirs(os.path.dirname(dst), exist_ok=True)[BR][/BR]            shutil.copy2(src, dst)[BR][/BR][BR][/BR]    for root, dirs, files in os.walk(server2_path):[BR][/BR]        for file in files:[BR][/BR]            src = os.path.join(root, file)[BR][/BR]            dst = src.replace(server2_path, os.path.join(output_path, 'server2'))[BR][/BR]            os.makedirs(os.path.dirname(dst), exist_ok=True)[BR][/BR]            shutil.copy2(src, dst)[BR][/BR]


This script copies the Server1 folder directly into the output_path, while Server2 is copied into output_path/server2. This prevents conflicts and keeps the servers separated.

Automatic Configuration Files

To ensure that the servers run correctly, configuration files must also be updated. Particularly, IP addresses, port numbers, and similar details in files like game.ini, auth.ini need adjustment. With Python, you can automatically update these files. For example, a function named replace_config_values() replaces specific IP or port values according to the new server setup.

Packaging and Distribution

Once all these processes are completed, the resulting structure can be converted into a ZIP file. This makes server files easy to distribute. Python’s zipfile module can be used for this purpose. This way, multiple servers are contained within one package and distribution becomes simpler.

Conclusion

Merging Metin2 servers using Python is a powerful method for advanced developers. It is preferred due to saving time, reducing error margins, and offering automation capabilities. The steps explained in this article serve as a guide for Metin2 developers looking to optimize their projects. For more information and sample projects, visit Metin2Lobby.
 

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

Benzer konular

Geri
Üst Alt