Jump to content
×
×
  • Create New...

C++ - Remplacer Granny 2.4 par Granny 2.9


Recommended Posts

Centre de Téléchargement

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

  • Funky Emulation 3
  • J'adore 16
  • J'aime 1
Link to comment
  • 1 month later...
  • 7 months later...
  • 1 month later...

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

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.

Link to comment
  • 4 months later...
  • 2 months later...

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


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.