(Her şeyi satmayıda bilirdim ben başkaları gibi. Elimden geldiğince açık anlatmaya çalıştım anlatamamışta olabilirim, önemli olan bi bilgi varsa başkasına anlatmaktır. Ben bunu yapmaya çalıştım. Forumda bişeyler bilipte başkasına paylaşmayacak kadar cimri insanlar var. Metin2 camiası bir stackoverflow'da arama yaparak falan akademik makaleleri olan kodlama yapabileceğimiz bir proje değil. Birbirimize destek olmadığımız sürece boş yolda ilerleriz.)
Merhaba arkadaşlar, bugün sizlere kanal dosyalarınızın sembolik bağlantılarından kurtulma yolunu anlatacağım.
Bir örnek vermek gerekirse;
ÖNCESİ
Merhaba arkadaşlar, bugün sizlere kanal dosyalarınızın sembolik bağlantılarından kurtulma yolunu anlatacağım.
Bir örnek vermek gerekirse;
ÖNCESİ
SONRASI
Sadece bu iki dosya barınacak şekilde kanallarınızı ve database'inizi çalıştırabilirsiniz.
Bunu neden yapmalıyız diyen arkadaşlar varsa, şöyle söyleyeyim; Github kullanan arkadaşlar bildiğiniz üzere boş klasörleri ve sembolik bağlantıları kabul etmiyor. Github'u geçtim windows'da game dosyalarınızı üzerinde düzenleme yapmak için çıkarttığınızda sembolik bağlantılar kayboluyor. Bu yöntemi uygulayarak düzenlemenizi yapıp direk klasörü atarak semboliklerle uğraşmadan start verebileceksiniz. Biraz anlatamamış olabilirim ama umarım siz anlamışsınızdır
Neyse şimdi başlayalım;
ben root klasöründe start ediyorum oyunu siz kendinize göre yapabilirsiniz.
game>src>ani.cpp giriyoruz ve "data/pc/warrior" gibi kısımları yani data/ kelimesini aratıp oraya dosya yolunuzu veriyorsunuz örneğin "/root/game/share/data/pc/warrior" bunu ordaki her yere uygulayın.
game>src>locale_service.cpp giriyoruz ve üssteki işlemi aynen yapıyoruz "locale/turkey/map" gibi yolları "/root/game/share/locale/turkey/map" yapıyoruz.
game>src>main.cpp giriyoruz const std::string strPackageCryptInfoDir = "package/"; aratıyoruz const std::string strPackageCryptInfoDir = "/root/game/share/package/"; yapıyoruz.
game>src>motion.cpp giriyoruz snprintf(motlistPath, sizeof(motlistPath), "data/monster/%s/motlist.txt", folder); aratıyoruz snprintf(motlistPath, sizeof(motlistPath), "/root/game/share/data/monster/%s/motlist.txt", folder); yapıyoruz.
game>src>motion.cpp giriyoruz snprintf(msaPath, sizeof(msaPath), "data/monster/%s/%s", folder, msaName); aratıyoruz snprintf(msaPath, sizeof(msaPath), "/root/game/share/data/monster/%s/%s", folder, msaName); yapıyoruz.
game>src>MarkManager.cpp giriyoruz snprintf(buf, sizeof(buf), "mark/%s_index", m_pathPrefix.c_str()); aratıyoruz snprintf(buf, sizeof(buf), "/root/game/share/lib/mark/%s_index", m_pathPrefix.c_str()); yapıyoruz. mark/ olan kelimeleri aratmaya devam edin ve aynısını yapın.
game>src>MarkConvert.cpp giriyoruz mkdir("mark", S_IRWXU); aratıp mkdir("/root/game/share/lib/mark", S_IRWXU); yapıyoruz (altındada var onuda yapın)
ve en önemlisi kanallarınızdaki içi boş log klasörünün otomatik oluşması için libthecore>src>log.c giriyoruz bu bloğun başını aratın
if (stat(filename, &sb) == -1)
{
//perror("log_file_delete_old: stat");
mkdir("log", 0700);
return;
}
Bunu uygulayın. (Bu sayede log klasörü olmadığını kontrol edip kendisi otomatik oluşturacak ve start işlemi hata vermeyecek)
Arkadaşlar kısaca yapmak isteyen varsa server sourcenizi açın ve notepad++ dan /mark /locale /data gibi sembolik bağlantılarınızı aratın.
.killscript .autosh .shut gibi şeyleri ben kullanmıyorum gerek bulmuyorum.
@ulubey4242 hocamız Teşşekürler, CMD de hepsi aynı olduğu için share/bin e taşıyıp ordan çektirebilirsin, Configde marty nin yaptığı default config olayı vardı onu kullanabilirsin. demiş bunuda uygulayarak dahada düzenli core sağlayabilirsiniz.
(Not: anlattıklarım dışında dosya yolları olabilir iyice kelimeleri aratın ve düzenleyin biraz uğraşıp güzel sonuçlar alabilirsiniz.)
İşinize yaradıysa ne mutlu bana bir teşekkür etmeniz yeterli
Metin2 Lobby'de Core Bağlantıları Konfigürasyon ve Komut Satırı ile Çalıştırma
Giriş
Metin2 özel sunucu geliştirme sürecinde core (çekirdek) dosyalarının doğru yapılandırılması ve çalıştırılması hayati öneme sahiptir. Bu süreçte çoğu geliştirici, core dosyalarının harici bağlantılara bağımlı olmasından kaçınmak ister. Bu bağlamda, bağlantıların olmaması durumunda sadece config (konfigürasyon) dosyaları ve komut satırı (CMD) üzerinden core dosyalarını çalıştırmak oldukça avantajlıdır. Bu yazıda, config dosyaları ve komut satırı üzerinden nasıl core çalıştıracağınızı detaylıca anlatacağız.
Core Nedir?
Core, Metin2 özel sunucularında çalışan temel sunucu yazılımıdır. Game, Auth ve DB gibi ana bileşenler core üzerinden çalışır. Core dosyaları genellikle C++ diliyle yazılmıştır ve derlenmiş исполняемые (executable) dosyalardır. Core, sunucu başlatıldığında tüm oyun mantığını, veritabanı işlemlerini ve kullanıcı oturumlarını yönetir.
Config Dosyaları ile Core Ayarları[/BR][/BR]Her core dosyası, çalışması için belirli konfigürasyon ayarlarına ihtiyaç duyar. Bu ayarlar genellikle .txt veya .conf uzantılı dosyalarda bulunur. Örnek olarak game/core/config.txt, auth/core/auth_config.txt gibi dosyalar mevcuttur. Bu dosyalar, IP adresleri, port numaraları, veritabanı bağlantı bilgileri, kanal ayarları gibi önemli parametreleri içerir.
Komut Satırı (CMD) ile Core Çalıştırma[/BR][/BR]Bazı durumlarda, GUI (grafiksel arayüz) olmadan core dosyalarını doğrudan komut satırı üzerinden çalıştırmak isteyebilirsiniz. Özellikle otomatikleştirilmiş sistemlerde ya da sunucu yönetiminde bu yöntem tercih edilir. Aşağıda örnek bir komut satırı komutu yer almaktadır:
game.exe --config=config.txt --port=13000
Bu komut, game.exe dosyasını belirtilen konfigürasyon dosyasıyla başlatır ve 13000 portundan dinlemeye geçer. Bu sayede harici bir bağlantıya ihtiyaç duyulmadan core tamamen yerel ortamda çalışabilir.
Coreların Yerel Ortamda Çalıştırılması[/BR][/BR]Yerel ortamda core çalıştırmak, test aşamasında oldukça faydalıdır. Tüm bağlantılar yerel IP adresi üzerinden yapılandırılır (örneğin 127.0.0.1). Bu sayede internet bağlantısı olmayan sistemlerde bile core çalıştırılabilir. Bu yapılandırmalar genellikle hosts dosyasında da ayarlanabilir.
Config Dosyalarında Dikkat Edilmesi Gerekenler[/BR][/BR]Config dosyaları, core'un sağlıklı çalışabilmesi için çok önemlidir. Yanlış bir port ya da IP adresi, core’un başlatılamamasına neden olabilir. Ayrıca, bazı core yapılandırmalarında şifre koruması veya güvenlik seviyesi ayarları da bulunabilir. Bu ayarlar, security_level, password[/BR][/BR] gibi alanlarda yer alabilir.
Otomatikleştirme ve Betik Kullanımı[/BR][/BR]Python veya batch (batch file) gibi betik dilleri ile core başlatma işlemini otomatikleştirebilirsiniz. Örneğin, bir .bat dosyası içinde aşağıdaki gibi bir komut yer alabilir:
start game.exe --config=config.txt
Bu sayede core başlatma işlemi bir tıklamayla yapılabilir. Aynı zamanda loglama ve hata yakalama işlemleri de betiklerle kolaylaştırılabilir.
Sonuç[/BR][/BR]Core dosyalarını sadece config dosyaları ve komut satırı üzerinden çalıştırmak, Metin2 özel sunucu geliştirme sürecinde büyük esneklik sağlar. Bu yöntem, harici bağlantılara bağımlılığı ortadan kaldırır ve test ortamlarında daha hızlı çalışmanıza olanak tanır. Doğru yapılandırma ile core, yerel ortamda hatasız çalışabilir ve geliştirme süreci hızlandırılabilir.
Running Cores on Metin2 Lobby via Configuration and Command Line Only
Introduction[/BR][/BR]In the process of developing Metin2 private servers, correctly configuring and running the core files is of vital importance. Most developers prefer to avoid dependencies on external connections for core files. In this context, running cores through configuration files and command line only (without external connections) can be highly advantageous. This article will explain in detail how to run cores using only configuration files and command line.
What is a Core?[/BR][/BR]The core is the main server software that runs on Metin2 private servers. It operates the main components such as Game, Auth, and DB. Core files are generally written in C++ and compiled executable files. The core manages all game logic, database operations, and user sessions once the server is started.
Core Settings with Config Files[/BR][/BR]Every core file requires specific configuration settings to operate. These settings are typically found in .txt or .conf extension files. Examples include game/core/config.txt and auth/core/auth_config.txt. These files contain important parameters like IP addresses, port numbers, database connection details, and channel settings.
Running Cores via Command Line (CMD)[/BR][/BR]In some cases, you might want to run core files directly from the command line without a GUI. This method is preferred especially in automated systems or server management. Below is an example command line command:
game.exe --config=config.txt --port=13000
This command starts the game.exe file with the specified configuration file and listens on port 13000. Thus, the core can run entirely in the local environment without needing an external connection.
Running Cores in Local Environment[/BR][/BR]Running cores locally is very useful during testing phases. All connections are configured via local IP addresses (e.g., 127.0.0.1). This allows cores to run even on systems without internet access. Such configurations can also be adjusted in the hosts file.
Important Considerations in Config Files[/BR][/BR]Configuration files are crucial for the core to function properly. An incorrect port or IP address may prevent the core from starting. Additionally, some core configurations may include password protection or security level settings. These settings can appear under fields like security_level and password.
Automation and Script Usage[/BR][/BR]You can automate the core startup process using scripting languages such as Python or batch files. For example, a .bat file might include the following command:
start game.exe --config=config.txt
This way, the core startup process can be done with a single click. Moreover, logging and error handling processes can also be simplified with scripts.
Conclusion[/BR][/BR]Running core files solely via configuration files and command line offers great flexibility in the development of Metin2 private servers. This approach eliminates dependency on external connections and allows faster operation in testing environments. With correct configuration, the core can run seamlessly in the local environment, accelerating the development process.
