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 기타 (이거 정말 좋군요) 말이나 용을 탈수있게 하는 스크립트. 31 file 아방스가 짱 2010.02.28 4261
129 기타 (좀 이상한 or 쓸모없을 듯 한)화면상에 몬스터와 만나려면 몇걸음 남았는지 표시하는 스크립트! 2 루시페르 2009.06.06 2318
128 기타 078656577er님의 스크립트를 개조한, 사격용 스크립트 1 file 타코 2012.03.16 2519
127 기타 2 Players Engine 11 레이니케 2008.03.28 2294
126 기타 <중수이상>RPG VX의 대표적 참조값 6 까까까 2009.05.31 3236
125 기타 ActivateEvents 8 file EuclidE 2010.09.18 1692
124 기타 Base Project 15 아방스 2009.02.05 3063
123 기타 Crissaegrim Farm BETA 1.0.0 10 Man... 2008.11.22 3094
122 기타 Crissaegrim 농장시스템 한글화 28 file 도심 2009.12.22 3606
121 기타 Drop Options 1.1 by Modern Algebra 4 Alkaid 2010.09.16 1509
120 기타 Etude87_GAGA_Chat 4 습작 2012.06.14 1916
119 기타 Etude87_Hangul_utf8_List 습작 2012.06.04 1665
118 기타 Fullscreen++ by Zeus81 (VX/VXA) 2 Alkaid 2012.09.01 2230
117 기타 Gamepad Extender VX 습작 2015.01.02 672
116 기타 HG_SHOOT_ANIMATION 4 file 허걱 2010.11.17 2596
115 기타 IEX - Script Library 1.0 by IceDragon 8 Alkaid 2011.01.11 2619
114 기타 KGC counter 스크립트. 반격기 추가스크립트입니다. 4 우켈킁 2011.03.31 1812
113 기타 KGC 리버스 데미지! 28 루시페르 2009.04.13 2979
112 기타 KGC 스크립트 라이브러리 7 훈덕 2009.05.31 2611
111 기타 KGC파라미터배분 2 (VX전용) 20 file 카르와푸딩의아틀리에 2009.07.21 3269
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7