Vai al contenuto

Rilevato Ad-Blocker. Per favore disabilita il tuo adblocker quando navighi su makerando.com - Non c'è nessun annuncio invasivo.

  • Chatbox

    You don't have permission to chat.
    Load More
Ally

Interfacce Final Fantasy IX Save Menù

Recommended Posts

Nome Script: Final Fantasy IX Save Menù
Versione: N/D
Autore/i: BigEd781

Informazioni:
Questo Script farà apparire il vostro Save Menù identico a quello di Final Fantasy IX.

Screenshots:

delete-55.png
delete-54.png
delete-56.png


Istruzioni:
Per il corretto funzionamento copiate le seguenti immagini in Graphics/Pictures:
FF9_HeaderBar.png

Rinominate quest'immagine in SaveFilewindow.png:
FF9_SaveFileWindow-1.png

FF9_SaveFileWindow_no_overlay.png

LoadSaveDisplay.png

SaveTimer.png

GoldCoin.png

StoneBackground.png

Necessiterà anche di un puntatore. Insieme allo script viene fornita la classica "manina" di FF9 ma lo stesso autore ne ha rilasciate altre assieme ad un altro Script. Ve le linko di seguito così avete anche un pò di scelta e potete abbinarlo meglio assieme al FF IX Menù Script.
Pointer:

L'immagine scelta deve essere RINOMINATA in Pointer.png ed inserire nella cartella Graphics/Pictures

Pointer_LargeArrow.png
Pointer_SmallArrow.png
Pointer_XtraSmallArrow.png
Pointer_Hand.png
Pointer_Compass.png


Script:

=begin
                    BigEd781's Final Fantasy IX Save Screen
                                  
 
                            Rewritten Methods
                            -----------------
                            Scene_File
                              write_save_data
                              create_savefile_windows
                              start
                            -----------------                      
=end                    
module FFIXSave

  # use an image instead of the hazy map background
  USE_CUSTOM_BACK   = true
  # the name of the background image file (if above is set to 'true')
  BACK_NAME         = 'StoneBackground'
  # the name of the 'time' image file
  TIMER_NAME        = 'SaveTimer'
  # the name of the 'gold' image file
  GOLDCOIN_NAME     = 'GoldCoin'
  # the font to use.  Example:  'Times New Roman'
  FONT_NAME         = Font.default_name
  FONT_SIZE         = 20
  # the color of the font.    (red, green, blue)
  FONT_COLOR        = Color.new(238, 238, 238)
  # changing this will move the timer and gold
  # icons left or right (for - or + values).  
  # this is useful if you have long names, or use a smaller font.    
  ICON_OFFSET_X     = 0  
 
end

class Rect
 
  def shift_y(value)
    new_y = self.y + value
    return Rect.new(self.x, new_y, self.width, self.height)
  end
 
end
#==============================================================================
# ** Sprite_HeaderBar
#------------------------------------------------------------------------------
#  This is the top right window in the save/load menu
#==============================================================================
class Sprite_LoadSave < Sprite_Base
 
  def initialize(x, y, text, viewport=nil)
    super(viewport)
    @bg_image = Cache.picture('LoadSaveDisplay')
    @text = text
    self.bitmap = Bitmap.new(@bg_image.width, @bg_image.height)
    self.x = x
    self.y = y
    update
  end
 
  def update
    self.bitmap.blt(0, 0, @bg_image, @bg_image.rect)        
    self.bitmap.draw_text(self.bitmap.rect.shift_y(3), @text, 1)
  end
 
end
#==============================================================================
# ** Sprite_HeaderBar
#------------------------------------------------------------------------------
#  This is the top left window in the save/load menu
#==============================================================================
class Sprite_HeaderBar < Sprite_Base
  #--------------------------------------------------------------------------
  # * initialize
  #--------------------------------------------------------------------------
  def initialize(viewport=nil)
    @image = Cache.picture('FF9_HeaderBar')    
    @slot = 1
    super(viewport)
    self.bitmap = Bitmap.new(@image.width, @image.height)
    self.x = 16
    self.y = 18
    update  
  end
  #--------------------------------------------------------------------------
  # * slot=
  #--------------------------------------------------------------------------
  def slot=(value)  
    @slot = value
  end
  #--------------------------------------------------------------------------
  # * update
  #--------------------------------------------------------------------------
  def update
    self.bitmap.blt(0, 0, @image, @image.rect)   
    text_y = 10
    text_h = 24
    self.bitmap.draw_text(16, text_y, 220, text_h, "Select a block.")
    self.bitmap.draw_text(self.width - 72, text_y, 64, text_h, "Slot #{@slot}")
  end    
 
