#==============================================================================
# Window_Help
#------------------------------------------------------------------------------
# Esta é a classe da janela responsável pela descrição dos items e das
# habilidades, assim como do status dos heróis.
#
# Uma duplicação desta janela acontece, para que a original não seja afetada. Por Angel Ivy-chan.
#==============================================================================
class Window_Help_Reliquias < Window_Base
#--------------------------------------------------------------------------
# Inicialização do objeto
#--------------------------------------------------------------------------
def initialize(x,y)
super(x, y, 544, WLH + 32)
end
#--------------------------------------------------------------------------
# Configuração do texto
# text : janela da string
# align : alinhamento (0: esquerda 1: centro 2: direita)
#--------------------------------------------------------------------------
def set_text(text, align = 0)
if text != @text or align != @align
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, self.width - 40, WLH, text, align)
@text = text
@align = align
end
end
end
As janelas:
Troque a Window_Item por esta:
Código:
#==============================================================================
# Window_Item
#------------------------------------------------------------------------------
# Janela responsável pela exibição dos items em posse.
#
# Pequena modificação por Angel Ivy-chan, para adaptar aos itens raros, que não aparecerão na janela.
#==============================================================================
class Window_Item < Window_Selectable
#--------------------------------------------------------------------------
# Inicialização do objeto
# x : coordenada X da janela
# y : coordenada Y da janela
# width : largura da janela
# height : altura da janela
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super(x, y, width, height)
@column_max = 2
self.index = 0
refresh
end
#--------------------------------------------------------------------------
# Aquisição das informações dos itens
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# Items a serem inclusos na lista
# item : item
#--------------------------------------------------------------------------
def include?(item)
return false if item == nil
if item.note.include?("rare")
return false
end
if $game_temp.in_battle
return false unless item.is_a?(RPG::Item)
end
return true
end
#--------------------------------------------------------------------------
# Utems de uso possível
# item : item
#--------------------------------------------------------------------------
def enable?(item)
return $game_party.item_can_use?(item)
end
#--------------------------------------------------------------------------
# Atualização
#--------------------------------------------------------------------------
def refresh
@data = []
for item in $game_party.items
next unless include?(item)
@data.push(item)
if item.is_a?(RPG::Item) and item.id == $game_party.last_item_id
self.index = @data.size - 1
end
end
@data.push(nil) if include?(nil)
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# Desenho dos items
# index : número de items
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index]
if item != nil
number = $game_party.item_number(item)
enabled = enable?(item)
rect.width -= 4
draw_item_name(item, rect.x, rect.y, enabled)
self.contents.draw_text(rect, sprintf(":%2d", number), 2)
end
end
#--------------------------------------------------------------------------
# Atualização do texto na janela de ajuda
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(item == nil ? "" : item.description)
end
end
E adicione esta aqui, acima do Main.
Código:
#==============================================================================
# Window_Reliquias
#------------------------------------------------------------------------------
# Janela responsável pela exibição dos items especiais em posse.
# Modificação por Angel Ivy-chan.
# Para adicionar um item especial, no dito "histórico" do item, escreva "rare", sem as aspas. Ele será apagado da Window_Item, caso tenha pego a modificação da mesma, e adicionado a esta janela.
#==============================================================================
class Window_Reliquias < Window_Selectable
#--------------------------------------------------------------------------
# Inicialização do objeto
# x : coordenada X da janela
# y : coordenada Y da janela
# width : largura da janela
# height : altura da janela
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super(x, y, width, height)
@column_max = 1
self.index = 0
refresh
end
#--------------------------------------------------------------------------
# Aquisição das informações dos itens
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# Items a serem inclusos na lista
# item : item
#--------------------------------------------------------------------------
def include?(item)
return false if item == nil
if item.note.include?("rare")
return true
else
return false
end
end
#--------------------------------------------------------------------------
# Utems de uso possível
# item : item
#--------------------------------------------------------------------------
def enable?(item)
return $game_party.item_can_use?(item)
end
#--------------------------------------------------------------------------
# Atualização
#--------------------------------------------------------------------------
def refresh
@data = []
for item in $game_party.items
next unless include?(item)
@data.push(item)
if item.is_a?(RPG::Item) and item.id == $game_party.last_item_id
self.index = @data.size - 1
end
end
@data.push(nil) if include?(nil)
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# Desenho dos items
# index : número de items
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index]
if item != nil
number = $game_party.item_number(item)
enabled = enable?(item)
rect.width -= 4
draw_item_name(item, rect.x, rect.y, enabled)
self.contents.draw_text(rect, sprintf(":%2d", number), 2)
end
end
#--------------------------------------------------------------------------
# Atualização do texto na janela de ajuda
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(item == nil ? "" : item.description)
end
end
Código:
#==============================================================================
# Scene_Relíquias
#
# Esta Scene gerencia o Menu dos Itens raros.
# Apenas aparecerá na janela, os ítens com o comentário "rare", no Histórico.
#==============================================================================
class Scene_Reliquias < Scene_Base
#--------------------------------------------------------------------------
# Inicialização do processo
#--------------------------------------------------------------------------
def start
super
create_menu_background
@viewport = Viewport.new(0, 0, 544, 416)
@help_window = Window_Help_Reliquias.new(0,360)
@help_window.viewport = @viewport
@item_window = Window_Reliquias.new(0, 0, 200, 360)
@item_window.viewport = @viewport
@item_window.help_window = @help_window
@item_window.active = false
@target_window = Window_MenuStatus.new(0, 0)
hide_target_window
end
#--------------------------------------------------------------------------
# Fim do processo
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@viewport.dispose
@help_window.dispose
@item_window.dispose
@target_window.dispose
end
#--------------------------------------------------------------------------
# Retornar à tela original
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Menu.new(0)
end
#--------------------------------------------------------------------------
# Atualização da tela
#--------------------------------------------------------------------------
def update
super
update_menu_background
@help_window.update
@item_window.update
@target_window.update
if @item_window.active
update_item_selection
elsif @target_window.active
update_target_selection
end
end
#--------------------------------------------------------------------------
# Atualização da seleção de items
#--------------------------------------------------------------------------
def update_item_selection
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
@item = @item_window.item
if @item != nil
$game_party.last_item_id = @item.id
end
if $game_party.item_can_use?(@item)
Sound.play_decision
else
Sound.play_buzzer
end
end
end
#--------------------------------------------------------------------------
# Ocultar janela de alvo
#--------------------------------------------------------------------------
def hide_target_window
@item_window.active = true
@target_window.visible = false
@target_window.active = false
@viewport.rect.set(0, 0, 544, 416)
@viewport.ox = 0
end
end
Na verdade, eu nunca testei isso... Vou passar um dado improvisado:
Pode colocar isto:
Código:
Condição: Script: $game_party.members[0].id == *id do personagem*
Forçar Ação Tática, Personagem 1, o que for.
Exceção:
Condição: Script: $game_party.members[1].id == *id do personagem*
Forçar Ação Tática, Personagem 2, o que for.
Exceção:
Condição: Script: $game_party.members[2].id == *id do personagem*
Forçar Ação Tática, Personagem 3, o que for.
Exceção:
Condição: Script: $game_party.members[3].id == *id do personagem*
Forçar Ação Tática, Personagem 4, o que for.
Exceção
*Faça o que for também. No caso, não precisa chamar uma Forçar Ação, pois sabemos que se não está entre os quatro membros, não está no grupo, neste caso, então não precisa chamar ele.*
FIM
FIM
FIM
FIM
GRande problema pra mim. Eu estou tentando criar um sistema de trransformação (no caso, por eventos, usando comandos dos scripts que já são do sistema do RM).
Meu problema é descobrir como posso trocar um personagem por outro, ao invés de simplesmente retirar um e adicionar outro.
Se tivesse um jeito de forçar a ordem do personagem adicionado, seria o suficiente, acho. O que eu achei que poderia usar até agora são os comandos:
$game_actors[id].
$game_party.actors[pos].
Código:
def remove_actor(actor_id)
# Delete actor
@actors.delete($game_actors[actor_id])
Código:
# Get actor
actor = $game_actors[actor_id]
# If the party has less than 4 members and this actor is not in the party
if @actors.size < 4 and not @actors.include?(actor)
# Add actor
@actors.push(actor)
Nota: eu estou usando o RMXP porque no momento, eu simplesmente não posso usar o VX de jeito nenhum pro meu projeto.