AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment :
LEGO Icons 10331 – Le martin-pêcheur
Voir le deal
35 €

 

 définir une nouvelle valeur a une variable d'un autre object

Aller en bas 
3 participants
AuteurMessage
riri785
Débutant



Messages : 16

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMar 26 Juin 2012 - 21:34

Bonjour a tous

je voudrais s'avoir comment pouvons nous changer une variable d'un object depuis un autre object.

exemple:

j'ai un perso nommé obj_perso, et je veut que quand il est prés de l'ennemie nommée lui obj_mob1, et que quand j’appuie sur espace, il recule(sa sa marche) et que sa lui enleve de la vie, pour cela j'ai ajouter ce code dans l’évente espace:

Code:

if(obj_mob1.x > obj_perso.x && obj_mob1.x < obj_perso.x+70 && (((obj_mob1.y > obj_perso.y && obj_mob1.y < obj_perso.y+30) || (obj_mob1.y < obj_perso.y && obj_mob1.y > obj_perso.y-30) || (obj_mob1.y == obj_perso.y))) ){
    obj_mob1.x+=90;
    vie_mob1 -=50;
}

if(obj_mob1.x < obj_perso.x && obj_mob1.x > obj_perso.x-70 && (((obj_mob1.y < obj_perso.y && obj_mob1.y > obj_perso.y-30) || (obj_mob1.y > obj_perso.y && obj_mob1.y < obj_perso.y+30) || (obj_mob1.y == obj_perso.y))) ){
    obj_mob1.x-=90;
    vie_mob1-=50
}


et je veut donc que l'object obj_mob1 reçoit la nouvelle valeurs de sa vie, vie_mob1.

voila j’espère que l'on vas m'aider Smile.
Revenir en haut Aller en bas
65c816
Très bonne participation
65c816


Messages : 148
Projet Actuel : Jeux retro Beathem'up all

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMar 26 Juin 2012 - 22:39

je veux pas dire de betise mais il me semble que c'est comme pour sa variable "x"
Code:

obj_mobi1.vie_mob1-=50;
serait correct
Revenir en haut Aller en bas
http://superfamicom.fr
riri785
Débutant



Messages : 16

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMar 26 Juin 2012 - 22:58

salut 65c816 , effectivement sa marche merci Smile Smile, mais par contre sa ne marche que pour la changer, mais pas pour la vérifier/la lire.

par exemple je veut faire sa dans obj_perso:

Code:

if(obj_mob1.vie_mob1 >1){
//et du code ici
}

amis sa me met qu'il ne connait pas vie_mob1.
Revenir en haut Aller en bas
65c816
Très bonne participation
65c816


Messages : 148
Projet Actuel : Jeux retro Beathem'up all

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMar 26 Juin 2012 - 23:06

les variable vie/nrj en général je préfère qu'elles soient gérées par les objects eux même ça évite des soucis
bon aprés dans le step de obj_mobi1 tu mets seulement ça

Code:
if ( vie_mob1 < 1)
{
conséquences;
}
Revenir en haut Aller en bas
http://superfamicom.fr
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMar 26 Juin 2012 - 23:17

Avec instance.attribut tu peut lire et écrire.
Revenir en haut Aller en bas
riri785
Débutant



Messages : 16

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMar 26 Juin 2012 - 23:23

Oui je les fait sa aussi mais je t'explique , en faite j'ai bien mit:

Code:

if ( vie_mob1 < 1)
{
//et la je détruis l'instance + sa position
}

mais du coup quand j'appuie sur espace ba sa me met une erreur disant que obj_mob1.x n’existe plus, logique il est mort donc je les supprimer. alors dans obj_perso dans l’évènement "j'appuie sur espace", je doit en gros lui indiquer que je peut le tuer que si il est mort ^^. Donc je fait sa:


Code:

if(obj_mob1.vie_mob1 >1){

if(obj_mob1.x > obj_perso.x && obj_mob1.x < obj_perso.x+70 && (((obj_mob1.y > obj_perso.y && obj_mob1.y < obj_perso.y+30) || (obj_mob1.y < obj_perso.y && obj_mob1.y > obj_perso.y-30) || (obj_mob1.y == obj_perso.y))) ){
    obj_mob1.x+=90;
    obj_mob1.vie_mob1 -=100;
}

if(obj_mob1.x < obj_perso.x && obj_mob1.x > obj_perso.x-70 && (((obj_mob1.y < obj_perso.y && obj_mob1.y > obj_perso.y-30) || (obj_mob1.y > obj_perso.y && obj_mob1.y < obj_perso.y+30) || (obj_mob1.y == obj_perso.y))) ){
    obj_mob1.x-=90;
    obj_mob1.vie_mob1 -=100;
}

}

et c'est la qu'il me dit qu'il ne connait pas vie_mob1.
Revenir en haut Aller en bas
65c816
Très bonne participation
65c816


Messages : 148
Projet Actuel : Jeux retro Beathem'up all

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMar 26 Juin 2012 - 23:29

mais vie_mob1 est bien declaré dans obj_mob1?
Revenir en haut Aller en bas
http://superfamicom.fr
riri785
Débutant



Messages : 16

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMar 26 Juin 2012 - 23:32

-oui vie_mob1 est bien declaré dans obj_mob1

-Heuu sa veut dire quoi instance.attribut ?


je suis désoler je débute depuis aujourd'hui =/

Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMar 26 Juin 2012 - 23:51

