UltimaForum

Wsparcie [VX] - Skrypt HUD

Michu_1999 - Nie 06 Lis, 2011 16:52
Temat postu: Skrypt HUD
Witajcie!Czy mógłby ktoś zrobić dla mnie taki oto podobny HUD (BEZ tych kółek pod kreskami z życiem i maną)



Życie Zielone, a Mana Niebieska.Nad Życiem Imię bohatera,a w wielkim kole jego twarz.W małym kole przy twarzy LVL. Za HUD'a dziękuje !!!

Angius - Nie 06 Lis, 2011 17:17

Reino RPG HUD chyba dałoby się przerobić nieco.
Michu_1999 - Nie 06 Lis, 2011 18:22

A umiałbyś??? Naprawdę potrzebuje.
Angius - Nie 06 Lis, 2011 19:56

Wątpię, czy dałbym radę, bądź co bądź - RUBY-stą nie jestem, rzucam tylko pomysły...
Michu_1999 - Pon 07 Lis, 2011 15:38

Umiałby ktoś. Naprawdę tego potrzebuje. ;-(
Avara - Pon 07 Lis, 2011 16:03

Ten HUD nie jest trudny. Jednak jest pewien problem: jak wstawić kwadratową twarz w to koło :?: Będzie to głupio wyglądać. Jeśli będziesz mieć dopasowany obrazek twarzy (w kształcie koła i w odpowiednim rozmiarze), to mogę spróbować to zrobić. Albo wstaw obrazek twarzy, to sama będę mogła wyciąć. Napisz też, gdzie ten HUD ma być widoczny. To postaram się Ci to zrobić, ale raczej nie na dzisiaj.
tracersgta - Pon 07 Lis, 2011 16:04

Przeglądnij inne skrypty Hud-ów... Może inne spodobają ci bardziej niż ten ;-)
Michu_1999 - Pon 07 Lis, 2011 19:09

Avara napisał/a:
Ten HUD nie jest trudny. Jednak jest pewien problem: jak wstawić kwadratową twarz w to koło :?: Będzie to głupio wyglądać. Jeśli będziesz mieć dopasowany obrazek twarzy (w kształcie koła i w odpowiednim rozmiarze), to mogę spróbować to zrobić. Albo wstaw obrazek twarzy, to sama będę mogła wyciąć. Napisz też, gdzie ten HUD ma być widoczny. To postaram się Ci to zrobić, ale raczej nie na dzisiaj.


Tutaj masz obrazek . Najlepiej jak by był w górnym lewym rogu.

Avara - Wto 08 Lis, 2011 10:38

Oto Twój skrypt:
Spoiler:

Wrzuć nad Main w edytorze skryptów.
Kod:
=begin
********************************************************************
*                  HUD WoW VX for Michu_1999 by Avara             *
*                            Autor:  Avara                         *
*                            ultimateam.pl                          *
**********************************************************************
Hud stworzony na zamówienie dla Michu_1999. Wrzucić nad Main w edytorze skryptów.
Grafika wzięta z gry "World of Warcraft". Należy ją umieścić w folderze
Graphics\System.
Proszę nie zapomnieć o wspomnieniu o twórcy skryptu w swoim projekcie.
Życzę miłego kożystania ;-)
=end
module HUD_WoW_by_Avara # <- nie usuwać!
#                              KONFIGURACJA
  HUD_WOW_WIDOCZNY_START = true    #czy hud ma być widoczny od samego początku gry (true/false)
  HUD_WOW_WIDOCZNY = 20            #numer przełącznika, włączający/wyłączający hud
  HUD_WOW_UKRYJ = true             #ukryj HUD, gdy bohater znajduje się za nim
  HUD_WOW_UKRYJ_NP = 100           #poziom "nieprzezroczystości" (0 - przezroczyste;
                                   #255 - nieprzezroczyste), gdy uktywanie jest włączone
#                           KONIEC KONFIGURACJI
#                    Dalej zmieniać na własne ryzyko!
end


class HUD_WoW < Window_Base
 
  def initialize(x = - 12, y = - 12, width = 231, height = 110)
    super(x,y,width,height)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.size = 16
    self.opacity = 0
    ukryj
    refresh
  end
 
  alias oldupdate update
  def update   
    refresh
    oldupdate
  end
 
  def refresh
    self.contents.clear
    ukryj
    img = Cache.system("hud.png")
    p_hp = Cache.system("pasek_zycia.png")
    p_mp = Cache.system("pasek_many.png")
    bohater = $game_party.members[0]
    hp = bohater.hp
    maxhp = bohater.base_maxhp
    mp = bohater.mp
    maxmp = bohater.base_maxmp
    zycie = p_hp.width * hp / maxhp
    mana = p_mp.width * mp / maxmp
    self.contents.blt(0, 0, img, Rect.new(0, 0, img.width, img.height), 255)
    self.contents.blt(73, 34, p_hp, Rect.new(0, 0, zycie, img.height), 255)
    self.contents.blt(73, 45, p_mp, Rect.new(0, 0, mana, img.height), 255)
    self.contents.draw_text(73, 12, 123, 17, bohater.name, 1)
    self.contents.draw_text(5, 49, 18, 17, bohater.level, 1)
  end
 
  def ukryj
    if HUD_WoW_by_Avara::HUD_WOW_UKRYJ == true
      if $game_player.screen_x - 16 < 187 and $game_player.screen_y - 28 < 60
        self.contents_opacity = HUD_WoW_by_Avara::HUD_WOW_UKRYJ_NP
      else
        self.contents_opacity = 255
      end
    end
  end
end


class Scene_Map < Scene_Base
 
  alias hud_wow_by_avara_st start
  def start
    hud_wow_by_avara_st
    @hud_wow_by_avara = HUD_WoW.new
    if $game_switches[HUD_WoW_by_Avara::HUD_WOW_WIDOCZNY] == false
      @hud_wow_by_avara.visible = false
    end
  end
 
  alias hud_wow_by_avara_term terminate
  def terminate
    hud_wow_by_avara_term
    @hud_wow_by_avara.dispose
  end
 
  alias hud_wow_by_avara_up update
  def update
    hud_wow_by_avara_up
    if $game_switches[HUD_WoW_by_Avara::HUD_WOW_WIDOCZNY] == true
      @hud_wow_by_avara.update
      @hud_wow_by_avara.visible = true
    else
      @hud_wow_by_avara.visible = false
    end
  end 
end


class Scene_Title < Scene_Base
 
  alias hud_wow_by_avara_cr_ga_ob create_game_objects
  def create_game_objects
    hud_wow_by_avara_cr_ga_ob
   
    $game_switches[HUD_WoW_by_Avara::HUD_WOW_WIDOCZNY] = HUD_WoW_by_Avara::HUD_WOW_WIDOCZNY_START
  end
end

@edit 13:27 : Dodałam zanikanie okna z hudem, gdy postać się za nim znajduje. Przetestuj ;-)

Nie zapomnij wspomnieć o mnie w swoim projekcie (w napisach końcowych/twórcach) ;-)

Grafikę wrzuć do folderu Graphics\System.
Spoiler:

Nieważne gdzie wrzucam, zmieniają się nazwy obrazków. Zapisz obrazki jako:
hud.png


pasek_zycia.png


pasek_many.png

Jakbyś chciał coś zmienić/dodać, to napisz w tym temacie.

Michu_1999 - Wto 08 Lis, 2011 16:58

