Hey, everyone. I need some help with the repost of this widescreen script posted by Selwyn.
The script is here:
I keep getting the error:
undefined method 'rect' for nil:Nilclass on line 198.
Line 198:
I know what the error means but I don't know how to fix it. Would anyone mind helping me out? Thanks in advance.
The script is here:
Code:
#==============================================================================
# â– WScreen
#------------------------------------------------------------------------------
#  By Selwyn, Widescreen effect script
# released the 1st of February
#
# This script allows to give some cutscenes a 'widescreen' effect.
#
# The script is off by default (when you first start the game).
#
# By default, when the widescreen mode is turned on, it hides one tile at the
# top of the screen and one tile a the bottom.
#
# By default, the transition_speed is 3, you can change this value just a
# few lines below
#
# To turn the script on, put 'WScreen.turn_on' in a call script command of
# an event. Turn it off with 'WScreen.turn_off'
#
# To change the number tiles hidden in widescreen, use the following function
# in a call script command of an event :
# 'WScreen.size = NUMBER'
#
#==============================================================================
module WScreen
#--------------------------------------------------------------------------
# â— define instance variables
#--------------------------------------------------------------------------
@state = false
@tile_size = 1
@transition_speed = 3
#--------------------------------------------------------------------------
# â— WScreen.on?
# checks if the widescreen mode is on.
#--------------------------------------------------------------------------
def self.on?
return @state
end
#--------------------------------------------------------------------------
# â— WScreen.off?
# checks if the widescreen mode is off.
#--------------------------------------------------------------------------
def self.off?
return !@state
end
#--------------------------------------------------------------------------
# â— WScreen.turn_on
# turns the widescreen mode on.
#--------------------------------------------------------------------------
def self.turn_on
@state = true
$game_player.center($game_player.x, $game_player.y)
end
#--------------------------------------------------------------------------
# â— WScreen.turn_off
# turns the widescreen mode off.
#--------------------------------------------------------------------------
def self.turn_off
@state = false
$game_player.center($game_player.x, $game_player.y)
end
#--------------------------------------------------------------------------
# â— WScreen.size
# returns the number of hidden tiles when the widescreen mode is on.
#--------------------------------------------------------------------------
def self.size
return on? ? @tile_size : 0
end
#--------------------------------------------------------------------------
# â— WScreen.size = INTEGER
# set the number of tiles to hide when the widescreen mode is on.
#--------------------------------------------------------------------------
def self.size=(value)
@tile_size = [value % 9, 1].min
$game_player.center($game_player.x, $game_player.y)
end
#--------------------------------------------------------------------------
# â— WScreen.speed
# returns the transition speed between the off and on modes.
#--------------------------------------------------------------------------
def self.speed
return @transition_speed
end
end
#==============================================================================
# â– Game_Map
#------------------------------------------------------------------------------
#  
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
# â— scroll_down
#--------------------------------------------------------------------------
def scroll_down(distance)
ntiles = 15 - WScreen.size * 2
@display_y = [@display_y + distance, (self.height - ntiles) * 128].min
end
end
#==============================================================================
# â– Game_Player
#------------------------------------------------------------------------------
#  
#==============================================================================
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# â— center_y
#--------------------------------------------------------------------------
def center_y
n = 240 - WScreen.size * 32
return (n - 16) * 4
end
#--------------------------------------------------------------------------
# â— center
#--------------------------------------------------------------------------
def center(x, y)
max_x = ($game_map.width - 20) * 128
ntiles = 15 - WScreen.size * 2
max_y = ($game_map.height - ntiles) * 128
$game_map.display_x = [0, [x * 128 - CENTER_X, max_x].min].max
$game_map.display_y = [0, [y * 128 - center_y, max_y].min].max
end
#--------------------------------------------------------------------------
# â— update
#--------------------------------------------------------------------------
def update
last_moving = moving?
unless moving? or $game_system.map_interpreter.running? or
@move_route_forcing or $game_temp.message_window_showing
case Input.dir4
when 2
move_down
when 4
move_left
when 6
move_right
when 8
move_up
end
end
last_real_x = @real_x
last_real_y = @real_y
super
if @real_y > last_real_y and @real_y - $game_map.display_y > center_y
$game_map.scroll_down(@real_y - last_real_y)
end
if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
$game_map.scroll_left(last_real_x - @real_x)
end
if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
$game_map.scroll_right(@real_x - last_real_x)
end
if @real_y < last_real_y and @real_y - $game_map.display_y < center_y
$game_map.scroll_up(last_real_y - @real_y)
end
unless moving?
if last_moving
result = check_event_trigger_here([1,2])
if result == false
unless $DEBUG and Input.press?(Input::CTRL)
if @encounter_count > 0
@encounter_count -= 1
end
end
end
end
if Input.trigger?(Input::C)
check_event_trigger_here([0])
check_event_trigger_there([0,1,2])
end
end
end
end
#==============================================================================
# â– Spriteset_Map
#------------------------------------------------------------------------------
#  
#==============================================================================
class Spriteset_Map
alias init_widescreen initialize
alias update_widescreen update
#--------------------------------------------------------------------------
# â— update
#--------------------------------------------------------------------------
def initialize
init_widescreen
if @viewport1.rect.height > 480 - (WScreen.size * 64)
@viewport1.rect.height = @viewport2.rect.height =
@viewport3.rect.height = 480 - (WScreen.size * 64)
oy = (480 - @viewport1.rect.height) / 2
@viewport1.rect.y = @viewport2.rect.y = @viewport3.rect.y = oy
end
end
#--------------------------------------------------------------------------
# â— update
#--------------------------------------------------------------------------
def update
sy = 480 - (WScreen.size * 64)
h = @viewport1.rect.height
if h != sy
n = [((sy - h) / WScreen.speed).abs, 1].max
@viewport1.rect.height += h > sy ? - n : n
@viewport2.rect.height += h > sy ? - n : n
@viewport3.rect.height += h > sy ? - n : n
oy = (480 - @viewport1.rect.height) / 2
@viewport1.rect.y = @viewport2.rect.y = @viewport3.rect.y = oy
end
update_widescreen
end
end
I keep getting the error:
undefined method 'rect' for nil:Nilclass on line 198.
Line 198:
if @viewport1.rect.height > 480 - (WScreen.size * 64)
I know what the error means but I don't know how to fix it. Would anyone mind helping me out? Thanks in advance.