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

Tutos: Godot : Premier Contact -Partie (...) / Tutos: Godot : Premier Contact -Partie (...) / Making-of: Ma première game jam classée / Jeux: Oracle of Tao / Jeux: Mystic Slayer [Value+!] / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

108 connectés actuellement

11003097 visiteurs
depuis l'ouverture

985 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Hellsoft

Planète Glutko

Le Studio du Chat Vert

New RPG Maker

RPG Maker - La Communauté

RPG Maker VX

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RESOLU] [RPG Maker VX Ace] Petite modification de script

Aller à la page 1 2


Nérylis - posté le 31/01/2016 à 20:38:06 (149 messages postés) -

❤ 0

Domaine concerné: Script
Logiciel utilisé: RPG Maker VX Ace
Coucou, j'aurais besoin d'une petite modification de script. J'utilise un système pour upgrader mes équipements avec du pex classique et je possède une interface pour vérifier le level et les bonus supplémentaires de mes équipements.

C'est cette interface que je veux légèrement modifier. Je vous mets le script pour commencer :

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#Modif class Scene_Equip
class Scene_Equip < Scene_MenuBase
  
  #Modification de l'update
  alias update_interface update
  def update
    update_interface
    if Input.trigger?(:A)
      return if !@item_window.active && !@slot_window.active && @status_window.menu == 0
      Sound.play_cursor
      switch_info
    elsif Input.trigger?(:UP) && @status_window.menu == 1
      Sound.play_cursor
      @status_window.ligne_actuel -= 1
      @status_window.refresh(@status_window.item_actuel)
    elsif Input.trigger?(:DOWN) && @status_window.menu == 1
      Sound.play_cursor
      @status_window.ligne_actuel += 1
      @status_window.refresh(@status_window.item_actuel)
    elsif Input.trigger?(:B) && @status_window.menu == 1
      Sound.play_cursor
      switch_info
    end
  end
  
  #Switch vers le menu info
  def switch_info
    if @status_window.menu == 1
      @status_window.menu = 0
      @status_window.ligne_actuel = 0
      @item_window.activate if @item_window.visible
      @slot_window.activate if @slot_window.visible
      item = nil
    else
      @status_window.menu = 1
      if @item_window.visible
        @item_window.deactivate
        item = @item_window.item
      elsif @slot_window.visible
        @slot_window.deactivate
        item = @actor.equips[@slot_window.index]
      end
    end
    @status_window.refresh(item)
  end
  
end
#Modif Window_EquipStatus
class Window_EquipStatus < Window_Base
  
  attr_accessor :menu #Ajout de la variable menu
  attr_reader :ligne_actuel #Ajout de la variable ligne actuel
  
  #Modification Initialisation
  alias initialize_interface initialize
  def initialize(*args)
    @menu = 0
    @ligne_actuel = 0
    initialize_interface(*args)
  end
  
  #Modification de la ligne actuel
  def ligne_actuel=(value)
    @ligne_actuel = [0,[value,@max_ligne-8].min].max
  end
  
  #Modifiication du refresh
  alias refresh_interface refresh
  def refresh(item = nil)
    if @menu == 0
      refresh_interface
    else
      contents.clear
      draw_interface(item)
    end
  end
  
  #Récuperation de l'item_actuel
  def item_actuel
    return @item
  end
  
  #Creation de la fenetre d'info
  def draw_interface(item)
    if item == nil
      draw_text_ex(0, 0, "")
      @max_ligne = 0
      @item = nil
    else
      @max_ligne = 0
      @item = item
