Fonctions externes -> De vraies fonctions

Bonjour,
Je ne sais pas ce que vous pensez du système de fonctions actuel, mais je pense que ça serait bien de l’améliorer.
Et pour cela, je propose que l’on puisse créer des “Fonctions externes” au même titre que les événements externes.
Déjà, il faut que l’on puisse mettre un nombre illimité de paramètres dans la fonction.
Il y aurait donc un éditeur de fonction ressemblant à un éditeur d’événement pour chaque fonction externe, et il s’ouvrirait comme les événements externes, et celle ci aurait dans ses options: Le nom de la fonction, le nombre de paramètres, la variable dans laquelle arrive chaque paramètre, et la valeur par défaut du paramètre (ce qui rends le paramètre optionnel).
Aussi, comme une vraie fonction, il faudrait que les variables soient isolées du reste du jeu, de façon a ne pas “Brouiller” le jeu en cours avec une fonction qui utiliserais les mêmes nom de variables que la scène en cours.
Et ce qui serait bien, ce serait aussi d’avoir une valeur de retour, et de pouvoir utiliser les fonction comme des expressions.
ça aurait donc une vraie utilité de fonction, puisqu’elle serait utilisable partout (Objet Texte, Variable, Variable de Texte, …) et serait beaucoup plus pratique.
Autant faire tout proche du langage de programmation, moi je résonne comme en php (donc pour les types de variables, c’est a GD de gérer), mais l’on pourrais l’appeler tout simplement dans une expression texte ou nombre de cette façon:

nomdelafonction("Paramettre Texte1", 1, VariableString(Texte), Variable(Nombre))

Pour respecter la syntaxe de GD, l’on mettra des guillemets pour les textes, les nombres serons normaux, et les variables selon la syntaxe de GD, comme dans une vraie fonction, l’on séparera les paramètres avec une virgule.
Bref, l’idée est d’avoir des vraies fonctions, et pas seulement un événement que l’on peu inclure un peu partout, mais qui a un nombre limité de paramètres, qui ne servent pas forcément puisque les variables sont les mêmes que sur la scène, et qui ne risque pas de “brouiller” le jeu en cours.
Je suis conscient du travail que ça doit être, mais ça rendrait vraiment l’usage des fonctions intéressant.
Est-ce possible d’intégrer ça a GD? (Normalement oui, puisque les fonctions sont dans tous les langages)
Merci :slight_smile:

Pourquoi pas.
Maintenant que le sujet des fonctions est lancé, je mense qu’il serait pas mal de pouvoir tester directement par une action le paramètre d’une fonction (exemple : Le paramètre 1 de la fonction MyFunction est = à “Tir”+ToString(Variable(x))

Tu peux déjà le faire avec la condition de comparaison d’expressions.

Exact, mais ici, ça sera plus nécessaire de tester des paramètres, puisque les paramètres arriverons dans des variables (comme des vraies fonctions), ce qui est plus logique, et plus simple a utiliser. :slight_smile:

Pour moi, ça reste entre le “bof” et le “m’ouais”.

Je relance le sujet pour éviter que ça tombe dans l’oubli, et si possible 4ian, pourrais tu nous donner ton avis sur l’idée?
Merci :slight_smile:

Pourquoi pas, mais par contre je suis totalement contre l’idée d’un “éditeur de fonctions externes” : En programmation, on organise comme on veut ses fonctions dans les fichiers, et on inclus ensuite les fichiers dont on a besoin, mais on a pas un “éditeur de texte de fonction”. Dans GD, c’est pareil, on organise ses fonctions des les évènements externes, et on inclus ensuite les évènements externes dont on a besoin.

Pour le fait d’intégrer une action pour quitter une fonction, ça me parait faisable, surtout depuis les changements introduit dans GD2. Cette action renverrait alors un texte, libre à vous ensuite de récupérer celui ci dans une expression ( eventuellement le convertir en nombre ).

Pour ce qui est d’appeler la fonction directement par son nom, c’est difficile à intégrer au système d’évènement tel qu’il est. Ce serait plutôt quelque chose du genre “Call(“MyFunction”, parameters)”.

Call("MyFunction", parameters)

ça serait parfait :slight_smile:
Merci beaucoup :slight_smile:

C’est possible aussi de créer des fonctions qui retournent des valeurs ?

Sans doute, les fonctions renverrait alors du texte :

Oui, désolé.

Un texte est aussi une valeur, sauf que son type est “string” :wink:
Mais l’idée de 4ian est bonne :slight_smile:

De toute façon, une string peut être convertie en double.

Oui :slight_smile: