Chaos Project

RPG Maker => RPG Maker Scripts => Script Requests => Topic started by: LeviAlvi on September 20, 2013, 12:59:51 am

Title: Options for timer
Post by: LeviAlvi on September 20, 2013, 12:59:51 am
can someone please help me in making an option for timer. I want the timer to be customizable in color, font size and position.

I'm using Juan's option menu. if it can be on Juan's option menu, it will be better :)

Here's the code:

http://txtup.co/EJ6i7
Title: Re: Options for timer
Post by: ForeverZer0 on September 20, 2013, 07:17:27 am
Please use code tags and insert into spoilers. In this case, the size of the script was too big and it got cut off. There is a limit to how many characters you can place in a post. Better to just provide a link to the script in this situation.
Title: Re: Options for timer
Post by: LeviAlvi on September 21, 2013, 07:31:02 am
Up.

*changed the code
Title: Re: Options for timer
Post by: LeviAlvi on September 27, 2013, 09:30:53 pm
up. still interested in this
Title: Re: Options for timer
Post by: Wecoc on September 28, 2013, 12:11:25 pm
My friend Eron did an script about this one month ago, for RPG maker XP.
You can use the timer as always, and you can also use:
timer.set(time[, x, y, show_numbers, font_name, font_size, [red, green, blue[,alpha]] ])

With this, timer has some new methods as you can see on the script instructions.

#==============================================================================
# ** Sprite_Timer Mejorado
#------------------------------------------------------------------------------
# Autor: Eron
#------------------------------------------------------------------------------
# Para usarlo a parte de con los comandos de siempre,
# desde Llamar Script podéis usar éstos métodos directamente:

# timer.set(time[, x, y, show_numbers, font_name, font_size, [red, green, blue[,alpha]] ])
#     Ejemplo 1: timer.set(5)
#     Ejemplo 2: timer.set(10, 0, 0)
#     Ejemplo 3: timer.set(5, 5, 5, true, "Verdana", 35, [255,200,20])

# timer.time
# timer.min
# timer.sec

# timer.play # (unpause)
# timer.pause
# timer.stop
# timer.reset

# timer.pause?

# timer.add_time(value)

# timer.x
# timer.font
# timer.size
# timer.color

# timer.x = x
# timer.font = font
# timer.size = size
# timer.color = [red, green, blue[, alpha]]

# timer.show_numbers
# timer.show_numbers = true / false
#==============================================================================

class Scene_Map
  attr_reader :spriteset
end
class Scene_Battle
  attr_reader :spriteset
end

class Spriteset_Map
  attr_reader :timer_sprite
end
class Spriteset_Battle
  attr_reader :timer_sprite
end

class Interpreter
  def timer
    return $scene.spriteset.timer_sprite
  end
  def command_124
    @parameters[0] == 0 ? timer.set(@parameters[1]) : timer.stop
  end
end

class Sprite_Timer < Sprite
 
  attr_accessor :show_numbers
 
  def initialize
    super
    @font_name = "Arial"
    @font_size = 32
    @font_color = Color.new(255,255,255)
    get_bitmap_size
    self.x = 552
    self.y = 0
    self.z = 500
    @time = -1
    @reset_time = -1
    @show_numbers = true
    @pause = false
    update
  end

  def get_bitmap_size
    self.bitmap = Bitmap.new(1,1)
    self.bitmap.font.name = @font_name
    self.bitmap.font.size = @font_size
    w = self.bitmap.text_size("00:00").width
    h = self.bitmap.text_size("00:00").height
    self.bitmap = Bitmap.new(w,h)
    self.bitmap.font.name = @font_name
    self.bitmap.font.size = @font_size
    self.bitmap.font.color = @font_color
  end
 
  def dispose
    if self.bitmap != nil
      self.bitmap.dispose
    end
    super
  end
 
#------------------------------------------------------------------------------
 
  def set(time,x=self.x,y=self.y,show_numbers=@show_numbers,font_name=@font_name,font_size=@font_size,font_color=@font_color)
    $game_system.timer_working = true
    @time = (time + 1) * Graphics.frame_rate
    @reset_time = time
    @show_numbers = show_numbers
    self.x, self.y = x, y
    self.font = font_name if font_name != @font_name
    self.size = font_size if font_size != @font_size
    self.color = font_color if font_color != @font_color
    update
  end
 
  def time
    return @time / Graphics.frame_rate
  end
 
  def min
    return time / 60
  end
 
  def sec
    return time % 60
  end
   
#------------------------------------------------------------------------------
 
  def play
    @pause = false
  end
 
  def pause
    @pause = true
  end
   
  def pause?
    return @pause
  end
 
  def stop
    @time = -1
    $game_system.timer_working = false
    return
  end
 
  def reset
    set(@reset_time)
  end
 
#------------------------------------------------------------------------------
 
  def add_time(value)
    @time += value * Graphics.frame_rate
    @time = [0, @time].max
  end
 
#------------------------------------------------------------------------------
 
  def font
    return @font_name
  end

  def font=(name)
    @font_name = name
    self.bitmap.font.name = name
  end
   
  def size
    return @font_size
  end
 
  def size=(size)
    @font_size = size
    get_bitmap_size
  end
 
  def color
    return @font_color
  end
 
  def color=(array)
    array << 255 if array.size == 3
    color = Color.new(array[0],array[1],array[2],array[3])
    @font_color = color
    self.bitmap.font.color = color
  end
   
  def update
    super
    @time -= 1 if @time > 0 and not @pause
    $game_system.timer = @time
    if $game_system.timer_working
      self.visible = @show_numbers
    else
      self.visible = false
    end
    if $game_system.timer / Graphics.frame_rate != @total_sec
      self.bitmap.clear
      @total_sec = $game_system.timer / Graphics.frame_rate
      min = @total_sec / 60
      sec = @total_sec % 60
      text = sprintf("%02d:%02d", min, sec)
      self.bitmap.draw_text(self.bitmap.rect, text, 1)
    end
  end
end