Options for timer

Started by LeviAlvi, September 20, 2013, 12:59:51 am

Previous topic - Next topic

LeviAlvi

September 20, 2013, 12:59:51 am Last Edit: September 21, 2013, 05:55:03 am by LeviAlvi
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
Spoiler: ShowHide
hahahahaha

ForeverZer0

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.
I am done scripting for RMXP. I will likely not offer support for even my own scripts anymore, but feel free to ask on the forum, there are plenty of other talented scripters that can help you.

LeviAlvi

Spoiler: ShowHide
hahahahaha

LeviAlvi

up. still interested in this
Spoiler: ShowHide
hahahahaha

Wecoc

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