Ogłoszenie 

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


Administracja Forum


Poprzedni temat «» Następny temat
System wytrzymałości
Autor Wiadomość
Angius 

Nie wkurzać



Preferowany:
RPG Maker VX

Pomógł: 104 razy
Dołączył: 30 Paź 2010
Posty: 1276
Skąd: wROCK
  Wysłany: Nie 28 Lis, 2010 14:49
System wytrzymałości
~Wytrzymałość~

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"

# Poziomy, na których ilość wytrzymałości wzrasta (domyślnie cztery)
STAMINA_LEVELS = [60, 80, 95, 110]

# This actor's level will determine the stamina level set above
# (Poziom tego aktora określi poziom wytrzymałości powyżej?)
ACTOR_STAMINA_ID = 0

# Ilość, o którą wzrasta wytrzymałość co poziom (nieokreślony powyzej)
BASE_STAMINA_RAISE = 10

# Ilość wytrzymałości tracona na jedną kratkę biegu.
STAMINA_DOWN_PER_SQUARE = 3

# Ilość wytrzymałości przywracanej na każdą sekundę stania.
STAMINA_REGEN_PER_SECOND = 2

# Zmienna, w której zapisywana jest wytrzymałość.
STAMINA_TO_VARIABLE_ID = 55

# Pokazywać wytrzymałość na mapie?
STAMINA_ON_MAP = true

# Koordynaty ekranu na których wyświetlany będzie pasek
MAP_WINDOW_COORDS = [386, 360]

# Przełącznik, który włącza i wyłącza pasek wytrzymałości.
MAP_ONOFF_SWITCH = 61

# 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

# Kolory gradientu paska wytrzymałości.
STAMINA_GAUGE_COLOR1 = Color.new(184, 134, 11)
STAMINA_GAUGE_COLOR2 = Color.new(218, 165, 32)

# 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

include Jet_Stamina

attr_accessor :stamina
attr_accessor :max_stamina
attr_accessor :stamina_gain
attr_accessor :max_stamina_plus
attr_accessor :disable_stamina_loss
attr_accessor :got_initial_stamina

def initialize
@stamina = 0
@stamina_gain = 0
@max_stamina = 0
@max_stamina_plus = 0
@disable_stamina_loss = true
@got_initial_stamina = false
end

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




Preferowany:
RPG Maker VX

Pomógł: 22 razy
Dołączył: 27 Kwi 2010
Posty: 136
Skąd: że znowu
Wysłany: Pon 29 Lis, 2010 14:17
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.
 
 
Angius 

Nie wkurzać



Preferowany:
RPG Maker VX

Pomógł: 104 razy
Dołączył: 30 Paź 2010
Posty: 1276
Skąd: wROCK
Wysłany: Pon 29 Lis, 2010 16:25
Dobrze, jeszcze raz (screeny na ImageShack i Tinypic, demo na Mediafire)
Screeny:
Spoiler:


Pasek [S]taminy zasłania złoto

Pasek [S]taminy jako HUD na mapie



I demko na Mediafire:
Klik!
________________________
"Na trolla pewne są tylko dwie pewne metody, jedna samopowtarzalna i druga, wymagająca przeładowania ręcznego."


 
 
Poster27 




Preferowany:
RPG Maker VX

Pomógł: 22 razy
Dołączył: 27 Kwi 2010
Posty: 136
Skąd: że znowu
Wysłany: Sro 01 Gru, 2010 19:21
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ż)?
 
 
Angius 

Nie wkurzać



Preferowany:
RPG Maker VX

Pomógł: 104 razy
Dołączył: 30 Paź 2010
Posty: 1276
Skąd: wROCK
Wysłany: Czw 02 Gru, 2010 19:00
Fakt, demko robiłem na szybko, a rtp dodałem odruchowo :-P
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."


 
 
Ayene 




Ranga RM:
4 gry

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


 
 
 
Poster27 




Preferowany:
RPG Maker VX

Pomógł: 22 razy
Dołączył: 27 Kwi 2010
Posty: 136
Skąd: że znowu
Wysłany: Pią 03 Gru, 2010 17:47
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.
 
 
Killerczyc 




Preferowany:
RPG Maker VX

Pomógł: 8 razy
Dołączył: 20 Lip 2010
Posty: 199
Skąd: (Brak info.)
Wysłany: Sob 04 Gru, 2010 14:59
Ej, Angius lub Ayene - Skryp nie idzie ze skryptem Lokacja w Menu :cry:
Help me!!
________________________
Szukam kogoś do grania ze mną w Minecraft Multiplayer przez Hamachi - coś więcej w temacie
 
 
 
Angius 

Nie wkurzać



Preferowany:
RPG Maker VX

Pomógł: 104 razy
Dołączył: 30 Paź 2010
Posty: 1276
Skąd: wROCK
Wysłany: Sob 04 Gru, 2010 15:20
Możliwe, że jedno okienko nakłada się na drugie, jak w przypadku złota... Spróbuj je poprzesuwać.
________________________
"Na trolla pewne są tylko dwie pewne metody, jedna samopowtarzalna i druga, wymagająca przeładowania ręcznego."


 
 
Ayene 




Ranga RM:
4 gry

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ł :->
________________________


 
 
 
Weeto 



Dołączył: 08 Maj 2010
Posty: 26
Wysłany: Czw 10 Mar, 2011 18:44
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ć ?
________________________
http://www.taern.pl/user/Morfek/
 
 
Angius 

Nie wkurzać



Preferowany:
RPG Maker VX

Pomógł: 104 razy
Dołączył: 30 Paź 2010
Posty: 1276
Skąd: wROCK
Wysłany: Czw 10 Mar, 2011 22:11
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."


 
 
MrBoomGood 




Preferowany:
RPG Maker VX

Pomógł: 3 razy
Dołączył: 07 Kwi 2011
Posty: 292
Skąd: Katowice
Wysłany: Nie 29 Maj, 2011 15:26
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?
 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Pią 28 Paź, 2011 11:05
Link z dema wygasł :aww: Dałoby radę wrzucić go jeszcze raz?
________________________


 
 
 
Angius 

Nie wkurzać



Preferowany:
RPG Maker VX

Pomógł: 104 razy
Dołączył: 30 Paź 2010
Posty: 1276
Skąd: wROCK
Wysłany: Pią 28 Paź, 2011 11:32
Poprzednie demko się zgubiło przy przeprowadzce na nowego kompa, ale zrobiłem na szybko nowe. Dodałem też screeny w pierwszym poście :)

[ Komentarz dodany przez: Ayene: Pią 28 Paź, 2011 13:07 ]
Dziękuję Tobie, Dobry Człowieku. Niech Tobie los w chomikach wynagrodzi :aww:
________________________
"Na trolla pewne są tylko dwie pewne metody, jedna samopowtarzalna i druga, wymagająca przeładowania ręcznego."


 
 
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