Önceki çalışma mantığı >
Efsun varsa her hasarda %80 oranla aktif olur
Düzenlenmiş şekilde çalışma mantığı >
Efsun varsa her hasar efsun oranı % kaç ise o oranda aktif olur
%12 oran ile tek seferde 100-300 hp/sp emer
Koşullar düzenlendi, -(eksi) hp yada sp ile ölündüğünde kendi kendilerinden absorbe etme hatası vardı giderildi
FLY küçük olduğundan big olarak düzenlendi
*char_battle.cpp
Arat:
Değiştir:
*Not:
şeklinde syserr alırsanız aşağıdaki işlemi yapın;
*char.cpp açın
Bul:
Değiştir:
HP/SP Absorbe Sistemi Düzeltme Rehberi - Metin2 Geliştirici Kaynağı
Metin2 özel sunucularında karşılaşılan yaygın sorunlardan birisi HP/SP Absorbe sistemlerinin doğru çalışmayışıdır. Bu durum özellikle PvP odaklı sistemlerde ciddi performans ve deneyim düşüşüne neden olabilir. Bu yazıda Metin2Lobby olarak, HP/SP absorbe mekanizmasının nasıl düzeltileceği konusunda detaylı bilgi sunuyoruz.
HP/SP Absorbe Nedir?
HP/SP Absorbe, oyuncuların hasar verirken belirli bir yüzdesini kendi canına veya mana değerine aktarabilmesini sağlayan bir özelliktir. Bu sistem, savaş sırasında dayanıklılığı artırmak için sıklıkla tercih edilir. Ancak bazı özel sunucu kaynaklarında bu sistem eksik veya yanlış implemente edilmiş olabilir.
Sorunun Temeli
HP/SP Absorbe düzeltmelerinde en çok karşılaşılan hata, absorbe yüzdesinin hesaplanmasında yaşanan mantık eksiklikleridir. Özellikle C++ tabanlı sunucu kaynaklarında bu hesaplama sırasında taşma (overflow) veya negatif değerler oluşabilmektedir.
C++ Kaynak Kodlarında HP/SP Absorbe Düzeltme
Absorbe sisteminin düzgün çalışması için Game Core dosyalarında yer alan DamageHandler sınıfında değişiklik yapılması gerekir. Öncelikle, hasar verildiğinde absorbe miktarının doğru şekilde hesaplanması sağlanmalıdır.
Örnek olarak, hasar miktarı alındıktan sonra absorbe yüzdesiyle çarpılır ve 100'e bölünür. Bu işlem sırasında integer overflow engellenmelidir. Ayrıca, absorbe miktarı HP veya SP miktarını aşmamalıdır.
Python GUI ve Uiscript Entegrasyonu
Py Root üzerinde çalışan GUI sistemlerinde, absorbe değerlerinin doğru şekilde gösterimi için Uiscript dosyalarında gerekli güncellemeler yapılmalıdır. Bu, oyuncuların gerçek zamanlı olarak absorbe oranlarını takip edebilmesini sağlar.
Yanlış Uygulamalardan Kaçının
Eski sistemlerde absorbe, genellikle sadece SP'ye aktarılırdı. Ancak modern sistemlerde HP'ye de aktarılması istenebilir. Bu ayrımı yaparken dikkatli olunmalı ve DB Core üzerinden de bu bilgi tutulmalıdır.
Test ve Doğrulama
Değişiklikler yapıldıktan sonra, hem Auth hem de Game sunucusu üzerinde testler yapılmalıdır. Bu testler sırasında farklı itemlerle ve karakter seviyeleriyle absorbe oranları kontrol edilmelidir.
Sonuç
HP/SP Absorbe sisteminin düzgün çalışması, oyuncu deneyimini ciddi anlamda artırır. Bu sistemin doğru implementasyonu için hem Client Src hem de Server Src üzerinde çalışmak gerekir. Metin2Lobby olarak, bu tür sistemlerin geliştirilmesinde size rehberlik etmeye devam edeceğiz.
HP/SP Absorbe Fix Guide - Metin2 Developer Resource
One of the common issues encountered in Metin2 private servers is the malfunctioning of HP/SP Absorbe systems. This situation can cause significant performance and experience drops, especially in PvP-oriented systems. In this article, Metin2Lobby provides detailed information on how to fix the HP/SP absorbe mechanism.
What is HP/SP Absorbe?
HP/SP Absorbe is a feature that allows players to transfer a certain percentage of damage dealt back to their own health or mana. This system is frequently used to enhance survivability during combat. However, in some private server sources, this system may be incomplete or incorrectly implemented.
Root of the Problem
The most common error in HP/SP Absorbe fixes occurs during the calculation phase, where logical flaws exist. Especially in C++ based server sources, overflow or negative values can occur during the calculation process.
Fixing HP/SP Absorbe in C++ Source Code
To ensure the Absorbe system works correctly, modifications must be made to the DamageHandler class in the Game Core files. Initially, the amount of absorbe should be correctly calculated after receiving the damage value.
As an example, after obtaining the damage value, it is multiplied by the absorbe percentage and divided by 100. Integer overflow must be prevented during this operation. Additionally, the absorbe amount should not exceed the HP or SP limits.
Python GUI and Uiscript Integration
In GUI systems running on Py Root, necessary updates should be made in Uiscript files to properly display absorbe values. This allows players to track absorbe rates in real-time.
Avoid Incorrect Implementations
In older systems, absorbe was usually only applied to SP. However, in modern systems, it may also be desired for HP absorption. When making this distinction, care must be taken and this information should also be tracked via DB Core.
Testing and Validation
After changes are made, tests must be conducted on both Auth and Game servers. During these tests, absorbe values should be checked with various items and character levels.
Conclusion
Proper functioning of the HP/SP Absorbe system significantly enhances player experience. Correct implementation of this system requires work on both Client Src and Server Src. As Metin2Lobby, we will continue to guide you in the development of such systems.
Efsun varsa her hasarda %80 oranla aktif olur
Düzenlenmiş şekilde çalışma mantığı >
Efsun varsa her hasar efsun oranı % kaç ise o oranda aktif olur
%12 oran ile tek seferde 100-300 hp/sp emer
Koşullar düzenlendi, -(eksi) hp yada sp ile ölündüğünde kendi kendilerinden absorbe etme hatası vardı giderildi
FLY küçük olduğundan big olarak düzenlendi
*char_battle.cpp
Arat:
Kod:
if (pAttacker->GetPoint(POINT_HIT_HP_RECOVERY) && number(0, 4) > 0) // 80% È®·ü { int i = MIN(dam, iCurHP) * pAttacker->GetPoint(POINT_HIT_HP_RECOVERY) / 100; if (i) { CreateFly(FLY_HP_SMALL, pAttacker); pAttacker->PointChange(POINT_HP, i); } } // Ä¥ ¶§¸¶´Ù SPȸº¹ if (pAttacker->GetPoint(POINT_HIT_SP_RECOVERY) && number(0, 4) > 0) // 80% È®·ü { int i = MIN(dam, iCurHP) * pAttacker->GetPoint(POINT_HIT_SP_RECOVERY) / 100; if (i) { CreateFly(FLY_SP_SMALL, pAttacker); pAttacker->PointChange(POINT_SP, i); } }[/FONT]
Değiştir:
Kod:
int iAbsoHP_ptr = pAttacker->GetPoint(POINT_HIT_HP_RECOVERY); if (iAbsoHP_ptr) { if (number(1, 100) <= iAbsoHP_ptr) { int iHPAbso = MIN(dam, GetHP()) * pAttacker->GetPoint(POINT_HIT_HP_RECOVERY) / 100; if ((pAttacker->GetHP() > 0) && (pAttacker->GetHP() + iHPAbso < pAttacker->GetMaxHP()) && (GetHP() > 0) && (iHPAbso > 0)) { CreateFly(FLY_HP_BIG, pAttacker); pAttacker->PointChange(POINT_HP, iHPAbso); } } } // Ä¥ ¶§¸¶´Ù SPȸº¹ int iAbsoSP_ptr = pAttacker->GetPoint(POINT_HIT_SP_RECOVERY); if (iAbsoSP_ptr) { if (number(1, 100) <= iAbsoSP_ptr) { int iSPAbso = MIN(dam, GetSP()) * pAttacker->GetPoint(POINT_HIT_SP_RECOVERY) / 100; if ((pAttacker->GetSP() > 0) && (pAttacker->GetSP() + iSPAbso < pAttacker->GetMaxSP()) && (GetSP() > 0) && (iSPAbso > 0)) { CreateFly(FLY_SP_BIG, pAttacker); pAttacker->PointChange(POINT_SP, iSPAbso); } } }
*Not:
Kod:
[COLOR=#333333][FONT=Verdana]POINT_ERROR:[/FONT][/COLOR]
*char.cpp açın
Bul:
Kod:
[COLOR=#333333][FONT=Verdana]sys_err("POINT_ERROR: %s type %d val %d (max: %d)", GetName(), val, max_val);[/FONT][/COLOR]
Değiştir:
Kod:
[COLOR=#333333][FONT=Verdana]sys_err("POINT_ERROR: %s type %d val %d (max: %d)", GetName(), type, val, max_val);[/FONT][/COLOR]
HP/SP Absorbe Sistemi Düzeltme Rehberi - Metin2 Geliştirici Kaynağı
Metin2 özel sunucularında karşılaşılan yaygın sorunlardan birisi HP/SP Absorbe sistemlerinin doğru çalışmayışıdır. Bu durum özellikle PvP odaklı sistemlerde ciddi performans ve deneyim düşüşüne neden olabilir. Bu yazıda Metin2Lobby olarak, HP/SP absorbe mekanizmasının nasıl düzeltileceği konusunda detaylı bilgi sunuyoruz.
HP/SP Absorbe Nedir?
HP/SP Absorbe, oyuncuların hasar verirken belirli bir yüzdesini kendi canına veya mana değerine aktarabilmesini sağlayan bir özelliktir. Bu sistem, savaş sırasında dayanıklılığı artırmak için sıklıkla tercih edilir. Ancak bazı özel sunucu kaynaklarında bu sistem eksik veya yanlış implemente edilmiş olabilir.
Sorunun Temeli
HP/SP Absorbe düzeltmelerinde en çok karşılaşılan hata, absorbe yüzdesinin hesaplanmasında yaşanan mantık eksiklikleridir. Özellikle C++ tabanlı sunucu kaynaklarında bu hesaplama sırasında taşma (overflow) veya negatif değerler oluşabilmektedir.
C++ Kaynak Kodlarında HP/SP Absorbe Düzeltme
Absorbe sisteminin düzgün çalışması için Game Core dosyalarında yer alan DamageHandler sınıfında değişiklik yapılması gerekir. Öncelikle, hasar verildiğinde absorbe miktarının doğru şekilde hesaplanması sağlanmalıdır.
Örnek olarak, hasar miktarı alındıktan sonra absorbe yüzdesiyle çarpılır ve 100'e bölünür. Bu işlem sırasında integer overflow engellenmelidir. Ayrıca, absorbe miktarı HP veya SP miktarını aşmamalıdır.
Python GUI ve Uiscript Entegrasyonu
Py Root üzerinde çalışan GUI sistemlerinde, absorbe değerlerinin doğru şekilde gösterimi için Uiscript dosyalarında gerekli güncellemeler yapılmalıdır. Bu, oyuncuların gerçek zamanlı olarak absorbe oranlarını takip edebilmesini sağlar.
Yanlış Uygulamalardan Kaçının
Eski sistemlerde absorbe, genellikle sadece SP'ye aktarılırdı. Ancak modern sistemlerde HP'ye de aktarılması istenebilir. Bu ayrımı yaparken dikkatli olunmalı ve DB Core üzerinden de bu bilgi tutulmalıdır.
Test ve Doğrulama
Değişiklikler yapıldıktan sonra, hem Auth hem de Game sunucusu üzerinde testler yapılmalıdır. Bu testler sırasında farklı itemlerle ve karakter seviyeleriyle absorbe oranları kontrol edilmelidir.
Sonuç
HP/SP Absorbe sisteminin düzgün çalışması, oyuncu deneyimini ciddi anlamda artırır. Bu sistemin doğru implementasyonu için hem Client Src hem de Server Src üzerinde çalışmak gerekir. Metin2Lobby olarak, bu tür sistemlerin geliştirilmesinde size rehberlik etmeye devam edeceğiz.
HP/SP Absorbe Fix Guide - Metin2 Developer Resource
One of the common issues encountered in Metin2 private servers is the malfunctioning of HP/SP Absorbe systems. This situation can cause significant performance and experience drops, especially in PvP-oriented systems. In this article, Metin2Lobby provides detailed information on how to fix the HP/SP absorbe mechanism.
What is HP/SP Absorbe?
HP/SP Absorbe is a feature that allows players to transfer a certain percentage of damage dealt back to their own health or mana. This system is frequently used to enhance survivability during combat. However, in some private server sources, this system may be incomplete or incorrectly implemented.
Root of the Problem
The most common error in HP/SP Absorbe fixes occurs during the calculation phase, where logical flaws exist. Especially in C++ based server sources, overflow or negative values can occur during the calculation process.
Fixing HP/SP Absorbe in C++ Source Code
To ensure the Absorbe system works correctly, modifications must be made to the DamageHandler class in the Game Core files. Initially, the amount of absorbe should be correctly calculated after receiving the damage value.
As an example, after obtaining the damage value, it is multiplied by the absorbe percentage and divided by 100. Integer overflow must be prevented during this operation. Additionally, the absorbe amount should not exceed the HP or SP limits.
Python GUI and Uiscript Integration
In GUI systems running on Py Root, necessary updates should be made in Uiscript files to properly display absorbe values. This allows players to track absorbe rates in real-time.
Avoid Incorrect Implementations
In older systems, absorbe was usually only applied to SP. However, in modern systems, it may also be desired for HP absorption. When making this distinction, care must be taken and this information should also be tracked via DB Core.
Testing and Validation
After changes are made, tests must be conducted on both Auth and Game servers. During these tests, absorbe values should be checked with various items and character levels.
Conclusion
Proper functioning of the HP/SP Absorbe system significantly enhances player experience. Correct implementation of this system requires work on both Client Src and Server Src. As Metin2Lobby, we will continue to guide you in the development of such systems.