Dans GM t'as les objets, que t'instancie soit quand tu les dépose dans une room, soit quand tu fait un instance_create.
Une instance se veux une copie d'un objet, avec ses attributs et méthodes, normalement.
Dans GM on a le droit qu'aux attributs, qui sont les variables locales de l'instance.

Par exemple, dans le create de ton objet player tu met
Code:
maVie = 0
munitions = 10

Tu viens de créer deux variables locales (ou attributs), locales car elles sont uniquement accessible depuis l'instance, a moins d'utiliser le fameux
instance.attribut.

Je te conseille vivement de lire la doc a propos des instances, ou de lire ce tuto:
https://cbna.forumactif.com/t10991-tutorielgml-objets-et-instances

D'ailleurs si t'est avide de savoir : https://cbna.forumactif.com/t10919-tutoriels-apprendre-le-gml
Revenir en haut Aller en bas
riri785
Débutant



Messages : 16

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMer 27 Juin 2012 - 0:07

D'accord je comprend mieux, sa revient au même que les classes en c++. Mais alors j'ai un problème d'utilisation, ou met on se fameux instance_create, car j'ai mit dans le creat de obj_mob1:

Code:

ins_mob1 = instance_create(128, 32, obj_mob1);

et quand je lance, sa me met que sa a cesser de fonctionner.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMer 27 Juin 2012 - 0:16

C'est normal, tu crée une instance de obj_mob1 dans l'obj_mob1.
Donc ça va te créer une infinité d'instance, et forcément, GM ne le supporte pas x)
Revenir en haut Aller en bas
riri785
Débutant



Messages : 16

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMer 27 Juin 2012 - 0:32

Donc je le créer dans obj_perso:

Code:

ins_mob1 = instance_create(128, 32, obj_mob1);

dans obj_mob1 je met:

Code:

vie = 200;

Et donc je retourne dans obj_perso et je marque:

Code:

if(ins_mob1.vie >1){

if(obj_mob1.x > obj_perso.x && obj_mob1.x < obj_perso.x+70 && (((obj_mob1.y > obj_perso.y && obj_mob1.y < obj_perso.y+30) || (obj_mob1.y < obj_perso.y && obj_mob1.y > obj_perso.y-30) || (obj_mob1.y == obj_perso.y))) ){
    obj_mob1.x+=90;
    ins_mob1.vie -=100;
}

if(obj_mob1.x < obj_perso.x && obj_mob1.x > obj_perso.x-70 && (((obj_mob1.y < obj_perso.y && obj_mob1.y > obj_perso.y-30) || (obj_mob1.y > obj_perso.y && obj_mob1.y < obj_perso.y+30) || (obj_mob1.y == obj_perso.y))) ){
    obj_mob1.x-=90;
    ins_mob1.vie -=100;
}

}

et la comme d'habitude "Unknown variable vie" dans "if(ins_mob1.vie >1){" de mon obj_perso.

help please Smile
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMer 27 Juin 2012 - 0:37

Tu peut m'envoyer ton gmk/gm6 ?
Revenir en haut Aller en bas
riri785
Débutant



Messages : 16

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMer 27 Juin 2012 - 0:48

Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMer 27 Juin 2012 - 1:07

Alors bon déjà, si tu veux alléger ton moteur, sache que GM gère déjà les collisions.

Tu peut utiliser place_meeting pour savoir si ton objet est en collision avec un autre.

Je serais toi, je recommencerais a zéro en faisant divers tests.


Pour les déplacements, je te conseille d'utiliser directement les coordonnées de ton objet.
Par exemple pour aller a droite : x += 1
a gauche x -= 1, etc

Donc pour un code de déplacement, on aurais
if(keyboard_check(vk_right)) x += 1
et pareil pour les autres directions

Quand aux collisions, si tu veux savoir si t'est en collision avec un autre objet tu peut juste faire:
if(place_meeting(x, y, lautreObject)) patatipatata

Tu peut aussi utiliser les instance_place et instance_position qui te donnent l'id de l'instance touchée.

Sinon pour ton problème, je doit être trop crevé mais j'ai pas trouvé.
Tout me semble bon.
Revenir en haut Aller en bas
riri785
Débutant



Messages : 16

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMer 27 Juin 2012 - 1:20

Okk alors merci pour les astuce pour alléger le moteur, par contre pour les collision je n'ai utiliser les fonction inclue dans GM car je voulait faire une sorte de hitbox de tant de pixels et donc pas avoir une collision directe.

En tout cas merci, je revoie sa demain, si tu trouve la solution a mon problème sa serait sympas de m'aider a le résoudre, merci Smile.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  EmptyMer 27 Juin 2012 - 1:29

Alors si tu veux faire des collisions bbox manuellement, va dans ton sprite, ensuite clique sur [Modify Mask]
Ensuite sélectionne Manual, choisis les valeurs, et en bas, remplace Precise par Rectangle.

Ensuite plus qu'a utiliser place_meeting normalement :p
Revenir en haut Aller en bas
Contenu sponsorisé





définir une nouvelle valeur  a une variable d'un autre object  Empty
MessageSujet: Re: définir une nouvelle valeur a une variable d'un autre object    définir une nouvelle valeur  a une variable d'un autre object  Empty

Revenir en haut Aller en bas
 
définir une nouvelle valeur a une variable d'un autre object
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [résolue] bug avec les valeur des object
» Problème de valeur de variable
» Définir des variable dans un objet (object_add)
» testé la valeur d'une variable
» Test si variable a une valeur

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: