Lost Makers
Últimos assuntos
» Melody raiser
Sex Nov 18, 2016 8:52 am por Finalshare

» Shiginima Launcher SE V2.0
Ter Out 20, 2015 6:08 pm por Finalshare

» [Extensão] Easy 3D
Qua Set 23, 2015 6:14 pm por Cyisthat

» Acoustica Mixcraft 6.0 + crack
Ter Set 15, 2015 8:32 pm por Finalshare

» Várias Sugestões
Ter Set 15, 2015 7:59 pm por Finalshare

» [Álbum] Abyss
Dom Set 13, 2015 10:12 pm por Cyisthat

» [Extensão] Easy Motion
Sex Set 11, 2015 11:04 pm por Finalshare

» Rpg Maker Vx Ace + Crack
Sex Set 11, 2015 4:33 pm por Finalshare

» [Minecraft] Shiginima Launcher
Sex Set 11, 2015 2:42 pm por Finalshare

Painel do usuário
Carregando avatar...
Parceiros

FleX Menu 1.0.1.1

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

code FleX Menu 1.0.1.1

Mensagem por Iori Yagami em Qui Jul 19, 2012 11:00 am

FleX Menu 1.0.1.1


Menu bem legal banana


Creditos ao autor: Bruno Augusto

Spoiler:
#=========================================================
# ** FleX Menu 1.0.1.1 para RMXP
# ========================================================
# (c) 2009 - Imaggens Studio
# --------------------------------------------------------
# > Autor: Bruno Augusto
# --------------------------------------------------------
# > FleX Menu
# > Menu customizável e flexível que substitui o do RMXP
#
# > Iniciado em: Sábado, 21 de Março de 2009
# > Atualizado em: Sábado, 4 de Abril de 2009
#
# > Lançamento: Segunda-Feira, 23 de Março de 2009
# > Re-Publicação: Domingo, 5 de Abril de 2009
#=========================================================

=begin
+---------------------------------------------------------------
| ** FleX Menu 1.0.1.1: Recursos & Atualizações
| ==============================================================
| - [UPDATE] Ajuste na visibilidade da dummy window quando todas
| as 3 partes do menu lateral (com exceção do menu principal)
| estão visíveis.
| Juntamente com esse ajuste houve redimensionamento destas
| três janelas, para completar o espaço deixado pela "micro"
| dummy window visualmente desnecessária
| - [UPDATE] Corrigidas as cores padrão para as barras de SP e XP
| quando as existentes nas configurações diferirem as
| quantidades de índices de 4 (formato array RGB + alpha)
| ou 2 (formatoHexadecimal + alpha)
| O motivo da atualização é que as duas barras citadas
| estavam com as mesmas cores que a de HP (alaranjado)
| - [NOVO] Adicionando método get_gradient_colors() que, através
| de um parâmetro string determina, internamente, qual esquema
| de cores será utilizado para as barras (HP, SP, XP)
| Assim, reduz-se a quantidade de código em torno de 72 linhas,
| sem contar os espaços estruturadores e comentários, e torna
| o código mais fácil de se ler e atualizar, se necessário
+---------------------------------------------------------------
| ** FleX Menu 1.0.1: Recursos & Atualizações
| ==============================================================
| - [NOVO] Configurações empacotadas em módulo, garantindo
| compatibilidade entre diferentes scripts
| - [NOVO] Retorno do item de menu "Status"
| - [NOVO] "Registro" do script na variável global $imaggens
| - [UPDATE]Correção na segunda cor para formação do gradiente
| da barra de SP (estava amarelo)
| - [UPDATE] Alteração na largura da porção do Menu referente ao
| Nome do Mapa quando TODOS os itens extra do Menu lateral
| estão presentes.
+---------------------------------------------------------------
| ** FleX Menu 1.0: Recursos
| ==============================================================
| - Personalização dos textos do menu sem interferir
| no vocabulário do sistema do jogo
| - Controle de Exibição das janelas que serão mostradas
| no menu: Tempo de Jogo, Passos, Ouro e Nome do Mapa
| - Uso ou não uso de uma Dummy_Window vertical que preenche
| a porção da tela que fica vazia quando se oculta uma
| ou mais janelas de informação
| - Ocultar automaticamente a janela com o Nome do Mapa
| quando o próprio contiver uma tag (personalizável)
| definida na constante MAP_EXCLUDE_TAG
| - Remover automaticamente palavras que não devem fazer parte
| do nome do mapa. Útil quando scripts terceirizados
| obrigam a inclusão de tags proprietárias no nome do mapa
| - Posicionamento personalizado do Menu Principal:
| Esquerda ou à Direita
| - Posicionamento personalizado da janela com o Nome do Mapa:
| Acima ou Abaixo
| - Personalização da ordem em que as janelas informativas do
| menu lateral serão exibidas. Basta alterar a ordem das
| letras na matriz
| - Exibição ou não do status do jogador cercado por colchete,
| como no estilo padrão do menu do RMXP (ex: [ Confuso ])
| - Exibição animada dos charsets dos personagens, simulando
| caminhada
| - Extra na movimentação do charset dos personagens
| (implica TRUE na configuração acima): Girar 360º equanto
| estiver em movimento
| - Extra na movimentação 360º do charset dos personagens:
| Definição do sentido do giro: horário ou anti-horário
| - Customização das cores que compõem o gradiente (dégradè)
| das barras de HP, MP (ou SP) e XP
| - Extra na customização das cores: Uso de canais RGB ou
| valores hexadecimais
| - Extra na exibição das barras: Exibição ou não da quantidade
| de cada "elemento" seguido do total possível (ex: 100/200)
+---------------------------------------------------------------
=end

module FleX

# Textos do Menu

MENU_ITEMS = [ 'Itens',
'Habilidades',
'Equipamento',
'Status',
'Salvar',
'Sair'
]

# Textos das janelas do Menu Lateral

STEPS_LABEL = 'Passos'
GOLD_LABEL = 'Ouro'
MAP_LABEL = 'Local:'

# Textos Complementares e das Barras de Informação

LEVEL_LABEL = 'N'
LIVE_LABEL = 'Vivo'

XP_LABEL = 'XP'
HP_LABEL = 'HP'
MP_LABEL = 'MP'

NO_HP = 'Sem HP'
NO_MP = 'Sem MP'

LOW_HP = 'Fraco'

# Exibição das Janelas no Menu Lateral

SHOW_TIME = true
SHOW_STEPS = true
SHOW_GOLD = true
SHOW_MAP = true

# Habilitar Dummy_Window?

USE_DUMMY = true

# Mapas contendo a seguinte tag não terão
# a janela com o Nome do Mapa no menu

MAP_EXCLUDE_TAG = '[EXCLUDE]'

# As palavras que estiverem nesta lista
#(separadas por vírgulas) serão removidas
# do Nome do Mapa

MAP_EXCLUDE_WORDS = []

# Posicionamentos: Menu, Nome do Mapa e Ordenação

MENU_SIDE = 1 # 1 = Direita / 2 = Esquerda

MAP_SIDE = 1 # 0 = Superior / 1 = Inferior

POSITION = [ 'M', 'T', 'S', 'G' ]

# Extra Visual

USE_STATE_BRACKETS = false # Coloca o status do personagem
# [ entre colchetes ]

BARS_IN_NOS = true

# Animação dos Charsets

ANIMATE_CHAR = true # Habilita animação
ANIMATE_360 = true # Habilita animação 360º
ROTATE_TO = 'right' # Personaliza o sentido do giro

# Cores do Gradiente

#===========================================================
# ** Padrão RGB + Alpha
# Cada matriz com 4 índices de 0 à 255 cada
#
# ** Padrão Hexadecimal + Alpha:
# Cada matriz com 2 índices, sendo o primeiro uma string
# e o segundo o canal alpha, de 0 à 255
#
# ** Se a matriz possuir elementos sobrando ou faltando
# a cor utilizada será as mesmas pré-configuradas
# porém internamente ao código
#===========================================================

HP_GRADIENT_COLOR_1 = [ 233, 127, 63, 255 ]
HP_GRADIENT_COLOR_2 = [ 238, 190, 63, 255 ]

SP_GRADIENT_COLOR_1 = [ 63, 127, 191, 255 ]
SP_GRADIENT_COLOR_2 = [ 63, 191, 239, 255 ]

XP_GRADIENT_COLOR_1 = [ 63, 127, 0, 255 ]
XP_GRADIENT_COLOR_2 = [ 63, 197, 0, 255 ]

end

#=================# FIM DAS CONFIGURAÇÕES #=====================#

$imaggens = {} if $imaggens == nil
$imaggens['FleX'] = true

#==========================================================
# ** FleX_Menu
# ---------------------------------------------------------
# > Classe construtora do menu
#==========================================================

class Scene_Menu
def initialize( index = 0 )
@index = index

@dummy_height = 0 # Altura da Janela Vazia Complementar

$mapname_exists = true

# Todas as janelas estão sendo exibidas?

if FleX::SHOW_TIME == true and FleX::SHOW_STEPS == true and
FleX::SHOW_GOLD == true
$all_windows = true
else
$all_windows = false
end
end

def main

# Menu Principal

@command = Window_Command.new( 160, FleX::MENU_ITEMS )
@command.index = @index

@command.x = FleX::MENU_SIDE == 1 ? 480 : 0

# Passos Dados

@steps = Window_Common.new( 160, 75, 'steps' )

@steps.x = FleX::MENU_SIDE == 1 ? 480 : 0

# Tempo de Jogo

@playtime = Window_Common.new( 160, 74, 'playtime' )

@playtime.x = FleX::MENU_SIDE == 1 ? 480 : 0

# Ouro Acumulado

@gold = Window_Common.new( 160, 75, 'gold' )

@gold.x = FleX::MENU_SIDE == 1 ? 480 : 0

# Visibilidade da Janela com o Nome do Mapa

if $game_map.name.include?( FleX::MAP_EXCLUDE_TAG ) or
FleX::SHOW_MAP == false

$mapname_exists = false # Flag Global de Existência do Mapa

# Janela Principal

@players = Window_PlayerData.new( 480, 480 )

@dummy_height += 33
else
# Nome do Mapa

if $all_windows == true
map_width = 640 - @command.width

@dummy_height += FleX::USE_DUMMY == true ? 33 : 0
else
map_width = 640

@dummy_height -= 32
end

@map = Window_Common.new( map_width, 64, 'map' )

@map.y = FleX::MAP_SIDE == 0 ? 0 : 416

# Janela Principal

@players = Window_PlayerData.new( 480, 416 )
end

# Posicionamento da Janela Principal

@players.x = FleX::MENU_SIDE == 1 ? 0 : @command.width
@players.y = FleX::MAP_SIDE == 0 ? 64 : 0

# Redimensionando e reposicionando as janelas do menu lateral

if $all_windows == true
@playtime.height += 12
@steps.height += 10
@gold.height += 10

@playtime.y += 0
@steps.y += 12
@gold.y += 22
end

# Posicionamento Vertical dos Elementos Laterais

position = FleX::MAP_SIDE == 0 ? 64 : 0

for i in 0...4
case FleX::POSITION[ i ]

# Menu Principal

when 'M'

@command.y = position

position += @command.height

# Passos Dados

when 'S'

if FleX::SHOW_STEPS == true
@steps.y = position

position += @steps.height
else
@steps.visible = false

@dummy_height += @steps.height
end

# Tempo de Jogo

when 'T'

if FleX::SHOW_TIME == true
@playtime.y = position

position += @playtime.height
else
@playtime.visible = false

@dummy_height += @playtime.height
end

# Ouro Acumulado

when 'G'

if FleX::SHOW_GOLD == true
@gold.y = position

position += @gold.height
else
@gold.visible = false

@dummy_height += @gold.height
end
end
end

# Dummy Window

if @dummy_height != 0
@dummy = Window_Common.new( @command.width,
@dummy_height, 'dummy' )

@dummy.x = FleX::MENU_SIDE == 1 ? 480 : 0
@dummy.y = position

@dummy.visible = FleX::USE_DUMMY == true ? true : false
end

# Sobrescrevendo visibilidade da dummy window

if $all_windows == true
@dummy.visible = false if @dummy != nil
end

#------------------

if $game_party.actors.size == 0
@command.disable_item(0)
@command.disable_item(1)
@command.disable_item(2)
end

if $game_system.save_disabled
@command.disable_item(3)
end

#------------------

Graphics.transition

loop do
Graphics.update # Gráficos
Input.update # Teclas
update # Frames

if $scene != self
break
end
end

Graphics.freeze

#-------------------

@command.dispose
@steps.dispose
@playtime.dispose
@gold.dispose

@map.dispose if $mapname_exists == true

@players.dispose

if @dummy_height != 0
@dummy.dispose
end
end

#==========================================================
# ** update
# ---------------------------------------------------------
# > Atualiza informações das janelas do menu
#==========================================================

def update
@command.update
@steps.update
@playtime.update
@gold.update

@map.update if $mapname_exists == true

@players.update

update_commands
end

#==========================================================
# ** update_commands
# ---------------------------------------------------------
# > Atualiza informações dos comandos do Menu Principal
#==========================================================

def update_commands

# Retornando ao mapa

if Input.trigger?( Input::B )
$scene = Scene_Map.new

return
end

# Ações do Menu

if Input.trigger?( Input::C )

# Impedindo acesso a ações dos Personagens
# quando sem personagens (no grupo de aliados)

if $game_party.actors.size == 0 and
@command.index < 4

return
end

# Direcionando as açõesdo menu

case @command.index
when 0 # Itens

$scene = Scene_Item.new

when 1 # Habilidades

$scene = Scene_Skill.new

when 2 # Equipamentos

$scene = Scene_Equip.new

when 3 # Status

$scene = Scene_Status.new

when 4 # Salvar

$scene = Scene_Save.new

when 5 # Sair

$scene = Scene_End.new
end

return
end
end
end

#==========================================================
# ** Window_Common
# ---------------------------------------------------------
# > Classe responsável por criar diversas janelas
# diferentes cada qual com sua própria largura, altura
# e conteúdo, definido por métodos próprios
#==========================================================

class Window_Common < Window_Base
def initialize( width, height, window )
super( 0, 0, width, height )

@window = window
@extra_y = $all_windows == true ? 4 : 0

self.contents = Bitmap.new( width - 32, height - 32 )

case @window
when 'steps'
steps
when 'playtime'
playtime
when 'gold'
gold
when 'map'
map
when 'dummy'
return
end
end

#==========================================================
# ** steps
# ---------------------------------------------------------
# > Procedimento que exibe a quantidade de passos dados
# pelo jogador
#==========================================================

def steps
self.contents.clear

self.contents.font.color = system_color
self.contents.draw_text( 4, 7 + @extra_y, 120, 32,
FleX::STEPS_LABEL )

self.contents.font.color = normal_color
self.contents.draw_text( 4, 7 + @extra_y, 120, 32,
$game_party.steps.to_s, 2 )
end

#==========================================================
# ** playtime
# ---------------------------------------------------------
# > Procedimento que exibe o tempo de jogo
#==========================================================

def playtime
self.contents.clear

# Calculando o tempo

@time = Graphics.frame_count / Graphics.frame_rate

# Formatando...

hour = @time / 60 / 60 # Horas
minutes = @time / 60 % 60 # Minutos
seconds = @time % 60 # Segundos

text = sprintf( "%02d:%02d:%02d", hour, minutes, seconds )

self.contents.font.color = normal_color
self.contents.draw_text( 4, 10 + @extra_y, 120, 24, text, 1 )
end

#==========================================================
# ** gold
# ---------------------------------------------------------
# > Procedimento que exibe a quantidade de ouro acumulado
#==========================================================

def gold
self.contents.clear

box = contents.text_size( FleX::GOLD_LABEL ).width

self.contents.font.color = system_color
self.contents.draw_text( 4, 7 + @extra_y, 120, 32,
FleX::GOLD_LABEL )

self.contents.font.color = normal_color
self.contents.draw_text( 4, 7 + @extra_y, 120, 32,
$game_party.gold.to_s, 2 )
end

#==========================================================
# ** map
# ---------------------------------------------------------
# > Procedimento que exibe o nome do mapa
#==========================================================

def map
self.contents.clear

label = contents.text_size( FleX::MAP_LABEL ).width

self.contents.font.color = system_color
self.contents.draw_text( 4, 0, label, 32, FleX::MAP_LABEL )

# Removendo expressões não desejadas do nome do mapa
# Ajuda indireta do woratana ^^

mapName = $game_map.name.to_s

if FleX::MAP_EXCLUDE_WORDS.size != 0
FleX::MAP_EXCLUDE_WORDS.each {|i| mapName.gsub!(/#{i}/i) {} }
end

self.contents.font.color = normal_color
self.contents.draw_text( label + 8, 0, 286, 32, mapName )
end

#==========================================================
# ** update
# ---------------------------------------------------------
# > Atualiza informações
# Especificamente, o tempo de jogo decorrido
#==========================================================

def update
super

if @window == 'playtime'
if Graphics.frame_count / Graphics.frame_rate != @time
playtime
end
end
end
end

#==========================================================
# ** Window_PlayerData
# ---------------------------------------------------------
# > Janela que exibe as informações dos jogadores
#==========================================================

class Window_PlayerData < Window_Base
def initialize( width, height )
super( 0, 0, width, height )

self.contents = Bitmap.new( width - 32, height - 32 )

@frame = 0 # Posição Horizontal do Char
@pose = 0 # Posição Vertical do Char

@actor = 0

refresh
end

#==========================================================
# ** refresh
# ---------------------------------------------------------
# > Popula a tela de menu com as informações
#==========================================================

def refresh
self.contents.clear

extra_x = FleX::USE_STATE_BRACKETS == true ?
self.contents.text_size( '[ ]' ).width : 0

extra_y = $mapname_exists == true ? 0 : 32

for i in 0...$game_party.actors.size

x = 64
y = extra_y + i * 96

@actor = $game_party.actors[ i ]

# Gráfico do personagem

draw_actor_sprite( @actor, x - 42, y + 80 )

# Nome do Personagem

draw_actor_name( @actor, x, y + 8 )

# Status

draw_actor_state( @actor, x, y + 36, 120 )

# Nível do Personagem

draw_actor_level( @actor, x, y + 60 )

#--------------------

# Classe do Personagem

draw_actor_class( @actor, x + 128 + extra_x, y - 4 )

# HP do Personagem

draw_actor_hp( @actor, x + 128 + extra_x, y + 30, 196 )

# SP do Perosonagem

draw_actor_sp( @actor, x + 128 + extra_x, y + 54, 196 )

# Experiência do Personagem

draw_actor_xp( @actor, x + 128 + extra_x, y + 78, 196 )
end
end

#==========================================================
# ** update
# ---------------------------------------------------------
# > Atualiza informações
# Especificamente, anima o charset do personagem se
# configurado para isso
#==========================================================

def update
super

# Verifica se a animação foi habilitada

if FleX::ANIMATE_CHAR == true
if Graphics.frame_count % 10 == 0

# Girar o Personagem 360º...

if FleX::ANIMATE_360 == true and @frame == 3

# ... em sentido horário...

if FleX::ROTATE_TO == 'right'

case @pose
when 0; @pose = 1
when 1; @pose = 3
when 3; @pose = 2
when 2; @pose = 0
end

#... ou anti-horário

elsif FleX::ROTATE_TO == 'left'

case @pose
when 0; @pose = 2
when 2; @pose = 3
when 3; @pose = 1
when 1; @pose = 0
end

end
end

# Simular o Personagem andando

@frame == 3 ? @frame = 0 : @frame += 1

# Redesenha o Personagem

refresh
end
end
end

#==========================================================
# ** draw_actor_sprite
# ---------------------------------------------------------
# > Desenha o charset do personagem na tela, animado ou não
#==========================================================

def draw_actor_sprite( actor, x, y )
bitmap = RPG::Cache.character( actor.character_name,
actor.character_hue )

cw = bitmap.width / 4
ch = bitmap.height / 4

if FleX::ANIMATE_CHAR == false
rect = Rect.new( 0, 0, cw, ch )
else
rect = Rect.new( cw * @frame, ch * @pose, cw, ch)
end

self.contents.blt( x - cw / 2, y - ch, bitmap, rect )
end

#==========================================================
# ** draw_actor_state
# ---------------------------------------------------------
# > Sobrescreve o método original de escrever o(s) estado(s)
# do personagem por outromais simplificado
#==========================================================

def draw_actor_state( battler, x, y, width )
text = ''

for i in battler.states
# Aparentemente, no XP apenas o último status é exibido

text = $data_states[ i ].name
end

if FleX::USE_STATE_BRACKETS == true
text = text == '' ? '[ ' + FleX::LIVE_LABEL + ' ]' :
'[ ' + text + ' ]'

width += self.contents.text_size( '[ ]' ).width
else
text = text == '' ? FleX::LIVE_LABEL : text
end

# Escrevendo...

self.contents.font.color = battler.hp == 0 ?
knockout_color : normal_color
self.contents.draw_text( x, y, width, 32, text )
end

#==========================================================
# ** draw_actor_hp
# ---------------------------------------------------------
# > Sobrescreve o método original de escrever o HP do
# personagem por outra mais elaborado, com gradiente
#==========================================================

def draw_actor_hp( actor, x, y, width, height = 12 )

# Cor de Fundo

bg = Color.new( 0, 0, 0, 160 )

# Cores do Gradiente

gcs = get_gradient_colors( 'HP' )

gc1 = gcs[ 0 ]
gc2 = gcs[ 1 ]

#-------------------

# Cáculo do HP

if actor.hp != 0
gw = width * actor.hp / actor.maxhp
else
gw = width * actor.hp + 10
end

self.contents.fill_rect( x + 30, y, width, height, bg )
gradient( x + 31, y + 1, gw - 2, height - 2, gc1, gc2 )

self.contents.font.color = gc1
self.contents.draw_text( x, y - 5, 30, 20, FleX::HP_LABEL )

if FleX::BARS_IN_NOS == true

if actor.hp == 0
content = FleX::NO_HP
elsif actor.hp <= actor.maxhp / 10
content = FleX::LOW_HP
else
content = actor.hp.to_s + '/' + actor.maxhp.to_s
end

content_width = self.contents.text_size( content ).width

self.contents.font.color = normal_color
self.contents.draw_text( width * 2 - content_width + 20, y - 10, content_width, 20, content )
end
end

#==========================================================
# ** draw_actor_sp
# ---------------------------------------------------------
# > Sobrescreve o método original de escrever o SP do
# personagem por outra mais elaborado, com gradiente
#==========================================================

def draw_actor_sp( actor, x, y, width, height =12 )

# Cor de Fundo

bg = Color.new( 0, 0, 0, 160 )

# Cores do Gradiente

gcs = get_gradient_colors( 'SP' )

gc1 = gcs[ 0 ]
gc2 = gcs[ 1 ]

#-------------------

# Calcula o SP

if actor.maxsp != 0
gw = width * actor.sp / actor.maxsp
else
gw = width * actor.sp + 10
end

self.contents.fill_rect( x + 30, y, width, height, bg )
gradient( x + 31, y + 1, gw - 2, height - 2, gc1, gc2 )

self.contents.font.color = gc1
self.contents.draw_text( x, y - 5, 30, 20, FleX::MP_LABEL )

if FleX::BARS_IN_NOS == true

if actor.sp == 0
content = FleX::NO_MP
else
content = actor.sp.to_s + '/' + actor.maxsp.to_s
end

content_width = self.contents.text_size( content ).width

self.contents.font.color = normal_color
self.contents.draw_text( width * 2 - content_width + 20, y - 10, content_width, 20, content )
end
end

#==========================================================
# ** draw_actor_xp
# ---------------------------------------------------------
# > Sobrescreve o método original de escrever o XP do
# personagem por outro mais elaborado, com gradiente
#==========================================================

def draw_actor_xp( actor, x, y, width, height = 12 )

# Cor de Fundo

bg = Color.new( 0, 0, 0, 160 )

# Cores do Gradiente

gcs = get_gradient_colors( 'XP' )

gc1 = gcs[ 0 ]
gc2 = gcs[ 1 ]

#-------------------

# Calcula o XP

if actor.exp != 0
gw = width * actor.exp / actor.next_exp
else
gw = width * actor.exp + 10
end

self.contents.fill_rect( x + 30, y, width, height, bg )
gradient( x + 31, y + 1, gw - 2, height - 2, gc1, gc2 )

self.contents.font.color = gc1
self.contents.draw_text( x, y - 5, 30, 20, FleX::XP_LABEL )

if FleX::BARS_IN_NOS == true

content = actor.exp.to_s + '/' + actor.next_exp.to_s
content_width = self.contents.text_size( content ).width

self.contents.font.color = normal_color
self.contents.draw_text( width * 2 - content_width + 20, y - 10, content_width, 20, content )
end
end

#==========================================================
# ** gradient
# ---------------------------------------------------------
# > Cria uma barra retalgular colorida em gradiente
# crescente de duas cores
#==========================================================

def gradient( x, y, width, height, c1, c2 )
for i in 1..width
x2 = x + i - 1

# Canais RGB e Alpha

r = c1.red * (width - i) / width + c2.red * i / width
g = c1.green * (width - i) / width + c2.green * i / width
b = c1.blue * (width - i) / width + c2.blue * i / width
a = c1.alpha * (width - i) / width + c2.alpha * i / width

self.contents.fill_rect( x2, y, 1, height,
Color.new( r, g, b, a ) )
end
end

#==========================================================
# ** get_hex
# ---------------------------------------------------------
# > Converte uma valor Hexadecimal nos Canais RGB
#==========================================================

def get_hex( n, alpha )
red = 0
green = 0
blue = 0

if n.size != 6
print( "Código de cores Hexadecimais devem ter 6 caracteres de comprimento!\nA cor Normal do sistema será usada" )
return normal_color
end

for i in 1..6
sliced = n.slice!(/./m)
value = hexconvert( sliced )

case i
when 1; red += value * 16
when 2; red += value
when 3; green += value * 16
when 4; green += value
when 5; blue += value * 16
when 6; blue += value
end
end

return Color.new( red, green, blue, alpha )
end

#==========================================================
# ** hexconvert
# ---------------------------------------------------------
# > "Decodifica" cada um dos três pares de uma cor Hexa
#==========================================================

def hexconvert(n)
case n
when "0"; return 0
when "1"; return 1
when "2"; return 2
when "3"; return 3
when "4"; return 4
when "5"; return 5
when "6"; return 6
when "7"; return 7
when "8"; return 8
when "9"; return 9
when "A"; return 10
when "B"; return 11
when "C"; return 12
when "D"; return 13
when "E"; return 14
when "F";return 15
else; return -1
end
end

#==========================================================
# ** get_gradient_colors
# ---------------------------------------------------------
# > Wrapper de codificação para obtenção das cores de
# gradiente para criação das barras de HP, SP e XP
#==========================================================

def get_gradient_colors( schema )

if schema == 'HP'
cs1 = FleX::HP_GRADIENT_COLOR_1
cs2 = FleX::HP_GRADIENT_COLOR_2

cs1_d = [ 233, 127, 63, 255 ]
cs2_d = [ 238, 190, 63, 255 ]
elsif schema == 'SP'
cs1 = FleX::SP_GRADIENT_COLOR_1
cs2 = FleX::SP_GRADIENT_COLOR_2

cs1_d = [ 63, 127, 191, 255 ]
cs2_d = [ 63, 191, 239, 255 ]
elsif schema == 'XP'
cs1 = FleX::XP_GRADIENT_COLOR_1
cs2 = FleX::XP_GRADIENT_COLOR_2

cs1_d = [ 63, 127, 0, 255 ]
cs2_d = [ 63, 197, 0, 255 ]
end

#-------------------

# Primeira Cor

if cs1.size == 4

# Array de cores

gc1 = Color.new( cs1[ 0 ], cs1[ 1 ], cs1[ 2 ], cs1[ 3 ] )

elsif cs1.size == 2

# Hexadecimais

if cs1[ 0 ].sub( /([0123456789ABCDEF]+)/,'' )
gc1 = get_hex( $1, cs1[ 1 ] )
end

else

# Cor Padrão

gc1 = Color.new( cs1_d[ 0 ], cs1_d[ 1 ],
cs1_d[ 2 ], cs1_d[ 3 ] )

end

#------------------

# Segunda Cor

if cs2.size == 4

# Array de Cores

gc2 = Color.new( cs2[ 0 ], cs2[ 1 ], cs2[ 2 ], cs2[ 3 ] )

elsif cs2.size == 2

# Hexadecimais

if cs2[ 0 ].sub( /([0123456789ABCDEF]+)/,'' )
gc2 = get_hex( $1, cs2[ 1 ] )
end

else

# Cor Padrão

gc2 = Color.new( cs2_d[ 0 ], cs2_d[ 1 ],
cs2_d[ 2 ], cs2_d[ 3 ] )

end

# Retornando...

return [ gc1, gc2 ]
end
end

#==========================================================
# ** Game_Map
# ---------------------------------------------------------
# > Classe interpretadora dos mapas do jogo
#==========================================================

class Game_Map

#==========================================================
# ** name
# ---------------------------------------------------------
# > Procedimento que atribui à um índice de variável global
# o ID do mapa em que o personagem principal está
#==========================================================

def name
$MapInfos[ @map_id ]
end
end

class Game_Actor

#==========================================================
# ** exp
# ---------------------------------------------------------
# > Procedimento que retorna um número operável quanto de
# XP o personagem possui ou o (zero) se não tiver nada.
# Diferentemente do original exp_s que além de retornar
# uma string numérica, se o personagem não tiver nada
# retorna 'tracinhos'
#==========================================================

def exp
return @exp_list[ @level +1 ] > 0 ? @exp : 0
end

#==========================================================
# ** next_exp
# ---------------------------------------------------------
# > Exatamente igual ao procedimento anterior, porém o
# valor retornado é a quantidade de XP necessária
# para a evolução
#==========================================================

def next_exp
return @exp_list[ @level + 1 ] > 0 ?
@exp_list[ @level + 1 ]: 0
end
end

#==========================================================
# ** Scene_Tile
# ---------------------------------------------------------
# > Classe interpretadora da janela de título
#==========================================================

class Scene_Title
$MapInfos = load_data("Data/MapInfos.rxdata")

for key in $MapInfos.keys
$MapInfos[ key ] = $MapInfos[ key ].name
end
end

Iori Yagami
avatar
.:Newbie:.
.:Newbie:.

Mensagens : 4

Ver perfil do usuário

Voltar ao Topo Ir em baixo

code Re: FleX Menu 1.0.1.1

Mensagem por Cyisthat em Qui Jul 19, 2012 11:02 am

Ficou show esse menu... Aprova +1cred Like a Star @ heaven

Cyisthat
avatar
.:Admin:.
.:Admin:.

Mensagens : 78
Idade : 19

Ver perfil do usuário http://lostmakers.web-rpg.com

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum