game/cmd.cpp aratılır.
arat
altına ekle.
arat
altına ekle.
game/cmd_gm.cpp aratılır.
arat
altına ekle.
game/sectree_manager.cpp aratılır.
arat
altına ekle.
game/regen.cpp aratılır.
arat
altına ekle.
game/sectree_manager.h aratılır.
arat
altına ekle
arat
altına ekle
game/utils.h
arat
altına ekle.
Hayırlı olsun
Not : Oyunculu PvpServerlerinizde
/reload regen çekmeyiniz. 3 5 Saniyelik Lag Girmesine Sebep Olur.
Kod:
ACMD(do_purge);
Kod:
ACMD(reload_regen);
Kod:
{ "nowar", do_nowar, 0, POS_DEAD, GM_PLAYER },
Kod:
{ "reload_regen", reload_regen , 0, POS_DEAD, GM_GOD },
game/cmd_gm.cpp aratılır.
Kod:
ACMD(do_purge)
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
altına ekle.
game/sectree_manager.cpp aratılır.
Kod:
int SECTREE_MANAGER::Build(const char * c_pszListFileName, const char* c_pszMapBasePath)
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
altına ekle.
game/regen.cpp aratılır.
Kod:
regen->event = event_create(regen_event, info, PASSES_PER_SEC(number(0, 16)) + PASSES_PER_SEC(regen->time));
Kod:
SECTREE_MANAGER::instance().AddRegenEventToMap(lMapIndex, regen->event);
game/sectree_manager.h aratılır.
Kod:
std::map<DWORD, std::vector<npc_info> > m_mapNPCPosition;
Kod:
Kod: std::map<long, std::vector<LPEVENT>> m_mapRegen;
Kod:
bool GetRandomLocation(long lMapIndex, PIXEL_POSITION & r_pos, DWORD dwCurrentX = 0, DWORD dwCurrentY = 0, int iMaxDistance = 0);
Kod:
void AddRegenEventToMap(long lMapIndex, LPEVENT event) { m_mapRegen[lMapIndex].push_back(event); } std::vector<LPEVENT> GetRegenEvent(long lMapIndex) { return m_mapRegen[lMapIndex]; }
game/utils.h
Kod:
/*----atoi function-----*/
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
altına ekle.
Hayırlı olsun
Not : Oyunculu PvpServerlerinizde
/reload regen çekmeyiniz. 3 5 Saniyelik Lag Girmesine Sebep Olur.
[C++] - Rebootsuz Sabitlediğiniz Herşeyi Yenileme
Metin2 özel sunucularında C++ tabanlı sistem geliştirmeye odaklanan geliştiriciler için, oyun sunucusunu yeniden başlatmadan sabitlenmiş sistemleri yeniden yüklemek büyük bir kolaylık sağlar. Bu yöntem sayesinde hem zaman kazanılır hem de oyuncu deneyimi olumsuz etkilenmeden geliştirme süreçleri sürdürülebilir. Bu makalede, rebootsuz yenileme sürecini nasıl kurabileceğinizi ve hangi adımları izlemeniz gerektiğini detaylı olarak ele alacağız.
Rebootsuz Sistem Nedir?
Rebootsuz sistem, sunucu çalışırken yapılan değişikliklerin (örneğin item, skill, quest gibi) otomatik veya komutla yeniden yüklenmesini sağlayan bir yapıdır. Bu sistem özellikle Metin2 özel sunucu geliştiricileri arasında popülerdir çünkü sunucu kapatmadan test etme ve geliştirme imkanı sunar.
Neden Rebootsuz Sistem Kullanmalıyız?
Sunucu kesintileri oyuncuların oyun deneyimini olumsuz etkileyebilir. Özellikle aktif bir PvP sunucusunda, sık sunucu yeniden başlatmalar istenmez. Bu nedenle, sabitlenmiş sistemleri yeniden yüklemek için rebootsuz yöntemler kullanmak en iyi çözümdür.
C++ ile Rebootsuz Yenileme Uygulaması
C++ dilinde yazılmış Metin2 sunucu kaynak kodlarında (SRC), belirli fonksiyonları veya veri yapılarını yeniden yüklemek mümkündür. Örneğin, quest_reload komutu gibi sistemler geliştirilerek, quest sistemleri rebootsuz olarak yeniden başlatılabilir. Benzer şekilde, item, skill, mob vb. yapılar da bu şekilde yeniden yüklenebilir.
Yapılandırma Adımları:
- Oyun sunucusu içinde reload komutları tanımlanmalı
- Gerekli C++ fonksiyonları yazılmalı
- Bu fonksiyonlar oyun döngüsüne entegre edilmeli
- Güvenlik kontrolleri yapılmalı
Avantajları:
Zaman tasarrufu: Sunucuyu tekrar derlemek ve başlatmak gerekmez.
Oyuncu deneyimi korunur: Kesintisiz oynanış sağlanır.
Test süreci hızlanır: Geliştirme sırasında hızlı geri bildirim alınabilir.
Örnek Kod Yapısı (Pseudocode):
Kod:
[B]void[/B] ReloadItems() { [B]LoadItemTable()[/B]; }[BR][/BR][B]void[/B] ReloadQuests() { [B]LoadQuestTable()[/B]; }[BR][/BR][B]bool[/B] [B]HandleReloadCommand([/B][B]string[/B] type) {[BR][/BR] [B]if[/B] (type == [B]'items'[/B]) ReloadItems();[BR][/BR] [B]else if[/B] (type == [B]'quests'[/B]) ReloadQuests();[BR][/BR] [B]return true[/B];[BR][/BR]}
Sonuç
Rebootsuz sistemler, Metin2 özel sunucularında profesyonel seviyede geliştirme yapmak isteyenler için kritik öneme sahiptir. C++ tabanlı kaynak kodlarda bu sistemleri entegre etmek, hem geliştirme hem de sunucu yönetimi açısından büyük kolaylıklar sağlar. Metin2Lobby olarak, bu tür gelişmiş teknik bilgileri paylaşmaya devam ediyoruz.
[C++] - Refreshing Everything You Fixed Without Rebooting
For developers focusing on C++ based systems in Metin2 private servers, reloading fixed systems without restarting the game server provides great convenience. This method allows saving time while maintaining the player experience during development processes. In this article, we will explain how to implement the rebootless refresh process and what steps you should follow in detail.
What is a Rebootless System?
A rebootless system allows automatically or manually reloading changes (e.g., items, skills, quests) while the server is running. This system is popular among Metin2 private server developers because it enables testing and development without stopping the server.
Why Should We Use a Rebootless System?
Server downtimes can negatively impact the gaming experience. Particularly in active PvP servers, frequent restarts are unwanted. Therefore, using rebootless methods to reload fixed systems is the best solution.
Implementing Rebootless Refresh with C++
In C++ written Metin2 server source codes (SRC), specific functions or data structures can be reloaded. For instance, systems like the quest_reload command can be developed to reload quest systems without rebooting. Similarly, items, skills, mobs, etc., can also be reloaded in this way.
Configuration Steps:
- Define reload commands within the game server
- Write necessary C++ functions
- Integrate these functions into the game loop
- Perform security checks
Advantages:
Time saving: No need to rebuild and restart the server.
Player experience maintained: Seamless gameplay is provided.
Faster testing: Quick feedback can be obtained during development.
Sample Code Structure (Pseudocode):
Kod:
[B]void[/B] ReloadItems() { [B]LoadItemTable()[/B]; }[BR][/BR][B]void[/B] ReloadQuests() { [B]LoadQuestTable()[/B]; }[BR][/BR][B]bool[/B] [B]HandleReloadCommand([/B][B]string[/B] type) {[BR][/BR] [B]if[/B] (type == [B]'items'[/B]) ReloadItems();[BR][/BR] [B]else if[/B] (type == [B]'quests'[/B]) ReloadQuests();[BR][/BR] [B]return true[/B];[BR][/BR]}
Conclusion
Rebootless systems are critically important for those who wish to develop professionally in Metin2 private servers. Integrating such systems into C++ based source code offers great convenience both in development and server management. As Metin2Lobby, we continue sharing such advanced technical knowledge.
