Ogłoszenie 

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


Administracja Forum


Poprzedni temat «» Następny temat
Wyświetlanie zmiennej w pasku
Autor Wiadomość
Ziomeq 



Pomógł: 1 raz
Dołączył: 07 Lip 2010
Posty: 17
Wysłany: Pon 12 Lip, 2010 09:24
Wyświetlanie zmiennej w pasku
Wyświetlanie zmiennej w pasku


Jako że ostatnimi czasy zacząłem się interesować tym forum i dodatkowo potrzebuję pomocy :lol2: to postanowiłem że mógłbym powrzucać trochę fajnych skryptów. ;-) Więc oglądajcie i wybierajcie. (Btw. zapewne żaden nie będzie mój, bo nie jestem pro coderem, ale jakieś drobne poprawki myślę że mogę robić w razie czego. :-P )

Opis
Prosty skrypt pozwalający na wyświetlanie paska który pokazuje wartość zmiennej.

Autor skryptu
piejamas (znalezione na rpgmakervx.net)

Tłumaczone przeze mnie.

Screenshot
Spoiler:




Kompatybilność
Hmmmm... teoretycznie (i chyba też praktycznie) powinien chodzić ze wszystkim. :mrgreen:

Skrypt
Spoiler:


Kod:
#===============================================================================
# Variable Gauge Display
#-------------------------------------------------------------------------------
# By piejamas
# v1.0
#===============================================================================
#
#Skrypt pozwalający wyświetlić wartość zmiennej w pasku. :D

#------------------------------------------------------------------------------
# * Tu zmieniaj :D
#------------------------------------------------------------------------------

module Gauge
 
  #--------------------------------------------
  # Variable ID
  # ID zmiennej która ma być wyświetlana
    VARIABLE_ID    = 1
  #--------------------------------------------
 
  #--------------------------------------------
  # Visible Switch
  # Pasek jest widoczny jeśli ten przełącznik będzie włączony
    VISIBLE_SWITCH = 1
  #--------------------------------------------
 
  #--------------------------------------------
  # Ustawienie
  # Czyli gdzie ma się znajdować okno ze zmienną.
    X              = 0
    Y              = 0
    GAUGE_WIDTH    = 120
    GAUGE_HEIGHT   = 6
  #--------------------------------------------
 
  #--------------------------------------------
  # Gauge Max
  # Maksymalna wartość która będzie wyświetlana na pasku.
    GAUGE_MAX      = 100
  #--------------------------------------------
 
  #--------------------------------------------
  # Kolory paska
  #           Color.new( red,  green,  blue)
    COLOUR1 = Color.new(   0,    255,   100)
    COLOUR2 = Color.new(   0,    255,     0)
  #--------------------------------------------
 
  #--------------------------------------------
  # Pokaż okno
  # Pokazać okno czy też nie?
    SHOW_WINDOW    = true
  #--------------------------------------------
 
  #--------------------------------------------
  # Text
  # Tekst który będzie wyświetlany nad paskiem
    TEXT = "o.o"
  #--------------------------------------------
 
################################################################################
##                           Tego nie dotykaj chyba że wiesz co robisz :)                           ##
################################################################################

end
 
class Window_GaugeDisplay < Window_Base
  include Gauge
 
  #----------------------------------------------------------------------------
  # * Object initialization
  #----------------------------------------------------------------------------
  def initialize
    super(X, Y, GAUGE_WIDTH + 16, GAUGE_HEIGHT + WLH + 32)
    self.visible = $game_switches[VISIBLE_SWITCH]
    self.opacity = 0 unless SHOW_WINDOW
    @old_var = $game_variables[VARIABLE_ID]
    self.contents.draw_text(-8, -7, self.contents.width, WLH, TEXT, 1)
    refresh
  end
 
  #----------------------------------------------------------------------------
  # * Refresh
  #----------------------------------------------------------------------------
  # Draw the stuff
  #----------------------------------------------------------------------------
  def refresh
    gw = GAUGE_WIDTH * $game_variables[VARIABLE_ID] / GAUGE_MAX
    gc1 = COLOUR1
    gc2 = COLOUR2
    self.contents.fill_rect(0, 0 + WLH - 8, GAUGE_WIDTH, GAUGE_HEIGHT, gauge_back_color)
    self.contents.gradient_fill_rect(0, 0 + WLH - 8, gw, GAUGE_HEIGHT, gc1, gc2)
  end
 
  #----------------------------------------------------------------------------
  # * Update
  #----------------------------------------------------------------------------
  def update
    self.visible = $game_switches[VISIBLE_SWITCH]
    var = $game_variables[VARIABLE_ID]
    refresh if var != @old_var
    @old_var = var
  end
end

class Scene_Map
 
  #----------------------------------------------------------------------------
  # * Aliases
  #----------------------------------------------------------------------------
 
  alias :var_guage_old_start :start unless $@
  alias :var_guage_old_update :update unless $@
  alias :var_guage_old_terminate :terminate unless $@
 
  #----------------------------------------------------------------------------
  # * Start
  #----------------------------------------------------------------------------
  def start
    var_guage_old_start
    @var_guage = Window_GaugeDisplay.new
  end
 
  #----------------------------------------------------------------------------
  # * Update
  #----------------------------------------------------------------------------
  def update
    var_guage_old_update
    @var_guage.update
  end
 
  #----------------------------------------------------------------------------
  # * Terminate
  #----------------------------------------------------------------------------
  def terminate
    var_guage_old_terminate
    @var_guage.dispose
  end
 
end


Demo (nie spolszczone! :lol2: bo jestem leń :mrgreen: )
Link


Instrukcja
Wklej nad main w edytorze skryptów i dostosuj do swoich potrzeb.
 
 
Agumon 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 53 razy
Dołączył: 30 Gru 2009
Posty: 515
Skąd: Ruda Śląska
Wysłany: Wto 13 Lip, 2010 15:11
A dało by się tak zrobić żeby nie wyświetlało się te okienko tylko sam pasek + nazwa.
________________________
Pomogłem? Daj ""
Piszę poprawnie po polsku

 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Wto 13 Lip, 2010 15:19
Agumon, wystarczy, że odnajdziesz linijkę:
Kod:
self.opacity = 0 unless SHOW_WINDOW

i zamienisz ją na:
Kod:
self.opacity = 0
________________________


 
 
 
Agumon 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 53 razy
Dołączył: 30 Gru 2009
Posty: 515
Skąd: Ruda Śląska
Wysłany: Wto 13 Lip, 2010 15:25
Ok dzięki.

[ Dodano: Wto 13 Lip, 2010 17:21 ]
Aha jeszcze jedno pytanie. Czy dało by się tak zrobić że by było 1 podłużne okienko i na nim by były 3 paski. Chodzi mi o takie coś żeby było Zmęczenie, głód i reputacja (respekt)
________________________
Pomogłem? Daj ""
Piszę poprawnie po polsku

 
 
Ziomeq 



Pomógł: 1 raz
Dołączył: 07 Lip 2010
Posty: 17
Wysłany: Pią 16 Lip, 2010 17:39
Agumon, znalazłem skrypt i specjalnie go spolszczyłem. Co prawda nie ma okienka, ale jak poprosisz Ayene to ci dorobi (chyba :mrgreen: ).

Spoiler:

Kod:
=begin
================================================================================
                         Variable Gauges v1.1
                            by wltr3565
Jak to działa:
Pasek który wywołasz pokaże wartość zmiennej.
================================================================================
How to Use:

Aby pokazać pasek dla zmiennej wywołaj skrypt:
   $game_system.make_new_gauge(id, color, max, x, y, width, height)
id = Id zmiennej
color = kolor paska, w tym formacie:
   Color.new(czerwony, zielony, niebieski)
Max = maksymalna wartość jaką może pokazać pasek
x = pozycja x paska
y = pozycja y paska
width = szerokość paska
height = wysokość paska

Przykład:
$game_system.make_new_gauge(8, Color.new(100, 100, 100),  100, 0, 0, 50, 50)
Skrypt ten stworzy pasek dla zmiennej nr. 8 w kolorze szarym (100,100,100) o maksymalnej wartości 100, o szerokości
i wysokości 50, położony w lewym górnym rogu ekranu.

Aby zmienić pasek należy wywołać skrypt:
   $game_system.gauge_list[id].cecha = nowa_wartość
id = Id zmiennej
Cecha = cecha paska (color, max, x, y, width, height)
nowa_wartość = nowa wartość wybranego elementu
Pasek może się zmieniać w czasie rzeczywistym. :)

Przykład:
   $game_system.gauge_list[8].height = 416
Powyższy kod sprawi że pasek zakryje poziomo cały ekran

Aby pasek zniknął wywołaj poniższy kod:
   $game_system.gauge_list[id].dispose_gauge
Dziękij temu pasek zmiennej o identyfikatorze "id" zniknie z ekranu

Przykład:
   $game_system.gauge_list[8].dispose_gauge
