Arena RPG Maker
Olá, visitante!
Seja bem-vindo ao fórum Arena RPG Maker, caso queira aprender sobre criação de jogos, está no fórum certo. Esperamos que possa aprender tanto quanto possa nos ensinar aqui.

Atenciosamente,
Equipe Arena RPG Maker.
Arena RPG Maker
Olá, visitante!
Seja bem-vindo ao fórum Arena RPG Maker, caso queira aprender sobre criação de jogos, está no fórum certo. Esperamos que possa aprender tanto quanto possa nos ensinar aqui.

Atenciosamente,
Equipe Arena RPG Maker.
Arena RPG Maker

Estamos de volta o/ ... Ou não.Eu amo a -Dark
Doações para o fórum abertas, clique aqui e saiba mais.
Últimos assuntos
» Ainda temos gente aqui?
Cold Inventory By Actor EmptyQui 25 Nov 2021, 14:04 por Halt

» [Dúvida] Como tirar a porcentagem de esquiva
Cold Inventory By Actor EmptySex 19 Nov 2021, 17:14 por Halt

» Pokémon Genesis Online! (PGO)
Cold Inventory By Actor EmptyQua 05 Jul 2017, 18:08 por Lexar

» Tileset Converter to MV
Cold Inventory By Actor EmptySex 12 maio 2017, 14:07 por Douggi

» Pack Resources, Sprites e etc
Cold Inventory By Actor EmptyQua 23 Dez 2015, 12:30 por raydengv

» Download RPG Maker 2003 + RTP em português
Cold Inventory By Actor EmptyTer 22 Dez 2015, 11:14 por ::KimMax::

» Fantasy Art Online
Cold Inventory By Actor EmptyDom 18 Out 2015, 18:42 por daviih123

» Você vai ter medo do Nerve gear?
Cold Inventory By Actor EmptySáb 25 Jul 2015, 17:02 por Kirito-kun

» O Barato é louco
Cold Inventory By Actor EmptySáb 27 Jun 2015, 16:26 por Halt

» Download RPG Maker 2000 + RTP em português
Cold Inventory By Actor EmptyQui 21 maio 2015, 20:28 por Wismael


Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir para baixo  Mensagem [Página 1 de 1]

1Cold Inventory By Actor Empty Cold Inventory By Actor Sáb 29 Dez 2012, 18:26

DeadEnd

DeadEnd
Membro de Honra
Membro de Honra

Cold Inventory By Actor
por Cold Strong

Introdução

Script de inventário por actor.

Características


  • Permite que cada actor tenha seu próprio inventário.


Screenshots

Não possui efeitos visuais perceptíveis por Screenshots.

Como usar

Para instalá-lo, apenas cole o script acima do main.

Antes de adicionar um item, use o chamar script e digite:

Código:
$actor_index = posição do actor

Onde "posição do actor" deve ser o index de quem você quer que receba o item (de 0 até 3, no caso de uma party com 4 heróis).

Demo

Não necessita de Demo

Script

Código:
################################################################################
################################################################################
#################### Cold Inventory By Actor ###################################
################################################################################
################################################################################
#===============================================================================
# Criado por Cold Strong
#===============================================================================
# Script de inventário por ator
#===============================================================================
# O script deixa o inventário por ator, para que um ator ganhe um item
# antes de mudar os itens sempre lembre de colocar antes em chamar
# script e digite:
#                  $actor_index = posição do ator
# Ela começa no 0 e vai até 3, que no caso o máximo é 4 heróis em party.
# Lembre-se sempre de usar este código antes de mduar itens.
#===============================================================================

module Options
 
  #--------------------------------------------------------------------------
  # - Tipo de exibição da tela de item:
  #
  #    Coloque 0 para padrão e 1 para customizado
  #--------------------------------------------------------------------------
 
  SCENE_ITEMTYPE = 1
 
  #--------------------------------------------------------------------------
  # - Texto de ajuda para indentificar o herói
  #
  #  Use a tag [actor] nde quer que apareça o nome dele,
  #  Caso quiser que apareça uma janela como a do scene skill use
  #  apenas [actor] no texto.
  #--------------------------------------------------------------------------
 
  SCENE_ITEMTEXT = "[actor]"
 
  #--------------------------------------------------------------------------
  # - Alinhamento do texto de ajuda da tela do item.
  #
  #  0: esquerda, 1: centralizado, 2: direita
  #--------------------------------------------------------------------------
 
  SCENE_ITEMALIGN = 0
 
  ITEM_GO_ACTOR = 0
 
  $actor_index = 0 # Index de actor inicial é 0
