Krótki opis:
To swoista kontynuacja skryptu głodu i pragnienia, ich uzupełnienie, które pochodzi z tejże samej strony, co w.w. skrypt.
Funkcje skryptu:
- Blokowanie biegania jeśli wytrzymałość zejdzie
- Odejmowanie wytrzymałości za bieg
- Odejmowanie jej za skok (teoretycznie kompatybilny ze skryptem skoku)
- Przechowywanie wartości w zmiennej (można dowolnie zmieniać)
- HUD na mapie zanikający, gdy nieużywane
- Okienko w menu
- Dodawanie max wytrzymałości co poziom
- Dodawanie max wytrzymałości komendą w zdarzeniu
- Blokowanie zużywania wytrzymałości
Autor:
Jet10985 (Jet) z pomocÄ… Mithran
Kompatybilność:
Na VX-ie śmiga na pewno, na XP nie sprawdzałem.
Nie gryzie się z menu jednoosobowym, ale o pasku w menu możemy zapomnieć (HUD działa)
Skrypt:
Spoiler:
Kod:
#===============================================================================
# Stamina System
# By Jet10985 (Jet)
# Help by: Mithran
#===============================================================================
# This snippet will add a stamina system to your game. Stamina, meaning that
# when the player dashes, they will lose stamina. When the stamina runs out
# the player will not be able to dash until it is re-charged.
# This script has: 20 customization options.
#===============================================================================
# Overwritten Methods:
# None
#-------------------------------------------------------------------------------
# Aliased methods:
# Game_Character: jump, increase_steps
# Scene_Map: start, update, terminate
# Game_Player: dash?
# Scene_Menu: start, update, terminate
# Scene_File: write_save_data, read_save_data
#===============================================================================
=begin
Instrukcja:
Aby zwiększyć poziom wytrzymałości, użyj komendy "Script...":
increase_max_stamina(amount)
amount = ilość, do której ma wzrosnąć wytrzymałość
Aby zatrzymać utratę wytrzymałości użyj:
stamina_loss(option)
option = either true or false. True gives them infinite stamina, false makes
the stamina go donw once again.
=end
module Jet_Stamina
# Użyj ikonę lub literę, by wyświetlić wskaźnik?
USE_LETTER = true
# ID ikony, jeśli powyżej false.
ICON_STAMINA_ID = 50
# Litera wyświetlana przy pasku wytrzymałości, by było wiadomo, że to ona
STAMINA_INITIAL = "S"
# Przeźroczystość HUD-a z paskiem.
# 0 dla samego paska bez okienka, 255 dla kompletnego okienka.
MAP_WINDOW_OPACITY = 200
# Pokazywać wytrzymałość w menu?
STAMINA_IN_MENU = true
# Pokazywać regenerację wytrzymałości w menu?
UPDATE_STAMINA_IN_MENU = true
# Koordynaty pokazywania paska w menu (radzę podnieść to do góry, bo zasłania złoto)
# W menu jednoosobowym nie jest wyświetlane wogóle!)
MENU_WINDOW_COORDS = [0, 360]
# Pokazywać ilość wytrzymałośći liczbowo (true), czy samym paskiem (false)?
STAMINA_BAR_WITH_NUMBERS = true
# Jeśli używasz systemu skoku zaznacz true.
JUMP_SYSTEM_COMPATABILITY = false
# Ilość wytrzymałości traconej na skok.
STAMINA_JUMP_LOSS = 6
end
#===============================================================================
# NIE EDYTUJ PONIŻEJ, CHYBA, ŻE WIESZ, CO ROBISZ.
#===============================================================================
class Game_Stamina
def update_stamina
get_max_stamina
$game_stamina.stamina_gain += 1 unless $game_player.moving? && $game_player.dash?
if $game_stamina.stamina_gain == 60
$game_stamina.stamina += STAMINA_REGEN_PER_SECOND
$game_stamina.stamina_gain = 0
if $game_stamina.stamina > $game_stamina.max_stamina
$game_stamina.stamina = $game_stamina.max_stamina
end
end
$game_variables[STAMINA_TO_VARIABLE_ID] = $game_stamina.stamina
end
def get_initial_stamina
if $game_party.members[ACTOR_STAMINA_ID].level < STAMINA_LEVELS.size
$game_stamina.stamina = STAMINA_LEVELS[$game_party.members[ACTOR_STAMINA_ID].level - 1]
else
$game_stamina.stamina = STAMINA_LEVELS.max + (($game_party.members[ACTOR_STAMINA_ID].level - (STAMINA_LEVELS.size - 1)) * BASE_STAMINA_RAISE)
end
end
def get_max_stamina
if $game_party.members[ACTOR_STAMINA_ID].level > STAMINA_LEVELS.size
$game_stamina.max_stamina = STAMINA_LEVELS.max + (($game_party.members[ACTOR_STAMINA_ID].level - (STAMINA_LEVELS.size - 1)) * BASE_STAMINA_RAISE) + $game_stamina.max_stamina_plus
else
$game_stamina.max_stamina = STAMINA_LEVELS[$game_party.members[ACTOR_STAMINA_ID].level - 1] + $game_stamina.max_stamina_plus
end
return $game_stamina.max_stamina
end
end
$game_stamina = Game_Stamina.new
class Game_Interpreter
def stamina_loss(option)
if option == true || option == false
$game_stamina.disable_stamina_loss = option
else
p "The option you chose was neither true or false. Please error check and try again"
end
end
def increase_max_stamina(amount)
$game_stamina.max_stamina_plus += amount
end
end
class Game_Character
include Jet_Stamina
if JUMP_SYSTEM_COMPATABILITY
alias jet5902_jump jump unless $@
def jump(*args)
$game_stamina.stamina -= STAMINA_JUMP_LOSS
jet5902_jump(*args)
end
end
alias jet9211_increase_steps increase_steps unless $@
def increase_steps(*args)
$game_stamina.stamina -= STAMINA_DOWN_PER_SQUARE if $game_player.dash? && $game_stamina.disable_stamina_loss && self.is_a?(Game_Player)
jet9211_increase_steps(*args)
end
end
class Window_Stamina < Window_Base
def initialize(x, y)
super(x, y, 160, WLH + 32)
self.opacity = MAP_WINDOW_OPACITY if $scene.is_a?(Scene_Map)
refresh
end
def refresh
self.contents.clear
draw_actor_stamina(0, 0)
end
def update
refresh
end
end
class Window_Base
include Jet_Stamina
def stamina_color
return crisis_color if $game_stamina.stamina < $game_stamina.get_max_stamina / 4
return normal_color
end
def draw_actor_stamina(x, y, width = 120)
draw_actor_stamina_gauge(x, y, width)
self.contents.font.color = system_color
if USE_LETTER
self.contents.draw_text(x, y, 30, WLH, STAMINA_INITIAL)
else
draw_icon(ICON_STAMINA_ID, x, y)
end
self.contents.font.color = stamina_color
last_font_size = self.contents.font.size
xr = x + width
if STAMINA_BAR_WITH_NUMBERS
if width < 120
self.contents.draw_text(xr - 44, y, 44, WLH, $game_stamina.stamina, 2)
else
self.contents.draw_text(xr - 99, y, 44, WLH, $game_stamina.stamina, 2)
self.contents.font.color = normal_color
self.contents.draw_text(xr - 55, y, 11, WLH, "/", 2)
self.contents.draw_text(xr - 44, y, 44, WLH, $game_stamina.get_max_stamina, 2)
end
end
end
def draw_actor_stamina_gauge(x, y, width = 120)
gw = width * $game_stamina.stamina / $game_stamina.max_stamina
gc1 = STAMINA_GAUGE_COLOR1
gc2 = STAMINA_GAUGE_COLOR2
self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
end
end
class Scene_Map
include Jet_Stamina
alias jet0221_start start unless $@
def start
$game_stamina.update_stamina
unless $game_stamina.got_initial_stamina
$game_stamina.get_initial_stamina
$game_stamina.got_initial_stamina = true
end
@stamina_window = Window_Stamina.new(MAP_WINDOW_COORDS[0], MAP_WINDOW_COORDS[1]) if STAMINA_ON_MAP
@stamina_window.visible = false
jet0221_start
end
alias jet5021_update update unless $@
def update
$game_stamina.update_stamina
if !$game_switches[MAP_ONOFF_SWITCH] && STAMINA_ON_MAP
@stamina_window.visible = false
elsif STAMINA_ON_MAP
@stamina_window.visible = true
end
@stamina_window.update if STAMINA_ON_MAP
if @stamina_window.visible && !$game_player.dash?
@stamina_window.opacity -= 1
if @stamina_window.opacity == 10
@stamina_window.openness -= 1
end
elsif @stamina_window.visible && $game_player.dash?
@stamina_window.opacity += 1 unless @stamina_window.opacity == 255
@stamina_window.openness += 1 unless @stamina_window.openness == 255
end
jet5021_update
end
alias jet2048_terminate terminate unless $@
def terminate
@stamina_window.dispose if STAMINA_ON_MAP
jet2048_terminate
end
end
class Game_Player
alias jet6902_dash? dash? unless $@
def dash?
return false if $game_stamina.stamina < Jet_Stamina::STAMINA_DOWN_PER_SQUARE
jet6902_dash?
end
end
class Scene_Menu
include Jet_Stamina
alias jet5893_start start unless $@
def start
jet5893_start
@stamina_window = Window_Stamina.new(MENU_WINDOW_COORDS[0], MENU_WINDOW_COORDS[1]) if STAMINA_IN_MENU
end
alias jet6942_update update unless $@
def update
jet6942_update
$game_stamina.update_stamina if UPDATE_STAMINA_IN_MENU
@stamina_window.update if STAMINA_IN_MENU
end
alias jet7692_terminate terminate unless $@
def terminate
@stamina_window.dispose if STAMINA_IN_MENU
jet7692_terminate
end
end
class Scene_File
alias jet3891_write_save_data write_save_data unless $@
def write_save_data(file)
jet3891_write_save_data(file)
Marshal.dump($game_stamina, file)
end
alias jet5931_read_save_data read_save_data unless $@
def read_save_data(file)
jet5931_read_save_data(file)
$game_stamina = Marshal.load(file)
end
end
unless $engine_scripts.nil?
JetEngine.active("Stamina System", 1)
end
Demo:
Screeny:
Spoiler:
Pasek [S]taminy zasłania złoto
Pasek [S]taminy jako HUD na mapie
Instalacja:
Wrzucasz nad main.
Konfiguracja opisana w skrypcie.
Zastosowanie pokazane w demie.
Witaj.Czy mógłbyś zamieścić demo na innym hoście, gdyż wyświetla się ta oto informacja:
Cytat:
Plik: staminasystem.rar
Serwer z którego próbujesz pobrać plik jest chwilowo niedostępny.
Spróbuj później lub pobierz ten plik z serwera Premium!
.
Screeny też wgraj gdzie indziej bo nie działają i ogólnie nie mogę się połapać z tym skryptem, który jest mi bardzo potrzebny.
Wielkie dzięki.Skrypt będzie nieodzownym elementem mojej gry.Nawet jeśli chcesz dam cię do credits, za znalezienie tego skryptu (xDDD).No, ale krytyka musi być.Na początku chciałbym powiedzieć : na cholerę dodawałeś RTP do dema?Następnie dodałbym : demo ma kilka będów i widać, że robione na szybko.No a teraz mam pytanie nie dotyczące krytyki : Czy można aby HUD pokazywany był jako grafika(pasek też)?
Fakt, demko robiłem na szybko, a rtp dodałem odruchowo
Hud jako grafika? Tzn. jakaś grafika *.png zamiast okienka, tak? Przyznam się szczerze, że nie wiem jak to zrobić. Ja to tylko przetłumaczyłem i wrzuciłem do osobnego tematu
Musiałbyś zwrócić się do Ayene, albo kogoś, kto zna ruby
________________________
"Na trolla pewne są tylko dwie pewne metody, jedna samopowtarzalna i druga, wymagająca przeładowania ręcznego."
Pomog³a: 232 razy Do³±czy³a: 18 Wrz 2007 Posty: 2424
Wys³any: Czw 02 Gru, 2010 21:30
Poster27, ale w menu również ma wyświetlać HUD obrazkowy? Trochę dziwnie będzie to wyglądać. Dobrze by było żebyś podał również wymiary rzekomego obrazka.
1.Nie, chciałbym, aby opcja w menu ogólnie zniknęła.
2.Wymiary?Nie zastanawiałem się skąd wezmę grafiki gdy to pisałem.Po prostu chciałbym żeby było ładniej, ponieważ sam widok pasków i okienek typowych jak w menu mnie obrzydza.
Pomog³a: 232 razy Do³±czy³a: 18 Wrz 2007 Posty: 2424
Wys³any: Sob 04 Gru, 2010 15:58
To nie kwestia nałożenia, tylko nadpisywania klasy. Dlatego używa się aliasów Przecież i tak nie chciałeś okna w menu. Umieść zatem skrypt nad skryptem z oknem lokacji, wówczas ten bliżej Main będzie się wyświetlał
u mnie nie widać tego paska na mapie tylko w menu .Mam skrypt co pokazuje MP,HP i doświadczenie namapie. Czy to ma jakiś związek że go nie widać ?
W menu pokazuje domyślnie. Możliwe, że HUD MP, HP zasłania hud wyczerpania, więc spróbuj zmienić jego położenie w konfiguracji. Domyslnie jest to prawy dolny róg.
Lub po prostu nie uruchomiłeś odpowiedniego przełącznika...
________________________
"Na trolla pewne są tylko dwie pewne metody, jedna samopowtarzalna i druga, wymagająca przeładowania ręcznego."
Ayene, ja mam taki błąd z linijką 325, ale dopiero wtedy gdy włączę menu w grze. Myślę, że to przez to, że mam skrypt lokacja w menu... Chciałbym by pasek wyt był tylko na mapie, a na mapie wgl go nie ma... Jak coś to mam jeszcze w grze hud hp oraz hud eq. Pomożesz?
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