#==============================================================================
# ■ 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 = 5) #별도의 게이지바그림파일을 사용할 경우 교체
@풀게이지바색 = Color.new(100, 100, 100, 255) #빨간색으로 설정되어 있습니다. 게이지바가 꽉찼을 경우 보이지 않습니다.
@현재게이지바색 = Color.new(255, 255, 255, 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
참고: 이걸 쓰면 맵이름 표시가 안됩니다 젼 맵이름 포기하고 게이지바 사용합니다 ㅎㅎ