Aller au contenu

C++ Remove collision


Messages recommandés

  • Contributeur

Bonjour, ce partage consiste à enlever la collision entre joueurs, pnj, pet, monture, magasin ainsi que pendant les OX event.

Commençons le tutoriel.

Source client UserInterface/Locale_inc.h

Ajouter à l'intérieur :

#define REMOVE_MOUNTS_COLLISION // Remove mounts collision
#define REMOVE_PETS_COLLISION // Remove pets collision
#define REMOVE_SHOPS_COLLISION // Remove shops collision
#define REMOVE_SAFEZONE_COLLISION // Remove safezone collision
#define REMOVE_OX_PLAYER_COLLISION // Remove ox player collision

 

Source client GameLib/ActorInstanceCollisionDetection.cpp

Ajouter tout en haut :

#include "../UserInterface/PythonBackground.h"

Checher :

BOOL CActorInstance::TestActorCollision(CActorInstance & rVictim)

Ajouter au dessus :

BOOL CActorInstance::IsInSafeZone(CActorInstance& ptr)
{
	const TPixelPosition& c_rkPPosCur = ptr.NEW_GetCurPixelPositionRef();
	if (CPythonBackground::Instance().isAttrOn(c_rkPPosCur.x, c_rkPPosCur.y, (1 << 2)))
		return true;

	return false;
}

Checher :

BOOL CActorInstance::TestActorCollision(CActorInstance & rVictim)
{
	if (rVictim.IsDead())
		return false;

Ajouter en dessous :

#ifdef REMOVE_SAFEZONE_COLLISION
	if (IsInSafeZone(rVictim))
		return false;
#endif

#ifdef REMOVE_PETS_COLLISION
	if (rVictim.GetRace()>=34001 && rVictim.GetRace()<=34099) // Mob Vnum
		return false;
#endif

#ifdef REMOVE_SHOPS_COLLISION
	if (rVictim.GetRace()>=30000 && rVictim.GetRace()<=30001) // Mob Vnum
		return false;
#endif

#ifdef REMOVE_MOUNTS_COLLISION
	if (rVictim.GetRace()>=20101 && rVictim.GetRace()<=20299) // Mob Vnum
		return false;
#endif

#ifdef REMOVE_OX_PLAYER_COLLISION
	const char* strMapEventOx = "metin2_map_oxevent";
	std::string stringName = CPythonBackground::Instance().GetWarpMapName();

	if (strMapEventOx == stringName)
	{
	#ifdef ENABLE_WOLFMAN_CHARACTER
		if (0 <= rVictim.GetRace() && rVictim.GetRace() <= 8)
	#else
		if (0 <= rVictim.GetRace() && rVictim.GetRace() <= 7)
	#endif
			return false;
	}
#endif

 

Source client GameLib/ActorInstance.h

Chercher :

public:
	BOOL TestActorCollision(CActorInstance & rVictim );
	BOOL TestPhysicsBlendingCollision(CActorInstance & rVictim);

Ajouter en dessous :

BOOL IsInSafeZone(CActorInstance& ptr);
Succès ! Le tutoriel prend fin ici, n'oubliez pas de recompiler vos source client, Enjoy.
  • Funky Emulation 1
  • J'aime 1

M2KSF Project

Développement Metin2

Lien à poster

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant


×
×
  • Créer...

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.