¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1 [VX] [cRmGSS] Selección de Clases el Jue Feb 16, 2012 7:56 pm

Faye Valentine

avatar
cRmGSS
Selección de Clases

__________________________________________________________________________________________

Selección de Clases


La función de este script nos permite crear un menú de selección de clases al seleccionar el juego, dandole un estilo de Rpg Clásico, como Dungeons & Dragons.

Es altamente modificable, un grandioso script realizado por el equipo scripter "cRmGSS", específicamente: JohnBolton, el creador del script.


___________________________________________________________________________________________

Muestra



___________________________________________________________________________________________

Script


Spoiler:
#=========================================================================
# Seleção de classe
# Compativel com RMVXAce
# Autor: JohnBolton
#-------------------------------------------------------------------------
# Acesse: www.centrorpgmaker.com
# É permitido postar em outros lugares contanto que não seja mudado
# as linhas dos créditos.
#-------------------------------------------------------------------------
# Introdução: Com este script, o seu jogo terá um menu de seleção
# de classes, que deixará o jogo mais bonito e com um ar mais profissional
#-------------------------------------------------------------------------
# Instruções: Modifique a seu gosto as constantes
# no módulo de configuração abaixo.
# Para chamar o script:
# Evento > Adicionar Comando > 3ª Aba > Chamar Script
# E então digite: select_class(actor)
# Sendo actor o id do personagem do banco de dados que terá
# sua classe alterada/mudada.
# Exemplo: select_class(1)
#=========================================================================
module JohnBolton
module SelectClass
#--------------------------------------------------------------------------
# * Configurações
#--------------------------------------------------------------------------
=begin
In_Title - Permite que após a opção "Novo Jogo" na tela de título
ser selecionada, haja um redirecionamente para o menu de seleção de classes.
Esta opção, se ativada, pode causa incompatibilidade com outros scripts
que alterem a class Scene_Title. Então, para uma maior prevenção
de incompatibilidade. É recomendável que este seja o último script entre
os 'Scripts Adicionais' e o 'Main'. Caso mesmo assim, uma incompatibilidade
gerada, desative esta opção imediatamente, ou contate o criador do script,
ou alguém que entenda do mesmo, para dar-lhe suporte.
Legenda: true : ativado
false : desativado
=end
In_Title = true
=begin
Cabeçalho - Mudar a frase do cabeçalho do menu de seleção
=end
Cabecalho = "Escolha uma classe"
=begin
Classes - Definir as classes que poderão ser selecionadas no menu. As classes
poderão ser apontadas tanto pelo seu ID, tanto quanto pelos seus Nomes. Caso
o nome ou o ID não correspondam a nenhuma classe do Bando de Dados, uma
janela Pop-up aparecerá para aviso do erro, e na mesma, haverá alternativas
para erro.
=end
Classes = ['Guerreiro',6,9,'Cavaleiro']
=begin
Pictures - Nesta constante, deverá ser apontado os nomes da imagens que
aparecem respectivamente nesta ordem no menu de seleção de classes.
Todas as imagens devem estar obrigatoriamente no diretório 'Graphics/Battlers'
=end
Pictures = ['Grappler_m','Delf_m','Cleric_m','Fanatic']
=begin
Background - Definir o nome da imagem que aparecerá como plano de fundo do
menu de seleção de classes. Por obrigatoriedade esta imagem
deverá estar no diretório 'Graphics/Parallax'
Caso deseje que o plano de fundo seja uma window, determine o valor como sendo 0
=end
Background = 'StarlitSky'
=begin
Move_Background - Define se haverá um movimento como os do 'Fog', no
plano de fundo do menu citado.
Legenda: true - ativado
false - desativado
=end
Move_Background = true
=begin
Movimentacao_Horizontal - Define a velocidade do movimento do plano de fundo
horizontal, levando em conta as condições do mundo real.
Valores: 0 - Sem movimento
1 - Movimento regular
2 - Movimento rápido
3 - Movimento exageradamente rápido ( Não recomendado )
=end
Movimentacao_Horizontal = 1
=begin
Movimentacao_Vertical - Define a velocidade do movimento do plano de fundo
vertical, levando em conta as condições do mundo real.
Valores: 0 - Sem movimento
1 - Movimento regular
2 - Movimento rápido
3 - Movimento exageradamente rápido ( Não recomendado )
=end
Movimentacao_Vertical = 0
=begin
BGM - Define respectivamente o nome do arquivo a ser tocado
e o volume do mesmo. Por obrigatoriedade, o arquivo deve-se encontrar
no diretório ' Audio/BGM '
=end
BGM = ["Battle5",80]
#--------------------------------------------------------------------------
# * Fim das Configurações
#--------------------------------------------------------------------------
end
end
#--------------------------------------------------------------------------
# * MessageBox - Object
#--------------------------------------------------------------------------
def p(message='',title='',type=2)
p = Win32API.new('user32','MessageBox',['L','P','P','L'],'I')
p.call(0,message,title,type)
end
#==============================================================================
# ** Window_NameClasses
#------------------------------------------------------------------------------
# Esta janela contém os nomes das classes a serem mostradas na Seleção de Classes
#==============================================================================
class Window_NameClasses < Window_Base
include JohnBolton::SelectClass
#--------------------------------------------------------------------------
# * Inicialização do objeto
#--------------------------------------------------------------------------
def initialize(x,y,width,height)
super(x,y,width,height)
#Chama o método de Renovação
refresh
end
#--------------------------------------------------------------------------
# * Renovação
#--------------------------------------------------------------------------
def refresh
#Criação dos contextos
names = []
#Para todos os valores da constante Classes
for i in 0..3
case Classes[i]
#Quando i, tiver valor String
when String
names << Classes[i]
#Quando i, tiver valor String
when Integer
#Verifica se o ID apontado existe no Bando de Dados
unless Classes[i] > $data_classes.size - 1 || Classes[i] <= 0
#Caso existe, recupera o nome da classe pelo id
#e adiciona o valor na array 'names'
names << ($data_classes[Classes[i]].name)
#Caso não exista a classe apontada pelo id
else
#Adiciona mensagem de erro na array 'names'
names << "Não encontrado"
end
#Quando não Integer e nem String
else
#Adiciona mensagem de erro na array 'names'
names << "Não encontrado"
end
end
#Criação dos contextos
draw_text(- 15,285,136,32,names[0],1)
draw_text(544/4 - 15,285,136,32,names[1],1)
draw_text(544/2 - 15,285,136,32,names[2],1)
draw_text(544/2 + 544/4 - 15,285,136,32,names[3],1)
end
end

#==============================================================================
# ** Window_SelectClass
#------------------------------------------------------------------------------
# Esta janela serve para a seleção de classe
#==============================================================================
class Window_SelectClass < Window_HorzCommand
#--------------------------------------------------------------------------
# * Inicialização do objeto
#--------------------------------------------------------------------------
def initialize(x,y,width,height)
#Cria uma instancia para o argumento width
@window_width = width
#Cria uma instancia para o argumento height
@window_height = height
super(x, y)
end
#--------------------------------------------------------------------------
# * Aquisição da largura da janela
#--------------------------------------------------------------------------
def window_width
@window_width
end
#--------------------------------------------------------------------------
# * Aquisição da altura da janela
#--------------------------------------------------------------------------
def window_height
@window_height
end
#--------------------------------------------------------------------------
# * Aquisição do número de colunas
#--------------------------------------------------------------------------
def col_max
return 4
end
#--------------------------------------------------------------------------
# * Cálculo da altura do conteúdo da janela
#--------------------------------------------------------------------------
def contents_height
return 336
end
#--------------------------------------------------------------------------
# * Criação da lista de comandos
#--------------------------------------------------------------------------
def make_command_list
add_command('', :first_class)
add_command('', :second_class)
add_command('', :third_class)
add_command('', :fourth_class)
end
#--------------------------------------------------------------------------
# * Aquisição do retangulo para desenhar o item
# index : índice do item
#--------------------------------------------------------------------------
def item_rect(index)
rect = super
rect.x = index * (item_width + spacing)
rect.y = 0
rect.height = 336
rect
end
end

#==============================================================================
# ** Scene_SelectClass
#------------------------------------------------------------------------------
# Esta classe executa o processamento da Seleção de Classe
#==============================================================================
class Scene_SelectClass < Scene_Base
include JohnBolton::SelectClass
#--------------------------------------------------------------------------
# * Inicialização do processo
#--------------------------------------------------------------------------
def initialize
@actor = $game_system.actor_select_classes
end
#--------------------------------------------------------------------------
# * Inicialização do processo²
#--------------------------------------------------------------------------
def start
#Variável necessária para correção do bug da MessageBox
@bug_test = true
#Chama o método para criação da window de seleção
create_command_window
#Chama o método para a criação do cabeçalho da Scene
create_help_window
#Chama o método para criação das pictures dos Battlers
create_battlers
#Criação do Plano de fundo da Scene
create_background
end
#--------------------------------------------------------------------------
# * Criação do plano de fundo
#--------------------------------------------------------------------------
def create_background
#Declaração da variável
@sprite_background = Plane.new
#Se a constante para seleção do plano de fundo não tiver o valor para
#o fundo da window ser um plano de fundo
unless Background == 0
#Criação bitmap
@sprite_background.bitmap = Cache.parallax(Background)
end
end
#--------------------------------------------------------------------------
# * Atualização da Tela
#--------------------------------------------------------------------------
def update
super
#Caso a constante permita o movimento do plano de fundo e a imagem exista
if Move_Background
unless Background == 0
#Ocorre o movimentohorizontal e vertical
@sprite_background.ox += Movimentacao_Horizontal
@sprite_background.oy += Movimentacao_Vertical
end
end
if Input.trigger?(:B) && @actor != 1
Sound.play_cancel
terminate
end
end
#--------------------------------------------------------------------------
# * Criação dos Bitmaps
#--------------------------------------------------------------------------
def create_battlers
#Declaração das instancias
@first_class = Sprite.new
@second_class = Sprite.new
@third_class = Sprite.new
@fourth_class = Sprite.new
#Criação dos bitmaps
@first_class.bitmap = Cache.battler(Pictures[0],0)
@second_class.bitmap = Cache.battler(Pictures[1],0)
@third_class.bitmap = Cache.battler(Pictures[2],0)
@fourth_class.bitmap = Cache.battler(Pictures[3],0)
#Aquisição da coordenada X das pictures
@first_class.x = (136 - @first_class.width)/2
@second_class.x = ((136 - @second_class.width)/2) + (544/4)
@third_class.x = ((136 - @third_class.width)/2) + (544/2)
@fourth_class.x = ((136 - @third_class.width)/2) + (544/2 + 544/4)
#Aquisição da coordenada Y das pictures
@first_class.y = ((365 - @first_class.height)/2) + 51
@second_class.y = ((365 - @second_class.height)/2) + 51
@third_class.y = ((365 - @third_class.height)/2) + 51
@fourth_class.y = ((365 - @third_class.height)/2) + 51
#Aquisição da profundidade das pictures
@first_class.z = 9999
@second_class.z = 9999
@third_class.z = 9999
@fourth_class.z = 9999
end
#--------------------------------------------------------------------------
# * Criação da janela de comando
#--------------------------------------------------------------------------
def create_command_window
#Declaração da instancia para com a Window que contém os nomes das classes
@window = Window_NameClasses.new(0,51,544,365)
#Aquisição da profundidade da window
@window.z = 99999
#Aquisição da opacidade do fundo da window
@window.back_opacity = 0
#Declaração da window de seleção de classe
@command_window = Window_SelectClass.new(0,51,544,365)
#Aquisição da profundidade da window
@command_window.z = 9999
#Aquisição da opacidade do fundo da window caso a constante do plano de fundo não seja 0
@command_window.back_opacity = 0 unless Background == 0
@command_window.set_handler(:first_class, method(:command_first_class))
@command_window.set_handler(:second_class, method(:command_second_class))
@command_window.set_handler(:third_class, method(:command_third_class))
@command_window.set_handler(:fourth_class, method(:command_fourth_class))
end
#--------------------------------------------------------------------------
# * Criação da janela de ajuda.
#--------------------------------------------------------------------------
def create_help_window
@help_window = Window_Help.new(1)
@help_window.height = 51
@help_window.back_opacity = 0 unless Background == 0
@help_window.set_text(Cabecalho.rjust(34))
end
#--------------------------------------------------------------------------
# * Checa se a classe existe quando o valor é String
# index : índice
#--------------------------------------------------------------------------
def check_name_classes(index)
for i in 1...$data_classes.size
#Caso exista
if Classes[index] == $data_classes[i].name
#O Personagem principal adquire a classe selecionada
$game_actors[@actor].change_class(i)
#Recupera todos os status
$game_actors[@actor].recover_all
#Termina o processo
terminate
return
end
end
#Método de erro é chamado
error_no_one(index,1) if @bug_test
end
#--------------------------------------------------------------------------
# * Checa se a classe existe quando o valor é Integer
# index : índice
#--------------------------------------------------------------------------
def check_id_classes(index)
unless Classes[index] > $data_classes.size - 1 || Classes[index] <= 0
$game_actors[@actor].change_class(Classes[index])
#Recupera todos os status
$game_actors[@actor].recover_all
terminate
else
error_no_one(index,2) if @bug_test
end
end
#--------------------------------------------------------------------------
# * Processamento de alternativas para o erro
# index : índice
# type : ID do erro
#--------------------------------------------------------------------------
def error_no_one(index, type)
case type
when 0
#Adquire a opção selecionada pelo maker/jogador
clicked = p("'#{Classes[index]}' nao esta relacionado a nenhum ID ou Nome de classe","Scene_SelectClasses", 2)
when 1
#Adquire a opção selecionada pelo maker/jogador
clicked = p("Classe '#{Classes[index]}' nao encontrada no Banco de Dados","Scene_SelectClasses", 2)
when 2
#Adquire a opção selecionada pelo maker/jogador
clicked = p("Classe de ID '#{Classes[index]}' nao encontrada no Banco de Dados","Scene_SelectClasses", 2)
end
#Caso a opção selecionada tenha sido:
case clicked
#Abortar
when 3
#O jogo é fechado
exit
#Tentar novamente
when 4
#Chama o método para checar se a classe apontada na constante existe
case index
when 0
command_first_class
when 1
command_second_class
when 2
command_third_class
when 3
command_fourth_class
end
#Ignorar
when 5
#Mudança de valor para solucionar o bug da MessageBox
@bug_test = false
#Reproduz efeitos sonoros e BGM do mapa
$game_map.autoplay
#Muda para a Scene_Map
SceneManager.goto(Scene_Map)
#Congela os gráficos
Graphics.freeze
#Termina o processo
terminate
#Classe de ID 1 é selecionada
$game_actors[@actor].change_class(1)
return
end
end

