- 注册时间
- 2004-12-23
- 最后登录
- 2011-5-31
⑥精研
ㄟ(▔︹▔ㄟ)
- 积分
- 1815

|
这个不是原创的,只是更改了部分由KGC工作组制作的脚本.某些地方有BUG,不过没有太大的影响.
的确是有些地方的注解错了,现在改过来了
$game_special_elements = {}
$imported = {}
$data_states = load_data("Data/States.rxdata")
$data_system = load_data("Data/System.rxdata")
$imported["DayNight"] = true
class Game_Screen
# 昼夜更换方式
# 0:时间流逝 1:行走步数 2:现实时间(有一定误差)
DAYNIGHT_METHOD = 0
# 昼夜的名称(好象没有什么实际的影响)
DAYNIGHT_NAME = ["昼", "黄昏", "夜", "清晨"]
# 昼夜的色调(如果对色调不太明白的话就不要更改)
DAYNIGHT_TONE = [Tone.new(0, 0, 0),
Tone.new(-32, -96, -96),
Tone.new(-128, -128, -32),
Tone.new(-48, -48, -16)]
# 第昼夜交替的时间更改(这里指的是往下一个状态所经过的时间,例如:昼→黄昏)
# 当昼夜交替方式为步数的时候,每次更换昼夜状态需要的步数
# 战斗中的更换时间(为战斗外昼夜交替速度的10%)
# 现实时间的话,往下面状态转换的时间 (24小时方式)
DAYNIGHT_TIME = [30, 10, 25, 10]
# DAYNIGHT_TIME = [16, 20, 6, 10]
# ↑现实时间使用时的范例。试用的时候解除注解(删掉前面的#号)
end
#------------------------------传说中de分界线------------------------------
#--------------------------------------------------------------------------
# ● 现在的状态
#--------------------------------------------------------------------------
def now_daynight
return $game_system.daynight_phase
end
def now_daynight_name
return DAYNIGHT_NAME[now_daynight]
end
#--------------------------------------------------------------------------
# ● 昼夜手动更换
# phase : 更换之后的状态INDEX
# duration : 更换时间 (框) (省略时:40)
#--------------------------------------------------------------------------
def change_daynight(phase, duration = 40)
# 计数初期化
$game_system.daynight_count = 0
# 相位更新
$game_system.daynight_phase = phase
# 手动更换有效
$manual_daynight_change = duration
end
#------------------------------传说中de分界线------------------------------
#==============================================================================
# ■ Game_System
#------------------------------------------------------------------------------
# 是经营系统相关的数据的组。 也进行BGM等等的管理。 这个组的实例参照$game_system
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# ● 公开实例变量
#--------------------------------------------------------------------------
attr_accessor :daynight_count # 昼夜判定用计数
attr_accessor :daynight_phase # 现在的状态
attr_accessor :daynight_change # 进行昼夜变更的开关(或者标记)
attr_accessor :daynight_change_battle # 战斗中进行昼夜变更的开关
#--------------------------------------------------------------------------
# ● 客观初期化
#--------------------------------------------------------------------------
alias initialize_KGC_DayNight initialize
def initialize
# 实行原来的处理
initialize_KGC_DayNight
@daynight_count = 0
@daynight_phase = 0
@daynight_change = true
@daynight_change_battle = true
end
end
#------------------------------传说中de分界线------------------------------
#==============================================================================
# ■ Game_Screen
#------------------------------------------------------------------------------
#在保持与变更色调和闪光等等、画面全体有关的处理的数据的组。 这组里的实例参照$game_screen
#==============================================================================
class Game_Screen
#--------------------------------------------------------------------------
# ● 客观初期化
#--------------------------------------------------------------------------
alias initialize_KGC_DayNight initialize
def initialize
# 实行原来的处理
initialize_KGC_DayNight
# 暂且(暂停?)现在的状态设定
@tone = DAYNIGHT_TONE[$game_system.daynight_phase].clone
# 移动判定用座标
@x = 0
@y = 0
@frame_count = Graphics.frame_count
end
alias update_KGC_DayNight update
def update
# 实行原来的处理
update_KGC_DayNight
# 昼夜更换判定
if (!$game_temp.in_battle && $game_system.daynight_change) ||
($game_temp.in_battle && $game_system.daynight_change &&
$game_system.daynight_change_battle)
case DAYNIGHT_METHOD
when 0 # 时间判定
inc_count = Graphics.frame_count - @frame_count
if $game_temp.in_battle
inc_count /= 10.0
$game_system.daynight_count += inc_count
else
$game_system.daynight_count += inc_count
end
# 计数还原
@frame_count = Graphics.frame_count
count = $game_system.daynight_count / Graphics.frame_rate
if count >= DAYNIGHT_TIME[$game_system.daynight_phase]
$game_system.daynight_count = 0
$game_system.daynight_phase += 1
if $game_system.daynight_phase >= DAYNIGHT_TONE.size
$game_system.daynight_phase = 0
end
start_tone_change(DAYNIGHT_TONE[$game_system.daynight_phase], 40)
end
when 1 # 步数判定
if @x != $game_player.x || @y != $game_player.y
@x = $game_player.x
@y = $game_player.y
$game_system.daynight_count += 1
count = $game_system.daynight_count
if count >= DAYNIGHT_TIME[$game_system.daynight_phase]
$game_system.daynight_count = 0
$game_system.daynight_phase += 1
if $game_system.daynight_phase >= DAYNIGHT_TONE.size
$game_system.daynight_phase = 0
end
start_tone_change(DAYNIGHT_TONE[$game_system.daynight_phase], 40)
end
end
when 2 # 现实时间
time = Time.now
time1 = DAYNIGHT_TIME[$game_system.daynight_phase]
time2 = DAYNIGHT_TIME[$game_system.daynight_phase - 1]
if time2 != nil && time2 > time1
change = time.hour < time2 && time.hour >= time1
else
change = time.hour >= time1
end
if change
$game_system.daynight_count = 0
$game_system.daynight_phase += 1
if $game_system.daynight_phase >= DAYNIGHT_TONE.size
$game_system.daynight_phase = 0
end
start_tone_change(DAYNIGHT_TONE[$game_system.daynight_phase], 40)
end
end
end
if $manual_daynight_change != nil
start_tone_change(DAYNIGHT_TONE[$game_system.daynight_phase], $manual_daynight_change)
$manual_daynight_change = nil
end
end
#--------------------------------------------------------------------------
# ● 错误的状态(0, 0, 0)返还
# duration : 更换时间 (框) (省略时:40)
#--------------------------------------------------------------------------
def daynight_default(duration = 40)
start_tone_change(Tone.new(0, 0, 0), duration)
end
#--------------------------------------------------------------------------
# ● 适用现在的状态
# duration : 更换时间 (框) (省略时:40)
#--------------------------------------------------------------------------
def daynight_apply(duration = 40)
start_tone_change(DAYNIGHT_TONE[$game_system.daynight_phase], duration)
end
end
[此贴子已经被作者于2005-1-30 19:10:44编辑过] |
|