Ai rành về script thì vào đây

giahuy141giahuy141 Posts: 11Registered
Em muốn làm 1 game có thời gian và khi lên google search thì nó ra đoạn code này :script thời gian

#
# ● $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.
#==============================================================================
# ● 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 = 60
#AMPM (True: 12-hour clock, False: 24-hour clock)
AMPM = true
# Sets the time at the start of your game.
START_HOUR = 9
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 = 101 #(Time in string format. Ex: "2:48 AM" or "02:48")
SECONDS = 102
MINUTES = 103
HOURS = 104
DAYS = 105
DAYNAME = 106
# Game Switches to be used for time output.
NIGHT = 17 # This switch is on during night hours (2200-0400)(10pm-4am)
DAWN = 18 # This switch is on during dawn hours (0500-0800)( 5am-8am)
DAY = 19 # This switch is on during daytime hours (0900-1800)( 9am-6pm)
SUNSET = 20 # This switch is on during sunset hours (1900-2100)( 7pm-9pm)
#
# Settings for time controlled screen toning
#
TONE_SWITCH_ID = 40
# 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, @seconds)
else
time = sprintf("%01d:%02d" + " PM", hours1, @minutes, @seconds)
end
else
if @hours > 9
time = sprintf("%02d:%02d" + " AM", @hours, @minutes, @seconds)
else
time = sprintf("%01d:%02d" + " AM", @hours, @minutes, @seconds)
end
end
#
# 12-Format Fix by the unsung bard
#
# if @hours == 12
# time = sprintf("%01d:%02d:%02d" + " PM", @hours, @minutes, @seconds)
# end
# if @hours == 0
# time = sprintf("%02d:%02d:%02d" + " AM", "12", @minutes, @seconds)
# end
#
return time
else
# Formats a 24-Hour Clock
time = sprintf("%02d:%02d:%02d", @hours, @minutes, @seconds)
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
unless $game_switches[KTS::TONE_SWITCH_ID]
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
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
eturn @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, 210, WLH + 52)
refresh
end

def refresh
self.contents.clear
# Change "49" or "120" higher or lower to move the words horizontally
# Change "32" higher or lower to move the words vertically
self.contents.clear
self.contents.font.color = Color.new(173, 255, 47, 255)
self.contents.draw_text(4, 15, 75, 32, $kts.getDayName , 2)
self.contents.draw_text(4, 15, 165, 32, $kts.getTime, 2)
self.contents.draw_text(152, -8, 75, 32, $game_variables[10])
end

def update
super
$kts.update
self.contents.clear
self.contents.font.color = Color.new(173, 255, 47, 255)
self.contents.draw_text(4, 15, 75, 32,$kts.getDayName , 2)
self.contents.draw_text(4, 15, 165, 32, $kts.getTime, 2)
self.contents.draw_text(152, -8, 75, 32, $game_variables[10])
end
end
#==============================================================================
# Adds the time window to the menu.
#==============================================================================
class Scene_Map < Scene_Base
alias kts_start start
def start
kts_start
@kts_window = Window_KTS.new(329,339)
@kts_window.opacity = 0
end

alias kts_terminate terminate
def terminate
kts_terminate
@kts_window.dispose
end

alias kts_update update
def update
kts_update
if $game_map.map_id != 14 and $game_map.map_id != 5 #map id clear
@kts_window.update
else
@kts_window.contents.clear
end
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
Và em copy nó vào đoạn main.Và khi vào game nó báo lỗi ''Script'Main' line 306: NameError occurred undefined method`create_battleback' for class` Spriteset_Battle'.
Em đã copy đoạn code vào phần line đầu tiên của main the hướng dẩn và đã dò lại từng line và chính xác kỷ càng . Cho em hỏi lỗi nào do code lỗi hay lỗi do em . Và nếu có code thì xin send cho em test .

Comments

  • TrollsieubuaTrollsieubua Posts: 51Registered
    Mình có dịch 1 bản script về thời gian cho các cậu rồi..vào hướng dẫn Script vx ace và tìm Basic Game Time + Night/Day v1.6 là có
  • giahuy141giahuy141 Posts: 11Registered
    mjk thi cần cả thời gian + ngày tháng lun bạn . Cái của bạn chỉ có thời gian
  • leequangsonleequangson Posts: 730Registered
    Vãi~~~~~~~

    Nếu bạn đang dùng RPG Maker VX Ace, bạn ấn chuột phải vào script "( Insert here )", rồi chọn insert, sẽ có 1 slot để bạn nhét đoạn script trên vào.

    Còn RPG Maker XP, bạn ấn chuột phải vào script "Main", chọn insert, sẽ có slot hiện ra cho bạn đút script vào đó
  • TrollsieubuaTrollsieubua Posts: 51Registered
    giahuy141 wrote:
    mjk thi cần cả thời gian + ngày tháng lun bạn . Cái của bạn chỉ có thời gian

    thi cai do cung co ca ngay va gio chu dau co gio 1 minh.
Sign In or Register to comment.