[Corrigé] Random(random puis random(random(random ??

Bon voilà une bonne vieille capture d’écran vaut mieux que 100 mots


Comment reproduire le bug :
En fait j’en sais rien, j’ai testé la sauvegarde puis fermer le projet et réouvrir, tester le jeu, actualiser, j’ai testé plein de chose “volontairement” sans arriver à le refaire.

Ce qui est certain c’est que au début, après avoir aperçu le problème, j’ai mis “Random()” mais le random ne fait plus effet :frowning:, et quand il y a ce random(random(random))), le random ne fait plus effet non plus, ce qui est assez gênant !

C’est cetain que c’est un bug et non pas une mégarde de copier coller car il était apparu (avant hier déjà) sur toutes mes fonctions, j’ai mis les “”, j’ai vue aujourd’hui que ça marchais pas de mettre les “”, je les ai enlevé, et voilà que, je dois de retour, ré-éditer toutes mes fonctions afin de leur enlever cet horrible random^2, ^3 ou ^4.
D’ailleurs je précise comme j’y suis que on dirais une sorte d’incrémentation (en fonction de quoi je sais pas). Des fois je contrôle un peu, il passe à 1 Random(Random, puis 2, puis 3 puis 4 (j’ai pas vue plus pour le moment)

PS : je vais faire des test avec les fonction ToNumber ou encore ToString d’un côté ou de l’autre de la fonction et on verra bien si ça respawn :s

Je vois un peu le problème, même si je ne comprends pas que ça se produise…
Si jamais t’arrive à le reproduire, m’envoyer le fichier de jeu serait d’une grande aide.

J’ai pas compris cette phrase.

Désolé, je refais ça en bon français :unamused:

J’ai mis “Random(4000)” mais ça ne marche pas lorsque l’on met “” autour de Random.

Par contre j’ai trouvé solution au problème (qui en fait n’était peut être qu’un erreur de syntaxe) :neutral_face:

→ ToString(Random(4000))

Et là ça fonctionne et à priori pas de random*4 :smiley:

J’vous tiens au jus si le problème refait surface malgrès le ToString (en fait en y réfléchissant bien ça me parait un peu logique vue que la zone de saisi attend une expression texte et pas numérique :mrgreen:

Rappelle toi, je t’ai déjà signalé ce bug par mp…
ça arrive sans raisons particulières…

Je sais, et comme ça arrive sans raison particulière, c’est pas simple de trouver l’origine du problème.

Je viens d’avoir le même problème avec les variables, ça me fait Variable(Variable(Variable(score))) :frowning:

Il me faudrait vraiment un de vos fichiers de jeu si possible, histoire d’avoir une base sur laquelle chercher le problème.
Par exemple, dès que vous avez ce problème, enregistrez votre fichier sous un nouveau nom et envoyez le moi.

C’est en ouvrant les jeux que ça fait ça ?

Ok, dès que cela se reproduit, je te passe le fichier.

Non, moi ce n’est pas quand je l’ouvre, voila les circonstances dans lesquelles cela s’est produit (2 fois) :

  • J’ai une variable “score” et une variable “balles” dont les valeurs sont affichées à l’écran
  • J’ajoute des évènements, je modifie des trucs sans toucher aux variables
  • Et à un moment donné je teste le jeu et les valeurs de “score” et de “balles” sont 0
  • Je vais donc voir l’évènement qui affiche les variables et il y a écrit : Variable(Variable(Variable(score)))
    Et pareil pour “balles”.

Cela le fait que pour les variables de la scène car après la 1ère fois que le bug est survenu, j’ai changé la variable “score” en variable globale et le bug s’est appliqué que pour la variable “balles”.

EDIT : le bug vient de se reproduire !! Youhou !(je pensais pas qu’un jour je dirais ça :laughing: ). Je sauvegarde et je t’envoie le jeu. Je te met aussi les images ou pas besoin ?
http://www.megaupload.com/?d=ARFF721B
(Je crois qu’il est indisponible maintenant :frowning: )

Mais en fait je crois que la solution au bug est, comme pour Inateno, est de mettre “VariableString(score)” puisque c’est un texte à afficher. Mais cela n’explique pas pourquoi GD rajoute des “Random(” ou des “Variable(”.

Ok, ça me paraissait bizarre que ça vienne de l’ouverture, j’avais vérifié sans rien trouvé qui pourrait déclencher ça.
Je vais regarder ton fichier de jeu, merci.

Dans les deux cas que vous m’avez signalé, il semble qu’un tel bug ne se produise que lorsqu’on tente d’afficher dans une expression texte une valeur numérique en effet, “tant mieux”.

J’ai réussi à reproduire le bug avec le jeu que tu m’a passé.
Il se reproduit systématiquement quand on renomme un objet. Et comme c’est systématique, je devrai pourvoir débugger ça. :slight_smile:

Super, merci beaucoup :smiley:

J’ai corrigé ça.
Si vous renommez un objet, Game Develop rajoutera éventuellement un ToString( devant une expression mathématique insérée dans une expression texte, mais une fois fait, ça ne se répètera pas indéfiniment. ( A noter que Game Develop rajoutait déjà en interne ce ToString )

Mais pourquoi rajoutait-il pleins de fois les Random et Variable si c’était pour renommer des objets? :confused:

Lorsque tu renommes un objet, Game Develop va analyser les paramètres des évènements à la recherche de l’objet à renommer.
Pour cela, il va en quelque sorte décomposer les expressions, de la même façon que pour qu’elles puissent être utilisés dans le jeu, mais à la différence que cette fois ci la décomposition va être utilisée pour chercher le nom de l’objet, le remplacer, et recomposer la nouvelle expression.
Le truc, c’est que quand il tombait sur une expression mathématique intégrée directement sans “ToString” à une expression texte, il la recomposait en remettant le nom de l’expression à la place du ToString, d’où le problème de l’accumulation.

Ah oui !
C’est vrai que depuis un certain temps GD renomme automatiquement les noms d’objets dans les évènements :smiley:

Ok c’est plus logique d’un coup avec vos explications ^^

J’avais même pas calculé le fait de renommer les objets :blush:
Cool en tout cas que t’a trouvé comment le régler ^^ on pense pas tous en effet à mettre une expression texte dans un champ demandant du texte, on raisonne trop comme des humains :laughing:

ps : sinon j’allais proposer de simplement faire que quand on tente de valider une expression numérique dans un champ attendant une expression texte (exemple, il y a pas le ToString ou pas de guillemets, il refuse de la valider) mais c’est tellement plus simple d’ajouter le ToString :smiley: (après j’ai vue qu’il y a dans la fenêtre d’édition de texte, Insérer une expression numérique, qui je suppose rajoute directement le ToString, peut être le rendre plus évident ?? Par exemple mettre un bouton Num en dessous du bouton txt)