merhaba arkadaşlar genellikle bazı insanlar bunu problem olarak biliyor ama problem değil
herneyse bu şekilde olmamasını istiyenler için
cmd_gm.cpp açılır
aratılır
Kod Blogu içerisindeki
bu kısımlar silinir ve build edip kullanın
/level komutu ile level verince Skillerin sıfırlanması Fix
Metin2 özel sunucularında geliştirme yaparken, bazen oyun içi seviye yükseltme işlemlerinde [/B]/level komutu gibi yetkili komutları kullanmak gerekir.
Bu komut sayesinde oyuncuya hızlıca belirli bir seviye kazandırılabilir. Ancak bu işlem sırasında bazı durumlarda oyuncunun mevcut skill (beceri) değerleri sıfırlanabilmektedir.
Bu durum kullanıcı deneyimi açısından ciddi bir sorundur çünkü oyuncu seviye atladığında becerilerinin korunmasını bekler.
Sorunun Neden Kaynağı?
Genellikle /level komutunun içeriğinde, oyuncunun level artışı sırasında skill puanlarının yeniden hesaplanması veya sıfırlanması için bir tetikleyici vardır.
Sunucu tarafında tanımlanan char_set_level fonksiyonu veya benzeri işlemler sırasında skill değerlerine müdahale edilip, skill point’ler sıfırlanabilmektedir.
Bu durum özellikle game server tarafında geliştirilen sistemlerde dikkat edilmesi gereken bir detaydır.
Fix Uygulaması
Bu hatayı düzeltmek için game sunucusunda yer alan char_manager.cpp veya char.cpp dosyasında SetLevel fonksiyonunun kontrol edilmesi gerekir.
Bu fonksiyonda PointChange(POINT_SKILL_POINT...) satırı, seviye yükseldiğinde skill point’in sıfırlanmasına neden oluyorsa, bu satırın değiştirilmesi veya kaldırılması gerekebilir.
Ancak bu işlemi yaparken, skill point’in doğru şekilde güncellenmesi için alternatif bir mantık kurulmalıdır.
Alternatif Çözüm Önerisi
Bir başka çözüm ise, /level komutu çalıştırılırken mevcut skill point miktarının bir geçici değişkende saklanıp, level değişikliği tamamlandıktan sonra eski skill point değerinin tekrar atanmasıdır.
Bu yöntem daha güvenlidir çünkü skill değerlerini korurken level atlamasını da sağlar.
Örnek olarak, PyCallClassMemberFunc fonksiyonu içinde GetSkillLevel() değerleri alınabilir ve SetSkillLevel() ile geri yazılabilir.
Python ve C++ Entegrasyonu
Eğer sistem py root ve uiscript üzerinden yönetiliyorsa, client tarafında python gui ile bir kontrol paneli geliştirilerek, yetkililerin /level komutunu kullanırken skill sıfırlama riskini önleyecek arayüzler oluşturulabilir.
Ayrıca auth server ve db bağlantısında skill verileri tutulup, level atlamalarında karşılaştırma yapılabilir.
Dikkat Edilmesi Gerekenler
Bu tür düzeltmeler sırasında, source edit yaparken orijinal dosyaların yedeklerinin alınması önemlidir.
Ayrıca compile işlemi sonrasında test sunucusunda bu değişikliğin doğrudan canlıya alınmadan denenmesi gerekir.
Hatalı bir değişiklik, game sunucusunun çökmesine veya oyuncu verilerinin bozulmasına neden olabilir.
Sonuç
/level komutu ile seviye verilirken skill sıfırlanması sorunu, özellikle Metin2 development sürecinde sıkça karşılaşılan bir durumdur.
Doğru analiz ve düzeltme ile bu sorun kolayca çözülebilir. Bu fix, server src üzerinde yapılacak küçük değişikliklerle büyük fayda sağlar ve oyuncu memnuniyetini artırır.
Fix for Skill Reset When Giving Level via /level Command
When developing private Metin2 servers, sometimes it becomes necessary to use admin commands like
/level to quickly grant a specific level to a player.
However, during this process, in some cases, the player's current skill values may reset. This is a significant issue from a user experience standpoint, since players expect their skills to remain intact after leveling up.
What Causes the Problem?
Often, the internal logic of the /level command includes triggers that recalculate or reset skill points when the player's level increases.
Functions such as char_set_level on the server side may interfere with skill values and reset skill points upon level gain. This detail must be carefully considered in systems developed on the game server side.
Implementing the Fix
To resolve this issue, you should inspect the SetLevel function in files such as char_manager.cpp or char.cpp on the game server.
If the line PointChange(POINT_SKILL_POINT...) causes skill points to reset when leveling up, this line should either be modified or removed.
However, while doing so, an alternative logic must be implemented to ensure that skill points are updated correctly.
Alternative Solution Suggestion
Another solution is to temporarily store the player’s current skill points before executing the /level command, then restore the previous skill point value after the level change is completed.
This method is safer because it preserves skill values while still allowing the level increase to occur.
For instance, GetSkillLevel() can be used within the PyCallClassMemberFunc function, and the values can be written back using SetSkillLevel().[/B]
Python and C++ Integration
If the system is managed through [/B]py root and uiscript, a control panel can be developed on the client side using python gui to allow administrators to use the /level command without risking skill resets.
Additionally, skill data stored in the auth server and db connections can be compared during level-ups.
Important Considerations
During such fixes, it's crucial to back up original files when performing source edit operations.
Furthermore, after the compile process, these changes should be tested on a test server before being deployed live.
Incorrect modifications could cause the game server to crash or corrupt player data.
Conclusion
The skill reset issue when giving levels via the /level command is a common problem encountered during Metin2 development processes.
With proper analysis and fixes, this issue can easily be resolved. This fix provides significant benefits through small modifications to the server src and enhances overall player satisfaction.
herneyse bu şekilde olmamasını istiyenler için
cmd_gm.cpp açılır
aratılır
Kod:
ACMD(do_level)
Kod Blogu içerisindeki
Kod:
ch->ClearSkill(); ch->ClearSubSkill();
bu kısımlar silinir ve build edip kullanın
/level komutu ile level verince Skillerin sıfırlanması Fix
Metin2 özel sunucularında geliştirme yaparken, bazen oyun içi seviye yükseltme işlemlerinde [/B]/level komutu gibi yetkili komutları kullanmak gerekir.
Bu komut sayesinde oyuncuya hızlıca belirli bir seviye kazandırılabilir. Ancak bu işlem sırasında bazı durumlarda oyuncunun mevcut skill (beceri) değerleri sıfırlanabilmektedir.
Bu durum kullanıcı deneyimi açısından ciddi bir sorundur çünkü oyuncu seviye atladığında becerilerinin korunmasını bekler.
Sorunun Neden Kaynağı?
Genellikle /level komutunun içeriğinde, oyuncunun level artışı sırasında skill puanlarının yeniden hesaplanması veya sıfırlanması için bir tetikleyici vardır.
Sunucu tarafında tanımlanan char_set_level fonksiyonu veya benzeri işlemler sırasında skill değerlerine müdahale edilip, skill point’ler sıfırlanabilmektedir.
Bu durum özellikle game server tarafında geliştirilen sistemlerde dikkat edilmesi gereken bir detaydır.
Fix Uygulaması
Bu hatayı düzeltmek için game sunucusunda yer alan char_manager.cpp veya char.cpp dosyasında SetLevel fonksiyonunun kontrol edilmesi gerekir.
Bu fonksiyonda PointChange(POINT_SKILL_POINT...) satırı, seviye yükseldiğinde skill point’in sıfırlanmasına neden oluyorsa, bu satırın değiştirilmesi veya kaldırılması gerekebilir.
Ancak bu işlemi yaparken, skill point’in doğru şekilde güncellenmesi için alternatif bir mantık kurulmalıdır.
Alternatif Çözüm Önerisi
Bir başka çözüm ise, /level komutu çalıştırılırken mevcut skill point miktarının bir geçici değişkende saklanıp, level değişikliği tamamlandıktan sonra eski skill point değerinin tekrar atanmasıdır.
Bu yöntem daha güvenlidir çünkü skill değerlerini korurken level atlamasını da sağlar.
Örnek olarak, PyCallClassMemberFunc fonksiyonu içinde GetSkillLevel() değerleri alınabilir ve SetSkillLevel() ile geri yazılabilir.
Python ve C++ Entegrasyonu
Eğer sistem py root ve uiscript üzerinden yönetiliyorsa, client tarafında python gui ile bir kontrol paneli geliştirilerek, yetkililerin /level komutunu kullanırken skill sıfırlama riskini önleyecek arayüzler oluşturulabilir.
Ayrıca auth server ve db bağlantısında skill verileri tutulup, level atlamalarında karşılaştırma yapılabilir.
Dikkat Edilmesi Gerekenler
Bu tür düzeltmeler sırasında, source edit yaparken orijinal dosyaların yedeklerinin alınması önemlidir.
Ayrıca compile işlemi sonrasında test sunucusunda bu değişikliğin doğrudan canlıya alınmadan denenmesi gerekir.
Hatalı bir değişiklik, game sunucusunun çökmesine veya oyuncu verilerinin bozulmasına neden olabilir.
Sonuç
/level komutu ile seviye verilirken skill sıfırlanması sorunu, özellikle Metin2 development sürecinde sıkça karşılaşılan bir durumdur.
Doğru analiz ve düzeltme ile bu sorun kolayca çözülebilir. Bu fix, server src üzerinde yapılacak küçük değişikliklerle büyük fayda sağlar ve oyuncu memnuniyetini artırır.
Fix for Skill Reset When Giving Level via /level Command
When developing private Metin2 servers, sometimes it becomes necessary to use admin commands like
/level to quickly grant a specific level to a player.
However, during this process, in some cases, the player's current skill values may reset. This is a significant issue from a user experience standpoint, since players expect their skills to remain intact after leveling up.
What Causes the Problem?
Often, the internal logic of the /level command includes triggers that recalculate or reset skill points when the player's level increases.
Functions such as char_set_level on the server side may interfere with skill values and reset skill points upon level gain. This detail must be carefully considered in systems developed on the game server side.
Implementing the Fix
To resolve this issue, you should inspect the SetLevel function in files such as char_manager.cpp or char.cpp on the game server.
If the line PointChange(POINT_SKILL_POINT...) causes skill points to reset when leveling up, this line should either be modified or removed.
However, while doing so, an alternative logic must be implemented to ensure that skill points are updated correctly.
Alternative Solution Suggestion
Another solution is to temporarily store the player’s current skill points before executing the /level command, then restore the previous skill point value after the level change is completed.
This method is safer because it preserves skill values while still allowing the level increase to occur.
For instance, GetSkillLevel() can be used within the PyCallClassMemberFunc function, and the values can be written back using SetSkillLevel().[/B]
Python and C++ Integration
If the system is managed through [/B]py root and uiscript, a control panel can be developed on the client side using python gui to allow administrators to use the /level command without risking skill resets.
Additionally, skill data stored in the auth server and db connections can be compared during level-ups.
Important Considerations
During such fixes, it's crucial to back up original files when performing source edit operations.
Furthermore, after the compile process, these changes should be tested on a test server before being deployed live.
Incorrect modifications could cause the game server to crash or corrupt player data.
Conclusion
The skill reset issue when giving levels via the /level command is a common problem encountered during Metin2 development processes.
With proper analysis and fixes, this issue can easily be resolved. This fix provides significant benefits through small modifications to the server src and enhances overall player satisfaction.