Pasek zmiennej 8 zniknie z ekranu
================================================================================
Instalacja:
Wklej to w edytorze skryptów nad Main
================================================================================
Warunki używania:
Dodaj mnie do creditsów (wltr3565), albo nie. To twoja sprawa. Poprostu nie przywłaszczaj sobie
mojej pracy. Aczkolwiek było by miło gdybym znalazł się w creditsach (wltr3565).

================================================================================
Podziękowania:
Kuro Creator: Szef wltr3565.
================================================================================
=end
#===============================================================================
#    Sprawdzanie kompatybilności
#===============================================================================
$imported = {} if $imported == nil
$imported["wltr3565's_Variable_Gauges"] = true
#===============================================================================
#   Koniec sprawdzania kompatybilności
#===============================================================================
module WLTR
  module VARIABLE_GAUGES
#===============================================================================
# Skonfiguruj szybkość powiększania i pomniejszania pasków. Im większa liczba,
# tym większa szybkość.
    ALTER_SPEED = 3
  end
end

#===============================================================================
# Dotykanie tekstu poniżej może spowodować liczne błędy. Jeśli nie znasz się na
# skryptowaniu to tego nie tykaj.
#===============================================================================

class Game_System
  attr_accessor  :gauge_list
 
  alias gauges_initialize initialize
  def initialize
    gauges_initialize
   
    @gauge_list = []
    $gauges = []
  end
 
  def make_new_gauge(id, color, max, x, y, width, height)
    @gauge_list[id] = Game_Variable_List.new(id, color, max, x, y, width, height)
  end
end

class Scene_Map < Scene_Base
  alias gauge_repop start
  def start
    gauge_repop
   
    for i in $game_system.gauge_list
      next if i == nil
      i.refresh(i.id, i.color, i.max, i.x, i.y, i.width, i.height)
    end
  end
 
  alias update_gauges_hud update
  def update
    update_gauges_hud
   
    for i in $game_system.gauge_list
      next if i == nil
      i.update
    end
  end
 
  alias reupdate_gauges update_transfer_player
  def update_transfer_player
    return unless $game_player.transfer?
    reupdate_gauges
   
    for i in $game_system.gauge_list
      next if i == nil
      i.refresh(i.id, i.color, i.max, i.x, i.y, i.width, i.height)
    end
  end
end

class Game_Variable_List
  def initialize(id, color, max, x, y, width, height)
    refresh(id, color, max, x, y, width, height)
  end
 
  def id
    return @id
  end
 
  def id=(value)
    @id = value
    refresh(@id, @color, @max, @x, @y, @width, @height)
  end
 
  def color
    return @color
  end
 
  def color=(value)
    @color = value
    refresh(@id, @color, @max, @x, @y, @width, @height)
  end
 
  def x
    return @x
  end
 
  def x=(value)
    @x = value
    refresh(@id, @color, @max, @x, @y, @width, @height)
  end
 
  def y
    return @y
  end
 
  def y=(value)
    @y = value
    refresh(@id, @color, @max, @x, @y, @width, @height)
  end
 
  def max
    return @max
  end
 
  def max=(value)
    @max = value
    refresh(@id, @color, @max, @x, @y, @width, @height)
  end
 
  def width
    return @width
  end
 
  def width=(value)
    @width = value
    refresh(@id, @color, @max, @x, @y, @width, @height)
  end
 
  def height
    return @height
  end
 
  def height=(value)
    @height = value
    refresh(@id, @color, @max, @x, @y, @width, @height)
  end
 
  def refresh(id, color, max, x, y, width, height)
    @id = id
    @color = color
    @max = max
    @y = y
    @x = x
    @width = width
    @height = height
    $gauges[@id] = Sprite_Variable.new(@id, @color, @max, @x, @y, @width, @height)
  end
 
  def update
    return if $gauges == nil
    $gauges[@id].update
  end
 
  def dispose_gauge
    $gauges[@id].dispose
  end
end

class Sprite_Variable < Sprite
  def initialize(id, color, max, x, y, width, height)
    super(Viewport.new(0, 0, 544, 416))
    refresh(id, color, max, x, y, width, height)
  end
 
  def id
    return @id
  end
 
  def id=(value)
    @id = value
    refresh(@id, @color, @max, @x, @y, @width, @height)
  end
 
  def color
    return @color
  end
 
  def color=(value)
    @color = value
    refresh(@id, @color, @max, @x, @y, @width, @height)
  end
 
  def x
    return @x
  end
 
  def x=(value)
    @x = value
    refresh(@id, @color, @max, @x, @y, @width, @height)
  end
 
  def y
    return @y
  end
 
  def y=(value)
    @y = value
    refresh(@id, @color, @max, @x, @y, @width, @height)
  end
 
  def max
    return @max
  end
 
  def max=(value)
    @max = value
    refresh(@id, @color, @max, @x, @y, @width, @height)
  end
 
  def width
    return @width
  end
 
  def width=(value)
    @width = value
    refresh(@id, @color, @max, @x, @y, @width, @height)
  end
 
  def height
    return @height
  end
 
  def height=(value)
    @height = value
    refresh(@id, @color, @max, @x, @y, @width, @height)
  end
 
  def refresh(id, color, max, x, y, width, height)
    @gauge_skin.dispose if @gauge_skin != nil
    @gauge.dispose if @gauge != nil
    @id = id
    @color = color
    @max = max
    @y = y
    @x = x
    @width = width
    @height = height
    @gauge_skin = Sprite.new(Viewport.new(0, 0, 544, 416))
    @gauge_skin.bitmap = Bitmap.new(@width, @height)
    @gauge_skin.bitmap.fill_rect(Rect.new(0, 0, @width, @height), Color.new(0,0,0))
    @gauge_skin.x = @x
    @gauge_skin.y = @y
    @gauge_skin.z = 1000
    @gauge = Sprite.new(Viewport.new(0, 0, 544, 416))
    @gauge.bitmap = Bitmap.new(@width, @height)
    @gauge.bitmap.fill_rect(Rect.new(0, 0, @width, @height), @color)
    gauge_width = @gauge.bitmap.width * $game_variables[@id] / @max
    gauge_width.round
    @gauge.src_rect.width = gauge_width
    @gauge.x = @x
    @gauge.y = @y
    @gauge.z = 1001
    update
  end

  def dispose
    @gauge_skin.dispose
    @gauge.dispose
    super
  end

  def update
    gauge_width = @gauge.bitmap.width * $game_variables[@id] / @max
    gauge_width.round
    return if @gauge.disposed?
    if @gauge.width < gauge_width
      boost = WLTR::VARIABLE_GAUGES::ALTER_SPEED
      @gauge.src_rect.width += boost
      @gauge.src_rect.width = gauge_width.round if @gauge.src_rect.width > gauge_width
    elsif @gauge.width > gauge_width
      boost = WLTR::VARIABLE_GAUGES::ALTER_SPEED
      @gauge.src_rect.width -= boost
      @gauge.src_rect.width = gauge_width.round if @gauge.src_rect.width < gauge_width
    end
  end
end
#===============================================================================
#
#  KONIEC SKRYPTU
#
#===============================================================================


Autorem skryptu jest wltr3565 (skrypt znaleziono na rpgmakervx.net), ja go tylko przetłumaczyłem. :-)
________________________
Aktualnie:
-Robię grę w RPG Makerze VX (nie wiadomo czy ukończę :-) )
-Zastanawiam się, czy coś takiego jak graczka istnieje :mrgreen: i jeśli tak to czemu do %*&&^$^% nędzy żadnej nie znam :mrgreen:
 
 
Agumon 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 53 razy
Dołączył: 30 Gru 2009
Posty: 515
Skąd: Ruda Śląska
Wysłany: Pią 16 Lip, 2010 19:13
Ziomeq, to ja już wolę ten pierwszy skrypt bo ten jest za skomplikowany.
________________________
Pomogłem? Daj ""
Piszę poprawnie po polsku

 
 
Ziomeq 



Pomógł: 1 raz
Dołączył: 07 Lip 2010
Posty: 17
Wysłany: Sob 17 Lip, 2010 07:08
Instrukcja do tamtego skryptu:
1. Wklejasz nad Main (bla bla bla) :lol:
2. Tworzysz nowe zdarzenie
3. W zdarzeniu wybierasz wywołaj skrypt i wpisujesz:
$game_system.make_new_gauge(id, Color.new(r, g, b), max, x, y, width, height)
id - zamieniasz na numer zmiennej
Color.new(r, g, b) - wpisujesz swoje wartości, będzie to kolor paska
max - maksymalna wartość jaką może wyświetlać ten pasek
x i y - pozycja paska na ekranie (wpisz po 0 to pojawi się w lewym-górnym rogu)
width i height - szerokość i wysokość paska (czyli jego rozmiary) :-)
4. Włączasz grę :mrgreen:
________________________
Aktualnie:
-Robię grę w RPG Makerze VX (nie wiadomo czy ukończę :-) )
-Zastanawiam się, czy coś takiego jak graczka istnieje :mrgreen: i jeśli tak to czemu do %*&&^$^% nędzy żadnej nie znam :mrgreen:
 
 
MrDawnok 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 22 Maj 2010
Posty: 217
Wysłany: Sro 21 Lip, 2010 20:35
Witam, czy nie można zrobić tak żeby pasek był czerwony?bo próbuje edytować w skrypcie COLOUR
ale nic nie działa proszę o pomoc.
________________________



http://www.forumgalonum.pun.pl/viewtopic.php?id=5

"Bliski przyjaciel, czy to nie właściwe określenie dla kogoś, kto już przestał być bliski?"
 
 
 
CreeperCrisis 



Preferowany:
RPG Maker VXAce

Pomógł: 32 razy
Dołączył: 01 Maj 2010
Posty: 395
Wysłany: Czw 22 Lip, 2010 15:18
Kod:
  #--------------------------------------------
  # Kolory paska
  #           Color.new( red,  green,  blue)
    COLOUR1 = Color.new( 255,        0,       0)
    COLOUR2 = Color.new( 155,        0,       0)
  #--------------------------------------------
 
 
sebastian12 




Preferowany:
RPG Maker VX

Dołączył: 28 Lip 2010
Posty: 14
Wysłany: Nie 28 Lis, 2010 17:29
Pasek
A można dorobić drugi pasek ??
________________________
www.zhpktoto.za.pl>>SIEMA<<www.zhpktoto.za.pl
Robię strony w joomli ! Pisać wiadomości na skrzynke
 
 
bartek2940 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 10 Kwi 2010
Posty: 88
Wysłany: Wto 08 Mar, 2011 15:01
Na początku skryptu trzeba znaleźć linijkę 53 z
Kod:
SHOW_WINDOW    = true

i zmienić na
Kod:
SHOW_WINDOW    = false

i bez zbędnych zabaw nie ma okienka i jest sam pasek + tekst

Dobra, mam problem wiem, że to prosta operacja, ale mam z nią problem, a mianowicie nie umiem przesunąć okienka. Chciałbym, aby znajdował się w prawym górnym rogu.

Cóż, już nieważne jestem wprost genialny wystarczyło zmienić położenie x na ok. 400.
________________________
Obecny projekt - Chwilowo brak
 
 
 
PaC 




Preferowany:
RPG Maker VX

Pomógł: 6 razy
Dołączył: 04 Kwi 2010
Posty: 61
Skąd: z pod wodospadu
Wysłany: Nie 15 Maj, 2011 07:53
Witam!

Wiem że odsmażam kotleta ^^ ale ten skrypt jest mi bardzo potrzebny!

zaczynajmy:
Chciałbym żeby zamiast tego napisu "Gauge" był napis "Rage".
i żeby gdy ten pasek jest pełen np. zmienna równa się 10
to żeby pokazała się animacja, postać zmieniła wygląd, a statystyki podniosły się
o 20 w górę ;]

Wiem że dużo wymagam ale mam nadzieje że jakoś mi pomożecie :mrgreen:
________________________
Obecny tajny projekt:
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Nie 15 Maj, 2011 10:36
By usunąć tekst, wystarczy edytować fragment konfiguracji:
Kod:
TEXT = "o.o"

Co zaś tyczy się podniesienia statystyk itd., możesz przecież otrzymać ten sam efekt ustawiając common event. Za pomocą poleceń ustaw, że jeśli wybrana zmienna równa jest tyle i tyle, to wyświetla się animacja, zmienia się wygląd postaci i podnoszą się jej statystyki.
________________________


 
 
 
Zeno3939 



Preferowany:
RPG Maker VX

Dołączył: 04 Gru 2010
Posty: 27
Skąd: Rzeszów.Zen
Wysłany: Czw 08 Wrz, 2011 18:52
odświeżam temat mysłem w płynie z dużą dawką wody :D ok mam pytanko . Czy dało by się ten pasek wmontować np do statystyk ? Bo nie chce mieć nawalone na ekranie a w statystykach by bardziej to pasowało . Prosił bym o pomoc gdyż po przeczytaniu całego sktyptu nic takiego nie wypatrzyłem :/
 
 
Valdali 




Preferowany:
RPG Maker VXAce

Ranga RM:
1 gra

Pomógł: 20 razy
Dołączył: 19 Mar 2010
Posty: 421
Skąd: Reykjavik
Wysłany: Pon 17 Paź, 2011 15:16
Zeno3939, wydaje mi sie ze sie da ale tylko do jednej statystyki
________________________
Moje anime w RPG Makerze. Zapraszam!
ZOBACZ :!: :!: :!:
Spoiler:

Moimi Mistrzami i Wielkimi Nauczycielami są: Melvin i Angius!

Dziennik Krejzolów:
Ayene
Angius
Melvin
Yoroiookami
CrasheR
Finwe

Moi ziomale :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