03-03-2008, 06:23 AM 
	
	
	Cursor Script
by Selwyn
INTRODUCTION
Selwyn @ RMXP.Org Sun Apr 09, 2006 Wrote:this allows to show a cursor with or without the highlight box. (if you don't want to show the highlight box, remove it from you windowskin)
create a cursor icon of 32*32 pixel, name it 'cursor' and put it in your game's Pictures folder.
paste the following code in a new section UNDER Window_Selectable
SCRIPT
 The Script
  			Code:
#==============================================================================
# ? Cursor Script
#------------------------------------------------------------------------------
# ?Script to display a cursor instead of a highlight box
#   by Selwyn
#   selwyn@rmxp.ch
#==============================================================================
#==============================================================================
# ? Cursor_Sprite
#==============================================================================
class Sprite_Cursor < Sprite
  #--------------------------------------------------------------------------
  # ? instances
  #--------------------------------------------------------------------------
  attr_accessor :true_x
  attr_accessor :true_y
  #--------------------------------------------------------------------------
  # ? initialize
  #--------------------------------------------------------------------------
  def initialize(x = 0, y = 0)
    super()
    self.x = @true_x = x
    self.y = @true_y = y
    self.z = 10000
    self.bitmap = RPG::Cache.picture("cursor") rescue Bitmap.new(32, 32)
  end
  #--------------------------------------------------------------------------
  # ? update
  #--------------------------------------------------------------------------
  def update
    super
   
    if self.y < @true_y
      n = (@true_y - self.y) / 3
      n = 1 if n == 0
      self.y += n
    elsif self.y > @true_y
      n = (self.y - @true_y) / 3
      n = 1 if n == 0
      self.y -= n
    end
    if self.x < @true_x
      n = (@true_x - self.x) / 3
      n = 1 if n == 0
      self.x += n
    elsif self.x > @true_x
      n = (self.x - @true_x) / 3
      n = 1 if n == 0
      self.x -= n
    end
  end
end
#==============================================================================
# ? Window_Selectable
#==============================================================================
class Window_Selectable < Window_Base
  #--------------------------------------------------------------------------
  # ? instances
  #--------------------------------------------------------------------------
  attr_accessor :cursor
  alias initialize_cursor initialize
  alias update_cursor_moves update
  alias dispose_cursor dispose
  #--------------------------------------------------------------------------
  # ? initialize
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    initialize_cursor(x, y, width, height)
    @cursor = Sprite_Cursor.new(x, y)
    update_cursor
  end
  #--------------------------------------------------------------------------
  # ? x=
  #--------------------------------------------------------------------------
  def x=(x)
    super
    @cursor.x = x if !@cursor.nil?
  end
  #--------------------------------------------------------------------------
  # ? y=
  #--------------------------------------------------------------------------
  def y=(y)
    super
    @cursor.y = y if !@cursor.nil?
  end
  #--------------------------------------------------------------------------
  # ? visible=
  #--------------------------------------------------------------------------
  def visible=(visible)
    super
    if !@cursor.nil? and visible == false
      @cursor.visible = false
    end
  end
  #--------------------------------------------------------------------------
  # ? dispose
  #--------------------------------------------------------------------------
  def dispose
    dispose_cursor
    @cursor.dispose
  end
  #--------------------------------------------------------------------------
  # ? update_cursor_rect
  #--------------------------------------------------------------------------
  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
      return
    end
    row = @index / @column_max
    if row < self.top_row
      self.top_row = row
    end
    if row > self.top_row + (self.page_row_max - 1)
      self.top_row = row - (self.page_row_max - 1)
    end
    cursor_width = self.width / @column_max - 32
    x = @index % @column_max * (cursor_width + 32)
    y = @index / @column_max * 32 - self.oy
    self.cursor_rect.set(x, y, cursor_width, 32)
  end
  #--------------------------------------------------------------------------
  # ? update_cursor
  #--------------------------------------------------------------------------
  def update_cursor
    @cursor.true_x = self.cursor_rect.x + self.x - 8
    @cursor.true_y = self.cursor_rect.y + self.y + 16
    @cursor.update
    @cursor.visible = (self.visible and self.index >= 0)
  end
  #--------------------------------------------------------------------------
  # ? update
  #--------------------------------------------------------------------------
  def update
    update_cursor_moves
    update_cursor
  end
endTERMS AND CONDITIONS
Give credit, enjoy!


![[Image: QrnbKlx.jpg]](https://i.imgur.com/QrnbKlx.jpg)
![[Image: sGz1ErF.png]](https://i.imgur.com/sGz1ErF.png)
![[Image: liM4ikn.png]](https://i.imgur.com/liM4ikn.png)
![[Image: fdzKgZA.png]](https://i.imgur.com/fdzKgZA.png)
![[Image: sj0H81z.png]](https://i.imgur.com/sj0H81z.png)
![[Image: QL7oRau.png]](https://i.imgur.com/QL7oRau.png)
![[Image: uSqjY09.png]](https://i.imgur.com/uSqjY09.png)
![[Image: GAA3qE9.png]](https://i.imgur.com/GAA3qE9.png)
![[Image: 2Hmnx1G.png]](https://i.imgur.com/2Hmnx1G.png)
![[Image: BwtNdKw.png%5B]](https://i.imgur.com/BwtNdKw.png%5B)
 seven years ago?  I do have some bugs....  Let me correct, shall I?