#--------------------------------------------------------------------------
# * Primeira classe selecionada
#--------------------------------------------------------------------------
def command_first_class
check_name_id_classes(0)
end
#--------------------------------------------------------------------------
# * Segunda classe selecionada
#--------------------------------------------------------------------------
def command_second_class
check_name_id_classes(1)
end
#--------------------------------------------------------------------------
# * Terceira classe selecionada
#--------------------------------------------------------------------------
def command_third_class
check_name_id_classes(2)
end
#--------------------------------------------------------------------------
# * Quarta classe selecionada
#--------------------------------------------------------------------------
def command_fourth_class
check_name_id_classes(3)
end
#--------------------------------------------------------------------------
# * Checa os valores dados na constante
# index : índice
#--------------------------------------------------------------------------
def check_name_id_classes(index)
#Checa se a classe apontada na constante de configuração existe
case Classes[index]
#Quando é dado o nome da classe
when String
check_name_classes(index)
#Quando é dado o ID da classe
when Integer
check_id_classes(index)
#Quando o valor é diferente dos citados acima
else
#Método de erro é chamado
error_no_one(index,0) if @bug_test
end
end
#--------------------------------------------------------------------------
# * Finalização do processo
#--------------------------------------------------------------------------
def terminate
#Finaliza as windows declaradas na classe
$game_system.actor_select_classes = 1
@command_window.dispose
@help_window.hide
@window.dispose
#Finaliza as imagens declaradas na classe
@first_class.dispose
@second_class.dispose
@third_class.dispose
@fourth_class.dispose
#Reproduz efeitos sonoros e BGM do mapa
$game_map.autoplay
#Muda para Scene_Map
SceneManager.goto(Scene_Map)
end
end

#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
# Esta classe executa o processamento da tela de título.
#==============================================================================
if JohnBolton::SelectClass::In_Title
class Scene_Title
#--------------------------------------------------------------------------
# * Recriação do método command_new_game
#--------------------------------------------------------------------------
def command_new_game
DataManager.setup_new_game
close_command_window
fadeout_all
#Se a constante relacionada a música não tiver valor 0:
unless JohnBolton::SelectClass::BGM[0] == 0
#A BGM apontada na constante é reproduzida.
Audio.bgm_play('Audio/BGM/' + JohnBolton::SelectClass::BGM[0], JohnBolton::SelectClass::BGM[1])
end
SceneManager.call(Scene_SelectClass)
end
end
end


#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
# Um interpretador para executar os comandos de evento. Esta classe é usada
# internamente pelas classes Game_Map, Game_Troop e Game_Event.
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# * Chama o menu de seleção de classes pelo "Chamar Script"
# actor : ID do actor
#--------------------------------------------------------------------------
def select_class(actor)
$game_system.actor_select_classes = actor
SceneManager.call(Scene_SelectClass)
end
end

#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
# Esta classe gerencia os dados relacionados ao sistema. Também gerencia
# veículos, BGM, etc.
# A instância desta classe é referenciada por $game_system.
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# * Variáveis Públicas
#--------------------------------------------------------------------------
attr_accessor :actor_select_classes
#--------------------------------------------------------------------------
# * Modificação do método initialize
#--------------------------------------------------------------------------
alias johnbolton_selectclasses_initialize initialize
def initialize
johnbolton_selectclasses_initialize
@actor_select_classes = 1
end
end

___________________________________________________________________________________________

Créditos

[wow]custom:JohnBolton,,Por la creacion del script,/t[/wow]

[wow]custom:cRmGSS,,Por el soporte dado a JohnBolton,/t[/wow]

[wow]custom:Knitsch,,Por disponibilizarlo a la comunidad,/t[/wow]

#2 Re: [VX] [cRmGSS] Selección de Clases el Vie Feb 17, 2012 2:00 am

Kululu

avatar
¡Aportazo! Es un sistema muy interesante, y muy útil. Además de visualmente muy atractivo. Gracias por traerlo a la comunidad.

¡20 makedas!



     

¡Visita mis galerías de Tumblr y DeviantArt!

#3 Re: [VX] [cRmGSS] Selección de Clases el Sáb Feb 09, 2013 7:09 am

Kurouzumaki

avatar
Sirve aunque tengas el VX Ace en ingles/ español o solo es para idioma "portugues"
PD:perdonen si en algun momento no escribo una o o alguna otra letra, es que mi teclado anda mal
PD2: No me andubo Ópalo Triste

#4 Re: [VX] [cRmGSS] Selección de Clases el Sáb Feb 09, 2013 1:57 pm

Killer690

avatar
Es para rpg maker VX, no para rpg maker VXACE, hay problemas de compatibilidad entre versiones de maker debido a los tipos de scripts Ópalo Sonriente

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.