• Benvenuto in Making Videogames!
  • Dai sfogo alla tua fantasia!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati




Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
[SCRIPT] Time system
#1
Script per l'alternamento del giorno e della notte per rpg maker vx
ecco lo script:
Autore: Kylock
script:
[spoiler]
Codice:
#==============================================================================
# ■ Kylock's Time System VX 1.5
#     6.3.2008
#------------------------------------------------------------------------------
#  Script by: Kylock
#==============================================================================
#    Mostly rewritten since XP version.  Cleaner code and less intrusive (more
#  compatible).  This is my comprehensive time and day/night system.  This
#  script adds a new window to the game menu, so if you use a CMS, then place
#  this script ABOVE it so that it won't mess up your CMS.  If you use a custom
#  script that makes changes to the battle background, place KTS below it so
#  that you don't get the delayed-tone effect in you battles.  Other than that,
#  there shouldn't be any other script compatibility issues.
#    I've tried to make this script as customizable as possible, the settings
#  are found immediately following this header.  Although time output to game
#  variables is optional, I strongly suggest using it so that its easier to
#  build your events based on the time in the game.
#==============================================================================
# ● Change Log
#------------------------------------------------------------------------------
#  1.0 - Original Release.
#  1.1 - Corrected tinting issue at the start of a battle.  Place this script
#          below any battle background scripts if you experience "jumpy tinting"
#  1.2 - Corrected the accuracy of $kts.stop and $kts.go
#  1.3 - $kts.stop really stops everything now.  Also added game switches for
#          even easier eventing.
#  1.4 - Fixed Battle Test compatibility (simulates normal daylight for battle
#          test instead of darkness).
#        Now switches and variables will only update when the map loads so that
#          events don't suddenly dissappear when their time is up.
#        Added $kts_anti_tone - returns an inverse tone color to allow sprites
#          to appear normally on a tinted screen.
#  1.5 - Rewrote the regexp that finds the [KTS] in the map name.  Hopefully
#          this resolves the wrong maps being tinted problem.
#==============================================================================
# ● Auto-tone Instructions
#------------------------------------------------------------------------------
#    Maps designated as outdoors are the only maps to be affected by this
#  scripts use of auto-toning.  To signify a map to be "outdoors", you must
#  include [KTS] In the name of the map.  For example, you world map could be
#  named "World Map [KTS]" or "[KTS] World Map".  Provisions are made later in
#  the script to remove [KTS] from the map name when it's read by another
#  script.  This means that "[KTS]" won't show up in your Map Name Popup
#  windows.
#==============================================================================
# ● Script Function Calls
#------------------------------------------------------------------------------
#    The following are script commands that can be executed by using the
#  "Script..." command in your events.
#    ● $kts.stop            - Stops time (can be used for cutscenes)
#    ● $kts.go              - Resumes time (don't forget to use this!)
#    ● $kts.sec(n)          - progresses time forward (n) seconds
#    ● $kts.min(n)          - progresses time forward (n) minutes
#    ● $kts.hours(n)        - progresses time forward (n) hours
#    ● $kts.days(n)         - progresses time forward (n) days
#    ● $kts.jump_to_hour(n) - progresses time forward TO the specified hour.
#                             Particularly useful in a situation where you
#                             want a certain event to happen at a certain time,
#                             or an Innkeeper who should wake the party up at
#                             a certain hour.  This command MAY cause your game
#                             to appear to freeze for a few seconds on slower
#                             computers.
#==============================================================================
# ● Game Database Setup
#------------------------------------------------------------------------------
#    This script, by defult, uses the following game variables and switches:
#  Database Variables:
#    [1] The Current Time            [4] The Current Hour
#    [2] The Current Second          [5] The Current Day
#    [3] The Current Minute          [6] Name of the Current Day
#  Database Switches
#    [1] ON during night hours   (2200-0400)(10pm-4am)
#    [2] ON during dawn hours    (0500-0800)( 5am-8am)
#    [3] ON during daytime hours (0900-1800)( 9am-6pm)
#    [4] ON during sunset hours  (1900-2100)( 7pm-9pm)
#==============================================================================

#==============================================================================
# Stores variables and user defined settings for the time system.
#==============================================================================
module KTS
  #-----------------------------------------------------------------------
  # User Definable Clock Settings
  #-----------------------------------------------------------------------
  # Sets the speed multiplier of the clock.  1 is real time.  A higher
  #   value will give you a faster clock.  Default is 100.
  SPEED      = 100
  #AMPM (True: 12-hour clock, False: 24-hour clock)
  AMPM       = false
  # Sets the time at the start of your game.
  START_HOUR = 1
  START_DAY  = 1
  #-----------------------------------------------------------------------
  # If you want custom day names, edit away!
  #-----------------------------------------------------------------------
  DAY_NAMES = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]
  #-----------------------------------------------------------------------
  # Settings for Time Periods
  #-----------------------------------------------------------------------
  T1 = [ 0,5 ] # Night         # Sets time periods for tinting effects
  T2 = [ 6,8 ] # Dawn          # [Start Hour, End Hour] for time period
  T3 = [ 9,18] # Day           # Use 24-hour values for time periods
  T4 = [19,21] # Sunset
  T5 = [22,24] # Night         # <- Ex: Night is between 23:00 and 24:00
  #-----------------------------------------------------------------------
  # Settings for Output to Game Variables option.
  #-----------------------------------------------------------------------
  # Set this to true to output the current time to game variables.
  DATABASE_OUTPUT = true
    # Game Variable to be used for time output.
    TIME    = 1 #(Time in string format. Ex: "2:48 AM" or "02:48")
    SECONDS = 2
    MINUTES = 3
    HOURS   = 4
    DAYS    = 5
    DAYNAME = 6
    # Game Switches to be used for time output.
    NIGHT   = 1 # This switch is on during night hours   (2200-0400)(10pm-4am)
    DAWN    = 2 # This switch is on during dawn hours    (0500-0800)( 5am-8am)
    DAY     = 3 # This switch is on during daytime hours (0900-1800)( 9am-6pm)
    SUNSET  = 4 # This switch is on during sunset hours  (1900-2100)( 7pm-9pm)
  #-----------------------------------------------------------------------
  # Settings for time controlled screen toning
  #-----------------------------------------------------------------------
  # True will enable screen toning to be used by the script.
  USE_TONE = true
  # Sets the duration of tone changes (in frames)
  FADE_LENGTH = 120
  # Defines tones to be used in the corresponding time periods defined above.
  #              RED, GREEN, BLUE, GREY
  C1 = Tone.new(-187,  -119,  -17,  68)
  C2 = Tone.new(  17,   -51, -102,   0)
  C3 = Tone.new(   0,     0,    0,   0)
  C4 = Tone.new( -68,  -136,  -34,   0)
  C5 = Tone.new(-187,  -119,  -17,  68)
  # Defines anti-tones
  A1 = Tone.new( 187,   119,   17, -68)
  A2 = Tone.new( -17,    51,  102,   0)
  A3 = Tone.new(   0,     0,    0,   0)
  A4 = Tone.new(  68,   136,   34,   0)
  A5 = Tone.new( 187,   119,   17, -68)
end

#==============================================================================
# Core Time System Engine
#==============================================================================
class Kylock_Time_System
  # sets instance variables
  def initialize
    $kts_map_data = load_data("Data/MapInfos.rvdata")
    @event_offset = (KTS::START_HOUR * 3600) + (KTS::START_DAY * 86400)
    @kts_stop = false
    $kts_event_tone = false
    $kts_battle_tone = true
    $kts_anti_tone = Tone.new(0,0,0,0)
  end
  
  # Computes current time and updates variables if used
  def update
    if !@kts_stop
      @total_seconds = (Graphics.frame_count * KTS::SPEED / 60) + @event_offset
      @seconds = (@total_seconds) % 60
      @minutes = (@total_seconds / 60) % 60
      @hours   = (@total_seconds / 3600) % 24
      @days    = (@total_seconds / 86400)
      update_tint
      if KTS::DATABASE_OUTPUT
        $game_variables[KTS::TIME]    = getTime
      end
    end
  end

  def update_variables
    $game_variables[KTS::SECONDS] = @seconds
    $game_variables[KTS::MINUTES] = @minutes
    $game_variables[KTS::HOURS]   = @hours
    $game_variables[KTS::DAYS]    = @days
    $game_variables[KTS::DAYNAME] = getDayName
  end

  def update_switches
    if @period == 1 || @period == 5
      $game_switches[KTS::NIGHT] = true
    else
      $game_switches[KTS::NIGHT] = false
    end
    if @period == 2
      $game_switches[KTS::DAWN] = true
    else
      $game_switches[KTS::DAWN] = false
    end
    if @period == 3
      $game_switches[KTS::DAY] = true
    else
      $game_switches[KTS::DAY] = false
    end
    if @period == 4
      $game_switches[KTS::SUNSET] = true
    else
      $game_switches[KTS::SUNSET] = false
    end
  end

  def getTime
    if KTS::AMPM
      # Formats a 12-Hour Clock
      if @hours > 12
        hours1 = @hours - 12
        if hours1 > 9
          time = sprintf("%02d:%02d" + " PM", hours1, @minutes)
        else
          time = sprintf("%01d:%02d" + " PM", hours1, @minutes)
        end
      else
        if @hours > 9
          time = sprintf("%02d:%02d" + " AM", @hours, @minutes)
        else
          time = sprintf("%01d:%02d" + " AM", @hours, @minutes)
        end
      end
      return time
    else
      # Formats a 24-Hour Clock
      time = sprintf("%02d:%02d", @hours, @minutes)
      return time
    end
  end
  #-----------------------------------------------------------------------
  # Script Command Functions
  #-----------------------------------------------------------------------
  def stop
    @time_stopped = @total_seconds
    @kts_stop = true
  end
  def go
    total_seconds = (Graphics.frame_count * KTS::SPEED / 60) + @event_offset
    @event_offset -= (total_seconds - @time_stopped)
    @kts_stop = false
  end
  def sec(sec = 0)
    @event_offset += sec
  end
  def min(min = 0)
    @event_offset += min * 60
  end
  def hours(hours = 0)
    @event_offset += hours * 3600
  end
  def days(days = 0)
    @event_offset += days * 86400
  end
  def jump_to_hour(jhour = 0)
    while @hours != jhour
      @event_offset += 1
      $kts.update
    end
  end
  #-----------------------------------------------------------------------
  # Script Support/Misc Functions
  #-----------------------------------------------------------------------
  def getDayName
    weekday = (@days % KTS::DAY_NAMES.length)
    return KTS::DAY_NAMES[weekday]
  end

  #-----------------------------------------------------------------------
  # Screen Tone Functions
  #-----------------------------------------------------------------------
  def update_tint(duration = KTS::FADE_LENGTH)
    return if $BTEST
    if KTS::USE_TONE && !$kts_event_tone && $kts_map_data[$game_map.map_id].outside_tint?
      if @hours >= KTS::T1[0] and @hours <= KTS::T1[1]
        @period = 1
        screen.start_tone_change(KTS::C1,duration)
        $kts_anti_tone = KTS::A1
      elsif @hours >= KTS::T2[0] and @hours <= KTS::T2[1]
        @period = 2
        screen.start_tone_change(KTS::C2,duration)
        $kts_anti_tone = KTS::A2
      elsif @hours >= KTS::T3[0] and @hours <= KTS::T3[1]
        @period = 3
        screen.start_tone_change(KTS::C3,duration)
        $kts_anti_tone = KTS::A3
      elsif @hours >= KTS::T4[0] and @hours <= KTS::T4[1]
        @period = 4
        screen.start_tone_change(KTS::C4,duration)
        $kts_anti_tone = KTS::A4
      elsif @hours >= KTS::T5[0] and @hours <= KTS::T5[1]
        @period = 5
        screen.start_tone_change(KTS::C5,duration)
        $kts_anti_tone = KTS::A5
      end
    else
      # no tone if indoors
      if !$kts_map_data[$game_map.map_id].outside_tint?
        screen.start_tone_change(Tone.new(0,0,0,0),duration)
      end
    end
  end
  def screen
    if $game_temp.in_battle
      return $game_troop.screen
    else
      return $game_map.screen
    end
  end
end

class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias kts_initialize initialize
  def initialize
    $kts.update_switches if !@kts_stop && KTS::DATABASE_OUTPUT
    $kts.update_variables if !@kts_stop && KTS::DATABASE_OUTPUT
    kts_initialize
  end
end

#==============================================================================
# Instantly updates screen tone when a new map is loaded.
#==============================================================================
class Game_Map
  alias kts_setup setup
  def setup(map_id)
    kts_setup(map_id)
    $kts_event_tone = false
    $kts.update
    $kts.update_tint(0)
  end
end

#==============================================================================
# Instantly updates screen tone when a battle starts.
#==============================================================================
class Spriteset_Battle
  alias kts_create_battleback create_battleback
  def create_battleback
    $kts.update_tint(0)
    kts_create_battleback
  end
end

#==============================================================================
# Temporarily disables auto-toning if an event tints the screen.
#==============================================================================
class Game_Interpreter
  alias kts_Interpreter_command_223 command_223
  def command_223
    $kts_event_tone = true
    kts_Interpreter_command_223
  end
end

#==============================================================================
# Integrates the Time System into the Game System.
#==============================================================================
class Game_System
  # inits a KTS object
  alias kts_initialize initialize
  def initialize
    $kts=Kylock_Time_System.new
    kts_initialize
  end
  # Updates kts every game frame
  alias kts_update update
  def update
    $kts.update
    kts_update
  end
end

#==============================================================================
# Scans Map Names for Toning
#==============================================================================
class RPG::MapInfo
  def name # Definition prevents location scripts from reading anything within
    return @name.gsub(/\[.*\]/) {""} # brackets, including the brackets
  end
  def original_name
    return @name
  end
  def outside_tint?
    return @name.scan(/\[KTS\]/).size > 0
    # old regexp: return @name.scan(/[\KTS]/).size > 0
  end
end

#==============================================================================
# Sets up the time window for the menu.
#==============================================================================
class Window_KTS < Window_Base
  def initialize(x, y)
    super(x, y, 160, WLH + 32)
    refresh
  end
  def refresh
    self.contents.clear
    self.contents.draw_text(4, -6, 120, 32, $kts.getTime, 2)
  end
  def update
    super
    $kts.update
    self.contents.clear
    self.contents.draw_text(4, -6, 120, 32, $kts.getTime, 2)
  end
end

#==============================================================================
# Adds the time window to the menu.
#==============================================================================
class Scene_Menu < Scene_Base
  alias kts_start start
  def start
    kts_start
    @kts_window = Window_KTS.new(0,305)
  end
  alias kts_terminate terminate
  def terminate
    kts_terminate
    @kts_window.dispose
  end
  alias kts_update update
  def update
    kts_update
    @kts_window.update
  end
end

#==============================================================================
# Saves and Loads game time to/from save game file.
#==============================================================================
class Scene_File
  alias kts_write_save_data write_save_data
  def write_save_data(file)
    kts_write_save_data(file)
    Marshal.dump($kts, file)
  end
  alias kts_read_save_data read_save_data
  def read_save_data(file)
    kts_read_save_data(file)
    $kts = Marshal.load(file)
  end
end
[/spoiler]

istruzioni: da mettere sotto material e sopra main
 
Rispondi
  


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  [SCRIPT] RPG Maker VX Action Battle System (PRABS2) OmegaSt 4 5,620 08-05-2012, 10:23 AM
Ultimo messaggio: SuperMario
  [SCRIPT] Autosalvataggio + Neo Save System 3.0 Johnny 97 0 1,269 14-07-2011, 07:30 PM
Ultimo messaggio: Johnny 97
  [SCRIPT] Mouse System Johnny 97 0 1,214 14-07-2011, 07:15 PM
Ultimo messaggio: Johnny 97
  [SCRIPT] Tankentai Sidewiew System Zapetino 4 1,331 25-06-2011, 12:12 PM
Ultimo messaggio: Zapetino
Wink [SCRIPT] I-Phone System lavezzinapoli7 0 977 24-06-2011, 10:21 PM
Ultimo messaggio: lavezzinapoli7
  [SCRIPT] Neo Save System V lavezzinapoli7 0 1,197 24-06-2011, 08:34 PM
Ultimo messaggio: lavezzinapoli7

Vai al forum:


Browsing: 1 Ospite(i)