#==============================================================================
# ■ Sprite_Gauge
#------------------------------------------------------------------------------
# 게이지를 스프아리트 합니다.
#
#==============================================================================
class Sprite_Gauge < RPG::Sprite
#--------------------------------------------------------------------------
# ● 공개 인스턴스 변수
#--------------------------------------------------------------------------
attr_accessor :battler # 버틀러
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
# viewport : 뷰포트
# battler : 버틀러 (Game_Battler)
#--------------------------------------------------------------------------
def initialize(viewport, battler = nil)
super(viewport)
@battler = battler
@battler_visible = false
end
#--------------------------------------------------------------------------
# ● 해방
#--------------------------------------------------------------------------
def dispose
if self.bitmap != nil
self.bitmap.dispose
end
super
end
#--------------------------------------------------------------------------
# ● 프레임 갱신
#--------------------------------------------------------------------------
def update
super
# 버틀러가 nil 의 경우
if @battler == nil
self.bitmap = nil
loop_animation(nil)
return
end
#대상 몬스터의 높이를 구함
@battler_name = @battler.battler_name
@battler_hue = @battler.battler_hue
battler_height = RPG::Cache.battler(@battler_name, @battler_hue).height
#대상 몬스터의 최대 Hp와 현재 HP를 구함
@battler_maxHP = @battler.base_maxhp
@battler_HP = @battler.hp
#게이지바 그림 로드
self.bitmap = RPG::Cache.battler("게이지.png", 0)
@width = bitmap.width
@height = bitmap.height
self.src_rect = Rect.new( 0, 0, @battler_HP * @width / @battler_maxHP, 20)
self.ox = @width / 2
self.oy = @height
# 전투 불능 또는 숨어 상태라면 불투명도를 0 으로 한다
if @battler.dead? or @battler.hidden
self.opacity = 0
end
# 불가시의 경우
unless @battler_visible
# 출현
if not @battler.hidden and not @battler.dead? and
(@battler.damage == nil or @battler.damage_pop)
appear
@battler_visible = true
end
end
# 가시의 경우
if @battler_visible
# 도주
if @battler.hidden
$game_system.se_play($data_system.escape_se)
escape
@battler_visible = false
end
# 코라프스
if @battler.damage == nil and @battler.dead?
if @battler.is_a?(Game_Enemy)
$game_system.se_play($data_system.enemy_collapse_se)
else
$game_system.se_play($data_system.actor_collapse_se)
end
collapse
@battler_visible = false
end
end
battler_height -= 15 if battler_height > 250
# 스프라이트의 좌표를 설정
self.x = @battler.screen_x
self.y = @battler.screen_y - battler_height - 10
self.z = @battler.screen_z
end
end
#찔러넣기 스크립트로 변환하였습니다.
#이제부터는 Spriteset_Battle 클래스에 #sssssssssssssssss와 #eeeeeeeeeeeeee사이것을 추가 수정해주시면 됩니다.
#==============================================================================
# ■ Spriteset_Battle
#------------------------------------------------------------------------------
# 배틀 화면의 스프라이트를 정리한 클래스입니다.이 클래스는 Scene_Battle 곳간
# 스의 내부에서 사용됩니다.
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# ● 공개 인스턴스 변수
#--------------------------------------------------------------------------
attr_reader :viewport1 # 에너미측의 뷰포트
attr_reader :viewport2 # 액터측의 뷰포트
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
def initialize
# 뷰포트를 작성
@viewport1 = Viewport.new(0, 0, 640, 320)
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport4 = Viewport.new(0, 0, 640, 480)
@viewport2.z = 101
@viewport3.z = 200
@viewport4.z = 5000
# 배틀 백 스프라이트를 작성
@battleback_sprite = Sprite.new(@viewport1)
#sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
# 에너미 게이지바 스프라이트를 작성
@enemy_gauge_sprites = []
#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
# 에너미 스프라이트를 작성
@enemy_sprites = []
for enemy in $game_troop.enemies.reverse
@enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
#sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
@enemy_gauge_sprites.push(Sprite_Gauge.new(@viewport1, enemy))
#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
end
# 액터 스프라이트를 작성
@actor_sprites = []
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
# 기후를 작성
@weather = RPG::Weather.new(@viewport1)
# 픽쳐 스프라이트를 작성
@picture_sprites = []
for i in 51..100
@picture_sprites.push(Sprite_Picture.new(@viewport3,
$game_screen.pictures[i]))
end
# 타이머 스프라이트를 작성
@timer_sprite = Sprite_Timer.new
# 프레임 갱신
update
end
#--------------------------------------------------------------------------
# ● 해방
#--------------------------------------------------------------------------
def dispose
# 배틀 백 비트 맵이 존재하고 있으면 해방
if @battleback_sprite.bitmap != nil
@battleback_sprite.bitmap.dispose
end
# 배틀 백 스프라이트를 해방
@battleback_sprite.dispose
#ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
# 에너미 스프라이트, 액터 스프라이트를 해방
for sprite in @enemy_sprites + @enemy_gauge_sprites + @actor_sprites
sprite.dispose
end
#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
# 기후를 해방
@weather.dispose
# 픽쳐 스프라이트를 해방
for sprite in @picture_sprites
sprite.dispose
end
# 타이머 스프라이트를 해방
@timer_sprite.dispose
# 뷰포트를 해방
@viewport1.dispose
@viewport2.dispose
@viewport3.dispose
@viewport4.dispose
end
#--------------------------------------------------------------------------
# ● 효과 표시중 판정
#--------------------------------------------------------------------------
def effect?
#sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
# 효과가 하나에서도 표시중이라면 true 를 돌려준다
for sprite in @enemy_sprites + @enemy_gauge_sprites + @actor_sprites
return true if sprite.effect?
end
#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
return false
end
#--------------------------------------------------------------------------
# ● 프레임 갱신
#--------------------------------------------------------------------------
def update
# 액터 스프라이트의 내용을 갱신 (액터의 교체에 대응)
@actor_sprites[0].battler = $game_party.actors[0]
@actor_sprites[1].battler = $game_party.actors[1]
@actor_sprites[2].battler = $game_party.actors[2]
@actor_sprites[3].battler = $game_party.actors[3]
# 배틀 가방의 파일명이 현재의 것과 다른 경우
if @battleback_name != $game_temp.battleback_name
@battleback_name = $game_temp.battleback_name
if @battleback_sprite.bitmap != nil
@battleback_sprite.bitmap.dispose
end
@battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
@battleback_sprite.src_rect.set(0, 0, 640, 320)
end
#ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
# 버틀러 스프라이트를 갱신
for sprite in @enemy_sprites + @enemy_gauge_sprites + @actor_sprites
sprite.update
end
#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
# 기후 그래픽을 갱신
@weather.type = $game_screen.weather_type
@weather.max = $game_screen.weather_max
@weather.update
# 픽쳐 스프라이트를 갱신
for sprite in @picture_sprites
sprite.update
end
# 타이머 스프라이트를 갱신
@timer_sprite.update
# 화면의 색조와 시이크 위치를 설정
@viewport1.tone = $game_screen.tone
@viewport1.ox = $game_screen.shake
# 화면의 플래시색을 설정
@viewport4.color = $game_screen.flash_color
# 뷰포트를 갱신
@viewport1.update
@viewport2.update
@viewport4.update
end
end
파일을 Graphics->Battlers에 넣으세요