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

C++ - Remplacer Granny 2.4 par Granny 2.9


Messages recommandés

Centre de Téléchargement

Hidden Content

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

Bonjour/Bonsoir !

 

Dans ce tutoriel, je vais vous expliquer comment passer de Granny 2.4 à Granny 2.9.

Ce tutoriel se passera dans les sources client.

 

Donc, pour commencer, cherchez "granny_common_2_9_12_0_release.zip" dans le fichier extern de vos sources Novaline (si vous ne l'avez pas, le lien de téléchargement de l'archive serra mis à la fin du tutoriel).

Une fois ce fichier trouvé, il vous faudra l'extraire puis prendre granny.h dans le dossier include puis le remplacer dans vos sources client (dans le fichier include).

Prennez les fichiers .lib et .pdb dans le dossier lib/win32 puis mettez le dans vos sources client (fichier lib).

Une fois ceci fais, attaquons le code !

 

(Attention, il faut faire les tabulation sois même !)

 

 

Rendez vous dans Mesh.cpp du projet EterGrnLib.

Cherchez:

int * boneIndices = GrannyGetMeshBindingToBoneIndices(pgrnMeshBinding);
Remplacez par:
int * boneIndices = (int*)GrannyGetMeshBindingToBoneIndices(pgrnMeshBinding);
 
 

Cherchez:

return GrannyGetMeshBindingToBoneIndices(m_pgrnMeshBindingTemp);
Remplacez par:
return (int*)GrannyGetMeshBindingToBoneIndices(m_pgrnMeshBindingTemp);
 

Cherchez:

m_pgrnMeshDeformer = GrannyNewMeshDeformer(pgrnInputType, pgrnOutputType, GrannyDeformPositionNormal);
Remplacez par:
m_pgrnMeshDeformer = GrannyNewMeshDeformer(pgrnInputType, pgrnOutputType, GrannyDeformPositionNormal, GrannyAllowUncopiedTail);
Voilà, nous en avons finis avec la partie Mesh.cpp vous pouvez enregistrer.

 

 

Maintenant, ouvrez maintenant ModelInstanceUpdate.cpp du même projet.

Cherchez:

GrannyUpdateModelMatrix(m_pgrnModelInstance, fSecondsElapsed, (const float *) pMatrix, (float *) pMatrix);
Remplacez par:
GrannyUpdateModelMatrix(m_pgrnModelInstance, fSecondsElapsed, (const float *) pMatrix, (float *) pMatrix, false);
Nous en avons aussi finis avec ModelInstanceUpdate.cpp vous pouvez enregistrer.

 

Maintenant, ouvrez Material.cpp du même projet.

Cherchez:

granny_variant twoSideResult = GrannyFindMatchingMember(pgrnMaterial->ExtendedData.Type, pgrnMaterial->ExtendedData.Object, "Two-sided");

if (NULL != twoSideResult.Type)
GrannyConvertSingleObject(twoSideResult.Type, twoSideResult.Object, TwoSidedFieldType, &twoSided);
Remplacez par:
granny_variant twoSideResult;

if (GrannyFindMatchingMember(pgrnMaterial->ExtendedData.Type, pgrnMaterial->ExtendedData.Object, "Two-sided", &twoSideResult)  
&& NULL != twoSideResult.Type)
GrannyConvertSingleObject(twoSideResult.Type, twoSideResult.Object, TwoSidedFieldType, &twoSided, NULL);
Vous en avez finis avec cette partie aussi, vous pouvez enregistrer.

 

Maintenant, ouvrez ModelInstanceModel.cpp du projet EterGrnLib (toujours le même).

Cherchez:

return GrannyGetMeshBindingToBoneIndices(m_vct_pgrnMeshBinding[iMeshBinding]);
Remplacez par:
return (int*)GrannyGetMeshBindingToBoneIndices(m_vct_pgrnMeshBinding[iMeshBinding]);
Vous en avez finis avec ModelInstanceModel.cpp et le projet EterGrnLib, vous pouvez enregistrer.

 

Maintenant, allez dans le projet UserInterface et ouvrez UserInterface.cpp.

Cherchez:

static void GrannyError(granny_log_message_type Type,
					granny_log_message_origin Origin,
					char const *Error,
					void *UserData)
{
   TraceError("GRANNY: %s", Error);
}
Remplacez par:
static void GrannyError(granny_log_message_type Type,
					granny_log_message_origin Origin,
					char const* File,
					granny_int32x Line,
					char const *Error,
					void *UserData)
{
   TraceError("GRANNY: %s", Error);
}
Voilà, vous en avez finis avec les sources client. Vous pouvez recompiler !

 

