Aller au contenu

Nouveau membre ?! Pense à te présenter pour accéder au contenu du forum !

New member ?! Introduce yourself to get access to the forum !

Messages recommandés

 

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.

Modifié par #Saw

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci du partage !

Partager ce message


Lien à poster
Partager sur d’autres sites

Sympa, ça peut être utile un petit + pour un serveur.

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour le partage, cependant, je n'ai pas saisi l'utilité mise à part traverser un NPC ou encore un monstre du jeu ?

Modifié par #Saw
code source non pris par IPS

Partager ce message


Lien à poster
Partager sur d’autres sites

Cela permet d'enlever les collision entre joueurs / pnj / familiers / Mobs ( Certains joueurs adore ce système car ils en ont marre quand ils font des duels d'avoir les familiers ou autres dans leurs pattes ! ).

 

Cordialement, History.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour, dans ce cas, pourquoi ne pas modifier le code pour seulement pouvoir traverser les Pets ?

 

Cordialement.

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

 

Merci pour le tutoriel ! :)

 

J'ajouteu ne précision, mettre les [TAB] n'est pas utile, le compilateur se fiche totalement de l'indentation ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah super :)

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Je préfère tout de même les mettre sait-on jamais ^^

 

Cordialement.

Partager ce message


Lien à poster
Partager sur d’autres sites

Je valide, merci à toi pour ton partage.

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci à toi pour la validation.

 

Cordialement, History.

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour les pets je trouve cela très utile merci, ça va beaucoup servir. :top:

Partager ce message


Lien à poster
Partager sur d’autres sites

Pas de quoi.

 

Cordialement, History.

Partager ce message


Lien à poster
Partager sur d’autres sites

×

Information importante

By using this site, you agree to our Conditions d’utilisation.