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

C++ - Stop Collision


Messages recommandés

 

Centre de Téléchargement

Hidden Content

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

Stop Collision

1)Qu'est-ce que c'est?

2) Les prérequis.

3) Le codage.

 

1)Qu'est-ce que c'est?

Alors, le stop collision est un système qui va vous permettre tout bêtement de traverser les pnj / mob / Pets.

Tout d'abord, qu'est-ce qu'une collision?

Une collision c'est un facteur entre deux corps qui se rencontre et exerce une force contre chacun  d'entre eux pour un temps relativement cours.

La collision peut être aussi nommée "accident" dans le sens ou deux objet rentre en contact.

 (Un guerrier face à un sura qui tente de se rentrer dedans)

Voila c'était un petit cour de physique ( ça rappellera des souvenirs à certains ! )

 

2) Les prérequis.

Sources Client.

Un client et votre tête ainsi que des files bien évidemment.

 

3) Le codage.

Alors pour cette fois les codes sont à faire via un tuto directement et non via un tuto dans une archive.

Commençons par les sources clients.

Fichier: src/Client/Source/GameLib/ActorInstanceCollisionData.cpp

#1) Cherchez : 

 

#include "../eterLib/GrpMath.h"
 

#2) Ajoutez en-dessous ↓:

 

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

 

#3) Cherchez:

BOOL CActorInstance::TestActorCollision(CActorInstance & rVictim)
{
 

#4) Ajoutez en-dessous ↓:

 

#ifdef ENABLE_STOP_COLISSION_GLOBAL
/*********************************************************************
* date		: 2016.02.16
* function	: Stop Colission
* developer	: VegaS
* skype		: sacadatt.amazon
* description : Checks if the victim is one of the examples below you can easily configure. If the victim was found 
[TAB][TAB][TAB][TAB]success as vnum site / breed ve you could go through it no longer block.
*/	
/************
* The first value is the minimum value and the second value is the maximum value of pet vnum (mob_proto) - change 34051 with your max vnum of pet */	
	int pListPet[2] = {34001, 34051};	
/************
* You can add whatever you like vnum of npc or monster (mob_proto) */
	int pListGlobal[] = {9001, 9002, 9003, 9004, 9005, 9006, 20011, 20091, 20092, 20093, 20094, 20095, 30000};
/************
* You can add what mapname you want for enable this stop collission global like pet / npc */	
	const char* strMapListGlobal[] = {"metin2_map_a1", "metin2_map_a3", "metin2_map_b1", "metin2_map_b3", "metin2_map_c1", "metin2_map_c3", 
									"season2/metin2_map_skipia_dungeon_01", "season2/metin2_map_skipia_dungeon_02", "metin2_map_duel"};	
/************
* Location name of the map where the event takes place ox */		
	const char* strMapEventOx = "season1/metin2_map_oxevent";								


	std::string stringName = CPythonBackground::Instance().GetWarpMapName();

	for (int i = 0; i < _countof(strMapListGlobal); i++)
	{
	#ifdef ENABLE_STOP_COLLISION_PLAYER_OX
		if (strMapEventOx == stringName) // Check if u are place in map ox
		{	
			if (0 <= rVictim.GetRace() && rVictim.GetRace() <= 7) // Check if the victim through which pass over a player (change 7 with 8 if u have wolfman)
				return FALSE;	// Stop collission for player --> You can go through players now successfully without lock yourself		
		}
	#endif		
		if (strMapListGlobal[i] == stringName) // Check if you are in one of the maps listed in the global list
		{
			for (int i = 0; i < _countof(pListGlobal); i++)
			{
				if (rVictim.GetRace() == pListGlobal[i] || pListPet[0] <= rVictim.GetRace() && rVictim.GetRace() <= pListPet[1]) // Verify that the victim is npc vnum listed above, or if a pet.
					return FALSE;	// Stop collission for global vnum like a pet or npc							
			}
		}
	}
#endif
 

Fichier: src/client/Source/UserInterface/Local_inc.h

#1) Cherchez:

 


src/client/Source/GameLib/ActorInstanceCollisionData.cpp
 

 

#2) Ajoutez en-dessous ↓:

#ifndef ENABLE_STOP_COLISSION_GLOBAL
	#define ENABLE_STOP_COLISSION_GLOBAL
	#define ENABLE_STOP_COLLISION_PLAYER_OX
#endif
 

5b327ff01c9f53c9aa3e41251500bf3c.gif

 

Source: VegaS KoriDev

Traduction: Moi

 

Cordialement, History.

  • Love 1
Lien vers le commentaire
Partager sur d’autres sites

Vous pouvez le faire en ajoutant / enlevant des Vnum des pnjs / mobs / Pets tout simplement ici:

 

* You can add whatever you like vnum of npc or monster (mob_proto) */
[TAB]int pListGlobal[] = {9001, 9002, 9003, 9004, 9005, 9006, 20011, 20091, 20092, 20093, 20094, 20095, 30000};

 

Tout ce passe ici c'est la liste des vnums à ignorer les collision.

 

Cordialement, History.

Lien vers le commentaire
Partager sur d’autres sites

  • Funkiest

Salut,

 

Merci pour le partage, même si je préfère modifier directement le collisions dans le client plutôt qu'utiliser une tierce méthode. De plus, comme Asius l'a dit, les [TAB] sont inutiles pour du C++ étant donné que Visual Studio règle automatiquement l’indentation !

 

Merci :D

Lien vers le commentaire
Partager sur d’autres sites



  • brilliantdiscord_widget
  • Flux d'Activité

    1. 37
    2. 21

      Metin2 en 2020 peut-on en parler?

    3. 0

      METIN2Project

    4. 3

      Ressources - UnPack - Metin2 Client - Officiel

    5. 0

      Barre des tâches d'argent étendue

    6. 16

      Redémarrage automatique des channels

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