Pour finaliser cette installation, rendez vous dans l'archive du début et puis allez dans lib/win32.

Prenez granny2.dll et remplacer l'ancien de votre client.

 

 

Voilà, c'est tout pour ce tuto, je vous remercie de la lecture.

En cas de problème, veuillez aller dans la section Aide/Question/Support.

Lien de l'archive: (prenez seulement la version 2.9.12 !)  ICI

(Merci à Liberty de l'avoir upload)

Source du code: Metin2Dev

 

Cordialement.

  • Metin2 Dev 6
  • Good 2
  • Love 16
Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...
  • 7 mois après...
  • 1 mois après...

Sinon il suffit juste d'aller dans vos sources client userinterface.cpp et chercher void GrannyError(granny_log_message_type Type,

 

et de commenter le bout de code comme ceci :

//static void GrannyError(granny_log_message_type Type,
// granny_log_message_origin Origin,
// char const*  File,
// granny_int32x Line,
// char const* Message,
// void * UserData)
//{
// TraceError("GRANNY: %s", Message);
//}

et un peu plus bas

// granny_log_callback Callback;
//   Callback.Function = GrannyError;
//   Callback.UserData = 0;
//   GrannySetLogCallback(&Callback);
return 1;

et votre syserr sera clean de clean.

 

sources: mt2dev by Vamos.

Modifié par Link
Lien vers le commentaire
Partager sur d’autres sites

Cacher l'erreur est la pire bêtise à faire, les modèles sont tout sauf optimisés pour cette version de Granny, donc si vous devez ajouter 0.1 secondes par modèles chargés, vous vous retrouvez avec des temps de chargement allongés pour rien. Il y a un convertisseur disponible pour convertir les modèles, notamment sur M2D.

Lien vers le commentaire
Partager sur d’autres sites

  • 4 mois après...
  • 2 mois après...

Bonjour j'ai une erreur en suivant ce tuto :

 

Erreur    2    error C2660: 'GrannyConvertSingleObject' : la fonction ne prend pas 5 arguments    D:\source\novaline\Srcs\Client\eterGrnLib\Material.cpp    254    1    eterGrnLib
Erreur    1    error C2660: 'GrannyFindMatchingMember' : la fonction ne prend pas 4 arguments    D:\source\novaline\Srcs\Client\eterGrnLib\Material.cpp    252    1    eterGrnLib
Erreur    4    error C2660: 'GrannyNewMeshDeformer' : la fonction ne prend pas 4 arguments    D:\source\novaline\Srcs\Client\eterGrnLib\Mesh.cpp    139    1    eterGrnLib
Erreur    5    error C2660: 'GrannyUpdateModelMatrix' : la fonction ne prend pas 5 arguments    D:\source\novaline\Srcs\Client\eterGrnLib\ModelInstanceUpdate.cpp    50    1    eterGrnLib
 

 

Des idées?

@Kijaru

Modifié par timdu88
Lien vers le commentaire
Partager sur d’autres sites

Le 01/09/2018 à 18:11, timdu88 a dit :

Bonjour j'ai une erreur en suivant ce tuto :

 

Erreur    2    error C2660: 'GrannyConvertSingleObject' : la fonction ne prend pas 5 arguments    D:\source\novaline\Srcs\Client\eterGrnLib\Material.cpp    254    1    eterGrnLib
Erreur    1    error C2660: 'GrannyFindMatchingMember' : la fonction ne prend pas 4 arguments    D:\source\novaline\Srcs\Client\eterGrnLib\Material.cpp    252    1    eterGrnLib
Erreur    4    error C2660: 'GrannyNewMeshDeformer' : la fonction ne prend pas 4 arguments    D:\source\novaline\Srcs\Client\eterGrnLib\Mesh.cpp    139    1    eterGrnLib
Erreur    5    error C2660: 'GrannyUpdateModelMatrix' : la fonction ne prend pas 5 arguments    D:\source\novaline\Srcs\Client\eterGrnLib\ModelInstanceUpdate.cpp    50    1    eterGrnLib
 

 

Des idées?

@Kijaru

Salut,

 

1) Les demandes d'aide se font en AQS,

2) Pourquoi m'avoir taggé?

3) Tu as du oublier de rajouter les arguments comme précisé dans le tuto.

Lien vers le commentaire
Partager sur d’autres sites



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