Introdução
O tela de seleção é bem simples de customizar , apesar de simples creio que dê para fazer algo legal
Sobre o Script
- O script modifica cores e layout em geral
-Chars Centralizados
-Coloca mais 2 slots totalizando 5 Slots (padrão é 3 )
Tudo por código não requer mudança gráfica na pasta System ,(UseChar.PNG) dispensa isso
Você pode modificar as cores por RGB , True ou False para ativar ou desativar o que bem entender
Antes de tudo faça um backup do seu projeto
Printscreen
Aqui está completa com fundo ,fase, sprite , barra, cor fundo dos nos nomes
Aqui está sem a barra do topo na seleção , ambas as barras de seleção são ativar ou desativar e podem ser trocadas de cor
Aqui sem o fundo nas faces
Aqui só os sprites , sem a face , sem fundo e sem a barra do topo
aqui só as faces , sem fundo e sem sprite
Aqui só modifiquei o RGB da cor do fundo dos nomes
Aqui alterei a cor do fundo ...bem como podem ver é custom ... dá para brincar
E modificar outras coisas porém fique a seu critério
MUDANÇAS
1- Vamos ao script [VS] Configs em # Quantidade máxima de heróis por conta coloque o número '5'
>>> MAX_ACTORS = 5
2- Procure pelo script de nome [VS]Window_UseChar e substitua ele todo por esse script abaixo
- Código:
#==============================================================================
# ** Window_UseChar
#------------------------------------------------------------------------------
# Esta classe lida com a janela de seleção de personagens.
#------------------------------------------------------------------------------
# Autor: Valentine Mod: Merim
#==============================================================================
# Configurações
SHOW_FACES = true # Mostrar faces
SHOW_SPRITES = true # Mostrar sprites
SHOW_SLOT_BACKGROUND = true # Mostrar fundo dos slots
SHOW_TOP_BAR = true # Mostrar barra superior
SHOW_BOTTOM_BAR = true # Mostrar barra inferior
SLOT_BG_COLOR = Color.new(100, 100, 15) # Cor de fundo dos slots
class Window_UseChar < Window_Base
SLOT_WIDTH = 96 # Tamanho do slot ajustado para 96x96 pixels
SLOT_HEIGHT = 96 # Tamanho do slot ajustado para 96x96 pixels
SLOT_MARGIN = 10
NAME_BG_COLOR = Color.new(128, 0, 128) # Cor de fundo ajustável para o nome
NAME_TEXT_COLOR = Color.new(255, 255, 255) # Cor do texto do nome em branco
BAR_COLOR = Color.new(128, 0, 128) # Cor da barra
def initialize
# Ajuste a largura e altura da janela para acomodar 5 slots
super(adjust_x, adjust_y, SLOT_WIDTH * Configs::MAX_ACTORS + SLOT_MARGIN * (Configs::MAX_ACTORS - 1) + 60, 240) # Ajuste na largura da janela
self.closable = true
self.title = Vocab::UseChar
@create_button = Button.new(self, self.width - 120, 180, Vocab::Create, 97) { create_actor } # Ajuste na posição do botão criar
@play_button = Button.new(self, self.width - 120, 180, Vocab::Play, 97) { use_actor } # Alinhar botão Entrar com o Criar
@delete_button = Button.new(self, 20, 180, Vocab::Delete, 97) { remove_actor }
@cursor_index = -1 # Índice inicial do cursor fora do slot
refresh
end
def adjust_x
Graphics.width / 2 - width / 2 # Centraliza a janela
end
def adjust_y
Graphics.height / 2 - height / 2
end
def hide_window
DataManager.back_login
end
def refresh
contents.clear
draw_slots if SHOW_SLOT_BACKGROUND # Exibir slots conforme configuração
Configs::MAX_ACTORS.times do |actor_id|
x = 110 * actor_id + 8
y = 40 # Desce as faces
if $network.actors.has_key?(actor_id)
draw_name_background(x, y - 35) # Desce os nomes
draw_text(x, y - 35, SLOT_WIDTH, line_height, $network.actors[actor_id].name, 1) # Ajuste na posição e cor do texto
draw_face($network.actors[actor_id].face_name, $network.actors[actor_id].face_index, x, y) if SHOW_FACES # Face ajustada para centralizar
draw_actor_graphic($network.actors[actor_id], x + SLOT_WIDTH / 2, y + SLOT_HEIGHT) if SHOW_SPRITES
else
draw_name_background(x, y - 35) # Desce os nomes
draw_text(x, y - 35, SLOT_WIDTH, line_height, Vocab::Empty, 1) # Ajuste na posição e cor do texto
end
end
draw_cursor_bar(110 * $actor_id + 8, 35) if SHOW_TOP_BAR # Ajuste da barra roxa para ficar centralizada
draw_bottom_bar(110 * $actor_id + 8, 137) if SHOW_BOTTOM_BAR # Barra inferior ajustada mais para cima
refresh_buttons
end
def draw_slots
Configs::MAX_ACTORS.times do |slot_id|
x = 110 * slot_id + SLOT_MARGIN
y = 40 # Desce as faces
draw_slot(x, y)
end
end
def draw_slot(x, y)
rect = Rect.new(x, y, SLOT_WIDTH, SLOT_HEIGHT)
contents.fill_rect(rect, SLOT_BG_COLOR) # Usa a cor configurada para o fundo do slot
end
def draw_name_background(x, y)
bg_rect = Rect.new(x, y, SLOT_WIDTH, line_height)
contents.fill_rect(bg_rect, NAME_BG_COLOR)
end
def draw_cursor_bar(x, y)
rect = Rect.new(x + 8, y, SLOT_WIDTH - 16, 5) # Ajuste da largura da barra roxa para 80 pixels e centralização
contents.fill_rect(rect, BAR_COLOR)
end
def draw_bottom_bar(x, y)
rect = Rect.new(x + 8, y, SLOT_WIDTH - 16, 5) # Ajuste da largura da barra inferior para 80 pixels e centralização
contents.fill_rect(rect, BAR_COLOR)
end
def cursor_color
BAR_COLOR
end
def normal_color
Color.new(200, 200, 200, 128) # Fundo cinza claro
end
def refresh_buttons
if $network.actors.has_key?($actor_id)
@create_button.visible = false
@play_button.visible = true
@delete_button.visible = true
else
@create_button.visible = true
@play_button.visible = false
@delete_button.visible = false
end
end
def remove_actor
$windows[:password].show($actor_id)
end
def create_actor
SceneManager.scene.change_background('Title3')
$windows[:create_char].show($actor_id)
$windows[:password].hide
hide
end
def use_actor
if Configs::LOADING_TIME == 0
$network.send_use_actor($actor_id)
else
SceneManager.scene.change_background(Configs::LOADING_TITLES[rand(ConfigsLOADING_TITLES.size)])
SceneManager.scene.config_icon.visible = false
SceneManager.scene.loading_bar.visible = true
$windows[:vip_time].hide
$windows[:password].hide
$windows[:config].hide
hide
end
end
def update
super
close_windows
next_actor if Input.trigger?(:RIGHT)
prev_actor if Input.trigger?(:LEFT)
remove_actor if Input.trigger?(:DELETE) && $network.actors.has_key?($actor_id)
ok if Input.trigger?(:C)
update_cursor
end
def close_windows
return unless Input.trigger?(:B)
$windows[:config].hide
$windows[:password].hide
$windows[:alert].hide
end
def next_actor
return if $actor_id == Configs::MAX_ACTORS - 1
$actor_id += 1
refresh
end
def prev_actor
return if $actor_id == 0
$actor_id -= 1
refresh
end
def ok
if !$network.actors.has_key?($actor_id)
create_actor
elsif $windows[:password].visible
$windows[:password].delete
elsif $windows[:alert].visible
$windows[:alert].hide
else
use_actor
end
end
def update_cursor
return unless Mouse.click?(:L)
Configs::MAX_ACTORS.times do |actor_id|
if in_area?(110 * actor_id + 8, 40, SLOT_WIDTH, SLOT_HEIGHT) # Ajuste do ponto de referência para a área de clique
$actor_id = actor_id
refresh
break
end
end
end
end
Qualquer bug ou algo do tipo favor reportar nesse post , até o presente momento não tive nenhum
Grande abraço ! e bom desenvolvimento a todos.