중간에 보면 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
>
>그리고 빈게이지그림파일명이라고 된 곳에 게이지가 비어있을 때의 그림의 파일명을, 현재게이지바그림파일명이라고 된 곳에 게이지가 차있을 때의 그림의 파일명을 넣어주세요.
>
>
>
>이걸로 만들었거든요?? 근데.. 위치를 바꿀수 없을까요..?
>오른쪽아래로 내리고 싶은데.. 알려주세요
여기서 앞에 두개를 조정해보세요....
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
>
>그리고 빈게이지그림파일명이라고 된 곳에 게이지가 비어있을 때의 그림의 파일명을, 현재게이지바그림파일명이라고 된 곳에 게이지가 차있을 때의 그림의 파일명을 넣어주세요.
>
>
>
>이걸로 만들었거든요?? 근데.. 위치를 바꿀수 없을까요..?
>오른쪽아래로 내리고 싶은데.. 알려주세요