¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Últimos temas
» Hola mucho gusto
por Hk Diamond Hoy a las 13:49

» [AYUDA]Hootshot de moghunter
por Rudy_kinneas Hoy a las 12:03

» Holaaa a tod@s!!!
por nacho Hoy a las 09:47

» SoraDeathss se presenta!
por chronoMxx Hoy a las 07:50

» {AYUDA}Blizz-ABS Script
por chronoMxx Hoy a las 06:45

» las cosas como son...
por Bleuw Hoy a las 04:18

» Busco artistas graficos para proyecto serio
por Rudy_kinneas Ayer a las 20:52

» Duda con música en RPG MV
por Fleabass Ayer a las 20:25

» Recopilación de páginas con recursos RPG Maker
por RiKennedy-Maker Ayer a las 20:00

» [DUDA] Titulo de RPGM XP con varias imagenes
por Wecoc Ayer a las 08:38

Afiliados
Estadísticas
Tenemos 3381 miembros registrados.
El último usuario registrado es Hk Diamond.

Nuestros miembros han publicado un total de 79749 mensajes en 11244 argumentos.
Navega con Google Chrome
[DESCARGA]

Scene_Equip modificado

 :: RPG Maker :: Scripts

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Scene_Equip modificado

Mensaje por Pokepik el 2012-01-24, 00:27

Buenas, yo no soy muy buena con los scripts, pero de vez en cuando hago pruebas, y ésta vez he hecho un Scene_Equip. Pegad el script encima de main. Ah, se necesita una picture de fondo llamada back_equip, os la adjuntaré al final del mensaje aunque podéis usar la que queráis.

Screen:


Código:
Código:
#==============================================================================
# Algunos edits sencillos de Window :: Equip (by Pokepik)
#==============================================================================
#----------------------------------------------
# Window_EquipLeft
#----------------------------------------------

class Window_EquipLeft < Window_Base
  def initialize(actor)
    super(48, 64, 272, 320)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    refresh
  end
  def refresh
    self.contents.clear
    draw_actor_name(@actor, 4, 0)
    draw_actor_level(@actor, 4, 32)
    draw_actor_parameter(@actor, 4, 64, 0)
    draw_actor_parameter(@actor, 4, 96, 1)
    draw_actor_parameter(@actor, 4, 128, 2)
    draw_actor_parameter(@actor, 4, 160, 3)
    draw_actor_parameter(@actor, 4, 192, 4)
    draw_actor_parameter(@actor, 4, 224, 5)
    draw_actor_parameter(@actor, 4, 256, 6)
   
    if @new_atk != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 64, 40, 32, "->", 1)
      self.contents.font.color = normal_color
      self.contents.draw_text(200, 64, 36, 32, @new_atk.to_s, 2)
    end
    if @new_pdef != 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_pdef.to_s, 2)
    end
    if @new_mdef != 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_mdef.to_s, 2)
    end
    if @new_str != 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_str.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_int != 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_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_agi != 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(345, 64, 220, 260)
    self.contents = Bitmap.new(width - 32, height - 32)
    @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
    draw_ppik_icon(@data[0],0,50,  $data_system.words.weapon)
    draw_ppik_icon(@data[1],130,50,$data_system.words.armor1)
    draw_ppik_icon(@data[2],65,0,  $data_system.words.armor2)
    draw_ppik_icon(@data[3],65,50, $data_system.words.armor3)
    draw_ppik_icon(@data[4],0,100, $data_system.words.armor4)
  end
  def update_cursor_rect
    if    @index == 0
      self.cursor_rect.set(0,50,46,46)
    elsif @index == 1
      self.cursor_rect.set(130,50,46,46)
    elsif @index == 2
      self.cursor_rect.set(65,0,46,46)
    elsif @index == 3
      self.cursor_rect.set(65,50,46,46)
    elsif @index == 4
      self.cursor_rect.set(0,100,46,46)
    end
  end
end

class Window_Base < Window
  def draw_ppik_icon(item,x,y,text)
    self.contents.font.color = normal_color
    if item == nil
      self.contents.font.size = 15
      self.contents.font.color = disabled_color
      self.contents.draw_text(x-26,y+24,100,32,text,1)
    else
      self.contents.font.size = 15
      self.contents.font.color = normal_color
      bitmap = RPG::Cache.icon(item.icon_name)
      self.contents.blt(x + 12, y + 10, bitmap, Rect.new(0, 0, 46, 46)) # Icono
      self.contents.draw_text(x-26,y+24,100,32,text,1)
    end
  end
end

#----------------------------------------------
# Window_EquipItem
#----------------------------------------------

class Window_EquipItem < Window_Selectable
  def initialize(actor, equip_type)
    super(333, 303, 250, 110)
    @actor = actor
    @equip_type = equip_type
    @column_max = 5
    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)
    item = @data[index]
    x = index % @column_max * 41
    y = (index / @column_max) * 41
    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+5 , y + 5 , bitmap, Rect.new(0, 0, 41, 41))
    self.contents.font.color = normal_color
    self.contents.font.size = 15
    self.contents.draw_text(x+4, y+12, 24, 32, number.to_s, 2)
  end
 
  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
    else
      self.cursor_rect.set(@index % @column_max * 41 , (@index / @column_max) * 41 , 41, 41)
    end
  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
    @spriteset = Spriteset_Map.new
    @actor = $game_party.actors[@actor_index]
    @left_window = Window_EquipLeft.new(@actor)
    @left_window.opacity = 0
    @right_window = Window_EquipRight.new(@actor)
    @right_window.opacity = 0
    @item_window1 = Window_EquipItem.new(@actor, 0)
    @item_window1.opacity = 0
    @item_window2 = Window_EquipItem.new(@actor, 1)
    @item_window2.opacity = 0
    @item_window3 = Window_EquipItem.new(@actor, 2)
    @item_window3.opacity = 0
    @item_window4 = Window_EquipItem.new(@actor, 3)
    @item_window4.opacity = 0
    @item_window5 = Window_EquipItem.new(@actor, 4)
    @item_window5.opacity = 0 
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.picture("back_equip")
    @right_window.index = @equip_index
    refresh
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @left_window.dispose
    @right_window.dispose
    @item_window1.dispose
    @item_window2.dispose
    @item_window3.dispose
    @item_window4.dispose
    @item_window5.dispose
    @sprite.dispose
    @spriteset.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
    @left_window.update
    @right_window.update
    @item_window.update
    refresh
    if @right_window.active
      update_right
      return
    end
    if @item_window.active
      @item_window.active = true
      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
      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
      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
      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
      return
    end
  end
end

Spoiler:
Back_equip (picture)





Y de regalo un pequeño edit del Window_Gold.

No lo substituyáis por el Window_Gold normal, si lo queréis ponedlo encima de main.
Un ejemplo claro de lo que hace: En vez de "1245 G" Saldrá "1 g 245 s" (de gold y silver)

Código:
#----------------------------------------------
# Window_Gold
#----------------------------------------------

class Window_Gold < Window_Base
  def refresh
    dinero_total = $game_party.gold
    dinero_plata = dinero_total % 1000
    dinero_oro = (dinero_total - dinero_plata)/1000
    self.contents.clear
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 0, 120, 32, dinero_oro.to_s+ " g "+
    dinero_plata.to_s+" s", 2)
  end
end

(Si os gusta igual haré el resto de escenas)

Pokepik
Principiante
Principiante

0/3

Créditos 1834

Gracias : 4

Volver arriba Ir abajo

RPG Maker XP Re: Scene_Equip modificado

Mensaje por Satoshi el 2012-01-27, 19:23

Me encanta, queda de lujo, yo si fuese tu haria mas asi, es genial xD

Satoshi
Iniciado
Iniciado

0/3

Créditos 44

Gracias : 3

Volver arriba Ir abajo

RPG Maker XP Re: Scene_Equip modificado

Mensaje por Vientos Sagrados RPG el 2012-01-27, 19:31

Estos suelen usarles en los onlines, pero es una forma genial de hacer que un juego quede bien... Además de poder organizarte rápido en el equipamiento.

Vientos Sagrados RPG
Iniciado
Iniciado

0/3

Créditos 62

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: Scene_Equip modificado

Mensaje por Aarl el 2012-01-27, 20:50

Pues menos mal que no eres muy buena xDDD

Es uno de los mejores scripts que he visto o_O
Mis felicitaciones, sigue asi :D

Un saludo :)

Aarl
Veterano
Veterano

0/3

Créditos 141

Gracias : 37

https://soundcloud.com/aarl

Volver arriba Ir abajo

RPG Maker XP Re: Scene_Equip modificado

Mensaje por Razor el 2012-01-27, 20:55

Muy buen script, solo se me ocurre una forma de mejorarlo aún más, y es agregándole la opción de poder equipar más de 4 accesorios al personaje, así se completarían algunos cuadros del scene, me gusta mucho el estilo, es sobrio, muy bueno, en la screen se mira aún mejor, pero claro es por los efectos que agregaste al mapa.

¡Que sigas mejorando en el scripting...!

Un Saludo
Out~

Razor
Novato
Novato

0/3

Créditos 188

Gracias : 11

http://www.universomaker.net/

Volver arriba Ir abajo

RPG Maker XP Re: Scene_Equip modificado

Mensaje por Contenido patrocinado Hoy a las 15:36


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Scripts

Permisos de este foro:
No puedes responder a temas en este foro.