Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Jeux: Ce qui vit Dessous / News: Quoi de neuf sur Oniromancie (...) / Sorties: Dread Mac Farlane - episode 6 / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

317 connectés actuellement

29370054 visiteurs
depuis l'ouverture

1006497 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Offgame

Hellsoft

Guelnika & E-magination

Alex d'Or

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RESOLU] [VX Ace] Faire une jauge circulaire


arttroy - posté le 20/12/2012 à 15:41:56 (2394 messages postés)

❤ 0

Just working

Domaine concerné: Script
Logiciel utilisé: RmVX Ace
Me revoilà encore pour un souci, alors histoire que mon menu s'améliore j'avais dans l'idée de créer une jauge de soutien mais pas classique comme celle des HP, MP plutôt circulaire.

J'ai créé le fond de base et la jauge en elle même qui se présentent comme suis:


image image

Donc pour créer la jauge, j'ai déjà une base de script (la jauge doit se remplir grâce à un timer)

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  #--------------------------------------------------------------------------
  # * Draw Soutien Jauge
  #--------------------------------------------------------------------------
  def draw_soutien_jauge(x, y, width = 124)
    @sprite_barre_soutien = Sprite.new
    @sprite_barre_soutien.bitmap = Cache.picture("Base soutien jauge")
    @sprite_barre_soutien.x = 90
    @sprite_barre_soutien.y = 230
    @sprite_barre_soutien.z = 6
    @sprite_jauge_soutien = Sprite.new
    @sprite_jauge_soutien.bitmap = Cache.picture("Jauge soutien")
    @sprite_jauge_soutien.x = 90
    @sprite_jauge_soutien.y = 230
    @sprite_jauge_soutien.z = 5
  end
 



Donc là j'affiche bien mes deux parties pour la jauge

Mais comment faire en sorte que la jauge tourne selon la valeur du timer(entre 0 et 100%) ?

Edit : Du coup je me rend compte que l'exemple que j'avais :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
  #--------------------------------------------------------------------------
  # * Draw Transformation Jauge
  #--------------------------------------------------------------------------
  def draw_actor_transformation(x, y, width = 124)
    draw_gauge(x, y, width, $game_variables[16]/100.0, tp_gauge_color1, tp_gauge_color2)
    #change_color(system_color)
    draw_text(x, y, 30, line_height, "AE")
    draw_text(x + width - 42, y, 42, line_height, $game_variables[16].to_s+"%", 2)
  end
 



ne pourra pas me servir (à part peut être la ligne qui affiche le pourcentage) parce qu'au final ma barre est déjà afficher il faut juste que je trouve comment la faire tourner selon une valeur (genre @timer = 1000)

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Grimimi - posté le 20/12/2012 à 17:36:57 (251 messages postés)

❤ 0

Tu appliques la règle de trois?

http://funkywork.github.io/


Zeus81 - posté le 20/12/2012 à 18:43:27 (11071 messages postés)

❤ 0

Faut aligner ta jauge sur son centre :
@sprite_jauge_soutien.ox = @sprite_jauge_soutien.bitmap.width/2
@sprite_jauge_soutien.oy = @sprite_jauge_soutien.bitmap.height/2
@sprite_jauge_soutien.x += @sprite_jauge_soutien.ox
@sprite_jauge_soutien.y += @sprite_jauge_soutien.oy
Ensuite tu modifies l'angle :
@sprite_jauge_soutien.angle = angle_0 + pct * (angle_100 - angle_0)

angle_0 c'est l'angle que doit avoir ton image pour être vide.
angle_100 c'est l'angle que doit avoir ton image pour être pleine.
pct c'est un pourcentage entre 0 et 1.


arttroy - posté le 20/12/2012 à 18:59:56 (2394 messages postés)

❤ 0

Just working

Waouh merci beaucoup Zeus !! Jamais j'aurais trouvé ça tout seul... Ah ok donc du coup je n'ai plus qu'à définir la vitesse avec le @timer si je comprend bien... ?

Edit : Ah bah non m.... Du coup là il faut que je définisse angle_0 et angle_100 (0° et 180°) et ensuite ?

