[사용법]
이벤트ID의 지정 방법이나 테일 화상의 형식은,메세지 분출해 표시와 같습니다.
(다만 「$mes_id=-1(그 이벤트 자신)」는 비대응이 되고 있습니다)
XMS.스크립트 쉘프모양의 「메세지 표시 풀 그레이드 업」은, 확장CO-X을 사용하는 것으로
제어 문자p[]의 설정을 자동적으로$mes_id에 적용할 수 있습니다.
즉, 캐릭터 팝으로부터 이벤트 커멘드를 고쳐 쓰는 필요없음에 도입이 가능합니다.
[스크립트]
#==============================================================================
# +++ 콜라보레이션 「+분출해 표시」 ver.1.13 +++
# Script by
# 파라개 http://para.j-mx.com/
# ×
# 앵아 재흙 http://xms.fc2web.com/
#
#------------------------------------------------------------------------------
# 거의 어떤 메세지 윈도우에 대해서도 부록 가능한 「분출해 표시」입니다.
# 또, 테일 부분만의 자동 추적 기능을 가집니다.
#==============================================================================
# 분출해 표시를 하려면 ,
# 테일용 화상 「(스킨명)-top」 「(스킨명)-under」을
# 「Graphics/Windowskins」폴더에 임포트 해 둘 필요가 있습니다.
#------------------------------------------------------------------------------
#
# [분출해 표시의 사용법]
# 이벤트 커멘드 「스크립트」로 「$mes_id」에 이벤트ID를 대입하는 것으로
# 그 이벤트나무이고가 팝 하게 됩니다.
# (기술예: $mes_id=4 )
# ID에0를 대입하면 플레이어, nil대입하면, 통상의 메세지 표시로 돌아옵니다.
# 표시 위치는 이벤트 「문장 옵션」으로 변경할 수 있습니다.
# 표시 위치에 「중앙」을 지정하면, 이벤트의 위치에 관계없이
# 화면 중앙에 표시됩니다.
#
#==============================================================================
#==============================================================================
# □ 커스터마이즈 포인트
#==============================================================================
class Window_Message < Window_Selectable
#--------------------------------------------------------------------------
# 분출해 모드시의 스킨 설정
#--------------------------------------------------------------------------
# 스킨명(원의 윈도우 스킨과 같은 것을 사용할 때는 「""」)
FUKI_SKIN_NAME = "001-Blue01"
# 윈도우 배경의 불투명도(디폴트는160)
FUKI_OPACITY = 255
end
#==============================================================================
# ■ Window_Message
#==============================================================================
class Window_Message < Window_Selectable
#--------------------------------------------------------------------------
# ● 메세지 종료 처리
#--------------------------------------------------------------------------
alias parashelf_terminate_message terminate_message
def terminate_message
# 귀환시키는
parashelf_terminate_message
# 나무이고의 소거
del_tail
end
#--------------------------------------------------------------------------
# ● 리프레쉬
#--------------------------------------------------------------------------
alias parashelf_refresh refresh
def refresh
# 귀환시키는
parashelf_refresh
# 나무이고의 재설정
del_tail
set_tail
end
#--------------------------------------------------------------------------
# ● 윈도우의 위치와 불투명도의 설정
#--------------------------------------------------------------------------
alias parashelf_reset_window reset_window
def reset_window
# 귀환시키는
parashelf_reset_window
# 테일의 위치를 변경
if $mes_id != nil and @tail != nil
tale_pos = get_tale_pos
@tail.x = tale_pos[0]
@tail.y = tale_pos[1]
end
end
#--------------------------------------------------------------------------
# ● 프레임 갱신
#--------------------------------------------------------------------------
alias parashelf_update update
def update
# 귀환시키는
parashelf_update
# 분출해 테일의 갱신
update_tail
# 메세지 표시중의 경우
if @contents_showing
# 테일이 있는 경우는 포즈 싸인을 비표시
if @tail != nil
self.pause = false
end
end
# 멧지 종료시에 스킨 설정이 돌아오지 않은 경우
if $game_temp.message_window_showing == false and @def_skin_name != nil
# 스킨을 되돌리는
reset_fuki_skin
end
end
#--------------------------------------------------------------------------
# ○ 프레임 갱신 (분출해 테일)
#--------------------------------------------------------------------------
def update_tail
# 분출해 모드에서는 이벤트의 움직임에 추종
if $mes_id != nil and @tail != nil
tale_pos = get_tale_pos
@tail.x = tale_pos[0]
@tail.y = tale_pos[1]
skin = $game_system.windowskin_name
case @message_position
when 0 # 상
@tail.bitmap = RPG::Cache.windowskin(skin + "-top")
when 2 # 하
@tail.bitmap = RPG::Cache.windowskin(skin + "-under")
end
end
end
#--------------------------------------------------------------------------
# ○ 분출해 테일을 표시
#--------------------------------------------------------------------------
def set_tail
# $mes_id 가 하늘 때와 전투중나무이고를 표시하지 않는
if $mes_id == nil or $game_temp.in_battle
del_tail
# 스킨을 되돌리는
reset_fuki_skin
else
# 스킨을 세트
set_fuki_skin
# 나무이고의 테일을 묘화
skin = $game_system.windowskin_name
if $game_system.message_frame == 0
# 위치를 취득
tale_pos = get_tale_pos
@tail = Sprite.new
case $game_system.message_position
when 0 # 상
@tail.bitmap = RPG::Cache.windowskin(skin + "-top")
@tail.x = tale_pos[0]
@tail.y = tale_pos[1]
@tail.z = self.z + 1
when 1 # 안
@tail.dispose
@tail = nil
when 2 # 하
@tail.bitmap = RPG::Cache.windowskin(skin + "-under")
@tail.x = tale_pos[0]
@tail.y = tale_pos[1]
@tail.z = self.z + 1
end
# 엑스트라 스프라이트에 등록
@extra_sprites = [] if @extra_sprites.nil?
@extra_sprites.push(@tail) if @tail != nil
end
end
end
#--------------------------------------------------------------------------
# ○ 테일의 위치를 계산
#--------------------------------------------------------------------------
def get_tale_pos
character = get_character($mes_id)
x = [[character.screen_x - 16, self.x].max, self.x + self.width - 32].min
case $game_system.message_position
when 0
y = self.y + self.height - 16
else
y = self.y - 16
end
return [x, y]
end
#--------------------------------------------------------------------------
# ○ 캐릭터의 취득
# parameter : 파라미터
#--------------------------------------------------------------------------
def get_character(parameter)
# 파라미터로 분기
case parameter
when 0 # 플레이어
return $game_player
else # 특정의 이벤트
events = $game_map.events
return events == nil ? nil : events[parameter]
end
end
#--------------------------------------------------------------------------
# ○ 나무이고를 파기
#--------------------------------------------------------------------------
def del_tail
if @tail != nil
@tail.dispose
@tail = nil
end
end
#--------------------------------------------------------------------------
# ○ 스킨의 설정
#--------------------------------------------------------------------------
def set_fuki_skin
# 윈도우 스킨을 변경
if FUKI_SKIN_NAME != "" and FUKI_SKIN_NAME != $game_system.windowskin_name
@def_skin_name = $game_system.windowskin_name
$game_system.windowskin_name = FUKI_SKIN_NAME
self.windowskin = RPG::Cache.windowskin($game_system.windowskin_name)
end
# 불투명도를 변경
if self.back_opacity != FUKI_OPACITY
@def_back_opacity = self.back_opacity
self.back_opacity = FUKI_OPACITY
end
end
#--------------------------------------------------------------------------
# ○ 스킨을 되돌리는
#--------------------------------------------------------------------------
def reset_fuki_skin
# 윈도우 스킨을 되돌리는
if @def_skin_name != nil
$game_system.windowskin_name = @def_skin_name
self.windowskin = RPG::Cache.windowskin($game_system.windowskin_name)
@def_skin_name = nil
end
# 불투명도를 되돌리는
if @def_back_opacity != nil
self.back_opacity = @def_back_opacity
@def_back_opacity = nil
end
end
end
[출처]
http://para.j-mx.com/rgss/script/fuki_plus.html
이벤트ID의 지정 방법이나 테일 화상의 형식은,메세지 분출해 표시와 같습니다.
(다만 「$mes_id=-1(그 이벤트 자신)」는 비대응이 되고 있습니다)
XMS.스크립트 쉘프모양의 「메세지 표시 풀 그레이드 업」은, 확장CO-X을 사용하는 것으로
제어 문자p[]의 설정을 자동적으로$mes_id에 적용할 수 있습니다.
즉, 캐릭터 팝으로부터 이벤트 커멘드를 고쳐 쓰는 필요없음에 도입이 가능합니다.
[스크립트]
#==============================================================================
# +++ 콜라보레이션 「+분출해 표시」 ver.1.13 +++
# Script by
# 파라개 http://para.j-mx.com/
# ×
# 앵아 재흙 http://xms.fc2web.com/
#
#------------------------------------------------------------------------------
# 거의 어떤 메세지 윈도우에 대해서도 부록 가능한 「분출해 표시」입니다.
# 또, 테일 부분만의 자동 추적 기능을 가집니다.
#==============================================================================
# 분출해 표시를 하려면 ,
# 테일용 화상 「(스킨명)-top」 「(스킨명)-under」을
# 「Graphics/Windowskins」폴더에 임포트 해 둘 필요가 있습니다.
#------------------------------------------------------------------------------
#
# [분출해 표시의 사용법]
# 이벤트 커멘드 「스크립트」로 「$mes_id」에 이벤트ID를 대입하는 것으로
# 그 이벤트나무이고가 팝 하게 됩니다.
# (기술예: $mes_id=4 )
# ID에0를 대입하면 플레이어, nil대입하면, 통상의 메세지 표시로 돌아옵니다.
# 표시 위치는 이벤트 「문장 옵션」으로 변경할 수 있습니다.
# 표시 위치에 「중앙」을 지정하면, 이벤트의 위치에 관계없이
# 화면 중앙에 표시됩니다.
#
#==============================================================================
#==============================================================================
# □ 커스터마이즈 포인트
#==============================================================================
class Window_Message < Window_Selectable
#--------------------------------------------------------------------------
# 분출해 모드시의 스킨 설정
#--------------------------------------------------------------------------
# 스킨명(원의 윈도우 스킨과 같은 것을 사용할 때는 「""」)
FUKI_SKIN_NAME = "001-Blue01"
# 윈도우 배경의 불투명도(디폴트는160)
FUKI_OPACITY = 255
end
#==============================================================================
# ■ Window_Message
#==============================================================================
class Window_Message < Window_Selectable
#--------------------------------------------------------------------------
# ● 메세지 종료 처리
#--------------------------------------------------------------------------
alias parashelf_terminate_message terminate_message
def terminate_message
# 귀환시키는
parashelf_terminate_message
# 나무이고의 소거
del_tail
end
#--------------------------------------------------------------------------
# ● 리프레쉬
#--------------------------------------------------------------------------
alias parashelf_refresh refresh
def refresh
# 귀환시키는
parashelf_refresh
# 나무이고의 재설정
del_tail
set_tail
end
#--------------------------------------------------------------------------
# ● 윈도우의 위치와 불투명도의 설정
#--------------------------------------------------------------------------
alias parashelf_reset_window reset_window
def reset_window
# 귀환시키는
parashelf_reset_window
# 테일의 위치를 변경
if $mes_id != nil and @tail != nil
tale_pos = get_tale_pos
@tail.x = tale_pos[0]
@tail.y = tale_pos[1]
end
end
#--------------------------------------------------------------------------
# ● 프레임 갱신
#--------------------------------------------------------------------------
alias parashelf_update update
def update
# 귀환시키는
parashelf_update
# 분출해 테일의 갱신
update_tail
# 메세지 표시중의 경우
if @contents_showing
# 테일이 있는 경우는 포즈 싸인을 비표시
if @tail != nil
self.pause = false
end
end
# 멧지 종료시에 스킨 설정이 돌아오지 않은 경우
if $game_temp.message_window_showing == false and @def_skin_name != nil
# 스킨을 되돌리는
reset_fuki_skin
end
end
#--------------------------------------------------------------------------
# ○ 프레임 갱신 (분출해 테일)
#--------------------------------------------------------------------------
def update_tail
# 분출해 모드에서는 이벤트의 움직임에 추종
if $mes_id != nil and @tail != nil
tale_pos = get_tale_pos
@tail.x = tale_pos[0]
@tail.y = tale_pos[1]
skin = $game_system.windowskin_name
case @message_position
when 0 # 상
@tail.bitmap = RPG::Cache.windowskin(skin + "-top")
when 2 # 하
@tail.bitmap = RPG::Cache.windowskin(skin + "-under")
end
end
end
#--------------------------------------------------------------------------
# ○ 분출해 테일을 표시
#--------------------------------------------------------------------------
def set_tail
# $mes_id 가 하늘 때와 전투중나무이고를 표시하지 않는
if $mes_id == nil or $game_temp.in_battle
del_tail
# 스킨을 되돌리는
reset_fuki_skin
else
# 스킨을 세트
set_fuki_skin
# 나무이고의 테일을 묘화
skin = $game_system.windowskin_name
if $game_system.message_frame == 0
# 위치를 취득
tale_pos = get_tale_pos
@tail = Sprite.new
case $game_system.message_position
when 0 # 상
@tail.bitmap = RPG::Cache.windowskin(skin + "-top")
@tail.x = tale_pos[0]
@tail.y = tale_pos[1]
@tail.z = self.z + 1
when 1 # 안
@tail.dispose
@tail = nil
when 2 # 하
@tail.bitmap = RPG::Cache.windowskin(skin + "-under")
@tail.x = tale_pos[0]
@tail.y = tale_pos[1]
@tail.z = self.z + 1
end
# 엑스트라 스프라이트에 등록
@extra_sprites = [] if @extra_sprites.nil?
@extra_sprites.push(@tail) if @tail != nil
end
end
end
#--------------------------------------------------------------------------
# ○ 테일의 위치를 계산
#--------------------------------------------------------------------------
def get_tale_pos
character = get_character($mes_id)
x = [[character.screen_x - 16, self.x].max, self.x + self.width - 32].min
case $game_system.message_position
when 0
y = self.y + self.height - 16
else
y = self.y - 16
end
return [x, y]
end
#--------------------------------------------------------------------------
# ○ 캐릭터의 취득
# parameter : 파라미터
#--------------------------------------------------------------------------
def get_character(parameter)
# 파라미터로 분기
case parameter
when 0 # 플레이어
return $game_player
else # 특정의 이벤트
events = $game_map.events
return events == nil ? nil : events[parameter]
end
end
#--------------------------------------------------------------------------
# ○ 나무이고를 파기
#--------------------------------------------------------------------------
def del_tail
if @tail != nil
@tail.dispose
@tail = nil
end
end
#--------------------------------------------------------------------------
# ○ 스킨의 설정
#--------------------------------------------------------------------------
def set_fuki_skin
# 윈도우 스킨을 변경
if FUKI_SKIN_NAME != "" and FUKI_SKIN_NAME != $game_system.windowskin_name
@def_skin_name = $game_system.windowskin_name
$game_system.windowskin_name = FUKI_SKIN_NAME
self.windowskin = RPG::Cache.windowskin($game_system.windowskin_name)
end
# 불투명도를 변경
if self.back_opacity != FUKI_OPACITY
@def_back_opacity = self.back_opacity
self.back_opacity = FUKI_OPACITY
end
end
#--------------------------------------------------------------------------
# ○ 스킨을 되돌리는
#--------------------------------------------------------------------------
def reset_fuki_skin
# 윈도우 스킨을 되돌리는
if @def_skin_name != nil
$game_system.windowskin_name = @def_skin_name
self.windowskin = RPG::Cache.windowskin($game_system.windowskin_name)
@def_skin_name = nil
end
# 불투명도를 되돌리는
if @def_back_opacity != nil
self.back_opacity = @def_back_opacity
@def_back_opacity = nil
end
end
end
[출처]
http://para.j-mx.com/rgss/script/fuki_plus.html