Chaos Project

RPG Maker => RPG Maker Scripts => Script Troubleshooting => Topic started by: Siffers on March 01, 2014, 02:02:37 pm

Title: [Solved] [XP] Help with Window_EquipLeft
Post by: Siffers on March 01, 2014, 02:02:37 pm
I'm attempting to make my own equipment menu, and I would like the number that display the stat changes to change color depending on whether the stat rises or lowers.
Also, I can't figure out how to get it to show the Max HP/SP changes either. It took me while just to figure out how to get the Max HP/SP to even show.

Here's the altered Window_EquipLeft
Spoiler: ShowHide

#==============================================================================
# ** Window_EquipLeft
#------------------------------------------------------------------------------
#  This window displays actor parameter changes on the equipment screen.
#==============================================================================

class Window_EquipLeft < Window_Base

 #--------------------------------------------------------------------------
 # * Object Initialization
 #     actor : actor
 #--------------------------------------------------------------------------
 def initialize(actor)
   super(0, 64, 272, 416)
   self.contents = Bitmap.new(width - 32, height - 32)
   @actor = actor
   refresh
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   draw_actor_name(@actor, 4, 0)
   self.contents.font.color = system_color
   self.contents.draw_text(4 , 32, 64, 32, "HP")
   self.contents.font.color = normal_color
   self.contents.draw_text(128 , 32, 64, 32, @actor.maxhp.to_s)
   self.contents.font.color = system_color
   self.contents.draw_text(4, 64, 64, 32, "SP")
   self.contents.font.color = normal_color
   self.contents.draw_text(128, 64, 64, 32, @actor.maxsp.to_s)
   draw_actor_parameter(@actor, 4, 96, 0)
   draw_actor_parameter(@actor, 4, 128, 3)
   draw_actor_parameter(@actor, 4, 160, 6)
   draw_actor_parameter(@actor, 4, 192, 4)
   draw_actor_parameter(@actor, 4, 224, 5)
   draw_actor_parameter(@actor, 4, 256, 1)
   draw_actor_parameter(@actor, 4, 288, 2)
   if @new_atk != nil
     self.contents.font.color = system_color
     self.contents.draw_text(160, 96, 40, 32, "→", 1)
     self.contents.font.color = normal_color
     self.contents.draw_text(200, 96, 36, 32, @new_atk.to_s, 2)
     end
   if @new_str != nil
     self.contents.font.color = system_color
     self.contents.draw_text(160, 128, 40, 32, "→", 1)
     self.contents.font.color = normal_color
     self.contents.draw_text(200, 128, 36, 32, @new_str.to_s, 2)
   end
   if @new_int != nil
     self.contents.font.color = system_color
     self.contents.draw_text(160, 160, 40, 32, "→", 1)
     self.contents.font.color = normal_color
     self.contents.draw_text(200, 160, 36, 32, @new_int.to_s, 2)
   end
   if @new_dex != nil
     self.contents.font.color = system_color
     self.contents.draw_text(160, 192, 40, 32, "→", 1)
     self.contents.font.color = normal_color
     self.contents.draw_text(200, 192, 36, 32, @new_dex.to_s, 2)
   end
   if @new_agi != nil
     self.contents.font.color = system_color
     self.contents.draw_text(160, 224, 40, 32, "→", 1)
     self.contents.font.color = normal_color
     self.contents.draw_text(200, 224, 36, 32, @new_agi.to_s, 2)
   end
   if @new_pdef != nil
     self.contents.font.color = system_color
     self.contents.draw_text(160, 256, 40, 32, "→", 1)
     self.contents.font.color = normal_color
     self.contents.draw_text(200, 256, 36, 32, @new_pdef.to_s, 2)
   end
   if @new_mdef != nil
     self.contents.font.color = system_color
     self.contents.draw_text(160, 288, 40, 32, "→", 1)
     self.contents.font.color = normal_color
     self.contents.draw_text(200, 288, 36, 32, @new_mdef.to_s, 2)
   end
 end
 #--------------------------------------------------------------------------
 # * Set parameters after changing equipment
 #     new_atk  : attack power after changing equipment
 #     new_pdef : physical defense after changing equipment
 #     new_mdef : magic defense after changing equipment
 #--------------------------------------------------------------------------
 def set_new_parameters(new_atk, new_str, new_int, new_dex, new_agi, new_pdef, new_mdef)
   if @new_atk != new_atk or @new_str != new_str or @new_int != new_int or @new_dex != new_dex or @new_agi != new_agi or @new_pdef != new_pdef or @new_mdef != new_mdef
     @new_atk = new_atk
     @new_str = new_str
     @new_int = new_int
     @new_dex = new_dex
     @new_agi = new_agi
     @new_pdef = new_pdef
     @new_mdef = new_mdef
     refresh
   end
 end
end
Title: Re: [XP] Help with Window_EquipLeft
Post by: KK20 on March 01, 2014, 05:37:41 pm
Different colors is pretty easy:

      self.contents.font.color = (@actor.atk < @new_atk ? Color.new(255, 0, 0) : (@actor.atk > @new_atk ? Color.new(0,255, 0) : normal_color))
      self.contents.draw_text(200, 96, 36, 32, @new_atk.to_s, 2)

Which reads as "if this equip gives lower ATK, color red; if this equip gives higher ATK, color green; if no change, color white"

For difference in HP/SP, you will need to do something similar to Scene_Equip

    # If item window is active
    if @item_window.active
      # Get currently selected item
      item2 = @item_window.item
      # Change equipment
      last_hp = @actor.hp
      last_sp = @actor.sp
      @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
      # Get parameters for after equipment change
      new_atk = @actor.atk
      new_pdef = @actor.pdef
      new_mdef = @actor.mdef
      #all the other stats...
      new_hp = @actor.maxhp
      new_sp = @actor.maxsp
      # Return equipment
      @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
      @actor.hp = last_hp
      @actor.sp = last_sp
      # Draw in left window
      @left_window.set_new_parameters(new_atk, new_str, new_int, new_dex, new_agi, new_pdef, new_mdef, new_hp, new_sp)
    end

And add the stats to set_new_parameters

  def set_new_parameters(new_atk, new_str, new_int, new_dex, new_agi, new_pdef, new_mdef, new_hp, new_sp)
    if @new_atk != new_atk or @new_str != new_str or @new_int != new_int or @new_dex != new_dex or @new_agi != new_agi or @new_pdef != new_pdef or @new_mdef != new_mdef or @new_hp != new_hp or @new_sp != new_sp
      @new_atk = new_atk
      @new_str = new_str
      @new_int = new_int
      @new_dex = new_dex
      @new_agi = new_agi
      @new_pdef = new_pdef
      @new_mdef = new_mdef
      @new_hp = new_hp
      @new_sp = new_sp
      refresh
    end
  end
Title: Re: [XP] Help with Window_EquipLeft
Post by: Siffers on March 02, 2014, 02:28:25 am
Thank you very much for the help!  :haha: