Skryptowanie dla Opornych
Aktualny czas: 26-05-26, 00:09 Witaj! Przejdź do zakładki Logowanie lub Rejestracja


Wątek zamknięty 
[VXAce] Skryptowanie dla Opornych
Yoroiookami Offline
*


Liczba postów: 985
Dołączył: 01-05-13

Pomógł: 137



Post: #1
Skryptowanie dla Opornych

No więc zacząłem nieco skryptować w VX Ace. Samą logikę skryptowania rozumiem, nie znam za to różnych odniesień i nazw. Nie wiem zbytnio jak mam zapisać to, co chcę zrobić.

Zacząłem sobie powolutku składać skrypt na wybór skilli.(Zdaję sobie sprawę, że przy mojej wiedzy = 0, może to trochę potrwać :kiti:)
No więc, zacząłem od utworzenia okienka:
[Obrazek: jkhcgk.jpg]
I chciałbym, żeby wyglądało to mniej więcej tak:
[Obrazek: 2un0l.jpg]

Zwyczajnie chcę się dowiedzieć, jak mogę umieszczać obrazki wewnątrz okienek, tak by je wypełnić. Podświetlenie nie konieczne.(Po prostu zrobię szarą wersję obrazków)
Nie jestem pewien, jak umieszczać okienka wewnątrz okienek, ale to już mniejszy problem. :ehe:

[Obrazek: mt4dzY7.png]
[Obrazek: k5KQGOe.png]
(Ten post był ostatnio modyfikowany: 26-07-14 17:12 przez Yoroiookami.)
26-07-14 17:11
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Ayene Offline
*


Liczba postów: 758
Dołączył: 09-04-13

Pomógł: 112



Post: #2
RE: Skryptowanie dla Opornych

A te ikonki umiejętności... to chcesz mieć osobne małe pliczki, czy jakiś zestaw tych ikon? I poruszałbyś się po nich wybierając ich indeksy. Chociaż... na początek może ogranicz się do wyświetlania obrazków razz:
bitmap = Cache.picture("nazwa")
rect = Rect.new(0, 0, 32, 32)
contents.blt(0, 0, bitmap, rect, 255)
bitmap.dispose
poszczególne fragmenty to:
bitmap - zmienna pobiera dane o bitmapie, w tym przypadku wczytuje obrazek z folderu Pictures o nazwie "nazwa"

rect - zmienna pobiera dane o wymiarach bitmapy, ewentualnie o jej fragmencie, zgodnie ze wzorem:
Rect.new(x, y, width, height)
Nam zależy, aby obrazek wyświetlał się w całości, więc rect zaczyna się od współrzędnych x = 0, y = 0, width i height - wpisałam 32 px, ale oczywiście szerokość może być inna, sam wpisz.

contents.blt - czyli polecenie rysowania wybranej bitmapy zgodnie ze wzorem:
contents.blt(x, y, bitmap, rect, opacity)
X i Y to współrzędne na ekranie, gdzie ma się wyświetlić bitmapa, bitmap i rect to wcześniejsze zmienne, opacity to przezroczystość.

Oczywiście powyższą funkcję 'blt' można wywołać bez użycia zmiennych bitmap i rect, ale wówczas kod staje się mniej przejrzysty, bo całość musiałaby wyglądać:
contents.blt(0, 0, Cache.picture("nazwa"), Rect.new(0, 0, 32, 32), 255)

[Obrazek: aye_furniture_pres.png]
26-07-14 18:00
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Yoroiookami Offline
*


Liczba postów: 985
Dołączył: 01-05-13

Pomógł: 137



Post: #3
RE: Skryptowanie dla Opornych

Bardzo ci dziękuję, Ayene :klaszcze: :przytul: wszystko przejrzyście. Pobawię się tym za jakiś czas. W razie czego zaspamuję wątek. :kiti:

btw. Wolę osobne, małe pliczki, bo nawet w teorii brzmi to prościej, a problemu z grafiką u mnie nie ma. :ehe:
~~~~~~~~~~~~~~~~~~~~~~~~
Dobrze, pierwsze śfinie za płoty.
Na podstawie tutoriala zrobiłem to okienko, ale zamiast tekstu, próbowałem użyć kodu na obrazek :kiti: :
class MyWindow < Window_Base
  
  def initialize
    super(0, 0, 544, 416)
    refresh
  end
  def refresh
    draw_text(x, y, 380, line_height * 1, "LOL!")
    draw_text(x, y, 380, line_height * 3, "LMAO!")
    draw_text(x, y, 380, line_height * 5, "ROFL!")
  end
end
Zamieniłem na:
class MyWindow < Window_Base
  
  def initialize
    super(0, 0, 544, 416)
    refresh
  end
  def refresh
    bitmap = Cache.picture("picture")
    rect = Rect.new(0, 0, 32, 32)
    contents.blt(0, 0, bitmap, rect, 255)
    bitmap.dispose
  end
end
I jak na razie wszystko działa :klaszcze:
Teraz pobawię się umieszczaniem okienek w okienkach. :kiti:

[Obrazek: mt4dzY7.png]
[Obrazek: k5KQGOe.png]
(Ten post był ostatnio modyfikowany: 26-07-14 19:56 przez Yoroiookami.)
26-07-14 18:03
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Yoroiookami Offline
*


Liczba postów: 985
Dołączył: 01-05-13

Pomógł: 137



Post: #4
RE: Skryptowanie dla Opornych

class MyWindow < Window_Base
  
  def initialize
    super(0, 0, 544, 416)
    okno
  end
  def okno
    super(20, 20, 32, 32)
  end
end
Miałem nadzieję, że można z tego zrobić taką 'ciuchcię', że każde narysowane okienko po narysowaniu tworzy następne. Niestety błąd mi wywala już po "def okno". :kiti:
Podejrzewam, że zrobiłem coś niesamowicie głupiego. Myślałem, że def to zmienna i mogę nazwać ją jak chcę? :co:
Co robiem źle? :confuse:

[Obrazek: mt4dzY7.png]
[Obrazek: k5KQGOe.png]
(Ten post był ostatnio modyfikowany: 26-07-14 20:02 przez Yoroiookami.)
26-07-14 20:02
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Ayene Offline
*


Liczba postów: 758
Dołączył: 09-04-13

Pomógł: 112



Post: #5
RE: Skryptowanie dla Opornych

Nie możesz wywołać okienek w okienkach :ehe: Te Twoje wewnętrzne rameczki na skille to nie osobne klasy tylko już zabawa w rysowanie właśnie bitmap, ale wewnątrz zawartość jednego okna. Te "okienka" możesz osiągnąć na kilka sposobów. Przyjmijmy, że pierwszym z nich jest po prostu zrobienie obrazka pustego skilla i wywołanie go w ten sam sposób, co powyżej. Nic nie stoi bowiem na przeszkodzie, żeby później w jego miejsce (ściślej na nim) pojawiała się bitmapa skilla.
Albo możesz zrobić sobie nową definicję, np.
def draw_empty_skill(x, y, w, h)    
    contents.fill_rect(x, y, w, h, Color.new(0, 0, 0))
    contents.fill_rect(x+1, y+1, w-2, h-2, Color.new(255, 255, 255))
    color1 = Color.new(50, 76, 127)
    color2 = Color.new(0, 11, 62)
    contents.fill_rect(x+2, y+2, w-4, h-4, Color.new(0, 0, 0))
    contents.gradient_fill_rect(x+3, y+3, w-6, h-6, color1, color2, true)    
  end
i wywołać ją sobie w definicji "okno", za pomocą kodu:
draw_empty_skill(0, 0, 50, 50)
gdzie 0, 0 to współrzędna, a 50, 50 to szerokość i długość takiego kwadracika.

I tę definicję możesz sobie wywołać w "okno", np. 4 razy, bo tyle masz okienek w rzędzie, np.
draw_empty_skill(0, 0, 50, 50)
draw_empty_skill(100, 0, 50, 50)
draw_empty_skill(200, 0, 50, 50)
draw_empty_skill(300, 0, 50, 50)

[Obrazek: aye_furniture_pres.png]
26-07-14 21:29
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Yoroiookami Offline
*


Liczba postów: 985
Dołączył: 01-05-13

Pomógł: 137



Post: #6
RE: Skryptowanie dla Opornych

Czyli, że niepotrzebnie sobie komplikuję. :lol2: Nie wpadłem nawet na to, żeby po prostu zrobić taki obrazek z ramką. :kable:
Tak czy inaczej, spróbuję tym sposobem, który podałaś. :klaszcze:

Spodziewaj się denerwujących, noobowatych update'ów. :kiti: <3

[Obrazek: mt4dzY7.png]
[Obrazek: k5KQGOe.png]
26-07-14 21:48
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Yoroiookami Offline
*


Liczba postów: 985
Dołączył: 01-05-13

Pomógł: 137



Post: #7
RE: Skryptowanie dla Opornych

class MyWindow < Window_Base
  
  def initialize
    super(0, 0, 544, 416)
    okno
  end
  
  def okno
    draw_empty_skill(100, 0, 50, 50)
    draw_empty_skill(200, 0, 50, 50)
    draw_empty_skill(300, 0, 50, 50)
  end
  
  def draw_empty_skill(x, y, w, h)    
    contents.fill_rect(x, y, w, h, Color.new(0, 0, 0))
    contents.fill_rect(x+1, y+1, w-2, h-2, Color.new(255, 255, 255))
    color1 = Color.new(50, 76, 127)
    color2 = Color.new(0, 11, 62)
    contents.fill_rect(x+2, y+2, w-4, h-4, Color.new(0, 0, 0))
    contents.gradient_fill_rect(x+3, y+3, w-6, h-6, color1, color2, true)    
  end
  
end
Jak na razie działa :klaszcze: i prezentuje się całkiem ładnie.
Hmm...mógłbym chyba po prostu zapisać to tak:
class MyWindow < Window_Base
  
  def initialize
    super(0, 0, 544, 416)
     draw_empty_skill(100, 0, 50, 50)
     draw_empty_skill(200, 0, 50, 50)
     draw_empty_skill(300, 0, 50, 50)
  end
  
  def draw_empty_skill(x, y, w, h)    
    contents.fill_rect(x, y, w, h, Color.new(0, 0, 0))
    contents.fill_rect(x+1, y+1, w-2, h-2, Color.new(255, 255, 255))
    color1 = Color.new(50, 76, 127)
    color2 = Color.new(0, 11, 62)
    contents.fill_rect(x+2, y+2, w-4, h-4, Color.new(0, 0, 0))
    contents.gradient_fill_rect(x+3, y+3, w-6, h-6, color1, color2, true)    
  end
  
end
Co nie? :co:
Spróbuję teraz ładnie ułożyć te kwadraciki. mrgreen

Umm...masz może jakiś pomysł jak się...między nimi...poruszać? :ehe:

[Obrazek: mt4dzY7.png]
[Obrazek: k5KQGOe.png]
(Ten post był ostatnio modyfikowany: 27-07-14 17:26 przez Yoroiookami.)
27-07-14 17:23
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Ayene Offline
*


Liczba postów: 758
Dołączył: 09-04-13

Pomógł: 112



Post: #8
RE: Skryptowanie dla Opornych

Zależy, co chcesz osiągnąć poprzez poruszanie się między nimi...

[Obrazek: aye_furniture_pres.png]
27-07-14 17:52
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Yoroiookami Offline
*


Liczba postów: 985
Dołączył: 01-05-13

Pomógł: 137



Post: #9
RE: Skryptowanie dla Opornych

Że jeżeli najadę na okienko, jego obrazek się zmieni na inny. :kiti: Tak, żebym mógł zmienić szary obrazek na kolorowy.

[Obrazek: mt4dzY7.png]
[Obrazek: k5KQGOe.png]
27-07-14 17:57
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Ayene Offline
*


Liczba postów: 758
Dołączył: 09-04-13

Pomógł: 112



Post: #10
RE: Skryptowanie dla Opornych

Heh, to nie takie proste :ehe: Zwłaszcza, że pewnie później oprócz zmiany obrazka jeszcze trzeba będzie wyświetlić opis, itd.

Można to zrobić na co najmniej dwa sposoby. Przerabiając Twoje okienko na klasę Window_Selectable (w lepszym wypadku na Window_HorzCommand), odpowiednio modyfikując polecenia. Albo pokombinować bezpośrednio w Scenie, gdzie za pomocą update i input zmieniać sposób wyświetlania Twoich obrazków - zmieniać ich opacity, itd. No nic... Spróbuję nad tym posiedzieć, ale nie wiem, czy dzisiaj, bo zaraz muszę zmykać.

[Obrazek: aye_furniture_pres.png]
27-07-14 18:28
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Wątek zamknięty 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości

Kontakt | Ultima Forum | Wróć do góry | Wróć do forów | Wersja bez grafiki | RSS
Powered By MyBB. © 2013 MyBB Group. All Rights Reserved.
Skórka by Ayene.