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
Pon 09 Maj, 2011 08:08
Pomoc z ruby.
Autor Wiadomość
CrasheR 




Pomógł: 123 razy
Dołączył: 20 Gru 2010
Posty: 609
Skąd: Nibelheim
Wysłany: Wto 26 Kwi, 2011 12:34
Pomoc z ruby.
Jak w Ruby napisać komendę, że kiedy grasz ma 80% zmienia się jakaś grafika?
Chodzi mi o stworzenie Hud'a. Jak masz 100% jest grafika nr1, jak 80% nr2, a jak 50% nr3 itd.
________________________



 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Wto 26 Kwi, 2011 13:35
Ale czego 80%? Ukończonej gry? HP? Nie można wyliczyć części bez całości ;-)
________________________


 
 
 
CrasheR 




Pomógł: 123 razy
Dołączył: 20 Gru 2010
Posty: 609
Skąd: Nibelheim
Wysłany: Sro 27 Kwi, 2011 16:12
Sorki myślałem, że napisałem czego :P HP oczywiście.
________________________



 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Pią 29 Kwi, 2011 10:46
Należy zastosować warunek... możliwości jest kilka
Jeśli HUD oparty jest na 'sprajcie' bezpośrednio w scenie, można zrobić warunek:
Kod:
actor = $game_party.members[0]
if actor.hp == actor.maxhp
  # bitmapa nr 1
  # jakiś_sprite.bitmap = Cache.picture('bitmapa nr 1')
elsif actor.hp > actor.maxhp * 0,8  # gdyż 0,8 to 80%
  # bitmapa nr 2
  # jakiś_sprite.bitmap = Cache.picture('bitmapa nr 2')
elsif actor.hp > actor.maxhp * 0,5  # gdyż 0,5 to 50%
  # bitmapa nr 3
  # jakiś_sprite.bitmap = Cache.picture('bitmapa nr 3')
else # gdy powyższe warunki nie zostaną spełnione
  # bitmapa nr 4
end

Podobnie można zrobić w oknie... najlepiej by było, gdybyś podał fragment skryptu, w którym jest dodany HUD, wtedy dodając warunki ustawilibyśmy inną grafikę :aww:
________________________


 
 
 
CrasheR 




Pomógł: 123 razy
Dołączył: 20 Gru 2010
Posty: 609
Skąd: Nibelheim
Wysłany: Pią 29 Kwi, 2011 13:53
Nie wiem jak to dodać ;-( Dodaję skrypcik.
Spoiler:


#==============================================================================
# **Kingdom Hearts HUD
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
# Jako actor.png wstawcie zdjęcie swojego bohatera.

class Hud < Sprite#Window_Base
def initialize
super()#(0-7,-1-23,185-5,108-10)
self.bitmap = bitmap = Bitmap.new(185-5,108-10)#self.contents = Bitmap.new(width - 32, height - 32)
#self.windowskin = RPG::Cache.windowskin("Blank")
self.x = 350#0-7
self.y = 280#-1-23
self.z = 9
refresh
end

def refresh
self.bitmap.clear
self.bitmap.font.shadow = true
self.bitmap.font.size = 14
self.bitmap.font.name = "Segoe UI"
# Tło HP
@actor = $game_party.members[0]
hud3 = Cache.picture("Base HP3")
hud1 = hud3.width
hud2 = hud3.height
hud4 = Rect.new(0,0,hud1,hud2)
self.bitmap.blt(19+2,15,hud3,hud4)
# Tło MP
hudd3 = Cache.picture("Base MP")
hudd1 = hudd3.width
hudd2 = hudd3.height
hudd4 = Rect.new(0,0,hudd1,hudd2)
self.bitmap.blt(1,68,hudd3,hudd4)
#Zdjęcie Postaci
huddd3 = Cache.picture("actor")
huddd1 = huddd3.width
huddd2 = huddd3.height
huddd4 = Rect.new(0,0,huddd1,huddd2)
self.bitmap.blt(110,47,huddd3,huddd4)
#Pasek Hp
hpbar = Cache.picture("hP2")
hpbarwidth = hpbar.width * @actor.hp / @actor.maxhp
hpbarheight = hpbar.height
hpbar_rect = Rect.new(0,0,hpbarwidth,hpbarheight)
self.bitmap.blt(21,15,hpbar,hpbar_rect)
# Valor HP
hprect = Rect.new(4+1+5+4-15, 5+3+1, self.bitmap.width - 8, 32)
hprect2 = Rect.new(4+5+4-15, 5+3, self.bitmap.width - 8, 32)
# Pasek Sp
mpbar = Cache.picture("MP-2")
mpbarwidth = mpbar.width * @actor.mp / @actor.maxmp
mpbarheight = mpbar.height
mpbar_rect = Rect.new(0,0,mpbarwidth,mpbarheight)
self.bitmap.blt(1,68,mpbar,mpbar_rect)
# Valor SP
sprect = Rect.new(0,0, self.bitmap.width - 8, 32)
sprect2 = Rect.new(4+5+4-15, 22+3, self.bitmap.width - 8, 32)
end
end

class Scene_Map
alias hud_main main
def main
@Hud = Hud.new
hud_main
@Hud.dispose
end
alias hud_update update
def update
hud_update
#if $andando == true
#@Hud.refresh if Graphics.frame_count % 80 == 0
#else
@Hud.refresh if Graphics.frame_count % 30 == 0
#end
end
end

________________________



Ostatnio zmieniony przez CrasheR Pią 29 Kwi, 2011 13:58, w całości zmieniany 3 razy  
 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Pią 29 Kwi, 2011 13:55
I która grafika ma się zmieniać? :->
________________________


 
 
 
CrasheR 




Pomógł: 123 razy
Dołączył: 20 Gru 2010
Posty: 609
Skąd: Nibelheim
Wysłany: Pią 29 Kwi, 2011 13:57
Pasek Hp :P
________________________



 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Pią 29 Kwi, 2011 13:58
Czyli Ty chcesz zrobić zwykły pasek HP?! To nie mogłeś od razu tak napisać? Przecież są skrypty na gotowe paski HP :-?
________________________


 
 
 
CrasheR 




Pomógł: 123 razy
Dołączył: 20 Gru 2010
Posty: 609
Skąd: Nibelheim
Wysłany: Pią 29 Kwi, 2011 13:59
Mam kilka zdjęć paska hp (od 100% do 0%) . I chcę aby kiedy gracz ma 100% pokazała się grafika nr 1 kiedy 90% grafika nr 2 i tak do 0%.

Przepraszam, że wprowadziłem Cię w błąd.
________________________



 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Pią 29 Kwi, 2011 14:08
Jeżeli jest to tylko tło, to interesuje nas tylko fragment:
Kod:
hud3 = Cache.picture("Base HP3")


Spróbuj (nie przetestuje, bo nie mam grafik) ten fragment zamienić na:
Kod:
if actor.hp == actor.maxhp
  hud3 = Cache.picture(NAZWA)
elsif actor.hp > actor.maxhp * 0,9  # dla więcej niż 90%
  hud3 = Cache.picture(NAZWA)
elsif actor.hp > actor.maxhp * 0,8  # dla więcej niż 80%
  hud3 = Cache.picture(NAZWA)
elsif actor.hp > actor.maxhp * 0,5  # dla więcej niż 50%
  hud3 = Cache.picture(NAZWA)
else # gdy powyższe warunki nie zostaną spełnione
  hud3 = Cache.picture(NAZWA)
end

i to powinno wystarczyć. Możesz wstawić więcej warunków zgodnie z powyższym wzorem ;-)
________________________


 
 
 
CrasheR 




Pomógł: 123 razy
Dołączył: 20 Gru 2010
Posty: 609
Skąd: Nibelheim
Wysłany: Pią 29 Kwi, 2011 14:12
Wyskakuje błąd "Syntax Error"

elsif actor.hp > actor.maxhp * 0,9 # dla więcej niż 90%

Dodaję Grafikę .
________________________



 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Pią 29 Kwi, 2011 16:48
No bo zapomniałam, że zamiast przecinka w RM powinna być kropka :-PP Choć to i tak nie ta linijka kodu. Wróć do wersji pierwotnej - bez powyższego warunku.
Po prostu fragment:
Kod:
hpbar = Cache.picture("hP2")
hpbarwidth = hpbar.width * @actor.hp / @actor.maxhp

zamień na:
Kod:
if @actor.hp == @actor.maxhp
  hpbar = Cache.picture("100%")
elsif @actor.hp > @actor.maxhp * 90/100 
  hpbar = Cache.picture("90%")
elsif @actor.hp > @actor.maxhp * 80/100 
  hpbar = Cache.picture("80%")
elsif @actor.hp > @actor.maxhp * 70/100 
  hpbar = Cache.picture("70%")
elsif @actor.hp > @actor.maxhp * 60/100 
  hpbar = Cache.picture("60%")
elsif @actor.hp > @actor.maxhp * 50/100 
  hpbar = Cache.picture("50%")
elsif @actor.hp > @actor.maxhp * 40/100 
  hpbar = Cache.picture("40%")
elsif @actor.hp > @actor.maxhp * 30/100 
  hpbar = Cache.picture("30%") 
elsif @actor.hp > @actor.maxhp * 20/100 
  hpbar = Cache.picture("20%")
elsif @actor.hp > @actor.maxhp * 10/100 
  hpbar = Cache.picture("10%") 
else
  hpbar = Cache.picture("0%")
end

Wtedy wczytają się kolejno Twoje obrazki ;-)
________________________


 
 
 
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