Menu

Gamemaker studios 2/GML: Comment effectuer une action en une seul frame ??

Messages postés
4
Date d'inscription
dimanche 31 mars 2019
Statut
Membre
Dernière intervention
2 avril 2019
- - Dernière réponse : MyBlueBird
Messages postés
4
Date d'inscription
dimanche 31 mars 2019
Statut
Membre
Dernière intervention
2 avril 2019
- 2 avril 2019 à 19:45
Bonjour :3 , alors voila:

Cela fait depuis peu de temps que je me suis mis à utiliser le GML sur Game maker. Je me trouve confronter à un problème qui bloque toute la suite de mon travail ! Je n'arrive pas a executer une action en une seul frame..


Pour vous donner un exemple, je veut faire en sorte que si la variable (que j'ai crée au préalable, global.Attaque_J1) est égale à 1 alors la vie du joueur 2 (global.Vie_J2) est diminuer de 1. Pour crée cette condition j'ai placé dans l'évènement Create:

if global.Attaque_J1 = 1
{
global.Vie_J2 -= 1
}

Se qui fait que la condition est pris en compte seulement au lancement de l'objet et donc pas lorsque le joueur 1 attaque. J'ai essayer de placer cette condition dans l'évènement Step/Step cette fois. Ici l'action est certes tout le temps demander jusqu'au moment de l'attaque mais lorsque la condition est remplie elle diminue de 1 a l'infinis (a chaque frames) la vie du joueur 2 sans s'arrêter !
J'ai aussi essayer de placer cette condition dans un script qui n'est demander qu'a la fin de chaque tour, mais ici aussi le script n'est même pas prie en charge étant donner que le joueur n'a qu'une frame pour attaquer.

Enfin bref, ma démarche n'est pas bonne et même en essayant d'autre moyen je n'y parviendrais pas. Je m'en remet à vous, aider moi s'il vous plaît :c .
Merci d'avance !
Afficher la suite 

Votre réponse

1 réponse

Messages postés
13156
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 avril 2019
520
0
Merci
Bonjour,

je ne connais pas GML ou Game Maker, mais quand je lis
lorsque la condition est remplie elle diminue de 1 a l'infinis

Je réponds
if global.Attaque_J1 = 1 
{ 
      global.Attaque_J1 = 0
      global.Vie_J2 -= 1 
} 

MyBlueBird
Messages postés
4
Date d'inscription
dimanche 31 mars 2019
Statut
Membre
Dernière intervention
2 avril 2019
-
J'ai essayer mais j'ai toujours le même problème.. Comme si l'ordre de remettre l'attaque à 0 ne s'effectuais pas ou alors s'effectuais mais la condition reste active et se tout le temps.
Il faudrais un evenemts qui soir une condition en lui meme du genre, si la condition est vraie alors effectuer l'action sinon, ne rien faire.
Whismeril
Messages postés
13156
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 avril 2019
520 -
Est ce que tu peux mettre un point d’arrêt et exécuter en pas à pas.
MyBlueBird
Messages postés
4
Date d'inscription
dimanche 31 mars 2019
Statut
Membre
Dernière intervention
2 avril 2019
-
Non, pour stopper un condition en Pas/Pas il faut soit supprimer manuellement la ligne de code ou alors supprimer complètement l'objet possédant le code. Enfin sa c'est se que je pense..
C'est d'ailleurs se que je voudrais faire, crée un objet Action_1_J1 qui resterait toujours dans la salle puis lui demander de crée en x0,y0,z0 un objet Action_2_J1 possédant l'instance Pas/Pas avec comme ligne de code:

if global.Ready_J1 = 1 & global.Ready_J2 = 1
{
instance_create(0,0,0,obj_Attaque_J1)
instance_destroy(obj_Action_1_J1)
}

Se qui supprimeras instantanément ce même objet en en créant un autre (obj_Attaque_J1 en x0,y0,z0) puis de mettre dans l'objet Attaque l'instance Create qui execute instantanément le code:

global.VieJ1 = global.VieJ1 - 1
global.Ready_J1 = 0 & global.Ready_J2 = 0
instance_create(0,0,0,obj_Action_1_J1)
instance_destroy(obj_Attaque_J1)

Normalement sa devrais marcher mais je suis sur et certain qu'il existe une méthode bien plus simple que d'avoir a crée un objet qui lui même en crée un autre après la condition remplis pour s'auto-détruire et laisser le nouveau attaquer puis recrée l'ancien et s'auto-détruire à son tour !

Quel galère -_-"
Whismeril
Messages postés
13156
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 avril 2019
520 -
Non, pour stopper un condition en Pas/Pas il faut soit supprimer manuellement la ligne de code

On ne doit pas parler de la même chose....

Voilà un tuto pour apprendre à utiliser le débbogueur de Visual Studio
https://openclassrooms.com/fr/courses/1526901-apprenez-a-developper-en-c/2867766-utilisez-le-debogueur/

C'est pas ton IDE, certes, mais ça explique les principes de base, dont le point d'arrêt et l'exécution en pas à pas, espionner les variables etc...
MyBlueBird
Messages postés
4
Date d'inscription
dimanche 31 mars 2019
Statut
Membre
Dernière intervention
2 avril 2019
-
Merci !!! J'y fait un tour
Commenter la réponse de Whismeril