UltimaForum

Wsparcie [VX] - Emotikonka nad postaciÄ…?

Greed - Sob 26 Lut, 2011 20:18
Temat postu: Emotikonka nad postaciÄ…?
Zastanawiałem się czy może ktoś wpadł kiedyś na coś takiego żeby nad głowami postaci (charsetów) widniała emotikonka wyrażająca że niektóre postacie mają nam coś ważnego do powiedzenia. Gdy z nią już porozmawiamy emotikonka znika. Jeszcze raz zaznaczam że chodzi o ikonka nad charsetem nie portretem.
Gdyby ktoś natknął się na coś takiego lub wiedział jak to zrobić będę wdzięczny.

Killerczyc - Sob 26 Lut, 2011 23:15

Wiem o co Ci biega Greed, mam ten sam pomysł. Myślałem że wystarczy dać równoległe zdarzenie i tam - Pokaż emocje - Zdarzenie 11
Ale gdy zaczynam to trochę poczekam i wtedy ekran się rozjaśnia i jest pusty dymek ('_')

Ayene - Czw 24 Mar, 2011 13:21

Czy problem jest nadał aktualny? :->
Avara - Czw 24 Mar, 2011 15:11

Być może ja także będę chciała zrobić coś podobnego w mojej grze, więc dołączam się do prośby Greed'a. Poza tym innym taka porada albo skrypt też się pewnie przyda ;-)
Piotro888 - Czw 24 Mar, 2011 15:42

Ja też się do niej dołączam (że do prośby).
Czeliosss - Czw 24 Mar, 2011 17:13

Można zrobić równoległe i dać po tym wait na ileś tam. Nie próbowałem, ale chyba zadziała.
Ayene - Sob 26 Mar, 2011 01:36

Możecie spróbować tego:
Spoiler:

Kod:
module Ayene
  # Komentarz
  ATTENTION_COMMENTS = 'Nowy' 
end

class Sprite_Character < Sprite_Base
  alias emo_spcha_dispose dispose
  def dispose
    if @emo_sprite != nil
      @emo_sprite.dispose
      @emo_sprite = nil
    end
    emo_spcha_dispose
  end   
 
  alias emo_spcha_update update
  def update
    emo_spcha_update     
    if @character.is_a?(Game_Event)     
      if @character.list != nil
        for i in 0...@character.list.size
          if @character.list[i].code == 108 and @character.list[i].parameters == [Ayene::ATTENTION_COMMENTS]
            if @emo_sprite.nil?
              @emo_sprite = ::Sprite.new(nil)
              @emo_sprite.bitmap = Bitmap.new(32, 32)
              img = Cache.system("Balloon")
              src_rect = Rect.new(32*2, 0, 32, 32)
              @emo_sprite.bitmap.blt(0, 0, img, src_rect)             
            end
            if @emo_sprite.is_a?(Sprite)
              @emo_sprite.x = self.x - (@emo_sprite.width / 2)
              @emo_sprite.y = self.y - self.oy - @emo_sprite.height
            end           
          end         
        end
      end         
    end   
  end
end

class Scene_Map < Scene_Base
  def map_refresh
    @spriteset.dispose_characters
    @spriteset.create_characters
  end   
end

class Game_Event < Game_Character
  attr_reader :event
end


Instrukcja:
1. W zdarzeniu, które ma być oznakowane, należy umieścić komentarz "Nowy" (bierze pod uwagę aktywną stronę).
2. By usunąć ikonę nad zdarzeniem wystarczy zmienić stronę, i wywołać skrypt:
Kod:
$scene.map_refresh

W razie problemów dam demo. Ewentualnie czekam na sugestie, może znajdzie się lepszy sposób wyłączania balonika.

Piotro888 - Sob 26 Mar, 2011 09:38

Dzięki Ayene, działa.
Ayene - Sob 26 Mar, 2011 11:10

Dodałam jeszcze opcję wyboru, jaka emotka ma być wyświetlona nad zdarzeniem. Instrukcja w treści skryptu:
Skrypt:
Spoiler:

Kod:
# --------------------------------------------------------------
# Emotikonka nad zdarzeniem [VX]
# Autor: Ayene [yurika@o2.pl]
# www.ultimateam.pl
# --------------------------------------------------------------
# Instrukcja
# 1. W zdarzeniu, które ma być oznakowane, należy umieścić komentarz "NOWY" lub
#   'nowy' (bierze pod uwagÄ™ aktywnÄ… stronÄ™).
# 2. By usunąć ikonę nad zdarzeniem wystarczy zmienić stronę, i wywołać skrypt:
#    $scene.map_refresh
# 3. By zmienić ikonÄ™ wyÅ›wietlanÄ… nad gÅ‚owÄ™ postaci, w treÅ›ci komentarza 
#    po 'nowy' należy wpisać cyfrÄ™, która odpowiada indeksowi ikony (od góry)
#    na obrazku  Graphics/System/'Balloon.png', np. 'NOWY 1' to znak zapytania.
#    (domyÅ›lnie wykrzyknik)
# --------------------------------------------------------------

module AYENE
  # Komentarz: NOWY <cyfra> lub nowy <cyfra>
  # gdzie <cyfra> to indeks ikony (od góry) na obrazku
  # Graphics/System/'Balloon.png'
  ATTENTION_COMMENTS = /(?:nowy|NOWY)\s*(\d+)/i
end

class Sprite_Character < Sprite_Base
  alias emo_spcha_update update
  def update
    emo_spcha_update     
    if @character.is_a?(Game_Event)     
      if @character.list != nil       
        for i in 0...@character.list.size           
          if @character.list[i].code == 108 and (@character.list[i].parameters[0].include?('nowy') or
            @character.list[i].parameters[0].include?('NOWY'))
            if @emo_sprite.nil?
              @emo_sprite = ::Sprite.new(nil)
              @emo_sprite.bitmap = Bitmap.new(32, 32)
              img = Cache.system("Balloon")             
              @character.list[i].parameters[0].split(/[\r\n]+/).each { |com|
              case com
              when AYENE::ATTENTION_COMMENTS   
                @icon = $1.to_i
              end}   
              @icon != nil ? src_rect = Rect.new(32*5, @icon*32, 32, 32) :
              src_rect = Rect.new(32*5, 0, 32, 32)                           
              @emo_sprite.bitmap.blt(0, 0, img, src_rect)             
            end
            if @emo_sprite.is_a?(Sprite)
              @emo_sprite.x = self.x - (@emo_sprite.width / 2)
              @emo_sprite.y = self.y - self.oy - @emo_sprite.height
            end           
          end         
        end
      end         
    end     
  end
 
  alias emo_spcha_dispose dispose
  def dispose
    if @emo_sprite != nil
      @emo_sprite.dispose
      @emo_sprite = nil
    end
    emo_spcha_dispose
  end
end

class Scene_Map < Scene_Base
  def map_refresh
    @spriteset.dispose_characters
    @spriteset.create_characters
  end   
end

class Game_Event < Game_Character
  attr_reader :event
end


Screen:
Spoiler:


Piotro888 - Sob 26 Mar, 2011 11:53

Jesteś super ayene. Dzięki wielkie (i stworzyłaś nowy skrypt :-P )
Greed - Wto 05 Kwi, 2011 22:05

Rewelacja, dzięki wielkie, przyda sie na pewno ;)

Powered by phpBB modified by Przemo © 2003 phpBB Group