Kod:
ActorInstanceBattle.cpp açılır: Aratılır: void CActorInstance::__ProcessDataAttackSuccess(const NRaceData::TAttackData & c_rAttackData, CActorInstance & rVictim, const D3DXVECTOR3 & c_rv3Position, UINT uiSkill, BOOL isSendPacket) { if (NRaceData::HIT_TYPE_NONE == c_rAttackData.iHittingType) return; InsertDelay(c_rAttackData.fStiffenTime); if (__CanPushDestActor(rVictim) && c_rAttackData.fExternalForce > 0.0f) { __PushCircle(rVictim); // VICTIM_COLLISION_TEST const D3DXVECTOR3& kVictimPos = rVictim.GetPosition(); rVictim.m_PhysicsObject.IncreaseExternalForce(kVictimPos, c_rAttackData.fExternalForce); //*nForceRatio/100.0f); // VICTIM_COLLISION_TEST_END } // Invisible Time if (IS_PARTY_HUNTING_RACE(rVictim.GetRace())) { if (uiSkill) // ÆÄƼ »ç³É ¸ó½ºÅÍ¶óµµ ½ºÅ³ÀÌ¸é ¹«Àû½Ã°£ Àû¿ë rVictim.m_fInvisibleTime = CTimer::Instance().GetCurrentSecond() + c_rAttackData.fInvisibleTime; if (m_isMain) // #0000794: [M2KR] Æú¸®¸ðÇÁ - ¹ë·±½Ì ¹®Á¦ ŸÀÎ °ø°Ý¿¡ ÀÇÇÑ ¹«Àû ŸÀÓÀº °í·ÁÇÏÁö ¾Ê°í Àڽаø°Ý¿¡ ÀÇÇѰ͸¸ üũÇÑ´Ù rVictim.m_fInvisibleTime = CTimer::Instance().GetCurrentSecond() + c_rAttackData.fInvisibleTime; } else // ÆÄƼ »ç³É ¸ó½ºÅͰ¡ ¾Æ´Ò °æ¿ì¸¸ Àû¿ë { rVictim.m_fInvisibleTime = CTimer::Instance().GetCurrentSecond() + c_rAttackData.fInvisibleTime; } Değiştir: void CActorInstance::__ProcessDataAttackSuccess(const NRaceData::TAttackData & c_rAttackData, CActorInstance & rVictim, const D3DXVECTOR3 & c_rv3Position, UINT uiSkill, BOOL isSendPacket) { if (NRaceData::HIT_TYPE_NONE == c_rAttackData.iHittingType) return; InsertDelay(c_rAttackData.fStiffenTime); if (__CanPushDestActor(rVictim) && c_rAttackData.fExternalForce > 0.0f) { __PushCircle(rVictim); // VICTIM_COLLISION_TEST const D3DXVECTOR3& kVictimPos = rVictim.GetPosition(); rVictim.m_PhysicsObject.IncreaseExternalForce(kVictimPos, c_rAttackData.fExternalForce); //*nForceRatio/100.0f); // VICTIM_COLLISION_TEST_END } #ifdef __ENABLE_SHAMAN_ATTACK_FIX__ // Invisible Time if (IS_PARTY_HUNTING_RACE(rVictim.GetRace())) { if (uiSkill) // ÆÄƼ »ç³É ¸ó½ºÅÍ¶óµµ ½ºÅ³ÀÌ¸é ¹«Àû½Ã°£ Àû¿ë rVictim.m_fInvisibleTime = CTimer::Instance().GetCurrentSecond() + (c_rAttackData.fInvisibleTime - __GetInvisibleTimeAdjust(uiSkill, c_rAttackData)); if (m_isMain) // #0000794: [M2KR] Æú¸®¸ðÇÁ - ¹ë·±½Ì ¹®Á¦ ŸÀÎ °ø°Ý¿¡ ÀÇÇÑ ¹«Àû ŸÀÓÀº °í·ÁÇÏÁö ¾Ê°í Àڽаø°Ý¿¡ ÀÇÇѰ͸¸ üũÇÑ´Ù rVictim.m_fInvisibleTime = CTimer::Instance().GetCurrentSecond() + (c_rAttackData.fInvisibleTime - __GetInvisibleTimeAdjust(uiSkill, c_rAttackData)); } else // ÆÄƼ »ç³É ¸ó½ºÅͰ¡ ¾Æ´Ò °æ¿ì¸¸ Àû¿ë { rVictim.m_fInvisibleTime = CTimer::Instance().GetCurrentSecond() + (c_rAttackData.fInvisibleTime - __GetInvisibleTimeAdjust(uiSkill, c_rAttackData)); } #else // Invisible Time if (IS_PARTY_HUNTING_RACE(rVictim.GetRace())) { if (uiSkill) // ÆÄƼ »ç³É ¸ó½ºÅÍ¶óµµ ½ºÅ³ÀÌ¸é ¹«Àû½Ã°£ Àû¿ë rVictim.m_fInvisibleTime = CTimer::Instance().GetCurrentSecond() + c_rAttackData.fInvisibleTime; if (m_isMain) // #0000794: [M2KR] Æú¸®¸ðÇÁ - ¹ë·±½Ì ¹®Á¦ ŸÀÎ °ø°Ý¿¡ ÀÇÇÑ ¹«Àû ŸÀÓÀº °í·ÁÇÏÁö ¾Ê°í Àڽаø°Ý¿¡ ÀÇÇѰ͸¸ üũÇÑ´Ù rVictim.m_fInvisibleTime = CTimer::Instance().GetCurrentSecond() + c_rAttackData.fInvisibleTime; } else // ÆÄƼ »ç³É ¸ó½ºÅͰ¡ ¾Æ´Ò °æ¿ì¸¸ Àû¿ë { rVictim.m_fInvisibleTime = CTimer::Instance().GetCurrentSecond() + c_rAttackData.fInvisibleTime; } #endif // Stiffen Time rVictim.InsertDelay(c_rAttackData.fStiffenTime); [B]ActorInstance.h[/B] aç: //ara: protected: void __RunNextCombo(); void __ClearCombo(); void __OnEndCombo(); void __ProcessDataAttackSuccess(const NRaceData::TAttackData & c_rAttackData, CActorInstance & rVictim, const D3DXVECTOR3 & c_rv3Position, UINT uiSkill = 0, BOOL isSendPacket = TRUE); void __ProcessMotionEventAttackSuccess(DWORD dwMotionKey, BYTE byEventIndex, CActorInstance & rVictim); void __ProcessMotionAttackSuccess(DWORD dwMotionKey, CActorInstance & rVictim); //altına ekle #ifdef __ENABLE_SHAMAN_ATTACK_FIX__ float __GetInvisibleTimeAdjust(const UINT uiSkill, const NRaceData::TAttackData& c_rAttackData); #endif
Metin2 Özel Sunucularında Geliştirme: Bazı Sistemler Paylaşılacaktır
Metin2 özel sunucu geliştirme süreci, hem teknik bilgi gerektiren hem de yaratıcılıkla şekillenen oldukça keyifli bir alandır. Özellikle PvP sistemlerin ve C++ kaynak kod düzenlemelerinin yapıldığı bu ortamlarda, geliştiricilerin birbirleriyle paylaşım yapması büyük önem taşır. Bu yazıda, Metin2 özel sunucu geliştirme sürecinde bazı sistemlerin paylaşılacağından bahsedeceğiz.
Neden Sistem Paylaşımı Gereklidir?
Metin2 özel sunucuları, genellikle farklı oyun mekanikleri ve PvP odaklı sistemlerle geliştirilir. Bu sistemlerin çoğu zaman geliştirilmesi uzun ve karmaşık olabilir. Bu nedenle, geliştiricilerin birbirlerinden faydalanabilmesi için bazı sistemlerin paylaşılması, projelerin daha hızlı ve verimli ilerlemesini sağlar.
Paylaşılan Sistemler Nelerdir?
Geliştiriciler tarafından oluşturulan ve paylaşılan sistemler genellikle PvP sistemleri, güncelleme mekanikleri, C++ tabanlı oyun çekirdek düzenlemeleri ve Python GUI arayüzleri şeklinde olur. Örneğin, bir PvP sistemine özel canavar veya item spawn mekanizması, oyun deneyimini ciddi anlamda artırabilir. Ayrıca, Py Root ve UIScript düzenlemeleri sayesinde oyun istemcisi üzerinde değişiklikler yapılabilir.
Paylaşılan Sistemlerin Faydaları
Sistem paylaşımı sayesinde, yeni başlayan geliştiriciler kendi özel sunucularını daha hızlı kurabilir. Bu durum, topluluk içinde bilgi birikiminin artmasını sağlar. Ayrıca, mevcut sistemlerin üzerine inşa edilen yeni projeler, daha fazla oyuncu kitlesine ulaşabilir.
Metin2 Geliştirme Sürecinde Kaynak Kodların Kullanımı
Metin2 özel sunucularında source edit işlemleri, oyunun temel yapı taşlarını oluşturan çekirdek dosyaların düzenlenmesini içerir. Game ve Auth sunucularının kaynak kodları üzerinde yapılan değişiklikler, oyunun performansını ve özelliklerini doğrudan etkiler. Bu kodlar genellikle C++ dilinde yazılmıştır ve derlenerek çalıştırılır. Martysama gibi geliştirici platformları, bu tür kaynak kodların paylaşımında önemli bir rol oynar.
Veritabanı ve Oyun Sunucusu Bağlantısı
Metin2 özel sunucularında DB (veritabanı) çekirdekleri, oyunun veri yönetimini sağlar. Bu sistemler, oyuncu bilgileri, envanter içerikleri ve sunucu ayarları gibi kritik verileri barındırır. Doğru bir DB tasarımı, oyun sunucusunun daha hızlı ve güvenli çalışmasını sağlar. Geliştiriciler, bu veritabanı sistemlerini de birbirleriyle paylaşarak projelerini daha verimli hale getirebilirler.
Sonuç
Metin2 özel sunucu dünyasında, sistem paylaşımı, gelişimi hızlandıran en önemli unsurlardan biridir. Geliştiricilerin birbirleriyle destek olması, daha iyi oyun deneyimleri sunulmasına olanak tanır. Bu nedenle, bazı sistemlerin paylaşılması, topluluğun büyümesi ve Metin2 özel sunucularının gelişmesi açısından hayati öneme sahiptir.
Development in Metin2 Private Servers: Some Systems Will Be Shared
The process of developing Metin2 private servers is an enjoyable area that requires both technical knowledge and creativity. Especially in environments where PvP systems and C++ source code modifications are made, sharing among developers is very important. In this article, we will discuss that some systems will be shared during the Metin2 private server development process.
Why Is System Sharing Necessary?
Metin2 private servers often feature different game mechanics and PvP-focused systems. The creation of these systems can often be lengthy and complex. Therefore, sharing certain systems among developers allows projects to progress faster and more efficiently.
What Systems Are Being Shared?
Systems created by developers and shared usually include PvP systems, update mechanisms, C++-based game core modifications, and Python GUI interfaces. For instance, a special monster or item spawn mechanism for a PvP system can significantly enhance the gameplay experience. Additionally, modifications via Py Root and UIScript allow changes on the game client side.
Benefits of Shared Systems
Thanks to system sharing, new developers can set up their own private servers more quickly. This increases the accumulation of knowledge within the community. Moreover, new projects built upon existing systems may reach larger player bases.
Usage of Source Codes in Metin2 Development Process
In Metin2 private servers, source edit operations involve modifying core files that form the foundation of the game. Changes made to the source codes of Game and Auth servers directly affect the game's performance and features. These codes are generally written in C++ and compiled before execution. Developer platforms like Martysama play an important role in sharing such source codes.
Database and Game Server Connection
In Metin2 private servers, DB (database) cores manage the game's data. These systems store critical information such as player data, inventory contents, and server settings. A well-designed DB structure ensures that the game server runs faster and more securely. Developers can also share these database systems with each other to make their projects more efficient.
Conclusion
In the world of Metin2 private servers, system sharing is one of the most important factors accelerating growth. Mutual support among developers enables better gaming experiences. Therefore, sharing certain systems is vital for the expansion of the community and the advancement of Metin2 private servers.