#~       draw_icon(item.icon_index , 0, -@ligne_actuel*24)
#~       contents.font.color = item.rarity_colour
#~       contents.draw_text(24, -88-@ligne_actuel*24, contents.width, contents.height, item.name)
      contents.font.color = system_color
      contents.draw_text(0, -88-@ligne_actuel*24, contents.width, contents.height, "Niveau :")
      contents.font.color = normal_color
      contents.draw_text(0, -64-@ligne_actuel*24, contents.width, contents.height, item.level.to_s + " / " + item.max_level.to_s)
      contents.font.color = system_color
      contents.draw_text(0, -40-@ligne_actuel*24, contents.width, contents.height, "Expérience :")
      contents.font.color = normal_color
      contents.draw_text(0, -16-@ligne_actuel*24, contents.width, contents.height, item.exp.to_s)
      contents.font.color = normal_color
      contents.draw_text(0, 8-@ligne_actuel*24, contents.width, contents.height, item.exp_to_level.to_s)
      contents.font.color = system_color
      contents.draw_text(0, 32-@ligne_actuel*24, contents.width, contents.height, "Prochains bonus :")
      @max_ligne = 6
      j = 0
      for i in 0..7
        if item.instance_mult_lvl_bonus(i) != 1 || item.instance_static_lvl_bonus(i) != 0
          next_value = item.params[i]*item.instance_mult_lvl_bonus(i)+item.instance_static_lvl_bonus(i)
          contents.font.color = normal_color
          contents.draw_text(0 , 56+j*48-@ligne_actuel*24, contents.width, contents.height, Vocab.param(i))
          contents.font.color = normal_color
          contents.draw_text(0 , 80+j*48-@ligne_actuel*24, contents.width, contents.height, item.params[i].to_s+" passe à "+next_value.floor.to_s)
          j += 1
          @max_ligne += 2
        end
      end
    end
  end
  
end



Quand je navigue dans mon menu equipement, cela donne ce que vous voyez sur la Capture 1. Quand j'appuie sur Shift, la fenêtre de droite change et on voit l'interface comme sur la Capture 2. Première chose : est-ce qu'il serait possible de créer une petite flèche pour montrer que le déroulement est possible lorsque le texte des bonus dépasse de la fenêtre ? Actuellement, on peut défiler en appuyant sur les touches Haut et Bas mais on voit une partie du texte et aucune petite flèche.

Ensuite, mon autre souci se trouve lorsque je vais sur la commande Retirer (Capture 3). Si j'appuie sur Shift, j'obtiens mon interface avec rien dedans (Capture 4). Serait-il possible de bloquer l'accès à l'interface quand je suis sur Retirer ? Qu'on ne puisse pas y accéder et qu'on n'entende aucun bruit de validation ou d'erreur.

Capture 1 :

image

Capture 2 :

image

Capture 3 :

image

Capture 4 :

image


arttroy - posté le 01/02/2016 à 15:14:49 (2394 messages postés)

❤ 0

Just working

Pour la désactivation essaies ça, remplace les lignes 21 et 22 par ça

Portion de code : Tout sélectionner

1
2
3
4
5
6
 
      if @item_window.active == false
      Sound.play_cursor
      switch_info
      end
 



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


Nérylis - posté le 01/02/2016 à 18:17:35 (149 messages postés) -

❤ 0

J'ai testé, ça ne marche pas. Ça switch toujours sur une fenêtre vide.


arttroy - posté le 02/02/2016 à 08:20:15 (2394 messages postés)

❤ 0

Just working

Ah ^^ j'avais pas fait gaffe aux lignes 9 à 11

essaie en remplaçant par ça la method switch infos

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
  def switch_info
    if @status_window.menu == 1
      @status_window.menu = 0
      @status_window.ligne_actuel = 0
   #   @item_window.activate if @item_window.visible
      @slot_window.activate if @slot_window.visible
      item = nil
    else
      @status_window.menu = 1
    #  if @item_window.visible
    #    @item_window.deactivate
    #    item = @item_window.item
      if @slot_window.visible
        @slot_window.deactivate
        item = @actor.equips[@slot_window.index]
      end
    end
    @status_window.refresh(item)
  end



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


Nérylis - posté le 03/02/2016 à 18:07:11 (149 messages postés) -

❤ 0

Je viens de tester, ça ne marche pas non plus. Tu veux peut-être une démo ?


arttroy - posté le 03/02/2016 à 21:38:03 (2394 messages postés)

❤ 0

Just working

ouaip ce sera plus simple, pas évident de spéculer sans pouvoir tester ^^.

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


Nérylis - posté le 03/02/2016 à 22:00:25 (149 messages postés) -

❤ 0

Voici ma démo avec l'ensemble de mes scripts de menu : https://www.mediafire.com/download/jm6wqq617y0sq7j/Ace+menu.exe

Donc, dans le menu Equipement, il faut appuyer sur Shift pour switcher avec l'interface.


arttroy - posté le 03/02/2016 à 22:42:28 (2394 messages postés)

❤ 0

Just working

ok en fait c'est tout con va ligne 9 et enlève le "!" de !@item_window.active

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


Nérylis - posté le 04/02/2016 à 18:40:55 (149 messages postés) -

❤ 0

Le problème, c'est que si j'enlève le ! de !@item_window.active, je ne peux plus vérifier l'interface pour les équipements. Par ailleurs, j'ai aussi le problème de l'interface vide lorsque j'appuie sur Shift alors que je suis sur un emplacement vide (comme au début de ma démo pour les emplacements Ceinture, Collier, Bague et Bracelet).


arttroy - posté le 04/02/2016 à 21:59:59 (2394 messages postés)

❤ 0

Just working

erf ^^ je vais chercher autre chose alors.

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


Sou - posté le 04/02/2016 à 22:41:16 (394 messages postés)

❤ 0

On a jamais assez de munitions

Je suis débutant dans tout ça, mais ne serait-il pas possible d'identifier le retour via son nom?

Soit genre en lisant la ligne:

If ligne actuel = "retour"

Ou attribuer une valeur arbitraire à retour?
Car au lieu d'avoir 0, 1, 2, ect ... Si j'ai bien compris, là c'est du += 1 ou -=1 car on ne peut pas définir le nombre d'item à la base.
Mais ne serait-il pas possible d’attribuer une valeur très grande genre 99 (pour pas y arriver avec des +=1), et de faire un:

If @status_window.menu = 99 ?

Ou un truc du genre?

Bref si je dis encore des conneries, me jeter pas des pierres trop fort :)

Je suis Sou et c'est tout.


arttroy - posté le 05/02/2016 à 15:25:01 (2394 messages postés)

❤ 0

Just working

Ben ouaip je cherche depuis hier soir mais j'ai rien trouvé de probant... Le souci c'est que je ne trouve pas la def concernant cette fameuse ligne <retour>.

Aaaaah mais attends !! En fait il faudrait trouver le moyen d'enregistrer le nombre de lignes dans une variable et ensuite on vérifie si l'index de la fenêtre @item_window est égal à la variable on bloque le switch_info.

*lâche sa poignée de cailloux*

Bon ben en fait tu m'as mis sur la voie je crois merci ^^.

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


Sou - posté le 05/02/2016 à 15:29:07 (394 messages postés)

❤ 0

On a jamais assez de munitions

Oula ça s'en est joué de peu *souffle*

Aller Arttroy, trouves la solution *_*

Je suis Sou et c'est tout.


arttroy - posté le 05/02/2016 à 16:00:23 (2394 messages postés)

❤ 0

Just working

Ben c'est mal barré pour le moment ^^ là je suis à court d'idées parce que la dernière ne fonctionne pas

Faudrait que je trouve un moyen de dire :

si l'item de @item_window est le même que celui équipé sur le personnage

j'ai essayé ça :

if @item_window.item != @actor.equips[@item_window.index]

mais ça ne fonctionne pas...

Si jamais il y a un scripteur plus confirmé que moi qui pouvait y mettre son nez se serait cool svp les coupains.

edit : Mou ha ha !!! J'ai réussi ! (j'en ai profité pour faire la même chose avec la @slot_window comme ça si tu n'as rien d'équipé ça ne fonctionne pas).

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#Modif class Scene_Equip
class Scene_Equip < Scene_MenuBase
  
  #Modification de l'update
  alias update_interface update
  def update
    update_interface
    if Input.trigger?(:A)
      return if !@item_window.active && !@slot_window.active && @status_window.menu == 0
      if @item_window.item != nil && !@slot_window.active && @item_window.visible
        Sound.play_cursor
        switch_info
      end
      if @slot_window.visible && @slot_window.item != nil
        Sound.play_cursor
        switch_info
      end
    elsif Input.trigger?(:UP) && @status_window.menu == 1
      Sound.play_cursor
      @status_window.ligne_actuel -= 1
      @status_window.refresh(@status_window.item_actuel)
    elsif Input.trigger?(:DOWN) && @status_window.menu == 1
      Sound.play_cursor
      @status_window.ligne_actuel += 1
      @status_window.refresh(@status_window.item_actuel)
    elsif Input.trigger?(:B) && @status_window.menu == 1
      Sound.play_cursor
      switch_info
    end
  end
  
  #Switch vers le menu info
  def switch_info
    if @status_window.menu == 1
      @status_window.menu = 0
      @status_window.ligne_actuel = 0
      @item_window.activate if @item_window.visible
      @slot_window.activate if @slot_window.visible
      item = nil
    else
      @status_window.menu = 1
      if @item_window.visible
        @item_window.deactivate
        item = @item_window.item
      elsif @slot_window.visible
        @slot_window.deactivate
        item = @actor.equips[@slot_window.index]
      end
    end
    @status_window.refresh(item)
  end
  
end
#Modif Window_EquipStatus
class Window_EquipStatus < Window_Base
  
  attr_accessor :menu #Ajout de la variable menu
  attr_reader :ligne_actuel #Ajout de la variable ligne actuel
  
  #Modification Initialisation
  alias initialize_interface initialize
  def initialize(*args)
    @menu = 0
    @ligne_actuel = 0
    initialize_interface(*args)
  end
  
  #Modification de la ligne actuel
  def ligne_actuel=(value)
    @ligne_actuel = [0,[value,@max_ligne-8].min].max
  end
  
  #Modifiication du refresh
  alias refresh_interface refresh
  def refresh(item = nil)
    if @menu == 0
      refresh_interface
    else
      contents.clear
      draw_interface(item)
    end
  end
  
  #Récuperation de l'item_actuel
  def item_actuel
    return @item
  end
  
  #Creation de la fenetre d'info
  def draw_interface(item)
    if item == nil
      draw_text_ex(0, 0, "")
      @max_ligne = 0
      @item = nil
    else
      @max_ligne = 0
      @item = item
#~       draw_icon(item.icon_index , 0, -@ligne_actuel*24)
#~       contents.font.color = item.rarity_colour
#~       contents.draw_text(24, -88-@ligne_actuel*24, contents.width, contents.height, item.name)
      contents.font.color = system_color
      contents.draw_text(0, -88-@ligne_actuel*24, contents.width, contents.height, "Niveau :")
      contents.font.color = normal_color
      contents.draw_text(0, -64-@ligne_actuel*24, contents.width, contents.height, item.level.to_s + " / " + item.max_level.to_s)
      contents.font.color = system_color
      contents.draw_text(0, -40-@ligne_actuel*24, contents.width, contents.height, "Expérience :")
      contents.font.color = normal_color
      contents.draw_text(0, -16-@ligne_actuel*24, contents.width, contents.height, item.exp.to_s)
      contents.font.color = normal_color
      contents.draw_text(0, 8-@ligne_actuel*24, contents.width, contents.height, item.exp_to_level.to_s)
      contents.font.color = system_color
      contents.draw_text(0, 32-@ligne_actuel*24, contents.width, contents.height, "Prochains bonus :")
      @max_ligne = 6
      j = 0
      for i in 0..7
        if item.instance_mult_lvl_bonus(i) != 1 || item.instance_static_lvl_bonus(i) != 0
          next_value = item.params[i]*item.instance_mult_lvl_bonus(i)+item.instance_static_lvl_bonus(i)
          contents.font.color = normal_color
          contents.draw_text(0 , 56+j*48-@ligne_actuel*24, contents.width, contents.height, Vocab.param(i))
          contents.font.color = normal_color
          contents.draw_text(0 , 80+j*48-@ligne_actuel*24, contents.width, contents.height, item.params[i].to_s+" passe à "+next_value.floor.to_s)
          j += 1
          @max_ligne += 2
        end
      end
    end
  end
  
end



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


Nérylis - posté le 05/02/2016 à 17:05:09 (149 messages postés) -

❤ 0

Effectivement, ça marche bien.

Il reste l'histoire du déroulement lorsqu'un équipement a plusieurs statistiques améliorées. Actuellement, on voit la partie supérieure d'une ligne comme sur ma Capture 2. Est-ce que tu te sens capable de me faire un défilement avec la petite flèche sans qu'on voit des bouts de ligne ?


arttroy - posté le 05/02/2016 à 17:06:58 (2394 messages postés)

❤ 0

Just working

je suis en train de chercher mais rien pour l'instant de ce côté ^^.


Edit : non désolé mais je vois pas comment faire

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


Nérylis - posté le 05/02/2016 à 18:22:09 (149 messages postés) -

❤ 0

Arf ok, merci pour ton aide en tout cas.

Si quelqu'un est en mesure de faire mon autre demande, ça m'intéresse.^^


arttroy - posté le 06/02/2016 à 00:43:10 (2394 messages postés)

❤ 0

Just working

Après je pourrais voir pour redéfinir une nouvelle fenêtre plutôt que d'utiliser la Window_EquipStatus (qui elle n'a pas besoin des flêches) mais là je taf ce week end donc chaud ^^. Si personne n'a rien fait d'ici lundi ou mardi je m'y mettrai.

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


Nérylis - posté le 06/02/2016 à 08:08:24 (149 messages postés) -

❤ 0

Dans ma démo, il y a plusieurs cas où un défilement a été créé avec la petite flèche en question. Regarde par exemple dans le menu Statut pour le premier personnage, puis le menu Maîtrise. Si tu valides, tu peux te déplacer avec les touches Haut et Bas et on voit les petites flèches indiquant le défilement possible. En script, ça se trouve dans celui de Vincent26 - Weapon's type upgrade si je ne dis pas de bêtises. Tu pourras peut-être trouver comment on fait pour reproduire la même chose.


arttroy - posté le 06/02/2016 à 15:10:08 (2394 messages postés)

❤ 0

Just working

ouaip je sais tout ça tkt ^^ Seulement là le truc c'est que c'est la Window_EquipStatus qui est utilisée pour afficher tes infos et cette fenêtre ne bénéficie pas des mêmes def que les fenêtres avec les flêches.

Donc en fait ce que je vais faire c'est que je vais te créer une Window_EStats qui affichera la même chose mais sera indépendante de la Window_EquipStatus et je modifierai l'affichage dans le Scene_Equip (sans toucher aux scripts de bases ça évitera les embrouilles avec ce que tu as déjà installé).

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


Nérylis - posté le 06/02/2016 à 15:41:46 (149 messages postés) -

❤ 0

Ok, je crois comprendre ta technique. Hâte de voir ce que ça va donner.


arttroy - posté le 09/02/2016 à 15:06:44 (2394 messages postés)

❤ 0

Just working

tkt je t'oublie pas c'est juste pas la grande forme ces jours ci ^^.

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


Nérylis - posté le 09/02/2016 à 17:57:18 (149 messages postés) -

❤ 0

Je ne suis pas à un jour près, je up le sujet de temps en temps. ;)


arttroy - posté le 12/02/2016 à 16:54:45 (2394 messages postés)

❤ 0

Just working

Ah Mert !!!! Mon idée ne marche pas ! FUUCCKKK ! Peut être en redéfinissant la hauteur de la fenêtre...

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


Nérylis - posté le 12/02/2016 à 16:59:05 (149 messages postés) -

❤ 0

Le bas de la fenêtre, oui pourquoi pas ?

Aller à la page 1 2

Index du forum > Entraide > [RESOLU] [RPG Maker VX Ace] Petite modification de script

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 | 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