Partagez
Aller en bas
tonyryu
Membre

Nombre de messages : 895
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Résolu Re: Petite modification de script

le Dim 28 Fév 2016 - 10:39
Pour la transition d'ouverture viré :

Code:
=begin
Equipment Requirements
by Fomar0153
modified by Zouzaka
Version 1.3
----------------------
Notes
----------------------
Adds a level requirement to equipment.
----------------------
Instructions
----------------------
Notetag the weapons/armors like so:
<levelreq x>
<mhpreq x>
<mmpreq x>
<atkreq x>
<defreq x>
<matreq x>
<mdfreq x>
<agireq x>
<lukreq x>
<switchreq x>
<variablereq x,y>
<wepreq x>
<armreq x>
----------------------
Change Log
----------------------
1.0 -> 1.1 Added stat requirements
          Changed script name from Equipment Level Requirements
          to just Equipment Requirements
1.1 -> 1.2 Added switch and other equipment requirements
1.2 -> 1.3 Ajout D'une Window qui affiche les Conditions requises
          Réduit le script de base de plus de 50 lignes
1.3 -> 1.4 Optimisation et resolution de bug
----------------------
Known bugs
----------------------
None
=end
  #--------------------------------------------------------------------------
  # ● If set to true then it compares the requirement with the actor's base
  #  stat rather than their current.
  #--------------------------------------------------------------------------
EQUIPREQ_USE_BASE_STAT = true
  #--------------------------------------------------------------------------
  # ● Vocab for switch's
  #  every switch_id in a different line
  #--------------------------------------------------------------------------
 
Switch_Vocab = {
# Switch_ID => "Vocab",
#2 => "Visiter la Campagne",
}
  #--------------------------------------------------------------------------
  # ● Vocab for variables
  #  every variable_id in a different line
  #--------------------------------------------------------------------------
 
Variable_Vocab = {
# Variable_ID => "Vocab",
#2 => "Nombre de pierres à casser",
}
 
 
class Game_Actor
  def optimize_equipments
    clear_equipments
    equip_slots.size.times do |i|
      next if !equip_change_ok?(i)
      items = $game_party.equip_items.select do |item|
        item.etype_id == equip_slots[i] &&
        equippable?(item) && item.performance >= 0 && reqstate?(item)
      end
      change_equip(i, items.max_by {|item| item.performance })
    end
  end
  def reqstate?(item)
    unless item == nil
      return false if level < item.levelreq
      return false if reqstat(0) < item.mhpreq
      return false if reqstat(1) < item.mmpreq
      return false if reqstat(2) < item.atkreq
      return false if reqstat(3) < item.defreq
      return false if reqstat(4) < item.matreq
      return false if reqstat(5) < item.mdfreq
      return false if reqstat(6) < item.agireq
      return false if reqstat(7) < item.lukreq
      if item.switchreq > 0
        return false unless $game_switches[item.switchreq]
      end
      if item.variablereq != 0
        return false unless $game_variables[item.variablereq[0]] < item.variablereq[1]
      end
      if item.wepreq > 0
        e = []
        for equip in equips
          e.push(equip.id) if equip.class == RPG::Weapon
        end
        return false unless e.include?(item.wepreq)
      end
      if item.armreq > 0
        e = []
        for equip in equips
          e.push(equip.id) if equip.class == RPG::Armor
        end
        return false unless e.include?(item.armreq)
      end
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● New Method
  #--------------------------------------------------------------------------
  def reqstat(id)
    EQUIPREQ_USE_BASE_STAT ? param_base(id) : param(id)
  end
end
class Window_EquipItem
  #--------------------------------------------------------------------------
  # ● Check the requirements
  #--------------------------------------------------------------------------
  def enable?(item)
    return @actor.reqstate?(item)
  end
end
module RPG
  #--------------------------------------------------------------------------
  # ● Equip Item is inherited by both Weapon and Armor
  #--------------------------------------------------------------------------
  class EquipItem
    def variablereq
      self.note =~ /<variablereq (.*),(.*)>/i ? [$1.to_i,$2.to_i] : 0
    end
    def levelreq
      self.note =~ /<levelreq (.*)>/i ? $1.to_i : 0
    end
    def mhpreq
      self.note =~ /<mhpreq (.*)>/i ? $1.to_i : 0
    end
    def mmpreq
      self.note =~ /<mmpreq (.*)>/i ? $1.to_i : 0
    end
    def atkreq
      self.note =~ /<atkreq (.*)>/i ? $1.to_i : 0
    end
    def defreq
      self.note =~ /<defreq (.*)>/i ? $1.to_i : 0
    end
    def matreq
      self.note =~ /<matreq (.*)>/i ? $1.to_i : 0
    end
    def mdfreq
      self.note =~ /<mdfreq (.*)>/i ? $1.to_i : 0
    end
    def agireq
      self.note =~ /<agireq (.*)>/i ? $1.to_i : 0
    end
    def lukreq
      self.note =~ /<lukreq (.*)>/i ? $1.to_i : 0
    end
    def switchreq
      self.note =~ /<switchreq (.*)>/i ? $1.to_i : 0
    end
    def wepreq
      self.note =~ /<wepreq (.*)>/i ? $1.to_i : 0
    end
    def armreq
      self.note =~ /<armreq (.*)>/i ? $1.to_i : 0
    end
  end
