Jump to content

AD-Blocker detected, please disable your ad-blocker when surfing in makerando.com - There is no invasive Ad.

 

  • Chatbox

    You don't have permission to chat.
    Load More
Sign in to follow this  
Ally

Interfacce Menu Titolo Personalizzato

Recommended Posts

Nome Script: Menu Titolo Personalizzato

Versione: 1.1

Autore/i: Holy87

 

Informazioni:

Siete stufi della solita finestrella al titolo con solo Nuovo Gioco, Continua ed Esci?

Certo, in giro ci sono un sacco di script che modificano il titolo, ma questo è davvero bello ed interessante, con tanto di animazioni e personalizzazioni! Per capire veramente com'è, vi consiglio di scaricare la Demo.

 

Features:

Questo script può:

  • Aggiungere un collegamento a una pagina web
  • Aggiungere un bottone che porta a una mappa 'extra' che verrà fatta da voi
  • Totalmente compatibile con Updater System: puoi far apparire un popup che indica il bottone 'Aggiornamento'
  • Potrete farvi la grafica che vorrete con un programma di grafica o utilizzare gli esempi della demo
  • Potrete scegliere la velocità del cursore, l'altezza della barra...
Screenshots:

 

 

screenscript.png

 

 

 

Istruzioni:

Creare una nuova voce sopra Main e sotto Materials ed inserirci lo script.

Le varie personalizzazioni sono da settare nello script.

 

Script:

 

#==============================================================================
# * New Menu Title v1.1
# Creato da Holy 87
#------------------------------------------------------------------------------
# 31/08/2012 -> Aggiornato per compatibilità con la nuova versione dell'U.S.
# Script migliorato e bug corretti (v1.1)
# 20/02/2012 -> Script finito
# 16/02/2012 -> Script iniziato
#------------------------------------------------------------------------------
# Questo script crea una nuova variante del menu nella schermata del Titolo.
#
# * ISTRUZIONI *
# Piazza lo scritp sotto Materials, prima del Main e dopo lo script Updater
# System. Imposta le immagini che verranno usate come icone, lo script ne
# adatterà automaticamente la posizione.

# **COME USARE GLI EXTRA: Setta una coordinata d'inizio in una mappa fatta per
# ospitare il gioco-extra, quindi quando vuoi renderli disponibili al giocatore,
# non devi fare altro che scrivere "Ex_Options.unlock" nel Chiama Script, e come
# per magia comparirà nella schermata iniziale il comando Extra. Puoi anche
# settare un valore da poter usare in seguito, ad esempio scrivendo
# "Ex_Options.unlock(numero)", dove numero è il valore da mantenere, così da
# poter sbloccare vari extra per gradi. Per conoscere a quale valore sono
# sbloccati gli extra, basta mettere nella condizione SE, Script:
#

# * COMPATIBILITA' *
# Compatibile con la maggior parte degli script. Compatibile al 100% con
# l'Updater System e News System.
# Compatibile con lo script h87_Infos (prossimamente)
# Compatibile con lo script Yanfly Engine 6 Iconset
#==============================================================================
module MT_Setup
#==============================================================================
# * CONFIGURAZIONE *

# * Preferenze del Menu
#==============================================================================

#Attivare gli Extra?
Extras = true

#Inserisci l'ID Mappa e coordinate dello spawn quando si seleziona Extra
Map_ID = 2
Map_X = 8
Map_Y = 7

#Aggiungere un collegamento ad un sito?
SiteOpen = "http://www.rpgmkr.net" #scrivi nil se non lo vuoi

#Imposta l'altezza del menu rispetto allo schermo
AltezzaBarra = 190

#Imposta la distanza in pixel tra gli oggetti del Menu
Distanza = 10

#==============================================================================
# * Grafica degli Oggetti
#==============================================================================
OBJGRAPH = {
0 => "T_New", #Immagine del comando Nuovo Gioco
1 => "T_Load", #Immagine del comando Carica
2 => "T_Exit", #Immagine del comando Esci
3 => "T_Info", #Immagine del comando Informazioni
4 => "T_Extra", #Immagine del comando Extra
5 => "T_Web", #Immagine del comando Vai al Sito
6 => "T_Update", #Immagine del comando Aggiorna
7 => "" #Immagine del comando IconSet (di Yanfly)
} # non rimuovere la parentesi!

BALOONGRAPH = {
0 => "B_New", #Immagine del Fumetto Nuovo Gioco
1 => "B_Load", #Immagine del Fumetto Carica
2 => "B_Exit", #Immagine del Fumetto Esci
3 => "B_Info", #Immagine del Fumetto Info
4 => "B_Extra", #Immagine del Fumetto Extra
5 => "B_Web", #Immagine del Fumetto Vai al Sito
6 => "B_Update", #Immagine del Fumetto Aggiorna
7 => "" #Immagine del Fumetto IconSet(di Yanfly)
} # non rimuovere la parentesi!

#Immagine della barra di sfondo ai comandi.
BARGRAPH = "SfondoBarraTitle"

#Immagine di popup quando viene trovato un nuovo aggiornamento.
#Setta solo se hai implementato lo script Updater System.
Up_Popup = "PopUp"
#==============================================================================
# * Preferenze Grafiche
#==============================================================================
#Vuoi che la comparsa del menu dei comandi sia animata?
Animazione = true

#Setta la velocità di apparizione dei comandi (solo se Animazione = true).
#0: Contemporaneamente, 1: Velocissimo, 2: Veloce...
SPEEDANIM = 1

#Setta la velotità del cursore nello spostamento(NON METTERE 0)
CursorSpeed = 3 #1: Istantaneo, 2: Velocissimo, 3: Veloce, 4:Lento...

#Imposta la distanza da sinistra alla punta che avrà il fumetto.
DDP = 27
#==============================================================================
# * FINE DELLA CONFIGURAZIONE *
# Non modificare oltre questa riga, se non sai cosa stai facendo!
#=============================================================================?

end
$imported = {} if $imported == nil
$imported["H87_MenuTitle"] = true


module Ex_Options

#--------------------------------------------------------------------------
# * Sblocca e da valore agli extra.
#--------------------------------------------------------------------------
def self.unlock(x=1)
unless File.exist?("x_state.rvdata")
file = File.new("./x_state.rvdata", "a")
file.write(<img src='http://rpgmkr.net/forum/public/style_emoticons/<#EMO_DIR#>/sourirex.gif' class='bbc_emoticon' alt='X)' />
file.close
else
file = File.open("./x_state.rvdata", "w")
file.write(<img src='http://rpgmkr.net/forum/public/style_emoticons/<#EMO_DIR#>/sourirex.gif' class='bbc_emoticon' alt='X)' />
file.close
end
end

#--------------------------------------------------------------------------
# * Controlla se gli extra sono abilitati.
#--------------------------------------------------------------------------
def self.check_extra
@controllore = 0
if File.exist?("x_state.rvdata")
File.open("x_state.rvdata","r") do |f|
f.lineno = 1
@controllore = f.gets
@controllore.to_i
#@controllore = 0 if @controllore == nil
end
return true if @controllore.to_i >= 1
end
return false
end

#--------------------------------------------------------------------------
# * Da come ritorno il valore della cifra memorizzata.
#--------------------------------------------------------------------------
def self.state
if File.exist?("x_state.rvdata")
File.open("x_state.rvdata", "r") do |f|
f.lineno = 1
@numero = f.gets
return @numero.to_i
end
end
end
end

#==============================================================================
# * Classe Scene_Title
#==============================================================================
class Scene_Title < Scene_Base

#--------------------------------------------------------------------------
# * Alias del metodo di Aggiornamento
#--------------------------------------------------------------------------
alias h87_update update
def update
if Input.trigger?(Input::C) # Se si preme Invio
pressione_invio
end
if Input.repeat?(Input::LEFT) #Se si preme Sinistra
pressione_sinistra
end
if Input.repeat?(Input::RIGHT) #Se si preme Destra
pressione_destra
end
#h87_update
animazione_menu #Sequenza d'apertura del menu
animazione_fumetto #sequenza di animazione del fumetto
animazione_cursore
@Baloon.opacity += 25 if @CommandsActive
aggiorna_immagine if @agg_disp
end

#--------------------------------------------------------------------------
# * alias del metodo di chiusura
#--------------------------------------------------------------------------
alias h87_terminate terminate
def terminate
elimina_menu
h87_terminate
delete_objects
end

#--------------------------------------------------------------------------
# * Inizializza le variabili
#--------------------------------------------------------------------------
def inizializza_variabili
@title_state = 0 #lo stato del titolo
$Extra_Game = Ex_Options.check_extra
@cursore = 0
@cursore = 1 if @continue_enabled
@oggetti = []
#Cambia l'ordine di queste righe per cambiare l'ordine del menu.
@oggetti.push(0) #Nuovo Gioco
@oggetti.push(1) #Continua
@oggetti.push(3) if $imported["h87_Infos"] #Informazioni
@oggetti.push(4) if MT_Setup::Extras and $Extra_Game #Extra
@oggetti.push(5) if MT_Setup::SiteOpen != nil #Sito
@oggetti.push(6) if $imported["H87_Updater"] and @agg_disp #Aggiornamento
@oggetti.push(2) #Esci
@oggetti.push(7) if $TEST and $imported["Y6-Iconview"]
#------------------------------------------------
@num_oggetti = @oggetti.size
@CommandsActive = false #all'inizio non possono essere mossi comandi
@colore=0 #serve per memorizzare il colore dell'oggetto selezionato
end

#--------------------------------------------------------------------------
# * Ridefinizione della creazione della finestra di comando
#--------------------------------------------------------------------------
def create_command_window
inizializza_variabili
@sfondobarra = Sprite.new
@sfondobarra.bitmap = Cache.system(MT_Setup::BARGRAPH)
@sfondobarra.y = MT_Setup::AltezzaBarra
@luce = Sprite.new
@posix = MT_Setup::Distanza
@selettore = []
for i in [email protected]_oggetti-1 #crea le immagini dei pulsanti
@selettore[i] = Sprite.new
@selettore[i].bitmap = Cache.system(MT_Setup::OBJGRAPH[@oggetti[i]])
@selettore[i].x = @posix
@selettore[i].y = MT_Setup::AltezzaBarra + @sfondobarra.height/2 - @selettore[i].height/2
@posix += MT_Setup::Distanza + @selettore[i].width
@upd_n = i if @oggetti[i] == 6 #memorizza la posizione dell'update
end
inizializza_fumetto # crea l'immagine del fumetto
crea_immagine if $update_avaiable # crea il popup di aggiornamento
if MT_Setup::Animazione #rende gli oggetti trasparenti se si anima
@old_position = []
for i in [email protected]
@old_position[i] = @selettore[i].y
@selettore[i].y -= 21
@selettore[i].opacity = 0
@anim_counter = 0
end
@timemax = MT_Setup::SPEEDANIM*@selettore.size
end
@CommandsActive = true unless MT_Setup::Animazione
end

#--------------------------------------------------------------------------
# * Crea l'immagine del fumetto di descrizione.
#--------------------------------------------------------------------------
def inizializza_fumetto
@Baloon = Sprite.new
@Baloon.opacity = 0
aggiorna_cursore
end

#--------------------------------------------------------------------------
# * Anima i componenti del menu
#--------------------------------------------------------------------------
def animazione_menu
if MT_Setup::Animazione and @title_state == 0
for i in [email protected]
if @anim_counter > @timemax*i
@selettore[i].opacity += 10
@selettore[i].y += 4 if @selettore[i].y < @old_position[i]
@selettore[i].y -= 1 if @selettore[i].y > @old_position[i]
end
end
@anim_counter += 1
if @selettore[@selettore.size-1].opacity >= 255
@CommandsActive = true
aggiorna_cursore
@title_state = 1
end
end
if @title_state == 1 and MT_Setup::Animazione
for i in [email protected]
@selettore[i].y -= 1 if @selettore[i].y > @old_position[i]
end
end
end

#--------------------------------------------------------------------------
# * Esecuzione del comando Invio
#--------------------------------------------------------------------------
def pressione_invio
@comando = @oggetti[@cursore]
case @comando
when 0
command_new_game
when 1
command_continue
when 2
command_shutdown
when 3
command_infos
when 4
command_extras
when 5
command_website
when 6
vai_aggiornamento
when 7
command_iconview
end
end

#--------------------------------------------------------------------------
# * Esecuzione del tasto Sinistra
#--------------------------------------------------------------------------
def pressione_sinistra
if @CommandsActive
Sound.play_cursor
@cursore -= 1
@cursore = @num_oggetti-1 if @cursore < 0
aggiorna_cursore
end
end

#--------------------------------------------------------------------------
# * Esecuzione del tasto Destra
#--------------------------------------------------------------------------
def pressione_destra
if @CommandsActive
Sound.play_cursor
@cursore += 1
@cursore = 0 if @cursore > @num_oggetti -1
aggiorna_cursore
end
end

#--------------------------------------------------------------------------
# * Sequenza di aggiornamento del cursore
#--------------------------------------------------------------------------
def aggiorna_cursore
@Baloon.bitmap = Cache.system(MT_Setup::BALOONGRAPH[@oggetti[@cursore]])
@prossimaX = @selettore[@cursore].x + @selettore[@cursore].width/2-MT_Setup::DDP
@prossimaY = @selettore[@cursore].y + @selettore[@cursore].height+10
@selettore[@cursore].y += 7 if MT_Setup::Animazione and @CommandsActive
@Baloon.x = @prossimaX if @Baloon.x == 0
@Baloon.y = @prossimaY if @Baloon.x == 0
@colore = 0
@cursore_in_movimento = true
end

#--------------------------------------------------------------------------
# * Animazione dei movimenti del fumetto
#--------------------------------------------------------------------------
def animazione_fumetto
if @cursore_in_movimento
@distanzaX = @[email protected]
@distanzaY = @[email protected]
@Baloon.x += @distanzaX/MT_Setup::CursorSpeed
@Baloon.y += @distanzaY/MT_Setup::CursorSpeed
end
end

#--------------------------------------------------------------------------
# * Illumina l'oggetto selezionato
#--------------------------------------------------------------------------
def animazione_cursore
@colore +=3 if @colore < 60
for i in [email protected]
if i == 1 and @continue_enabled == false
grigio = 255
else
grigio = 0
end
if $imported["H87_Updater"]
if Updater.forzato? and (i == 0 or i == 1)
grigio = 255
end
end
if i == @cursore
@selettore[i].tone.set(@colore,@colore,@colore,grigio)
else
@selettore[i].tone.set(0,0,0,grigio)
end
end
end

#--------------------------------------------------------------------------
# * Provvede alla cancellazione degli oggetti di gioco
#--------------------------------------------------------------------------
def delete_objects
for i in [email protected]
@selettore[i].dispose
end
@Baloon.dispose
@sfondobarra.dispose
end


#--------------------------------------------------------------------------
# * Apre la pagina web
#--------------------------------------------------------------------------
def command_website
Sound.play_decision
string = "explorer " + MT_Setup::SiteOpen
Thread.new{system(string)}
end

#--------------------------------------------------------------------------
# * Porta alla mappa extra
#--------------------------------------------------------------------------
def command_extras
elimina_menu
Sound.play_decision
$game_map.setup(MT_Setup::Map_ID)
$game_player.moveto(MT_Setup::Map_X, MT_Setup::Map_Y)
$game_player.refresh
$scene = Scene_Map.new
RPG::BGM.fade(1500)
close_command_window
Graphics.fadeout(60)
Graphics.wait(40)
Graphics.frame_count = 0
RPG::BGM.stop
$game_map.autoplay
end

#--------------------------------------------------------------------------
# * Crea il popup di aggiornamento
#--------------------------------------------------------------------------
def crea_immagine
@imm_popup = Sprite.new
@imm_popup.bitmap = Cache.system(MT_Setup::Up_Popup)
@imm_popup.x = @selettore[@upd_n].x + @selettore[@upd_n].width/2 - @imm_popup.width/2
@imm_popup.y = @selettore[@upd_n][email protected]_popup.height
@imm_popup.y += 14 if MT_Setup::Animazione
end

#--------------------------------------------------------------------------
# * Nasconde il Menu per non mostrarlo in altre scene.
#--------------------------------------------------------------------------
def elimina_menu
@title_state = 2
for i in [email protected]
@selettore[i].opacity = 0
end
@imm_popup.opacity = 0 if @imm_popup != nil
@Baloon.opacity = 0
@sfondobarra.opacity = 0
end

#--------------------------------------------------------------------------
# * Metodo ridefinito
#--------------------------------------------------------------------------
alias h87_newg command_new_game
def command_newgame
elimina_menu
h87_newg
end

#--------------------------------------------------------------------------
# * Metodo ridefinito
#--------------------------------------------------------------------------
alias h87_end command_shutdown
def command_shutdown
elimina_menu
h87_end
end

def open_command_window
end

def close_command_window
end

def dispose_command_window
end

end

Demo:

Download (395 kb)

 

Incompatibilità:

Ovviamente non è compatibile con gli script che modificano pesantemente il titolo. E' compatibile al 100% con i suoi script "News System" e "Game Updater System" e compatibile con lo Y6 Icon Module.

Gli script che modificano non totalmente il titolo potrebberero funzionare sotto questo script nell'Editor Script.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By MrSte
      Autore/i: Nicke
       
      Versione: 1.0a
       
      Informazioni: Questo Script permette di aggiungere o di creare delle missioni per il proprio gioco, aggiungendo EXP, Soldi, Armi oppure Oggetti come ricompensa 
       
      Script:
       
      Core (Prima di installare lo Script, installate questo): http://niclas-thornqvist.se/rpg/scripts/ace/xs-core.txt
       
      Script: http://niclas-thornqvist.se/rpg/scripts/ace/xs-journal.txt
       
      Crediti:
      Creditate l'autore dello Script ovvero Nicke, lo script può essere usato anche per giochi commerciali 
    • By Ally
      Nome Script: MSX - Scene_Menu MOD
      Versione: 1.0
      Autore/i: Melosx
       
      Informazioni:
      Modifica il menu. Riscrive lo stile delle barre non solo nel menù ma in tutto il gioco.
       
      Screenshots:
       
       
       
      Istruzioni:
      Nello script.
       
      Script:
       
       
    • By Ally
      Nome Script: MSX - Name Input
      Versione: 1.0
      Autore/i: Melosx
       
      Features:
      Modifica la schermata di inserimento del nome eroe.
       
      Screenshots:
       
       
       
      Istruzioni:
      Copiare sotto materialse sopra main.
       
      Script:
       
       
    • By Ally
      Nome Script: MSX - Window_SaveFile
      Versione: 1.0
      Autore/i: Melosx
       
      Informazioni:
      Nuova finestra di salvataggio con più elementi. Consiglio l'utilizzo dello script Text Cache per una corretta resa delle stringhe di testo.
       
      Screenshots:
       
       
       
      Istruzioni:
      Copiare lo script Sopra Main e sotto Materials
       
      Script:
       
       
      #==============================================================================# ** MSX - Window_SaveFile II#==============================================================================# Author: Melosx# Versione: 1.0# Release Date: 27/03/2012# #==============================================================================# * Description# -----------------------------------------------------------------------------# This script change the Window_SaveFile by adding more information.# This release add: actor name, level, class, map name and gold.##==============================================================================# * Instruction# -----------------------------------------------------------------------------# Place the script under Materials and above Main.##==============================================================================#==============================================================================# ** DataManager#==============================================================================module DataManager def self.make_save_header header = {} header[:characters] = $game_party.characters_for_savefile header[:playtime_s] = $game_system.playtime_s header[:info] = $game_party.characters_info_for_savefile header endend#==============================================================================# ** Game_Party#==============================================================================class Game_Party < Game_Unit def characters_info_for_savefile battle_members.collect do |actor| map_name = load_data("Data/MapInfos.rvdata2")[$game_map.map_id].name [actor.name, actor.level, actor.class.name, $game_party.gold, map_name, actor.face_name, actor.face_index] end endend#==============================================================================# ** Window_SaveFile#==============================================================================class Window_SaveFile < Window_Base def refresh contents.clear self.contents.font.size = 16 change_color(normal_color) name = Vocab::File + " #{@file_index + 1}" draw_text(4, 0, 200, line_height, name) @name_width = text_size(name).width draw_playtime(0, contents.height - line_height, contents.width - 4, 2) draw_info draw_party_characters(150, 117) end def draw_party_characters(x, y) header = DataManager.load_header(@file_index) return unless header header[:characters].each_with_index do |data, i| draw_character(data[0], data[1], x + i * 115, y) end end def draw_playtime(x, y, width, align) header = DataManager.load_header(@file_index) return unless header draw_text(x, y, width, line_height, "Playtime: " + header[:playtime_s], 2) end def draw_info header = DataManager.load_header(@file_index) return unless header header[:info].each_with_index do |data, i| draw_face(data[5], data[6], 70 + i * 115, 23) draw_text(70 + i * 115, 3, 110, line_height, data[0], 0) draw_text(75 + i * 115, 38, 110, line_height, Vocab.level_a + " " + data[1].to_s, 0) draw_text(75 + i * 115, 23, 105, line_height, data[2], 0) draw_text(0, contents.height - line_height, contents.width - 4, line_height, "Map: " + data[4], 1) draw_text(4, contents.height - line_height, contents.width - 4, line_height, "Gold: " + data[3].to_s + Vocab::currency_unit, 0) end endend#==============================================================================# ** Scene_File#==============================================================================class Scene_File < Scene_MenuBase def visible_max return 2 endendend
    • By Ally
      Nome Script: Syvkal's Menu Bars VXAce
      Versione: 1.2
      Autore/i: Syvkal
       
      Informazioni:
      Con questo script,potete avere le barre HP, MP etc,in stile diverso,come potete vedere dalle immagini ^^
      Lo stesso script è anche presente per il VX...
       
      Screenshots:
       
       
       
      Istruzioni:
      Inserire lo script sotto Material.
      Altre istruzioni all'interno dello script.
       
      Script
       
       
      #==============================================================================# ** Syvkal's Menu Bars VXAce#------------------------------------------------------------------------------# by Syvkal# Version 1.2# 19-03-12#------------------------------------------------------------------------------# * Original available at:# www.rpgmakervxace.net & forums.rpgmakerweb.com# Please do not redistribute this script#------------------------------------------------------------------------------# * Terms of Use# Available for use in commercial games provided that I get a free copy # Email me: [email protected]# Please do not redistribute this script#==============================================================================## - INTRODUCTION -## This system implements a series of Plug 'N' Play Menu Bars/Gauges# The Bars (and some of the colour schemes) were inspired CogWheel,# but all coding was done by me##------------------------------------------------------------------------------## - USAGE -## This system will work as soon as you put it in the Script Editor# You can edit the script from the Configuration System## --- Custom Gauges -----------------------------------## I have designed the script so you can easily (with minimal scripting# knowledge) add you own custom gauges for any attribute you want## To draw a gauge use:# draw_syvkal_gauge(x, y, width, rate, color1, color2, slant)## rate : Percentage of your custom attribute max (full at 1.0)# color1 : left side gradient color# color2 : right side gradient color# style : gauge draw style (explained in the Configuration System)## --- Auto Generate Color ---------------------------## Additionally, I have added an extra function to make it easy to# create your own colours that change as the gauge decreases## To generate a custom colour use:# auto_color(color1, color2, r)## r : Percentage of your custom attribute max (full at 1.0)# color1 : Colour you want for when the gauge is full# color2 : Colour you want for when the gauge is nearly empty## This generates a SINGLE colour that changes with the gauge# Each gauge requires two colours so it has a gradient## --- Ring Bars -------------------------------------## Ring Bars have been removed for now, I didn't like how they looked# Testing has shown RGSS3 is more capable of the kind of ring bars I# wanted to make, but I want to perfect them first##============================================================================== #===================================================# # ** M I N O R C O N F I G U R A T I O N ** # #===================================================# #-------------------------------------------------------------------------- # * Parameter Gauge Max # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Minor addition allowing you to choose a max for the parameter gauges # Best set just above your actor's highest stat (to allow for buffs) # Excludes HP, MP, TP # (This does not affect your actor's stats, but simply makes the gauges # fill up quicker and look more appealing) #-------------------------------------------------------------------------- P_MAX = 400 # Parameter Gauge Max #-------------------------------------------------------------------------# # ** Full Configuration system further down ** # #-------------------------------------------------------------------------##==============================================================================# ** Window_Base#------------------------------------------------------------------------------# Replaces various 'Draw' functions to add each gauge.#==============================================================================class Window_Base < Window #===================================================# # ** C O N F I G U R A T I O N S Y S T E M ** # #===================================================# #-------------------------------------------------------------------------- # * Gauge Draw Styles # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Use different bracket types to 'draw' the style of each bar # Available bracket types: # ( ) < > | / \ # Simply mix and match for achieve your desired effect # # To use the default rectangular gauges, use | or simply leave blank # eg. '| |' or '' # Any invalid symbol will result in the default | as well # # - - W A R N I N G - - # # When using the following bracket: # \ # Ensure it is followed a space (eg. '| \ ') or itself (eg. '| \\') # If the rest of the text below turns purple, you've done it wrong #-------------------------------------------------------------------------- HPSTYLE = '| |' # Style of the HP Gauge MPSTYLE = '| |' # Style of the MP Gauge TPSTYLE = '/ /' # Style of the TP Gauge PARSTYLE = '( )' # Style of the Parameter Gauges #-------------------------------------------------------------------------- # * Additional Gauge Preferences # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Simple adjustments to aesthetics # Advised to use SLANTDSIZE if you have used / or \ in multiple bars #-------------------------------------------------------------------------- THICKCURVED = false # Slightly thicken curved bars? SLANTDSIZE = true # Shorten slanted bars? #-------------------------------------------------------------------------- # * Gauge Border Colors # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Control the colours of the gauge borders #-------------------------------------------------------------------------- COLOR1 = Color.new(0, 0, 0, 192) # Outer Border COLOR2 = Color.new(255, 255, 192, 192) # Inner Border #-------------------------------------------------------------------------- # * Empty Cauge Filler Colors # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Control the colours of the empty gauge filler #-------------------------------------------------------------------------- COLOR3 = Color.new(0, 0, 0, 12) # Half of Inner Shading COLOR4 = Color.new(64, 0, 0, 92) # Half of Inner Shading #-------------------------------------------------------------------------- # * Paramater Gauge Colors # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Control the colours of various parameters such as ATK, DEF, etc. # (HP, MP, TP are in the 'Complex Configuration' section) #-------------------------------------------------------------------------- def param_gauge_color1(param_id) case param_id when 2 text_color(20) # ATK Gauge Color1 when 3 text_color(14) # DEF Gauge Color1 when 4 text_color(30) # MAT Gauge Color1 when 5 text_color(13) # MDF Gauge Color1 when 6 text_color(28) # AGI Gauge Color1 when 7 text_color(19) # LUK Gauge Color1 end end def param_gauge_color2(param_id) case param_id when 2 text_color(21) # ATK Gauge Color1 when 3 text_color(6) # DEF Gauge Color1 when 4 text_color(31) # MAT Gauge Color1 when 5 text_color(5) # MDF Gauge Color1 when 6 text_color(29) # AGI Gauge Color1 when 7 text_color(7) # LUK Gauge Color1 end end #===================================================# # ** C O M P L E X C O N F I G U R A T I O N ** # #===================================================# #-------------------------------------------------------------------------- # * HP Gauge Colors # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Control the colours of the HP gauge # (Edit only if you know what you're doing) #-------------------------------------------------------------------------- def hp_gauge_color1 # HP Guage Color1 return Color.new(80 - 24 * @rate, 80 * @rate, 14 * @rate, 192) end def hp_gauge_color2 # HP Guage Color2 return Color.new(240 - 72 * @rate, 240 * @rate, 62 * @rate, 192) end #-------------------------------------------------------------------------- # * MP Gauge Colors # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Control the colours of the MP gauge # (Edit only if you know what you're doing) #-------------------------------------------------------------------------- def mp_gauge_color1 # MP Guage Color1 return Color.new(14 * @rate, 80 - 24 * @rate, 80 * @rate, 192) end def mp_gauge_color2 # MP Guage Color2 return Color.new(62 * @rate, 240 - 72 * @rate, 240 * @rate, 192) end #-------------------------------------------------------------------------- # * TP Gauge Colors # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Control the colours of the TP gauge # (Edit only if you know what you're doing) #-------------------------------------------------------------------------- def tp_gauge_color1 # TP Gauge Color1 return auto_color(Color.new(192,0,0,192), Color.new(255,110,0,192)) end def tp_gauge_color2 # TP Gauge Color2 return auto_color(Color.new(255,165,0,192), Color.new(255,220,0,192)) end #===================================================# # ** E N D C O N F I G U R A T I O N ** # #===================================================# #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :rate # Rate for Colour calculations #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias draw_actor_param_original draw_actor_param alias initialize_original initialize #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize(x, y, width, height) @rate = 1.0 initialize_original(x, y, width, height) end #-------------------------------------------------------------------------- # * Draw HP #-------------------------------------------------------------------------- def draw_actor_hp(actor, x, y, width = 124) @rate = [actor.hp_rate, 1.0].min draw_syvkal_gauge(x, y, width, @rate, hp_gauge_color1, hp_gauge_color2, HPSTYLE) change_color(system_color) draw_text(x, y, 30, line_height, Vocab::hp_a) draw_current_and_max_values(x, y, width, actor.hp, actor.mhp, hp_color(actor), normal_color) end #-------------------------------------------------------------------------- # * Draw MP #-------------------------------------------------------------------------- def draw_actor_mp(actor, x, y, width = 124) @rate = [actor.mp_rate, 1.0].min draw_syvkal_gauge(x, y, width, @rate, mp_gauge_color1, mp_gauge_color2, MPSTYLE) change_color(system_color) draw_text(x, y, 30, line_height, Vocab::mp_a) draw_current_and_max_values(x, y, width, actor.mp, actor.mmp, mp_color(actor), normal_color) end #-------------------------------------------------------------------------- # * Draw TP #-------------------------------------------------------------------------- def draw_actor_tp(actor, x, y, width = 124) @rate = [actor.tp_rate, 1.0].min draw_syvkal_gauge(x, y, width, @rate, tp_gauge_color1, tp_gauge_color2, TPSTYLE) change_color(system_color) draw_text(x, y, 30, line_height, Vocab::tp_a) change_color(tp_color(actor)) draw_text(x + width - 42, y, 42, line_height, actor.tp.to_i, 2) end #-------------------------------------------------------------------------- # * Draw Parameters # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate # type : Type of parameters (0-3) #-------------------------------------------------------------------------- def draw_actor_param(actor, x, y, param_id, width = 156) draw_syvkal_gauge(x, y, width, actor.params_rate(param_id), param_gauge_color1(param_id), param_gauge_color2(param_id), PARSTYLE) draw_actor_param_original(actor, x, y, param_id) end #-------------------------------------------------------------------------- # * Auto Generate Color # color1 : initial color # color2 : ending color # r : rate (full at 1.0) 1 -> color1, 0 -> color2 #-------------------------------------------------------------------------- def auto_color(color1, color2, r = @rate) a_color = Color.new a_color.red = (1-r)*color2.red + r*color1.red a_color.green = (1-r)*color2.green + r*color1.green a_color.blue = (1-r)*color2.blue + r*color1.blue a_color.alpha = (1-r)*color2.alpha + r*color1.alpha return a_color end #-------------------------------------------------------------------------- # * Draw Syvkal Style Gauge # rate : Rate (full at 1.0) # color1 : Left side color # color2 : Right side color # style : gauge draw style #-------------------------------------------------------------------------- def draw_syvkal_gauge(x, y, width, rate, color1, color2, style = '') fill_w = (width * rate).to_i gauge_y = y + line_height - 8 h = 6 style.slice!(/\s*/); style = style.split(/\s*/) if style.empty? or (style[0] == '|' && style[1] == '|') contents.fill_rect(x-2, gauge_y-2, width+4, 10, COLOR1) contents.fill_rect(x-1, gauge_y-1, width+2, 8, COLOR2) contents.gradient_fill_rect(x, gauge_y, width, 6, COLOR3, COLOR4) contents.gradient_fill_rect(x, gauge_y, fill_w, 6, color1, color2) else adj1 = style_adj_string(style[0]); adj2 = style_adj_string(style[1], true) h += 4 for i in 0...h a1 = eval(adj1[0]); a2 = eval(adj2[0]) a3 = adj1[2]; a4 = adj2[4].nil? ? adj2[2] : adj2[4] contents.fill_rect(x-a3 +a1, gauge_y-2 + i, width+(a3+a4) - a1 - a2, 1, COLOR1) end h -= 2 for i in 0...h a1 = eval(adj1[0]); a2 = eval(adj2[0]) a3 = adj1[1]; a4 = adj2[3].nil? ? adj2[1] : adj2[3] contents.fill_rect(x-a3 +a1, gauge_y-1 + i, width+(a3+a4) - a1 - a2, 1, COLOR2) end h -= 2 for i in 0...h a1 = eval(adj1[0]); a2 = eval(adj2[0]) contents.gradient_fill_rect(x +a1, gauge_y +i, width - a1 - a2, 1, COLOR3, COLOR4) end for i in 0...h a1 = eval(adj1[0]); a2 = eval(adj2[0]) contents.gradient_fill_rect(x +a1, gauge_y +i, fill_w - a1 - a2, 1, color1, color2) end end end #-------------------------------------------------------------------------- # * Get Style Specific Adjustment Array # sym : edge style '(', ')', '<', '>', '|', '/' or '\' # edge : end of the gauge? # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Returns an array containing the following: # * a formular string to be evaluated # * adjustments to x and width values for Outer and Inner Borders #-------------------------------------------------------------------------- def style_adj_string(sym, edge = false) case sym when '/' SLANTDSIZE ? [(edge ? 'i+2' : '(h+1) - i'), 3, 5] : [(edge ? 'i' : '(h-1) - i'), 3, 5] when '\\' SLANTDSIZE ? [(edge ? '(h+1) - i' : 'i+2'), 3, 5] : [(edge ? '(h-1) - i' : 'i'), 3, 5] when '<' [(edge ? '(h/2)-((h/2) - i).abs' : '((h/2) - i).abs'), 2, 3] when '>' [(edge ? '((h/2) - i).abs' : '(h/2)-((h/2) - i).abs'), 2, 3] when '(' [(edge ? '((h/2) * Math.sin(i * 1.0 * Math::PI / (h-1))).round.to_i' : '(h-6) - ((h/2) * Math.sin(i * 1.0 * Math::PI / (h-1))).round.to_i'), THICKCURVED ? 3 : 2, THICKCURVED ? 5 : 4, 3, 5] when ')' [(edge ? '(h-3) - ((h/2) * Math.sin(i * 1.0 * Math::PI / (h-1))).round.to_i' : '((h/2) * Math.sin(i * 1.0 * Math::PI / (h-1))).round.to_i'), 3, 5, THICKCURVED ? 3 : 2, THICKCURVED ? 5 : 4] else # eg. | or invalid sym ['0', 1, 2] end end #-------------------------------------------------------------------------- # * Draw Gauge #-------------------------------------------------------------------------- def draw_gauge(x, y, width, rate, color1, color2, style = '') r = [rate, 1.0].min draw_syvkal_gauge(x, y, width, r, color1, color2, style) endend#==============================================================================# ** Game_BattlerBase#------------------------------------------------------------------------------# Added specialised 'params_rate' function.#==============================================================================class Game_BattlerBase #-------------------------------------------------------------------------- # * Get Percentage of Paramaters #-------------------------------------------------------------------------- def params_rate(param_id) return [param(param_id).to_f / P_MAX, 1.0].min endend#==============================================================================# ** Script Import#============================================================================== $imported = {} if $imported == nil $imported["Syvkal's Menu Bars"] = true
×