Coś nie działa ;-(
Avara - Wto 08 Lis, 2011 17:14

wrzuć screena błędu, u mnie wszystko działało i nie powinno się z niczym gryźć.
Michu_1999 - Wto 08 Lis, 2011 17:27

Nie ma błędu, tylko się wogóle nie pokazuje
Avara - Wto 08 Lis, 2011 17:36

1. Czy w linijce 16. ustawiłeś na pewno nieużywany dotąd przełącznik :?:
2. Jeśli włączyłeś jakiś zapis gry, to ten przełącznik najprawdopodobniej jest wyłączony. Zrób zdarzenie i zmień wybrany przełącznik na on.

Michu_1999 - Wto 08 Lis, 2011 17:47

Dzięki :-) :-) :-) Byłem taki głupi/Wszystko Działa!
A dałoby się aby doświadczenie było wokół Głowy Postaci (Jak w Wiedźminie) i było żółte???

Angius - Wto 08 Lis, 2011 17:49

Musiałbyś użyć skryptu pozwalającego generować okrągłe paski - pierścienie. To tzw. Scripter's Tool", więc jeśli Avara zechce, moge jej podrzucić.
Avara - Wto 08 Lis, 2011 17:54

Da się, tylko od razu uprzedzam, że łatwiej gra może się zacinać. Wydaje mi się jednak, że przy tylko jednym takim pasku, nie powinno być takiego problemu. I nie wiem, czy uda mi się to zrobić z obrazkiem paska. Spróbuję, ale w ostateczności będzie tylko jednolity pasek.

A teraz pytanie o szczegóły:
1. Gdzie ma się pasek zaczynać :?: Czyli gdzie ma być "0 expa" :?: Tam po lewo poniżej ucha :?:
2. Gdzie koniec paska :?: Czyli gdzie ma być punkt "max expa" :?: Przy czole :?: Przy szyi :?:

//Edit:
Angius znam ten skrypt i już się z takimi paskami bawiłam. Wystarczy tylko fragment tego skryptu.

//Edit 2:
Ponownie raczej tego dzisiaj nie zrobię, ale na jutro raczej będzie ;-)

Michu_1999 - Wto 08 Lis, 2011 18:51

0 exp na dole przy szyi ( po prawej od kółka z LVL), a max po lewej poniżej ucha :->
Avara - Wto 08 Lis, 2011 20:40

Może być coś takiego :?:
Spoiler:

Kod:
=begin
********************************************************************
*                  HUD WoW VX for Michu_1999 by Avara             *
*                            Autor:  Avara                         *
*                            ultimateam.pl                          *
**********************************************************************
Hud stworzony na zamówienie dla Michu_1999. Wrzucić nad Main w edytorze skryptów.
Skrypt zawiera fragment skryptu "Menu Bars" wersję 4.1 Syvkal'a.
Grafika wzięta z gry "World of Warcraft". Należy ją umieścić w folderze
Graphics\System.
Proszę nie zapomnieć o wspomnieniu o twórcy skryptu w swoim projekcie.
Życzę miłego kożystania ;-)
=end
module HUD_WoW_by_Avara # <- nie usuwać!
#                              KONFIGURACJA
  HUD_WOW_WIDOCZNY_START = true    #czy hud ma być widoczny od samego początku gry (true/false)
  HUD_WOW_WIDOCZNY = 20            #numer przełącznika, włączający/wyłączający hud
  HUD_WOW_UKRYJ = true             #ukryj HUD, gdy bohater znajduje się za nim
  HUD_WOW_UKRYJ_NP = 100           #poziom "nieprzezroczystości" (0 - przezroczyste;
                                   #255 - nieprzezroczyste), gdy uktywanie jest włączone
#                           KONIEC KONFIGURACJI
#                    Dalej zmieniać na własne ryzyko!
end


class HUD_WoW < Window_Base
 
  def initialize(x = - 12, y = - 14, width = 231, height = 112)
    super(x,y,width,height)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.size = 16
    self.opacity = 0
    @bohater = $game_party.members[0]
    @color1 = text_color(21)
    @color2 = text_color(14)
    ukryj
    refresh
  end
 
  alias oldupdate update
  def update   
    refresh
    oldupdate
  end
 
  def refresh
    self.contents.clear
    ukryj
    img = Cache.system("hud.png")
    p_hp = Cache.system("pasek_zycia.png")
    p_mp = Cache.system("pasek_many.png")
    hp = @bohater.hp
    maxhp = @bohater.base_maxhp
    mp = @bohater.mp
    maxmp = @bohater.base_maxmp
    zycie = p_hp.width * hp / maxhp
    mana = p_mp.width * mp / maxmp
    self.contents.blt(0, 2, img, Rect.new(0, 0, img.width, img.height), 255)
    self.contents.blt(73, 36, p_hp, Rect.new(0, 0, zycie, img.height), 255)
    self.contents.blt(73, 47, p_mp, Rect.new(0, 0, mana, img.height), 255)
    self.contents.draw_text(73, 14, 123, 17, @bohater.name, 1)
    self.contents.draw_text(5, 51, 18, 17, @bohater.level, 1)
    draw_actor_exp_ring(@bohater, 36, 36, 34, 3, 305, 70)
  end
 
                 #  FRAGMENT SKRYPTU "Menu Bars" BY Syvkal V 4.1
  def draw_actor_exp_ring(actor, x, y, radius, height, amount = 360, start = 0, reverse = false)
    @rate = actor.now_exp.to_f / [actor.next_exp, 1].max
    gw = amount * actor.now_exp / [actor.next_exp, 1].max
    self.contents.cogwheel_fill_ring(x, y, gw, radius, height, @color1, @color2, amount, start, reverse)
  end 
                           #  KONIEC FRAGMENTU
 
  def ukryj
    if HUD_WoW_by_Avara::HUD_WOW_UKRYJ == true
      if $game_player.screen_x - 16 < 187 and $game_player.screen_y - 28 < 60
        self.contents_opacity = HUD_WoW_by_Avara::HUD_WOW_UKRYJ_NP
      else
        self.contents_opacity = 255
      end
    end
  end
end


                 #  FRAGMENT SKRYPTU "Menu Bars" BY Syvkal V 4.1
class Bitmap

  def cogwheel_fill_ring(x, y, gw, radius, height, gc1, gc2, amount = 360, start = 0, reverse = false)
    # Kolory obramówki paska
    color1 = Color.new(0, 0, 0, 192)              # Zewnętrzne
    color2 = Color.new(0, 0, 0, 192)   # Wewnętrzne
  # Wypełnienie pustego paska
    color3 = Color.new(0, 0, 0, 255)           # Połowa ceinowania
    color4 = Color.new(64, 0, 0, 255)
    fill_ring(x-2, y-2, radius, height+4, color1, amount, start, reverse)
    fill_ring(x-1, y-1, radius, height+2, color2, amount, start, reverse)
    if amount >= 220
      gradient_fill_ring(x, y, radius, height, color3, color4, [amount/2, 180].min, start, reverse)
      gradient_fill_ring(x, y, radius, height, color4, color3, [amount/2, 180].min, start+(amount/2), reverse)
    else
      gradient_fill_ring(x, y, radius, height, color3, color4, [amount, 360].min, start, reverse)
    end
    if gw >= 220
      gw1 = amount/2; gw2 = gw / 2
      gradient_fill_ring(x, y, radius, height, gc1, gc2, gw1, start, reverse)
      gradient_fill_ring(x, y, radius, height, gc2, gc1, gw2, start +(amount/2), reverse)
    else
      gradient_fill_ring(x, y, radius, height, gc1, gc2, gw, start, reverse)
    end
  end
 
  def fill_ring(ox, oy, radius, height, gc1, amount = 360, start = 0, reverse = false)
    d = 2.0 * Math::PI / 360
    for i in 1..[amount, 360].min
      s = i + start
      if reverse
        x = ox + ( radius * Math.sin( d * s ) ).to_i
        y = oy - ( radius * Math.cos( d * s ) ).to_i
      else
        x = ox - ( radius * Math.cos( d * s ) ).to_i
        y = oy + ( radius * Math.sin( d * s ) ).to_i
      end
      fill_rect(x, y, height, height, gc1)
    end
  end
 
  def gradient_fill_ring(ox, oy, radius, height, gc1, gc2, amount = 360, start = 0, reverse = false)
    d = 2.0 * Math::PI / 360
    for i in 1..amount
      s = i + start
      if reverse
        x = ox + ( radius * Math.sin( d * s ) ).to_i
        y = oy - ( radius * Math.cos( d * s ) ).to_i
      else
        x = ox - ( radius * Math.cos( d * s ) ).to_i
        y = oy + ( radius * Math.sin( d * s ) ).to_i
      end
      color = get_gradient_pixel(gc1, gc2, amount, i)
      fill_rect(x, y, height, height, color)
    end
  end
 
  def get_gradient_pixel(gc1, gc2, amount, i)
    red = gc1.red * (amount - i) / amount + gc2.red * i / amount
    green = gc1.green * (amount - i) / amount + gc2.green * i / amount
    blue = gc1.blue * (amount - i) / amount + gc2.blue * i / amount
    alpha = gc1.alpha * (amount - i) / amount + gc2.alpha * i / amount
    return Color.new(red, green, blue, alpha)
  end
end


class Game_Actor < Game_Battler

  def now_exp
    return @exp - @exp_list[@level]
  end

  def next_exp
    return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
  end
end
                            #  KONIEC FRAGMENTU
                           

class Scene_Map < Scene_Base
 
  alias hud_wow_by_avara_st start
  def start
    hud_wow_by_avara_st
    @hud_wow_by_avara = HUD_WoW.new
    if $game_switches[HUD_WoW_by_Avara::HUD_WOW_WIDOCZNY] == false
      @hud_wow_by_avara.visible = false
    end
  end
 
  alias hud_wow_by_avara_term terminate
  def terminate
    hud_wow_by_avara_term
    @hud_wow_by_avara.dispose
  end
 
  alias hud_wow_by_avara_up update
  def update
    hud_wow_by_avara_up
    if $game_switches[HUD_WoW_by_Avara::HUD_WOW_WIDOCZNY] == true
      @hud_wow_by_avara.update
      @hud_wow_by_avara.visible = true
    else
      @hud_wow_by_avara.visible = false
    end
  end 
end


class Scene_Title < Scene_Base
 
  alias hud_wow_by_avara_cr_ga_ob create_game_objects
  def create_game_objects
    hud_wow_by_avara_cr_ga_ob
   
    $game_switches[HUD_WoW_by_Avara::HUD_WOW_WIDOCZNY] = HUD_WoW_by_Avara::HUD_WOW_WIDOCZNY_START
  end
end

//Edit 9.11.2011 00:54 : Lvl postaci był nieco za wysoko. Już poprawiłam ;-)


Skrypt zawiera fragment skryptu "Menu Bars" wersję 4.1 Syvkal'a. Stwierdziłam, że nie ma potrzeby umieszczać całego dłuuugiego skryptu, więc wzięłam tylko to co niezbędne ;-) Info w skrypcie o tym jest. Mam nadzieję, że teraz Ci będzie odpowiadał.

Michu_1999 - Sro 09 Lis, 2011 14:30

Jasne.To jest bardzo dobre.Właśnie o coś takiego mi chodziło.Miejsce w napisach końcowych gwarantowane.

PS
Jak dać pomógł??

Vrona - Sro 09 Lis, 2011 14:35

Pod odpowiedzią danego użytkownika,który ci pomógł,klikasz przycisk "Pomógł" i potwierdzasz.
Angius - Sro 09 Lis, 2011 15:00

Rozwiązane zamykam więc. Chyba sam użyję tego skryptu u siebie :mrgreen:

Powered by phpBB modified by Przemo © 2003 phpBB Group