[RMXP]时间流逝窗口
呼,终于写好了,目前只支持儒略历。原创脚本:
RUBY 代码
#-------------------------------------------------------------------------------
# 时间流逝 by 876加几
#-------------------------------------------------------------------------------
class Window_Time < Window_Base
#--------------------------------------------------------------------------
# ● 初始化窗口
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
if$game_switches != true
@year_index = -1#这个可以随便改,但要符合实际(还要在下面计算出来)
@month_index = 1
@day_index = 1
@hour_index = 9
@minute_index = 0
@second_index = 0
@cycle_index = 1 #后面三个不用计算,并且要符合实际
@season_index = 4
@leap = false
$game_switches = true
end
refresh
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
#存储数据/读取数据
if@year_index != nil
$game_variables = @year_index
else
@year_index = $game_variables
end
if@month_index != nil
$game_variables = @month_index
else
@month_index = $game_variables
end
if@day_index != nil
$game_variables = @day_index
else
@day_index = $game_variables
end
if@cycle_index != nil
$game_variables = @cycle_index
else
@cycle_index = $game_variables
end
if@season_index != nil
$game_variables = @season_index
else
@season_index = $game_variables
end
if@leap != nil
$game_switches = @leap
else
@leap = $game_switches
end
#时间显示
time = sprintf("%02d:%02d:%02d", @hour_index, @minute_index, @second_index)
#判断这个月是什么月
if@month_index == 1
@judge_index = 1
elsif@month_index == 2
@judge_index = 3
elsif@month_index == 3
@judge_index = 1
elsif@month_index == 4
@judge_index = 2
elsif@month_index == 5
@judge_index = 1
elsif@month_index == 6
@judge_index = 2
elsif@month_index == 7
@judge_index = 1
elsif@month_index == 8
@judge_index = 1
elsif@month_index == 9
@judge_index = 2
elsif@month_index == 10
@judge_index = 1
elsif@month_index == 11
@judge_index = 2
elsif@month_index == 12
@judge_index = 1
end
#星期变更
if@hour_index == 23and@minute_index == 59
case@cycle_index
when1
@cycle_index = 2
when2
@cycle_index = 3
when3
@cycle_index = 4
when4
@cycle_index = 5
when5
@cycle_index = 6
when6
@cycle_index = 7
when7
@cycle_index = 1
end
end
#制造时间动力
@total_second = Graphics.frame_count * 50
@second_index = @total_second % 60
@minute_index = @total_second / 60 % 60
@hour_index = @total_second / 60 / 60 % 24
case@judge_index
when1#大月
@day_index = @total_second / 60 / 60 / 24 % 30 + 1
@month_index = @total_second / 60 / 60 / 24 / 30 % 11 + 1
when2#小月
@day_index = @total_second / 60 / 60 / 24 % 29
@month_index = @total_second / 60 / 60 / 24 / 29 % 11 + 1
when3#特殊月
if@leap == true
@day_index = @total_second / 60 / 60 / 24 % 28
@month_index = @total_second / 60 / 60 / 24 / 28 % 11 + 1
else
@day_index = @total_second / 60 / 60 / 24 % 27
@month_index = @total_second / 60 / 60 / 24 / 27 % 11 + 1
end
end
if@leap == true
@year_index = @total_second / 60 / 60 / 24 / 365 + 1
else
@year_index = @total_second / 60 / 60 / 24 / 364 + 1
end
#季度判断
case@month_index
when2
@season_index = 1
when5
@season_index = 2
when8
@season_index = 3
when11
@season_index = 4
end
self.contents.font.color = normal_color
self.contents.draw_text(360, 0, 120, 32, time, 2)
#判断是否为闰年
@leap_index = @year_index
@leap_index %= 4
if@leap_index == 0
@leap = true
else
@leap = false
end
#绘制
mx = self.contents.text_size(@month_index.to_s).width
dx = self.contents.text_size(@day_index.to_s).width
if@year_index < 0
@yearf_index = @year_index * (0 - 1)
yx = self.contents.text_size(@yearf_index.to_s).width
self.contents.draw_text(16, 0, 72, 32,"公元前")
self.contents.draw_text(82, 0, 72, 32, @yearf_index.to_s)
self.contents.draw_text(82+yx, 0, 32, 32, "年")
self.contents.draw_text(102+yx, 0, 20, 32, @month_index.to_s)
self.contents.draw_text(102+yx+mx, 0, 32, 32, "月")
self.contents.draw_text(122+yx+mx, 0, 20, 32, @day_index.to_s)
self.contents.draw_text(122+yx+mx+dx, 0, 32, 32, "日")
else
yx = self.contents.text_size(@year_index.to_s).width
self.contents.draw_text(16, 0, 72, 32,"公元")
self.contents.draw_text(60, 0, 72, 32, @year_index.to_s)
self.contents.draw_text(60+yx, 0, 32, 32, "年")
self.contents.draw_text(80+yx, 0, 20, 32, @month_index.to_s)
self.contents.draw_text(80+yx+mx, 0, 32, 32, "月")
self.contents.draw_text(100+yx+mx, 0, 20, 32, @day_index.to_s)
self.contents.draw_text(100+yx+mx+dx, 0, 32, 32, "日")
end
case@cycle_index
when1#星期一
self.contents.draw_text(296, 0, 72, 32, "星期一")
when2#星期二
self.contents.draw_text(296, 0, 72, 32, "星期二")
when3
self.contents.draw_text(296, 0, 72, 32, "星期三")
when4
self.contents.draw_text(296, 0, 72, 32, "星期四")
when5
self.contents.draw_text(296, 0, 72, 32, "星期五")
when6
self.contents.draw_text(296, 0, 72, 32, "星期六")
when7
self.contents.draw_text(296, 0, 72, 32, "星期日")
end
case@season_index
when1# 春季
self.contents.draw_text(512, 0, 32, 32, "春")
when2# 夏季
self.contents.draw_text(512, 0, 32, 32, "夏")
when3# 秋季
self.contents.draw_text(512, 0, 32, 32, "秋")
when4# 冬季
self.contents.draw_text(512, 0, 32, 32, "冬")
end
#色相修改
case@season_index
when1
if@hour_index == 7
$game_screen.start_tone_change(Tone.new(64,0,0,0),20)
elsif@hour_index == 8
$game_screen.start_tone_change(Tone.new(0,0,0,0),20)
elsif@hour_index == 19
$game_screen.start_tone_change(Tone.new(64,0,0,0),20)
elsif@hour_index == 20
$game_screen.start_tone_change(Tone.new(-64,-64,64,0),20)
elsif@hour_index == 0
$game_screen.start_tone_change(Tone.new(-128,-128,128,0),20)
end
when2
if@hour_index == 6
$game_screen.start_tone_change(Tone.new(64,0,0,0),20)
elsif@hour_index == 7
$game_screen.start_tone_change(Tone.new(0,0,0,0),20)
elsif@hour_index == 20
$game_screen.start_tone_change(Tone.new(64,0,0,0),20)
elsif@hour_index == 21
$game_screen.start_tone_change(Tone.new(-64,-64,64,0),20)
elsif@hour_index == 0
$game_screen.start_tone_change(Tone.new(-128,-128,128,0),20)
end
when3
if@hour_index == 7
$game_screen.start_tone_change(Tone.new(64,0,0,0),20)
elsif@hour_index == 8
$game_screen.start_tone_change(Tone.new(0,0,0,0),20)
elsif@hour_index == 19
$game_screen.start_tone_change(Tone.new(64,0,0,0),20)
elsif@hour_index == 20
$game_screen.start_tone_change(Tone.new(-64,-64,64,0),20)
elsif@hour_index == 0
$game_screen.start_tone_change(Tone.new(-128,-128,128,0),20)
end
when4
if@hour_index == 8
$game_screen.start_tone_change(Tone.new(64,0,0,0),20)
elsif@hour_index == 9
$game_screen.start_tone_change(Tone.new(0,0,0,0),20)
elsif@hour_index == 18
$game_screen.start_tone_change(Tone.new(64,0,0,0),20)
elsif@hour_index == 19
$game_screen.start_tone_change(Tone.new(-64,-64,64,0),20)
elsif@hour_index == 0
$game_screen.start_tone_change(Tone.new(-128,-128,128,0),20)
end
end
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count * 50 != @total_second
refresh
end
end
end
因为天气变化放进去过于唐突,所以我不写天气变化。
范例:
发现一转换场景,很多数据变成nil,所以我就占用一些Switches和Variables。
裁图:
Q:leap那些分别是什么?
A:leap判断平闰年,season是季节判断,year、month、day、hour、minute和second各代表年、月、日、小时、分钟、秒。
有的组件千万不能改!!!
范例新添的脚本要用这个脚本全文替换!!!
发现有个bug,先修改了。
本帖来自P1论坛作者876加几,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=332811若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页:
[1]