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 )Greed - Wto 05 Kwi, 2011 22:05 Rewelacja, dzięki wielkie, przyda sie na pewno ;)