Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Zegar
Autor Wiadomość
mari1002 




Preferowany:
RPG Maker VX

Dołączył: 17 Mar 2010
Posty: 29
Wysłany: Nie 21 Mar, 2010 11:31
Zegar
Skrypt wywołuje zegar::

Napisała

Ayene

Oto skrypt::
Spoiler:

Kod:
#==============================================================================
# Zegar
# by Ayene [yurika@o2.pl]
# 20.03.2010
# www.ultimateam.pl
#------------------------------------------------------------------------------
# Skrypt dodaje okienko z zegarkiem. Wszelkie pytania proszę kierować na forum.
#==============================================================================

module Ayene
  KOMENDY = ["Anuluj", "Ustaw", "Format"]
  FORMATY = ["HH:MM:SS", "HH:MM AM/PM"]
  ZMIENNA_CZASU = 389
  ZMIENNA_FORMATU = 399
  CZCIONKA = "DS-Digital"
  ZEGAR = "zegar"
  LOGO = "logo"
end

class Scene_Zegar < Scene_Base

  def initialize(from_menu, index = 0)
    @index = index   
    @from_menu = from_menu
    @animation = 0
  end 
  def start
    super
    create_menu_background
    create_command_window   
    create_window_set_time
    create_command_time_format
    @help_window = Window_Help.new
    @help_window.set_text("Zegar gry")
    @time_window = Window_Time.new
    @time_window.x = @command_window.width + 90
    @time_window.y = @help_window.height + 62
    @time_status_window = Window_Time_Status.new(@command_window.width, @help_window.height)
    @zegar = Sprite.new
    @zegar.bitmap = Cache::picture(Ayene::ZEGAR)
    @zegar.x = @command_window.width
    @zegar.y = @help_window.height + 26
    @zegar.z = 10
  end
  def terminate
    super
    dispose_menu_background
    @command_window.dispose
    @window_set_time.dispose
    @help_window.dispose
    @time_window.dispose
    @zegar.dispose
    @time_status_window.dispose
    @command_window_time_format.dispose
  end
  def return_scene
    if @from_menu
      $scene = Scene_Item.new
    else
      $scene = Scene_Map.new
    end
  end
  def update
    super   
    @animation += 1
    update_menu_background
    @command_window.update   
    @window_set_time.update
    @command_window_time_format.update
    @help_window.update
    @time_window.update   
    if @command_window.active
      update_command_selection
    elsif @window_set_time.active
      update_window_set_time
    elsif @command_window_time_format.active
      update_command_window_time_format
    end
  end
 
  def create_command_window
    @command_window = Window_Command.new(190, Ayene::KOMENDY)
    @command_window.x = 0
    @command_window.y = 56
    @command_window.index = @index   
  end
 
  def create_command_time_format
    @command_window_time_format = Window_Command.new(190, Ayene::FORMATY)
    @command_window_time_format.x = 0
    @command_window_time_format.y = 56 + @command_window.height
    @command_window_time_format.index = 0
    @command_window_time_format.active = false     
    @command_window_time_format.visible = false
  end
 
  def create_window_set_time       
    @window_set_time = Window_TimeInput.new     
    @window_set_time.active = false     
    @window_set_time.visible = false
  end
 
  def update_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      case @command_window.index
      when 0
         return_scene       
      when 1           
        @command_window.active = false
        @window_set_time.active = true     
        @window_set_time.visible = true
        @help_window.set_text("Ustaw godzinę...")     
      when 2
        @command_window.active = false
        @command_window_time_format.active = true     
        @command_window_time_format.visible = true
        @help_window.set_text("Wybierz format godziny...") 
      end     
    end
  end
 
  def update_command_window_time_format
    if Input.trigger?(Input::B)
      Sound.play_cancel
      @command_window.active = true
      @command_window_time_format.active = false 
      @command_window_time_format.visible = false
      @help_window.set_text("Zegar gry")
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      case @command_window_time_format.index
      when 0
        $game_variables[Ayene::ZMIENNA_FORMATU] = 0
      when 1
        $game_variables[Ayene::ZMIENNA_FORMATU] = 1
      end       
      @time_window.refresh
      @command_window.active = true
      @command_window_time_format.active = false     
      @command_window_time_format.visible = false
      @help_window.set_text("Zegar gry")
    end
  end
 
  def update_window_set_time
    if Input.trigger?(Input::B)
      Sound.play_cancel
      @command_window.active = true
      @window_set_time.active = false 
      @window_set_time.visible = false
      @help_window.set_text("Zegar gry")
    elsif Input.trigger?(Input::C)
      Sound.play_decision   
      $game_variables[Ayene::ZMIENNA_CZASU] = @window_set_time.number
      Graphics.frame_count = 0
      @command_window.active = true
      @window_set_time.active = false     
      @window_set_time.visible = false
      @help_window.set_text("Zegar gry")
    end
  end
 
  def update_kropki   
    if @animation > 50
      @animation = 0
    end
    if (@kropki.opacity > 250 and @animation > 50)
      @kropki.opacity = 0       
    end     
    if (@kropki.opacity < 5 and @animation > 50)
      @kropki.opacity = 250             
    end   
  end 