end
class Window_Requirement < Window_Base
  def initialize(x, y)
    super(x, y, window_width, window_height)#(x, y, Graphics.width/2, Graphics.height)
    #self.openness = 0
    self.visible = false
    self.z = 250
    @item = nil
    @actor = nil
    refresh
  end
  def window_width
    return 326
  end
  def window_height
    return 224
  end
  def reqstat(id)
    EQUIPREQ_USE_BASE_STAT ? @actor.param_base(id) : @actor.param(id)
  end
  def item ; return @item ; end
  def item=(item)
    @item = item
    refresh
  end
  def actor ; return @actor ; end
  def actor=(actor)
    @actor = actor
    refresh
  end
  def update
    super
      refresh
  end
  def refresh
    contents.clear
    @req = ["item.levelreq","item.mhpreq","item.mmpreq","item.atkreq","item.defreq","item.matreq","item.mdfreq","item.agireq","item.lukreq"]#,"item.wepreq","item.armreq"]
    @vocab_req = [Vocab.level,Vocab.param(0),Vocab.param(1),Vocab.param(2),Vocab.param(3),Vocab.param(4),Vocab.param(5),Vocab.param(6),Vocab.param(7)]#,Vocab.weapon,Vocab.armor]
    @req_condition = ["@actor.level","reqstat(0)","reqstat(1)","reqstat(2)","reqstat(3)","reqstat(4)","reqstat(5)","reqstat(6)","reqstat(7)"]
    @t = 2
    change_color(normal_color)
    draw_text(contents.width/6, 0, contents.width, line_height, "Conditions requises")
    @req.each do |req|
      if item != nil && eval(req) != 0 && actor != nil
        eval(@req_condition[@req.index(req)]) < eval(req) ? change_color(text_color(2)) : change_color(normal_color)
        draw_text(0, line_height*@t, contents.width, line_height, @vocab_req[@req.index(req)]+" requis : "+eval(req).to_s)
        @t += 1
      end
    end
    change_color(normal_color)
    if item != nil && item.wepreq != 0 && actor != nil
      e = []
      for equip in @actor.equips
        if equip.class == RPG::Weapon
          e.push(equip.id)
        end
      end
      change_color(text_color(2)) unless e.include?(item.wepreq)
      draw_text(0, line_height*@t, contents.width, line_height, "Arme requise : "+$data_weapons[item.wepreq].name)
      @t += 1
    end
    change_color(normal_color)
    if item != nil && item.armreq != 0 && actor != nil
      e = []
      for equip in @actor.equips
        e.push(equip.id) if equip.class == RPG::Armor
      end
      change_color(text_color(2)) unless e.include?(item.armreq)
      draw_text(0, line_height*(@t), contents.width, line_height, "Armure requise : "+$data_armors[item.armreq].name)
      @t += 1
    end
    if item && item.switchreq != 0
      $game_switches[item.switchreq] ? change_color(normal_color) : change_color(text_color(2))
      draw_text(0, line_height*(@t), contents.width, line_height, Switch_Vocab[item.switchreq])
      @t += 1
    end
    if item && item.variablereq != 0
      $game_variables[item.variablereq[0]] >= item.variablereq[1] ? change_color(normal_color) : change_color(text_color(2))
      draw_text(0, line_height*(@t), contents.width, line_height, Variable_Vocab[item.variablereq[0]]+" "+$game_variables[item.variablereq[0]].to_s+"/"+item.variablereq[1].to_s)
    end
  end
end
 
#~ #==============================================================================
#~ # ** Scene_Equip
#~ #------------------------------------------------------------------------------
#~ #  This class performs the equipment screen processing.
#~ #==============================================================================
 
class Scene_Equip
  alias :old_start :start
  def start
    old_start
    @window_req = Window_Requirement.new(0,192)#(Graphics.width/4,0)
  end
  alias :old_update :update
  def update
    old_update
    if Input.trigger?(:CTRL)
      #if @window_req.openness == 0 && @item_window.active && @item_window.item != nil
      if !@window_req.visible && @item_window.active && @item_window.item != nil
        Sound.play_cursor
        @window_req.item=@item_window.item
        @window_req.actor= @actor
        @background = Sprite.new
        @background.z = 200
        @background.bitmap = Bitmap.new(Graphics.width, Graphics.height)
      # @background.bitmap.fill_rect(0,0,Graphics.width,Graphics.height,Color.new(0, 0, 0,128))
        #@window_req.open
        @window_req.visible = true
        @item_window.deactivate
        @item_window.visible = false
      #elsif @window_req.openness == 255
      elsif @window_req.visible
        Sound.play_cancel
        @background.dispose if @background
        #@window_req.close
        @item_window.activate
        @item_window.visible = true
        @window_req.visible = false
      end
    elsif Input.trigger?(:B)
      #if @window_req.openness == 255
      if @window_req.visible
        Sound.play_cancel
        @background.dispose if @background
        #@window_req.close
        @item_window.activate
        @item_window.visible = true
        @window_req.visible = false
      end
    end
  end
end
class Scene_Item < Scene_ItemBase
  alias :old_start :start
  def start
    old_start
    @window_req = Window_Requirement.new(0,192)#(Graphics.width/4,0)
    @window_req.width = 544
  end
  alias :old_update :update
  def update
    old_update
    if Input.trigger?(:CTRL)
      #if @window_req.openness == 0 && (@item_window.item.class == RPG::Weapon || @item_window.item.class == RPG::Armor)
      if !@window_req.visible && (@item_window.item.class == RPG::Weapon || @item_window.item.class == RPG::Armor)
        Sound.play_cursor
        @window_req.item=@item_window.item
        @window_req.actor= @actor
        @background = Sprite.new
        @background.z = 200
        @background.bitmap = Bitmap.new(Graphics.width, Graphics.height)
      #  @background.bitmap.fill_rect(0,0,Graphics.width,Graphics.height,Color.new(0, 0, 0,128))
        #@window_req.open
        @item_window.visible = true
        @item_window.deactivate
        @item_window.visible = false
      #elsif @window_req.openness == 255
      elsif @window_req.visible
        Sound.play_cancel
        @background.dispose if @background
        #@window_req.close
        @item_window.activate
        @item_window.visible = true
        @item_window.visible = false
      end
    elsif Input.trigger?(:B)
      #if @window_req.openness == 255
      if @window_req.visible
        Sound.play_cancel
        @background.dispose if @background
        #@window_req.close
        @item_window.activate
        @item_window.visible = true
        @item_window.visible = false
      end
    end
  end
end

par contre, pour la gestion du défilement, tu pourrais me paramétrer un objet avec suffisamment de conditions pour que ça dépasse le cadre?
avatar
Nérylis
Membre

Nombre de messages : 605
Age : 29
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Résolu Re: Petite modification de script

le Dim 28 Fév 2016 - 19:04
Nickel la transition.

Je t'ai fait une nouvelle démo avec la première arme, la hache, blindée de conditions : http://www.mediafire.com/download/zxc22wc829cae2o/Ace+menu7.exe

On retrouve cette fameuse ligne où on voit l'extrémité du haut des lettres.
avatar
Nérylis
Membre

Nombre de messages : 605
Age : 29
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Résolu Re: Petite modification de script

le Mar 1 Mar 2016 - 9:36
Tu rencontres des soucis avec le défilement ?
avatar
tonyryu
Membre

Nombre de messages : 895
Age : 38
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Résolu Re: Petite modification de script

le Mar 1 Mar 2016 - 10:44
oui, c'est pas si simple, car y'avait rien de prévu pour le défilement, et l'on a 2 surcharges de cette interface. Donc faut faire des modifications mais en prenant les 2 cas en compte.
avatar
Nérylis
Membre

Nombre de messages : 605
Age : 29
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Résolu Re: Petite modification de script

le Mar 1 Mar 2016 - 11:17
Ouh là, je viens de voir un truc. L'accès à l'interface depuis le menu Objets, je l'avais supprimé, mais je vois que tu l'as encore (je l'avais peut-être pas enlevé de la démo). Y a pas besoin de traiter ce cas-là. C'est juste depuis le menu Equipement qu'on doit pouvoir accéder à l'interface. Donc, je ne sais pas si c'est ça que tu appelles les 2 surcharges. En tout cas, je te préviens pour pas que tu bosses pour rien pour la partie avec le menu Objets.
avatar
tonyryu
Membre

Nombre de messages : 895
Age : 38
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Résolu Re: Petite modification de script

le Mar 1 Mar 2016 - 13:08
ça va le faire.

Par contre ça :

Code:
 def update
    super
    refresh
  end

INTERDIT!!

Affiche le nombre de FPS (F2), quant tu passes dans l'affichage de requirrement avec CTRL. Commentes #refresh, et relances, ça va te surprendre
avatar
Nérylis
Membre

Nombre de messages : 605
Age : 29
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Résolu Re: Petite modification de script

le Mar 1 Mar 2016 - 13:10
Lol je ne vois pas du tout ce que ça fait.^^
J'ai 60 FPS tout le temps.
avatar
tonyryu
Membre

Nombre de messages : 895
Age : 38
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Résolu Re: Petite modification de script

le Mar 1 Mar 2016 - 13:25
Ce n'est pas possible.

si tu laisses le refresh dans l'update de la fenêtre requirement, et que tu entres dedans, elle devient active, et tu tombes à 7 FPS. car à chaque frame, le contenu est recréé avec le refresh.

Edit :

Les scripts modifiés :

Fomar0153 - Equipment requirements :
Code:
=begin
Equipment Requirements
by Fomar0153
modified by Zouzaka
Version 1.3
----------------------
Notes
----------------------
Adds a level requirement to equipment.
----------------------
Instructions
----------------------
Notetag the weapons/armors like so:
<levelreq x>
<mhpreq x>
<mmpreq x>
<atkreq x>
<defreq x>
<matreq x>
<mdfreq x>
<agireq x>
<lukreq x>
<switchreq x>
<variablereq x,y>
<wepreq x>
<armreq x>
----------------------
Change Log
----------------------
1.0 -> 1.1 Added stat requirements
          Changed script name from Equipment Level Requirements
          to just Equipment Requirements
1.1 -> 1.2 Added switch and other equipment requirements
1.2 -> 1.3 Ajout D'une Window qui affiche les Conditions requises
          Réduit le script de base de plus de 50 lignes
1.3 -> 1.4 Optimisation et resolution de bug
----------------------
Known bugs
----------------------
None
=end
  #--------------------------------------------------------------------------
  # ● If set to true then it compares the requirement with the actor's base
  #  stat rather than their current.
  #--------------------------------------------------------------------------
EQUIPREQ_USE_BASE_STAT = true
  #--------------------------------------------------------------------------
  # ● Vocab for switch's
  #  every switch_id in a different line
  #--------------------------------------------------------------------------
 
Switch_Vocab = {
# Switch_ID => "Vocab",
#2 => "Visiter la Campagne",
}
  #--------------------------------------------------------------------------
  # ● Vocab for variables
  #  every variable_id in a different line
  #--------------------------------------------------------------------------
 
Variable_Vocab = {
# Variable_ID => "Vocab",
#2 => "Nombre de pierres à casser",
}
 
 
class Game_Actor
  def optimize_equipments
    clear_equipments
    equip_slots.size.times do |i|
      next if !equip_change_ok?(i)
      items = $game_party.equip_items.select do |item|
        item.etype_id == equip_slots[i] &&
        equippable?(item) && item.performance >= 0 && reqstate?(item)
      end
      change_equip(i, items.max_by {|item| item.performance })
    end
  end
  def reqstate?(item)
    unless item == nil
      return false if level < item.levelreq
      return false if reqstat(0) < item.mhpreq
      return false if reqstat(1) < item.mmpreq
      return false if reqstat(2) < item.atkreq
      return false if reqstat(3) < item.defreq
      return false if reqstat(4) < item.matreq
      return false if reqstat(5) < item.mdfreq
      return false if reqstat(6) < item.agireq
      return false if reqstat(7) < item.lukreq
      if item.switchreq > 0
        return false unless $game_switches[item.switchreq]
      end
      if item.variablereq != 0
        return false unless $game_variables[item.variablereq[0]] < item.variablereq[1]
      end
      if item.wepreq > 0
        e = []
        for equip in equips
          e.push(equip.id) if equip.class == RPG::Weapon
        end
        return false unless e.include?(item.wepreq)
      end
      if item.armreq > 0
        e = []
        for equip in equips
          e.push(equip.id) if equip.class == RPG::Armor
        end
        return false unless e.include?(item.armreq)
      end
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● New Method
  #--------------------------------------------------------------------------
  def reqstat(id)
    EQUIPREQ_USE_BASE_STAT ? param_base(id) : param(id)
  end
end
class Window_EquipItem
  #--------------------------------------------------------------------------
  # ● Check the requirements
  #--------------------------------------------------------------------------
  def enable?(item)
    return @actor.reqstate?(item)
  end
end
module RPG
  #--------------------------------------------------------------------------
  # ● Equip Item is inherited by both Weapon and Armor
  #--------------------------------------------------------------------------
  class EquipItem
    def variablereq
      self.note =~ /<variablereq (.*),(.*)>/i ? [$1.to_i,$2.to_i] : 0
    end
    def levelreq
      self.note =~ /<levelreq (.*)>/i ? $1.to_i : 0
    end
    def mhpreq
      self.note =~ /<mhpreq (.*)>/i ? $1.to_i : 0
    end
    def mmpreq
      self.note =~ /<mmpreq (.*)>/i ? $1.to_i : 0
    end
    def atkreq
      self.note =~ /<atkreq (.*)>/i ? $1.to_i : 0
    end
    def defreq
      self.note =~ /<defreq (.*)>/i ? $1.to_i : 0
    end
    def matreq
      self.note =~ /<matreq (.*)>/i ? $1.to_i : 0
    end
    def mdfreq
      self.note =~ /<mdfreq (.*)>/i ? $1.to_i : 0
    end
    def agireq
      self.note =~ /<agireq (.*)>/i ? $1.to_i : 0
    end
    def lukreq
      self.note =~ /<lukreq (.*)>/i ? $1.to_i : 0
    end
    def switchreq
      self.note =~ /<switchreq (.*)>/i ? $1.to_i : 0
    end
    def wepreq
      self.note =~ /<wepreq (.*)>/i ? $1.to_i : 0
    end
    def armreq
      self.note =~ /<armreq (.*)>/i ? $1.to_i : 0
    end
  end
end
class Window_Requirement < Window_Base
  def initialize(x, y)
    super(x, y, window_width, window_height)#(x, y, Graphics.width/2, Graphics.height)
    #self.openness = 0
    self.visible = false
    self.z = 250
    @item = nil
    @actor = nil
    self.padding = 16
    refresh
  end
  def window_width
    return 326
  end
  def window_height
    return 224
  end
  def reqstat(id)
    EQUIPREQ_USE_BASE_STAT ? @actor.param_base(id) : @actor.param(id)
  end
  def item ; return @item ; end
  def item=(item)
    @item = item
    refresh
  end
  def actor ; return @actor ; end
  def actor=(actor)
    @actor = actor
    refresh
  end
  def update
    super
    #refresh
  end
  def refresh
    self.oy = 0
    @req = ["item.levelreq","item.mhpreq","item.mmpreq","item.atkreq","item.defreq","item.matreq","item.mdfreq","item.agireq","item.lukreq"]#,"item.wepreq","item.armreq"]
    @vocab_req = [Vocab.level,Vocab.param(0),Vocab.param(1),Vocab.param(2),Vocab.param(3),Vocab.param(4),Vocab.param(5),Vocab.param(6),Vocab.param(7)]#,Vocab.weapon,Vocab.armor]
    @req_condition = ["@actor.level","reqstat(0)","reqstat(1)","reqstat(2)","reqstat(3)","reqstat(4)","reqstat(5)","reqstat(6)","reqstat(7)"]
   
   
    # Calculer la taille du contenu
    @t = 2
    @req.each do |req|
      if item != nil && eval(req) != 0 && actor != nil
        @t += 1
      end
    end
    if item != nil && item.wepreq != 0 && actor != nil
      @t += 1
    end
    if item != nil && item.armreq != 0 && actor != nil
      @t += 1
    end
    if item && item.switchreq != 0
      @t += 1
    end
    if item && item.variablereq != 0
      @t += 1
    end
   
    self.contents = Bitmap.new(width - self.padding * 2, @t * line_height)
   
    change_color(system_color)
    draw_text(contents.width/6, 0, contents.width, line_height, "Conditions requises")
    @t = 2
    @req.each do |req|
      if item != nil && eval(req) != 0 && actor != nil
        eval(@req_condition[@req.index(req)]) < eval(req) ? change_color(text_color(2)) : change_color(normal_color)
        draw_text(0, line_height*@t, contents.width, line_height, @vocab_req[@req.index(req)]+" requis : "+eval(req).to_s)
        @t += 1
      end
    end
    change_color(normal_color)
    if item != nil && item.wepreq != 0 && actor != nil
      e = []
      for equip in @actor.equips
        if equip.class == RPG::Weapon
          e.push(equip.id)
        end
      end
      change_color(text_color(2)) unless e.include?(item.wepreq)
      draw_text(0, line_height*@t, contents.width, line_height, "Arme requise : "+$data_weapons[item.wepreq].name)
      @t += 1
    end
    change_color(normal_color)
    if item != nil && item.armreq != 0 && actor != nil
      e = []
      for equip in @actor.equips
        e.push(equip.id) if equip.class == RPG::Armor
      end
      change_color(text_color(2)) unless e.include?(item.armreq)
      draw_text(0, line_height*(@t), contents.width, line_height, "Armure requise : "+$data_armors[item.armreq].name)
      @t += 1
    end
    if item && item.switchreq != 0
      $game_switches[item.switchreq] ? change_color(normal_color) : change_color(text_color(2))
      draw_text(0, line_height*(@t), contents.width, line_height, Switch_Vocab[item.switchreq])
      @t += 1
    end
    if item && item.variablereq != 0
      $game_variables[item.variablereq[0]] >= item.variablereq[1] ? change_color(normal_color) : change_color(text_color(2))
      draw_text(0, line_height*(@t), contents.width, line_height, Variable_Vocab[item.variablereq[0]]+" "+$game_variables[item.variablereq[0]].to_s+"/"+item.variablereq[1].to_s)
    end
  end
 
  def downStat
    dif = (@t * line_height) - (height - self.padding * 2)
    save_oy = self.oy
    if self.oy + line_height > dif
      self.oy = [dif,0].max
    else
      self.oy += line_height
    end
    if save_oy != self.oy
      Sound.play_cursor
    end
  end
 
  def upStat
    save_oy = self.oy
    if self.oy - line_height < 0
      self.oy = 0
    else
      self.oy -= line_height
    end
    if save_oy != self.oy
      Sound.play_cursor
    end
  end
 
end
 
#~ #==============================================================================
#~ # ** Scene_Equip
#~ #------------------------------------------------------------------------------
#~ #  This class performs the equipment screen processing.
#~ #==============================================================================
 
class Scene_Equip
  alias :old_start :start
  def start
    old_start
    @window_req = Window_Requirement.new(0,192)#(Graphics.width/4,0)
  end
  alias :old_update :update
  def update
    old_update
    if Input.trigger?(:CTRL)
      #if @window_req.openness == 0 && @item_window.active && @item_window.item != nil
      if !@window_req.visible && @item_window.active && @item_window.item != nil
        Sound.play_cursor
        @window_req.item=@item_window.item
        @window_req.actor= @actor
        #@background = Sprite.new
        #@background.z = 200
        #@background.bitmap = Bitmap.new(Graphics.width, Graphics.height)
      # @background.bitmap.fill_rect(0,0,Graphics.width,Graphics.height,Color.new(0, 0, 0,128))
        #@window_req.open
        @window_req.visible = true
        @item_window.deactivate
        @item_window.visible = false
      #elsif @window_req.openness == 255
      elsif @window_req.visible
        Sound.play_cancel
        #@background.dispose if @background
        #@window_req.close
        @item_window.activate
        @item_window.visible = true
        @window_req.visible = false
      end
    elsif Input.trigger?(:B)
      #if @window_req.openness == 255
      if @window_req.visible
        Sound.play_cancel
        #@background.dispose if @background
        #@window_req.close
        @item_window.activate
        @item_window.visible = true
        @window_req.visible = false
      end
    elsif Input.trigger?(:UP) && @window_req.visible
      @window_req.upStat
      #@status_window.refresh(@status_window.item_actuel)
    elsif Input.trigger?(:DOWN) && @window_req.visible
      @window_req.downStat
    end
  end
end
class Scene_Item < Scene_ItemBase
  alias :old_start :start
  def start
    old_start
    @window_req = Window_Requirement.new(0,192)#(Graphics.width/4,0)
    @window_req.width = 544
  end
  alias :old_update :update
  def update
    old_update
    if Input.trigger?(:CTRL)
      #if @window_req.openness == 0 && (@item_window.item.class == RPG::Weapon || @item_window.item.class == RPG::Armor)
      if !@window_req.visible && (@item_window.item.class == RPG::Weapon || @item_window.item.class == RPG::Armor)
        Sound.play_cursor
        @window_req.item=@item_window.item
        @window_req.actor= @actor
        @background = Sprite.new
        @background.z = 200
        @background.bitmap = Bitmap.new(Graphics.width, Graphics.height)
      #  @background.bitmap.fill_rect(0,0,Graphics.width,Graphics.height,Color.new(0, 0, 0,128))
        #@window_req.open
        @item_window.visible = true
        @item_window.deactivate
        @item_window.visible = false
      #elsif @window_req.openness == 255
      elsif @window_req.visible
        Sound.play_cancel
        @background.dispose if @background
        #@window_req.close
        @item_window.activate
        @item_window.visible = true
        @item_window.visible = false
      end
    elsif Input.trigger?(:B)
      #if @window_req.openness == 255
      if @window_req.visible
        Sound.play_cancel
        @background.dispose if @background
        #@window_req.close
        @item_window.activate
        @item_window.visible = true
        @item_window.visible = false
      end
    end
  end
end

Vincent26 - Requirements type weapon
Code:
#Notetag the weapons/armors
#<maitrise name,y>
#<maitrise_rang name,rang>
 
Equipement_Vocab = {
# Variable_ID => "Vocab",
"Hache" => "Maitrise :",
"Lance" => "Maitrise :",
"Griffes" => "Maitrise :",
"Epée" => "Maitrise :",
"Katana" => "Maitrise :",
"Arc" => "Maitrise :",
"Dague" => "Maitrise :",
"Massue" => "Maitrise :",
"Bâton" => "Maitrise :",
"Arme à feu" => "Maitrise :",
}
module RPG
  #--------------------------------------------------------------------------
  # ● Equip Item is inherited by both Weapon and Armor
  #--------------------------------------------------------------------------
  class EquipItem
    def maitrise
      self.note =~ /<maitrise (.*)>/i ? $1 : 0
    end
    def maitrise_rang
      self.note =~ /<maitrise_rang (.*)>/i ? $1 : 0
    end
  end
end
class Window_EquipItem
  alias enable_weapon_upgrade? enable?
  def enable?(item)
    return false unless enable_weapon_upgrade?(item)
    unless item == nil
      if item.maitrise != 0
        array = item.maitrise.split(",")
        array[1] = array[1].to_i
        name = (Weapon_Upgrade::LIST_TYPE_ARME.index(array[0])+1).to_s
        nbr = $game_actors[@actor.id].weapon_upgrade[name] == nil ? 0 : $game_actors[@actor.id].weapon_upgrade[name]
        return false if nbr < array[1]
      end
      if item.maitrise_rang != 0
        array = item.maitrise_rang.split(",")
        name = (Weapon_Upgrade::LIST_TYPE_ARME.index(array[0])+1).to_s
        nbr2 = Weapon_Upgrade::LVL_DESCRIPTION.key(array[1])
        nbr = $game_actors[@actor.id].weapon_upgrade[name] == nil ? 0 : $game_actors[@actor.id].weapon_upgrade[name]
        return false if nbr < nbr2
      end
    end
    return true
  end
 
  alias draw_remove_equip_weapon_upgrade draw_remove_equip
  def draw_remove_equip(rect)
    change_color(normal_color, true)
    draw_remove_equip_weapon_upgrade(rect)
  end
 
end
class Window_Requirement
  def refresh
    contents.clear
    @req = ["item.levelreq","item.mhpreq","item.mmpreq","item.atkreq","item.defreq","item.matreq","item.mdfreq","item.agireq","item.lukreq"]#,"item.wepreq","item.armreq"]
    @vocab_req = [Vocab.level,Vocab.param(0),Vocab.param(1),Vocab.param(2),Vocab.param(3),Vocab.param(4),Vocab.param(5),Vocab.param(6),Vocab.param(7)]#,Vocab.weapon,Vocab.armor]
    @req_condition = ["@actor.level","reqstat(0)","reqstat(1)","reqstat(2)","reqstat(3)","reqstat(4)","reqstat(5)","reqstat(6)","reqstat(7)"]
   
    @t = 2
    @req.each do |req|
      if item != nil && eval(req) != 0 && actor != nil
        @t += 1
      end
    end
    if item != nil && item.wepreq != 0 && actor != nil
      @t += 1
    end
    if item != nil && item.armreq != 0 && actor != nil
      @t += 1
    end
    if item && item.switchreq != 0
      @t += 1
    end
    if item && item.variablereq != 0
      @t += 1
    end
    if item && item.maitrise != 0
      return if @actor == nil
      @t += 1
    end
    if item && item.maitrise_rang != 0
      return if @actor == nil
      @t += 1
    end
   
    self.contents = Bitmap.new(width - self.padding * 2, @t * line_height)
   
    @t = 2
    change_color(system_color)
    draw_text(contents.width/6, 0, contents.width, line_height, "Conditions requises")
    @req.each do |req|
      if item != nil && eval(req) != 0 && actor != nil
        eval(@req_condition[@req.index(req)]) < eval(req) ? change_color(text_color(2)) : change_color(normal_color)
        draw_text(0, line_height*@t, contents.width, line_height, @vocab_req[@req.index(req)]+" requis : "+eval(req).to_s)
        @t += 1
      end
    end
    change_color(normal_color)
    if item != nil && item.wepreq != 0 && actor != nil
      e = []
      for equip in @actor.equips
        if equip.class == RPG::Weapon
          e.push(equip.id)
        end
      end
      change_color(text_color(2)) unless e.include?(item.wepreq)
      draw_text(0, line_height*@t, contents.width, line_height, "Arme requise : "+$data_weapons[item.wepreq].name)
      @t += 1
    end
    change_color(normal_color)
    if item != nil && item.armreq != 0 && actor != nil
      e = []
      for equip in @actor.equips
        e.push(equip.id) if equip.class == RPG::Armor
      end
      change_color(text_color(2)) unless e.include?(item.armreq)
      draw_text(0, line_height*(@t), contents.width, line_height, "Armure requise : "+$data_armors[item.armreq].name)
      @t += 1
    end
    if item && item.switchreq != 0
      $game_switches[item.switchreq] ? change_color(normal_color) : change_color(text_color(2))
      draw_text(0, line_height*(@t), contents.width, line_height, Switch_Vocab[item.switchreq])
      @t += 1
    end
    if item && item.variablereq != 0
      $game_variables[item.variablereq[0]] >= item.variablereq[1] ? change_color(normal_color) : change_color(text_color(2))
      draw_text(0, line_height*(@t), contents.width, line_height, Variable_Vocab[item.variablereq[0]]+" "+$game_variables[item.variablereq[0]].to_s+"/"+item.variablereq[1].to_s)
      @t += 1
    end
    if item && item.maitrise != 0
      array = item.maitrise.split(",")
      array[1] = array[1].to_i
      name = (Weapon_Upgrade::LIST_TYPE_ARME.index(array[0])+1).to_s
      return if @actor == nil
      nbr = $game_actors[@actor.id].weapon_upgrade[name] == nil ? 0 : $game_actors[@actor.id].weapon_upgrade[name]
      nbr >= array[1] ? change_color(normal_color) : change_color(text_color(2))
      draw_text(0, line_height*(@t), contents.width, line_height, Equipement_Vocab[array[0]]+" "+array[1].to_s)
      @t += 1
    end
    if item && item.maitrise_rang != 0
      array = item.maitrise_rang.split(",")
      name = (Weapon_Upgrade::LIST_TYPE_ARME.index(array[0])+1).to_s
      return if @actor == nil
      nbr = $game_actors[@actor.id].weapon_upgrade[name] == nil ? 0 : $game_actors[@actor.id].weapon_upgrade[name]
      nbr2 = Weapon_Upgrade::LVL_DESCRIPTION.key(array[1])
      nbr >= nbr2 ? change_color(normal_color) : change_color(text_color(2))
      draw_text(0, line_height*(@t), contents.width, line_height, Equipement_Vocab[array[0]]+" "+array[1])
      @t += 1
    end
  end
end
avatar
Nérylis
Membre

Nombre de messages : 605
Age : 29
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Résolu Re: Petite modification de script

le Mar 1 Mar 2016 - 13:54
Pas mal, merci bien.

Deux petites choses :
- Il y a un bug lorsqu'on sélectionne un équipement avec plein de conditions, qu'on descend en bas de la fenêtre, qu'on revient en arrière puis qu'on sélectionne un autre équipement pour vérifier les conditions, il faut remonter la fenêtre alors qu'on devrait démarrer d'en haut.
- Une petite amélioration si possible, est-ce qu'on pourrait garder le texte "Conditions requises" affiché quand on fait défiler les pré-requis ? De façon à ce que les conditions uniquement défilent, et pas l'en-tête qui indique au joueur ce qu'il visualise.
avatar
tonyryu
Membre

Nombre de messages : 895
Age : 38
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Résolu Re: Petite modification de script

le Mar 1 Mar 2016 - 15:20
pour le petit bug, c'est un oubli de ma part :

Vincent26 - Requirements type weapon :
Code:
#Notetag the weapons/armors
#<maitrise name,y>
#<maitrise_rang name,rang>
 
Equipement_Vocab = {
# Variable_ID => "Vocab",
"Hache" => "Maitrise :",
"Lance" => "Maitrise :",
"Griffes" => "Maitrise :",
"Epée" => "Maitrise :",
"Katana" => "Maitrise :",
"Arc" => "Maitrise :",
"Dague" => "Maitrise :",
"Massue" => "Maitrise :",
"Bâton" => "Maitrise :",
"Arme à feu" => "Maitrise :",
}
module RPG
  #--------------------------------------------------------------------------
  # ● Equip Item is inherited by both Weapon and Armor
  #--------------------------------------------------------------------------
  class EquipItem
    def maitrise
      self.note =~ /<maitrise (.*)>/i ? $1 : 0
    end
    def maitrise_rang
      self.note =~ /<maitrise_rang (.*)>/i ? $1 : 0
    end
  end
end
class Window_EquipItem
  alias enable_weapon_upgrade? enable?
  def enable?(item)
    return false unless enable_weapon_upgrade?(item)
    unless item == nil
      if item.maitrise != 0
        array = item.maitrise.split(",")
        array[1] = array[1].to_i
        name = (Weapon_Upgrade::LIST_TYPE_ARME.index(array[0])+1).to_s
        nbr = $game_actors[@actor.id].weapon_upgrade[name] == nil ? 0 : $game_actors[@actor.id].weapon_upgrade[name]
        return false if nbr < array[1]
      end
      if item.maitrise_rang != 0
        array = item.maitrise_rang.split(",")
        name = (Weapon_Upgrade::LIST_TYPE_ARME.index(array[0])+1).to_s
        nbr2 = Weapon_Upgrade::LVL_DESCRIPTION.key(array[1])
        nbr = $game_actors[@actor.id].weapon_upgrade[name] == nil ? 0 : $game_actors[@actor.id].weapon_upgrade[name]
        return false if nbr < nbr2
      end
    end
    return true
  end
 
  alias draw_remove_equip_weapon_upgrade draw_remove_equip
  def draw_remove_equip(rect)
    change_color(normal_color, true)
    draw_remove_equip_weapon_upgrade(rect)
  end
 
end
class Window_Requirement
  def refresh
    self.oy = 0
    @req = ["item.levelreq","item.mhpreq","item.mmpreq","item.atkreq","item.defreq","item.matreq","item.mdfreq","item.agireq","item.lukreq"]#,"item.wepreq","item.armreq"]
    @vocab_req = [Vocab.level,Vocab.param(0),Vocab.param(1),Vocab.param(2),Vocab.param(3),Vocab.param(4),Vocab.param(5),Vocab.param(6),Vocab.param(7)]#,Vocab.weapon,Vocab.armor]
    @req_condition = ["@actor.level","reqstat(0)","reqstat(1)","reqstat(2)","reqstat(3)","reqstat(4)","reqstat(5)","reqstat(6)","reqstat(7)"]
   
    @t = 2
    @req.each do |req|
      if item != nil && eval(req) != 0 && actor != nil
        @t += 1
      end
    end
    if item != nil && item.wepreq != 0 && actor != nil
      @t += 1
    end
    if item != nil && item.armreq != 0 && actor != nil
      @t += 1
    end
    if item && item.switchreq != 0
      @t += 1
    end
    if item && item.variablereq != 0
      @t += 1
    end
    if item && item.maitrise != 0
      return if @actor == nil
      @t += 1
    end
    if item && item.maitrise_rang != 0
      return if @actor == nil
      @t += 1
    end
   
    self.contents = Bitmap.new(width - self.padding * 2, @t * line_height)
   
    @t = 2
    change_color(system_color)
    draw_text(contents.width/6, 0, contents.width, line_height, "Conditions requises")
    @req.each do |req|
      if item != nil && eval(req) != 0 && actor != nil
        eval(@req_condition[@req.index(req)]) < eval(req) ? change_color(text_color(2)) : change_color(normal_color)
        draw_text(0, line_height*@t, contents.width, line_height, @vocab_req[@req.index(req)]+" requis : "+eval(req).to_s)
        @t += 1
      end
    end
    change_color(normal_color)
    if item != nil && item.wepreq != 0 && actor != nil
      e = []
      for equip in @actor.equips
        if equip.class == RPG::Weapon
          e.push(equip.id)
        end
      end
      change_color(text_color(2)) unless e.include?(item.wepreq)
      draw_text(0, line_height*@t, contents.width, line_height, "Arme requise : "+$data_weapons[item.wepreq].name)
      @t += 1
    end
    change_color(normal_color)
    if item != nil && item.armreq != 0 && actor != nil
      e = []
      for equip in @actor.equips
        e.push(equip.id) if equip.class == RPG::Armor
      end
      change_color(text_color(2)) unless e.include?(item.armreq)
      draw_text(0, line_height*(@t), contents.width, line_height, "Armure requise : "+$data_armors[item.armreq].name)
      @t += 1
    end
    if item && item.switchreq != 0
      $game_switches[item.switchreq] ? change_color(normal_color) : change_color(text_color(2))
      draw_text(0, line_height*(@t), contents.width, line_height, Switch_Vocab[item.switchreq])
      @t += 1
    end
    if item && item.variablereq != 0
      $game_variables[item.variablereq[0]] >= item.variablereq[1] ? change_color(normal_color) : change_color(text_color(2))
      draw_text(0, line_height*(@t), contents.width, line_height, Variable_Vocab[item.variablereq[0]]+" "+$game_variables[item.variablereq[0]].to_s+"/"+item.variablereq[1].to_s)
      @t += 1
    end
    if item && item.maitrise != 0
      array = item.maitrise.split(",")
      array[1] = array[1].to_i
      name = (Weapon_Upgrade::LIST_TYPE_ARME.index(array[0])+1).to_s
      return if @actor == nil
      nbr = $game_actors[@actor.id].weapon_upgrade[name] == nil ? 0 : $game_actors[@actor.id].weapon_upgrade[name]
      nbr >= array[1] ? change_color(normal_color) : change_color(text_color(2))
      draw_text(0, line_height*(@t), contents.width, line_height, Equipement_Vocab[array[0]]+" "+array[1].to_s)
      @t += 1
    end
    if item && item.maitrise_rang != 0
      array = item.maitrise_rang.split(",")
      name = (Weapon_Upgrade::LIST_TYPE_ARME.index(array[0])+1).to_s
      return if @actor == nil
      nbr = $game_actors[@actor.id].weapon_upgrade[name] == nil ? 0 : $game_actors[@actor.id].weapon_upgrade[name]
      nbr2 = Weapon_Upgrade::LVL_DESCRIPTION.key(array[1])
      nbr >= nbr2 ? change_color(normal_color) : change_color(text_color(2))
      draw_text(0, line_height*(@t), contents.width, line_height, Equipement_Vocab[array[0]]+" "+array[1])
      @t += 1
    end
  end
end

Pour l'amélioration, ce n'est pas possible, il faudrait réécrire tout le code de la fenêtre et il n'y aura plus la possibilité d'afficher les flèches.
avatar
Nérylis
Membre

Nombre de messages : 605
Age : 29
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Résolu Re: Petite modification de script

le Mar 1 Mar 2016 - 15:41
Ok, ça marche, pas de soucis.
Merci beaucoup pour ton aide pour l'optimisation de toutes ces interfaces. Maintenant, j'ai quelque chose d'assez uniforme et pas trop moche. A priori, il n'y a plus aucun bug avec mes menus. Je vais jeter un dernier coup d’œil au cas où mais ça semble bon. Je te contacterai par MP si jamais je rencontre un autre souci avec les menus. Du coup, il ne me reste plus qu'un seul problème dans ma démo mais qui n'a rien à voir avec les menus. Je ferai un nouveau topic pour ça très probablement.

Merci encore pour ce que tu as fais. Smile
Contenu sponsorisé

Résolu Re: Petite modification de script

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum