"return [valeur]" permet de renvoyer une valeur à partir d'une fonction, c'est bien ça?
A partir de là, on récupère la valeur assez facilement dans une variable, par ex:
var variable = fonction();
Moi ce qui m’intéresse c'est le cas ou une fonction renvoi plusieurs valeurs. C'est assez bizarre en fait avec cette fonction. Le code Lua que j'ai mis plus haut fonctionne très bien, mais je n'arrive pas a le convertir en C#.
Ca vas être difficile, parce que j'ai du mal à comprendre le lua
Alors.
Pour renvoyer plusieurs valeurs dans une fonction, il y a plusieurs façons :
1. Utiliser le mot clef out dans les paramètres de ta fonction suivant cet exemple :
static void Exemple(out int param1, out string param2){
param1 = 21; //Ma valeur Integer
param2 = "coucou"; //Ma valeur string
}
// utilisation :
static void Main(){
int Int_value;
string String_value;
Exemple(out Int_value, out String_value);
}
2. Utiliser les subtilisées du Framework .NET, avec par exemple les tuples, ou autre types d'objets.
Personnellement, j'utiliserais plus la 1er méthode, mais elle comportes certaines inconvénients durant la compilation qui peuvent gêner certains types problèmes, mais vu ce que tu voudrais faire (si j'ai bien compris xD), cela devrais fonctionner. Elle me semble aussi relativement simple.
PS: Je n'ais pas essayer chez moi, donc c'est possible qu'il y ait quelques erreurs dans le code, je l'ais fais sans copier/coller
PPS: Bon, ce n'est pas réellement un renvois de valeur pour la méthode 1, mais cela devrait fonctionner, je préfère préciser
- Edité par vanaur 9 septembre 2017 à 20:43:08
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
@bacelar Oui l'API est en C. Car ce sont les fonctions natives de GTA V. Cependant on utilise les même fonctions a travers le framework de FiveM, il faut juste supprimer les tirets underscores "_", pour les utiliser avec un script en Lua. FiveM accepte aussi les scripts en C# (là on garde la fonction avec les underscores), d’où ma question.
Par contre je ne sais pas ce qu'est un wrapper? Si tu pouvais en dire plus...
- Edité par NomansSkywalker 11 septembre 2017 à 20:57:46
Les wrappers sont, grossièrement, des façons de transporter du code d'un langage source pour pouvoir l'utiliser dans le langage cible (version simplifier). Par exemple tu souhaite utiliser une bibliothèque écrite en C++, ou en C dans ton cas, tu pourras utiliser une fonction écrite en C dans en LUA. Tu peux regarder ici pour télécharger et avoir plus d'informations sur un Wrapper LUA - CLR (Comme dis dans le lien.)
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Je vois. C'est super intéressant. J'ai installer Nlua dans mon projet avec Visual Studio en utilisant NuGet. Je vais tester ça pour voir ce que ça donne. Je comprend mieux le fonctionnement de FiveM du coup.
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...