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

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Restaurer la mise en forme

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.



Shoutbox

Shoutbox

Chatroom Rules

 

Rejoignez notre Discord

Une demande d'aide = Bannissement de la Shoutbox

Soyez respectueux & Respectez les règles

 

×
×
  • 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.