30-04-2011, 07:53 PM
(Questo messaggio è stato modificato l'ultima volta il: 04-01-2012, 10:58 PM da Johnny 97.)
Script per l'alternamento del giorno e della notte per rpg maker vx
ecco lo script:
Autore: Kylock
script:
[spoiler]
[/spoiler]
istruzioni: da mettere sotto material e sopra main
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
istruzioni: da mettere sotto material e sopra main