Ogłoszenie 

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


Administracja Forum


Poprzedni temat «» Następny temat
CMS z serduszek.
Autor Wiadomość
Sabikku 




Nagrody:
UF i UFT2 Winner

Ranga RM:
4 gry

Pomógł: 73 razy
Dołączył: 04 Kwi 2010
Posty: 428
Wysłany: Sob 01 Maj, 2010 22:12
CMS z serduszek.
~ CMS z serduszek ~

Krótki opis
Skrypt dodaje okienko pełne serduszek, reprezentujących pojedyncze punkty zdrowia pierwszej postaci z drużyny. Może przyda się komuś przy robieniu własnego ABSa. Właściwości:
    * jeden punkt zdrowia (hp) oznacza jedno serduszko,
    * zmiana położenia okienka (jeden z czterech rogów ekranu),
    * modyfikacja położenia okienka (konkretne modyfikatory do x i y),
    * dowolna ilość mieszczących się serduszek (zależnie od ich szerokości), okienko dopasowuje się do ich rozmiarów i ilości maksymalnych punktów zdrowia,
    * okienko aktualizuje się przy każdej zmianie aktualnych punktów zdrowia i rozszerza/zwęża przy zmianie maksymalnych punktów zdrowia,
    * okienko zanika, gdy w tle działa scenka.


Autor skryptu
Sabikku/slabix, czyli ja.

Kompatybilność
Tylko XP; nie powinno kłócić się z innymi skryptami.

Skrypt
Spoiler:

Kod:
# ================================================================
# Heart HUD script
# ----------------------------------------------------------------
# * by Sabikku
# * 1.05.10
# * zamthir.net/forum
# * ultimateam.pl
# ================================================================

ALIGN = 2 # 1 - top-left, 2 - top-right, 3 - bottom-left, 4 - bottom-right
HUD_OPACITY = 120
HUD_Y_MODIFICATOR = +0 # Modificator for y coordinates of hud window.
HUD_X_MODIFICATOR = +0 # Modificator for x coordinates of hud window.

HEART_NAME = "hpbar.png"
HEART_WIDTH = 48
HEART_HEIGHT = 32
HEART_OPACITY = 150

# ================================================================
# MODIFICATIONS
# ================================================================

class Scene_Map
  attr_accessor :hud_window
  # Main. --------------------------------------------------------
  alias sab_map_main main
  def main
    # Making a hud window.
    @hud_window=Window_Hud.new
    # Remembering actor hp and maxhp.
    @rem_hp=$game_party.actors[0].hp
    @rem_maxhp=$game_party.actors[0].maxhp
    sab_map_main # Normal initialize.
    # Disposing a hud window.
    @hud_window.dispose
  end
 
  # Update. ------------------------------------------------------
  alias sab_map_update update
  def update
    # Checking actor hp and maxhp.
    if @rem_hp!=$game_party.actors[0].hp
      @rem_hp=$game_party.actors[0].hp
      @hud_window.refresh # Refreshing hearts.
    end
    if @rem_maxhp!=$game_party.actors[0].maxhp
      @rem_maxhp=$game_party.actors[0].maxhp
      @hud_window.dispose
      @hud_window=Window_Hud.new # Recorrecting a window size.
    end
    # Updating a hud window.
    @hud_window.update
    sab_map_update # Normal update.
  end
end

# ================================================================
# ACTUAL SCRIPT
# ================================================================

class Window_Hud < Window_Base
  # Initialize. --------------------------------------------------
  def initialize
    # Making a window.
    char=$game_party.actors[0]
    if ALIGN==3 or ALIGN==4
      x=640-16-char.maxhp*HEART_WIDTH; y=480-HEART_HEIGHT-32
    else
      x=0; y=0
    end
    width=16+char.maxhp*HEART_WIDTH
    super(x+HUD_X_MODIFICATOR, y+HUD_Y_MODIFICATOR, width, HEART_HEIGHT+32)
    self.opacity=0
    self.contents_opacity=0
    # Making a bitmap.
    self.contents = Bitmap.new(width - 32, height - 32)
    # Drawing contents.
    refresh
  end
 
  # Update. ------------------------------------------------------
  def update
    super
    # Updating visibility.
    unless $game_system.map_interpreter.running?
      self.opacity=[self.opacity+50, HUD_OPACITY].min
      self.contents_opacity=[self.contents_opacity+50, 255].min
    else
      self.opacity=[self.opacity-50, 0].max
      self.contents_opacity=[self.contents_opacity-50, 0].max
    end
  end
 
  # Refresh. -----------------------------------------------------
  def refresh
    self.contents.clear
    # Drawing contents of the window.
    hearts_max=(640/HEART_WIDTH).to_i
    for i in 0...hearts_max
      # Heart opacity settings.
      char=$game_party.actors[0]
      if char.hp > i
        opacity=HEART_OPACITY
      elsif i < char.maxhp
        opacity=(HEART_OPACITY/3).to_i
      else
        opacity=0
      end
      # Drawing one heart.
      self.contents.blt(i*HEART_WIDTH, 0, RPG::Cache.picture(HEART_NAME), Rect.new(0, 0, HEART_WIDTH, HEART_HEIGHT), opacity)     
    end
  end
end

# ================================================================



Screenshot
Spoiler:



Instrukcja
Wklej skrypt nad "Main" w Edytorze Skryptów.
Konfiguracja (na początku skryptu):
ALIGN --> położenie okienka. 1 - lewy-górny róg, 2 - prawy-górny, 3 - lewy-dolny, 4 - prawy-dolny.
HUD_OPACITY --> przezroczystość okienka huda (0-255).
HUD_X_MODIFICATOR --> modyfikator położenia x okienka (np. +5, -10).
HUD_Y_MODIFICATOR --> modyfikator położenia y okienka (np. +5, -10).
HEART_NAME --> nazwa pliku grafiki serduszka, znajdującej się w folderze Pictures.
HEART_WIDTH --> szerokość obrazka serduszka (można zwiększyć, by zrobić odstępy między serduszkami).
HEART_HEIGHT --> wysokość obrazka serduszka.
HEART_OPACITY --> przezroczystość obrazka serduszka (obrazującego posiadane punkty zdrowia).

W razie problemów pisać.
 
 
 
wito35 




Preferowany:
RPG Maker XP

Pomógł: 2 razy
Dołączył: 27 Gru 2009
Posty: 82
Skąd: K.Szen-Lon
Wysłany: Wto 22 Cze, 2010 22:30
Fajny skrypt, ale mam pytanie czy da się zmienić tą grafikę, tych kółek na jakąś inną ? Chodzi mi oto żeby była jednolitym dużym czerwonym paskiem hp z wyświetlanym w liczbach ile zostało ci życia.

PS: Proszę o pomoc.
________________________
Z ogromną przyjemnością przedstawiam wam stronę, pierwszych zapisów do Alpha CBT Fenix OnLine !! www.fenixonline.pun.pl =D
Mamy nadzieję że nasza gra przypadnie wam do gustu i powitacie ją z otwartymi rękoma :>
 
 
 
Sabikku 




Nagrody:
UF i UFT2 Winner

Ranga RM:
4 gry

Pomógł: 73 razy
Dołączył: 04 Kwi 2010
Posty: 428
Wysłany: Wto 22 Cze, 2010 22:40
Znajdź inny hud, dobrze poszukaj. Tutaj miałem na celu zrobienie czegoś prostego, do prostych adventurów na styl zeldy. Paski i liczby są w innych hudach ;-)
 
 
 
wito35 




Preferowany:
RPG Maker XP

Pomógł: 2 razy
Dołączył: 27 Gru 2009
Posty: 82
Skąd: K.Szen-Lon
Wysłany: Wto 22 Cze, 2010 22:47
Aha, a jak dam np. załóżmy że to jest ten pasek hp- [ 10 ] i zaatakuje mnie potworek i j zabierze mi 1 hp to zmieni się na takie ? [ 9 ]. Czy muszę mieć więcej obrazków ?
________________________
Z ogromną przyjemnością przedstawiam wam stronę, pierwszych zapisów do Alpha CBT Fenix OnLine !! www.fenixonline.pun.pl =D
Mamy nadzieję że nasza gra przypadnie wam do gustu i powitacie ją z otwartymi rękoma :>
 
 
 
Izaya 




Pomógł: 2 razy
Dołączył: 20 Mar 2010
Posty: 127
Skąd: z Netaa !
Wysłany: Czw 24 Cze, 2010 13:18
wito35, Opowiem Ci coś:
Masz w swoim projekcie załóżmy właśnie ten Skrypt.
załóżmy że tak jak na SS masz 6 "Serduszek".
Gdy zaatakuje Cie potwór tracisz jedno serduszko.
Możesz zrobić by po wypiciu jakiej mikstury serduszko wracało.
Widziałem ten Skrypt w grze "Dragon Adventure" i tak tam właśnie było.
Takie coś koguto-podobne mnie zaatakowało z 5 razy i musiałem grac od nowa :-P
________________________
Padł mi laptop ... wszystko, RPG Maker i projekty, wszystko się skończyło. Nie bawię się już w RPGM'a, Zmieniam wizerunek.

Nowa strona, szukam tłumaczy, edytorów, korektorów i HTMLowców ! :D

P.S.: Aga Organization rlz ! =>
 
 
 
Skaciu 



Dołączył: 27 Lut 2011
Posty: 2
Wysłany: Nie 27 Lut, 2011 12:13
Siemka, mam pytanko odnośnie skryptu. Korzystam ze skryptu na intro przed ekranem tytułowym, gdzie podawany jest w obrazkach autor, nazwa gry itd. I podczas tego to okienko poprostu zasłania część tych napisów. Nie wiesz może jak wykasować skrypt, na czas intra a potem uruchomić go do gry? Wiem że chyba trzeba coś zrobić w poleceniu "Wywołaj skrypt", lub w pozycji tego okienka, ale sam tego nie umiem. Z góry dzięki.
 
 
Sabikku 




Nagrody:
UF i UFT2 Winner

Ranga RM:
4 gry

Pomógł: 73 razy
Dołączył: 04 Kwi 2010
Posty: 428
Wysłany: Nie 27 Lut, 2011 13:26
Dwa sposoby.
1. Standardowo okienko chowa się automatycznie, podczas zdarzeń z triggerem player touch / event touch / autostart. Twoje intro musiałoby więc działać na autostarcie - jest to do zrobienia, ale trochę męczące, więc mamy też opcję drugą.
2. Znajdź ten fragment:
Cytat:
# Updating visibility.
unless $game_system.map_interpreter.running?
self.opacity=[self.opacity+50, HUD_OPACITY].min
self.contents_opacity=[self.contents_opacity+50, 255].min
else
self.opacity=[self.opacity-50, 0].max
self.contents_opacity=[self.contents_opacity-50, 0].max
end

I zamień $game_system.map_interpreter.running? na $game_switches[1]
Dzięki temu włączenie przełącznika o id 1 spowoduje schowanie huda. Włączysz więc na początku intra i wyłączysz po wejściu we właściwą grę.
 
 
 
Skaciu 



Dołączył: 27 Lut 2011
Posty: 2
Wysłany: Nie 27 Lut, 2011 14:09
Dzięki bardzo, już wszystko ładnie działa :-D
 
 
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