end

#==============================================================================
# Game_Actor
#------------------------------------------------------------------------------
# Esta é a classe que trata dos Heróis na Batalha.
#==============================================================================

class Game_Actor < Game_Battler
 
 
  attr_reader  (:items, :weapons, :armors)
 
  #--------------------------------------------------------------------------
  # - Opções
  #
  #    actor_id : ID do Herói
  #--------------------------------------------------------------------------
 
  alias ivent_by_actor_setup setup
  def setup(actor_id)
    ivent_by_actor_setup(actor_id)
    @items = {}
    @weapons = {}
    @armors = {}
  end
end

#==============================================================================
# Game_Party
#------------------------------------------------------------------------------
# Esta classe engloba o Grupo de Heróis. Isto inclui informações sobre a
# quantidade de dinheiro e Itens. Se refere a $game_party para as instâncias
# nesta classe.
#==============================================================================

class Game_Party
 
  #--------------------------------------------------------------------------
  # - Selecionar o Número de Itens Possuídos
  #
  #    item_id : ID do Item
  #    index    : index do ator a ganhar o item (0..4)
  #--------------------------------------------------------------------------
 
  def item_number(item_id, index=nil)
    index ||= $actor_index
    # Se a quantidade estiver separada, se não, voltar a 0
    return $game_party.actors[index].items.include?(item_id) ? $game_party.actors[index].items[item_id] : 0
  end
 
  #--------------------------------------------------------------------------
  # - Selecionar o Número de Armas Possuídas
  #
  #    weapon_id : ID da Arma
  #    index    : index do ator a ganhar o item (0..4)
  #--------------------------------------------------------------------------
 
  def weapon_number(weapon_id, index=nil)
    index ||= $actor_index
    # Se a quantidade estiver separada, se não, voltar a 0
    return $game_party.actors[index].weapons.include?(weapon_id) ? $game_party.actors[index].weapons[weapon_id] : 0
  end
 
  #--------------------------------------------------------------------------
  # - Selecionar o Número de Armaduras Possuídas
  #
  #    armor_id : ID da Armadura
  #    index    : index do ator a ganhar o item (0..4)
  #--------------------------------------------------------------------------
 
  def armor_number(armor_id, index=nil)
    index ||= $actor_index
    # Se a quantidade estiver separada, se não, voltar a 0
    return $game_party.actors[index].armors.include?(armor_id) ? $game_party.actors[index].armors[armor_id] : 0
  end
 
  #--------------------------------------------------------------------------
  # - Ganhou ou Perder Itens
  #
  #    item_id : iD do Item
  #    n      : quantidade
  #    index    : index do ator a ganhar o item (0..4)
  #--------------------------------------------------------------------------
 
  def gain_item(item_id, n, index=nil)
    index ||= $actor_index
    # Atualizar a quantidade nesta divisão
    if item_id > 0
      $game_party.actors[index].items[item_id] = [[item_number(item_id, index) + n, 0].max, 99].min
    end
  end
 
  #--------------------------------------------------------------------------
  # - Ganhar ou Perder Armas
  #
  #    weapon_id : ID da Arma
  #    n        : quantidade]
  #    index    : index do ator a ganhar o item (0..4)
  #--------------------------------------------------------------------------
 
  def gain_weapon(weapon_id, n, index=nil)
    index ||= $actor_index
    # Atualizar a quantidade nesta divisão
    if weapon_id > 0
      $game_party.actors[index].weapons[weapon_id] = [[weapon_number(weapon_id, index) + n, 0].max, 99].min
    end
  end
 
  #--------------------------------------------------------------------------
  # - Ganhar ou Perder Armaduras
  #
  #    armor_id : ID da Armadura
  #    n        : quantidade
  #    index    : index do ator a ganhar o item (0..4)
  #--------------------------------------------------------------------------
 
  def gain_armor(armor_id, n, index=nil)
    index ||= $actor_index
    # Atualizar a quantidade nesta divisão
    if armor_id > 0
      $game_party.actors[index].armors[armor_id] = [[armor_number(armor_id, index) + n, 0].max, 99].min
    end
  end
end

#==============================================================================
# Scene_Battle
#------------------------------------------------------------------------------
# Esta classe processa a tela de Batalha.
#==============================================================================

class Scene_Battle
 
  #--------------------------------------------------------------------------
  # - Atualização do Frame
  #--------------------------------------------------------------------------
 
  alias ivent_by_actor_update update
  def update
    $actor_index = @actor_index
    unless @active_battler.nil?
      $actor_index = @active_battler.index
    end
    ivent_by_actor_update
  end
 
  #--------------------------------------------------------------------------
  # - Fim da Batalha
  #
  #    result : resultado (0=vitória, 1=derrota e 2=fuga)
  #--------------------------------------------------------------------------
 
  alias ivent_by_actor_battle_end battle_end
  def battle_end(result)
    $actor_index = Options::ITEM_GO_ACTOR
    ivent_by_actor_battle_end(result)
  end
end

#==============================================================================
# Scene_Menu
#------------------------------------------------------------------------------
# Esta classe processa a Tela de Menu
#==============================================================================

class Scene_Menu
 
  #--------------------------------------------------------------------------
  # - Atualização do Frame (Quando a janela de Comandos estiver Ativa)
  #--------------------------------------------------------------------------
 
  def update_command
    # Se o botão B for pressionado
    if Input.trigger?(Input::B)
      # Reproduzir SE de cancelamento
      $game_system.se_play($data_system.cancel_se)
      # Alternar para a tela do mapa
      $scene = Scene_Map.new
      return
    end
    # Se o botão C for pressionado
    if Input.trigger?(Input::C)
      # Se o comando for outro senão Salvar, Fim de Jogo e o número de Heróis no
      # Grupo for 0
      if $game_party.actors.size == 0 and @command_window.index < 4
        # Reproduzir SE de erro
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Ramificação por posição do cursor na janela de comandos
      case @command_window.index
      when 0  # Itens
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Ativar o status da janela
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 1  # Habilidades
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Ativar o status da janela
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2  # Equipamentos
        # Reproduzir SE de OK
        $game_system.se_play($data_system.decision_se)
        # Ativar o status da janela
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3  # Status
        # Reproduzir SE de OK
        $game_system.se_play($data_system.decision_se)
        # Ativar o status da janela
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 4  # Salvar
        # Se Salvar for proibido
        if $game_system.save_disabled
          # Reproduzir SE de erro
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # Reproduzir SE de OK
        $game_system.se_play($data_system.decision_se)
        # Alternar para a tela de save
        $scene = Scene_Save.new
      when 5  # Fim de Jogo
        # Reproduzir SE de OK
        $game_system.se_play($data_system.decision_se)
        # Alternar para a tela de Fim de Jogo
        $scene = Scene_End.new
      end
      return
    end
  end
 
  #--------------------------------------------------------------------------
  # - Atualização do Frame (Quando o status da Janela estiver Ativo)
  #--------------------------------------------------------------------------
 
  def update_status
    # Se o botão B for pressionado
    if Input.trigger?(Input::B)
      # Reproduzir SE de cancelamento
      $game_system.se_play($data_system.cancel_se)
      # Torna a janela de comandos ativa
      @command_window.active = true
      @status_window.active = false
      @status_window.index = -1
      return
    end
    # Se o botão C for pressionado
    if Input.trigger?(Input::C)
      # Ramificação por posição do cursor na janela de comandos
      case @command_window.index
      when 0 # Item
        # Reproduzir SE de OK
        $game_system.se_play($data_system.decision_se)
        $actor_index = @status_window.index
        # Alternar para a tela de Itens
        $scene = Scene_Item.new
      when 1 # Habilidades
        # Se o limite de ação deste Herói for de 2 ou mais
        if $game_party.actors[@status_window.index].restriction >= 2
          # Reproduzir SE de erro
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # Reproduzir SE de OK
        $game_system.se_play($data_system.decision_se)
        # Alternar para a tela de Habilidades
        $actor_index = @status_window.index
        $scene = Scene_Skill.new(@status_window.index)
      when 2  # Equipamento
        # Reproduzir SE de OK
        $game_system.se_play($data_system.decision_se)
        # Alternar para a tela de Equipamento
        $actor_index = @status_window.index
        $scene = Scene_Equip.new(@status_window.index)
      when 3  # Status
        # Reproduzir SE de OK
        $game_system.se_play($data_system.decision_se)
        # Alternar para a tela de Status
        $actor_index = @status_window.index
        $scene = Scene_Status.new(@status_window.index)
      end
      return
    end
  end
end

#==============================================================================
# Scene_Item
#------------------------------------------------------------------------------
# Esta classe processa a tela de Itens
#==============================================================================

class Scene_Item
 
  #--------------------------------------------------------------------------
  # - Atualização do Frame (Quando a janela de Itens estiver Ativa)
  #--------------------------------------------------------------------------
 
  alias ivent_by_actor_update_item update_item
  def update_item
    ivent_by_actor_update_item
    # Se o botão R for pressionado
    if Input.trigger?(Input::R)
      # Reproduzir SE de cursor
      $game_system.se_play($data_system.cursor_se)
      # O comando leva ao próximo Herói
      $actor_index += 1
      $actor_index %= $game_party.actors.size
      # Alternar para uma tela de Habilidades diferente
      @item_window.refresh
      return
    end
    # Se o botão L for pressionado
    if Input.trigger?(Input::L)
      # Reproduzir SE de cursor
      $game_system.se_play($data_system.cursor_se)
      # O comando leva ao próximo Herói
      $actor_index += $game_party.actors.size - 1
      $actor_index %= $game_party.actors.size
      # Alternar para uma tela de Habilidades diferente
      @item_window.refresh
      return
    end
  end
end

#==============================================================================
# Scene_Equip
#------------------------------------------------------------------------------
# Esta classe processa a tela de Equipamento
#==============================================================================

class Scene_Equip
 
  #--------------------------------------------------------------------------
  # - Inicialização dos Objetos
  #
  #    actor_index : Índice de Heróis
  #    equip_index : Índice de Equipamentos
  #--------------------------------------------------------------------------
 
  def initialize(actor_index = 0, equip_index = 0)
    $actor_index = @actor_index = actor_index
    @equip_index = equip_index
  end
end

if Options::SCENE_ITEMTYPE == 1
 
#==============================================================================
# Window_Item
#------------------------------------------------------------------------------
# Esta janela exibe os Itens possuídos na tela de Itens
#==============================================================================

class Window_Item < Window_Selectable
 
  #--------------------------------------------------------------------------
  # - Inicialização dos Objetos
  #--------------------------------------------------------------------------
 
  alias ivent_by_actor_init initialize
  def initialize
    @help_item = Window_Help.new
    @help_item.y = 64
    ivent_by_actor_init
    self.y += 64
    self.height -= 64
  end
 
  #--------------------------------------------------------------------------
  # - Atualização
  #--------------------------------------------------------------------------
 
  alias ivent_by_actor_refresh refresh
  def refresh
    text = Options::SCENE_ITEMTEXT.clone
    if text == "[actor]"
      @help_item.set_actor($game_party.actors[$actor_index])
    else
      text.gsub!("[actor]", $game_party.actors[$actor_index].name)
      @help_item.set_text(text, Options::SCENE_ITEMALIGN)
    end
    ivent_by_actor_refresh
  end
 
  #--------------------------------------------------------------------------
  # - Atualização do Frame
  #--------------------------------------------------------------------------
 
  def update
    super
    @help_item.update
  end
 
  #--------------------------------------------------------------------------
  # - Exibição
  #--------------------------------------------------------------------------
 
  def dispose
    super
    @help_item.dispose
  end
end

end

Perguntas Frequentes

Nenhuma

Créditos e Agradecimentos

  • Feito por Cold Strong

Ver o tópico anterior Ver o tópico seguinte Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos