Bienvenue visiteur !
|
Statistiques
Liste des membres
Contact
Mentions légales
295 connectés actuellement
30732119 visiteurs depuis l'ouverture
2097 visiteurs aujourd'hui
Partenaires
Tous nos partenaires
Devenir partenaire
|
arttroy -
posté le 20/12/2012 à 15:41:56 (2394 messages postés)
| 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:
Donc pour créer la jauge, j'ai déjà une base de script (la jauge doit se remplir grâce à un timer)
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 :
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)
| | Tu appliques la règle de trois?
|
http://funkywork.github.io/ |
Zeus81 -
posté le 20/12/2012 à 18:43:27 (11071 messages postés)
| | 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)
| 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 :
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)
| | 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)
| 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)
| | 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)
| | 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)
| 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)
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...
|
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)
| | 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)
| 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)
| | 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.
|
Wandering Souls : Jeu complet / Topic sur Oniro |
arttroy -
posté le 21/12/2012 à 00:14:42 (2394 messages postés)
| 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 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 )
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)
| |
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)
| 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... me
Edit : 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)
| | 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 :
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)
| Just working | Alors en fait ça marche mais à l'envers (la jauge tourne vers la gauche au lieu de la droite) .
Edit :
C'est réglé il suffisait de faire ça :
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
|
|
|