Là j'ai fait ça :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  def draw_soutien_jauge(x, y, width = 124)
    @sprite_barre_soutien = Sprite.new
    @sprite_barre_soutien.bitmap = Cache.picture("Base jauge soutien")
    @sprite_barre_soutien.x = 90
    @sprite_barre_soutien.y = 230
    @sprite_barre_soutien.z = 6
    @sprite_jauge_soutien = Sprite.new
    @sprite_jauge_soutien.bitmap = Cache.picture("Jauge soutien")
    @sprite_jauge_soutien.x = 90
    @sprite_jauge_soutien.y = 230
    @sprite_jauge_soutien.z = 5
    @sprite_jauge_soutien.ox = @sprite_jauge_soutien.bitmap.width/2
    @sprite_jauge_soutien.oy = @sprite_jauge_soutien.bitmap.height/2
    @sprite_jauge_soutien.x += @sprite_jauge_soutien.ox
    @sprite_jauge_soutien.y += @sprite_jauge_soutien.oy 
    @sprite_jauge_soutien.angle = angle_0 + pct * (angle_100 - angle_0)
  end
  def angle_0
    return 0
  end
  def angle_100
    return 180
  end
  def pct
    return 1
  end
 



Du coup là la jauge est affichée comme si la valeur était à son maximum angle_100 soit 180°

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Estheone - posté le 20/12/2012 à 19:31:17 (312 messages postés)

❤ 0

pct doit être un calcul dont le résultat est un float entre 0.0 et 1.0. Il doit être calculé toutes les frames dans un update, de même que @sprite_jauge_soutien.angle

Wandering Souls : Jeu complet / Topic sur Oniro


arttroy - posté le 20/12/2012 à 20:21:45 (2394 messages postés)

❤ 0

Just working

En clair ça donne quoi parce que les float ok c'est des non entier pour le reste désolé mais c'est du chinois ce que tu viens de me dire...

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Grimimi - posté le 20/12/2012 à 20:29:44 (251 messages postés)

❤ 0

tu calcul ton pourcentage et tu le divise par 100.0

http://funkywork.github.io/


Estheone - posté le 20/12/2012 à 20:30:20 (312 messages postés)

❤ 0

Ca veut juste dire que le calcul doit être refait tout le temps quelque part ^^.

Ce n'est pas parce que tu mets
@sprite_jauge_soutien.angle = angle_0 + pct * (angle_100 - angle_0)
lors de la création de ta jauge que le calcul va se refaire par magie quand la valeur de ton timer change.

Je ne sais pas dans quelle classe tu as mis cette portion de code donc je peux pas vraiment t'aider plus.

Wandering Souls : Jeu complet / Topic sur Oniro


arttroy - posté le 20/12/2012 à 21:02:45 (2394 messages postés)

❤ 0

Just working

En fait ça c'est le Window_Base et l'idée ça va être de pouvoir afficher cette jauge sur la map et dans le menu (à l'exception des onglets "équipement", "statut" parce qu'à l'endroit où se trouve la jauge j'ai déjà des choses d'affichées.

Pour le timer j'avais déjà fait un truc du genre pour mon système d'A-rpg mais je n'arrive pas à savoir où l'appliquer... En gros c'était comme ça (j'ai ôté les parties qui servaient pas à grand chose c'est vraiment pour illustrer mes propos)

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class Game_Player < Game_Character
  alias abs_initialize initialize
  alias abs_update update
  def initialize
    @wait = 0
    @recover = 0
    @kill_player = false
    abs_initialize
  end
  def update
    @recover -= 1 if @recover > 0
    update_attack if @recover == 0 and Input.trigger?(ABS_Config::Attack_Key)
    update_kill if @kill_player
    update_wait_time
    abs_update
  end
  def update_attack
    return if @kill_player
    for enemy in $game_map.enemies
      ax = @x - enemy.x
      ay = @y - enemy.y
      case @direction
      when 2
        attack_enemy(enemy) if ax == 0 and ay == -1
      when 4
        attack_enemy(enemy) if ay == 0 and ax == 1
      when 6
        attack_enemy(enemy) if ay == 0 and ax == -1
      when 8
        attack_enemy(enemy) if ax == 0 and ay == 1
      end
    end
    @can_move = true
    @wait = 25
 
  def update_wait_time
    if @wait > 0
      @wait -= 1
    else
      @can_move = false
    end
  end
 



Edit : Je me demande si j'ai bien créé ça où il le fallait... :doute5

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Estheone - posté le 20/12/2012 à 22:27:29 (312 messages postés)

❤ 0

Ca dépend à quoi sert la jauge aussi. Si c'est un truc qui concerne uniquement ton héros l'idéal serait dans Game_Actor. Mais il n'y a pas de fonction update d'origine vu que les classes de base sont pas faites pour du A-RPG. Sinon Game_Player si tu veux pas trop te faire chier.

Si ça concerne pas que le joueur ça serait plutôt dans Game_System ou Game_Party.

Wandering Souls : Jeu complet / Topic sur Oniro


arttroy - posté le 20/12/2012 à 23:05:36 (2394 messages postés)

❤ 0

Just working

Alors en fait je voudrais coupler ça avec mon système de soutien (que tu connais du coup). en gros la jauge une fois à 100% permettrait d'utiliser une capacité spéciale en rapport avec le personnage de soutien équipé (il faudra donc que je fasse en sorte qu'un charset "diminué" en rapport avec ledit personnage soit affiché sur la jauge).

Pour ça j'ai créé un event commun comme ça :

si jauge soutien == 100
si accessoire "Yunona" (le slot correspondant c'est actor.equips[4]) est équipé
débloquer compétence "Cataplasme"
fin
si accessoire "Kenshi" est équipé
débloquer compétence "Attaque chargée"
fin
fin

Et je comptais rajouter les conditions pour les autres personnages à la suite des deux dernières.

Maintenant la partie hypothétique de l'histoire...
Il faudra que je trouve un moyen pour le déclenchement de l'utilisation des sorts, l'idéal se serait par simple appui d'une touche mais ça sera quand je m'occuperais de modifier ce que j'ai déjà fait pour le système A-rpg. Pour l'instant je me concentre sur le menu tout en apprenant le ruby, en gros j'ai pas encore les capacités de créer le système par moi même donc j'essaie de décortiquer son fonctionnement et de faire étape après étape.
J'ai réussi à créer la base, l'équipement des accessoires est opérationnel (je pourrais rajouter (ou enlever) des "alliés" au fur et à mesure de l'histoire. Maintenant l'idée c'est de faire en sorte que la jauge soit fonctionnelle (en gros qu'elle se remplisse sur la map et que je puisse juste l'afficher dans certaines parties du menu [Scene_MenuBase, Scene_Skill, Scene_Soutien]).
Une fois ça fait il faudra que je créé un système pour pouvoir utiliser les capacités de soutien (et ça honnêtement je n'ai pas encore la moindre idée de comment je vais m'y prendre...). Si tu as jeté un œil au menu (soutien) dans l'archive que je t'ai passé il y a trois type de capacités... (enfin quatre parce que le soin se fera uniquement sur le héros).

Tu l'auras compris le but de ce système c'est de faire en sorte que le héros soit tout le temps tout seul tout au long du jeu (mais il aura quand même quelques potes qui lui fileront un coup de main grâce à ce système...)

Voilà j'espère avoir éclairé ta lanterne (et pas l'inverse...) sur mes intentions !

PS : Pas la peine de me dire de laisser tomber parce que je n'ai pas le niveau ou les compétences... Je vais y arriver !! (Angry Golem Mode)

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Estheone - posté le 20/12/2012 à 23:50:33 (312 messages postés)

❤ 0

Citation:

Pour l'instant je me concentre sur le menu tout en apprenant le ruby, en gros j'ai pas encore les capacités de créer le système par moi même donc j'essaie de décortiquer son fonctionnement et de faire étape après étape.


Citation:

PS : Pas la peine de me dire de laisser tomber parce que je n'ai pas le niveau ou les compétences... Je vais y arriver !! (Angry Golem Mode)



Non je ne te dirai pas d'abandonner vu que je pense que tu t'y prends comme il faut. J'ai moi même appris sur le tas à partir de bidouillage dans les menus et je peux aujourd'hui faire pratiquement n'importe quoi en script.

A mon avis tu es dans la période la plus délicate d'un maker sur RPG maker : tu ne peux plus te contenter des systèmes de base ou en event mais tu n'as pas encore le niveau pour tout faire en script.
C'est clair que si tu t'accroches maintenant tu en seras récompensé, que ce soit pour ce projet ou tes éventuels futurs projets sur le même support. :vieux

Wandering Souls : Jeu complet / Topic sur Oniro


arttroy - posté le 21/12/2012 à 00:14:42 (2394 messages postés)

❤ 0

Just working

Déjà c'est une bonne chose si je m'y prend comme il faut (merci à vous pour tous vos conseils !). Et pas d'inquiétude niveau acharnement je m'y connais (certains ici pourront je pense t'en dire quelque chose). En fait si tu veux ce projet c'est mon tout premier, il n'y en a pas eu avant et le seul essai que j'ai fait à été très rapide mais en me promenant un peu sur le forum (et sachant le projet que j'avais en tête...), je me suis vite rendu compte que le passage par les scripts était obligatoire.

Rien qu'à voir les réactions des habitués face à certaines choses, c'est assez simple à saisir :grossourire déjà rien que A-rpg en event ça hérisse les poils de pas mal de monde...

Qui plus est ce projet (je me répète décidément...) c'est mon rêve de gosse, depuis que j'ai mis Secret of mana dans ma super nes à l'époque je veux qu'Hidden World existe donc fait moi confiance ce sera le cas peut importe le temps que ça me prendra ( et en plus ce sera réussi ! enfin j'espère :grossourire)

Enfin bref tout ça ça me dis pas comment faire ce calcul de mes d...

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Estheone - posté le 21/12/2012 à 03:25:40 (312 messages postés)

❤ 0

Portion de code : Tout sélectionner

1
2
3
4
 
  def pct
    return valeur_jauge*valeur_jauge_max/100.0
  end



Tu remplaces valeur_jauge par la variable qui s'en occupe (une $game_variables je suppose) et valeur_jauge_max par la valeur max qu'elle peut prendre (100 ? 1000 ? peu importe en fait ^^). Ca te donnera un résultat entre 0.0 et 1.0 donc.

Wandering Souls : Jeu complet / Topic sur Oniro


arttroy - posté le 21/12/2012 à 08:48:14 (2394 messages postés)

❤ 0

Just working

Non t'es sérieux là ? (ou sérieuse je ne sais pas en fait...) Bon ben je crois que Mack à encore le droit de rire... Toi aussi si tu veux...

Moi je cherchais un truc avec des flottants et tout... :feu me

Edit : :grossourire y'a un petit truc qui ne va pas j'ai l'impression

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Estheone - posté le 21/12/2012 à 09:18:23 (312 messages postés)

❤ 0

Non en fait je viens de te raconter n'importe quoi du coup c'est à toi de rire.
C'est encore plus simple en fait :

Portion de code : Tout sélectionner

1
2
3
4
  def pct
    return valeur_jauge/valeur_jauge_max
  end
 



valeur_jauge_max doit être un float par contre sinon ça va toujours faire 0 (donc si le max c'est 1000 tu mets 1000.0).

Wandering Souls : Jeu complet / Topic sur Oniro


arttroy - posté le 21/12/2012 à 09:25:13 (2394 messages postés)

❤ 0

Just working

Alors en fait ça marche mais à l'envers (la jauge tourne vers la gauche au lieu de la droite)  XD .

Edit :

C'est réglé il suffisait de faire ça :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  def draw_soutien_jauge(x, y, width = 124)
    @sprite_barre_soutien = Sprite.new
    @sprite_barre_soutien.bitmap = Cache.picture("Base jauge soutien")
    @sprite_barre_soutien.x = 90
    @sprite_barre_soutien.y = 230
    @sprite_barre_soutien.z = 6
    @sprite_jauge_soutien = Sprite.new
    @sprite_jauge_soutien.bitmap = Cache.picture("Jauge soutien")
    @sprite_jauge_soutien.x = 90
    @sprite_jauge_soutien.y = 230
    @sprite_jauge_soutien.z = 5
    @sprite_jauge_soutien.ox = @sprite_jauge_soutien.bitmap.width/2
    @sprite_jauge_soutien.oy = @sprite_jauge_soutien.bitmap.height/2
    @sprite_jauge_soutien.x += @sprite_jauge_soutien.ox
    @sprite_jauge_soutien.y += @sprite_jauge_soutien.oy 
    @sprite_jauge_soutien.angle = angle_0 + pct * (angle_100 - angle_0)
  end
  def angle_0
    return 360
  end
  def angle_100
    return 180
  end
  def pct
    return $game_variables[68]/100.0
  end
 



Maintenant il ne me reste plus qu'à trouver pour l'effacement des images parce que pour l'instant il y a un décalage quand je sort du menu.

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?

Index du forum > Entraide > [RESOLU] [VX Ace] Faire une jauge circulaire

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers