Hp çalma;
Önceki çalışma mantığı >
Efsun varsa her hasarda 1/10 oranla aktif olur
iCurHP tanımlı olmadığı için sadece varolan orana "1" ekler, %5 HP Çalma efsunu varsa 6 hp çalar
Düzenlenmiş şekilde çalışma mantığı >
Efsun varsa her hasar efsun oranı % kaç ise o oranda aktif olur
iCurHP değeri CurrentHP yani o anki varolan hp miktarına tanımlandı dolayısıyla mantık şu şekil değiştirildi Minimum(hasar, Maksimum(0, MevcutHP))
Koşullar düzenlendi, hp kontrolü eklendi
FLY çok küçük olduğundan medium olarak düzenlendi( Medium HP FLY ve SMALL SP FLY oranı )
Sp çalma;
Önceki çalışma mantığı >
Efsun varsa her hasarda 1/10 oranla aktif olur
Hedef mob ise sp yerine hp çalar
iCurHP ve iCurSP tanımlı olmadığı için var olan orana 1 ekler.
Düzenlenmiş şekilde çalışma mantığı >
Efsun varsa her hasar efsun oranı % kaç ise o oranda aktif olur
Hedef mob ise bu efsunu pas geçer
iCurSP değeri CurrentSP olarak düzenlendi, dolayısıyla mantık şu şekil değiştirildi Minimum(hasar, Maksimum(0, MevcutSP))
Koşullar düzenlendi, sp kontrolü eklendi
FLY çok küçük olduğundan medium olarak düzenlendi
%5 oranla ortalama çalma miktarları 6-20 arası ikisi içinde maksimum oran %50 ayarlanmış. Maksimumda ortalama 60-200 arası çalma mevcut
*char_battle.cpp
Arat:
Değiştir:
HP ve SP Çalma Sistemi Fixi Nedir?
Metin2 özel sunucularında karşılaşılan yaygın problemlerden birisi, karakterlerin HP (Can) ve SP (Enerji) değerlerinin istenmeyen şekilde çalınmasıdır. Bu durum genellikle hatalı sistem kodlamaları, script eksiklikleri veya güvenlik açıklarından kaynaklanabilir. Bu yazıda, HP ve SP çalma sorununu nasıl düzelteceğimizi detaylıca ele alacağız.
HP/SP Çalma Sorununun Kaynağı
Metin2 özel sunucu geliştirme süreçlerinde, özellikle PVP sistemlerinde bazı scriptlerin yanlış yapılandırılması, karakterlerin can veya enerji değerlerinin başka oyuncular tarafından çalınmasına neden olabilir. Bu genellikle C++ kaynak kodlarında yapılan eksiklikler ya da Python GUI scriptlerinde yetersiz kontrol mekanizmalarından doğar. Örneğin, bir saldırı sırasında hasar hesaplaması yapılırken, saldırganın SP harcaması yapılmadan işlem gerçekleştirilirse, bu tür hatalar ortaya çıkabilir.
Fix Uygulama Adımları
Öncelikle, game core dosyalarında bulunan hasar hesaplama fonksiyonlarını kontrol etmelisiniz. Özellikle client src kısmında yer alan uiscript dosyalarında, SP tüketimi kontrolü yapılmayan yetenekler varsa burada bir açığınız vardır. Bunun için py root kısmında yer alan yetenek sistemlerinde SP harcamasının yapıldığından emin olunmalıdır.
Ayrıca, db core üzerinden gelen verilerin doğruluğundan emin olmak için, karakterin mevcut SP değerini kontrol eden bir güvenlik katmanı eklemek önemlidir. Bu kontrolü yapabilmek için auth ve game sunucuları arasında doğru senkronizasyonun sağlanması gerekir.
Python GUI ve Yetenek Scriptlerinde Kontroller
Python tabanlı yetenek sistemlerinde, her saldırıdan önce SP değeri kontrol edilmeli ve yeterli değilse işlemin iptal edilmesi sağlanmalıdır. Bu, PyGUI arayüzlerinde veya doğrudan C++ source edit kısmında yapılabilir. Martysama gibi popüler sistemlerde bu tür kontrollerin mevcut olması önerilir ancak her zaman doğru yapılandırılmamış olabilir. Bu yüzden manuel olarak kontrol etmek gerekir.
Olası Hata Senaryoları
Bazı özel sunucularda, yeteneklerin çoklu kullanımında SP azalmaması gibi hatalar görülebilir. Bu, hem oyun dengesini bozar hem de hileli davranışlara neden olur. Eğer bir yetenek birden fazla kez hızlıca kullanılıyorsa ve SP azalmıyorsa, bu yeteneğin çağrıldığı fonksiyonda zamanlayıcı (cooldown) kontrolü eksik demektir.
Sonuç
HP ve SP çalma fixi, Metin2 özel sunucularında güvenliği ve oyun dengesini sağlamak adına kritik öneme sahiptir. Hem source edit hem de pack süreçlerinde dikkatli olunması gereken bu konu, metin2dev süreçlerinde sıkça gündeme gelir. Doğru yapılandırılmış bir sistem sayesinde hem kullanıcı deneyimi artırılır hem de sunucu güvenliği sağlanır. Bu fixleri uygularken C++ system ve Python system arasındaki entegrasyonu göz önünde bulundurmanız önemlidir.
What is the HP and SP Stealing Fix?
One of the common problems encountered in Metin2 private servers is the unwanted stealing of character HP (Health) and SP (Spirit) values. This issue generally stems from faulty system coding, missing scripts, or security vulnerabilities. In this article, we will detail how to fix the HP and SP stealing issue.
Source of the HP/SP Stealing Problem
During Metin2 private server development, especially within PVP systems, incorrect configuration of certain scripts can lead to characters' health or spirit values being stolen by other players. This often arises from deficiencies in C++ source code or insufficient control mechanisms in Python GUI scripts. For instance, if a skill consumes no SP during damage calculation, such errors may occur.
Steps to Apply the Fix
Firstly, check the damage calculation functions located in the game core files. Particularly in the client src section within the uiscript files, if there are skills that do not consume SP, you have a vulnerability. Ensure that SP consumption occurs within the ability systems located in the py root section.
Additionally, to ensure the correctness of data coming from the db core, implement a security layer that checks the player's current SP value. To achieve this, synchronization between the auth and game servers must be properly established.
Controls in Python GUI and Skill Scripts
In Python-based skill systems, SP values should be checked before each attack, and if insufficient, the action must be canceled. This can be implemented either in PyGUI interfaces or directly within the C++ source edit sections. Systems like Martysama are recommended to include such controls, but they might not always be configured correctly. Therefore, manual verification is necessary.
Possible Error Scenarios
In some private servers, SP may not decrease upon repeated use of a skill, leading to imbalances in gameplay and enabling cheating behaviors. If a skill can be used multiple times rapidly without SP reduction, the cooldown mechanism in the function calling the skill is likely missing.
Conclusion
The HP and SP stealing fix is crucial for maintaining balance and security in Metin2 private servers. This topic, which requires attention in both source edit and pack processes, frequently comes up during metin2dev workflows. Correctly configured systems enhance user experience and secure the server. While applying these fixes, it’s important to consider integration between C++ system and Python system.
Önceki çalışma mantığı >
Efsun varsa her hasarda 1/10 oranla aktif olur
iCurHP tanımlı olmadığı için sadece varolan orana "1" ekler, %5 HP Çalma efsunu varsa 6 hp çalar
Düzenlenmiş şekilde çalışma mantığı >
Efsun varsa her hasar efsun oranı % kaç ise o oranda aktif olur
iCurHP değeri CurrentHP yani o anki varolan hp miktarına tanımlandı dolayısıyla mantık şu şekil değiştirildi Minimum(hasar, Maksimum(0, MevcutHP))
Koşullar düzenlendi, hp kontrolü eklendi
FLY çok küçük olduğundan medium olarak düzenlendi( Medium HP FLY ve SMALL SP FLY oranı )
Sp çalma;
Önceki çalışma mantığı >
Efsun varsa her hasarda 1/10 oranla aktif olur
Hedef mob ise sp yerine hp çalar
iCurHP ve iCurSP tanımlı olmadığı için var olan orana 1 ekler.
Düzenlenmiş şekilde çalışma mantığı >
Efsun varsa her hasar efsun oranı % kaç ise o oranda aktif olur
Hedef mob ise bu efsunu pas geçer
iCurSP değeri CurrentSP olarak düzenlendi, dolayısıyla mantık şu şekil değiştirildi Minimum(hasar, Maksimum(0, MevcutSP))
Koşullar düzenlendi, sp kontrolü eklendi
FLY çok küçük olduğundan medium olarak düzenlendi
%5 oranla ortalama çalma miktarları 6-20 arası ikisi içinde maksimum oran %50 ayarlanmış. Maksimumda ortalama 60-200 arası çalma mevcut
*char_battle.cpp
Arat:
Kod:
if (pAttacker->GetPoint(POINT_STEAL_HP)) { int pct = 1; if (number(1, 10) <= pct) { int iHP = MIN(dam, MAX(0, iCurHP)) * pAttacker->GetPoint(POINT_STEAL_HP) / 100; if (iHP > 0 && GetHP() >= iHP) { CreateFly(FLY_HP_SMALL, pAttacker); pAttacker->PointChange(POINT_HP, iHP); PointChange(POINT_HP, -iHP); } } } // SP ½ºÆ¿ if (pAttacker->GetPoint(POINT_STEAL_SP)) { int pct = 1; if (number(1, 10) <= pct) { int iCur; if (IsPC()) iCur = iCurSP; else iCur = iCurHP; int iSP = MIN(dam, MAX(0, iCur)) * pAttacker->GetPoint(POINT_STEAL_SP) / 100; if (iSP > 0 && iCur >= iSP) { CreateFly(FLY_SP_SMALL, pAttacker); pAttacker->PointChange(POINT_SP, iSP); if (IsPC()) PointChange(POINT_SP, -iSP); } } }
Değiştir:
Kod:
int iStealHP_ptr = pAttacker->GetPoint(POINT_STEAL_HP); if (iStealHP_ptr) { if (number(1, 100) <= iStealHP_ptr) { int iHP = MIN(dam, MAX(0, GetHP())) * pAttacker->GetPoint(POINT_STEAL_HP) / 100; if ((pAttacker->GetHP() > 0) && (pAttacker->GetHP() + iHP < pAttacker->GetMaxHP()) && (GetHP() > 0) && (iHP > 0)) { CreateFly(FLY_HP_MEDIUM, pAttacker); pAttacker->PointChange(POINT_HP, iHP); PointChange(POINT_HP, -iHP); } } } // SP ½ºÆ¿ int iStealSP_ptr = pAttacker->GetPoint(POINT_STEAL_SP); if (iStealSP_ptr) { if (IsPC() && pAttacker->IsPC()) { if (number(1, 100) <= iStealSP_ptr) { int iSP = MIN(dam, MAX(0, GetSP())) * pAttacker->GetPoint(POINT_STEAL_SP) / 100; if ((pAttacker->GetSP() > 0) && (pAttacker->GetSP() + iSP < pAttacker->GetMaxSP()) && (GetSP() > 0) && (iSP > 0)) { CreateFly(FLY_SP_MEDIUM, pAttacker); pAttacker->PointChange(POINT_SP, iSP); PointChange(POINT_SP, -iSP); } } } }
HP ve SP Çalma Sistemi Fixi Nedir?
Metin2 özel sunucularında karşılaşılan yaygın problemlerden birisi, karakterlerin HP (Can) ve SP (Enerji) değerlerinin istenmeyen şekilde çalınmasıdır. Bu durum genellikle hatalı sistem kodlamaları, script eksiklikleri veya güvenlik açıklarından kaynaklanabilir. Bu yazıda, HP ve SP çalma sorununu nasıl düzelteceğimizi detaylıca ele alacağız.
HP/SP Çalma Sorununun Kaynağı
Metin2 özel sunucu geliştirme süreçlerinde, özellikle PVP sistemlerinde bazı scriptlerin yanlış yapılandırılması, karakterlerin can veya enerji değerlerinin başka oyuncular tarafından çalınmasına neden olabilir. Bu genellikle C++ kaynak kodlarında yapılan eksiklikler ya da Python GUI scriptlerinde yetersiz kontrol mekanizmalarından doğar. Örneğin, bir saldırı sırasında hasar hesaplaması yapılırken, saldırganın SP harcaması yapılmadan işlem gerçekleştirilirse, bu tür hatalar ortaya çıkabilir.
Fix Uygulama Adımları
Öncelikle, game core dosyalarında bulunan hasar hesaplama fonksiyonlarını kontrol etmelisiniz. Özellikle client src kısmında yer alan uiscript dosyalarında, SP tüketimi kontrolü yapılmayan yetenekler varsa burada bir açığınız vardır. Bunun için py root kısmında yer alan yetenek sistemlerinde SP harcamasının yapıldığından emin olunmalıdır.
Ayrıca, db core üzerinden gelen verilerin doğruluğundan emin olmak için, karakterin mevcut SP değerini kontrol eden bir güvenlik katmanı eklemek önemlidir. Bu kontrolü yapabilmek için auth ve game sunucuları arasında doğru senkronizasyonun sağlanması gerekir.
Python GUI ve Yetenek Scriptlerinde Kontroller
Python tabanlı yetenek sistemlerinde, her saldırıdan önce SP değeri kontrol edilmeli ve yeterli değilse işlemin iptal edilmesi sağlanmalıdır. Bu, PyGUI arayüzlerinde veya doğrudan C++ source edit kısmında yapılabilir. Martysama gibi popüler sistemlerde bu tür kontrollerin mevcut olması önerilir ancak her zaman doğru yapılandırılmamış olabilir. Bu yüzden manuel olarak kontrol etmek gerekir.
Olası Hata Senaryoları
Bazı özel sunucularda, yeteneklerin çoklu kullanımında SP azalmaması gibi hatalar görülebilir. Bu, hem oyun dengesini bozar hem de hileli davranışlara neden olur. Eğer bir yetenek birden fazla kez hızlıca kullanılıyorsa ve SP azalmıyorsa, bu yeteneğin çağrıldığı fonksiyonda zamanlayıcı (cooldown) kontrolü eksik demektir.
Sonuç
HP ve SP çalma fixi, Metin2 özel sunucularında güvenliği ve oyun dengesini sağlamak adına kritik öneme sahiptir. Hem source edit hem de pack süreçlerinde dikkatli olunması gereken bu konu, metin2dev süreçlerinde sıkça gündeme gelir. Doğru yapılandırılmış bir sistem sayesinde hem kullanıcı deneyimi artırılır hem de sunucu güvenliği sağlanır. Bu fixleri uygularken C++ system ve Python system arasındaki entegrasyonu göz önünde bulundurmanız önemlidir.
What is the HP and SP Stealing Fix?
One of the common problems encountered in Metin2 private servers is the unwanted stealing of character HP (Health) and SP (Spirit) values. This issue generally stems from faulty system coding, missing scripts, or security vulnerabilities. In this article, we will detail how to fix the HP and SP stealing issue.
Source of the HP/SP Stealing Problem
During Metin2 private server development, especially within PVP systems, incorrect configuration of certain scripts can lead to characters' health or spirit values being stolen by other players. This often arises from deficiencies in C++ source code or insufficient control mechanisms in Python GUI scripts. For instance, if a skill consumes no SP during damage calculation, such errors may occur.
Steps to Apply the Fix
Firstly, check the damage calculation functions located in the game core files. Particularly in the client src section within the uiscript files, if there are skills that do not consume SP, you have a vulnerability. Ensure that SP consumption occurs within the ability systems located in the py root section.
Additionally, to ensure the correctness of data coming from the db core, implement a security layer that checks the player's current SP value. To achieve this, synchronization between the auth and game servers must be properly established.
Controls in Python GUI and Skill Scripts
In Python-based skill systems, SP values should be checked before each attack, and if insufficient, the action must be canceled. This can be implemented either in PyGUI interfaces or directly within the C++ source edit sections. Systems like Martysama are recommended to include such controls, but they might not always be configured correctly. Therefore, manual verification is necessary.
Possible Error Scenarios
In some private servers, SP may not decrease upon repeated use of a skill, leading to imbalances in gameplay and enabling cheating behaviors. If a skill can be used multiple times rapidly without SP reduction, the cooldown mechanism in the function calling the skill is likely missing.
Conclusion
The HP and SP stealing fix is crucial for maintaining balance and security in Metin2 private servers. This topic, which requires attention in both source edit and pack processes, frequently comes up during metin2dev workflows. Correctly configured systems enhance user experience and secure the server. While applying these fixes, it’s important to consider integration between C++ system and Python system.
