Bu konuda config kodundaki değeri çekmeyi göstercem. Örneğin configde baslangic_parasi: 5000000 ekledikmi burdaki sayı kadar parayla oyuna baslicak hesap.
Konu tamamen örnektir mantık bu şekildedir siz kendinizi geliştirirsiniz. Lütfen kopyala yapıştır yapmayın hata alırsınız resimlerden bakarak kodları kendi elinizle yazınız.
Açılır: config.cpp
Aratılır: gPlayerMaxLevel
Altına eklenir: long int baslangic_parasi = 0;
Aratılır: TOKEN("max_level")
Kod bloğunun altına eklenir:
_______________
Açılır: config.h
Aratılır: gPlayerMaxLevel
Altına eklenir: extern long int baslangic_parasi;
_______________
Açılır: input_login.cpp
Aratılır: #include "XTrapManager.h"
2 Altına eklenir: extern long int baslangic_parasi;
Aratılır: table->gold = 0;
Şu şekilde değiştirilir: table->gold = baslangic_parasi;
_______________
Config dosyamıza "baslangic_parasi: miktar" kodunu ekleyip işlemini bitiriyoruz
C++ ile Metin2'de Yeni Config Kodu Oluşturma | Ders 2
Metin2 özel sunucularında gelişmiş sistemler oluşturmak isteyen geliştiriciler için C++ bilgisi oldukça önemlidir. Bu serinin ikinci dersinde, Metin2 projelerinde yeni bir config yapısı oluşturmayı öğreneceksiniz. Config dosyaları, oyun motorunun davranışlarını belirleyen kritik dosyalardır. Bu yapıları doğru yönetmek, sunucu performansını ve kullanıcı deneyimini doğrudan etkiler.
Config Nedir?
Config dosyaları, uygulamaların çalışma esnasında değişebilecek ayarlarını tanımlar. Metin2 özel sunucularında config dosyaları genellikle .txt veya .lua formatında bulunur. Ancak bazı ayarlar doğrudan C++ koduna gömülüdür. Bu nedenle, yeni bir özellik eklemek istiyorsanız, bazen C++ seviyesinde müdahale etmeniz gerekir.
Yeni Bir Config Değişkeni Eklemek
Öncelikle, game/src/char/char.h veya common/defines.h gibi temel başlık dosyalarında global olarak tanımlanmış config sabitlerini inceleyin. Örneğin, PvP modu aktif mi değil mi? gibi ayarlar burada tanımlanmıştır. Siz de yeni bir özellik için bir config değeri tanımlamalısınız.
Örnek: #define ENABLE_CUSTOM_PVP_SYSTEM 1
Bu tanımı header dosyasına ekledikten sonra, .cpp dosyalarında bu sabiti kontrol ederek yeni davranışlar tanımlayabilirsiniz.
C++ Kodunda Kullanımı
Bu yapı sayesinde, config üzerinden sistemi açıp kapatabilirsiniz. Bu, hem test hem de canlı sunucularda büyük kolaylık sağlar.
Config Dosyası Üzerinden Ayarlar
Ayrıca, config dosyasını dinamik olarak okumak da mümkündür. game/src/config.cpp dosyasında örnek yapılar görebilirsiniz. Bu dosya, oyun başlatılırken config dosyasını okur ve değerleri global değişkenlere atar.
Yeni bir değer eklemek için:
- config.txt dosyasına yeni satır ekle: CUSTOM_PVP_DAMAGE_MULTIPLIER = 1.5
- config.cpp'de okuyucu fonksiyonu genişlet.
- config.h'de global değişkeni tanımla.
Python Tarafında Entegrasyon
Metin2 client tarafında Python ile yazılmış GUI sistemleri (örneğin: uiscript) ile config değerlerini kullanıcıya göstermek veya değiştirmek mümkündür. py root dizinindeki dosyalarla client-server iletişim kurabilirsiniz.
Bu entegrasyon sayesinde, admin panelinden config ayarlarını değiştirebilir ve oyun içi olarak etkinleştirebilirsiniz.
Sonuç
Bu derste, Metin2 özel sunucularda C++ seviyesinde yeni bir config sistemi oluşturmayı öğrendiniz. Config yapılarını doğru kullanmak, hem geliştirme sürecini kolaylaştırır hem de sistemin kararlılığını artırır. Sonraki derslerde, bu yapıyı daha da ileriye taşıyarak gerçek zamanlı config güncellemeleri ve GUI üzerinden yönetim gibi konulara değineceğiz.
Kaynaklar:
Metin2Lobby - Metin2 Geliştirici Portalı
Creating a New Config Code in C++ | Lesson 2
For developers aiming to build advanced systems on Metin2 private servers, knowledge of C++ is essential. In this second lesson of our series, you will learn how to create a new config structure within Metin2 projects. Config files define critical behaviors of the game engine. Managing these structures correctly directly impacts server performance and user experience.
What Is Config?
Config files define settings that can be changed during runtime. On Metin2 private servers, these files are usually in .txt or .lua formats. However, some configurations are embedded directly into C++ code. Therefore, if you want to add a new feature, you may need to make adjustments at the C++ level.
Adding a New Config Variable
First, examine globally defined config constants in header files such as game/src/char/char.h or common/defines.h. For instance, whether PvP mode is active is often defined here. You must define a config value for your new feature as well.
Example: #define ENABLE_CUSTOM_PVP_SYSTEM 1
After adding this definition to the header file, you can use this constant in .cpp files to implement new behaviors based on its value.
Usage in C++ Code
With this structure, you can enable or disable the system via config. This provides great flexibility for testing and live servers.
Settings Through Config File
Additionally, it is possible to read config values dynamically. Examples can be found in game/src/config.cpp. This file reads the config file upon startup and assigns values to global variables.
To add a new value:
- Add a new line in config.txt: CUSTOM_PVP_DAMAGE_MULTIPLIER = 1.5
- Extend the reader function in config.cpp.
- Define the global variable in config.h.
Integration with Python
On the client side, GUI systems written in Python (e.g., uiscript) allow displaying or changing config values to users. Files in the py root directory facilitate client-server communication.
Thanks to this integration, you can modify config settings from an admin panel and apply them in-game.
Conclusion
In this lesson, you learned how to create a new config system at the C++ level in Metin2 private servers. Properly managing config structures not only simplifies the development process but also increases system stability. In upcoming lessons, we will further advance this concept by exploring real-time config updates and GUI-based management.
Resources:
Metin2Lobby - Metin2 Developer Portal
Konu tamamen örnektir mantık bu şekildedir siz kendinizi geliştirirsiniz. Lütfen kopyala yapıştır yapmayın hata alırsınız resimlerden bakarak kodları kendi elinizle yazınız.
Açılır: config.cpp
Aratılır: gPlayerMaxLevel
Altına eklenir: long int baslangic_parasi = 0;
Aratılır: TOKEN("max_level")
Kod bloğunun altına eklenir:
Kod:
[COLOR="#800080"]TOKEN("BASLANGIC_PARASI") { str_to_number(baslangic_parasi, value_string); baslangic_parasi = MINMAX(0, baslangic_parasi, sizeof(long int)); fprintf(stderr, "BASLANGIC_PARASI: %ld\n", baslangic_parasi); }[/COLOR]
_______________
Açılır: config.h
Aratılır: gPlayerMaxLevel
Altına eklenir: extern long int baslangic_parasi;
_______________
Açılır: input_login.cpp
Aratılır: #include "XTrapManager.h"
2 Altına eklenir: extern long int baslangic_parasi;
Aratılır: table->gold = 0;
Şu şekilde değiştirilir: table->gold = baslangic_parasi;
_______________
Config dosyamıza "baslangic_parasi: miktar" kodunu ekleyip işlemini bitiriyoruz
C++ ile Metin2'de Yeni Config Kodu Oluşturma | Ders 2
Metin2 özel sunucularında gelişmiş sistemler oluşturmak isteyen geliştiriciler için C++ bilgisi oldukça önemlidir. Bu serinin ikinci dersinde, Metin2 projelerinde yeni bir config yapısı oluşturmayı öğreneceksiniz. Config dosyaları, oyun motorunun davranışlarını belirleyen kritik dosyalardır. Bu yapıları doğru yönetmek, sunucu performansını ve kullanıcı deneyimini doğrudan etkiler.
Config Nedir?
Config dosyaları, uygulamaların çalışma esnasında değişebilecek ayarlarını tanımlar. Metin2 özel sunucularında config dosyaları genellikle .txt veya .lua formatında bulunur. Ancak bazı ayarlar doğrudan C++ koduna gömülüdür. Bu nedenle, yeni bir özellik eklemek istiyorsanız, bazen C++ seviyesinde müdahale etmeniz gerekir.
Yeni Bir Config Değişkeni Eklemek
Öncelikle, game/src/char/char.h veya common/defines.h gibi temel başlık dosyalarında global olarak tanımlanmış config sabitlerini inceleyin. Örneğin, PvP modu aktif mi değil mi? gibi ayarlar burada tanımlanmıştır. Siz de yeni bir özellik için bir config değeri tanımlamalısınız.
Örnek: #define ENABLE_CUSTOM_PVP_SYSTEM 1
Bu tanımı header dosyasına ekledikten sonra, .cpp dosyalarında bu sabiti kontrol ederek yeni davranışlar tanımlayabilirsiniz.
C++ Kodunda Kullanımı
Kod:
[B]#ifdef ENABLE_CUSTOM_PVP_SYSTEM[/B][BR][/BR][B]// Yeni PvP sistemi aktifse yapılacak işlemler[/B][BR][/BR][B]// Örneğin: özel hasar hesaplama, ödül sistemi vb.[/B][BR][/BR][B]#else[/B][BR][/BR][B]// Eski sistem devam eder[/B][BR][/BR][B]#endif[/B]
Bu yapı sayesinde, config üzerinden sistemi açıp kapatabilirsiniz. Bu, hem test hem de canlı sunucularda büyük kolaylık sağlar.
Config Dosyası Üzerinden Ayarlar
Ayrıca, config dosyasını dinamik olarak okumak da mümkündür. game/src/config.cpp dosyasında örnek yapılar görebilirsiniz. Bu dosya, oyun başlatılırken config dosyasını okur ve değerleri global değişkenlere atar.
Yeni bir değer eklemek için:
- config.txt dosyasına yeni satır ekle: CUSTOM_PVP_DAMAGE_MULTIPLIER = 1.5
- config.cpp'de okuyucu fonksiyonu genişlet.
- config.h'de global değişkeni tanımla.
Python Tarafında Entegrasyon
Metin2 client tarafında Python ile yazılmış GUI sistemleri (örneğin: uiscript) ile config değerlerini kullanıcıya göstermek veya değiştirmek mümkündür. py root dizinindeki dosyalarla client-server iletişim kurabilirsiniz.
Bu entegrasyon sayesinde, admin panelinden config ayarlarını değiştirebilir ve oyun içi olarak etkinleştirebilirsiniz.
Sonuç
Bu derste, Metin2 özel sunucularda C++ seviyesinde yeni bir config sistemi oluşturmayı öğrendiniz. Config yapılarını doğru kullanmak, hem geliştirme sürecini kolaylaştırır hem de sistemin kararlılığını artırır. Sonraki derslerde, bu yapıyı daha da ileriye taşıyarak gerçek zamanlı config güncellemeleri ve GUI üzerinden yönetim gibi konulara değineceğiz.
Kaynaklar:
Metin2Lobby - Metin2 Geliştirici Portalı
Creating a New Config Code in C++ | Lesson 2
For developers aiming to build advanced systems on Metin2 private servers, knowledge of C++ is essential. In this second lesson of our series, you will learn how to create a new config structure within Metin2 projects. Config files define critical behaviors of the game engine. Managing these structures correctly directly impacts server performance and user experience.
What Is Config?
Config files define settings that can be changed during runtime. On Metin2 private servers, these files are usually in .txt or .lua formats. However, some configurations are embedded directly into C++ code. Therefore, if you want to add a new feature, you may need to make adjustments at the C++ level.
Adding a New Config Variable
First, examine globally defined config constants in header files such as game/src/char/char.h or common/defines.h. For instance, whether PvP mode is active is often defined here. You must define a config value for your new feature as well.
Example: #define ENABLE_CUSTOM_PVP_SYSTEM 1
After adding this definition to the header file, you can use this constant in .cpp files to implement new behaviors based on its value.
Usage in C++ Code
Kod:
[B]#ifdef ENABLE_CUSTOM_PVP_SYSTEM[/B][BR][/BR][B]// Actions to perform if the new PvP system is active[/B][BR][/BR][B]// Example: custom damage calculation, reward system, etc.[/B][BR][/BR][B]#else[/B][BR][/BR][B]// Legacy system continues[/B][BR][/BR][B]#endif[/B]
With this structure, you can enable or disable the system via config. This provides great flexibility for testing and live servers.
Settings Through Config File
Additionally, it is possible to read config values dynamically. Examples can be found in game/src/config.cpp. This file reads the config file upon startup and assigns values to global variables.
To add a new value:
- Add a new line in config.txt: CUSTOM_PVP_DAMAGE_MULTIPLIER = 1.5
- Extend the reader function in config.cpp.
- Define the global variable in config.h.
Integration with Python
On the client side, GUI systems written in Python (e.g., uiscript) allow displaying or changing config values to users. Files in the py root directory facilitate client-server communication.
Thanks to this integration, you can modify config settings from an admin panel and apply them in-game.
Conclusion
In this lesson, you learned how to create a new config system at the C++ level in Metin2 private servers. Properly managing config structures not only simplifies the development process but also increases system stability. In upcoming lessons, we will further advance this concept by exploring real-time config updates and GUI-based management.
Resources:
Metin2Lobby - Metin2 Developer Portal