end
#==============================================================================
# ** Scene_File
#------------------------------------------------------------------------------
#
#==============================================================================
class Scene_File < Scene_Base
   
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  alias :eds_pre_ff9_save_start :start
  def start        
    super
    create_menu_background      
    @help_window = Sprite_HeaderBar.new
    create_loadsave_sprite
    create_savefile_windows    
    @index = @saving ? $game_temp.last_file_index : self.latest_file_index        
    @savefile_windows[@index].selected = true
  end
  #--------------------------------------------------------------------------
  # * create_menu_background (only if USE_CUSTOM_BACK == true)
  #--------------------------------------------------------------------------
  if FFIXSave::USE_CUSTOM_BACK
    def create_menu_background
      @menuback_sprite = Sprite.new
      @menuback_sprite.bitmap = Cache.picture(FFIXSave::BACK_NAME)
      @menuback_sprite.color.set(16, 16, 16, 128)
      update_menu_background
    end
  end
  #--------------------------------------------------------------------------
  # * create_loadsave_sprite
  #--------------------------------------------------------------------------
  def create_loadsave_sprite
    sx = @help_window.x + @help_window.width + 6
    sy = @help_window.y
    text = @saving ? "Save" : "Load"
    @loadsave_sprite = Sprite_LoadSave.new(sx, sy, text)
  end  
  #--------------------------------------------------------------------------
  # * Update Save File Selection
  #--------------------------------------------------------------------------
  alias :eds_pre_ff9_save_update_savefile_selection :update_savefile_selection
  def update_savefile_selection
    eds_pre_ff9_save_update_savefile_selection
    @help_window.slot = @index + 1
  end
  #--------------------------------------------------------------------------
  # * write_save_data
  #--------------------------------------------------------------------------
  def write_save_data(file)
    characters = []
    map_name = load_data("Data/MapInfos.rvdata")[$game_map.map_id].name
    for actor in $game_party.members
      characters.push([ actor.character_name,
                        actor.character_index,
                        actor.face_name,         # line added
                        actor.face_index,        # line added
                        actor.name,              # line added
                        actor.level,             # line added
                        $game_party.gold,        # line added               
                        map_name ])              # line added
    end
    $game_system.save_count += 1
    $game_system.version_id = $data_system.version_id
    @last_bgm = RPG::BGM::last
    @last_bgs = RPG::BGS::last
    Marshal.dump(characters,           file)
    Marshal.dump(Graphics.frame_count, file)
    Marshal.dump(@last_bgm,            file)
    Marshal.dump(@last_bgs,            file)
    Marshal.dump($game_system,         file)
    Marshal.dump($game_message,        file)
    Marshal.dump($game_switches,       file)
    Marshal.dump($game_variables,      file)
    Marshal.dump($game_self_switches,  file)
    Marshal.dump($game_actors,         file)
    Marshal.dump($game_party,          file)
    Marshal.dump($game_troop,          file)
    Marshal.dump($game_map,            file)
    Marshal.dump($game_player,         file)          
  end
  #--------------------------------------------------------------------------
  # * Create Save File Window
  #--------------------------------------------------------------------------
  def create_savefile_windows
    @savefile_windows = []
    for i in 0..3
      @savefile_windows.push(Window_FFIXSaveFile.new(i, make_filename(i)))
    end
    @item_max = 4
  end
 
  alias :eds_pre_ff9_terminate :terminate
  def terminate
    eds_pre_ff9_terminate
    @loadsave_sprite.dispose
  end
 
end
#==============================================================================
# ** Window_FFIXSaveFile
#------------------------------------------------------------------------------
#  This is the window displayed for each save slot
#==============================================================================
class Window_FFIXSaveFile < Window_SaveFile
 
  # the x , y position of the first column and line of text
  TEXT_COL1_X = 298
  TEXT_LINE1_Y = 0
  # the y position of the second line of text, Level and Gold display  
  TEXT_LINE2_Y = 20
  #--------------------------------------------------------------------------
  # * initialize
  #--------------------------------------------------------------------------
  def initialize(file_index, filename)  
    unless FileTest.exist?(filename)
      image_name = 'FF9_SaveFileWindow_no_overlay'
    else
      image_name = 'FF9_SaveFileWindow'
    end
    @bg_image = Cache.picture(image_name)
    @timer_image = Cache.picture(FFIXSave::TIMER_NAME)  
    @gold_image = Cache.picture(FFIXSave::GOLDCOIN_NAME)  
    super(file_index, filename)
    self.x = 0
    self.height = @bg_image.height + 32   
    # do this so that they images can be close together,
    # ignoring the 16 pixel window border
    self.y -= self.y * 0.1  
    self.contents.dispose
    self.contents = Bitmap.new(512, @bg_image.height)
    self.contents.font.name = FFIXSave::FONT_NAME
    self.contents.font.size = FFIXSave::FONT_SIZE
    self.opacity = 0    
    @arrow_sprite = Sprite.new
    @arrow_sprite.bitmap = Cache.picture('pointer')
    @arrow_sprite.x = 0
    @arrow_sprite.y = self.y + (0.4 * self.height)
    @arrow_sprite.visible = false        
    @arrow_sprite.z = self.z + 1
    refresh
  end
 
  def selected=(value)
    @arrow_sprite.visible = value
  end
  #--------------------------------------------------------------------------
  # * refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = FFIXSave::FONT_COLOR      
    draw_background_panel
    begin
      if @file_exist      
        draw_party_characters
        draw_playtime
        draw_leader_name
        draw_leader_level
        draw_gold
        draw_location
        draw_icons
      end
    rescue     
      # do nothing or the game will crash
      # before the first save file is created.
    end
  end
  #--------------------------------------------------------------------------
  # * draw_background_panel
  #--------------------------------------------------------------------------
  def draw_background_panel
    self.contents.blt(0, 0, @bg_image, @bg_image.rect)
  end
  #--------------------------------------------------------------------------
  # * draw_party_characters
  #--------------------------------------------------------------------------
  def draw_party_characters    
    x, y, size = 5, 5, (self.contents.height - 10)             
    for i in [email protected]
      name = @characters[i][2]
      index = @characters[i][3]
      draw_face(name, index, x, y, size)
      x += size + 2
    end        
  end
  #--------------------------------------------------------------------------
  # * draw_playtime
  #--------------------------------------------------------------------------
  def draw_playtime
    hour = @total_sec / 60 / 60
    min = @total_sec / 60 % 60
    sec = @total_sec % 60    
    time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
    len = contents.text_size(time_string).width + 6
    contents.font.color = FFIXSave::FONT_COLOR    
    contents.draw_text(contents.width - len, TEXT_LINE1_Y, contents.width - 4, WLH, time_string)
  end
  #--------------------------------------------------------------------------
  # * draw_leader_name
  #--------------------------------------------------------------------------
  def draw_leader_name    
    name = @characters[0][4]
    self.contents.draw_text(TEXT_COL1_X, TEXT_LINE1_Y, 128, WLH, name)    
  end    
  #--------------------------------------------------------------------------
  # * draw_leader_level
  #--------------------------------------------------------------------------        
  def draw_leader_level    
    level = "Level #{@characters[0][5]}"      
    self.contents.draw_text(TEXT_COL1_X, TEXT_LINE2_Y, 128, WLH, level)    
  end
  #--------------------------------------------------------------------------
  # * draw_gold
  #--------------------------------------------------------------------------          
  def draw_gold
    gold = "#{@characters[0][6]} #{Vocab.gold[0,1]}"
    text_x = contents.width - (contents.text_size(gold).width + 6)
    self.contents.draw_text(text_x, TEXT_LINE2_Y, 96, WLH, gold)
  end
  #--------------------------------------------------------------------------
  # * draw_location
  #--------------------------------------------------------------------------
  def draw_location
    loc = @characters[0][7]
    text_y = TEXT_LINE2_Y + 28    
    self.contents.draw_text(308, text_y, contents.width - 312, WLH, loc)
  end
  #--------------------------------------------------------------------------
  # * draw_icons
  #--------------------------------------------------------------------------
  def draw_icons  
    self.contents.blt(TEXT_COL1_X + 93 + FFIXSave::ICON_OFFSET_X,
                      TEXT_LINE1_Y + 7,
                      @timer_image,
                      @timer_image.rect)
    self.contents.blt(TEXT_COL1_X + 93 + FFIXSave::ICON_OFFSET_X,
                      TEXT_LINE2_Y + 7,
                      @gold_image,
                      @gold_image.rect)                      
  end
  #--------------------------------------------------------------------------
  # * update_cursor
  #--------------------------------------------------------------------------
  def update_cursor
    # not needed
  end
  #--------------------------------------------------------------------------
  # * dispose
  #--------------------------------------------------------------------------
  def dispose
    super
    @bg_image.dispose
    @timer_image.dispose
    @arrow_sprite.dispose
  end
 
end
Demo:
N/D

Incompatibilita':
Lo Script Sovrascrive i metodi
Scene_File
write_save_data
create_savefile_windows
start

Controllate che gli altri script in uso non li utilizzino.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

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

Crea un account

Iscriviti per un nuovo account nella nostra comunità. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

  • Contenuti simili

    • Da 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 
    • Da 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:
       
       
    • Da 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:
       
       
    • Da 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
    • Da 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
×