end

class Window_TimeInput < Window_Base
 
  def initialize
    super(0, 160, 190, 100)
    @number = 0
    @digits_max = 6
    @index = 0
    self.opacity = 255
    self.active = false
    self.z += 9999
    refresh
    update_cursor
  end
 
  def number
    return @number
  end
 
  def number=(number)
    @number = [[number, 0].max, 10 ** @digits_max - 1].min
    @index = 0
    refresh
  end
 
  def digits_max
    return @digits_max
  end
 
  def digits_max=(digits_max)
    @digits_max = digits_max
    refresh
  end
 
  def cursor_right(wrap)
    if @index < @digits_max - 1 or wrap
      @index = (@index + 1) % (@digits_max / 2)
    end
  end
 
  def cursor_left(wrap)
    if @index > 0 or wrap
      @index = (@index + @digits_max - 1) % (@digits_max / 2)
    end
  end
 
  def update
    super
    if self.active
      if Input.repeat?(Input::UP) or Input.repeat?(Input::DOWN)
        Sound.play_cursor       
        place = 10 ** (@digits_max - 2 - @index * 2)
        n = @number / place % 100   
        @number -= n * place     
        case @index
        when 0
          n = (n + 1) % 24 if Input.repeat?(Input::UP)
          n = (n + 23) % 24 if Input.repeat?(Input::DOWN) 
        when 1,2
          n = (n + 1) % 60 if Input.repeat?(Input::UP)
          n = (n + 59) % 60 if Input.repeat?(Input::DOWN) 
        end       
        @number += n * place
        refresh
      end
      last_index = @index
      if Input.repeat?(Input::RIGHT)
        cursor_right(Input.trigger?(Input::RIGHT))
      end
      if Input.repeat?(Input::LEFT)
        cursor_left(Input.trigger?(Input::LEFT))
      end
      if @index != last_index
        Sound.play_cursor
      end
      update_cursor
    end
  end
 
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    s = sprintf("%0*d", @digits_max, @number)     
    for i in 0...@digits_max
      self.contents.draw_text(14 + i * 16, 32, 16, WLH, s[i,1], 1)
    end
    self.contents.font.color = system_color
    self.contents.draw_text(14, 0, self.width - 40, WLH, "HH:MM:SS", 0)
  end
 
 def update_cursor
    self.cursor_rect.set(14 + @index * 32, 32, 32, WLH)
  end
end



class Window_Time < Window_Base
  def initialize
    super(0, 0, 160, 60)
    self.opacity = 0
    refresh
  end
  def refresh   
    self.contents.clear
    self.contents.font.color = system_color
    font_size = self.contents.font.size
    font_name = self.contents.font.name   
    clock = $game_variables[Ayene::ZMIENNA_CZASU]   
    h = clock / 100 / 100
    m = clock / 100 % 100
    s = clock % 100
    clock2 = s + m * 60 + h * 3600   
    @total_sec = clock2 + (Graphics.frame_count / Graphics.frame_rate)
    hour = @total_sec / 60 / 60
    min = @total_sec / 60 % 60
    sec = @total_sec % 60     
    if hour >= 24
      hour = hour - 24
    end   
    if hour == 24 and min = 0 and sec = 0
      Graphics.frame_count = 0
      @total_sec = 0
      $game_variables[Ayene::ZMIENNA_CZASU] = 0
      hour = 0     
    end 
    case $game_variables[Ayene::ZMIENNA_FORMATU]
    when 0
      text1 = sprintf("%02d", hour)   
      text2 = sprintf("%02d", min)
      text3 = sprintf("%02d", sec)
    when 1
      if hour > 12
        text1 = sprintf("%02d", hour - 12) 
        text2 = sprintf("%02d", min)
        text3 = "PM"
      else
        text1 = sprintf("%02d", hour) 
        text2 = sprintf("%02d", min)
        text3 = "AM"
      end     
    end
    self.contents.font.color = normal_color
    self.contents.font.size = 32
    self.contents.font.name = Ayene::CZCIONKA
    self.contents.draw_text(2, 0, 100, 32, ":", 1) if sec % 2 == 0   
    self.contents.draw_text(-55, 0, 100, 32, text1, 2)
    self.contents.draw_text(55, 0, 100, 32, text2, 0)
    self.contents.font.size = 24
    self.contents.draw_text(95, 0, 100, 34, text3, 0)
    self.contents.font.size = font_size     
    self.contents.font.name = font_name
  end
  def update
    super
    if Graphics.frame_count / Graphics.frame_rate != @total_sec
      refresh     
    end
  end
