VX 스크립트

VX에서 포그 그래픽을 사용하자

스크립트의 사용법입니다. ^^;

[강좌보기]
   <--강좌 원본??



우선 아래 스크립트를 MAIN섹션 위쪽에 추가한다.

 

class Game_Temp
  attr_accessor :fog_name
  attr_accessor :fog_opacity
  attr_accessor :fog_target_opacity
  attr_accessor :fog_blend_type
  attr_accessor :fog_zoom
  attr_accessor :fog_sx
  attr_accessor :fog_sy
  attr_accessor :fog_tone
 
  alias original_initialize initialize
  def initialize
    original_initialize
    @fog_name = ""
    @fog_tone = Tone.new ( 0, 0, 0, 0 )
    @fog_opacity = 0
    @fog_target_opacity = 80
    @fog_blend_type = 0
    @fog_zoom = 100
    @fog_sx = 1
    @fog_sy = 1
  end
 
end

class Game_Map
  attr_accessor :fog_name
  attr_accessor :fog_opacity
  attr_accessor :fog_target_opacity
  attr_accessor :fog_blend_type
  attr_accessor :fog_zoom
  attr_accessor :fog_sx
  attr_accessor :fog_sy
  attr_accessor :fog_ox
  attr_accessor :fog_oy
  attr_accessor :fog_tone
  attr_accessor :fog_start_loop
  attr_accessor :fog_eventid
  attr_accessor :fog_visible
  attr_accessor :fog
 
  alias original_initialize initialize
  def initialize
    original_initialize
    @fog = Plane.new ( @viewport1 )
    @fog_ox = 0
    @fog_oy = 0
  end
 
  alias original_setup setup
  def setup ( map_id )
    original_setup ( map_id )
    #fog_event
  end

  alias original_update update
  def update
    original_update
    if ( @fog_visible and @fog )
      fog_update
    end
  end  

  def fog_init
      @fog_name = $game_temp.fog_name
      @fog_tone = $game_temp.fog_tone
      @fog_opacity = $game_temp.fog_opacity
      @fog_target_opacity = $game_temp.fog_target_opacity
      @fog_blend_type = $game_temp.fog_blend_type
      @fog_zoom = $game_temp.fog_zoom
      @fog_sx = $game_temp.fog_sx
      @fog_sy = $game_temp.fog_sy
      @fog_tone_target = Tone.new ( 0, 0, 0, 0 )
      @fog_tone_duration = 0
      @fog_opacity_duration = 0
      @fog_opacity_target = 0
      @fog_previous_name = ""
      fog_setup
  end
 
  def fog_setup
    fog_hide
    if ( ( @fog_previous_name != @fog_name ) and ( @fog_name != "" ) )
      @fog.bitmap = Cache.picture ( @fog_name )
      @fog_name_previous = @fog_name
      @fog_opacity = @fog_target_opacity
      @fog.opacity = @fog_opacity
      @fog.blend_type = @fog_blend_type
      @fog.zoom_x = @fog_zoom / 100
      @fog.zoom_y = @fog_zoom / 100
      @fog.ox = @fog_ox
      @fog.oy = @fog_oy
      @fog.tone = @fog_tone
      @fog.z = 99
      @fog_visible = true
    else
       fog_hide
    end
  end
 
  def fog_update
    @fog_ox -= @fog_sx / 8.0
    @fog_oy -= @fog_sy / 8.0

    if ( @fog_tone_duration >= 1 )
      d = @fog_tone_duration
      target = @fog_tone_target
      @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
      @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
      @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
      @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
      @fog_tone_duration -= 1
    end
    if ( @fog_opacity_duration >= 1 )
      d = @fog_opacity_duration
      @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
      @fog_opacity_duration -= 1
    end
    @fog.opacity = @fog_opacity
    @fog.blend_type = @fog_blend_type
    @fog.zoom_x = @fog_zoom / 100
    @fog.zoom_y = @fog_zoom / 100
    @fog.ox = @fog_ox
    @fog.oy = @fog_oy
    @fog.tone = @fog_tone
  end
 
  def fog_show
    fog_init
  end
 
  def fog_hide
    @fog_visible = false
    @fog_opacity = 0
    $game_temp.fog_opacity = 0
  end
 
  def fog_clear
    @fog_visible = false
    @fog_opacity = 0
    $game_temp.fog_opacity = 0
    @fog_target_opacity = 0
    $game_temp.fog_target_opacity = 0
    fog_show
  end
   
  def scroll_up ( distance )
    if ( loop_vertical? )
      @display_y += @map.height * 256 - distance
      @display_y %= @map.height * 256
      @parallax_y -= distance
      @fog_oy -= distance / 8.0
    else
      last_y = @display_y
      @display_y = [@display_y - distance, 0].max
      @parallax_y += @display_y - last_y
      @fog_oy += ( @display_y - last_y ) / 8.0
    end
  end
 
  def scroll_down ( distance )
    if ( loop_vertical? )
      @display_y += distance
      @display_y %= @map.height * 256
      @parallax_y += distance
      @fog_oy += distance / 8.0
    else
      last_y = @display_y
      @display_y = [@display_y + distance, (height - 13) * 256].min
      @parallax_y += @display_y - last_y
      @fog_oy += ( @display_y - last_y ) / 8.0
    end
  end

  def scroll_left ( distance )
    if ( loop_horizontal? )
      @display_x += @map.width * 256 - distance
      @display_x %= @map.width * 256
      @parallax_x -= distance
      @fog_ox -= distance / 8.0
    else
       last_x = @display_x
      @display_x = [@display_x - distance, 0].max
      @parallax_x += @display_x - last_x
      @fog_ox += ( @display_x - last_x ) / 8.0
    end
  end
 
  def scroll_right ( distance )
    if ( loop_horizontal? )
      @display_x += distance
      @display_x %= @map.width * 256
      @parallax_x += distance
      @fog_ox += distance / 8.0
    else
      last_x = @display_x
      @display_x = [@display_x + distance, (width - 17) * 256].min
      @parallax_x += @display_x - last_x
      @fog_ox += ( @display_x - last_x ) / 8.0
    end
  end
end

class Scene_Map < Scene_Base
 
  alias original_start start
  def start
    original_start
    $game_map.fog_show
  end

  alias original_terminate terminate
  def terminate
    original_terminate
    $game_map.fog_hide
  end
 
end

class Game_Player < Game_Character
 
  alias original_perform_transfer perform_transfer
  def perform_transfer
    original_perform_transfer
    $game_map.fog_show
  end
 
end

 



그리고나서 포그를 표시하고픈 맵이 벤트 커맨드로  아래 스크립트 명령어를 추가한다.

 

$game_temp.fog_name = "포그그래픽 파일명"
$game_temp.fog_zoom = 300
$game_temp.fog_sx = 1
$game_temp.fog_sy = 1
$game_temp.fog_target_opacity = 80
$game_map.fog_show

 


위의 스크립트가 화면에 포그 그래픽을 표시하는 명령인데.
보시면 대략 어떤 의미지는 알거라고 생각된다.
그리고 이벤트로 포그그래픽을 표시하다보니.
자동 또는 병렬처리로 이벤트를 시작하게 하고 셀프스위치로 꺼줘야겠죠?
굳이 말하지 않아도 다 아시겟지만 ^^


포그 그래픽은 Graphics/Pictures 폴더에 넣어준다.
사용자 삽입 이미지












TAG •
Comment '16'
  • ?
    사신 2008.02.18 19:21

    저... 오류뜹니다만...^^;;

  • ?
    salp2113 2008.08.12 15:12
    오 좋은데요 어두운 맵에 쓰면 멋져요
  • ?
    eldkfnrk 2008.08.13 19:00
    이벤트를 한후 다른곳으로 장소이동해도 계속포그그래픽이 남는데 어떻게해야 되요?
  • ?
    niceGame 2008.08.24 01:18
    아 인제 포그 사용법을 알게됬어요 ㅎㅎ
    아무렇게나 하다보니..
  • ?
    niceGame 2008.08.24 02:10
    아방스님
    포그 이벤트를 사용할때 병렬 처리로 스크립트를 써서 사용을 했는데요..
    아무리 셀프스위치로 이벤삭제.. 등 스위치등을 꺼도..
    eldkfnrk님 처럼 다른맵에도 포그 이벤트가 작용하는데
    어떻게 해야해요?
  • ?
    근성부족 2008.09.28 20:34
    끌때어떻게 꺼야할지 모르겠네요...
  • ?
    근성부족 2008.09.28 20:39
    끝내는 방법_

    $game_temp.fog_target_opacity = 80
    부분 숫자를 0으로 바꿔주시거나
    $game_map.fog_show
    이부분에서 show 를 hide로 바꿔주세요
  • profile
    카와이 2009.01.13 13:52
    아.. 저거 포토샵에서 필터가서 구름모양하면 되는거 ㄲㄲ
  • ?
    뉴공 2009.11.15 23:40

    이 스크립트만 적용하면 세이브시 자꾸 오류가 발생하네요....

  • ?
    1000℃ 복숭아 2010.02.17 18:24

    오.. 감사합니다.

  • ?
    소울◎이터 2010.12.28 20:33

    SyntaxError occurred while running script

    라고 뜨는데요

  • ?
    뾰롱뾰롱 2011.02.24 17:10

    같은 장소에서 바로 안개효과를 꺼도, 일단 불러진 안개효과가 바로 사라지지는 않는군요.


    장소이동을 하거나, 아니면 잠시 스테이츠창으로 넘어갔다 온다던지 하는 식으로

    화면 전환을 해줘야만 하는군요.

  • ?
    뾰롱뾰롱 2011.02.25 12:29

    아.. 다른 스크립트들이랑 충돌하는지 세이브 오류가 뜨네요

  • ?
    화염 2011.05.05 21:21

    좋은 자료 ㄳ

  • ?
    2K가2003 2011.07.24 13:01

    음... 이벤트 커멘드에 뭐에다 붙여넣기를 해야할지 모르겟네용 ;

  • profile
    왕왕왕 2012.08.08 14:16
    SyntaxError occurred while running script 라고 드는데 ㄷㄷ

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 3 습작 2012.12.24 5398
130 기타 게임 해상도를 조절 하는 스크립트 19 아방스 2008.01.21 4780
» 기타 VX에서 포그 그래픽을 사용하자 16 아방스 2008.01.31 3895
128 기타 텍스트 파일 읽어 오는 스크립트 11 아방스 2008.03.04 2877
127 기타 간단한 스크립트의 사용법 6 아방스 2008.03.09 4552
126 기타 rpg vx 렉 줄이는 스크립트 34 아방스 2008.03.09 4813
125 기타 2 Players Engine 11 레이니케 2008.03.28 2294
124 기타 [VX] Anti-Lag 1.2c by Anaryu[예제첨부] 3 file WMN 2008.04.06 2371
123 기타 빛 이펙트 71 file DEVIL<Li Patanis Roni Kraudus> 2008.06.06 5860
122 기타 [KGC]한계돌파 9 방콕족의생활 2008.06.13 3599
121 기타 RPG 2000이나 RPG 2003처럼 전체화면으로 나오게 하는 스크립트(대박) 21 Man... 2008.10.28 4821
120 기타 TagNote v2.0 5 Man... 2008.10.28 1996
119 기타 Crissaegrim Farm BETA 1.0.0 10 Man... 2008.11.22 3093
118 기타 디스크 체인져 VX!! (업데이트..) 30 file Tofuman 2008.12.02 3168
117 기타 이벤트 위치 저장 스크립트 10 Tofuman 2008.12.11 2096
116 기타 책 읽기 스크립트. 19 허걱 2009.01.31 4490
115 기타 Staff Roll 13 file 허걱 2009.01.31 3523
114 기타 VX서비스팩1 6 훈덕 2009.02.03 2806
113 기타 작은 게이지바 표시 스크립트 44 file 허걱 2009.02.05 5979
112 기타 Base Project 15 아방스 2009.02.05 3063
111 기타 라이트 이펙트 스크립트 12 file 아방스 2009.02.07 3262
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7