Ogłoszenie 

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


Administracja Forum


Poprzedni temat «» Następny temat
[XP+] Stopery
Autor Wiadomość
Mateusz SSJ8 




Preferowany:
RPG Maker XP

Pomógł: 1 raz
Dołączył: 07 Sty 2012
Posty: 46
Skąd: Polska
  Wysłany: Sro 01 Lut, 2012 08:47
[XP+] Stopery
~ Własne stopery ~


Krótki opis:
Wprowadza 3 stopery do gry:
Standardowy odliczak
Stoper z klasycznych gier z serii "Sonic the hedgehog" (może automatycznie kończyć grę, gdy czas się skończy, a to zależy od twórcy gry, w której zostanie użyty)
Stoper z platformówek z serii "Mario" (może automatycznie kończyć grę, gdy czas się skończy, a to zależy od twórcy gry, w której zostanie użyty)

Kontrola standardu: można podmienić z domyślnym

Autor:
Mateusz SSJ8

Kompatybilność:
RPG Maker XP

Skrypt:
Spoiler:

Kod:
class Game_Timer
  attr_reader :stopwatch_count, :stopwatch_target, :last_stopwatch_count,
  :countdown_count, :countdown_limit, :last_countdown_count
 
  def initialize
    initialize_standard
    initialize_stopwatch
    initialize_countdown
  end
 
  def visible?
    return ((@standard_working == true) or (@stopwatch_working == true) or (@countfdown_working == true))
  end
################################################################## 
#=====STANDARDOWY
#=================================================================
def initialize_standard
 @standard_count = 0
 @standard_visible = false
end
def standard_start(time)
 @standard_count = time * Graphics.frame_rate
 @standard_working = true
end
def standard_stop
 @standard_working = false
end

##################################################################
  #=====STOPER
=begin
  Pamiętasz najstarsze gry o jeżu Sonicu? Jeśli chcesz dać podobne rozwiązanie
  do swojej gry, to komendy stopera będą idealne. Aby ich użyć, wprowadź
  "$#{globalna_zegara}.#{metoda}", gdzie globalna_zegara jest TĄ KLASĄ, a
  metoda to funkcja, którą chcesz użyć. Pamiętaj, że niektóre wymagają
  argumentów.
