Sol Reklam
Sağ Reklam
What's new

[C++] GM WallHack (ONLY Client source)

KONU YAZAR

Sorto17

New member
Onaylı Üye
Apr
15
14
1
Guide to Implementing GM Movement Without Collisions in Metin2

1. Modify Locale_inc.h

Add the following define:


Kod:


#define ENABLE_GM_WITHOUT_COLLISIONS

2. Update ActorInstanceCollisionDetection.cpp

Replace the following functions with their updated versions:

- CActorInstance::AvoidObject


Kod:


bool CActorInstance::AvoidObject(const CGraphicObjectInstance& c_rkBGObj)
{
#ifdef ENABLE_GM_WITHOUT_COLLISIONS
if (IAbstractPlayer::GetSingleton().IsGameMasterInstance(GetVirtualID())) {
return false;
}
#endif
#ifdef __MOVIE_MODE__
if (IsMovieMode())
return false;
#endif
if (this == &c_rkBGObj)
return false;
if (!__TestObjectCollision(&c_rkBGObj))
return false;
__AdjustCollisionMovement(&c_rkBGObj);
return true;
}

- CActorInstance::IsBlockObject


Kod:


bool CActorInstance::IsBlockObject(const CGraphicObjectInstance& c_rkBGObj)
{
#ifdef ENABLE_GM_WITHOUT_COLLISIONS
if (IAbstractPlayer::GetSingleton().IsGameMasterInstance(GetVirtualID())) {
return false;
}
#endif
if (this == &c_rkBGObj)
return false;
if (!__TestObjectCollision(&c_rkBGObj))
return false;
return true;
}

- CActorInstance::CanSkipCollision

Kod:


bool CActorInstance::CanSkipCollision()
{
#ifdef ENABLE_GM_WITHOUT_COLLISIONS
if (IAbstractPlayer::GetSingleton().IsGameMasterInstance(GetVirtualID())) {
return true;
}
#endif
return m_canSkipCollision;
}

3. Modify AbstractPlayer.h

Add the following method declaration:

Kod:


#ifdef ENABLE_GM_WITHOUT_COLLISIONS
virtual bool IsGameMasterInstance(DWORD dwVID) = 0;
#endif

4. Update PythonPlayer.h

Add the following method declaration:


Kod:


#ifdef ENABLE_GM_WITHOUT_COLLISIONS
bool IsGameMasterInstance(DWORD dwVID);
#endif

5. Update PythonPlayer.cpp

Add the following method implementation:


Kod:


#ifdef ENABLE_GM_WITHOUT_COLLISIONS
bool CPythonPlayer::IsGameMasterInstance(DWORD dwVID)
{
CInstanceBase* pTargetInstance = CPythonCharacterManager::Instance().GetInstancePtr(dwVID);
if (!pTargetInstance)
return false;
return pTargetInstance->IsGameMaster();
}
#endif

This how it looks like:

These changes will implement a system allowing GMs to move without collision in Game
 
Back
Top