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.
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.
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.
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