#==============================================================================
# + Taankentai 사이드뷰 배틀 시스템을 위한 더 많은 행동 순서 명령어
# v1.0
#------------------------------------------------------------------------------
# By Mr. Bubble
# 한글번역-비극ㆍ
# 아방스 www.avangs.info/zbex/
#==============================================================================
# ++ Installation
# 사이드뷰와 ATB 스크립트 아래에 놓아주세요.
#==============================================================================
module N01
EVENT_COMMANDS_FOR_SEQUENCES = {
#--------------------------------------------------------------------------
# ++ 그림 보여주기
#--------------------------------------------------------------------------
# 전투중 여러개의 사진을 보여준다. 20개 제한.
#
# 사진은 이벤트 커멘드로 같은 방법을 통해 활용된다.
# 이것은 의미한다.사진은 애니메이션 해시 또한 적절한 VX의 이벤트를 통해
# 명령뿐만 제어할 수있는 아래에 정의된을 통해 표시.
# Type - 항상 "show_pic"
# ID - 픽쳐의 수를 정한다. 픽쳐의 번호가 클수록 앞에 나온다. (1~20)
# File - Graphics/Pictures 폴더에서 파일이름으로 그림을 가져온다.
# Origin -사진을 화면의 좌표에 표시한다.
# [0=왼쪽 위 기준]
# [1=중앙 기준]
# X - 그래픽이 표시되는 X좌표
# Y - 그래픽이 표시되는 Y좌표
# Zoom X - 가로 줌 비율 (퍼센트)
# Zoom Y - 세로 줌 비율 (퍼센트)
# Opacity - 그려진 픽쳐의 투명도(0~255). [0=완전한 투명]
# Blend - 픽쳐가 그려질때 소재를 혼합한다..
# [0=보통] [1=추가] [2=하위]
# ANIME Key Type ID File Orig X Y ZX ZY Opac Blend
"SHOW_PICTURE_1" => ["show_pic", 1, "Actor2-3", 1, 272, 208, 100, 100, 255, 0],
#--------------------------------------------------------------------------
# ++ 그림 움직이기
#--------------------------------------------------------------------------
# 그림의 위치, 줌, 비율 등을 바꾼다.
#
# Type - 항상 "move_pic"
# ID - 화면에 표시될 그림의 숫자. 픽쳐의 번호가 클수록 앞에 나온다. (1~20)
# Origin -사진을 화면의 좌표에 표시한다.
# [0=왼쪽 위 기준]
# [1=중앙 기준]
# X - 그래픽이 표시되는 X좌표
# Y - 그래픽이 표시되는 Y좌표
# Zoom X - 가로 줌 비율 (퍼센트)
# Zoom Y - 세로 줌 비율 (퍼센트)
# Opacity - 그려진 픽쳐의 투명도(0~255). [0=완전한 투명]
# Blend - 픽쳐가 그려질때 소재를 혼합한다..
# [0=보통] [1=추가] [2=하위]
# Time - 설정 시간이 그림의 움직임이 완료 1 / 60 초 때까지. 단위.
# ANIME Key Type ID Orig X Y ZX ZY Opac Blend Time
"MOVE_PICTURE_1" => ["move_pic", 1, 1, -125, 208, 100, 100, 255, 1, 60],
#--------------------------------------------------------------------------
# ++그림 회전하기
#--------------------------------------------------------------------------
# 그림을 회전한다.
#
# Type - 항상 "rotate_pic"
# ID - 회전하는 횟수. (1~20)
# Speed - 그림의 속도 조정.(양수:반시계방향, 음수:시계방향)
# ANIME Key Type ID Speed
"ROTATE_PICTURE_1(CCW)" => ["rotate_pic", 1, 5],
"ROTATE_PICTURE_1(CW)" => ["rotate_pic", 1, -5],
#--------------------------------------------------------------------------
# ++ 그림 색조 변경
#--------------------------------------------------------------------------
# 표시되는 그림의 색상 톤을 바꾼다.
#
# Type - 항상 "rotate_pic"
# ID - 색조가 변경될 그림의 ID. (1~20)
# Red Tone - 빨강색 톤. (0~255)
# Green Tone - 초록색 톤(0~255)
# Blue Tone - 파랑색 톤 (0~255)
# Grayscale - 회색톤. (0~255)
# Time - 1/60초 간격으로 색상톤 지정.
# ANIME Key Type ID Red Grn Blue Gray Time
"TINT_PICTURE_1_RED" => ["tint_pic", 1, 255, 0, 0, 100, 45],
"TINT_PICTURE_1_GREEN" => ["tint_pic", 1, 0, 255, 0, 100, 45],
"TINT_PICTURE_1_BLUE" => ["tint_pic", 1, 0, 0, 255, 100, 45],
"TINT_PICTURE_1_GRAY" => ["tint_pic", 1, 0, 0, 0, 255, 45],
#--------------------------------------------------------------------------
# ++ 그림 지우기
#--------------------------------------------------------------------------
# 그림을 지운다.
#
# Type - 항상 "erase_pic"
# ID - 지우고 싶은 그림의 번호. (1~20)
# ANIME Key Type ID
"ERASE_PICTURE_1" => ["erase_pic", 1],
#--------------------------------------------------------------------------
# ++ 스크린 플래시
#--------------------------------------------------------------------------
# 일시적으로 한색이 화면에 나온뒤, 점차적으로 원래 색으로 되돌아간다.
# 플래시나 반짝임 효과로 좋다..
# Type - 항상 "flash"
# Red Tone - 빨강색 톤. (0~255)
# Green Tone - 초록색 톤(0~255)
# Blue Tone - 파랑색 톤 (0~255)
# Strength - 플래시효과 색의 강렬함.
# 높은숫자는, 더 불투명한 플래시. (0~255)
# Time - 1/60초로 화면의 플래시 타임을 설정한다. 증가.
# ANIME Key Type Red Green Blue Strength Time
"RED_FLASH" => ["flash", 255, 0, 0, 64, 6],
#--------------------------------------------------------------------------
# ++ 화면의 색조변경
#--------------------------------------------------------------------------
# 화면의 색조를 바꾼다.
# 윈도우나 픽쳐에는 영향을 끼치치 않는다.
# 액션 명령 끝에 정상으로 되돌릴수 없다.
#
# Type - 항상 "tint_screen"
# Red Tone - 빨강색 톤. (0~255)
# Green Tone - 초록색 톤. (0~255)
# Blue Tone - 파랑색 톤. (0~255)
# Time - 1 / 60시간 간격으로 색상 톤 변경(?)
# ANIME Key Type Red Grn Blue Gray Time
"TINT_SCREEN_RED" => ["tint_screen", 200, 0, 0, 100, 45],
"TINT_SCREEN_BLUE" => ["tint_screen", 0, 0, 200, 100, 45],
"NORMAL_SCREEN_COLOR" => ["tint_screen", 0, 0, 0, 0, 30],
#--------------------------------------------------------------------------
# ++ 화면 쉐이크
#--------------------------------------------------------------------------
# 화면 전체를 오른쪽, 왼쪽으로 흔든다.
#
# Type - 항상 "shake"
# Power - 강도. (1~10)
# Speed - 속도 . (1~10)
# Time - 1/60초로 쉐이크 시간 설정 증가.
# ANIME Key Type Power Speed Time
"SHAKE_SCREEN" => ["shake", 10, 10, 20],
#--------------------------------------------------------------------------
# ++ 특별한 명령어
#--------------------------------------------------------------------------
# "CLEAR_ALL_PICTURES" - 모든 그림을 삭제한다.
# "FADEOUT" - 이벤트 의 페이드 아웃의 화면과 동일.
# "FADEIN" - 이벤트 의 페이드 인의 화면과 동일.
#==========================================================================
#--------------------------------------------------------------------------
# 네가 무슨 일을하는지 알지 못한다면이 시점 아래의 라인을 수정하지 마십시오.
#--------------------------------------------------------------------------
#==========================================================================
# 모든 그림 삭제
"CLEAR_ALL_PICTURES" => ["script", "
for i in 1..20
$game_troop.screen.pictures[i].erase
end
"],
# 페이드 아웃 스크린
# time - 1/60초의 페이드 아웃 시간. 증가.
"FADEOUT" => ["script", "
time = 60
Graphics.fadeout(time)
"],
# 페이드 인 스크린
# time - 1/60초의 페이드 인 시간. 증가.
"FADEIN" => ["script", "
time = 60
Graphics.fadein(time)
"],
}
ANIME.merge!(EVENT_COMMANDS_FOR_SEQUENCES)
end
class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# * Show Picture
#--------------------------------------------------------------------------
def show_picture
id = @active_action[1]
name = @active_action[2]
origin = @active_action[3]
x = @active_action[4]
y = @active_action[5]
zoom_x = @active_action[6]
zoom_y = @active_action[7]
opacity = @active_action[8]
blend_type = @active_action[9]
# Show Picture function
$game_troop.screen.pictures[id].show(name, origin, x, y,zoom_x, zoom_y,
opacity, blend_type)
end
#--------------------------------------------------------------------------
# * Move Picture
#--------------------------------------------------------------------------
def move_picture
id = @active_action[1]
origin = @active_action[2]
x = @active_action[3]
y = @active_action[4]
zoom_x = @active_action[5]
zoom_y = @active_action[6]
opacity = @active_action[7]
blend_type = @active_action[8]
duration = @active_action[9]
# Move picture function
$game_troop.screen.pictures[id].move(origin, x, y, zoom_x, zoom_y, opacity,
blend_type, duration)
end
#--------------------------------------------------------------------------
# * Erase Picture
#--------------------------------------------------------------------------
def erase_picture
$game_troop.screen.pictures[@active_action[1]].erase
end
#--------------------------------------------------------------------------
# * Rotate Picture
#--------------------------------------------------------------------------
def rotate_picture
id = @active_action[1]
rotate_value = @active_action[2]
# Rotate Picture function
$game_troop.screen.pictures[id].rotate(rotate_value)
end
#--------------------------------------------------------------------------
# * Tint Picture
#--------------------------------------------------------------------------
def tint_picture
id = @active_action[1]
red = @active_action[2]
green = @active_action[3]
blue = @active_action[4]
gray = @active_action[5]
duration = @active_action[6]
# Tint Picture function
$game_troop.screen.pictures[id].start_tone_change(Tone.new(
red, green, blue, gray), duration)
end
#--------------------------------------------------------------------------
# * Set Weather Effects
#--------------------------------------------------------------------------
def set_weather_effects
type = @active_action[1]
power = @active_action[2]
time = @active_action[3]
# Set weather function
$game_troop.screen.weather(type, power, time)
end
#--------------------------------------------------------------------------
# * Flash Screen
#--------------------------------------------------------------------------
def flash_screen
red = @active_action[1]
green = @active_action[2]
blue = @active_action[3]
strength = @active_action[4]
time = @active_action[5]
# Flash Screen function
$game_troop.screen.start_flash(Color.new(red,green, blue, strength), time)
end
#--------------------------------------------------------------------------
# * Tint Screen
#--------------------------------------------------------------------------
def tint_screen
red = @active_action[1]
green = @active_action[2]
blue = @active_action[3]
gray = @active_action[4]
time = @active_action[5]
# Tint Screen function
$game_troop.screen.start_tone_change(Tone.new(red, green, blue, gray), time)
end
#--------------------------------------------------------------------------
# * Screen Shake
#--------------------------------------------------------------------------
def screen_shake
power = @active_action[1]
speed = @active_action[2]
duration = @active_action[3]
# Shake Screen function
$game_troop.screen.start_shake(power, speed, duration)
end
#--------------------------------------------------------------------------
# ● Action Processing
#--------------------------------------------------------------------------
alias event_commands_for_sbs_addon_action action
def action
return if @active_action == nil
action = @active_action[0]
# 화면 쉐이크 효과
return screen_shake if action == "shake"
# 이벤트의 그림 보여주기
return show_picture if action == "show_pic"
# 이벤트의 그림 움직이기
return move_picture if action == "move_pic"
# 이벤트의 그림 지우기
return erase_picture if action == "erase_pic"
# 이벤트의 그림 회전하기
return rotate_picture if action == "rotate_pic"
# 이벤트의 그림 색조변경
return tint_picture if action == "tint_pic"
# 날씨설정
return set_weather_effects if action == "weather"
# 화면 플래시 효과
return flash_screen if action == "flash"
# 화면의 색조변경
return tint_screen if action == "tint_screen"
# Alias
event_commands_for_sbs_addon_action
end
end
ㅎㅎ 구글번역은 조금밖에 엄서용 대부분 즉석해석이요.
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
#==============================================================================
# + 애니메이션 오버레이 패치 for RPG Tankentai SBS
#------------------------------------------------------------------------------
# 'Yanfly Engine Melody - Core Fixes and Upgrades'의 자료는 이 스크립트에 쓰였다.
# 원래 스크립트는 http://www.pockethouse.com/ 에서 찾을수 있습니다.
#------------------------------------------------------------------------------
# Code from Core Fixes and Upgrades by Yanfly
# Patch set up by Mr. Bubble
#==============================================================================
# ++ 설치방법
# * 사이드뷰 스크립트 아래에 배치해 주세요.
#==============================================================================
# ┌해석 필요 없음
# There has been a long-existing issue with Screen animations playing
# an animation for each target. This causes the undesirable effect of
# Screen animations having an incorrect opacity level and simultaneous
# sound effects (which may possibly cause hurt ear drums!).
#
# Fortunately, Yanfly has created a very thorough patch which fixes
# this issue once and for all -- except with Tankentai.
#
# Since Tankentai uses its own method of displaying animations, some
# of the Tankentai base code had to be tweaked in order for Yanfly's
# animation fix to apply. Not only does this patch fix Screen animations
# played with Tankentai, but it also makes the animation rate option
# Yanfly included fully compatible.
#
# Keep in mind that if you have 'Yanfly Engine Melody - Core Fixes
# and Upgrades' already installed in your script editor, a large portion
# of this script will get disabled and instead use the methods defined
# in 'Core Fixes and Upgrades' (methods in this script are directly
# taken there). If you choose to use Yanfly Engine Melody - Core Fixes
# and Upgrades in your project, remember that it must be placed above
# the Sideview scripts.
#==============================================================================
module N01
# 이것은 애니메이션 속도를 전투 애니메이션에 의해 연주 조정합니다. 기본적으로
# 애니메이션은 40fps 4의 속도로 재생됩니다. 60fps 3으로 그것을 변경하면,
# 애니메이션이 60fps로 매끄러운 효과에 대한 변경됩니다. Beware of using
# heavy animations that may cause the player's computer to explode. ---만든이의 개그본능
ANIMATION_RATE = 4
# This value will not be used if 'Yanfly Engine Melody - Core Fixes and
# Upgrades' script is installed.---필요 없음
end
$imported = {} if $imported == nil
$imported["TankentaiAnimPatch"] = true
#==============================================================================
# + Sprite_Battler
#------------------------------------------------------------------------------
# This sprite is used to display battlers. It observes a instance of the
# Game_Battler class and automatically changes sprite conditions.
#==============================================================================
class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# ++ Show Battle Animation [判別, ID, target, mirror, wait, Weapon 2 flag]
#--------------------------------------------------------------------------
def battle_anime
# return if enemy and processing animation for Weapon 2
return if @active_action[5] && !@battler.actor?
# return if trying to process Weapon 2 animation with no Weapon 2 equipped.
return if @active_action[5] && @battler.weapons[1] == nil
# return if actor has Weapon 2 equipped, but not Weapon 1
if @battler.actor?
return if !@active_action[5] && @battler.weapons[0] == nil && @battler.weapons[1] != nil
end
anime_id = @active_action[1]
# 3.4a properly mirror animations if enemy is manually set to be mirroed
if @battler.is_a?(Game_Enemy)
mirror = false
mirror = true if @battler.action_mirror
end
# Mirror animation when in back attack
if $back_attack
mirror = true if !@active_action[3] # 3.4a
mirror = false if @active_action[3] || (@battler.is_a?(Game_Enemy) && @battler.action_mirror) # 3.4a
end
# 3.4c
# Damage with no animation
if anime_id == -3
# No animation if anime ID is -3
anime_id = 0
# ダメージ表示のアニメなら、ダメージ計算を先に済ませるため処理を中断
damage_action = [anime_id, mirror, true]
return @battler.play = ["OBJ_ANIM",damage_action] if @battler.active
end
# For skill, item, and weapon animations
if anime_id < 0
# Branches from here depending on type of action
if @battler.action.skill? && anime_id != -2
### UNOFFICAL CODE v3.3b ###
anime_id = @battler.action.skill.animation_id unless @battler.action.skill.animation_id == -1
if @battler.action.skill.animation_id == -1
anime_id = N01::NO_WEAPON
if @battler.actor?
weapon_id = @battler.weapon_id
anime_id = $data_weapons[weapon_id].animation_id if weapon_id != 0
anime_id = @battler.atk_animation_id2 if @active_action[5]
else
weapon_id = @battler.weapon
anime_id = $data_weapons[weapon_id].animation_id if weapon_id != 0
end
end
elsif @battler.action.item? && anime_id != -2
anime_id = 0
anime_id = @battler.action.item.animation_id unless @battler.action.item.animation_id == -1
if @battler.action.item.animation_id == -1
anime_id = N01::NO_WEAPON
weapon_id = @battler.weapon_id
anime_id = $data_weapons[weapon_id].animation_id if weapon_id != 0
anime_id = @battler.atk_animation_id2 if @active_action[5]
end
### UNOFFICIAL CODE v3.3b END ###
else
# Unarmed attack animation
anime_id = N01::NO_WEAPON
if @battler.actor?
weapon_id = @battler.weapon_id
anime_id = $data_weapons[weapon_id].animation_id if weapon_id != 0
# For Two Swords Style animation
anime_id = @battler.atk_animation_id2 if @active_action[5]
else
weapon_id = @battler.weapon
anime_id = $data_weapons[weapon_id].animation_id if weapon_id != 0
end
end
# Set wait value, temporarily delays action sequence processing
@wait = $data_animations[anime_id].frame_max * RATE + 1 if $data_animations[anime_id] != nil && @active_action[4]
waitflug = true
# ダメージ表示のアニメなら、ダメージ計算を先に済ませるため処理を中断
damage_action = [anime_id, mirror, true]
return @battler.play = ["OBJ_ANIM",damage_action] if @battler.active && @active_action[1] != -4 # 3.4a
end
# Process animation
if @active_action[2] == 0 && $data_animations[anime_id] != nil
@battler.animation_id = anime_id
@battler.animation_mirror = mirror
elsif $data_animations[anime_id] != nil
# From CoreFixesUpgradesMelody
animation = $data_animations[anime_id]
to_screen = (animation.position == 3)
ani_check = false
for target in @target_battler
if ani_check
target.pseudo_ani_id = anime_id
else
target.animation_id = anime_id
target.animation_mirror = mirror
end
ani_check = true if to_screen
end
end
# Set Wait
@wait = $data_animations[anime_id].frame_max * RATE + 1 if $data_animations[anime_id] != nil && @active_action[4] && !waitflug
end
end
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ++ Auto Resurrection - Animation
#--------------------------------------------------------------------------
def resurrection(target)
for state in target.states
for ext in state.extension
name = ext.split('')
next unless name[0] == "A"
wait(50)
name = name.join
name.slice!("AUTOLIFE/")
target.hp = target.maxhp * name.to_i / 100
target.remove_state(1)
target.remove_state(state.id)
target.animation_id = N01::RESURRECTION
target.animation_mirror = true if $back_attack
@status_window.refresh
wait($data_animations[N01::RESURRECTION].frame_max * RATE + 1)
end
end
end
end
# Code below this point will not be used if Yanfly Engine Melody - Core
# Fixes and Upgrades script is installed.
unless $imported["CoreFixesUpgradesMelody"]
class Game_Battler
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :pseudo_ani_id
#--------------------------------------------------------------------------
# alias method: clear_sprite_effects
#--------------------------------------------------------------------------
alias clear_sprite_effects_cfu clear_sprite_effects unless $@
def clear_sprite_effects
clear_sprite_effects_cfu
@pseudo_ani_id = 0
end
end
#==============================================================================
# Sprite_Base
#==============================================================================
class Sprite_Base < Sprite
#--------------------------------------------------------------------------
# constants
#--------------------------------------------------------------------------
RATE = N01::ANIMATION_RATE
#--------------------------------------------------------------------------
# overwrite method: update
#--------------------------------------------------------------------------
def update
super
update_animation if @animation != nil
@@animations.clear
end
#--------------------------------------------------------------------------
# overwrite method: start_animation
#--------------------------------------------------------------------------
def start_animation(animation, mirror = false)
dispose_animation
@animation = animation
return if @animation == nil
@animation_mirror = mirror
@animation_duration = @animation.frame_max * RATE + 1
load_animation_bitmap
@animation_sprites = []
if @animation.position != 3 or not @@animations.include?(animation)
if @use_sprite
for i in 0..15
sprite = ::Sprite.new(self.viewport)
sprite.visible = false
@animation_sprites.push(sprite)
end
@@animations.push(animation) unless @@animations.include?(animation)
end
end
if @animation.position == 3
if viewport == nil
@animation_ox = Graphics.width / 2
@animation_oy = Graphics.height / 2
else
@animation_ox = viewport.rect.width / 2
@animation_oy = viewport.rect.height / 2
end
else
@animation_ox = x - ox + width / 2
@animation_oy = y - oy + height / 2
if @animation.position == 0
@animation_oy -= height / 2
elsif @animation.position == 2
@animation_oy += height / 2
end
end
end
#--------------------------------------------------------------------------
# new method: start_pseudo_ani
#--------------------------------------------------------------------------
def start_pseudo_ani(animation, mirror = false)
dispose_animation
@animation = animation
return if @animation == nil
@animation_mirror = mirror
@animation_duration = @animation.frame_max * RATE + 1
@animation_sprites = []
end
#--------------------------------------------------------------------------
# overwrite method: update_animation
#--------------------------------------------------------------------------
def update_animation
# from Tankentai
if @animation.position == 1 # 3.4a
@animation_ox = x - ox + width / 2
@animation_oy = y - oy + height / 2
end
@animation_duration -= 1
return unless @animation_duration % RATE == 0
if @animation_duration > 0
frame_index = @animation.frame_max
frame_index -= (@animation_duration+RATE-1)/RATE
animation_set_sprites(@animation.frames[frame_index])
for timing in @animation.timings
next unless timing.frame == frame_index
animation_process_timing(timing)
end
return
end
dispose_animation
end
#--------------------------------------------------------------------------
# overwrite method: animation_process_timing
#--------------------------------------------------------------------------
def animation_process_timing(timing)
timing.se.play
case timing.flash_scope
when 1
self.flash(timing.flash_color, timing.flash_duration * RATE)
when 2
if viewport != nil
viewport.flash(timing.flash_color, timing.flash_duration * RATE)
end
when 3
self.flash(nil, timing.flash_duration * RATE)
end
end
end # Sprite_Base
#==============================================================================
# Sprite_Battler
#==============================================================================
class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# alias method: setup_new_effect
#--------------------------------------------------------------------------
alias setup_new_effect_cfu setup_new_effect unless $@
def setup_new_effect
setup_new_effect_cfu
if @battler.pseudo_ani_id != 0 and @battler.pseudo_ani_id != nil
animation = $data_animations[@battler.pseudo_ani_id]
start_pseudo_ani(animation)
@battler.pseudo_ani_id = 0
end
end
end # Sprite_Battler
end # $imported["CoreFixesUpgradesMelody"]
후아....
두갠데요..... 시트르산님이 올린 사이드뷰 최신버젼에 달려있는 애드온중 두개를
해석한것입니다.
다음번에는 조금 긴것을 해보죠.....