AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -20%
Drone Dji DJI Mini 4K (EU)
Voir le deal
239 €

 

 Modifier une variable d'une autre instance via une chaîne

Aller en bas 
3 participants
AuteurMessage
MumboJumbo
Nouveau



Messages : 6

Modifier une variable d'une autre instance via une chaîne Empty
MessageSujet: Modifier une variable d'une autre instance via une chaîne   Modifier une variable d'une autre instance via une chaîne EmptySam 18 Avr 2009 - 23:15

Bonjour à tous,

En regardant l'aide de GM j'ai trouvé 2 fonctions qui me sont très utiles:

variable_global_get(name,value)
variable_local_get(name,value)


Ces fonctions marchent très bien, là n'est pas le problème. Simplement, elles sont limitées:

-la première permet d'obtenir la variable globale définie par la chaîne de caractère mise dans les arguments,
-la deuxième fait la même chose mais avec une variable locale à l'objet.

Or, personnellement je voudrais savoir comment obtenir, par le même système, une variable locale d'une autre instance.

Par exemple, prenons une instance A et une instance B.
Je souhaite que la variable "valeur" de A soit égale à la variable "niveau" de B.
Mais comme je souhaite optimiser mon système, je ne voudrais pas écrire:

valeur= (global.id_de_l_instance_B).niveau

mais

valeur= (global.id_de_l_instance_B).variable_concernee

où "variable_concernee" serait une chaîne qui serait, dans le cas présent, égale à 'niveau'. Ainsi, le logiciel comprendrait qu'il doit retourner la valeur de la variable "(global.id_de_l_instance_B).niveau". Evidemment, en faisant comme ça ça ne marche pas, il doit sans doute y avoir une fonction spécifique que je ne connais pas.

J'ai essayé d'être le plus clair possible, désolé si c'est un peu confus^^'.


Je n'ai pas trouvé de telle fonction dans l'aide. Quelqu'un connaîtrait-il une telle fonction? Merci d'avance pour vos réponses^^.
Revenir en haut Aller en bas
Vivi
Utilisateur confirmé: Rang **
Vivi


Messages : 321
Localisation : dans ma chambre
Projet Actuel : ogc²

Modifier une variable d'une autre instance via une chaîne Empty
MessageSujet: Re: Modifier une variable d'une autre instance via une chaîne   Modifier une variable d'une autre instance via une chaîne EmptySam 18 Avr 2009 - 23:23

en gros tu veux modifier une variable dont le nom serait une string.
bin il y a execute_string("string") qui execute la ligne de code qu'on lui donne, tu pourai faire un truc du genre
execute_string("instanceB."+nom_de_la_variable+"=une valeur")
je sais pas si c'est ce que tu demande, par contre cette fonction a un problème, elle est lente donc il faut pas trop en abuser.
Revenir en haut Aller en bas
http://www.opengamecreator.com
edi9999
Utilisateur confirmé: Rang *****
edi9999


Messages : 2480
Localisation : France
Projet Actuel : theatre flashy

Modifier une variable d'une autre instance via une chaîne Empty
MessageSujet: Re: Modifier une variable d'une autre instance via une chaîne   Modifier une variable d'une autre instance via une chaîne EmptySam 18 Avr 2009 - 23:57

Et je te dis tout de suite que variable_local_set et variable_local_get sont des fonctions qui consomment 1000 fois plus que des allocations de variables normales. Donc en faisant ça, tu fais plutot le contraire d'optimiser.


on va nous même créer un script alors:
un script que l'on nomme

variable_local_set_id
et un que l'on nomme:
variable_local_get_id

le premier a trois arguments: (id,name,value)
le deuxieme deux: (id,name)

dans le premier script variable_local_set_id

Code:

with(argument0)
variable_local_set(argument1,argument2)

et dans le deuxieme script variable_local_get_id
Code:

with(argument0)
return variable_local_get(argument1)

en éspérant que ça marche.
Revenir en haut Aller en bas
http://gameplay.c.la/
MumboJumbo
Nouveau



Messages : 6

Modifier une variable d'une autre instance via une chaîne Empty
MessageSujet: Re: Modifier une variable d'une autre instance via une chaîne   Modifier une variable d'une autre instance via une chaîne EmptyLun 20 Avr 2009 - 0:03

Merci à vous deux pour votre aide précieuse, ça marche! Very Happy

J'ai créé un script comme ceci:

execute_string('(('+argument0+').'+argument1+')=(('+argument2+').'+argument3+')');

Tous les arguments sont des chaînes. Le 0 contient l'id de l'objet dont on souhaite modifier la variable, le 1 contient la variable à modifier,le 2 contient l'id de l'objet dont on souhaite prélever la variable, et le 3 la variable que l'on souhaite copier^^.

Bref, ça marche. Ce n'est peut-être pas la meilleure façon de faire la chose, mais au moins j'ai compris ce que j'ai fait (mieux vaut comprendre ce que l'on fait que de créer un script que l'on ne comprendrait qu'à moitié). Bref, c'est un peu un mélange de vos deux conseils. Et merci d'avoir précisé que variable_local_set et variable_local_get sont des fonctions "gourmandes", je ne le savais pas Wink.
Revenir en haut Aller en bas
Contenu sponsorisé





Modifier une variable d'une autre instance via une chaîne Empty
MessageSujet: Re: Modifier une variable d'une autre instance via une chaîne   Modifier une variable d'une autre instance via une chaîne Empty

Revenir en haut Aller en bas
 
Modifier une variable d'une autre instance via une chaîne
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Resolu] Changer une variable a partir d'une autre
» une variable en vaut une autre?
» Prendre la variable d'un autre objet
» GMS Draw_text avec variable autre obj
» remplacer un texte par un autre (+variable/ini...)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: