1 Cold Inventory By Actor Sáb 29 Dez 2012, 18:26
DeadEnd
Membro de Honra
Cold Inventory By Actor
por Cold Strong
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