우연히 옛날에 올라온 해상도 스크립트를 봤는데요,
쓸만한 스크립트인데 몇가지 오류가 있어서 문해결하여 수정버젼 올립니다.
main 위에 삽입 하시면 됩니다 ^^;
첫 두줄의 640과 480을 각기 원하는 해상도로 바꿔주세요.
WIDTH = 640
HEIGHT = 480
DELTA_WIDTH = (WIDTH - 544).abs
DELTA_HEIGHT = (HEIGHT - 416).abs
Graphics.resize_screen(WIDTH, HEIGHT)
class Game_Map
alias tds_vx_resolution_change_setup_scroll setup_scroll
def setup_scroll
tds_vx_resolution_change_setup_scroll
@scroll_direction = 2
@scroll_rest = 0
@scroll_speed = 4
@margin_x = (width - 20) * 256 / 2
@margin_y = (height - 15) * 256 / 2
end
alias tds_vx_resolution_change_calc_parallax_x calc_parallax_x
def calc_parallax_x(bitmap)
tds_vx_resolution_change_calc_parallax_x(bitmap)
if bitmap == nil
return 0
elsif @parallax_loop_x
return @parallax_x / 16
elsif loop_horizontal?
return 0
else
w1 = bitmap.width - WIDTH
w2 = @map.width * 32 - WIDTH
if w1 <= 0 or w2 <= 0
return 0
else
return @parallax_x * w1 / w2 / 8
end
end
end
alias tds_vx_resolution_change_calc_parallax_y calc_parallax_y
def calc_parallax_y(bitmap)
tds_vx_resolution_change_calc_parallax_y(bitmap)
if bitmap == nil
return 0
elsif @parallax_loop_y
return @parallax_y / 16
elsif loop_vertical?
return 0
else
h1 = bitmap.height - HEIGHT
h2 = @map.height * 32 - HEIGHT
if h1 <= 0 or h2 <= 0
return 0
else
return @parallax_y * h1 / h2 / 8
end
end
end
def scroll_down(distance)
if loop_vertical?
@display_y += distance
@display_y %= @map.height * 256
@parallax_y += distance
else
last_y = @display_y
@display_y = [@display_y + distance, (height - 15) * 256].min
@parallax_y += @display_y - last_y
end
end
def scroll_right(distance)
if loop_horizontal?
@display_x += distance
@display_x %= @map.width * 256
@parallax_x += distance
else
last_x = @display_x
@display_x = [@display_x + distance, (width - 20) * 256].min
@parallax_x += @display_x - last_x
end
end
end
class Game_Player < Game_Character
CENTER_X = (WIDTH / 2 - 16) * 8
CENTER_Y = (HEIGHT / 2 - 16) * 8
alias tds_vx_resolution_change_center center
def center(x, y)
tds_vx_resolution_change_center(x, y)
display_x = x * 256 - CENTER_X
unless $game_map.loop_horizontal?
max_x = ($game_map.width - 20) * 256
display_x = [0, [display_x, max_x].min].max
end
display_y = y * 256 - CENTER_Y
unless $game_map.loop_vertical?
max_y = ($game_map.height - 15) * 256
display_y = [0, [display_y, max_y].min].max
end
$game_map.set_display_pos(display_x, display_y)
end
end
class Sprite_Base < Sprite
alias tds_vx_resolution_change_start_animation start_animation
def start_animation(animation, mirror = false)
tds_vx_resolution_change_start_animation(animation, mirror = false)
dispose_animation
@animation = animation
return if @animation == nil
@animation_mirror = mirror
@animation_duration = @animation.frame_max * 4 + 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(viewport)
sprite.visible = false
@animation_sprites.push(sprite)
end
unless @@animations.include?(animation)
@@animations.push(animation)
end
end
end
if @animation.position == 3
if viewport == nil
@animation_ox = WIDTH/ 2
@animation_oy = 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
end
class Spriteset_Map
def create_viewports
@viewport1 = Viewport.new(0, 0, WIDTH, HEIGHT)
@viewport2 = Viewport.new(0, 0, WIDTH, HEIGHT)
@viewport3 = Viewport.new(0, 0, WIDTH, HEIGHT)
@viewport2.z = 50
@viewport3.z = 100
end
end
class Spriteset_Battle
def create_viewports
@viewport1 = Viewport.new(0, 0, WIDTH, HEIGHT)
@viewport2 = Viewport.new(0, 0, WIDTH, HEIGHT)
@viewport3 = Viewport.new(0, 0, WIDTH, HEIGHT)
@viewport2.z = 50
@viewport3.z = 100
end
end
class Window_Base < Window
def x=(x)
super(x + DELTA_WIDTH / 2)
end
def y=(y)
super(y + DELTA_HEIGHT/ 2)
end
end
class Scene_Battle < Scene_Base
def create_info_viewport
@info_viewport = Viewport.new(0, 288, WIDTH, HEIGHT)
@info_viewport.z = 100
@status_window = Window_BattleStatus.new
@party_command_window = Window_PartyCommand.new
@actor_command_window = Window_ActorCommand.new
@status_window.viewport = @info_viewport
@party_command_window.viewport = @info_viewport
@actor_command_window.viewport = @info_viewport
@status_window.x = 128
@actor_command_window.x = 544
@info_viewport.visible = false
end
end
class Scene_Item < Scene_Base
def start
super
create_menu_background
@viewport = Viewport.new(0, 0, WIDTH, HEIGHT)
@help_window = Window_Help.new
@help_window.viewport = @viewport
@item_window = Window_Item.new(0, 56, 544, 360)
@item_window.help_window = @help_window
@item_window.active = false
@target_window = Window_MenuStatus.new(0, 0)
hide_target_window
end
def show_target_window(right)
@item_window.active = false
width_remain = WIDTH - @target_window.width
@target_window.x = right ? width_remain : 0
@target_window.visible = true
@target_window.active = true
if right
@viewport.rect.set(0, 0, width_remain, HEIGHT)
@viewport.ox = 0
else
@viewport.rect.set(@target_window.width, 0, width_remain, HEIGHT)
@viewport.ox = @target_window.width
end
end
def hide_target_window
@item_window.active = true
@target_window.visible = false
@target_window.active = false
@viewport.rect.set(0, 0, WIDTH, HEIGHT)
@viewport.ox = 0
end
end
class Scene_Skill < Scene_Base
def start
super
create_menu_background
@actor = $game_party.members[@actor_index]
@viewport = Viewport.new(0, 0, WIDTH, HEIGHT)
@help_window = Window_Help.new
@help_window.viewport = @viewport
@status_window = Window_SkillStatus.new(0, 56, @actor)
@status_window.viewport = @viewport
@skill_window = Window_Skill.new(0, 112, 544, 304, @actor)
@skill_window.viewport = @viewport
@skill_window.help_window = @help_window
@target_window = Window_MenuStatus.new(0, 0)
hide_target_window
end
def show_target_window(right)
@skill_window.active = false
width_remain = WIDTH - @target_window.width
@target_window.x = right ? width_remain : 0
@target_window.visible = true
@target_window.active = true
if right
@viewport.rect.set(0, 0, width_remain, HEIGHT)
@viewport.ox = 0
else
@viewport.rect.set(@target_window.width, 0, width_remain, HEIGHT)
@viewport.ox = @target_window.width
end
end
def hide_target_window
@skill_window.active = true
@target_window.visible = false
@target_window.active = false
@viewport.rect.set(0, 0, WIDTH, HEIGHT)
@viewport.ox = 0
end
end
class Spriteset_Map
alias tds_vx_resolution_change_create_viewports create_viewports
def create_viewports
tds_vx_resolution_change_create_viewports
@viewport1 = Viewport.new(0, 0, WIDTH, HEIGHT)
@viewport2 = Viewport.new(0, 0, WIDTH, HEIGHT)
@viewport3 = Viewport.new(0, 0, WIDTH, HEIGHT)
@viewport2.z = 50
@viewport3.z = 100
end
end