Ogłoszenie 

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


Administracja Forum


Poprzedni temat «» Następny temat
Zamknięty przez: Ayene
Sob 15 Sty, 2011 20:16
Class Sprite
Autor Wiadomość
Teyan 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 05 Lis 2009
Posty: 48
  Wysłany: Czw 30 Gru, 2010 00:13
Class Sprite
Cześć wróciłem.
Mam prośbę. Czy ktoś mi wytłumaczy class Sprite?
Jak to działa i w ogóle.
Nie jestem zielony w Ruby, nawet napisałem kilka skryptów (jedne lepiej inne gorzej - przyznaje sie bez bicia). Ale nie potrafie dodawać sprite'ów. Nawet nie wiem jakie pytanie mam tutaj zadać.
Chcę także zrobić animację (potrafie "zatrzymywać czas w grze", tj: posługiwać się zmienną lokalną @wait (choć u mnie nazywa się @czekaj)). Czy ktoś mi pomoże?
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Czw 30 Gru, 2010 01:17
A przeglądałeś w tym celu Pomoc VX? Wpisz w wyszukiwarce Sprite, a tam może znajdziesz odpowiedź na swoje tajemnicze pytanie ;-) Jeśli chcesz zrobić animacje, zajrzyj do Sprite_Base. VX chociażby tym różni się od XP, że ma ładnie zdefiniowane klasy "bazowe". Jest tam definicja, dzięki której można odtworzyć animacje z bazy danych... 'start_animation' ;-)
________________________


 
 
 
Teyan 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 05 Lis 2009
Posty: 48
Wysłany: Czw 30 Gru, 2010 20:10
Yyy... i tak nic z tego nie kumam. Ostatnio robiłem łowienie ryb i skrypt na podawanie (wpisywanie) hasła. Animacjami zajmę się potem, teraz mam inne pytanie.
Czy można uzależnić windowskin okna (jak zmienić windowskin tylko jednego okna to wiem) od terenu na jakim znajduje się gracz (drużyna). Próbowałem juz poszukać jakieś pokemony (bo te potworki siedziały w trawie, musieli to zrobić na podobnej zasadzie), ale nie znalazłem poków na VX. Czy ktoś pomoże?
 
 
Sabikku 




Nagrody:
UF i UFT2 Winner

Ranga RM:
4 gry

Pomógł: 73 razy
Dołączył: 04 Kwi 2010
Posty: 428
Wysłany: Czw 30 Gru, 2010 22:20
Polecam: http://tryruby.org/
+ znajomość angielskiego i przejrzenie dokumentacji rmvx.

Musisz stworzyć obiekt klasy Sprite_Base i przypisać mu bitmapę o odpowiedniej wielkości. Potem z każdym odświeżeniem ekranu wywoływać jego funkcję składową update. W momencie odtworzenia animacji wywołaj funkcję start_animation, jako argument podając docelową animację ($data_animation[id]). Uruchom ją tylko raz, inaczej nie będzie widać animacji. Pamiętaj też o funkcji dispose, którą uruchamia się, kiedy Sprite'a już nie potrzebujesz.
Ot, cała filozofia :P.

W jakim sensie 'terenu'? Jeśli pasowałoby ci zrobić listę id map każdego z 'terenów', możesz zrobić tak:
Kod:

case $game_map.map_id
when 1..5
  s = "teren1"
when 6,7,8
  s = "teren2"
when 9..15
  s = "teren3"
end
self.windowskin = Cache.system("windowskin "+s.to_s)

W tym przypadku na mapie 3 wymagać będzie windowskina o nazwie "windowskin teren1", na mapie 7 "windowskin teren2", a na mapie 14 - "windowskin teren3". Mam nadzieję, że rozumiesz.

Można też uzależnić od id konkretnego tile'a (np. trawa -> zielony windowskin, pustynia -> żółty itp), ale nie jestem pewien, o co dokładnie ci chodziło ;-) .
 
 
 
