[Script] [ACE] ai giúp minh cái script time này với

ladigi44ladigi44 Posts: 31Registered
script đó tên là Basic Game Time + Night/Day v1.6.1
công dụng của nó là hiện 1 cái đồng hồ ở góc phải của game ko bit có cách nào làm cho 1 event hoạt động vào 1 thời gian nhất định đc không (như là : vào 7H sáng thì hiện lên cái text là chào buổi sáng ấy)

    #Basic Game Time + Night/Day v1.6.1
    #----------#
    #Features: Provides a series of functions to set and recall current game time
    #          as well customizable tints based on current game time to give the
    #          appearance of night and day.
    #
    #Usage:   Script calls:
    #           GameTime::minute?   - returns the current minute
    #           GameTime::hour?     - returns the current hour
    #           GameTime::set(time) - sets the game time to time, in frames (max:1440)
    #           GameTime::change(time) - increments the game time! (can be negative)
    #           GameTime::pause_time(set) - stops time for events and stuff, true or false
    #           GameTime::pause_tint(set) - time runs, but tints do not update
    #           GameTime::clock(set) - sets whether clock is visible or not
    #        
    #Customization: Set below, in comments.
    #
    #Examples: GameTime::set(360)
    #
    #----------#
    #-- Script by: V.M of D.T
    #
    #- Questions or comments can be:
    #    posted on the thread for the script
    #    given by email: sumptuaryspade@live.ca
    #    provided on facebook: http://www.facebook.com/DaimoniousTailsGames
    #    posed on site: daimonioustails.wordpress.com
    #
    #--- Free to use in any project with credit given
     
    #---Game Clock---#
    #USE_CLOCK to true to display game time clock
    #CLOCK_POSITION for position of clock
    #  1 = topleft, 2 = topright, 3 = bottomleft, 4 = bottomright
    #CLOCK_TOGGLE is any input button available, see the INPUT help file for options
    #------#
    USE_CLOCK       = true
    CLOCK_POSITION  = 4
    CLOCK_TOGGLE    = :SHIFT
     
    module GameTime
      #---Game Time Details---#
      #Number of frames in a game minute, 60 frames = 1 second
      TIME_COUNT      = 60
      #Sets whether to tint screen based on game time
      USE_TINT        = true
     
      #Switch to denote day or night time
      USE_SWITCH = false
      NIGHT_DAY_SWITCH = 1
      DAY_TIME_START = 6
      NIGHT_TIME_START = 18
     
      #True to pause time while not in map or while during a message
      PAUSE_IN_COMBAT  = false
      PAUSE_NOT_IN_MAP = true
      PAUSE_IN_MESSAGE = true
     
      #Sets time frames of tints by minute count, one day is 1440 minutes
      # 0 = 12am, 360 = 6am, 720 = 12pm, 1080 = 6pm  etc...
      PRESUNRISE_TIME = 240
      SUNRISE_TIME    = 360
      NOONSTART_TIME  = 660
      NOONEND_TIME    = 900
      PRESUNSET_TIME  = 1080
      SUNSET_TIME     = 1260
      MIDNIGHT_TIME   = 60  #Must be greater than 0
     
      #Sets custome tints
      PRESUNRISE_TONE = Tone.new(-50,-50,0,50)
      SUNRISE_TONE    = Tone.new(0,0,0,0)
      NOONSTART_TONE  = Tone.new(45,45,0,-25)
      NOONEND_TONE    = Tone.new(0,0,0,0)
      PRESUNSET_TONE  = Tone.new(-25,-25,0,25)
      SUNSET_TONE     = Tone.new(-75,-100,0,75)
      MIDNIGHT_TONE   = Tone.new(-175,-175,0,175)
     
      #Include the ids of any maps not to be tinted based on time
      # Usually reserved for indoor maps
      NOTINTMAPS = [2]
     
      #Store current time in a variable?
      USE_VARIABLE = false
      TIME_VARIABLE = 1
     
      #---END---#
     
      def self.init
        $game_time = 0
        $game_time_pause_time = false
        $game_time_pause_tint = false
      end
      def self.update
        if $game_time_pause_time then return else end
        case SceneManager::scene_is?(Scene_Map)
        when true
          if $game_message.visible == true && PAUSE_IN_MESSAGE then else
          $game_time += 1 if Graphics.frame_count % TIME_COUNT == 0 end
        when false
     
          if !PAUSE_NOT_IN_MAP and !SceneManager::scene_is?(Scene_Battle)
            $game_time += 1 if Graphics.frame_count % TIME_COUNT == 0 end
          if SceneManager::scene_is?(Scene_Battle) && PAUSE_IN_COMBAT != true
          $game_time += 1 if Graphics.frame_count % TIME_COUNT == 0 end
        end
        if $game_time == 1440 then $game_time = 0 end
        $game_variables[TIME_VARIABLE] = $game_time if USE_VARIABLE
        update_night_switch if USE_SWITCH
        GameTime::tint if $game_time_pause_tint != true
      end
      def self.update_night_switch
        if hour? > DAY_TIME_START and hour? < NIGHT_TIME_START
          $game_switches[NIGHT_DAY_SWITCH] = true unless $game_switches[NIGHT_DAY_SWITCH] == true
        else
          $game_switches[NIGHT_DAY_SWITCH] = false unless $game_switches[NIGHT_DAY_SWITCH] == false
        end
      end
      def self.hour?
        return $game_time / 60
      end
      def self.minute?
        return $game_time % 60
      end
      def self.time?
        meri = "AM"
        hour = GameTime::hour?
        minute = GameTime::minute?
        if hour > 11 then meri = "PM" end
        if hour == 0 then hour = 12; meri = "AM" end
        if hour > 12 then hour -= 12 end
        if hour < 10 then hour = " " + hour.to_s else hour.to_s end
        if minute < 10 then minute = "0" + minute.to_s else minute.to_s end
        return hour.to_s + ":" + minute.to_s + " " + meri
      end
      def self.set(number)
        $game_time = number if number < 1440
        GameTime::tint(0)
      end
      def self.change(number)
        $game_time += number
        $game_time -= 1440 if $game_time > 1440
        $game_time += 1440 if $game_time < 0
        GameTime::tint(0)
      end
      def self.tint(tint = 60)
        if USE_TINT != true then return end
        for i in NOTINTMAPS
          if $game_map.map_id == i
            $game_map.screen.start_tone_change(Tone.new(0,0,0,0),0)
            return
          end
        end
        if SceneManager::scene_is?(Scene_Map) then else return end
        case $game_time
        when PRESUNRISE_TIME .. SUNRISE_TIME
          $game_map.screen.start_tone_change(PRESUNRISE_TONE, tint)
        when SUNRISE_TIME .. NOONSTART_TIME
          $game_map.screen.start_tone_change(SUNRISE_TONE, tint)
        when NOONSTART_TIME .. NOONEND_TIME
          $game_map.screen.start_tone_change(NOONSTART_TONE, tint)
        when NOONEND_TIME .. PRESUNSET_TIME
          $game_map.screen.start_tone_change(NOONEND_TONE, tint)
        when PRESUNSET_TIME .. SUNSET_TIME
          $game_map.screen.start_tone_change(PRESUNSET_TONE, tint)
        when SUNSET_TIME .. 1440
          $game_map.screen.start_tone_change(SUNSET_TONE, tint)
        when 0 .. MIDNIGHT_TIME
          $game_map.screen.start_tone_change(SUNSET_TONE, tint)
        when MIDNIGHT_TIME .. PRESUNRISE_TIME
          $game_map.screen.start_tone_change(MIDNIGHT_TONE, tint)
        end
      end
      def self.pause_time(set)
        $game_time_pause_time = set
      end
      def self.pause_tint(set)
        $game_time_pause_tint = set
      end
      def self.clock(set)
        SceneManager.scene.clock_visible?(set)
      end
     
      class Window_Clock < Window_Base
        def initialize
          case CLOCK_POSITION
          when 1
            super(0,0,115,56)
          when 2
            super(429,0,115,56)
          when 3
            super(0,360,115,56)
          when 4
            super(429,360,115,56)
          end
          self.visible = $game_time_clock_visibility unless $game_time_clock_visibility.nil?
        end
        def update
          self.contents.clear
          self.contents.draw_text(0,0,100,24,GameTime::time?)
          $game_time_clock_visibility = self.visible
        end
      end
     
    end
     
    GameTime::init
     
    module DataManager
      class << self
      alias gametime_msc make_save_contents
      alias gametime_esc extract_save_contents
      end
      def self.make_save_contents
        contents = gametime_msc
        contents[:gametime] = $game_time
        contents
      end
      def self.extract_save_contents(contents)
        gametime_esc(contents)
        $game_time = contents[:gametime]
      end
    end
     
     
    class Scene_Map < Scene_Base
      alias gametime_post_transfer post_transfer
      alias gametime_create_all_windows create_all_windows
      alias gametime_update_map update
      def post_transfer
        GameTime::tint(0)
        gametime_post_transfer
      end
      def create_all_windows
        gametime_create_all_windows
        @gametimeclock = GameTime::Window_Clock.new if USE_CLOCK
      end
      def update
        gametime_update_map
        @gametimeclock.update if @gametimeclock.nil? == false
        if Input.trigger?(CLOCK_TOGGLE) and @gametimeclock.nil? == false
          @gametimeclock.visible ? @gametimeclock.visible = false : @gametimeclock.visible = true
        end
      end
      def clock_visible?(set)
        @gametimeclock.visible = set
      end
    end
     
    class Scene_Base
      alias gametime_update update
      def update
        gametime_update
        GameTime::update
      end
    end

