AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
-33%
Le deal à ne pas rater :
Trottinette électrique pliable Ninebot E2 E Segway à 199€
199 € 299 €
Voir le deal

 

 [résolu] Attaques façon Hack&Slash

Aller en bas 
+2
Asu
diditigrou
6 participants
AuteurMessage
diditigrou
Pas mal



Messages : 34

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyVen 11 Déc 2015 - 20:53

Bonsoir,

C'est de nouveau moi. happy1

Maintenant que mes déplacements se font correctement, et aussi que mes jauges de vie sont bien placées et fonctionnelles, il est temps de m'attaquer à un nouveau "chantier" (je n'avance pas vite en ce moment, le boulot, le boulot...).

Je souhaite faire des attaques en cliquant sur le monstre (principe du hack & slash), il me faut a priori donc :

- que le monstre perde de la vie quand j'utilise le clic gauche. Ok
- que la perte de vie se fasse en fonction de la distance du héros au monstre (si je suis trop loin, je ne peux pas toucher). Ok
- que la distance soit fonction d'un objet "arme". Ok
- que le monstre perde de la vie fonction des dégâts (aléatoire) de mon héros. Ok
- que s'affiche les dégâts temporairement au dessus du monstre. Ok

Pour mes dégâts, j'ai créé une variable "degat" sur mon héros. J'ai ensuite mis le code suivant sur mon arme :
Code:
heros_object.degat = random_range(1, 6);

Est-ce que les dégâts de mon héros reste bien aléatoire sur un d6 ?

Pour les autres choses à ajouter, j'ai quelques idées mais cela ne reste pas bien fluide. Existe-t-il un tuto ou un manuel en français sur les différentes fonctions de GM ? Quelque chose d'imprimable de préférence. happy1


Dernière édition par diditigrou le Dim 17 Jan 2016 - 15:09, édité 5 fois
Revenir en haut Aller en bas
Asu
Utilisateur confirmé: Rang ****
Asu


Messages : 895

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyVen 11 Déc 2015 - 21:49

Il existe bel et bien une documentation en français pour GM, qui est la traduction de l'aide en anglais (donc qui regroupe également des petits tutoriels et guides). En revanche, tu es sous GM:S et il me semble que cette doc est vieille (GM6 ou GM7, j'imagine). C'est-à-dire que certaines fonctionnalités du langages seront obsolètes ou que certaines manqueront. Mais du côté des fonctionnalités de base (mouvement, etc.) il ne devrait pas y avoir trop de problème.

Vu qu'on touche quelque chose d'un peu plus ardu, le GML sera on ne peut plus confortable que du Drag&Drop.

Code:
point_distance(x1, y1, x2, y2);
point_distance est une fonction qui permet d'obtenir la distance (en pixels) entre deux points p1 et p2.
Pour les points (4; 7) et (2; 1), on entre donc :
Code:
point_distance(4, 7, 2, 1)
A titre d'information (si tu n'es pas professeur de maths), cela équivaut à faire faire √((𝚫x)² + (𝚫y)²)
A partir de ça, tu peux utiliser une condition afin de vérifier si l'ennemi est suffisamment proche de ton objet.
Disons que obj_enemy soit ton adversaire et que tu veux que l'adversaire ne soit blessé (la vie de l'adversaire étant designé par une variable vie qu'à moins de 200 pixels, et que tu veux descendre les dégâts au fur et à mesure que la distance est haute. Place ce code en global left click pour l'objet arme.
Code:
obj = instance_position(mouse_x, mouse_y, obj_enemy); // Note : Le point-virgule est facultatif en GML, mais c'est une bonne pratique à prendre.
if (obj != noone) // On vérifie bien qu'il y ait un ennemi là où on clique
{
    dist = point_distance(x, y, obj.x, obj.y);
    if (dist < 200)
    {
        degatsbase = random_range(1, 6); // Attention : Les dégâts seront de 1 à 5 et non pas de 1 à 6.
        obj.vie -= (degatsbase - (dist / (degatsbase / 2.))); // Les dégâts de base peuvent être divisés jusqu'à deux selon la distance.
    }
}

Malheureusement, sauf si aucun changement n'a été effectué, il n'est pas possible de donner une fonction à un objet à proprement parler (ce qu'on appellerait "méthode" dans de nombreux langages de programmation, comme le C++ par exemple) - La seule chose qui s'en rapproche le plus en GML sont les scripts.

Pour afficher les dégâts temporairement au dessus du personnage... Reprenons notre code, et modifions-le un peu :
Code:
obj = instance_position(mouse_x, mouse_y, obj_enemy);
if (obj != noone)
{
    dist = point_distance(self.x, self.y, obj.x, obj.y);
    if (dist < 200)
    {
        degatsbase = random_range(1, 6);
        degats = (degatsbase - (dist / (degatsbase / 2.)));
        rebours = 2 * room_speed; // On affichera les dégâts deux secondes
        obj.vie -= degats;
    }
}
Dans l'évènement Create, il nous faut maintenant rajouter la déclaration de notre variable rebours : En GML, assigner une valeur a une variable la crée si ce n'est pas déjà fait. Dans notre cas, elle ne le sera qu'une fois que l'on a déjà attaqué. Or si on essaie de comparer la variable alors qu'elle n'existe pas encore... Aïe!
Code:
rebours = 0;
C'était aussi simple que ça.

Maintenant, rentrons dans l'évènement Draw de l'objet ennemi, où l'on passera dans la partie intéressante.

Code:
draw_set_halign(fa_center); // On aligne le texte au centre, sinon le texte sera décalé.
if (rebours > 0) // On vérifie que le compte à rebours ne soit pas terminé
{
    draw_text(x, y - 16, round(degats)); // On affiche les dégâts arrondis à l'unité 16 pixels au dessus de l'ennemi touché (tu peux modifier si cela s'avère trop proche)
    rebours -= 1;
}
draw_set_halign(fa_left); // On remet l'alignement par défaut, pour éviter de décaler du texte ailleurs censé être aligné à gauche

Il est possible avec Game Maker de choisir des polices de caractères modifiables dans la partie Fonts. Tu peux ajouter la font voulue dans ce cas, puis la sélectionner à l'aide du GML.
Code:
draw_set_font(nom_du_font);

Rappel : random_range(x1, x2) renvoie un nombre réel (donc il peut y avoir des chiffres après la virgule) de x1 à x2 - 1. Tu peux arrondir ce nombre avec la fonction round(x). Vu que je n'étais pas sûr que ce soit ce que tu souhaites, je n'ai arrondi que les dégâts temporaires.

Je n'utilise plus GM depuis quelques temps donc il y a peut être quelques erreurs.
Revenir en haut Aller en bas
diditigrou
Pas mal



Messages : 34

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptySam 12 Déc 2015 - 20:38

Merci tout d'abord.
J'ai mis à jour le premier post.

Il me reste maintenant à faire en sorte que la distance d'attaque varie en fonction de l'objet équipé. Et là, j'en arrive à mon problème: comment fait-on pour équiper un objet ?

Actuellement, j'ai ce code ci sur mon arme dans un event clic gauche :
Code:
heros_object.degat = round (random_range (1, 6))

Et je détruis mon objet juste après.

Grosso modo, pour un début je voudrais faire 4 armes :
- sword (dégât allant de 1 à 6 et distance d'attaque de 100 pixels) ;
- spear (dégât allant de 1 à 6 et distance d'attaque de 200 pixels) ;
- bow (dégât allant de 1 à 6 et distance d'attaque de 1000 pixels) avec un projectile ;
- axe ( dégât allant de 2 à 12 et distance d'attaque de 100 pixels) ;

Il faudrait que je puisse passer d'une arme à l'autre et que leurs caractéristiques "s'attachent" quand une arme est équipée à mon héros.
Revenir en haut Aller en bas
GDOR1
Très bonne participation
GDOR1


Messages : 130

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptySam 12 Déc 2015 - 21:25

Dans ce cas là, tu peux utiliser des tableaux. Du coup tu es obligé d'utiliser du GML, mais c'est beaucoup plus pratique.
Tu as juste à créer une variable arme_courante, qui va de 0 à 3 (puisque tu as 4 armes), et à faire changer la valeur en fonction de l'arme choisie. Ensuite tu fais des tableaux qui contiennent les valeurs des armes :
Code:
//Pour l'épée
degats1[0] = 1 //1ère limite de dégâts
degats2[0] = 7 //2ème limite de dégâts
portee[0] = 100 //distance d'attaque

//Pour la lance
degats1[1] = 1 //1ère limite de dégâts
degats2[1] = 7 //2ème limite de dégâts
portee[1] = 200 //distance d'attaque

//Pour l'arc
degats1[2] = 1 //1ère limite de dégâts
degats2[2] = 7 //2ème limite de dégâts
portee[2] = 1000 //distance d'attaque

//Pour l'épée
degats1[3] = 2 //1ère limite de dégâts
degats2[3] = 13 //2ème limite de dégâts
portee[3] = 100 //distance d'attaque

Ensuite, lors des calculs, tu n'as plus qu'à faire point_distance(x,y,x2,y2) < portee[arme_courante] pour la portee, et random_range(degats1[arme_courante],degats2[arme_courante]) pour les dégâts. Le [arme_courante] retournera la valeur de la case du tableau à la position arme_courante.

Pour apprendre à se servir des tableaux, il y a un bon tutoriel d'onilink_.
Revenir en haut Aller en bas
diditigrou
Pas mal



Messages : 34

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptySam 12 Déc 2015 - 22:58

Je suis allé voir dans la section des tutoriels mais je ne l'ai pas trouvé.
Est-il possible de récupérer des informations sur un tableur externe ?
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptySam 12 Déc 2015 - 23:15

Revenir en haut Aller en bas
diditigrou
Pas mal



Messages : 34

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyLun 21 Déc 2015 - 18:57

Merci, je vais potasser cela.

edit : Bon, c'est pas mal de choses d'un coup quand même.

J'ai mis dans un event create de mon héros (bon endroit pour ça ?) :
Code:
//tableau pour les armes

//Pour les poings
degats[0] = 1
portee[0] = 50

//Pour l'épée
degats[1] = round(random_range(1 , 6)) //dégâts
portee[1] = 100 //distance d'attaque

//Pour la lance
degats[2] = round(random_range(1 , 6)) //dégâts
portee[2] = 200 //distance d'attaque

//Pour l'arc
degats[3] = round(random_range(1 , 6)) //dégâts
portee[3] = 1000 //distance d'attaque

//Pour la hache
degats[4] = round(random_range(2 , 12)) //dégâts
portee[4] = 100 //distance d'attaque

Et ce pour seulement 5 objets simples...
Si je veux faire des variations ça va me faire un roman. Il n'est pas possible de récupérer des informations externes à Game Maker ?

Et puis, il faut que je fasse un inventaire ou mon personnage puisse switcher son équipement.

Il vaut mieux que je refasse un topic pour chaque problème ou alors je fais au fur et à mesure ici ?
Revenir en haut Aller en bas
Asu
Utilisateur confirmé: Rang ****
Asu


Messages : 895

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyLun 21 Déc 2015 - 21:13

C'est possible, tu peux utiliser les fonctions de fichier pour lire les informations. Ça touche déjà à quelque chose d'un peu plus compliqué, mais ça reste raisonnable.
Pour ça il faudrait écrire un "parser" qui va permettre de lire un fichier texte et récupérer les informations voulues. Pour faire simple, prenons une structure de fichier très simple :
Code:
(Commentaire)
(dégâts minimum)
(dégâts maximum)
(portée)

Exemple :
Code:
Cette ligne est ignorée. Lance
1
6
200
Cette ligne aussi est ignorée. Arc
1
6
1000
Hache
2
12
100

Le problème avec l'évènement create par contre, c'est que les dégâts aléatoires vont être définis dès le début et ne changeront pas. J'imagine que tu veux que les dégâts changent à chaque fois, donc dans ce cas il faut mieux carrément créer deux arrays, degatsminimum et degatsmaximum.

On lira ces infos depuis un fichier items.txt
Dans notre cas on utilisera "switch" qui permet d'éviter de mettre des if/else partout dans le cas où on a une variable et diverses valeurs possibles.

Code:
file = file_text_open_read(working_directory + "\items.txt"); // On ouvre le fichier items.txt se trouvant dans le dossier du jeu
i = 0; // Correspond au numéro de la ligne, de 0 à 3.
j = 0; // Correspond au numéro de l'objet
while (!file_text_eof(file)) // Tant que l'on a pas atteint la fin du fichier :
{
    switch(i)
    { // Pas de case 0 puisqu'on ne veut rien faire dans ce cas
          case 1: // Dégâts minimum
          degatsminimum[j] = file_text_read_real(file); break;
          case 2: // Dégâts maximum
          degatsmaximum[j] = file_text_read_real(file); break;
          case 3: // Portée
          portee[j] = file_text_read_real(file); break;
    }
    file_text_readln(); // On passe à la prochaine ligne du fichier
    i += 1;
    if (i == 4) // Si on a terminé ce qu'on a à faire pour cette objet, passons au suivant
    {
        j += 1; // On passe au prochain objet, donc on augmente le numéro de un
        i = 0; // On retourne à la première ligne de description de l'objet
    }
}
file_text_close(file); // On ferme le fichier car on n'en a plus besoin

Attention par contre, si le fichier est mal structuré (une ligne qui manque par exemple), le programme plantera.

Ici c'est simplifié au maximum, souvent tu pourras tomber sur d'autres sortes de structures plus compliquées, par exemple dans cet aspect :

Du JSON :
Code:
{
    "lance": {
          "degats_minimum": "1"
          "degats_maximum": "6"
          "portee": "200"
    }
}

Ça peut s'avérer beaucoup plus clair et explicite, plus simple à déboguer, mais c'est déjà bien plus dur d'écrire un parser pour ça.
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
Linky439


Messages : 2643
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyLun 21 Déc 2015 - 22:37

Plutôt qu'un fichier texte, pourquoi ne pas utiliser un .ini qui intègre déjà une structure comme ça ? Le code est simplifié et ça évite de faire planter le programme si le fichier est malencontreusement mal rempli.
Après, ça dépends si tu as besoin d'une structure plus complexe que juste une catégorie, mais je pense que pour le coup ça devrait suffire et être plus simple.

Genre un "monfichier.ini" comme ça :
Code:
[Lance]
degatmin=2
degatmax=5
[Arc]
degatmin=1
degatmax=3

Bah, pour chopper les valeurs, tu fais :
Code:
ini_open("monfichier.ini")
degatmin=ini_read_real("Lance","degatmin",0) //0 est la valeur par défaut si il n'y a pas de ligne "degatmin" dans la catégorie "Lance"
degatmax=ini_read_real("Lance","degatmax",0)  //idem
ini_close()
Revenir en haut Aller en bas
Asu
Utilisateur confirmé: Rang ****
Asu


Messages : 895

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyLun 21 Déc 2015 - 22:46

Oui mais dans ce cas ça te fait rajouter encore du code alors que tu pourrais t'en passer.
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
Linky439


Messages : 2643
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyMar 22 Déc 2015 - 0:18

Je vois pas vraiment en quoi ça rajoute du code... Le tien fait bien dix lignes de plus que le mien crossa
Revenir en haut Aller en bas
diditigrou
Pas mal



Messages : 34

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyMer 6 Jan 2016 - 18:27

GM repart, et moi de même.

Mes meilleurs vœux à tous.

Bon, j'ai un soucis, enfin plusieurs. Premièrement, j'ai un soucis avec le code en Left pressed sur mon objet goblin

Code:
rebours = 1 * room_speed;
if ((point_distance(heros_object.x, heros_object.y, goblin.x, goblin.y)) < heros_object.portee)
    {
        gob_vie -= heros_object.degat;
    }
else {};

Le jeu plante, qu'est-ce que j'ai fait de travers ?

Deuxièmement, j'ai bien fait mon tableau avec les valeurs pour les différentes armes possibles.

Code:
//tableau pour les armes

//Pour les poings
degats[0] = 1
portee[0] = 50

//Pour l'épée
degats[1] = round(random_range(1 , 6)) //dégâts
portee[1] = 100 //distance d'attaque

//Pour la lance
degats[2] = round(random_range(1 , 6)) //dégâts
portee[2] = 200 //distance d'attaque

//Pour l'arc
degats[3] = round(random_range(1 , 6)) //dégâts
portee[3] = 1000 //distance d'attaque

//Pour la hache
degats[4] = round(random_range(2 , 12)) //dégâts
portee[4] = 100 //distance d'attaque

Cependant, il me semble que vous m'avez dit que les dégâts ne seront pas aléatoire dans l'intervalle, comment faire ceci ?

Je ne sais pas comment faire appel aux valeurs du tableau sur mon héros, j'ai actuellement ceci sur mon héros :

Code:
force = 1;
constitution = 1;
intelligence = 1;
volonte = 1;
agilite = 1;
perception = 1;
dexterite = 1;
charisme = 1;
PV = force + constitution * 2;
PV_max = force + constitution * 2;
parade = dexterite + force + agilite;
attaque_rapproche = agilite + force * 2;
degat = 1;
arme_courante = 0;
portee = 50;
Revenir en haut Aller en bas
hyper
Utilisateur confirmé: Rang ****
hyper


Messages : 1458
Localisation : près de Nantes
Projet Actuel : Super Note Aventure

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyMer 6 Jan 2016 - 18:58

Pour le soucis des dégâts aléatoires, c'est car la fonction random_range est appelée uniquement à l'initialisation de la valeur des dégâts.
Essaye de créer 2 variables, degats_min et degats_max, puis au moment d'attaquer tu fais un random_range entre ces deux valeurs Wink

Pour le premier problème, as-tu essayé en enlevant le point-virgule après l'accolade fermante ?
Revenir en haut Aller en bas
https://cagibi.itch.io/
diditigrou
Pas mal



Messages : 34

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyDim 10 Jan 2016 - 19:01

J'ai enlevé le point-virgule mais ça ne fonctionne toujours pas.

Sinon, je ne sais toujours pas comment faire appel aux valeurs du tableau sur mon héros.
Dois-je faire quelque chose sur l'arme ?
Revenir en haut Aller en bas
diditigrou
Pas mal



Messages : 34

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyMer 13 Jan 2016 - 16:24

Up

J'ai quasiment résolu tous mes problèmes. Un nom de variable que j'avais changé et oublié de changer partout... >_>

J'ai réussi à faire appel aux valeurs des tableaux.
edit : en fait non, ça ne fonctionne pas...

Il ne me reste plus qu'une chose, que l'aléatoire des dégâts soit vraiment aléatoire. Actuellement, cela me donne toujours 1 et je ne sais pas pourquoi. Je mets le code que j'utilise.

Code:
//concerne l'arme équipée, de base les poings
arme_courante = 0;
degats_min = degats_min[arme_courante];
degats_max = degats_max[arme_courante];
portee = portee[arme_courante];
degats = random_range(degats_min,degats_max);


Dernière édition par diditigrou le Mer 13 Jan 2016 - 17:52, édité 1 fois
Revenir en haut Aller en bas
hyper
Utilisateur confirmé: Rang ****
hyper


Messages : 1458
Localisation : près de Nantes
Projet Actuel : Super Note Aventure

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyMer 13 Jan 2016 - 16:28

Code:
degats = random_range(degats_min,degats_max);
Cette ligne-là ne doit pas être appelée au create mais bien dans l'événement de l'attaque. Sinon, tous les dégâts auront la même valeur choisie au début du jeu. Wink
Revenir en haut Aller en bas
https://cagibi.itch.io/
diditigrou
Pas mal



Messages : 34

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyMer 13 Jan 2016 - 18:14

Alors, je suis mal parti depuis le départ.

Je vais essayer d'être le plus clair possible.

Pour la situation actuelle, j'ai 3 objets qui rentre en jeu : heros_object, goblin et sword (je ne fais que dans le cas d'une arme).

Pour heros_object, j'ai ceci comme code :

dans le Create
Code:
//tableau pour les armes

//Pour les poings
degats_min[0] = 1
degats_max[0] = 1
portee[0] = 50

//Pour l'épée
degats_min[1] = 1 //dégâts
degats_max[1] = 6
portee[1] = 100 //distance d'attaque

//Pour la lance
degats_min[2] = 1 //dégâts
degats_max[2] = 6
portee[2] = 200 //distance d'attaque

force = 1;
constitution = 1;
intelligence = 1;
volonte = 1;
agilite = 1;
perception = 1;
dexterite = 1;
charisme = 1;
PV = force + constitution * 2;
PV_max = force + constitution * 2;
parade = dexterite + force + agilite;
attaque_rapproche = agilite + force * 2;

//concerne l'arme équipée, de base les poings
arme_courante = 0;
degats_min = degats_min[arme_courante];
degats_max = degats_max[arme_courante];
portee = portee[arme_courante];
degats = irandom_range(degats_min,degats_max);

Pour goblin, j'ai ceci comme code :

dans le Left Pressed
Code:
rebours = 1 * room_speed;
if ((point_distance(heros_object.x, heros_object.y, goblin.x, goblin.y)) <= heros_object.portee)
    {
        gob_vie -= heros_object.degats;
    }

Pour sword, j'ai ceci comme code :
dans le Left Pressed
Code:
heros_object.arme_courante = 1;

Qu'est-ce que j'ai fait de travers ? Le code d'attaque aurait dû être fait avec le heros_object ?
Revenir en haut Aller en bas
diditigrou
Pas mal



Messages : 34

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyDim 17 Jan 2016 - 14:34

Désolé pour le double post, mais voyez-vous une façon pour me sortir de cette impasse ?
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
Linky439


Messages : 2643
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyDim 17 Jan 2016 - 14:56

En fait, tu n'attribue de valeur à ta variable degats qu'à la création de heros_object.
Donc, elle prends une valeur fixe et ne change jamais !

Tu as mis ça dans le Create :
Code:
degats_min = degats_min[arme_courante];
degats_max = degats_max[arme_courante];
portee = portee[arme_courante];
degats = irandom_range(degats_min,degats_max);
Les trois premières lignes devraient être exécutée lorsque tu change d'arme, et la dernière lorsque tu fais l'attaque.

En gros, tu vas dans ton Left Pressed de ton objet goblin, et tu mets ce code là :
Code:
rebours = 1 * room_speed;
if ((point_distance(heros_object.x, heros_object.y, goblin.x, goblin.y)) <= heros_object.portee)
    {
        heros_object.degats = irandom_range(heros_object.degats_min,heros_object.degats_max);
        gob_vie -= heros_object.degats;
    }

Et n'oublie pas de réactualiser la portée et l'intervalle de dégats lors de chaque changement d'arme Wink
Revenir en haut Aller en bas
diditigrou
Pas mal



Messages : 34

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyDim 17 Jan 2016 - 15:07

Merci beaucoup, bon je n'y arrive pas avec le tableau mais j'ai contourné le problème en mettant directement les valeurs au moment du changement d'arme.

Tout fonctionne nickel ! gnii
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
Linky439


Messages : 2643
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyDim 17 Jan 2016 - 15:13

Ah, je pense que tu dois avoir un soucis aussi puisque tes variables s'appellent de la même façon que tes tableaux. Essaie de changer ça ?
Genre la variable c'est degats_min et le tableau c'est degats_min_t Wink

Je pense c'est mieux de garder les tableaux, comme ça si tu dois changer certaines valeurs, ça ira plus vite, non ?
Revenir en haut Aller en bas
diditigrou
Pas mal



Messages : 34

[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash EmptyMer 20 Jan 2016 - 17:49

C'est exact, ça fonctionne nickel désormais, merci encore.
Revenir en haut Aller en bas
Contenu sponsorisé





[résolu] Attaques façon Hack&Slash Empty
MessageSujet: Re: [résolu] Attaques façon Hack&Slash   [résolu] Attaques façon Hack&Slash Empty

Revenir en haut Aller en bas
 
[résolu] Attaques façon Hack&Slash
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [resolu]Comment bouger dans un jeux, Mais façon un peut RPG
» Les smileys attaques !!!
» Comment créer des attaques spécial?
» [b]problème pour tuer un monstre façon mario[/b]
» faire un tir façon mario

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: