Maker Palace

¡El Reino del RpgMaker y del Ocio!
 
ÍndiceBuscarGrupos de UsuariosScriptsRecursosTutorialesPalaceJuegosPalaceWikiFAQRegistrarseConectarse
Conectarse
Nombre de Usuario:
Contraseña:
Entrar automáticamente en cada visita: 
:: Recuperar mi contraseña
Temas similares
Buscar
 
 

Resultados por:
 
Rechercher Búsqueda avanzada
Últimos temas
» Dando una vuelta por acá
por LinkLuis55 Dom Ago 20, 2017 2:56 pm

» Heroes del Crimen 2 DEMO
por jasuso Mar Ago 01, 2017 12:04 am

» The Legend of Celestia II: A World of Twilight Shadows Demo
por Jlopez_96 Vie Jul 28, 2017 6:20 pm

» Screenshot del nuevo KUnits XP oon menú
por kyonides-arkanthos Sáb Jul 15, 2017 1:14 am

» The Legend of Celestia: Four Cristals
por Jlopez_96 Mar Abr 25, 2017 4:59 pm

» [VXAce] Burando Doragon
por gantzer49 Dom Abr 23, 2017 7:43 pm

» Que se cuece por estos lares?
por Frikilangelo Jue Mar 23, 2017 8:10 am

Recomendados
RPG en RPG Maker
La importancia de un Backup
Que requiere un sistema de Batalla para ser exitoso
9 Minutos de Juegos por fans
Guía de Subforos para Tontos de Maker Palace
Indice de Scripts Locales XP
Falcao Pearl ABS Liquid
¿Quién está en línea?
En total hay 11 usuarios en línea: 0 Registrados, 0 Ocultos y 11 Invitados :: 1 Motor de búsqueda

Ninguno

La mayor cantidad de usuarios en línea fue 179 el Mar Ago 30, 2011 10:06 pm.
MiniChat
Mejores posteadores
Raiden (3346)
 
DaviX (2740)
 
Frikilangelo (2461)
 
SagahonArturo (1806)
 
Falcao (1775)
 
kyonides-arkanthos (1766)
 
Mur-mai-der (1755)
 
Ares (1613)
 
LinkLuis55 (1556)
 
Webmaster24 (1354)
 
Afiliados
Crear foro Mundo Maker Foro de anime y RM2k3/XP/VX Computer mix
Flag Counter
free counters
Visitas


Comparte | 
 

 Inventario estilo diablo

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
Raiden
Admin
Admin
avatar

Cantidad de envíos : 3346
Miembro desde : 01/03/2010
Edad : 24
Sexo : Masculino

Maker : RMXP

Logros MP :


MensajeTema: Inventario estilo diablo   Miér Abr 06, 2011 7:19 pm

Hola makeradictos hoy les trigo un script con el que me acabo de encontrar, aun no lo he probado, pero bueno lo que hace es colocar un inventario estilo diablo

Spoiler:
 

Código:

#==========================================================================#====
#  Sistema de Inventário Estilo Mu e Diablo 2.0
#  ou Diablo Waypoint, como muitos preferem dizer...
#------------------------------------------------------------------------------
#  Criado por DarkSchneider
#  Adaptado por Raphael Nunes
#------------------------------------------------------------------------------
=begin
  O script cria um menu de itens de slots, semelhantes ao que vemos em
 jogos como Diablo, Mu, Dungeon Siege e assim vai...
Ótimo para quem está fazendo um game de ABS, e quer que seu inventário seja
limitado...

Ai vocíª deve estar se perguntando... O que esse palhaço fez?

Ai eu respondo:

Esse palhaço (eu) adaptei o script para funcionar em qualquer script de menu,
seja ele complexo ou não, seja o jogo online ou não...Alem de traduzir certas coisas
e adicionar algumas coisas que faziam o script dar incompatibilidade com o SDK...


Do que ele prescisa: Apenas que cada Character tenha um Battlers com o mesmo nome, se
o character se chamar Zé_Peneira, o Battler tambem deve se chamar Zé_Peneira...

O resto...Bem...É o resto... ^^

Podem acreditar...É um ótimo script...

Caso queiram mudar o tamanho dos slots dos itens, bem,,,Melhor tirar o cavalinho
da chuva, pois para fazer isso, será nescessário modificar todos os cáuculos do
sistema...

Para usar, apenas coloque o acima do Main e acima tambem do sue menu...
E pronto...

PS: Seu menu não pode modificar o Scene_Item...

=end

#==============================================================================

class Scene_Item
  def initialize(actor_index = 0)
    @actor_index = actor_index
  end
 
  def main
    # Make help window, item window
    s1 = "Usar"
    s2 = "Mover"
    s3 = "jogar"
    @command_window = Window_Command.new(193, [s1, s2 , s3])
    @command_window.y = 64
    @help_window = Window_Help.new
    @grid = Window_Grid.new(@actor_index)
    @grid.active = false
    # Associate help window
    @grid.help_window = @help_window
    # Make target window (set to invisible / inactive)
    @target_window = Window_Target.new
    @target_window.visible = false
    @target_window.active = false
    @window_pc = Window_Base.new(0,192,193,287)
    @window_pc.contents = Bitmap.new(161,255)
    @window_pc.draw_actor_name($game_party.actors[@actor_index], 10, 0)
    @window_pc.draw_actor_picture($game_party.actors[@actor_index], 80, 250)
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    @cursor_icon.dispose if @cursor_icon != nil
    # Dispose of windows
    @command_window.dispose
    @help_window.dispose
    #@item_window.dispose
    @target_window.dispose
    @grid.dispose
    @window_pc.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update windows
    @command_window.update
    @help_window.update
    @target_window.update
    @grid.update
    if @command_window.active
      update_command
      return
    end
    # If item window is active: call update_item
    if @grid.active
      case @grid.mode
      when 0
        update_usa
      when 1
        @cursor_icon = Cursor_Icon.new if @cursor_icon == nil
        @cursor_icon.visible = false
        update_muovi
      when 2
        update_lascia
      when 3
        @cursor_icon.update
        update_muovi2
      end
      return
    end
    # If target window is active: call update_target
    if @target_window.active
      update_target
      return
    end
  end
 
  def update_command
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      $scene = Scene_Menu.new(0)
    return
  end
    if Input.trigger?(Input::C)
      # Branch by command window cursor position
      case @command_window.index
      when 0  # use
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @grid.active = true
        @grid.set = 0
        @grid.mode = @command_window.index
      when 1  # move
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @grid.active = true
        @grid.set = 0
        @grid.mode = @command_window.index
      when 2  # drop
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @grid.active = true
        @grid.set = 0
        @grid.mode = @command_window.index
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when item window is active)
  #--------------------------------------------------------------------------
  def update_usa
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      @command_window.active = true
      @grid.active = false
      @grid.set = - 1
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Get currently selected data on the item window
      @item = @grid.item
      # If not a use item
      unless @item.is_a?(RPG::Item)
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # If it can't be used
      unless $game_party.item_can_use?(@item.id)
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Play decision SE
      $game_system.se_play($data_system.decision_se)
      # If effect scope is an ally
      if @item.scope >= 3
        # Activate target window
        @grid.active = false
        #@target_window.x = (@item_window.index + 1) % 2 * 304
        @target_window.visible = true
        @target_window.active = true
        # Set cursor position to effect scope (single / all)
        if @item.scope == 4 || @item.scope == 6
          @target_window.index = -1
        else
          @target_window.index = 0
        end
      # If effect scope is other than an ally
      else
        # If command event ID is valid
        if @item.common_event_id > 0
          # Command event call reservation
          $game_temp.common_event_id = @item.common_event_id
          # Play item use SE
          $game_system.se_play(@item.menu_se)
          # If consumable
          if @item.consumable
            # Decrease used items by 1
            $game_party.lose_item(@item.id, 1, false)
            # Draw item window item
            @grid.delete_item
          end
          # Switch to map screen
          $scene = Scene_Map.new
          return
        end
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when target window is active)
  #--------------------------------------------------------------------------
  def update_target
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # If unable to use because items ran out
      unless $game_party.item_can_use?(@item.id)
        # Remake item window contents
        @grid.refresh
      end
      # Erase target window
      @grid.active = true
      @target_window.visible = false
      @target_window.active = false
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # If items are used up
      if @grid.item_del?
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # If target is all
      if @target_window.index == -1
        # Apply item effects to entire party
        used = false
        for i in $game_party.actors
          used |= i.item_effect(@item)
        end
      end
      # If single target
      if @target_window.index >= 0
        # Apply item use effects to target actor
        target = $game_party.actors[@target_window.index]
        used = target.item_effect(@item)
      end
      # If an item was used
      if used
        # Play item use SE
        $game_system.se_play(@item.menu_se)
        # If consumable
        if @item.consumable
          # Decrease used items by 1
          $game_party.lose_item(@item.id, 1, false)
          # Redraw item window item
          @grid.delete_item
        end
        # Remake target window contents
        @target_window.refresh
        # If all party members are dead
        if $game_party.all_dead?
          # Switch to game over screen
          $scene = Scene_Gameover.new
          return
        end
        # If common event ID is valid
        if @item.common_event_id > 0
          # Common event call reservation
          $game_temp.common_event_id = @item.common_event_id
          # Switch to map screen
          $scene = Scene_Map.new
          return
        end
      end
      # If item wasn't used
      unless used
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
      end
      return
    end
  end
 
  def update_muovi
 
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      @command_window.active = true
      @grid.active = false
      @grid.set = - 1
      return
    end
 
    if Input.trigger?(Input::C)
      if @grid.item != nil
      @grid.get_item
      bitmap = Bitmap.new(32,32)
      x = 4 + (@grid.cursor_rect.width == 32 ? 0 : 18)
      y = 4 + (@grid.cursor_rect.height == 32 ? 0 : 32)
      bitmap.blt(0,0,@grid.contents,Rect.new(@grid.cursor_rect.x + x,
      @grid.cursor_rect.y + y,@grid.cursor_rect.width,@grid.cursor_rect.height))

      @cursor_icon.refresh(bitmap, @grid.item_saved[1])
      @grid.cursor_rect.width = @cursor_icon.bitmap.width
      @grid.cursor_rect.height = @cursor_icon.bitmap.height
      @cursor_icon.x = @grid.cursor_rect.x + @grid.x + 16
      @cursor_icon.y = @grid.cursor_rect.y + @grid.y + 16
      @cursor_icon.visible = true
      @grid.delete_item

      @grid.mode = 3
      end
      return
    end
  end
 
  def update_lascia
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      @command_window.active = true
      @grid.active = false
      @grid.set = - 1
      return
    end
    if Input.trigger?(Input::C)
      if @grid.item != nil
        @grid.delete_item
      end
      return
    end
  end
 
  def update_muovi2
    @grid.cursor_rect.width = @cursor_icon.bitmap.width
    @grid.cursor_rect.height = @cursor_icon.bitmap.height
    @cursor_icon.x = @grid.cursor_rect.x + @grid.x + 16
    @cursor_icon.y = @grid.cursor_rect.y + @grid.y + 16
    if @grid.empty?
      @cursor_icon.blink_on
      @cursor_icon.tone.set(0,0,0,0)
    else
      @cursor_icon.blink_off
      @cursor_icon.tone.set(0,0,0,255)
    end
 
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      @grid.redraw_item(false)
      @grid.mode = 1
      return
    end
    if Input.trigger?(Input::C)
      if @grid.empty?
        @grid.redraw_item
        @cursor_icon.visible = false
        @grid.mode = 1
      end
      return
    end
  end
end


class Window_Selectable < Window_Base
  alias old_initialize initialize
  def initialize(x, y, width, height)
    old_initialize(x, y, width, height)
    if self.is_a?(Window_Grid)
      @x = 0
      @y = 0
    end
  end
 
  alias old_update update
  def update
    if !self.is_a?(Window_Grid)
      old_update
      return
    end
    super
    item = $game_party.actors[@actor_index].item_grid
    # If cursor is movable
    if self.active and @item_max > 0 and @x >= 0
      # If pressing down on the directional buttons
      if Input.repeat?(Input::DOWN)
        @y = -1 if @y == item.size - (self.cursor_rect.height == 96 ? 3 : 1)
        @y += 2 if item[@y][@x][1] == "w" or item[@y][@x][1] == "a"
        if item[@y + 1][@x][1] == "r" and item[@y + 1][@x - 1][1] == "a"
          @x -= 1
        end
        @y += 1
        $game_system.se_play($data_system.cursor_se)
      end
      # If the up directional button was pressed
      if Input.repeat?(Input::UP)
        @y = item.size if @y - 1 == -1
        @y -= 2 if item[@y - 1][@x][1] == "e" or item[@y - 1][@x][1] == "r"
        @x -= 1 if item[@y - 1][@x - 1][1] == "a"
        @y -= 1
     
        $game_system.se_play($data_system.cursor_se)
      end
      # If the right directional button was pressed
      if Input.repeat?(Input::RIGHT)
        if @x + (self.cursor_rect.width == 64 ? 2 : 1) == item[@y].size
          @x = 0
          @y -= 1 if item[@y - 1][@x][1] == "a"
          @y -= 2 if item[@y - 2][@x][1] == "a"
        else
        @x += 1 if item[@y][@x][1] == "a"
        if item[@y][@x + 1][1] == "r"
          @y -= 1 if item[@y - 1][@x + 1][1] == "a"
          @y -= 2 if item[@y - 2][@x + 1][1] == "a"
        end
        if item[@y][@x + 1][1] == "e"
          @y -= 1
          @y -= 1 if item[@y - 1][@x + 1][1] == "w"
        end
          @x += 1
        end
        $game_system.se_play($data_system.cursor_se)
      end
      # If the left directional button was pressed
      if Input.repeat?(Input::LEFT)
        @x = item[@y].size if @x - 1 == -1
        if item[@y][@x - 1][1] == "r"
          @x -= 1
          @y -= 1 if item[@y - 1][@x - 1][1] == "a"
          @y -= 2 if item[@y - 2][@x - 1][1] == "a"
        end
        if item[@y][@x - 1][1] == "e"
          @y -= 1
          @y -= 1 if item[@y - 1][@x - 1][1] == "w"
        end
        @x -= 1
        $game_system.se_play($data_system.cursor_se)
      end
    end
    # Update help text (update_help is defined by the subclasses)
    if self.active and @help_window != nil
      update_help
    end
    # Update cursor rectangle
    update_cursor_rect
  end
end

class Window_Grid < Window_Selectable
 
  attr_accessor :mode
  attr_reader :item_saved
 
  def initialize(actor_index)
    super(192,64,448,416)
    self.contents = Bitmap.new(width - 32, height - 32) #icone oggetti
    self.opacity = 0
    @window = Window_Base.new(x , y , width, height) #griglia bianca
    @window.contents = Bitmap.new(width - 32, height - 32)
    @window.z = self.z - 4
    @grid_color = Sprite.new    #colori oggetti
    @grid_color.bitmap = Bitmap.new(width - 32, height - 32)
    @grid_color.x = self.x + 16
    @grid_color.y = self.y + 16
    @grid_color.z = @window.z + 2
    @actor_index = actor_index
    @mode = 0
    @mini_help = Mini_Help.new
    self.set = -1
    n = self.contents.width / 32
    m = self.contents.height / 32
    @column_max = n
    draw_grid
    refresh
  end
 
  def draw_grid
    @window.contents.fill_rect(0, 0, width - 32, height - 32, Color.new(255,255,255))
    i = 0
    color = Color.new(0,0,0)
    while i < self.contents.height
      draw_line(0, i, self.contents.width, i, color)
      i += 32
    end
    i = 0
    while i < self.contents.width
      draw_line(i, 0, i, self.contents.width, color)
      i += 32
    end
  end
 
  def draw_line(sx, sy, ex, ey, color)
    rad = Math.atan2(ey-sy, ex-sx)
    dx = Math.cos(rad)
    dy = Math.sin(rad)
    while (sx - ex).abs > 1 || (sy - ey).abs > 1
      sx += dx
      sy += dy
      @window.contents.set_pixel(sx, sy, color)
    end
  end
 
  def refresh
    @item_max = 0
    item = $game_party.actors[@actor_index].item_grid
    for i in 0..item.size - 1
      for j in 0..item[i].size - 1
        if item[i][j][0]!= 0 and item[i][j][1] != "r" and item[i][j][1] != "e"
          @item_max += 1
        end
      end
    end
 
    for i in 0..item.size - 1
      for j in 0..item[i].size - 1
        draw_item(item[i][j][0], item[i][j][1], i , j)
      end
    end
  end
 
  def update_cursor_rect
    # If cursor position is less than 0
    if @x < 0
      self.cursor_rect.empty
      return
    end
    # Calculate cursor width
    case $game_party.actors[@actor_index].item_grid[@y][@x][1]
    when "i"
      cursor_width = 32
      cursor_height = 32
    when "w"
      cursor_width = 32
      cursor_height = 96
    when "a"
      cursor_width = 64
      cursor_height = 96
    else
      cursor_width = 32
      cursor_height = 32
    end
    # Calculate cursor coordinates
    x = @x * 32
    y = @y * 32
    # Update cursor rectangle
    self.cursor_rect.set(x, y, cursor_width, cursor_height)
  end
 
  def delete_item
    case $game_party.actors[@actor_index].item_grid[@y][@x][1]
    when "i"
      @grid_color.bitmap.fill_rect(@x*32+1, @y*32+1, 31, 31, Color.new(0,0,0,0))
      self.contents.fill_rect(@x*32, @y*32, 32, 32, Color.new(0,0,0,0))
      $game_party.actors[@actor_index].item_grid[@y][@x][0] = 0
      $game_party.actors[@actor_index].item_grid[@y][@x][1] = ""
    when "w"
      @grid_color.bitmap.fill_rect(@x*32+1, @y*32+1, 31, 95, Color.new(0,0,0,0))
      self.contents.fill_rect(@x*32, @y*32 + 4 + 32, 32, 32, Color.new(0,0,0,0))
      $game_party.actors[@actor_index].item_grid[@y][@x][0] = 0
      $game_party.actors[@actor_index].item_grid[@y][@x][1] = ""
      $game_party.actors[@actor_index].item_grid[@y + 1][@x][0] = 0
      $game_party.actors[@actor_index].item_grid[@y + 1][@x][1] = ""
      $game_party.actors[@actor_index].item_grid[@y + 2][@x][0] = 0
      $game_party.actors[@actor_index].item_grid[@y + 2][@x][1] = ""
    when "a"
      @grid_color.bitmap.fill_rect(@x*32+1, @y*32+1, 63, 95, Color.new(0,0,0,0))
      self.contents.fill_rect(@x*32 + 18, @y*32 + 4 + 32, 32, 32, Color.new(0,0,0,0))
      $game_party.actors[@actor_index].item_grid[@y][@x][0] = 0
      $game_party.actors[@actor_index].item_grid[@y][@x][1] = ""
      $game_party.actors[@actor_index].item_grid[@y + 1][@x][0] = 0
      $game_party.actors[@actor_index].item_grid[@y + 1][@x][1] = ""
      $game_party.actors[@actor_index].item_grid[@y + 2][@x][0] = 0
      $game_party.actors[@actor_index].item_grid[@y + 2][@x][1] = ""
      $game_party.actors[@actor_index].item_grid[@y][@x + 1][0] = 0
      $game_party.actors[@actor_index].item_grid[@y][@x + 1][1] = ""
      $game_party.actors[@actor_index].item_grid[@y + 1][@x + 1][0] = 0
      $game_party.actors[@actor_index].item_grid[@y + 1][@x + 1][1] = ""
      $game_party.actors[@actor_index].item_grid[@y + 2][@x + 1][0] = 0
      $game_party.actors[@actor_index].item_grid[@y + 2][@x + 1][1] = ""
    end
  end
 
  def item
    i = $game_party.actors[@actor_index].item_grid[@y][@x][0]
    case $game_party.actors[@actor_index].item_grid[@y][@x][1]
    when "i"
      return $data_items[i]
    when "w"
      return $data_weapons[i]
    when "a"
      return $data_armors[i]
    else return nil
    end
  end
 
  def item_del?
    if $game_party.actors[@actor_index].item_grid[@y][@x][0] == 0
      # Unusable
      return true
    else
      return false
    end
  end
 
  def dispose
    super
    @window.dispose
    @grid_color.dispose
    @mini_help.dispose
  end
 
  def update_help
    @mini_help.contents.font.color = (($game_party.item_can_use?(item.id) and item.is_a?(RPG::Item))? normal_color : disabled_color)
    @help_window.set_text(item == nil ? "" : item.description)
    @mini_help.set_text(item == nil ? "" : item.name)
    @mini_help.visible = false if item == nil
    @mini_help.x = self.cursor_rect.x +  self.cursor_rect.width + 192 +
    (self.contents.width - self.cursor_rect.x - self.cursor_rect.width < @mini_help.width ? -@mini_help.width : 18)
    @mini_help.y = self.cursor_rect.y + self.cursor_rect.height + 64 +
    (self.contents.height - self.cursor_rect.y - self.cursor_rect.height < @mini_help.height ? -@mini_help.height : 18)
  end
 
  def get_item
    @item_saved = [$game_party.actors[@actor_index].item_grid[@y][@x][0],
    $game_party.actors[@actor_index].item_grid[@y][@x][1], @x, @y]
  end
 
  def redraw_item(f = true)
    if f
      x = 4 + (@x * 32)
      y = @y * 32
    else
      x = 4 + (@item_saved[2] * 32)
      y = @item_saved[3] * 32
      tx = @x
      ty = @y
      @x = @item_saved[2]
      @y = @item_saved[3]
    end
    draw_item(@item_saved[0], @item_saved[1], @y , @x)
    case @item_saved[1]
    when "i"
      $game_party.actors[@actor_index].item_grid[@y][@x][0] = @item_saved[0]
      $game_party.actors[@actor_index].item_grid[@y][@x][1] = @item_saved[1]
    when "w"
      $game_party.actors[@actor_index].item_grid[@y][@x][0] = @item_saved[0]
      $game_party.actors[@actor_index].item_grid[@y][@x][1] = @item_saved[1]
      $game_party.actors[@actor_index].item_grid[@y + 1][@x][0] = @item_saved[0]
      $game_party.actors[@actor_index].item_grid[@y + 1][@x][1] = "e"
      $game_party.actors[@actor_index].item_grid[@y + 2][@x][0] = @item_saved[0]
      $game_party.actors[@actor_index].item_grid[@y + 2][@x][1] = "e"
    when "a"
      $game_party.actors[@actor_index].item_grid[@y][@x][0] = @item_saved[0]
      $game_party.actors[@actor_index].item_grid[@y][@x][1] = @item_saved[1]
      $game_party.actors[@actor_index].item_grid[@y + 1][@x][0] = @item_saved[0]
      $game_party.actors[@actor_index].item_grid[@y + 1][@x][1] = "r"
      $game_party.actors[@actor_index].item_grid[@y + 2][@x][0] = @item_saved[0]
      $game_party.actors[@actor_index].item_grid[@y + 2][@x][1] = "r"
      $game_party.actors[@actor_index].item_grid[@y][@x + 1][0] = @item_saved[0]
      $game_party.actors[@actor_index].item_grid[@y][@x + 1][1] = "r"
      $game_party.actors[@actor_index].item_grid[@y + 1][@x + 1][0] = @item_saved[0]
      $game_party.actors[@actor_index].item_grid[@y + 1][@x + 1][1] = "r"
      $game_party.actors[@actor_index].item_grid[@y + 2][@x + 1][0] = @item_saved[0]
      $game_party.actors[@actor_index].item_grid[@y + 2][@x + 1][1] = "r"
    end
    @x = tx if @x != tx and tx != nil
    @y = ty if @y != ty and ty != nil
  end
 
  def empty?
    case @item_saved[1]
    when "i"
      return true if $game_party.actors[@actor_index].item_grid[@y][@x][1] == ""
    when "w"
      if $game_party.actors[@actor_index].item_grid[@y][@x][1] == "" and
        $game_party.actors[@actor_index].item_grid[@y + 1][@x][1] == "" and
        $game_party.actors[@actor_index].item_grid[@y + 2][@x][1] == ""
   
      return true
    end
    when "a"
      if $game_party.actors[@actor_index].item_grid[@y][@x][1] == "" and
        $game_party.actors[@actor_index].item_grid[@y + 1][@x][1] == "" and
        $game_party.actors[@actor_index].item_grid[@y + 2][@x][1] == "" and
        $game_party.actors[@actor_index].item_grid[@y][@x + 1][1] == "" and
        $game_party.actors[@actor_index].item_grid[@y + 1][@x + 1][1] == "" and
        $game_party.actors[@actor_index].item_grid[@y + 2][@x + 1][1] == ""
   
        return true
      end
    end
    return false
  end
 
  def set=(set)
    @x = set
    @y = set
    @mini_help.visible = (set == 0 ? true : false)
  end

 
  def draw_item(item_id, type, i , j)
    if type == "i" and
      $game_party.item_can_use?($data_items[item_id].id)
      opacity = 255
    else
      opacity = 128
    end
     
    if item_id != 0
      case type
      when "i"
        x = 4 + (j * 32)
        y = i * 32
        bitmap = RPG::Cache.icon($data_items[item_id].icon_name)
        @grid_color.bitmap.fill_rect(j*32+1, i*32+1, 31, 31, Color.new(0,0,200))
        self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
      when "w"
        x = 4 + (j * 32)
        y = i * 32
        bitmap = RPG::Cache.icon($data_weapons[item_id].icon_name)
        @grid_color.bitmap.fill_rect(j*32+1, i*32+1, 31, 95, Color.new(200,0,0))
        self.contents.blt(x, y + 4 + 32, bitmap, Rect.new(0, 0, 24, 24), opacity)
      when "a"
        x = 4 + (j * 32)
        y = i * 32
        bitmap = RPG::Cache.icon($data_armors[item_id].icon_name)
        @grid_color.bitmap.fill_rect(j*32+1, i*32+1, 63, 95, Color.new(0,200,0))
        self.contents.blt(x + 18, y + 4 + 32, bitmap, Rect.new(0, 0, 24, 24), opacity)
      end
    end
  end
end

class Mini_Help < Window_Base
  alias old_initialize initialize
  def initialize
    super(0, 0, 180, 40)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.size = 14
    self.back_opacity = 170
    self.z = 102
    self.visible = false
  end
 
  def set_text(text, align = 1)
    # If at least one part of text and alignment differ from last time
    if text != @text or align != @align
      # Redraw text
      self.contents.clear
      #self.contents.font.color = normal_color
      self.contents.draw_text(4, -12, self.width - 40, 32, text, align)
      #self.width = self.contents.text_size(text).width
      @text = text
      @align = align
      @actor = nil
    end
    self.visible = true
  end
end

class Game_Actor < Game_Battler
  attr_accessor :item_grid
  alias old_initialize initialize
  def initialize(actor_id)
    old_initialize(actor_id)
    @item_grid = Array.new(12)
    for i in 0..@item_grid.size - 1
      @item_grid[i] = Array.new(13)
      for k in 0..@item_grid[i].size - 1
        @item_grid[i][k] = Array.new(2)
        @item_grid[i][k][0] = 0
        @item_grid[i][k][1] = ""
      end
    end
  end

end

class Game_Party
 
  def gain_item(item_id, n)
    if item_id > 0
      for k in 1..n
        for i in 0..self.actors.size - 1
        break if set_item(item_id, "i", i) == nil
        end
      end
    end
  end
 
  def gain_weapon(weapon_id, n)
    if weapon_id > 0
      for k in 1..n
        for i in 0..self.actors.size - 1
          break if set_item(weapon_id, "w", i) == nil
        end
      end
    end
  end
 
  def gain_armor(armor_id, n)
    if armor_id > 0
      for k in 1..n
        for i in 0..self.actors.size - 1
          break if set_item(armor_id, "a", i) == nil
        end
      end
    end
  end
 
  def lose_item(item_id, n, random = true)
    if random == true
      if item_id > 0
        for k in 1..n
          del_item(item_id, "i")
        end
      end
    end
    @items[item_id] = [[item_number(item_id) + -n, 0].max, 99].min
  end
 
  def lose_weapon(weapon_id, n, random = true)
    if random == true
      if weapon_id > 0
        for k in 1..n
          del_item(weapon_id, "w")
        end
      end
    end
    @weapons[weapon_id] = [[weapon_number(weapon_id) + -n, 0].max, 99].min
  end

  def lose_armor(armor_id, n, random = true)
    if random == true
      if armor_id > 0
        for k in 1..n
          del_item(armor_id, "a")
        end
      end
    end
    @armors[armor_id] = [[armor_number(armor_id) + -n, 0].max, 99].min
  end
 
  def set_item(item_id, type, i)
      for a in 0..self.actors[i].item_grid.size - 1
        for b in 0..self.actors[i].item_grid[a].size - 1
          if self.actors[i].item_grid[a][b][0] == 0
            case type
            when "i"
              self.actors[i].item_grid[a][b][0] = item_id
              self.actors[i].item_grid[a][b][1] = type
              @items[item_id] = [[item_number(item_id) + 1, 0].max, 99].min
              return
            when "w"
              if a < self.actors[i].item_grid.size - 2
              if self.actors[i].item_grid[a + 1][b][0] == 0 and
                self.actors[i].item_grid[a + 2][b][0] == 0

                self.actors[i].item_grid[a][b][0] = item_id
                self.actors[i].item_grid[a][b][1] = type
                self.actors[i].item_grid[a + 1][b][0] = item_id
                self.actors[i].item_grid[a + 1][b][1] = "e"
                self.actors[i].item_grid[a + 2][b][0] = item_id
                self.actors[i].item_grid[a + 2][b][1] = "e"
                @weapons[item_id] = [[weapon_number(item_id) + 1, 0].max, 99].min
                return
              end
              end
            when "a"
              if b < self.actors[i].item_grid[a].size - 1 and a < self.actors[i].item_grid.size - 2
              if self.actors[i].item_grid[a + 1][b][0] == 0 and self.actors[i].item_grid[a + 2][b][0] == 0 and
                self.actors[i].item_grid[a][b + 1][0] == 0 and
                self.actors[i].item_grid[a + 1][b + 1][0] == 0 and self.actors[i].item_grid[a + 2][b + 1][0] == 0
             
                self.actors[i].item_grid[a][b][0] = item_id
                self.actors[i].item_grid[a][b][1] = type
                self.actors[i].item_grid[a + 1][b][0] = item_id
                self.actors[i].item_grid[a + 1][b][1] = "r"
                self.actors[i].item_grid[a + 2][b][0] = item_id
                self.actors[i].item_grid[a + 2][b][1] = "r"
                self.actors[i].item_grid[a][b + 1][0] = item_id
                self.actors[i].item_grid[a][b + 1][1] = "r"
                self.actors[i].item_grid[a + 1][b + 1][0] = item_id
                self.actors[i].item_grid[a + 1][b + 1][1] = "r"
                self.actors[i].item_grid[a + 2][b + 1][0] = item_id
                self.actors[i].item_grid[a + 2][b + 1][1] = "r"
                @armors[item_id] = [[armor_number(item_id) + 1, 0].max, 99].min
                return
              end
              end
            end
          end
        end
      end
  end
 
  def del_item(item_id, type)
    for i in 0..self.actors.size - 1
      for a in 0..self.actors[i].item_grid.size - 1
        for b in 0..self.actors[i].item_grid[a].size - 1
          if self.actors[i].item_grid[a][b][0] == item_id and
            self.actors[i].item_grid[a][b][1] == type
         
            case type
            when "i"
              self.actors[i].item_grid[a][b][0] = 0
              self.actors[i].item_grid[a][b][1] = ""
              return
            when "w"
                self.actors[i].item_grid[a][b][0] = 0
                self.actors[i].item_grid[a][b][1] = ""
                self.actors[i].item_grid[a + 1][b][0] = 0
                self.actors[i].item_grid[a + 1][b][1] = ""
                self.actors[i].item_grid[a + 2][b][0] = 0
                self.actors[i].item_grid[a + 2][b][1] = ""
                return
            when "a"
                self.actors[i].item_grid[a][b][0] = 0
                self.actors[i].item_grid[a][b][1] = ""
                self.actors[i].item_grid[a + 1][b][0] = 0
                self.actors[i].item_grid[a + 1][b][1] = ""
                self.actors[i].item_grid[a + 2][b][0] = 0
                self.actors[i].item_grid[a + 2][b][1] = ""
                self.actors[i].item_grid[a][b + 1][0] = 0
                self.actors[i].item_grid[a][b + 1][1] = ""
                self.actors[i].item_grid[a + 1][b + 1][0] = 0
                self.actors[i].item_grid[a + 1][b + 1][1] = ""
                self.actors[i].item_grid[a + 2][b + 1][0] = 0
                self.actors[i].item_grid[a + 2][b + 1][1] = ""
                return
            end
          end
        end
      end
    end
  end
end


class Cursor_Icon < RPG::Sprite
  def initialize
    super
    @color = Color.new(255,255,0,150)
    @rect = Rect.new(0, 0, 24, 24)
  end
 
  def refresh(bitmap, item)
    case item
    when "i"
      x = 4
      y = 4
      width = 32
      height = 32
    when "w"
      x = 4
      y = 36
      width = 32
      height = 96
    when "a"
      x = 22
      y = 36
      width = 64
      height = 96
    end
    if self.bitmap == nil or (self.bitmap.width != width or self.bitmap.height != height)
      self.bitmap = Bitmap.new(width, height)
    else
      self.bitmap.clear
    end
    self.bitmap.fill_rect(0,0,width,height, @color)
    self.bitmap.blt(x, y , bitmap, @rect)
    self.z = 9999
  end
end

class Window_Base
  def draw_actor_picture(actor, x, y)
    bitmap = RPG::Cache.battler(actor.character_name, actor.character_hue)
    cw = bitmap.width
    ch = bitmap.height
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  end
end

class Scene_Menu
    def update_command
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to map screen
      $scene = Scene_Map.new
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # If command other than save or end game, and party members = 0
      if $game_party.actors.size == 0 and @command_window.index < 4
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Branch by command window cursor position
      case @command_window.index
      when 0  # item
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to item screen
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 1  # skill
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2  # equipment
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3  # status
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 4  # save
        # If saving is forbidden
        if $game_system.save_disabled
          # Play buzzer SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to save screen
        $scene = Scene_Save.new
      when 5  # end game
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to end game screen
        $scene = Scene_End.new
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when status window is active)
  #--------------------------------------------------------------------------
  def update_status
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Make command window active
      @command_window.active = true
      @status_window.active = false
      @status_window.index = -1
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Branch by command window cursor position
      case @command_window.index
      when 0
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Item.new(@status_window.index)
      when 1  # skill
        # If this actor's action limit is 2 or more
        if $game_party.actors[@status_window.index].restriction >= 2
          # Play buzzer SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to skill screen
        $scene = Scene_Skill.new(@status_window.index)
      when 2  # equipment
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to equipment screen
        $scene = Scene_Equip.new(@status_window.index)
      when 3  # status
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to status screen
        $scene = Scene_Status.new(@status_window.index)
      end
      return
    end
  end
end

_________________




"La amenaza de una espada, mantiene a la otra envainada."

Spoiler:
 
Volver arriba Ir abajo
Ver perfil de usuario
Ares
Super Mod
Super Mod
avatar

Cantidad de envíos : 1613
Miembro desde : 08/07/2009
Edad : 87
Localización : en el baño
Sexo : Masculino

Maker : RMXP

Logros MP :


MensajeTema: Re: Inventario estilo diablo   Miér Abr 06, 2011 8:58 pm

hace mucho cuando pensaba hacer un resident este scrip lo usque como loco y nunca lo encontre, por la similitud del maletin de res y este script...

_________________
Volver arriba Ir abajo
Ver perfil de usuario http://ares-games.blogspot.com/
Raiden
Admin
Admin
avatar

Cantidad de envíos : 3346
Miembro desde : 01/03/2010
Edad : 24
Sexo : Masculino

Maker : RMXP

Logros MP :


MensajeTema: Re: Inventario estilo diablo   Miér Abr 06, 2011 11:37 pm

Es verdad son muy similares, sabiendo un poco de scipting se podria modificar para que sea como el de la resident 4.

_________________




"La amenaza de una espada, mantiene a la otra envainada."

Spoiler:
 
Volver arriba Ir abajo
Ver perfil de usuario
DaviX
Admin.
Admin.
avatar

Cantidad de envíos : 2740
Miembro desde : 08/07/2009
Edad : 23
Localización : España
Sexo : Masculino

Maker : RMXP

Logros MP :


MensajeTema: Re: Inventario estilo diablo   Vie Abr 08, 2011 3:11 pm

Hoho! Para mi es uno de los mejores scripts de menu.

Recuerdo que cuando lo hacia servir no consegui editar el numero de cosas que podian caber. Yo queria que solo cabieran unas 10 cosas. Asi te da la possibilidad de descartar mas objetos y tomar decisiones xd

Tambien recuerdo que ese script venia con una demo de un Remake del Diablo en rmxp. Estaba bien trabajado

_________________
Soy puta y me gusta que me den por culo.
Hahhahaa

by:Ares
xDDDD
Volver arriba Ir abajo
Ver perfil de usuario
xDarkLinkx
Old Staff
Old Staff
avatar

Cantidad de envíos : 1310
Miembro desde : 27/03/2010
Edad : 22
Localización : Mexicali
Sexo : Masculino

Maker : RMXP

Logros MP :


MensajeTema: Re: Inventario estilo diablo   Jue Abr 28, 2011 5:25 am

heeey!!!
este menu esta de perlas!! Shocked
como dicen, me recuerda muchisimo al RE4 XD
ademas que se da una idea como los menus clasicos de los MMO´s (al momento de mover y todo eso XD)

SALU2
Volver arriba Ir abajo
Ver perfil de usuario http://humberto-max.deviantart.com/
Contenido patrocinado




MensajeTema: Re: Inventario estilo diablo   

Volver arriba Ir abajo
 
Inventario estilo diablo
Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.
 Temas similares
-
» El estilo de la Golondrina.
» El nuevo estilo aleman
» Como obtener las frutas del diablo
» Estilo de Espadas - Supa Supa no Mi
» [Videojuegos] ¿Diablo 3 o Borderlands 2?

Permisos de este foro:No puedes responder a temas en este foro.
Maker Palace :: RGSS Scripts :: Scripts Maker XP-
Cambiar a: