Ogłoszenie 

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


Administracja Forum


Poprzedni temat «» Następny temat
Przesunięty przez: Ayene
Wto 06 Kwi, 2010 13:18
Skrypt lub zdarzeniówka
Autor Wiadomość
mari1002 




Preferowany:
RPG Maker VX

Dołączył: 17 Mar 2010
Posty: 29
Wysłany: Czw 18 Mar, 2010 15:14
Skrypt lub zdarzeniówka
Bardzo bym prosił o skrypt lub zdarzenie które wywołuje zegar. Bardzo go potrzebuje :-|
 
 
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: Czw 18 Mar, 2010 16:13
Ale zegar że stoper który odmierza ci czas do końca???
________________________
Pomogłem? Daj ""
Piszę poprawnie po polsku

 
 
mari1002 




Preferowany:
RPG Maker VX

Dołączył: 17 Mar 2010
Posty: 29
Wysłany: Czw 18 Mar, 2010 16:15
zegar, np. w jakimś przedmiocie, otwierasz menu przedmioty i np. zegarek, i że tam możesz ustawić godz min i potem sprawdzać która godzina, tak jak zegarek w rzeczywistości

[ Dodano: Sob 20 Mar, 2010 10:25 ]
please bardzo potrzebuje
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sob 20 Mar, 2010 19:26
Nie mam zdarzeniówki, ale zrobiłam skrypt. Tylko dobrze przetestuj:

Spoiler:

Kod:
#==============================================================================
# Zegar
# by Ayene [yurika@o2.pl]
# www.ultimateam.pl
#------------------------------------------------------------------------------
# Skrypt dodaje okienko z zegarkiem. Jest w fazie testów.
# 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
end

class Scene_Zegar < Scene_Base

  def initialize(from_menu, index = 0)
    @index = index   
    @from_menu = from_menu
  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
    @time_window.y = @help_window.height     
  end
  def terminate
    super
    dispose_menu_background
    @command_window.dispose
    @window_set_time.dispose
    @help_window.dispose
    @time_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
    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
    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
    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, 354, 360)
    @animation = 0
    refresh
  end
  def refresh   
    self.contents.clear
    self.contents.font.color = system_color
    font_size = self.contents.font.size   
    self.contents.draw_text(4, 0, 120, 32, "Zegar", 1)   
    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
      text = sprintf("%02d:%02d:%02d", hour, min, sec)   
    when 1
      if hour > 12
        text = sprintf("%02d:%02d PM", hour - 12, min)   
      else
        text = sprintf("%02d:%02d AM", hour, min)
      end     
    end
    self.contents.font.color = normal_color
    self.contents.font.size = 32
    self.contents.draw_text(0, 32, 300, 32, text, 1)     
    self.contents.font.size = font_size       
  end
  def update
    super
    if Graphics.frame_count / Graphics.frame_rate != @total_sec
      refresh     
    end
  end
end


Skrypt wywołaj ze zdarzenia:
Kod:
$scene= Scene_Zegar.new(false)
________________________


 
 
 
mari1002 




Preferowany:
RPG Maker VX

Dołączył: 17 Mar 2010
Posty: 29
Wysłany: Sob 20 Mar, 2010 19:39
a zegar pokazuje się na ekranie gry??

[ Dodano: Sob 20 Mar, 2010 19:44 ]
ayene działa!!! pytanko, czy mogę wstawić ten skrypt na dział skrypty??
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sob 20 Mar, 2010 19:51
Wstrzymaj się jeszcze, bo wymaga testów ;-)
________________________


 
 
 
mari1002 




Preferowany:
RPG Maker VX

Dołączył: 17 Mar 2010
Posty: 29
Wysłany: Sob 20 Mar, 2010 19:52
ale normalnie działa, sprawdzałem!!! to moge wstawić na dział skrypty??
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Nie 21 Mar, 2010 01:05
Poprawiłam jeszcze kilka elementów. Było jakoś tak pusto w tym oknie, więc dodałam kilka animacji i obrazków (między innymi logo). Oto efekt:

Spoiler:


Jak ktoś będzie chciał, to podeślę skrypcik. Pozdrawiam.
________________________


 
 
 
mari1002 




Preferowany:
RPG Maker VX

Dołączył: 17 Mar 2010
Posty: 29
Wysłany: Nie 21 Mar, 2010 10:41
ja też poproszę jeszcze ten ulepszony
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Nie 21 Mar, 2010 11:11
Heh napisałam Tobie, że się zgadzam, ale posta wygasiłam ;-)

A co do skryptu to proszę:
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


W folderze Graphics/Pictures należy umieścić dwa obrazki (oczywiście można zrobić swoje, gdyż domyślne są tylko w celu demonstracji):
Spoiler:

logo.png


zegar.png


W głównym folderze z grą należy utworzyć nowy folder o nazwie 'Fonts' i wrzucić do niego tę czcionkę:
http://www.dafont.com/ds-digital.font

W razie problemów zamieszczę demo.
Pozdrawiam.
________________________


 
 
 
radek02 



Preferowany:
RPG Maker VX

Pomógł: 13 razy
Dołączył: 17 Lut 2010
Posty: 257
Skąd: klikasz ?
Wysłany: Nie 21 Mar, 2010 12:13
a ja wszystko skopiowałem , ale nie działa
________________________
2009-10-12 - dzień , od którego jestem uczestnikiem na polskiej scenie RPG Makera [/b]

Dołącz do grupy makerowiczów na nk ! http://nk.pl/#grupy/29610
 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Nie 21 Mar, 2010 12:21
radek02, a wywołałeś skrypt za pomocą polecenia "script' w zdarzeniu:
Kod:
$scene= Scene_Zegar.new(false)
________________________


 
 
 
radek02 



Preferowany:
RPG Maker VX

Pomógł: 13 razy
Dołączył: 17 Lut 2010
Posty: 257
Skąd: klikasz ?
Wysłany: Nie 21 Mar, 2010 12:33
Ayene, owszem
________________________
2009-10-12 - dzień , od którego jestem uczestnikiem na polskiej scenie RPG Makera [/b]

Dołącz do grupy makerowiczów na nk ! http://nk.pl/#grupy/29610
 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Nie 21 Mar, 2010 12:40
Sprawdź demo:

________________________


 
 
 
radek02 



Preferowany:
RPG Maker VX

Pomógł: 13 razy
Dołączył: 17 Lut 2010
Posty: 257
Skąd: klikasz ?
Wysłany: Nie 21 Mar, 2010 12:51
ups , nie usunąłem czcionek ,w tym był cały problem .... thx ,Ayene
________________________
2009-10-12 - dzień , od którego jestem uczestnikiem na polskiej scenie RPG Makera [/b]

Dołącz do grupy makerowiczów na nk ! http://nk.pl/#grupy/29610
 
 
 
Wyświetl posty z ostatnich:   
Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi
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