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