Vous devez être connecté et donner une réaction ( Like ) au sujet pour débloquer les liens de téléchargements...
KitKat

 tutoriel / partage C++ - Remplacer Granny 2.4 par Granny 2.9

Recommended Posts

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.

  • Like 14

Share this post


Link to post
Share on other sites

Salut,

 

Oui ils marchent, mais avec un flood syserr pas possible à cause de leur version ^^

Share this post


Link to post
Share on other sites

Non mais une erreur par gr2, mais ça marche... Faudrait quand même penser à les convertir.

 

Cordialement, Takuma.

Share this post


Link to post
Share on other sites

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.

Edited by Link

Share this post


Link to post
Share on other sites
Guest

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.

Share this post


Link to post
Share on other sites