=end
  #=================================================================
  def initialize_stopwatch
    @stopwatch_count = 0
    @stopwatch_target = 0
    @stopwatch_gameover = false
    @stopwatch_battle = false
    @stopwatch_working = false
    @last_stopwatch_count = 0
    @last_stopwatch_target = 0
    @last_stopwatch_battle = false
    @last_stopwatch_gameover = false
  end
  #+++++Start stopera
  def stopwatch_start(target, battle, timeup)
    @stopwatch_count = 0 #ustaw początkowy czas
    @stopwatch_target = (target * Graphics.frame_rate) #ustaw czas,
    #w jakim gracz ma się zmieścić
    @stopwatch_battle = battle #czy stoper tyka podczas walki
    @stopwatch_gameover = timeup #wywołuje koniec gry, jeśli gracz się nie wyrobi
    @stopwatch_working = true #włącza stoper
  end
  #+++++Zatrzymanie stopera
  def stopwatch_stop
    @stopwatch_working = false #wyłącza stoper
    @last_stopwatch_count = @stopwatch_count + 0 #zapamiętuje czas,
    #przez jaki stoper chodził
    @last_stopwatch_target = @stopwatch_target + 0 #zapamiętuje czas,
    #w jakim gracz miał się zmieścić.
    @last_stopwatch_battle = (@stopwatch_battle == true) #zapamiętuje,
    #czy stoper tykał w czasie walki
    @last_stopwatch_gameover = (@stopwatch_gameover == true) #zapamiętuje,
    #czy stoper miał wywołać koniec gry, jeśli gracz się nie wyrobi.
    @stopwatch_count = 0 #kasuje czas, przez jaki stoper chodził
    @stopwatch_target = 0 #kasuje czas, w jakim gracz miał się zmieścić
    @stopwatch_battle = false #zabrania stoperowi tykać w czasie walki
    @stopwatch_gameover = false #zabrania wywołać koniec gry
  end
  #-----Wznowienie działania stopera
  def stopwatch_resume
    @stopwatch_count = @last_stopwatch_count + 0 #ustawia czas
    #z ostatniego pomiaru
    @stopwatch_target = @last_stopwatch_target + 0 #ustawia ostatni czas,
    #w jakim gracz miał się zmieścić
    @stopwatch_battle = (@last_stopwatch_battle == true) #ustawia widoczność
    #stopera w walce z ostatniego pomiaru
    @stopwatch_gameover = (@last_stopwatch_gameover == true) #ustawia
    #wywołanie końca gry w przypadku przekroczenia limitu czasu przez gracza
    #podczas ostatniego pomiaru
    @stopwatch_working = true
  end
  #================================================================
  #Te komendy zmieniają konfigurację stopera, kiedy on tyka
  #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  #-----zmiana działania stopera
  def stopwatch_reset(battle, timeup)
    return unless @stopwatch_working
    @stopwatch_battle = battle
    @stopwatch_gameover = timeup
  end
  #----przesunięcie czasu wskazanego przez stoper
  def stopwatch_adjust(count_plus, target_delay)
    return unless @stopwatch_working
    @stopwatch_count += (count_plus * Graphics.frame_rate) #przyspiesza stoper
    @stopwatch_target += (target_delay * Graphics.frame_rate) #zwiększa limit czasu
    @stopwatch_count = [@stopwatch_count, 0].max
    @stopwatch_target =[@stopwatch_target, 0].max
  end
  #=================================================================
  #Te komendy zmieniają konfigurację stopera, póki on jeszcze nie chodzi
  #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  #-----zmiana działania stopera
  def stopwatch_preset(battle, timeup)
    return if @stopwatch_working
    @last_stopwatch_battle = battle
    @last_stopwatch_gameover = timeup
  end
  #-----przesunięcie czasu wskazanego przez stoper
  def stopwatch_preadjust(count_plus, target_delay)
    return if @stopwatch_working
    @last_stopwatch_count += (count_plus * Graphics.frame_rate)
    @last_stopwatch_target += (target_delay * Graphics.frame_rate)
    @last_stopwatch_count = [@last_stopwatch_count, 0].max
    @last_stopwatch_target =[@last_stopwatch_target, 0].max
  end
 
  ##################################################################
  #=====ODLICZAK
  #Ten zegar jest przeznaczony do misji typu "Przejdź, zanim skończy ci się czas".
  #Te komendy pozwolą ci go obsługiwać. Pamiętaj, że odliczak nie odlicza od zera
  #=================================================================
  def initialize_countdown
    @countdown_count = 0
    @countdown_limit = 0
    @countdown_battle = false
    @countdown_gameover = false
    @countdown_working = false
    @last_countdown_count = 0
    @last_countdown_limit = 0
    @last_countdown_battle = false
    @last_countdown_gameover = false
  end
  #-----Start odliczaka
  def countdown_start(time, battle, timeup)
    timer = time * Graphics.frame_rate
    @countdown_count = timer + 0
    @countdown_limit = timer + 0
    @countdown_battle = battle
    @countdown_gameover = timeup
    @countdown_working = true
  end
  #-----Zatrzymanie odliczaka
  def countdown_stop
    @countdown_working = false
    @last_countdown_count = @countdown_count + 0
    @last_countdown_limit = @countdown_limit += 0
    @last_countdown_battle = (@countdown_battle == true)
    @last_countdown_gameover = (@countdown_gameover == true)
    @countdown_count = 0
    @countdown_limit = 0
    @countdown_battle = false
    @countdown_gameover = false
  end
  #-----Wznowienie pomiaru czasu
  def countdown_resume
    @countdown_count = @last_countdown_count + 0
    @countdown_limit = @last_countdown_limit + 0
    @countdown_batle = (@last_countdown_battle == true)
    @countdown_gameover = (@last_countdown_gameover == true)
    @countdown_working = true
  end
  #-----zmiana działania, gdy chodzi
  def countdown_reset(battle, timeup)
    return unless @countdown_working
    @countdown_battle = battle
    @countdown_gameover = timeup
  end
  #-----zmiana działania, gdy stoi
  def countdown_preset(battle, timeup)
    return if @countdown_working
    @last_countdown_battle = battle
    @last_countdown_gameover = timeup
  end
  #-----przesunięcie czasu, gdy chodzi
  def countdown_adjust(time_plus, overflow=false)
    time_overflow = @countdown_count > @countdown_limit
    return unless @countdown_working
    @countdown_count += time_plus * Graphics.frame_rate
    @countdown_count = [@countdown_count, 0].max
    unless overflow
      unless time_overflow
        @countdown_count = [[@countdown_count, @countdown_limit].min, 0].max
      end
    end
  end
  #-----przesunięcie czasu, gdy stoi
  def countdown_preadjust(time_plus, overflow=false)
    time_overflow = @countdown_count > @countdown_limit
    return if @countdown_working
    @last_countdown_count += time_plus * Graphics.frame_rate
    @last_countdown_count = [@last_countdown_count, 0].max
    unless overflow
      unless time_overflow
        @last_countdown_count = [[@last_countdown_count,
        @last_countdown_limit].min, 0].max
      end
    end
  end
  #-----zwiększ limit czasu, gdy chodzi
  def countdown_limit_up(time_plus, adjust=false)
    return unless @countdown_working
    @countdown_limit += time_plus * Graphics.frame_rate
    @countdown_limit = [@countdown_limit, 0].max
    countdown_adjust(time_plus) if adjust
  end
  #-----zwiększ limit czasu, gdy stoi
  def countdown_limit_raise(time_plus, adjust=false)
    return if @countdown_working
    @last_countdown_limit += time_plus * Graphics.frame_rate
    @last_countdown_limit = [@last_countdown_limit, 0].max
    countdown_preadjust(time_plus) if adjust
  end
