Menu Smooth Movement Bug Fix
Hi guys, sorry for another script request topic but I promise this should be very easy to do XD But since my scripter friend is in middle of midterm exams so I don't know who else to turn to \(>o<)/
Description:Anyway, there are only a very few numbers of working scripts that add a Cursor into the Menu, and except for this one the rest is pretty buggy and has some compatibility issues. However, this script does not show the cursor in the Save and Load screen. It would be very nice if someone would help me to fix this, the script itself is very short so I guess it won't take more than a couple of minutes to get it done. Thank you so much.
What other script are you using?I don't think any of my other script would affect this little scripts, as I'm using default save/load menu. I have another script which shows a Cursor when selecting monster inside the battle, but as far as I'm aware these two cursor script should not clash at all:
Did you search? And where?Yes, all to my searching capability: here, rmvx.net, hbgames, rpgrevolution, rpgcrisis, google, etc.
Search terms:strcat, strcat smooth menu movement, strcat cursor, strcat save, etc.
And I've seen a few people asking for this fix but to no avail, sadly >_<
And the script itself:#==============================================================================
# Cursor Sprite + Smooth Movement Script
#==============================================================================
# Author : strcat (with edits by S. F. LaValle)
# Version : 1.2
# Date : 29 / 01 / 2008
#------------------------------------------------------------------------------
# This script will create a new cursor sprite,and add a smooth movement to
# the cursor,thus making your game look better happy.gif
#------------------------------------------------------------------------------
#==============================================================================
# ** STRRGSS2
#==============================================================================
module STRRGSS2
# Cursor graphic file name
WCURSOR_FN = "Window_Cursor"
# position of the cursor(x, y)
WCURSOR_X = 8
WCURSOR_Y = 5
end
class Sprite_WindowCursor < Sprite
WAIT = 20 # numbers of frame for cursor update delay
CW = 29 # cursor width
CH = 30 # cursor height
end
#==============================================================================
# ** Window_Selectable
#==============================================================================
class Window_Selectable < Window_Base
#--------------------------------------------------------------------------
# * Update Cursor
#--------------------------------------------------------------------------
def update_se_cursor
cr = self.cursor_rect
r = Rect.new(0, 0, 0, 0)
y = (self.cursor_rect.height - WLH) / 2
v = nil
v = self.viewport if self.viewport != nil
@strcursor.viewport = v
@strcursor.x = self.x + 16 + cr.x - WLH + STRRGSS2::WCURSOR_X
@strcursor.y = self.y + 16 + cr.y + y + STRRGSS2::WCURSOR_Y
@strcursor.z = self.z + 16
@strcursor.opacity += 64
@strcursor.opacity = self.opacity if @strcursor.opacity > self.opacity
@strcursor.visible = ((cr != r) and self.openness == 255)
@strcursor.visible = false unless self.visible
@strcursor.blink = (not self.active)
@strcursor.update
end
def update_cursor_str(r,rect)
self.cursor_rect = r
rect = Rect.new(0, 0, 0, 0) if @index < 0
mx = self.cursor_rect.x - rect.x
if mx >= -1 and mx <= 1
self.cursor_rect.x = rect.x
elsif mx != 0
x = self.cursor_rect.x - (mx/2.0)
self.cursor_rect.x = x
end
my = self.cursor_rect.y - rect.y
if my >= -1 and my <= 1
self.cursor_rect.y = rect.y
elsif my != 0
y = self.cursor_rect.y - (my/2.0)
self.cursor_rect.y = y
end
self.cursor_rect.width = rect.width
self.cursor_rect.height = rect.height
end
def visible=(v)
super
@strcursor.visible = v
end
def active=(v)
super
@strcursor.visible = false
end
def dispose
@strcursor.dispose
super
end
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias initialize_str05m initialize
def initialize(x, y, width, height, spacing = 32)
initialize_str05m(x, y, width, height, spacing)
file = STRRGSS2::WCURSOR_FN
v = nil
v = self.viewport if self.viewport != nil
@strcursor = Sprite_WindowCursor.new(file, v)
@f_set = false
end
alias update_str05m update
def update
update_se_cursor unless @opening
update_str05m
end
alias update_cursor_str05m update_cursor
def update_cursor
r = self.cursor_rect.clone unless @f_set
update_cursor_str05m
update_cursor_str(r, self.cursor_rect.clone) unless @f_set
@f_set = false
end
#--------------------------------------------------------------------------
# * Get Index
#--------------------------------------------------------------------------
def index=(index)
@f_set = true
@index = index
update_cursor
call_update_help
end
end
#==============================================================================
# ** Sprite_WindowCursor
#==============================================================================
class Sprite_WindowCursor < Sprite
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :blink
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(name,viewport)
super(viewport)
self.bitmap = Cache.system(name)
self.src_rect.set(0, 0, CW, CH)
self.opacity = 0
@xx = -8
@wait = 0
@count = 0
@blink = false
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
super
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
@xx += 1 if @xx != 0
self.x += @xx
@count += 1
self.opacity = (@count % 32) * 8 if @blink
@wait -= 0
return if @wait > 0
@wait = 0
self.src_rect.x += CW
self.src_rect.x = 0 if (self.bitmap.width <= self.src_rect.x)
end
end
Thank you for your time