Comments

  • BướmBướm Posts: 1,220Registered
    script bao giờ chả có demo tìm được demo là ra ngay ấy mà
  • KangKang Posts: 453Registered
    há, cái này hình như script này có dùng rùi nè, pác tính làm game gì á?
  • ladigi44ladigi44 Posts: 31Registered
    tính đưa vào dự án cho nó thêm phần phong phú nhưng mà nó không = cái script time bên XP chắc chỉ hiện đồng hồ cho đẹp với lại có màu sắc các thời điểm trong ngày thôi
  • Tslg[clgt]Tslg[clgt] Posts: 23Registered
    7h hien text : chao buoi sang
    8h: chao buoi gi?
    12h: chao buoi trua
    6h: chao buoi toi??
    vk thu 1 loop for
    time 0->24h
    if 0h
    dem r`
    6h : sang r`
    y' kien' thoi, chu' cha bk dung >.<
  • KangKang Posts: 453Registered
    ladigi44 wrote:
    tính đưa vào dự án cho nó thêm phần phong phú nhưng mà nó không = cái script time bên XP chắc chỉ hiện đồng hồ cho đẹp với lại có màu sắc các thời điểm trong ngày thôi

    Pác lầm rồi nhé, nếu biết cách khai thác thì nó ko thua gì đâu, gợi ý cho pác này:
    Vd em muốn 6h chào buổi sáng thì : Điều kiện nhánh : Script: GameTime::hour? == 6
  • finalholylightfinalholylight Posts: 251Registered
    Chủ topic cần phải luyện cách đọc và hiểu sơ sơ script nói gì để mà sử dụng nhé.
    Trong script có 2 dòng sau:
    USE_VARIABLE = false
    TIME_VARIABLE = 1
    Chuyển thành true thì time sẽ được lưu vào variable, còn lưu vào variable nào thì chỉnh bên dưới, TIME_VARIABLE = 1 thì nghĩa là time được vào variable số 1, nếu bạn muốn kích hoạt event theo time thì dùng lệnh điều kiện dựa vào variable số 1.
  • KangKang Posts: 453Registered
    đọc kĩ phần #Usage: Script calls
    Nhớ bấm nút ...
    =]FB mình: https://www.facebook.com/Mr.Kang.Pro
    Nếu giúp đx gì mình sẽ cố hết sức!
Sign In or Register to comment.