Teyan 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 05 Lis 2009
Posty: 48
Wysłany: Pią 31 Gru, 2010 14:33
Cytat:
Można też uzależnić od id konkretnego tile'a (np. trawa -> zielony windowskin, pustynia -> żółty itp), ale nie jestem pewien, o co dokładnie ci chodziło ;-) .

Tak! O to!
Chcę uzależnić windowskin o danego terenu na "TileA1"
Cytat:
Polecam: http://tryruby.org/

Skoro już tak sobie polecamy:
Apohllo (po polsku)
Kolejna strona po polsku :-)
Stronki po angielsku:
Pełny opis klasy String
Pełny opis klasy Array
Pełny opis klasy Hash

Niemal wszystko co umiem znam z tych stron, może wam sie przyda!
 
 
Sabikku 




Nagrody:
UF i UFT2 Winner

Ranga RM:
4 gry

Pomógł: 73 razy
Dołączył: 04 Kwi 2010
Posty: 428
Wysłany: Pią 31 Gru, 2010 16:29
$game_map.data <-- tu przechowywany jest obiekt klasy Table, tj. trójwymiarowa tablica przechowująca ID tileów w każdym miejscu na mapie. Możesz z niego pobrać id w ten sposób:
Kod:
$game_map.data[x, y, z]

Czyli przykładowo z pomocą:
Kod:
$game_map.data[$game_player.x, $game_player.y, 0]

dostaniesz id tile'a na najniższej warstwie, na którym aktualnie stoi gracz. Zauważ, że id nie są poustawiane równo (1,2,3) tylko mają nieco większe numery (nie wiem jak to jest przeliczane, ale wychodzi w tysiącach).
Warunek wyglądałby np. tak:
Kod:
case $game_map.data[$game_player.x, $game_player.y, 0]
when 5012
  s = "teren1"
when 1201
  s = "teren2"
when 4504
  s = "teren3"
else
  s = "teren0"
end
self.windowskin = Cache.system("windowskin "+s.to_s)
 
 
 
Teyan 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 05 Lis 2009
Posty: 48
Wysłany: Pią 31 Gru, 2010 20:39
Tak! To jest to! Dzięki.
Za pomoc masz oczywiście pomógł!.

Mam teraz pytania odnośnie sprite'ów:
Załóżmy, że stworzyłem taki sprite:

Kod:
    @sprite = Sprite.new
    @sprite.bitmap = Cache.system("Iconset")


1. Czy można zrobić tak aby program wyciął jedną ikonkę i wstawił ją zamiast całego iconsetu?
2. Czy można wyłączyć widzialność tego sprite'u tak jak okienek (visible = true/false).
3. Czy można ustawić by program pokolorował cały sprite na np: czerwono, ale oprócz miejsc przezroczystych?
 
 
Sabikku 




Nagrody:
UF i UFT2 Winner

Ranga RM:
4 gry

Pomógł: 73 razy
Dołączył: 04 Kwi 2010
Posty: 428
Wysłany: Pon 03 Sty, 2011 00:37
Nie mam dostępu do RMa, a do jutra zapomnę o temacie - napiszę co wiem z pamięci, w rmxp działa na pewno, w rmvx nie jestem pewien:

Kolorowanie - wystarczy nałożyć odpowiednią maskę kollorów (sprawdź w dokumentacji, konkretniej o klasie Sprite):
@sprite.color = Color.new(255,0,0, 150)

Tak, można wyłączyć widoczność: @sprite.visible = false. Tak samo jak w przypadku okienek.

Wycinanie... Na pewno trzeba zmodyfikować prostokąt 'źródłowy' który standardowo ogarnia cały obrazek, a mamy go ustawić na np. 24x24. Spróbuj tak: @sprite.rect = Rect.new(0,0,24,24)

Pamiętaj jednak, że żadne zmiany nie będą widoczne na ekranie, dopóki nie będziesz co ramkę odświeżał Sprite'a - @sprite.update.
 
 
 
Wyświetl posty z ostatnich:   
Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi
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