MaviAyGames | Tüm Coreler İçin Reload Komutu İşlevi

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Relod çekildiği zaman sadece bulunduğu coredekilere işliyordu bu yaptığımız düzenleme ile tüm corelerde işlemektedir.
Service.h ekle:

Kod:
#define ENABLE_RELOAD_COMMAND_ALL_CORES

cmd_gm.cpp

Arat:
Kod:
ACMD(do_reload) {     char arg1[256];     one_argument(argument, arg1, sizeof(arg1));

Altına ekle:

Kod:
#ifdef ENABLE_RELOAD_COMMAND_ALL_CORES     TPacketGGReloadCommand p2p_packet;     p2p_packet.header = HEADER_GG_RELOAD_COMMAND;     strlcpy(p2p_packet.argument, arg1, sizeof(p2p_packet.argument));     bool bSendP2P = false; #endif

Arat:
Kod:
if (ch)             ch->ChatPacket(CHAT_TYPE_INFO, "Reloading state_user_count.");         LoadStateUserCount();

Altına ekle:

Kod:
#ifdef ENABLE_RELOAD_COMMAND_ALL_CORES         strlcpy(p2p_packet.argument, "u", sizeof(p2p_packet.argument));         bSendP2P = true; #endif

Arat:
Kod:
if (ch)             ch->ChatPacket(CHAT_TYPE_INFO, "Reloading prototype tables,");         db_clientdesc->DBPacket(HEADER_GD_RELOAD_PROTO, 0, nullptr, 0);     }

Altına ekle:

Kod:
#ifdef ENABLE_RELOAD_COMMAND_ALL_CORES     if (ch && bSendP2P)     {         P2P_MANAGER::instance().Send(&p2p_packet, sizeof(p2p_packet));         ch->ChatPacket(CHAT_TYPE_INFO, "Reloading other cores / channels.");     } #endif

Packet.h

Arat:
Kod:
enum EPacketGameGameHeaders {
İçerisine ekle:


Kod:
#ifdef ENABLE_RELOAD_COMMAND_ALL_CORES     HEADER_GG_RELOAD_COMMAND                 = 24, #endif

packet_info.cpp

Arat:
Kod:
CPacketInfoGG::CPacketInfoGG() {

İçerisine ekle:

Kod:
#ifdef ENABLE_RELOAD_COMMAND_ALL_CORES     Set(HEADER_GG_RELOAD_COMMAND, sizeof(TPacketGGReloadCommand), "ReloadCommand", false); #endif

MaviAyGames | Tüm Coreler İçin Reload Komutu İşlevi

Metin2 özel sunucularında geliştirme yaparken genellikle dinamik değişiklikler yapmak isteyebilirsiniz. Özellikle büyük projelerde, her seferinde sunucuyu yeniden başlatmak zaman alıcı olabilir. Bu bağlamda MaviAyGames tarafından geliştirilen reload komutu tüm corelere entegre edilebilir ve geliştiricilerin işini kolaylaştırabilir.

Reload Komutunun Amacı Nedir?
Bu komut sayesinde belirli modüller, ayarlar ya da yapılandırmalar sunucu yeniden başlatılmadan yeniden yüklenebilir. Özellikle Python tabanlı sistemlerde, C++ core üzerinde yapılan küçük değişikliklerde ya da DB bağlantısı içeren ayarların güncellenmesinde büyük kolaylık sağlar.

Core Bağımsızlığı
MaviAyGames reload komutu, farklı core mimarilerine uyum sağlayacak şekilde tasarlanmıştır. Bu sayede Auth Server, Game Server veya DB tarafında yapılan değişiklikler anlık olarak uygulanabilir. Geliştiriciler, hem Py Root hem de Client SRC üzerinde çalışan reload fonksiyonlarını tek bir komutla tetikleyebilir.

Güvenlik Açısından Dikkat Edilmesi Gerekenler
Sunucu tarafında reload komutu kullanılırken güvenlik ön planda tutulmalıdır. Bu komut sadece yetkili geliştiriciler veya adminler tarafından kullanılmalıdır. Aksi takdirde hatalı bir yapılandırma sunucuda ciddi sorunlara yol açabilir. Bu nedenle reload komutu, yetkilendirme kontrolleriyle birlikte kullanılmalıdır.

Uygulama Alanları
  • Yeni sistem eklentileri
  • DB sorgu dosyalarının güncellenmesi
  • UI Script değişiklikleri
  • PVP sistem ayarlarının yeniden yüklenmesi
  • Oto paket sistemleri

Reload Fonksiyonunun Teknik Yapısı
Fonksiyon genellikle bir RPC (Remote Procedure Call) gibi çalışır. Sunucu üzerinde belirli event’ler tetiklenerek gerekli modüller tekrar import edilir, yapılandırmalar yeniden okunur. Bu işlem sırasında eski veriler temizlenir ve yeni yapıya geçiş sağlanır. Martysama gibi gelişmiş framework’lerle entegrasyonu kolaydır.

Python GUI ve Reload Entegrasyonu
Bazı geliştiriciler, reload işlemini daha kullanıcı dostu hale getirmek için Python GUI tabanlı arayüzler geliştiriyor. Böylece reload komutunu doğrudan terminalden girmek yerine, grafiksel bir panel üzerinden yönetebilirsiniz. Bu özellikle UIScript düzenlemelerinde büyük kolaylık sağlar.

Sonuç
MaviAyGames tarafından sunulan reload komutu, Metin2 özel sunucu geliştiricileri için büyük bir rahatlık sunar. Hem source edit sürecini hızlandırır hem de test aşamasında zamandan tasarruf sağlar. Ancak doğru kullanıldığında büyük avantajlar sunar, aksi halde sunucu kararsızlığına neden olabilir. Bu nedenle dikkatli ve kontrollü kullanılması önerilir.


MaviAyGames | Reload Command Function for All Cores

While developing on Metin2 private servers, you might often want to make dynamic changes. Especially in large projects, restarting the server each time can be time-consuming. In this context, the reload command developed by MaviAyGames can be integrated into all cores and simplify developers' work.

What is the Purpose of the Reload Command?
Thanks to this command, specific modules, settings, or configurations can be reloaded without restarting the server. It provides great convenience especially during minor changes made on C++ cores, updates on DB connection settings, or modifications within Python-based systems.

Core Independence
The MaviAyGames reload command is designed to adapt to different core architectures. Thus, changes made on the Auth Server, Game Server, or DB side can be applied instantly. Developers can trigger reload functions operating on both Py Root and Client SRC with a single command.

Security Considerations When Using the Reload Command
When using the reload command on the server side, security must be prioritized. This command should only be used by authorized developers or admins. Otherwise, a misconfiguration could lead to serious issues on the server. Therefore, the reload command should be used together with authorization checks.

Application Areas
  • Adding new system extensions
  • Updating DB query files
  • Modifying UI Scripts
  • Reloading PVP system settings
  • Auto package systems

Technical Structure of the Reload Function
The function typically works like an RPC (Remote Procedure Call). Specific events are triggered on the server to re-import required modules and re-read configurations. During this process, old data is cleared and transition to the new structure is ensured. It integrates easily with advanced frameworks like Martysama.

Python GUI and Reload Integration
Some developers create more user-friendly interfaces by building Python GUI-based panels for the reload operation. This allows managing the reload command through a graphical interface instead of typing it directly in the terminal. This approach particularly facilitates UIScript adjustments.

Conclusion
The reload command offered by MaviAyGames provides significant convenience for Metin2 private server developers. It accelerates the source edit process and saves time during testing. However, when used correctly, it offers great advantages; otherwise, it may cause instability on the server. Therefore, careful and controlled usage is recommended.
 

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

Benzer konular

Geri
Üst Alt