game_2089m
00081932: e8 90
00081933: e6 90
00081934: c5 90
0008199C: fa 90
0008199D: ff 90
0008199E: c7 90
34083core
game34k
0008195B: E8 90
0008195C: 50 90
0008195D: C6 90
0008195E: FA 90
0008195F: FF 90
Alttaki dif te
Maxmi v1.2.3 filesinde test ettim başarılı
34k için
0008AEE0: 32 FF
0008AEE1: 00 FF
0008AEE2: 00 FF
0008AF49: 32 FF
0008AF4A: 00 FF
0008AF4B: 00 FF
Kanıt
00081932: e8 90
00081933: e6 90
00081934: c5 90
0008199C: fa 90
0008199D: ff 90
0008199E: c7 90
34083core
game34k
0008195B: E8 90
0008195C: 50 90
0008195D: C6 90
0008195E: FA 90
0008195F: FF 90
Alttaki dif te
Maxmi v1.2.3 filesinde test ettim başarılı
34k için
0008AEE0: 32 FF
0008AEE1: 00 FF
0008AEE2: 00 FF
0008AF49: 32 FF
0008AF4A: 00 FF
0008AF4B: 00 FF
Kanıt
Resimde yanlış anlaşılmış olabilir .sürekli hpniz full değil ölünce eksiye düşüyor Öldükten sonra dirilince full hp ile doğuyorsunuz.yani ölünce caniniz eksi kac k olduğunu görüyorsunuz
Daha önce paylaşıldı fakat çeşitli hataları vardı
[DIFF] Ölünce negatif HP sorunu
Metin2 özel sunucularında geliştirme yaparken karşılaşılan yaygın sorunlardan birisi de karakter öldükten sonra HP değerinin negatif kalmasıdır.
Bu durum genellikle oyuncu deneyimini olumsuz etkiler çünkü karakterin öldüğü halde sağ kalmış gibi görünmesi, savaş sırasında kafa karışıklığına neden olabilir.
HP değerinin negatif kalmasının temel nedeni, genellikle hasar hesaplama mantığında meydana gelen eksikliklerden veya canavarlar tarafından verilen hasarın karakterin mevcut HP değerinden fazla olması durumunda doğru şekilde sıfırlanmamasından kaynaklanmaktadır.
Bu hatayı düzeltmek için, önce karakterin can değerini kontrol eden fonksiyonları gözden geçirmek gerekir.
Genellikle game_core dosyalarında yer alan character.cpp veya benzeri dosyalarda HP azaltma işlemleri yapılır.
Burada dikkat edilmesi gereken husus, hasar miktarı ne olursa olsun karakterin HP değerinin asla eksiye düşmemesi, 0'ın altına inemeyeceği şeklinde ayarlanmalıdır.
Örnek olarak:
Bir karakterin 50 HP'si varsa ve 70 hasar alıyorsa, HP değeri -20 değil, 0 olmalıdır.
Bu işlem genellikle bir kontrol satırı ile yapılır:
if (hp <= 0) hp = 0;
Ayrıca, öldürücü darbe sonrasında karakterin otomatik olarak ölü konumuna gönderilmesi ve düşman listelerinin temizlenmesi gibi işlemler de yapılmalıdır.
Aksi takdirde, karakter öldüğü halde sistemde canlı olarak kalabilir ve hatalı davranışlar sergileyebilir.
Metin2 özel sunucularında bu tür hataların önlenmesi için genellikle source edit işlemleri yapılırken C++ bilgisi çok önemlidir.
Oyun motorunun temel fonksiyonları bu dilde yazılmıştır ve doğru müdahalelerle bu tür sorunlar kolayca çözülebilir.
Python script tarafında da bazı kontroller yapılabilir.
Ancak genellikle bu tür sistemsel hataların kökeni C++ tarafındadır.
Diğer taraftan, db_core ve auth_server arasında veri aktarımı sırasında da bazı durumlarda HP güncellemeleri eksik kalabilir.
Bu sebeple, karakter öldüğünde hem oyun sunucusunda hem de veritabanında doğru güncellemelerin yapılması önemlidir.
Bu sorunun çözümü için önerilen adımlar:
1. Karakterin HP azaltma fonksiyonlarında sınırsız azalma engeli getirin.
2. Ölüm durumu kontrolünü sağlayan fonksiyonu gözden geçirin.
3. Canavar saldırılarında fazla hasar alındığında HP'nin sıfırlanmasını sağlayın.
4. DB ve Game sunucu senkronizasyonunu kontrol edin.
Sonuç olarak, Metin2 özel sunucularında sağlıklı bir PvP sistem kurabilmek için bu tür küçük ama etkili hataların giderilmesi büyük önem taşır.
Metin2lobby.com olarak, bu tür teknik sorunların çözümüne yönelik kaynaklar sunmaya devam ediyoruz.
[DIFF] Negative HP Issue After Death
One of the common issues encountered during development of Metin2 private servers is the problem where character HP remains negative after death.
This situation generally negatively affects player experience because it may seem like the character is still alive even after dying, causing confusion during combat scenarios.
The main cause of HP remaining negative usually stems from missing logic in damage calculations or failure to properly reset the character's HP to zero when the damage dealt by monsters exceeds the character's current HP value.
To fix this issue, first review functions that control character HP values.
In most cases, HP reduction operations are handled within files such as character.cpp located in game_core folders.
Here, care must be taken to ensure that no matter how much damage is dealt, the character's HP should never drop below zero.
For example:
If a character has 50 HP and receives 70 damage, the HP value should be 0 instead of -20.
This operation is typically handled with a control statement:
if (hp <= 0) hp = 0;
Additionally, after a fatal blow, the character must automatically be sent to their death location and enemy lists cleared.
Otherwise, the character might remain active in the system despite being dead, leading to incorrect behavior.
In Metin2 private servers, avoiding such errors often requires source editing using C++.
Core game engine functions are written in this language, and proper interventions can easily resolve such issues.
Python scripts can also be used for certain checks.
However, such systemic bugs typically originate on the C++ side.
On the other hand, during data transfers between db_core and auth_server, HP updates may sometimes fail to register correctly.
Thus, ensuring proper HP updates both in the game server and database upon character death is crucial.
Steps recommended for resolving this issue:
1. Implement limits in HP reduction functions to prevent unlimited decreases.
2. Review the function responsible for checking death status.
3. Ensure HP is reset to zero when excessive damage occurs during monster attacks.
4. Check DB and Game server synchronization.
In conclusion, resolving small but impactful bugs like this is critical for establishing a healthy PvP environment in Metin2 private servers.
At Metin2lobby.com, we continue to provide resources aimed at solving such technical issues.
