* game/src/packet.h
Arat:
Kod:
} TPacketCGRefine;
Üzerine ekle:
Kod:
bool extra_luck;
---
* game/src/input_main.cpp
Arat:
Kod:
ch->DoRefine(item);
Değiştir:
Kod:
ch->DoRefine(item, false, p->extra_luck);
---
* game/src/char.h
Arat:
Kod:
bool DoRefine(LPITEM item, bool bMoneyOnly = false);
Değiştir:
Kod:
bool DoRefine(LPITEM item, bool bMoneyOnly = false, bool bExtraLuck = false);
---
* game/src/char_item.cpp
Arat:
Kod:
bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
Değiştir:
Kod:
bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly, bool bExtraLuck)
---
Arat:
Kod:
if (IsRefineThroughGuild() || bMoneyOnly) prob -= 10;
Altına ekle:
Kod:
if (bExtraLuck) prob -= 10;
---
* client/UserInterface/PythonNetworkStreamModule.cpp
Ekle:
Kod:
#include "PythonCharacterManager.h"
---
Arat:
Kod:
CPythonNetworkStream& rns=CPythonNetworkStream::Instance(); rns.SendRefinePacket(iSlotIndex, iType);
Değiştir:
Kod:
auto bExtraLuck = false; if (iType == 0) // Standart refine { // Find Blacksmith CPythonCharacterManager& rkChrMgr = CPythonCharacterManager::Instance(); for (auto i = rkChrMgr.CharacterInstanceBegin(); i != rkChrMgr.CharacterInstanceEnd(); ++i) { auto pkInstEach = *i; if (pkInstEach->GetRace() != 20016) continue; const auto stMotionFile = pkInstEach->GetCurrentMotionName(); const auto bInMidFrame = pkInstEach->IsMotionInMidFrame(); bExtraLuck = (stMotionFile.find("wait_2.gr2") != std::string::npos) && bInMidFrame; break; } } CPythonNetworkStream& rns=CPythonNetworkStream::Instance(); rns.SendRefinePacket(iSlotIndex, iType, bExtraLuck);
---
* client/gamelib/ActorInstanceMotion.cpp
Arat:
Kod:
DWORD CActorInstance::__GetCurrentMotionKey() { return m_kCurMotNode.dwMotionKey; }
Altına ekle:
Kod:
bool CActorInstance::IsMotionInMidFrame() const { if (!m_pkCurRaceMotionData) return false; static constexpr size_t FRAME_GAP = 20; if (m_kCurMotNode.dwcurFrame > FRAME_GAP && m_kCurMotNode.dwcurFrame < m_kCurMotNode.dwFrameCount && (m_kCurMotNode.dwFrameCount - m_kCurMotNode.dwcurFrame) > FRAME_GAP) { return true; } return false; } std::string CActorInstance::GetCurrentMotionFilename() const { if (!m_pkCurRaceMotionData) return {}; return m_pkCurRaceMotionData->GetMotionFileName(); }
---
* client/gamelib/ActorInstance.h
Arat:
Kod:
bool __CanInputNormalAttackCommand();
Altına ekle:
Kod:
bool IsMotionInMidFrame() const; std::string GetCurrentMotionFilename() const;
---
* client/UserInterface/InstanceBaseMotion.cpp
Arat:
Kod:
void CInstanceBase::SetLoopMotion(WORD wMotion, float fBlendTime/* =0.1f */, float fSpeedRatio) { m_GraphicThingInstance.SetLoopMotion(wMotion, fBlendTime, fSpeedRatio); }
Altına ekle:
Kod:
bool CInstanceBase::IsMotionInMidFrame() const { return m_GraphicThingInstance.IsMotionInMidFrame(); } std::string CInstanceBase::GetCurrentMotionName() const { return m_GraphicThingInstance.GetCurrentMotionFilename(); }
---
* client/UserInterface/InstanceBase.h
Arat:
Kod:
void SetEndStopMotion();
Altına ekle:
Kod:
bool IsMotionInMidFrame() const; std::string GetCurrentMotionName() const;
---
* client/UserInterface/PythonNetworkStreamPhaseGame.çpp
Arat:
Kod:
bool CPythonNetworkStream::SendRefinePacket(BYTE byPos, BYTE byType)
Değiştir:
Kod:
bool CPythonNetworkStream::SendRefinePacket(BYTE byPos, BYTE byType, bool bExtraLuck)
---
Arat:
Kod:
kRefinePacket.type = byType;
Altına ekle:
Kod:
kRefinePacket.extra_luck = bExtraLuck;
---
* client/UserInterface/Packet.h
Arat:
Kod:
} TPacketCGRefine;
Üzerine ekle:
Kod:
bool extra_luck;
Demirci Alnını Silerken Basma Şansını Artırma Rehberi
Metin2 özel sunucularında demirci alnını silme işlemi, oyuncular için hayati öneme sahiptir. Özellikle yüksek seviye PvP savaşlarında alnın taşıdığı bonuslar, karakter gücünü doğrudan etkiler. Ancak bu alnı silmek risklidir çünkü başarısızlık durumunda alnınız kırılabilir. Bu nedenle, basma şansını artırmak büyük önem taşır.
Alnın Yapısı ve Önemi
Metin2'de alnın her seviyesi, belirli bonuslar sağlar. Örneğin, A+ alnınız varsa, can, hasar, defans gibi değerlerde ciddi artışlar gözlemlenir. Bu bonuslar, PvP savaşlarında kazanma ihtimalinizi doğrudan etkiler. Ancak alnın seviyesi yükseldikçe silme işlemi zorlaşır ve başarısızlık oranı artar.
Basma Şansını Artırma Yöntemleri
1. Güçlü Silme Eşyaları Kullanın
Metin2 özel sunucularında alnınızı silmek için doğru eşyaları kullanmak kritiktir. Success Scroll gibi yüksek başarı oranına sahip silme eşyaları tercih edilmelidir. Bazı sunucularda Premium veya VIP paketlerle elde edilen silme eşyaları daha yüksek şansa sahiptir.
2. Sunucu Ayarlarını Kontrol Edin
Sunucu yapılandırmasında aln silme oranları ayarlanabilmektedir. C++ kaynak kod üzerinden yapılan düzenlemelerle, aln silme şansını artırabilirsiniz. Eğer bir server adminiyseniz, game core dosyalarında gerekli değişiklikleri yaparak bu oranı artırabilirsiniz.
3. Bonus Eşyaları Kullanın
Silme işlemi sırasında kullanılabilecek bonus eşyalarla başarı şansı artırılabilir. Bless Scroll, Soul Scroll gibi eşyalar, alnın kırılma riskini azaltabilir veya başarı oranını artırabilir. Bu eşyalar genellikle pack sisteminden veya martysama gibi gelişmiş sistemlerle elde edilebilir.
4. Backup Alnın Olması
Her silme işlemi öncesi, aynı alnın yedeğini tutmak akıllıca olacaktır. Böylece başarısız bir silme sonucunda eski halinize kolayca dönebilirsiniz. Bu özellikle db core üzerinde iyi bilgiye sahip olan geliştiriciler için mümkündür.
Geliştirici Perspektifinden Aln Silme
Eğer Metin2 özel sunucusu geliştiriyorsanız, aln silme sistemini özelleştirmek isteyebilirsiniz. Python tabanlı sistemlerde py gui ile uiscript üzerinden kullanıcı dostu arayüzler oluşturabilir, aln silme oranlarını grafiksel olarak gösterebilirsiniz. Source edit işlemleriyle de bu sistemleri özgünleştirebilirsiniz.
Aln Silme Oranlarını Ayarlama
C++ tabanlı server src üzerinde çalışıyorsanız, aln silme oranlarını doğrudan kod seviyesinde değiştirebilirsiniz. Bu işlem, game server programming bilgisi gerektirir. Compile işlemi sonrası bu değişiklikler aktif hale gelir. Auth ve game sunucularında senkronizasyon önemli olabilir.
Sonuç
Alnınızı silerken basma şansınızı artırmak, hem PvP performansınızı artırır hem de maddi kayıplarınızı azaltır. Doğru eşyaları kullanmak, sunucu yapılandırmaları üzerinden ayarlamalar yapmak ve backup stratejileri geliştirmek bu süreci kolaylaştırır. Geliştiriciler için bu sistemlerin kaynak kod düzeyinde özelleştirilmesi ise uzun vadede büyük avantaj sağlar.
Increase Your Chances of Breaking the Blacksmith's Forehead While Removing It
In Metin2 private servers, removing the blacksmith's forehead is vital for players. Especially in high-level PvP battles, the bonuses carried by the forehead directly impact character strength. However, removing the forehead is risky because failure can break it. Therefore, increasing the success chance is highly important.
Structure and Importance of the Forehead
In Metin2, each level of the forehead grants specific bonuses. For example, having an A+ forehead significantly increases values like HP, damage, and defense. These bonuses directly influence your chances of winning in PvP combat. As the forehead level rises, the removal process becomes more difficult and the failure rate increases.
Methods to Increase Success Chance
1. Use Powerful Removal Items
Using the right items to remove your forehead is critical in Metin2 private servers. Items like Success Scroll that offer high success rates should be preferred. On some servers, removal items obtained through Premium or VIP packages have higher success rates.
2. Check Server Settings
Forehead removal rates can be configured in the server setup. By modifying settings through C++ source code, you can increase the forehead removal success rate. If you are a server admin, you can adjust these rates by editing the game core files.
3. Use Bonus Items
Bonus items used during the removal process can increase the success chance. Items like Bless Scroll or Soul Scroll may reduce the risk of breaking the forehead or boost the success rate. These items can often be acquired via pack systems or advanced setups like martysama.
4. Keep a Backup Forehead
Before each removal attempt, keeping a duplicate of the same forehead is advisable. This allows you to easily revert to your previous state if the removal fails. This approach is particularly feasible for developers with good knowledge of db core.
Forehead Removal from a Developer Perspective
If you are developing a Metin2 private server, you might want to customize the forehead removal system. Using Python-based systems with py gui and uiscript, you can create user-friendly interfaces and visually display forehead removal probabilities. With source edit techniques, you can customize these systems uniquely.
Adjusting Forehead Removal Rates
If working on C++-based server src, you can modify forehead removal rates directly at the code level. This requires knowledge of game server programming. After a compile operation, these changes become active. Synchronization between auth and game servers may also be important.
Conclusion
Increasing your chances of successfully removing your forehead not only enhances your PvP performance but also reduces financial losses. Using the correct items, making adjustments through server configurations, and developing backup strategies simplify this process. For developers, customizing these systems at the source code level offers long-term advantages.
