Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...

C++ Remove collision


Messages recommandés

Centre de Téléchargement

Hidden Content

    Give reaction to this post to see the hidden content.
( Interne )

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.
  • Metin2 Dev 7
  • Good 3
  • Love 2
Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 0
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

Jours populaires



  • brilliantdiscord_widget
  • Flux d'Activité

    1. 21

      Metin2 en 2020 peut-on en parler?

    2. 0

      METIN2Project

    3. 3

      Ressources - UnPack - Metin2 Client - Officiel

    4. 0

      Barre des tâches d'argent étendue

    5. 16

      Redémarrage automatique des channels

    6. 16

      Multi Logo GM / SGM / GA

  • En ligne récemment

    • Aucun utilisateur enregistré regarde cette page.

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.