end

class Window_Time_Status < Window_Base
  def initialize(x, y)
    super(x, y, 354, 360) 
    self.z = 1   
    bitmap = Cache::picture(Ayene::LOGO)
    cw = bitmap.width + 32
    self.contents.blt(self.width - cw, 220, bitmap, Rect.new(0, 0, 200, 200))     
  end
end


Trzeba ściągnąć czcionkę::

http://www.dafont.com/ds-digital.font
następnie utworzyć w folderze z grą folder "Fonts" i wgrać tam czcionkę

Następnie trzeba pobrać te obrazki dla poprawnego działania zegara i umieścić je w folderze gra/Graphics/Pictures

Spoiler:

logo.png



zegar.png


Zegar wywołuje się skryptem w zdarzeniu:
Kod:
$scene= Scene_Zegar.new(false)


[ Dodano: Nie 21 Mar, 2010 11:44 ]
PS.Trzeba zmienic nazwę pierwszego obrazga na "logo.png" bo jest ustawiony na "logogi.png"
 
 
Agumon 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 53 razy
Dołączył: 30 Gru 2009
Posty: 515
Skąd: Ruda Śląska
Wysłany: Nie 21 Mar, 2010 14:38
a da się tak zrobić żeby ten zegar się wyświetlał w prawym górnym rogu???
________________________
Pomogłem? Daj ""
Piszę poprawnie po polsku

 
 
mari1002 




Preferowany:
RPG Maker VX

Dołączył: 17 Mar 2010
Posty: 29
Wysłany: Nie 21 Mar, 2010 14:44
niestety, ja akurat nie wiem czy umiałbym tak zrobić, ale możesz się zwrócić do ayene
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Nie 21 Mar, 2010 17:11
Na końcu skryptu dodaj:
Spoiler:

Kod:
class Scene_Map < Scene_Base
  alias ayene_zegar_scmap_start start
  alias ayene_zegar_scmap_terminate terminate
  alias ayene_zegar_scmap_update update
 
  def start
    ayene_zegar_scmap_start
    @time_window = Window_Time.new
  end 
  def terminate
    ayene_zegar_scmap_terminate
    @time_window.dispose
  end 
 
  def update   
    ayene_zegar_scmap_update
    @time_window.update
    if $game_switches[Ayene::NA_MAPIE]
      @time_window.visible = false
    else
      @time_window.visible = true
    end   
  end 
end


Następnie znajdź:
Kod:
LOGO = "logo"

i po tym dodaj:
Kod:
NA_MAPIE = 10
________________________


 
 
 
mari1002 




Preferowany:
RPG Maker VX

Dołączył: 17 Mar 2010
Posty: 29
Wysłany: Nie 21 Mar, 2010 17:22
a można zrobić tak, żeby przy włączeniu gry zaraz była ustawiona dana godzina??
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Nie 21 Mar, 2010 17:46
Wykorzystaj zmienną 389 (ZMIENNA_CZASU) i ustaw na początku gry np. 101010. Pierwsze dwie cyfry to godzina, kolejne dwie to minuty i ostatnie dwie to sekundy. Nie dawaj zmiennej większej niż 240000.
________________________


 
 
 
Gabe33 




Preferowany:
RPG Maker VX

Pomógł: 5 razy
Dołączył: 06 Sie 2010
Posty: 76
Skąd: z NukeTown
Wysłany: Wto 31 Sie, 2010 13:50
A mozna by było w prawym dolnym rogu?????
Bo w prawym górnym rogu mam mini mape :-D
________________________

 
 
polek 



Preferowany:
RPG Maker VX

Dołączył: 29 Kwi 2011
Posty: 8
Wysłany: Sob 30 Kwi, 2011 19:33
a będzie się zmieniała też pora dnia wraz z czasem
________________________
He ty tam nooo ty tam no ty...


stan ,,Wolność Świata"

ok. 0.00.002%
 
 
Azux 



Preferowany:
RPG Maker VX

Pomógł: 8 razy
Dołączył: 28 Lut 2011
Posty: 87
Wysłany: Nie 01 Maj, 2011 10:21
na zmiane pory dnia jest inny skrypt jak dobrze kojaze Dzien i Noc (nie jestem pewny)
________________________
Spoiler:


Pracuje nad "Rakrato"
Mapki: 0,3%
Skrypty: !?!?-%
Przedmioty: 0,1%
Quest: 0,3%
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene