[XP] MOG_Scene_Equip [V1.6]

OP
Mensajes
1.626
Reacciones
30
Puntos
0
Ubicación
Caracas, Venezuela
Nombre: MOG_Scene_Equip

Versión: 1.6

RPG Maker: RPG Maker XP

Introducción:

Es un pequeño Script que se encarga de personalizar el Menú "EQUIP" o "EQUIPO" de cualquier juego en el Maker.

Características:

Es un script que por medio de imágenes, se puede personalizar.

Algo complicado de usar sino tienes experiencia en el RPG Maker.

Demo: Es esta.

(http://www.atelier-rgss.com/RGSS/Demos/MOG_Scene_Equip.exe)

Screenshot/Imagen:

Script_Menu14_IM01.JPG


Script:

Código:
#_______________________________________________________________________________
# MOG_Scene_Equip V1.6           
#_______________________________________________________________________________
# By Moghunter     
# http://www.atelier-rgss.com
#_______________________________________________________________________________
module MOG
#Transition Time.  
MSEQPT= 10
#Transition Type.
MSEQPTT= "004-Blind04"
# Set Maximum (STR,DEX,AGL,INT)
MST_ST = 999
# Set Maximum (ATK,PDEF,MDEF)
MST_STE = 999
end
$mogscript = {} if $mogscript == nil
$mogscript["MOG_Scene_Equip"] = true
###############
# Window_Base #
###############
class Window_Base < Window
def nada2(actor)
face = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
end    
def draw_heroface2(actor,x,y)
face = RPG::Cache.picture(actor.name + "_fc2") rescue nada2(actor)
cw = face.width 
ch = face.height 
src_rect = Rect.new(0, 0, cw, ch)
if face == RPG::Cache.battler(actor.battler_name, actor.battler_hue)
self.contents.blt(x + 40 , y - ch - 240, face, src_rect)    
else  
self.contents.blt(x , y - ch, face, src_rect)    
end
end     
def drw_eqpup(x,y,type)
case type
when 0
est = RPG::Cache.icon("ST_EQU")
when 1
est = RPG::Cache.icon("ST_UP")
when 2
est = RPG::Cache.icon("ST_DOWN")  
end  
cw = est.width 
ch = est.height 
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch, est, src_rect)    
end   
def drw_equist(x,y)
equist = RPG::Cache.picture("Equip_St")
cw = equist.width 
ch = equist.height 
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch, equist, src_rect)    
end  
def draw_actor_parameter2(actor, x, y, type)
back = RPG::Cache.picture("STBAR_Back")    
cw = back.width  
ch = back.height 
src_rect = Rect.new(0, 0, cw, ch)    
self.contents.blt(x + 50 , y - ch + 20, back, src_rect)  
meter = RPG::Cache.picture("STBAR.png")    
case type
when 0
parameter_value = actor.atk
cw = meter.width  * actor.atk / MOG::MST_STE
when 1
parameter_value = actor.pdef
cw = meter.width  * actor.pdef / MOG::MST_STE
when 2
parameter_value = actor.mdef
cw = meter.width  * actor.mdef / MOG::MST_STE
when 3
parameter_value = actor.str
cw = meter.width  * actor.str / MOG::MST_ST
when 4
parameter_value = actor.dex
cw = meter.width  * actor.dex / MOG::MST_ST
when 5
parameter_value = actor.agi
cw = meter.width  * actor.agi / MOG::MST_ST
when 6
parameter_value = actor.int
cw = meter.width  * actor.int / MOG::MST_ST
end
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y - 2, 36, 32, parameter_value.to_s, 2)
ch = meter.height 
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 50 , y - ch + 20, meter, src_rect) 
end
def nada
face = RPG::Cache.picture("")
end  
def draw_heroface3(actor,x,y)
face = RPG::Cache.picture(actor.name + "_fc3") rescue nada
cw = face.width 
ch = face.height 
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch, face, src_rect)    
end  
end
####################
# Window_EquipLeft #
####################
class Window_EquipLeft < Window_Base
  def initialize(actor)
    super(0, 64, 272, 446)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = 0
    self.contents.font.name = "Georgia"    
    @actor = actor
    refresh
  end
  def refresh
    self.contents.clear
    draw_heroface2(@actor, 20, 460)      
    drw_equist(0,390)    
    draw_actor_name(@actor, 4, 0)
    draw_actor_level(@actor, 4, 32)
    draw_actor_parameter2(@actor, 10, 164 , 0)
    draw_actor_parameter2(@actor, 10, 196 , 1)
    draw_actor_parameter2(@actor, 10, 228 , 2)
    draw_actor_parameter2(@actor, 10, 260 , 3)
    draw_actor_parameter2(@actor, 10, 292 , 4)
    draw_actor_parameter2(@actor, 10, 324 , 5)
    draw_actor_parameter2(@actor, 10, 356 , 6)        
    if @new_atk != nil
      self.contents.font.color = system_color
      if @new_atk < @actor.atk
      drw_eqpup(170,190,2)  
      self.contents.font.color = Color.new(255,50,50,255)      
      elsif @new_atk > @actor.atk
      drw_eqpup(170,190,1)  
      self.contents.font.color = Color.new(50,250,150,255)
      else
      drw_eqpup(170,190,0)        
      self.contents.font.color = Color.new(255,255,255,255)      
      end      
      self.contents.draw_text(190, 162, 36, 32, @new_atk.to_s, 2)
    end
    if @new_pdef != nil
      if @new_pdef < @actor.pdef
      drw_eqpup(170,226,2)  
      self.contents.font.color = Color.new(255,50,50,255)      
      elsif @new_pdef > @actor.pdef
      drw_eqpup(170,226,1)  
      self.contents.font.color = Color.new(50,250,150,255)
      else
      drw_eqpup(170,226,0)        
      self.contents.font.color = Color.new(255,255,255,255)      
      end  
      self.contents.draw_text(190, 194, 36, 32, @new_pdef.to_s, 2)
    end
    if @new_mdef != nil
      if @new_mdef < @actor.mdef
      drw_eqpup(170,258,2)  
      self.contents.font.color = Color.new(255,50,50,255)      
      elsif @new_mdef > @actor.mdef
      drw_eqpup(170,258,1)  
      self.contents.font.color = Color.new(50,250,150,255)
      else
      drw_eqpup(170,258,0)        
      self.contents.font.color = Color.new(255,255,255,255)      
      end
      self.contents.draw_text(190, 226, 36, 32, @new_mdef.to_s, 2)
    end
    if @new_str  != nil
      if @new_str < @actor.str
      drw_eqpup(170,290,2)  
      self.contents.font.color = Color.new(255,50,50,255)      
      elsif @new_str > @actor.str
      drw_eqpup(170,290,1)  
      self.contents.font.color = Color.new(50,250,150,255)
      else
      drw_eqpup(170,290,0)        
      self.contents.font.color = Color.new(255,255,255,255)      
      end
      self.contents.draw_text(190, 258, 36, 32, @new_str.to_s, 2)
    end
    if @new_dex  != nil
      if @new_dex < @actor.dex
      drw_eqpup(170,322,2)  
      self.contents.font.color = Color.new(255,50,50,255)      
      elsif @new_dex > @actor.dex
      drw_eqpup(170,322,1)  
      self.contents.font.color = Color.new(50,250,150,255)
      else
      drw_eqpup(170,322,0)        
      self.contents.font.color = Color.new(255,255,255,255)      
      end
      self.contents.draw_text(190, 290, 36, 32, @new_dex.to_s, 2)
    end
    if @new_agi  != nil
      if @new_agi < @actor.agi
      drw_eqpup(170,354,2)  
      self.contents.font.color = Color.new(255,50,50,255)      
      elsif @new_agi > @actor.agi
      drw_eqpup(170,354,1)  
      self.contents.font.color = Color.new(50,250,150,255)
      else
      drw_eqpup(170,354,0)        
      self.contents.font.color = Color.new(255,255,255,255)      
      end
      self.contents.draw_text(190, 322, 36, 32, @new_agi.to_s, 2)
    end
    if @new_int  != nil
      if @new_int < @actor.int
      drw_eqpup(170,386,2)  
      self.contents.font.color = Color.new(255,50,50,255)      
      elsif @new_int > @actor.int
      drw_eqpup(170,386,1)  
      self.contents.font.color = Color.new(50,250,150,255)
      else
      drw_eqpup(170,386,0)        
      self.contents.font.color = Color.new(255,255,255,255)      
      end
      self.contents.draw_text(190, 354, 36, 32, @new_int.to_s, 2)
    end
  end
  def set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex,
    new_agi, new_int)
    if @new_atk != new_atk or @new_pdef != new_pdef or @new_mdef != new_mdef or
      @new_str != new_str or @new_dex != new_dex or @new_agl != new_agi or
      @new_int != new_int      
      @new_atk = new_atk
      @new_pdef = new_pdef
      @new_mdef = new_mdef
      @new_str = new_str
      @new_dex = new_dex
      @new_agi = new_agi
      @new_int = new_int
      refresh
    end
  end
end
#####################
# Window_EquipRight #
#####################
class Window_EquipRight < Window_Selectable
  def initialize(actor)
    super(272, 64, 368, 192)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = 0
    self.contents.font.name = "Georgia"        
    @actor = actor
    refresh
    self.index = 0
  end
  def item
    return @data[self.index]
  end
  def refresh
    self.contents.clear
    @data = []
    @data.push($data_weapons[@actor.weapon_id])
    @data.push($data_armors[@actor.armor1_id])
    @data.push($data_armors[@actor.armor2_id])
    @data.push($data_armors[@actor.armor3_id])
    @data.push($data_armors[@actor.armor4_id])
    @item_max = @data.size
    self.contents.font.color = system_color
    draw_item_name(@data[0], 92, 32 * 0)
    draw_item_name(@data[1], 92, 32 * 1)
    draw_item_name(@data[2], 92, 32 * 2)
    draw_item_name(@data[3], 92, 32 * 3)
    draw_item_name(@data[4], 92, 32 * 4)
  end
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end
####################
# Window_EquipItem #
####################
class Window_EquipItem < Window_Selectable
  def initialize(actor, equip_type)
    super(272, 256, 368, 224)
    self.opacity = 0
    @actor = actor
    @equip_type = equip_type
    @column_max = 1
    refresh
    self.active = false
    self.index = -1
  end
  def item
    return @data[self.index]
  end
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    if @equip_type == 0
      weapon_set = $data_classes[@actor.class_id].weapon_set
      for i in 1...$data_weapons.size
        if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
          @data.push($data_weapons[i])
        end
      end
    end
    if @equip_type != 0
      armor_set = $data_classes[@actor.class_id].armor_set
      for i in 1...$data_armors.size
        if $game_party.armor_number(i) > 0 and armor_set.include?(i)
          if $data_armors[i].kind == @equip_type-1
            @data.push($data_armors[i])
          end
        end
      end
    end
    @data.push(nil)
    @item_max = @data.size
    self.contents = Bitmap.new(width - 32, row_max * 32)
    for i in 0...@item_max-1
      draw_item(i)
    end
  end
  def draw_item(index)
    self.contents.font.name = "Georgia"        
    item = @data[index]
    x = 4 + index % 1 * (288 + 32)
    y = index / 1 * 32
    case item
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    bitmap = RPG::Cache.icon(item.icon_name)
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
    self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  end
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end
###############
# Scene_Equip #
###############
class Scene_Equip
  def initialize(actor_index = 0, equip_index = 0)
    @actor_index = actor_index
    @equip_index = equip_index
  end
  def main
    @mnback = Plane.new
    @mnback.bitmap = RPG::Cache.picture("MN_BK")
    @mnback.z = 1
    @mnlay = Sprite.new
    @mnlay.bitmap = RPG::Cache.picture("Equip_Lay")
    @mnlay.z = 2
    @actor = $game_party.actors[@actor_index]
    @help_window = Window_Help.new
    @help_window.opacity = 0
    @help_window.x = -300
    @help_window.contents_opacity = 0
    @left_window = Window_EquipLeft.new(@actor)
    @left_window.x = -300
    @left_window.contents_opacity = 0
    @right_window = Window_EquipRight.new(@actor)
    @item_window1 = Window_EquipItem.new(@actor, 0)
    @item_window2 = Window_EquipItem.new(@actor, 1)
    @item_window3 = Window_EquipItem.new(@actor, 2)
    @item_window4 = Window_EquipItem.new(@actor, 3)
    @item_window5 = Window_EquipItem.new(@actor, 4)
    @item_window1.x = 640
    @item_window2.x = 640
    @item_window3.x = 640
    @item_window4.x = 640
    @item_window5.x = 640    
    @right_window.help_window = @help_window
    @item_window1.help_window = @help_window
    @item_window2.help_window = @help_window
    @item_window3.help_window = @help_window
    @item_window4.help_window = @help_window
    @item_window5.help_window = @help_window
    @right_window.index = @equip_index
    @right_window.x = 640
    refresh
    Graphics.transition(MOG::MSEQPT, "Graphics/Transitions/" + MOG::MSEQPTT)
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    for i in 0..10
    @left_window.x -= 25
    @left_window.contents_opacity -= 15
    @item_window.x += 30
    @item_window.contents_opacity -= 20
    @right_window.x += 30
    @right_window.contents_opacity -= 20
    Graphics.update  
    end  
    Graphics.freeze
    @help_window.dispose
    @left_window.dispose
    @right_window.dispose
    @item_window1.dispose
    @item_window2.dispose
    @item_window3.dispose
    @item_window4.dispose
    @item_window5.dispose
    @mnback.dispose
    @mnlay.dispose
  end
  def refresh
    @item_window1.visible = (@right_window.index == 0)
    @item_window2.visible = (@right_window.index == 1)
    @item_window3.visible = (@right_window.index == 2)
    @item_window4.visible = (@right_window.index == 3)
    @item_window5.visible = (@right_window.index == 4)
    item1 = @right_window.item
    case @right_window.index
    when 0
      @item_window = @item_window1
    when 1
      @item_window = @item_window2
    when 2
      @item_window = @item_window3
    when 3
      @item_window = @item_window4
    when 4
      @item_window = @item_window5
    end
    if @right_window.active
      @left_window.set_new_parameters(nil, nil, nil,nil, nil, nil,nil)
    end
    if @item_window.active
      item2 = @item_window.item
      last_hp = @actor.hp
      last_sp = @actor.sp
      @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
      new_atk = @actor.atk
      new_pdef = @actor.pdef
      new_mdef = @actor.mdef
      new_str = @actor.str
      new_dex = @actor.dex
      new_agi = @actor.agi
      new_int = @actor.int     
      @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
      @actor.hp = last_hp
      @actor.sp = last_sp
      @left_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_str,
      new_dex,new_agi,new_int)      
    end
  end
  def update
    if @right_window.x > 272
       @right_window.x -= 30
    elsif @right_window.x <= 272
       @right_window.x = 272
    end  
    if @item_window.x > 272
       @item_window.x -= 30 
    elsif @item_window.x <= 272
        @item_window.x = 272
    end
    if @item_window.active == false  
    if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
    @item_window.x = 640  
    end  
    end
    if @left_window.x < 0
    @left_window.x += 25
    @left_window.contents_opacity += 15
    elsif @left_window.x >= 0
    @left_window.x = 0
    @left_window.contents_opacity = 255
    end
    if @help_window.x < 0 
    @help_window.x  += 25
    @help_window.contents_opacity += 15
    elsif @help_window.x >= 0
    @help_window.x = 0
    @help_window.contents_opacity = 255
  end    
    @mnback.ox += 1    
    @left_window.update
    @right_window.update
    @item_window.update
    if Input.trigger?(Input::B) or Input.trigger?(Input::C) or
    Input.trigger?(Input.dir4) or Input.trigger?(Input::L) or
    Input.trigger?(Input::R) or Input.press?(Input.dir4)
    @help_window.x = -300
    @help_window.contents_opacity = 0
    refresh
    end    
    if @right_window.active
      update_right
      return
    end
    if @item_window.active
      update_item
      return
    end
  end
  def update_right
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(2)
      return
    end
    if Input.trigger?(Input::C)
      if @actor.equip_fix?(@right_window.index)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      @right_window.active = false
      @item_window.active = true
      @item_window.index = 0
      refresh      
      return
    end
    if Input.trigger?(Input::R)
      $game_system.se_play($data_system.cursor_se)
      @actor_index += 1
      @actor_index %= $game_party.actors.size
      $scene = Scene_Equip.new(@actor_index, @right_window.index)
      return
    end
    if Input.trigger?(Input::L)
      $game_system.se_play($data_system.cursor_se)
      @actor_index += $game_party.actors.size - 1
      @actor_index %= $game_party.actors.size
      $scene = Scene_Equip.new(@actor_index, @right_window.index)
      return
    end
  end
  def update_item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @right_window.active = true
      @item_window.active = false
      @item_window.index = -1
      refresh
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.equip_se)
      item = @item_window.item
      @actor.equip(@right_window.index, item == nil ? 0 : item.id)
      @right_window.active = true
      @item_window.active = false
      @item_window.index = -1
      @right_window.refresh
      @item_window.refresh
      refresh      
      return
    end
  end
end

Instrucciones:

Pega encima de Main en el menú de Scripts:

<>MOG_Scene_Equip
<>Main

Compatibilidad: No la sé.

Créditos: MOGHunter.

Saludos~ :difus_3:
 

YoshiGM

Iconic User
Mensajes
667
Reacciones
16
Puntos
578
Ubicación
Detrás Tuyo (?)
Ese ya lo conocía. Es muy bueno. Puedes darle tu toque gráfico y queda mejor :)
 
Arriba Pie