irpg Community
จับเวลาแบบนับไปข้างหน้า - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: irpg Fabella RPG Maker Academia (https://irpg.in.th/forum-4.html)
+--- Forum: RGSS and JS Showcase (https://irpg.in.th/forum-26.html)
+--- Thread: จับเวลาแบบนับไปข้างหน้า (/thread-471.html)



จับเวลาแบบนับไปข้างหน้า - Muge9thD - 08-14-2012

จับเวลาแบบนับไปข้างหน้า

สคริปต์เขียนโดย : thetitsueng
ลิงค์ต้นฉบับ : Link


รายละเอียด :
ปกติแล้วคำสั่งนับเวลานั้น มีแค่นับถอยหลังเท่านั้น... หากอยากจะจับเวลาแบบวิ่งแข่งทำสถิติล่ะ สคริปต์นี้ช่วยคุณได้!!!!

สกรีนช๊อต :
ไม่มีน่อ

วิธีการใช้งาน :
=> วิธีใช้ : เอาไปไว้เหนือ Main และใต้ Scene_Debug
=> วิธีตั้งค่า : ถ้าจะจับแบบปกติ(นับถอยหลัง)ก็ใช้อีเว้นควบคุมเวลา:เริ่ม ใส่ตัวเลขที่มากกว่า 0 ลงไป
ถ้าจะจับแบบ นับไปหน้าเรือยๆ ก็ ใช้อีเว้น ควบคุมเวลา:เริ่ม แล้วใส่เลข 0 ลงไป
สามารถหยุดเวลาไว้ได้ชั่วคราว โดยการใช้คำสั่ง ควบคุมเวลา:หยุด
ถ้าใช้คำสั่ง ควบคุมเวลา:หยุด อีกครั้งระหว่างที่กำลังหยุดเวลาชั่วคราวอยู่ จะเป็นการหยุดเวลาแบบปรกติในโปรแกรม(เวลาหายไปเลย)
ระหว่างการหยุดเวลาชั่วคราวสามารถ จับเวลาไปหน้าหรือถอยหลังต่อจากเก่าได้โดยใช้คำสั่ง ควบคุมเวลา:เริ่ม
ถ้าใส่ตัวเลขที่มากกว่า 0 ลงไป จะเป็นการนับถอยหลังโดยเริ่มจากตอนที่หยุดไว้
ถ้าใส่ตัวเลข 0 ลงไป จะเป็นการนับไปหน้าโดยเริ่มจากตอนที่หยุดไว้

ข้อตกลงการนำไปใช้งาน :
อย่างน้อยๆก็ใส่ชื่อ thetitsueng ลงในเครดิตด้วยล่ะ



โค๊ดสคริปต์
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
# [email protected]
#=====================================================
=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:=:=:=:=:=:=:=:=:=:=:



RE: จับเวลาแบบนับไปข้างหน้า - Tenes - 08-14-2012

นี่แหละสิ่งที่ขาดหายไปใน Rpgmaker /yeah


RE: จับเวลาแบบนับไปข้างหน้า - BriKung - 08-14-2012

ขอบคุณมากครับกำลังหาไปใช้อยู่พอดี