Une API inspirée d'IMGUI, intuitive pour créer des menus de paramètres intégrés pour les mods REF dans MHRise.
WAHOUCe fut assurément un projet délicat.
Ce petit bijou est imprégné de tellement de magie noire. *Gifle le Dépôt GitHub***De toute façon :**
~Qu'est-ce que ça fait ?~
Bon, pas grand-chose à lui tout seul.
Mais entre les mains des créateurs de mods, des menus de paramètres peuvent être ajoutés directement au menu d'options du jeu via une API simple.
Les fonctions de l'API sont très similaires à celles d'imgui, avec quelques réserves*~Que dois-je faire ?~
Installez simplement le mod comme n'importe quel autre mod REFramework.
Si tu ne sais pas comment faire, ce n'est probablement pas le genre de truc à tenter pour débuter.
Une fois au bon endroit, cela devrait automatiquement ajouter une catégorie « Mods » au menu des options.
Ensuite, en utilisant simplement d’autres mods REF pris en charge, les paramètres apparaîtront à cet endroit.
Pour les auteurs de mods :Téléchargez l'exemple de mise en œuvre du mod à partir des fichiers, cela vous permettra de démarrer assez facilement.
Pour plus de détails sur l'API, consultez Page GitHub.
Je promets que c’est presque aussi simple à utiliser que les fonctions imgui intégrées, et ce sera vraiment sympa de voir la communauté ajouter des menus !
Il suffit d’importer le package et d’utiliser l’API comme imgui.
Vous pouvez éventuellement vérifier si l'utilisateur a installé le package, et prendre en charge optionnellement les menus pour ne pas forcer l'installation. Mais ce serait appréciable de pouvoir tout de même marquer ce fichier comme obligatoire.Je te demande de ne pas redistribuer ce mod avec tes propres mods, aussi pratique que cela puisse être.
J’ai travaillé dur là-dessus, mais je devrai peut-être y apporter des mises à jour, et tu ne voudrais pas de versions contradictoires dans différents mods.
Faites-moi savoir si vous publiez un mod utilisant ce menu, afin que je puisse l'ajouter à la liste des mods pris en charge !Limitations*
Malheureusement, comme cela utilise les menus propres au jeu, nous sommes limités par ce que le jeu peut faire nativement.
Il n’y a évidemment pas de fonction de dessin avancée.
Il suffit mimiques En imgui, en fait, les fonctions "draw" sont des rappels pour récupérer les données de l'interface du jeu. Vous pouvez avoir des menus dynamiques, mais essayez de ne pas faire quoi que ce soit de trop farfelu.
Ce n'est pas adapté à tous les mods, mais si vous n'avez besoin que de quelques réglages simples, n'hésitez pas à l'envisager !**~Crédits~**Merci à Stracker pour (avoir créé des mods sympas mais aussi [sans autorisation]) m'avoir permis de me référer à l'un de leurs mods pour les coroutines et les messages système. Et aussi, pour avoir effectivement ajouté les coroutines à REF.
Et bien sûr, merci à praydog pour tout le travail accompli sur REFramework, ainsi que pour les conseils apportés à ce sujet.
**Contributions :**
raffRun - Infobulles à retour automatique
法语翻译如下:
**Stracker - Trouver un moyen de lire les données GUID à partir de pointeurs dans Lua**HookedBehemoth - Implémentation des découvertes de StrackerDiscord : Bolt#6265GitHub : Voici le texte traduit en français, en respectant toutes les consignes (pas de contenu supplémentaire, uniquement le français, style jeu vidéo) :
```
https://github.com/BoltManGuy/MHR-InGame-ModMenu-API
```Mods utilisant ce menu :**Réflexions et anecdotes amusantes :**
J'ai plein de trucs débiles à dire parce que ce projet m'a lessivé.
C'est l'un des défis les plus difficiles que j'aie eus récemment, à part créer un jeu de rythme lors d'un game jam de 48 heures.
Le jeu ne veut vraiment pas que vous fassiez cela et plantera à la moindre occasion si vous ne faites pas les choses parfaitement.
Tu as oublié d'ajouter un ref à ce tableau ? Crash. Des chaînes ? Crash. Des données d'option ? Crash.
Appeler la fonction de mise à jour depuis n'importe où dans les fonctions d'interface du jeu ? Plantage.
Ne pas avoir de données renseignées pour des options qui n'en ont même pas besoin ? Plantage.
Je m'égare, mais j'ai dû planter le jeu près d'une centaine de fois.
Mais je pense que tout cela en a fait un défi particulièrement captivant. Cela faisait un moment que je n’avais pas été aussi absorbé par un projet. J’avais toujours l’impression que ça marchait presque, mais qu’il restait toujours un problème majeur à résoudre.Quelques notes intéressantes :L'onglet "Mods" dans la liste des catégories est en fait une copie de l'onglet "Données de sauvegarde", car il n'est pas possible d'ajouter d'autres types. Je remplace donc les données en fonction de l'index de la liste déroulante.
Pendant un bon moment, j'ai utilisé le menu des paramètres graphiques avancés comme un moyen de faire fonctionner les sous-menus, et ça a presque marché jusqu'à ce que je découvre qu'ils avaient codé en dur ce menu pour n'accepter que cinq éléments dans la liste... et bien sûr, le jeu plante si on en met un autre nombre que cinq.
Pour une raison inconnue, les curseurs de ce menu ne répondent pas à la souris. J'ai donc fini par trouver la bonne combinaison d'appels pour transformer les options en boutons, permuter les données et repeindre l'ensemble afin de changer de sous-menu sans jamais réellement changer de menu.
Et la logique derrière tout cela était inévitablement complexe..
En raison d'une limitation de REF, j'ai en fait écrit un petit plugin en C++ pour accompagner cela, dont l'unique but est de prendre un pointeur vers un GUID et de le déréférencer afin d'en extraire les données. Sans cela, l'ensemble ne fonctionnerait pas, car il n'y aurait aucun moyen de remplacer correctement les chaînes localisées du jeu.
Pas trop mal, mais configurer le projet C++ avec Lua et sol2 a été un enfer... Les tutoriels n'ont presque pas aidé.
De même, pour une raison inconnue, je ne pouvais pas attribuer de valeurs GUID aux objets dans REF, mais j'ai pu contourner ce problème en écrivant directement les données avec write_dword aux bons offsets.
Au final, je trouve que le résultat est vraiment sympa.
**Français**
Je me fiche presque de savoir si quelqu'un l'utilise, car le simple fait de le voir fonctionner était déjà une récompense en soi, mais je pense que les gens apprécieront.
Je suppose que tu peux suggérer des fonctionnalités, mais clairement, après tout ça, je vais être très flemmard.
C'est probablement tout pour le moment, j'espère que ça vous plaira !