게이지바 위치

by 내마음블루 posted Jun 28, 2005
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
중간에 보면 super(0, 0, 204, 224) 라는 것이 있습니다.
여기서 앞에 두개를 조정해보세요....
x좌표와 y좌표이니 알아서 적정한 위치로 조정이 가능할꺼 같네요..
어딘지 정확한 위치가 찾기 힘드시면 Ctrl+F 아시죠??
그럼 수고하세요~


>캐릭터의 HP, SP, 그리고 경험치를 자동적으로 맵에서 게이지바로 표시하게 해주는 스크립트입니다. 액알 제작을 조금이나마 더 편하게 할 수 있게 되지요. 캐릭터의 이름, 레벨, 직업도 맵에서 같이 표시됩니다.
>
>이 스크립트의 가치는, 기존의 이벤트 커맨드를 사용해서 게이지를 만들어줘야 했던 번거로움을 덜어준다는 것입니다.
>
>
>파티원이 여러명일 경우 게임에서 L, R (Q, W)키를 누르면 어느 캐릭터의 게이지를 표시할지 바꿔줍니다.
>Main 위에 찔러넣으면 곧바로 적용됩니다.
>자작그림 파일을 사용할 경우 맨 끝의 주의사항을 읽으세요.
>
>
>리플 달아줘염~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>이건 그리고 메뉴에서 안겹치지만...렉 걸리는 거랑 속도는 좋은데...메뉴에서 겹치는것을
>비교하면서 만지다 보니 안겹치게 됐습니다..속도두 빠르고...ㅋㅋㅋ이건 제가 만든것임...
>
>
>#==============================================================================
># ■ Game_Actor
>#------------------------------------------------------------------------------
>#  엑터를 취급하는 클래스입니다. 이 클래스는 Game_Actors 클래스 ($game_actors)
># 의 내부에서 사용되어 Game_Party 클래스 ($game_party)로부터도 참조됩니다.
>#==============================================================================
>
>#==============================================================================
># ■ Window_Base
>#------------------------------------------------------------------------------
>#  게임중의 모든 윈도우의 슈퍼 클래스입니다.
>#==============================================================================
>
>class Window_Base < Window  
>#--------------------------------------------------------------------------
>  # ● 게이지바의 묘화
>  #     x    : 묘화처 X 좌표
>  #     y    : 묘화처 Y 좌표
>  #--------------------------------------------------------------------------  
>  def 게이지바그리기(현재포인트, 최고포인트, x, y, width, height = 30) #별도의 게이지바그림파일을 사용할 경우 교체
>    @풀게이지바색 = Color.new(255, 0, 0, 255) #빨간색으로 설정되어 있습니다. 게이지바가 꽉찼을 경우 보이지 않습니다.
>    @현재게이지바색 = Color.new(0, 100, 100, 255) #진한초록으로 설정되어 있습니다.
>    self.contents.fill_rect(x, y, width, height, @풀게이지바색)
>    self.contents.fill_rect(x, y, (width * 현재포인트) / 최고포인트, height, @현재게이지바색)
>  end
>end  
>class Game_Actor < Game_Battler
>  attr_reader   :exp_list
>end
>#==============================================================================
># ■ Window_Map_Name
>#------------------------------------------------------------------------------
>#  マップ名を表示するウィンドウです。
>#==============================================================================
>class Window_Map게이지 < Window_Base
>  attr_accessor :actor
>  #--------------------------------------------------------------------------
>  # ● オブジェクト初期
>  #--------------------------------------------------------------------------
>  def initialize(actor)
>    super(0, 0, 204, 224)
>    self.contents = Bitmap.new(width - 32, height - 32)
>    @actor = actor
>    @showing_time = 0
>  end
>#게이지 표시 화면
>  def 게이지
>    self.contents.clear
>    게이지바그리기(@actor.hp, @actor.maxhp, 0, 64, 172)
>    게이지바그리기(@actor.sp, @actor.maxsp, 0, 96, 172)    
>    #@actor.exp - @actor.exp_list[@actor.level] 현재렙 경험치 초기치에서 현재 경험치를 뺀값.
>    #즉, 게이지에서 표시되는 값이다.
>    #다음 렙의 경험치를 구한다.
>    #@actor.next_rest_exp_s.to_i+@actor.exp
>    #다음 렙의 경험치에서 현재렙 경험치 초기치를 뺀다.
>     #@actor.next_rest_exp_s.to_i+@actor.exp- @actor.exp_list[@actor.level]
>    게이지바그리기(@actor.exp - @actor.exp_list[@actor.level], @actor.next_rest_exp_s.to_i+@actor.exp - @actor.exp_list[@actor.level], 0, 128, 172)
>    draw_actor_class(@actor, 32, 32)
>    draw_actor_level(@actor, 96, 32)
>    draw_actor_name(@actor, 4, 0)
>    draw_actor_hp(@actor, 0, 64, 172)
>    draw_actor_sp(@actor, 0, 96, 172)
>    draw_actor_exp(@actor, 0, 128)
>  end
>end
>
>#==============================================================================
># ■ Scene_Map
>#==============================================================================
>class Scene_Map
>  #--------------------------------------------------------------------------
>  # ● メイン?理
>  #--------------------------------------------------------------------------
>alias thdo_main main
>  alias thdo_initialize initialize
>  def initialize
>    @actor_index = 0
>    thdo_initialize
>  end
>  def main
>    # 地名ウィンドウを作成
>    @actor = $game_party.actors[@actor_index]
>    @map게이지window = Window_Map게이지.new(@actor)
>    @map게이지window.opacity = 0
>    # ?す
>    thdo_main
>    # 地名ウィンドウを解放
>    @map게이지window.dispose
>  end
>  #--------------------------------------------------------------------------
>  # ● 프레임 갱신
>  #--------------------------------------------------------------------------
>  def update
>    # 루프
>    loop do
>      # 맵, interpreter, 플레이어의 순서에 갱신
>      # (이 갱신 순서는, 이벤트를 실행하는 조건이 채워지고 있을 때
>      #  플레이어에 일순간 이동할 기회를 주지 않는등의 이유로써 중요)
>      $game_map.update
>      $game_system.map_interpreter.update
>      $game_player.update
>      # 시스템 (타이머), 화면을 갱신
>      $game_system.update
>      $game_screen.update
>      # 플레이어의 장소 이동중이 아니면 루프를 중단
>      unless $game_temp.player_transferring
>        break
>      end
>      # 장소 이동을 실행
>      transfer_player
>      # 트란지션 처리중의 경우, 루프를 중단
>      if $game_temp.transition_processing
>        break
>      end
>    end
>    # 스프라이트 세트를 갱신
>    @spriteset.update
>    # 메세지 윈도우를 갱신
>    @message_window.update
>    # 게임 오버의 경우
>    if $game_temp.gameover
>      # 게임 오버 화면으로 전환하고
>      $scene = Scene_Gameover.new
>      return
>    end
>    # 타이틀 화면에 되돌리는 경우
>    if $game_temp.to_title
>      # 타이틀 화면으로 전환하고
>      $scene = Scene_Title.new
>      return
>    end
>    # 트란지션 처리중의 경우
>    if $game_temp.transition_processing
>      # 트란지션 처리중 플래그를 클리어
>      $game_temp.transition_processing = false
>      # 트란지션 실행
>      if $game_temp.transition_name == ""
>        Graphics.transition(20)
>      else
>        Graphics.transition(40, "Graphics/Transitions/" +
>          $game_temp.transition_name)
>      end
>    end
>    # 메세지 윈도우 표시중의 경우
>    if $game_temp.message_window_showing
>      return
>    end
>    # 엔카운트카운트가 0 으로, 엔카운트리스트가 하늘이 아닌 경우
>    if $game_player.encounter_count == 0 and $game_map.encounter_list != []
>      # 이벤트 실행중이나 엔카운트 금지중이 아니면
>      unless $game_system.map_interpreter.running?  or
>             $game_system.encounter_disabled
>        # 배틀 호출 플래그를 세트
>        $game_temp.battle_calling = true
>        $game_temp.battle_can_escape = true
>        $game_temp.battle_can_lose = false
>        $game_temp.battle_proc = nil
>        # 무리를 결정
>        n = rand($game_map.encounter_list.size)
>        $game_temp.battle_troop_id = $game_map.encounter_list[n]
>      end
>    end
>        
>    #다음 엑터에게
>    if Input.trigger? (Input::R)
>            unless $game_system.map_interpreter.running?  or
>             $game_system.menu_disabled
>      @actor_index += 1
>      @actor_index %= $game_party.actors.size
>      @map게이지window.actor = $game_party.actors[@actor_index]
>      @map게이지window.게이지
>      end
>    end
>    #전의 엑터에게
>    if Input.trigger? (Input::L)
>            unless $game_system.map_interpreter.running?  or
>             $game_system.menu_disabled
>      @actor_index += $game_party.actors.size - 1
>      @actor_index %= $game_party.actors.size
>      @map게이지window.actor = $game_party.actors[@actor_index]
>      @map게이지window.게이지
>      end
>    end
>#THDO스크립트 종료
>    # B 버튼이 밀렸을 경우
>    if Input.trigger? (Input::B)
>      # 이벤트 실행중이나 메뉴 금지중이 아니면
>      unless $game_system.map_interpreter.running?  or
>             $game_system.menu_disabled
>        # 메뉴 호출 플래그와 SE 연주 플래그를 세트
>        $game_temp.menu_calling = true
>        $game_temp.menu_beep = true
>      end
>    end
>    # 디버그 모드가 ON 또한 F9 키가 밀리고 있는 경우
>    if $DEBUG and Input.press? (Input::F9)
>      # 디버그 호출 플래그를 세트
>      $game_temp.debug_calling = true
>    end
>    # 플레이어의 이동중이 아닌 경우
>    unless $game_player.moving?
>      @map게이지window.게이지#THDO스크립트
>      # 각종 화면의 호출을 실행
>      if $game_temp.battle_calling
>        call_battle
>      elsif $game_temp.shop_calling
>        call_shop
>      elsif $game_temp.name_calling
>        call_name
>      elsif $game_temp.menu_calling
>        call_menu
>      elsif $game_temp.save_calling
>        call_save
>      elsif $game_temp.debug_calling
>        call_debug
>      end
>    end
>  end
>end
>
>
>
>주의 !!!!
>위 스크립트는 게이지바의 그림파일 없이 사용합니다. 별도로 게이지바 그림을 사용할 경우 위의 갈색으로 쓰여진 "게이지바그리기" 메소드를 아래 메소드로 교체해주세요.
>
>  def 게이지바그리기(현재포인트, 최고포인트, x, y, width, height = 30) #따로 게이지 그림 파일을 사용할 경우
>    @빈게이지바그림 = RPG::Cache.picture("빈게이지그림파일명")
>    @현재게이지바그림 = RPG::Cache.picture("게이지바그림파일명")
>    @빈게이지바 = Rect.new(x, y, width, height)
>    @빈게이지바 = self.contents.stretch_blt(@빈게이지바, @빈게이지바그림,  @빈게이지바그림.rect)
>    @현재게이지바 = Rect.new(x, y, (width * 현재포인트) / 최고포인트, height)
>    @현재게이지바 = self.contents.stretch_blt(@현재게이지바, @현재게이지바그림,  @현재게이지바그림.rect)
>  end
>
>그리고 빈게이지그림파일명이라고 된 곳에 게이지가 비어있을 때의 그림의 파일명을, 현재게이지바그림파일명이라고 된 곳에 게이지가 차있을 때의 그림의 파일명을 넣어주세요.
>
>
>
>이걸로 만들었거든요?? 근데.. 위치를 바꿀수 없을까요..?
>오른쪽아래로 내리고 싶은데.. 알려주세요