end


Dodatkowe informacje:
Stoper należy wczytać do zmiennej $game_timer.

Normalna obsługa działa na zdarzeniu poprzez użycie komendy "Wywołaj skrypt" zawierającej dowolne z zamieszczonych tutaj parametrów:
standard_start(time)
standard_stop
stopwatch_start(target, battle, timeup)
stopwatch_stop
stopwatch_resume
stopwatch_reset(battle, timeup)
stopwatch_adjust(count_plus, target_delay)
stopwatch_preset(battle, timeup)
stopwatch_preadjust(count_plus, target_delay)
countdown_start(time, battle, timeup)
countdown_stop
countdown_resume
countdown_reset(battle, timeup)
countdown_preset(battle, timeup)
countdown_adjust(time_plus[, overflow])
countdown_preadjust(time_plus[, overflow])
countdown_limit_up(time_plus[, adjust])
countdown_limit_raise(time_plus[, adjust])
UWAGA!!! W Nawiasie kwadratowym zawarty jest parametr opcjonalny
[X] Skrypt nie zawiera sprite'a, bo nie każdy lubi ikony
________________________
Ryzykując, że zrobisz super gniota, możesz zrobić super hit lub super gniota.
 
 
 
spartanPAGE 




Pomógł: 12 razy
Dołączył: 07 Gru 2011
Posty: 103
Skąd: Hellada
Wysłany: Sob 04 Lut, 2012 17:05
Można też zmienić miejsce występowania stopera będącego w grze, a w typowym zdarzeniu dać, że jak stoper wynosi 0 to przenosi nas do menu ew wyskakuje game over.
ale jak by ktoś potrzebował stopera do tego, oraz drugiego do czegoś innego w tym samym czasie, to się przyda. Poza tym, ten skrypt sięga trochę głębiej, więc DOBRA ROBOTA ;-)
________________________


Programowanie jest moją pasją. Programuję w C, C++, C#, Javie i Delphi. Jeśli czegoś porzebujesz (związanego z tymi językami), śmiało możesz pisać na PW.
 
 
Mateusz SSJ8 




Preferowany:
RPG Maker XP

Pomógł: 1 raz
Dołączył: 07 Sty 2012
Posty: 46
Skąd: Polska
Wysłany: Nie 05 Lut, 2012 13:41
Standardowy stoper z tego skryptu nie wywoła końca gry, ale normalny stoper i odliczak tak.
+stoper - w miejscu "timeup" wprowadź true albo false. Zegar automatycznie wywoła koniec gry, kiedy liczba ramek od startu stopera przekroczy liczbę ramek, w jakiej trzeba się zmieścić.
+odliczak - w miejscu "timeup" wprowadź true albo false. Zegar automatycznie wywoła koniec gry, kiedy skończy się czas.
________________________
Ryzykując, że zrobisz super gniota, możesz zrobić super hit lub super gniota.
 
 
 
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