Jump to content
×
×
  • Create New...

Recommended Posts

 

Centre de Téléchargement

Télécharger ( 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.

  • J'adore 1
Link to comment

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

Je n'avais aucune raison de venir ici. Je ne suis allié à personne. Je ne suis un ennemi. Mais encore, si l'âge est sur le point de se mettre fin dès maintenant... Je pourrais me réveiller une fois de plus.

Link to comment
  • Administrateur

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

Edited by #Saw
code source non pris par IPS
Link to comment

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.

Link to comment
  • 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

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Flux d'Activité

    1. 2

      Site internet (CMS) compatible avec tous les emulateurs 1.29 (Azuriom)

    2. 2

      Site internet (CMS) compatible avec tous les emulateurs 1.29 (Azuriom)

    3. 84

      Granny

    4. 32

      Rodnia.net | PVM | International | The Great Conqueror |

    5. 16

      Map The OpenWorld Metin2

    6. 0
    7. 6

      [V2]Gurgarath Resurgence

  • Recently Browsing

    • No registered users viewing this page.

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.