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

C++ - Ajouter les Effets sur les Costumes


Messages recommandés

Centre de Téléchargement

Hidden Content

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

Plop,

 

J'ai vue que certains avait des problèmes avec l'ajout d'effets sur leurs costumes, je vous ai fait un petit tuto rapido :p, bien-sur ce n'est pas la méthode la plus optimisé etc etc mais elle marche.

 

Alors on a besoin des fichiers suivant : InstanceBase.h  InstanceBase.cpp  playersettingmodule.py

 

Ouvrez votre instanceBase.h (qui est dans vos sources client)

Cherchez:

EFFECT_BODYARMOR_SPECIAL2,

En dessous mettez:

EFFECT_BODYCOSTUME,

C'est le nom de variable qui va nous servir a attribué un effet a nos costumes

!! une variable = un effet !!

 

!! Maintenant mettez votre souris sur la variable EFFECT_BODYCOSTUME

vous allez voir un petit message du style: enum CInstanceBase::<unnamed>::EFFECT_BODYCOSTUME =25

retenez bien ce nombre on en aura besoin plus tard !!

 

Enregistrez instanceBase.h on en a plus besoin

 

 

 

Ouvrez votre instanceBase.cpp(toujours dans vos sources client)

Cherchez:

		if (pItem->GetSubType() == CItemData::ARMOR_BODY)
		{
			m_armorRefineEffect = EFFECT_REFINED+EFFECT_BODYARMOR_REFINED7+refine-7;
			__AttachEffect(m_armorRefineEffect);
		}
		break;

Apres le break; revenez a la ligne et collez ce code:

	case CItemData::ITEM_TYPE_COSTUME:
		if (pItem->GetSubType() == CItemData::COSTUME_BODY)
		{
			DWORD vnum = pItem->GetIndex();

			if (41517 == vnum)
			{
				__AttachEffect(EFFECT_REFINED + EFFECT_BODYCOSTUME);
			}
		}
		break;

De sorte a ce que sa ressemble à ça:

		if (pItem->GetSubType() == CItemData::ARMOR_BODY)
		{
			m_armorRefineEffect = EFFECT_REFINED+EFFECT_BODYARMOR_REFINED7+refine-7;
			__AttachEffect(m_armorRefineEffect);
		}
		break;
	case CItemData::ITEM_TYPE_COSTUME:
		if (pItem->GetSubType() == CItemData::COSTUME_BODY)
		{
			DWORD vnum = pItem->GetIndex();

			if (41517 == vnum)
			{
				__AttachEffect(EFFECT_REFINED + EFFECT_BODYCOSTUME);
			}
		}
		break;

if (41517 == vnum) veut dire si l'id est égal a 41517(Costume à crocs+) alors on lui attribue un effet ici sa sera effect_refined + notre effet

Enregistrez instanceBase.cpp et vous pouvez compilé vos sources client

 

Ensuite on va ouvrir playersettingmodule.py (qui est dans votre dossier root)

Cherchez: 

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+20, "Bip01", "D:/ymir work/pc/common/effect/armor/armor-4-2-2.mse")

En dessous on va coller le code suivant en changeant  ""votre nombre"" et ""le chemin de votre effet"" par votre nombre et votre chemin bien-sur :

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED + votre nombre, "Bip01", "d:/ymir work/le chemin de votre effet")

votre nombre = le nombre qui c'est affiche au passage de la souris dans notre instanceBase.h

le chemin de votre effet = le chemin de votre effet ^^^^^^^^

Ce code renseigne le chemin de l'effet a notre variable 

Enregistrer, repacker et c'est parti ! 

Noubliez pas de mettre votre nouveau lanceur ^^

 

 

 

Petite bonus,

Pour rajouter plusieurs effet on devra crée plusieurs variable EXEMPLE :

EFFECT_BODYCOSTUME,
EFFECT_BODYCOSTUME_1,
EFFECT_BODYCOSTUME_2,
EFFECT_BODYCOSTUME_N,

Une variable = un effet

 

Pour rajouter un effet a plusieurs costume EXEMPLE:

if (41517 == vnum || 41518 == vnum || 41519 == vnum)
			{
				__AttachEffect(EFFECT_REFINED + EFFECT_BODYCOSTUME);
			}

Ou si vous voulez ajouter l'effet a 10 costumes qui se suivent (id parlant) on pourra faire EXEMPLE:

if (41517 <= vnum && vnum <= 41530)
			{
				__AttachEffect(EFFECT_REFINED + EFFECT_BODYCOSTUME);
			}

Ici tout les costumes de l'id 41517 à 41530 auront l'effet (EFFECT_REFINED + EFFECT_BODYCOSTUME)

 

Pour rajouter plusieurs effet sur un costume EXEMPLE:

if (41517 == vnum)
			{
				__AttachEffect(EFFECT_REFINED + EFFECT_BODYCOSTUME + EFFECT_BODYCOSTUME_1 + EFFECT_BODYCOSTUME_N);
			}

 

Et enfin pour finir ajouté plusieurs effet different sur plusieurs costumes different on va répéter notre condition if EXEMPLE:

		if (41517 == vnum)
		{
			__AttachEffect(EFFECT_REFINED + EFFECT_BODYCOSTUME);
		}
		if (41555 == vnum)
		{
			__AttachEffect(EFFECT_REFINED + EFFECT_BODYCOSTUME_N);
		}
		if (41590 == vnum)
		{
			__AttachEffect(EFFECT_REFINED + EFFECT_BODYCOSTUME_N);
		}

 

Voilà maintenant vous pouvez ajouter vos effets sur vos costumes

 

ps : c'est mon premier tuto si y'a des choses mal expliquer ou  a modifier dites le moi

ps2 : je suis loin d'être expert c++ donc si on peu optimiser ce code dites le moi aussi 

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

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

Meilleurs contributeurs dans ce sujet

  • Développeur

Merci pour ta contribution!

 

Cela dit, pourquoi procéder par l'utilisation de vNums ? Si on veut rajouter 200 costumes avec une tranche d'IDs différents,

on va devoir rajouter 200 conditions ? :P Le mieux serait de rajouter un flag par effet, et rajouter le flag aux costumes désirés

dans l'item_proto. C'est plus propre au niveau du code et plus facile à gérer en cas d'ajout de costumes ou d'effets !

Lien vers le commentaire
Partager sur d’autres sites

Il y a 5 heures, iryzz a dit :

ps2 : je suis loin d'être expert c++ donc si on peu optimiser ce code dites le moi aussi

Il y a 5 heures, iryzz a dit :

bien-sur ce n'est pas la méthode la plus optimisé

 

Oui on peut le faire comme ça mais je ne sais pas le faire du moins je me suis pas intéresser a ce sujet âpres c'est sur que mettre des effets a 200 costumes c'est surement pas ici que ce trouve la réponse :D

 

Mais je pense néanmoins que ce mini tuto peut aider des gens a comprendre le fonctionnement costume+effet  :P 

 

 

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.