Code:
#:=:=:=:=:=:=:=:=:=:=:thetitsueng:=:=:=:=:=:=:=:=:=:=:
# [XP]จับเวลา
# By thetitsueng
# ver 1.03 [23/7/2552]
#--------------------------
# ประวัติ
# ver 1.00 by thetitsueng[4/7/2552]
# ver 1.01 by thetitsueng[11/7/2552]
# -เพิ่มการหยุดเวลาชั่วคราว
# ver 1.02 by thetitsueng[23/7/2552]
# -แก้ไขบัค
# -เพิ่มเสี้ยววินาที
# ver 1.03 by thetitsueng[9/10/2552]
# -แก้ไขบัค
#--------------------------
# http://necz.net
# neczth@gmail.com
#=====================================================
=begin
------------------------------------------------------
=> วิธีใช้ : เอาไปไว้เหนือ Main และใต้ Scene_Debug
=> วิธีตั้งค่า : ถ้าจะจับแบบปกติ(นับถอยหลัง)ก็ใช้อีเว้นควบคุมเวลา:เริ่ม ใส่ตัวเลขที่มากกว่า 0 ลงไป
ถ้าจะจับแบบ นับไปหน้าเรือยๆ ก็ ใช้อีเว้น ควบคุมเวลา:เริ่ม แล้วใส่เลข 0 ลงไป
สามารถหยุดเวลาไว้ได้ชั่วคราว โดยการใช้คำสั่ง ควบคุมเวลา:หยุด
ถ้าใช้คำสั่ง ควบคุมเวลา:หยุด อีกครั้งระหว่างที่กำลังหยุดเวลาชั่วคราวอยู่ จะเป็นการหยุดเวลาแบบปรกติในโปรแกรม(เวลาหายไปเลย)
ระหว่างการหยุดเวลาชั่วคราวสามารถ จับเวลาไปหน้าหรือถอยหลังต่อจากเก่าได้โดยใช้คำสั่ง ควบคุมเวลา:เริ่ม
ถ้าใส่ตัวเลขที่มากกว่า 0 ลงไป จะเป็นการนับถอยหลังโดยเริ่มจากตอนที่หยุดไว้
ถ้าใส่ตัวเลข 0 ลงไป จะเป็นการนับไปหน้าโดยเริ่มจากตอนที่หยุดไว้
------------------------------------------------------
=end
#=====================================================
# *ส่วนการตั้งค่า
#=====================================================
module Thetitsueng
Timecolor = Color.new(0, 0, 0, 255) #สีอักษร
Timefontname = "Arial" #ฟ้อนท์ของอักษร
Timefontsize = 32 #ขนาด
Timefonttype = 0 #รูปแบบตัวอักษร,0คือปรกติ,1 คือตัวหนา,2 คือตัวเอียง ,3 คือตัวหนาเอียง
Time_x = 620 #ตำแหน่งX (อิงจากมุมบนขวา)
Time_y = 10 #ตำแหน่งY
Time_sec_q = true #เสี้ยววินาที (true = เปิด, false =ปิด)
end
#=====================================================
# *จบส่วนการตั้งค่า
#:=:=:=:=:=:=:=:=:=:=:thetitsueng:=:=:=:=:=:=:=:=:=:=:
class Game_System
attr_accessor :addt
attr_accessor :timerstop
alias initialize_ori_t initialize
def initialize
initialize_ori_t
@addt = false
@timerstop = false
end
def update
if @timer_working
if @timerstop == false
if @addt
if Thetitsueng::Time_sec_q
@timer += 100
else
@timer += 1
end
elsif @timer > 0
if Thetitsueng::Time_sec_q
@timer -= 100
else
@timer -= 1
end
end
end
end
end
end
class Interpreter
def command_124
if @parameters[0] == 0
if $game_system.timerstop
if @parameters[1] == 0
$game_system.timer_working = true
$game_system.addt = true
$game_system.timerstop = false
else
$game_system.timer_working = true
$game_system.addt = false
$game_system.timerstop = false
end
else
if $game_system.timer == 0
$game_system.timer = @parameters[1] * Graphics.frame_rate
$game_system.timer *= 100 if Thetitsueng::Time_sec_q
end
if @parameters[1] == 0
$game_system.addt = true
$game_system.timer_working = true
$game_system.timerstop = false
else
$game_system.addt = false
$game_system.timer_working = true
$game_system.timerstop = false
end
end
elsif @parameters[0] == 1
if $game_system.timerstop
$game_system.timerstop = false
$game_system.timer = 0
$game_system.timer_working = false
else
$game_system.timerstop = true
end
end
return true
end
end
class Sprite_Timer < Sprite
def initialize
super
self.bitmap = Bitmap.new(88, 48)
self.bitmap.font.name = Thetitsueng::Timefontname
self.bitmap.font.color = Thetitsueng::Timecolor
self.bitmap.font.size = Thetitsueng::Timefontsize
case Thetitsueng::Timefonttype
when 1
self.bitmap.font.bold = true
self.bitmap.font.italic = false
when 2
self.bitmap.font.bold = false
self.bitmap.font.italic = true
when 3
self.bitmap.font.bold = true
self.bitmap.font.italic = true
else
self.bitmap.font.bold = false
self.bitmap.font.italic = false
end
self.x = Thetitsueng::Time_x - self.bitmap.width
self.y = Thetitsueng::Time_y
self.z = 500
update
end
def update
super
self.visible = $game_system.timer_working
if $game_system.timer / Graphics.frame_rate != @total_sec
self.bitmap.clear
@total_sec = $game_system.timer / Graphics.frame_rate
if Thetitsueng::Time_sec_q
sec_q = @total_sec % 100
@A = @total_sec / 100
min = @A / 60
sec = @A % 60
else
min = @total_sec / 60
sec = @total_sec % 60
end
if Thetitsueng::Time_sec_q
text = sprintf("%02d:%02d:%02d", min, sec, sec_q)
else
text = sprintf("%02d:%02d", min, sec)
end
self.bitmap.draw_text(self.bitmap.rect, text, 1)
end
end
end
#:=:=:=:=:=:=:=:=:=:=:thetitsueng:=:=:=:=:=:=:=:=:=:=:
# [XP]จับเวลา
# By thetitsueng
#:=:=:=:=:=:=:=:=:=:=:thetitsueng:=:=:=:=:=:=:=:=:=:=: