CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Probleme code GML

KinderContry
KinderContry
Niveau 9
27 décembre 2013 à 12:50:53

Bonjour ,voila j'ai un petit probleme avec le code GML que j'ai crée :
if position_meeting(x,y,cac_enemy_g)
if position_meeting(x,y,cac_enemy_d)
{
if sante_max<sante_min
sante_max-=-50
{
if sante_max>sante_min
sprite_index=death
}
}

Je voudrais faire en sorte que quand le perso se fait attaquer par un ennemi ,il perde 50 point de vie sur les 100 qu'il a au maximum,et que quand il n'as plus de vie,le sprite change et qu'il ne puisse plus bouger.
Et avec mon code ca ne marche pas ,j'aimerais savoir pourquoi ,merci d'avance :ok:

_Toastation_
_Toastation_
Niveau 9
27 décembre 2013 à 12:55:50

Il perd bien ses points de vie ?

KinderContry
KinderContry
Niveau 9
27 décembre 2013 à 13:54:13

Oui ,enfin un peu trop meme ,il passe de 100 a 0 d'un coup,je pense qu'il faut mettre une cadence ou un truc du genre mais pour ca je ne sais pas comment faire

_Toastation_
_Toastation_
Niveau 9
27 décembre 2013 à 14:04:05

Déjà tes conditions sont bizarres, apparemment tu utilises "sante_max" comme variable qui joue le rôle de la santé actuelle du joueur, c'est assez trompeur.
Essaye un truc plutôt comme ça http://pastebin.com/v3Rdeae3

chopsueys
chopsueys
Niveau 18
27 décembre 2013 à 14:38:55

"if position_meeting(x,y,cac_enemy_g)
if position_meeting(x,y,cac_enemy_d) "

Déjà ça c'est pas bon. Tu ne peux pas faire ça, si tu veux additionner ces 2 condition tu peux faire ça :

if position_meeting(x,y,cac_enemy_g) and position_meeting(x,y,cac_enemy_d)
{
}

ou:

if position_meeting(x,y,cac_enemy_d)
{
if position_meeting(x,y,cac_enemy_g)
{
}
}

Ensuite ça non plus :
"if sante_max<sante_min
sante_max-=-50 "

Si tu dis if quelque chose il faut qu'en suite tu mettes des {} autours des actions que tu veux intégrer à cette condition. exemple:

if sante_max<sante_min
{sante_max-=-50 }

KinderContry
KinderContry
Niveau 9
27 décembre 2013 à 15:53:53

En suivant vo conseils ,voici mon nouveau code :
if position_meeting(x,y,cac_enemy_g) and position_meeting(x,y,cac_enemy_d)
{
if sante_actuelle>sante_min
{
sante_actuelle-=50
}
{
if sante_actuelle<sante_min
{
sprite_index=death
}
}
}

Mais le pers ne perd plus de vie

chopsueys
chopsueys
Niveau 18
27 décembre 2013 à 17:07:11

C'est pas une bonne idée d'avoir 2 objets gauche et droite pour un ennemi.
La tu veux pas que la condition soit une collision avec cac_enemy_g plus cac_enemy_d
tu veux que ce soit l'un ou l'autre pas les 2 en même temps, donc.

if position_meeting(x,y,cac_enemy_g) or position_meeting(x,y,cac_enemy_d)
{
}

En suite tu veux un système de cadence donc tu peux utiliser une alarme et une variable interrupteur on/off ( 1/0 ) pour bloquer ou reprendre le décompte des "-50" sur la vie.

if position_meeting(x,y,cac_enemy_g) or position_meeting(x,y,cac_enemy_d)
{
if cadence_ok==1
{cadence_ok=0;alarm[0]=cadence;vie_actuel-=50}
}

Dans create:

cadence_ok=1 // la variable interrupteur
cadence=30 // le temps d’attente entre chaque -50

Et dans l'event alarme 0 tu va mettre cadence_ok=1

pour le sprite:

if vie_actuel<vie_min
{sprite_index=death}

et pour que ton perso ne puisse plus rien faire tu englobe tout tes codes avec la condition
if sprite_index != death
{

// tout le code du perso
//...

}

KinderContry
KinderContry
Niveau 9
28 décembre 2013 à 21:32:44

Le perso ne perd plus de vie quand il est a 50 points de vie ><

chopsueys
chopsueys
Niveau 18
28 décembre 2013 à 21:42:36

t'as fais ça ? "Et dans l'event alarme 0 tu va mettre cadence_ok=1"

KinderContry
KinderContry
Niveau 9
28 décembre 2013 à 22:34:28

Oui oui c'est bon ,c'est moi qui me suis embrouillé dans le nom des variables ,tout marche ,merci :fete:

KinderContry
KinderContry
Niveau 9
29 décembre 2013 à 02:36:13

Pour éviter de refaire un autre topic,
Imaginons un perso qui fait tourner sa hache autour de lui, y a t il possibilité que quand sa hache est en haut dans les sprite (disons par exemple de subimage 2 à 8, c'est des chiffre au hasard) une hitbox (rectangulaire de 5*20px par exemple) se place à un certain endroit au dessus du perso et quand la hache est en face (subimage 9 à 12 par ex) une hitbox (rectangulaire de 20*5px par ex) se place devant le perso ?
Je sais pas si c'est clair et je m'en excuse, merci d'avance, j'arrive pas à dormir à cause de ça :rire:

chopsueys
chopsueys
Niveau 18
29 décembre 2013 à 11:50:34

Pour ça tu peux créer un petit sprite carré de la taille qu'il te faut. Tu l'associes à un objet et tu le rends invisible (pas pendent les tests ça serra plus simple).
Donc cette objet serra la hitbox que tu recherches. Pour la faire apparaitre au bon moment il faut y aller à tâtons avec des alarmes. Dans l'évènement ou tu déclenches l'attaque genre
if keyboard_check_pressed(vk_space) si c'est avec la touche espace. tu vas y déclarer une nouvelle alarme, alarm[1]=7 par exemple, et dans cette alarme tu vas créer ton objet, instance_create(obj_player.x+x,obj_player.y+y,obj_
hitbox)
au coordonnés relative à ton perso, à toi de voir la valeur de x de y et si il faut les additionné ou les soustraire au x et y du perso.
Ensuite dans cette objet tu vas créer une nouvelle alarme, alarm[0]=5 et dans cette alarme tu vas détruire l'objet.

KinderContry
KinderContry
Niveau 9
29 décembre 2013 à 13:35:06

Dans le step de mon perso j'ai mis

if mouse_check_button(mb_left)
{
if tire_ok==1
{
alarme[2]=7

...reste du code
dans l'event alarme 2 du perso

instance_create(perso.x-16,perso.y+16,hitbox_hor)

et dans alarme 3 de ma hitbox

alarme[3]=5
{
instance_destroy()
}

et rien ne se passe.

(vraiment ch*ant les alarmes xD )

chopsueys
chopsueys
Niveau 18
29 décembre 2013 à 18:29:03

mouse_check_button_pressed(mb_left)

Sinon l'alarme se relance tous les steps.

KinderContry
KinderContry
Niveau 9
29 décembre 2013 à 18:34:40

Je met ca ou ?

chopsueys
chopsueys
Niveau 18
29 décembre 2013 à 19:05:32

A la place de mouse_check_button(mb_left)

chopsueys
chopsueys
Niveau 18
29 décembre 2013 à 19:06:20

Ya ptetre d'autres choses qui ne vont pas mais déjà ça c'est pas bon.

KinderContry
KinderContry
Niveau 9
29 décembre 2013 à 21:14:41

Ca marche toujours pas,tiens le show information si tu veux voir
Hitbox

Information about object: hitbox_hor

Sprite: hitbox_h
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Create Event:
execute code:

alarme[3]=5

Alarm Event for alarm 3:
execute code:

instance_destroy()

Et du perso(je t'ai pas tout mis)

Sprite: stay_right
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Alarm Event for alarm 2:
execute code:

instance_create(gurdil.x,gurdil.y,hitbox_hor)

Step Event:
execute code:

x=gurdil.x
y=gurdil.y

if mouse_check_button_pressed(mb_left)
{
if tire_ok==1
{
alarme[2]=2
tire_ok=0
alarme_cadence=0
{
if sprite_index=stay_right or sprite_index=run_right
instance_create(gurdil.x,gurdil.y,coup_hache_droit
e)

}
{
if sprite_index=stay_left or sprite_index=run_left
instance_create(gurdil.x,gurdil.y,coup_hache_gauch
e)

}
}
}
if tire_ok==0
{
alarme_cadence+=20
if alarme_cadence>=cadence
{tire_ok=1}
}

chopsueys
chopsueys
Niveau 18
29 décembre 2013 à 23:52:53

parce qu'il ne faut pas de e à alarme en anglais. alarm[] c'est pas une variable que tu crée. Voit ça comme une fonction, c'est comme speed, image_angle, x, y, sprite_index, image_xscale... C'est des variables de gamemaker.

chopsueys
chopsueys
Niveau 18
30 décembre 2013 à 00:03:44

x=gurdil.x
y=gurdil.y

ça, ça sert à rien. Tu dis que x de gurdil est = à x de gurdil
La variable x dans ton objet gurdil correspond déjà à gurdil.x

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment