Versione: 1.3
Autore/i: Melosx
Informazioni:
Menu adatto per giochi con 3 pg.
Screenshots:
Come al solito copiate lo script sopra Main e sotto Materials.
Tutto ciò che dovete fare è configurarlo, se volete, come più vi pare grazie al comodo modulo.
Leggetevi la pèarte iniziale dello script per maggiori info.
Script:
#=============================================================================
# Menu per 3 pg
#=============================================================================
# Autore: Melosx
# Versione: 1.3
# Data di creazione: 23-5-2011 => v1.0
# 24-5-2011 => v1.1
# 25-5-2011 => v1.1.1
# 27-5-2011 => v1.2
# 2-6-2011 => v1.3
#
# Feature:
#
# - Aggiunta barra dell'esperienza.
# - Possibilità di cambiare il numero di status visibili.
# - Possibilità di modificare lunghezza, posizione(x,y) e colori delle bare
# PV/PM/EXP.
# - Possibilità di scegliere se visualizzare il face o la grafica del chara.
# - Altro che non ricordo XD... EHEHEHEHEHEH... Vi basta comunque dare un occhio
# alle voci del modulo di configurazione per vedere l mole di roba che si può
# personalizzare.
#
# Storia:
#
# 1.0: Cambiata la composizione delle finestre per come si presentano ora.
# Aggiunta la Window_Tempo
#
# 1.1: Creato il modulo di configurazione per rendere estremamente facile la
# personalizzazione del menù.
#
# 1.1.1: Fixato un piccolo bug con Window_SkillStatus.
# Aggiunte le novità della Window_MenuStatus nel menu Status.
#
# 1.2: Possibilità di scegliere tra face o grafica del chara con correzioni
# automatiche alle posizioni in base alla scelta.
# Unione dei tre script iniziali in uno solo per un facile inserimento
# in un progetto.
#
# 1.3: Terminato il modulo MAW.
#
# Note:
# Cambiando il numero di status visibili nel menu cambiano anche quelli
# visibili in Status.
# Cambiando il colore delle barre cambierà anche nelle barre in bataglia e nei
# menu dove sono presenti barre(vedrò di risolvere questo problema se a qualcuno
# da fastidio).
#=============================================================================
#==============================================================================
# ** Modulo di configurazione di Window_MenuStatus
#==============================================================================
module MMS
#==============================================================================
# ** Colori delle barre
#------------------------------------------------------------------------------
# Per cambiare i colori delle barre avrete bisogno di vedere la windowskin del
# vostro gioco. In baso a destra infatti trovate i colori che il gioco utilizzerà
# per creare le barre. Gli indici dei colori partono da 0 che è il primo quadrato
# in alto a sinistra e arrivano a 31 l'ultimo quadrato in baso a destra.
# Ecco uno schema degli indici
#
# | 0| 1| 2| 3| 4| 5| 6| 7|
# | 8| 9|10|11|12|13|14|15|
# |16|17|18|19|20|21|22|23|
# |24|25|26|27|28|29|30|31|
#
#==============================================================================
USAFACE = false
#------------------------------------------------------------------------------
# ** Variabili generali
#------------------------------------------------------------------------------
# Cambiandone il valore si stabilisce il valore di partenza di tutte le altre
# variabili.
#
# Default
# MSX = 0
# MSY = 0
#------------------------------------------------------------------------------
MSX = 0 # - verso sinistra, + verso destra
MSY = 0 # - verso l'alto, + verso il basso
#------------------------------------------------------------------------------
# ** Sposta la grafica del character
#------------------------------------------------------------------------------
CHX = 25 # - verso sinistra, + verso destra
CHY = 5 # - verso l'alto, + verso il basso
##------------------------------------------------------------------------------
# ** Sposta la grafica del face
#------------------------------------------------------------------------------
FACEX = 2
FACEY = 2
FACEGR = 80
#------------------------------------------------------------------------------
# ** Nome del personaggio
#------------------------------------------------------------------------------
NOMEX = 5 # - verso sinistra, + verso destra
NOMEY = 35 # - verso l'alto, + verso il basso
#------------------------------------------------------------------------------
# ** Classe del personaggio
#------------------------------------------------------------------------------
CLASSEX = 80 # - verso sinistra, + verso destra
CLASSEY = -10 # - verso l'alto, + verso il basso
#------------------------------------------------------------------------------
# ** Status
#------------------------------------------------------------------------------
STATUSX = 188 # - verso sinistra, + verso destra
STATUSY = 46 # - verso l'alto, + verso il basso
STATUSN = 8 # Numero di status da visualizzare
#------------------------------------------------------------------------------
# ** Scritta status
#------------------------------------------------------------------------------
NSTATUS = "Status:" # Termine che indica gli status
NSTATUSX = 80 # - verso sinistra, + verso destra
NSTATUSY = 46 # - verso l'alto, + verso il basso
##------------------------------------------------------------------------------
# ** Livello del personaggio
#------------------------------------------------------------------------------
LIVX = 80 # - verso sinistra, + verso destra
LIVY = -10 # - verso l'alto, + verso il basso
#------------------------------------------------------------------------------
# ** Barra PV
#------------------------------------------------------------------------------
PVX = 205 # - verso sinistra, + verso destra
PVY = -12 # - verso l'alto, + verso il basso
PVBL = 150 # Lunghezza della barra
PVBC1 = 28 # Colore 1
PVBC2 = 29 # Colore 2
PVBCC = 0 # Colore del bordo
PVBCS = 15 # Colore sfondo barra
#------------------------------------------------------------------------------
# ** Barra PM
#------------------------------------------------------------------------------
PMX = 205 # - verso sinistra, + verso destra
PMY = -12 # - verso l'alto, + verso il basso
PMBL = 150 # Lunghezza della barra
PMBC1 = 12 # Colore 1
PMBC2 = 4 # Colore 2
PMBCC = 0 # Colore del bordo
PMBCS = 15 # Colore sfondo barra
#------------------------------------------------------------------------------
# ** Scritta Esperienza e valori
#------------------------------------------------------------------------------
NEXP = "Esperienza" # Termine che indica l'esperienza
NEXPX = 400 # - verso sinistra, + verso destra
NEXPY = 0 # - verso l'alto, + verso il basso
#------------------------------------------------------------------------------
# Barra esperienza
#------------------------------------------------------------------------------
EXPBX = 400 # - verso sinistra, + verso destra
EXPBY = 17 # - verso l'alto, + verso il basso
EXPBL = 100 # Lunghezza della barra
EXPBC1 = 14 # Colore 1
EXPBC2 = 6 # Colore 2
EXPBCC = 0 # Colore del bordo
EXPBCS = 15 # Colore sfondo barra
end
#==============================================================================
# ** Modulo di configurazione delle altre Window
#==============================================================================
module MAW
#------------------------------------------------------------------------------
# ** Window_Gold - Configurazione
#------------------------------------------------------------------------------
WGX = 0
WGY = 360
WGSX = 4 # Coordinata x delle scritte
WGSY = 0 # Coordinata y delle scritte
WGSL = 220 # Lunghezza area di scrittura. Se il nome della moneta del
# vostro gioco è lungo e non lo visualizzate tutto diminuite
# il valore cosi entrerà tutto.
WGFNT = 18 # Grandezza font.
#------------------------------------------------------------------------------
# Impostare, in base alle proprie necessità, una delle tre variabili,WGIS, WGSS
# o WGISS, su true e le altre due su false
#------------------------------------------------------------------------------
WGIS = false # true/false => SOLO l'icona
WGI = 147 # ID dell'icona
WGSS = false # true/false => SOLO la scritta
WGSN = "Denaro" # Termine
WGISS = true # true/false => Icona + Scritta
WGIAG = 70 # muove a destra o sinistra l'icona. Da cambiare, se WGISS
# è impostato su true, in base all'esigenza.
#------------------------------------------------------------------------------
# ** Window_Tempo - Configurazione
#------------------------------------------------------------------------------
WTX = 272
WTY = 360
WTSX = 0 # Coordinata x delle scritte.
WTSY = 0 # Coordinata y delle scritte.
WTSL = 220 # Lunghezza area di scrittura.
WTSN = "Tempo di gioco:" # Termine che indica il tempo di gioco.
WTFNT = 18 # Grandezza font.
end
#==============================================================================
# ** Window_MenuStatus
#==============================================================================
class Window_MenuStatus < Window_Selectable
include MMS
def initialize(x, y)
super(0, 56, 544, 305)
refresh
self.active = true
self.index = -1
end
def refresh
self.contents.clear
@item_max = 3
for actor in $game_party.members
x = MMS::MSX
y = actor.index * 92 + WLH / 2 + MMS::MSX
if MMS::USAFACE == true
@piux = 10
@piuy = 10
draw_actor_face(actor, x + MMS::FACEX, actor.index * 92 + MMS::FACEY, MMS::FACEGR)
else
@piux = 0
@piuy = 0
draw_actor_graphic(actor, x + MMS::CHX, y + (WLH + MMS::CHY))
end
draw_actor_name(actor, x + MMS::NOMEX, y + @piuy = 10 + MMS::NOMEY)
draw_actor_class(actor, x + MMS::CLASSEX + @piux, y + (WLH * 0) + MMS::CLASSEY)
draw_actor_state(actor, x + MMS::STATUSX + @piux, y + MMS::STATUSY)
draw_actor_level(actor, x + MMS::LIVX + @piux, y + (WLH * 1) + MMS::LIVY)
draw_actor_hp(actor, x + MMS::PVX + @piux, (y + MMS::PVY) + WLH * 0, width = MMS::PVBL)
draw_actor_mp(actor, x + MMS::PMX + @piux, (y + MMS::PMY) + WLH * 1, width = MMS::PMBL)
draw_actor_exp_gauge(actor, x + MMS::EXPBX, actor.index * 92 + MMS::EXPBY)
draw_exp_info(actor , x + MMS::NEXPX, actor.index * 92 + MMS::NEXPY)
self.contents.draw_text( x + MMS::NSTATUSX + @piux, y + MMS::NSTATUSY, 100, 32, MMS::NSTATUS, 2)
end
end
def update_cursor
if @index < 0
self.cursor_rect.empty
elsif @index < @item_max
self.cursor_rect.set(0, @index * 92, contents.width, 85)
elsif @index >= 100
self.cursor_rect.set(0, (@index - 100) * 92, contents.width, 85)
else
self.cursor_rect.set(0, 0, contents.width, @item_max * 85)
end
end
def draw_exp_info(actor, x, y)
s1 = actor.exp_s
s2 = actor.corr_exp
s3 = s1-s2
s4 = actor.pros_lvl_exp
exp = s3.to_s + " / " + s4.to_s
self.contents.draw_text(x, y + WLH * 0, 100, WLH, MMS::NEXP)
self.contents.draw_text(x, y + WLH * 1, 100, WLH, exp, 2)
end
def draw_actor_exp_gauge(actor, x, y, width = MMS::EXPBL)
s1 = actor.exp_s
s2 = actor.corr_exp
s3 = s1-s2
s4 = actor.pros_lvl_exp
gw = width * s3 / s4
gc1 = text_color(MMS::EXPBC1)
gc2 = text_color(MMS::EXPBC2)
gauge_back_color = text_color(MMS::EXPBCS)
gauge_cornice_color = text_color(MMS::EXPBCC)
self.contents.fill_rect(x, y + WLH, width + 2, 8, gauge_cornice_color)
self.contents.fill_rect(x + 1, y + WLH + 1, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x + 1, y + WLH + 1, gw, 6, gc1, gc2)
end
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# * aggiunte
#==============================================================================
class Game_Actor < Game_Battler
def corr_exp
return @exp_list[@level]
end
def pros_lvl_exp
return @exp_list[@level+1]-@exp_list[@level]
end
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# * alias
#==============================================================================
class Window_Base < Window
include MMS
alias melosx_draw_actor_state draw_actor_state
alias melosx_draw_actor_hp_gauge draw_actor_hp_gauge
alias melosx_draw_actor_mp_gauge draw_actor_mp_gauge
def draw_actor_state(actor, x, y, width = 24 * MMS::STATUSN)
count = 0
for state in actor.states
draw_icon(state.icon_index, x + 24 * count, y)
count += 1
break if (24 * count > width - 24)
end
end
def draw_actor_hp_gauge(actor, x, y, width = 120)
gw = width * actor.hp / actor.maxhp
gc1 = text_color(MMS::PVBC1)
gc2 = text_color(MMS::PVBC2)
gauge_cornice_color = text_color(MMS::PVBCC)
self.contents.fill_rect(x, y + WLH - 8, width + 2, 8, gauge_cornice_color)
self.contents.fill_rect(x + 1, y + WLH - 8 + 1, width, 6, text_color(MMS::PVBCS))
self.contents.gradient_fill_rect(x + 1, y + WLH - 8 + 1, gw, 6, gc1, gc2)
end
def draw_actor_mp_gauge(actor, x, y, width = 120)
gw = width * actor.mp / [actor.maxmp, 1].max
gc1 = text_color(MMS::PMBC1)
gc2 = text_color(MMS::PMBC2)
gauge_cornice_color = text_color(MMS::PMBCC)
self.contents.fill_rect(x, y + WLH - 8, width + 2, 8, gauge_cornice_color)
self.contents.fill_rect(x + 1, y + WLH - 8 + 1, width, 6, text_color(MMS::PMBCS))
self.contents.gradient_fill_rect(x + 1, y + WLH - 8 + 1, gw, 6, gc1, gc2)
end
end
#==============================================================================
# ** Window_SkillStatus
#------------------------------------------------------------------------------
# * alias
#==============================================================================
class Window_SkillStatus < Window_Base
alias melosx_refresh refresh
def refresh
self.contents.clear
draw_actor_name(@actor, 4, 0)
draw_actor_level(@actor, 140, 0)
draw_actor_hp(@actor, 240, 0)
draw_actor_mp(@actor, 390, 0)
end
end
#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
# * alias + aggiunte
#==============================================================================
class Window_Status < Window_Base
include MMS
alias melosx_refresh refresh
alias melosx_draw_exp_info draw_exp_info
def refresh
self.contents.clear
draw_actor_name(@actor, 4, 0)
draw_actor_class(@actor, 128, 0)
draw_actor_face(@actor, 8, 32)
draw_basic_info(128, 32)
draw_parameters(32, 160)
draw_actor_exp_gauge(308, 87, (MMS::EXPBL + 50))
draw_exp_info(288, 70)
draw_equipments(288, 160)
end
def draw_basic_info(x, y)
draw_actor_level(@actor, x, y + WLH * 0)
draw_actor_state(@actor, 308, 12 + WLH * 1)
self.contents.draw_text(288, 5, 100, 32, MMS::NSTATUS, 0)
draw_actor_hp(@actor, x, y + WLH * 2)
draw_actor_mp(@actor, x, y + WLH * 3)
end
def draw_exp_info(x, y)
s1 = @actor.exp_s
s2 = @actor.next_exp_s
exp = s1.to_s + " / " + s2.to_s
self.contents.draw_text(x, y + WLH * 0, 100, WLH, MMS::NEXP)
self.contents.draw_text(x + 110, y + WLH * 1, 100, WLH, exp, 0)
end
def draw_actor_exp_gauge(x, y, width = MMS::EXPBL)
s1 = @actor.exp_s
s2 = @actor.next_exp_s
gw = width * s1 / s2
gc1 = text_color(MMS::EXPBC1)
gc2 = text_color(MMS::EXPBC2)
gauge_back_color = text_color(MMS::EXPBCS)
gauge_cornice_color = text_color(MMS::EXPBCC)
self.contents.fill_rect(x, y + WLH, width + 2, 8, gauge_cornice_color)
self.contents.fill_rect(x + 1, y + WLH + 1, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x + 1, y + WLH + 1, gw, 6, gc1, gc2)
end
end
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
# * alias
#==============================================================================
class Scene_Menu < Scene_Base
alias melosx_start start
alias melosx_terminate terminate
alias melosx_update update
alias melosx_create_command_window create_command_window
def start
super
create_menu_background
create_command_window
@gold_window = Window_GoldM.new(MAW::WGX, MAW::WGY)
@status_window = Window_MenuStatus.new(160, 0)
@tempo_gioco = Window_Tempo.new(MAW::WTX, MAW::WTY)
end
def terminate
super
dispose_menu_background
@command_window.dispose
@gold_window.dispose
@status_window.dispose
@tempo_gioco.dispose
end
def update
super
update_menu_background
@command_window.update
@gold_window.update
@status_window.update
@tempo_gioco.update
if @command_window.active
update_command_selection
elsif @status_window.active
update_actor_selection
end
end
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(544, [s1, s2, s3, s4, s5, s6 ] , 6, 0, 16)
@command_window.index = @menu_index
if $game_party.members.size == 0
@command_window.draw_item(0, false)
@command_window.draw_item(1, false)
@command_window.draw_item(2, false)
@command_window.draw_item(3, false)
end
if $game_system.save_disabled
@command_window.draw_item(4, false)
end
end
end
#==============================================================================
# ** Window_Tempo
#==============================================================================
class Window_Tempo < Window_Base
def initialize(x, y)
super(x, y, 272, WLH + 32)
refresh
end
def update
super
sec = (Graphics.frame_count / Graphics.frame_rate) % 60
if sec > @total_sec % 60 or sec == 0
refresh
end
end
def refresh
self.contents.clear
@total_sec = Graphics.frame_count / Graphics.frame_rate
ora = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
tempo = sprintf("%02d:%02d:%02d", ora, min, sec)
self.contents.font.color = normal_color
self.contents.font.size = MAW::WTFNT
self.contents.draw_text(MAW::WTSX, MAW::WTSY, MAW::WTSL, WLH, tempo, 2)
self.contents.draw_text(MAW::WTSX, MAW::WTSY, MAW::WTSL, WLH, MAW::WTSN, 0)
end
end
#==============================================================================
# ** Window_Gold
#==============================================================================
class Window_GoldM < Window_Base
include MAW
def initialize(x, y)
super(x, y, 272, WLH + 32)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.size = MAW::WTFNT
draw_currency_value($game_party.gold, MAW::WGSX, MAW::WGSY, MAW::WGSL)
if MAW::WGIS == true
draw_icon(MAW::WGI, 0, 0)
elsif MAW::WGISS == true
draw_icon(MAW::WGI, MAW::WGIAG, 0)
self.contents.draw_text(MAW::WGSX, MAW::WGSY, MAW::WGSL, WLH, MAW::WGSN, 0)
elsif MAW::WGSS == true
self.contents.draw_text(MAW::WGSX, MAW::WGSY, MAW::WGSL, WLH, MAW::WGSN, 0)
end
end
end
Demo:N/D



























