Help Me Understand This Mouse Script and Selectable Windows

virusasa

Avernite
Member
Joined
Jun 4, 2017
Messages
15
Reaction score
5
First Language
English
Primarily Uses
RMVXA
Hello all! For sometime now, I've been reading and watching tutorials on scripting. I've been reading scripts and tweaking them so I can practice. I now can create Scenes with windows and make simple menus, you know with handlers and methods and stuff. However Im still a newbie to RGSS3 and there are many things that I want to give a try. This script being one:
Code:
#Basic Mouse System v2.7h
#----------#
#Features: Provides a series of functions to find the current x, y position of
#           the mouse and whether it is being clicked or not (left or right click)
#
#Usage:   Script calls:
#           Mouse.pos?   - returns the x, y position as an array
#           Mouse.lclick?(repeat) - returns if left click is achieved
#                                   repeat = true for repeated checks
#           Mouse.rclick?(repeat) - same as above for right click
#           Mouse.within?(rect) - passes a Rect through to check if cursor
#                                 is within it, returns true if so
#
#         Events:
#          The following are placed in the name of an event:
#          &&  -  event can be triggered from afar by mouse click
#          I:# -  where # is the icon_index to change the cursor on hover
#  
#         Example: I:262
#
#----------#
#-- Script by: V.M of D.T
#
#- Questions or comments can be:
#    posted on the thread for the script
#    given by email: sumptuaryspade@live.ca
#    provided on facebook: http://www.facebook.com/DaimoniousTailsGames
#
#--- Free to use in any project, commercial or non-commercial, with credit given
# - - Though a donation's always a nice way to say thank you~ (I also accept actual thank you's)

CPOS = Win32API.new 'user32', 'GetCursorPos', ['p'], 'v'
WINX = Win32API.new 'user32', 'FindWindowEx', ['l','l','p','p'], 'i'
ASKS = Win32API.new 'user32', 'GetAsyncKeyState', ['p'], 'i'
SMET = Win32API.new 'user32', 'GetSystemMetrics', ['i'], 'i'
WREC = Win32API.new 'user32', 'GetWindowRect', ['l','p'], 'v'

#MOUSE_ICON, set to the index of the icon to use as a cursor
$mouse_icon = 0
CURSOR_OFFSET_X = 0
CURSOR_OFFSET_Y = 0

#Keeps cursor sprite within the game window
MOUSE_KEEP_WINDOW = true

#Whether clicking requires cursor to be within window or not
MOUSE_CLICK_WITHIN = false

#Whether to use 8 directional movement or not
MOUSE_DIR8 = false

#Use the Mouse Button Overlay:
USE_MOUSE_BUTTONS = false
#And here is where you set up your buttons! Simple overlay:
#(Picture files are to be stored in System)
#
# [ x , y, "filename", "script call when left clicked" ]
MOUSE_BUTTONS = [
            [0,416-32,"Shadow.png","SceneManager.call(Scene_Equip)"],
            [32,416-32,"Shadow.png","SceneManager.call(Scene_Item)"], ]

SHOWMOUS = Win32API.new 'user32', 'ShowCursor', 'i', 'i'
SHOWMOUS.call(0)

#Switch option to enable/disable the script
USE_MOUSE_SWITCH = true
MOUSE_SWITCH = 1
#---------------------------------------------------------------------
# GALİBA BURDAN BAŞLIYOR
#---------------------------------------------------------------------
module Mouse
  def self.setup
    @enabled = true
    @delay = 0
    bwap = true if SMET.call(23) != 0
    bwap ? @lmb = 0x02 : @lmb = 0x01
    bwap ? @rmb = 0x01 : @rmb = 0x02
  end
#----------------------------------------------------------------------
# SELFUPDATE
#----------------------------------------------------------------------
  def self.update
    return false unless @enabled
    return false if USE_MOUSE_SWITCH && $game_switches[MOUSE_SWITCH]
    self.setup if @lmb.nil?
    @delay -= 1
    @window_loc = WINX.call(0,0,"RGSS PLAYER",0)
    if ASKS.call(@lmb) == 0 then @l_clicked = false end
    if ASKS.call(@rmb) == 0 then @r_clicked = false end
    rect = '0000000000000000'
    cursor_pos = '00000000'
    WREC.call(@window_loc, rect)
    side, top = rect.unpack("ll")
    CPOS.call(cursor_pos)
    @m_x, @m_y = cursor_pos.unpack("ll")
    w_x = side + SMET.call(5) + SMET.call(45)
    w_y = top + SMET.call(6) + SMET.call(46) + SMET.call(4)
    @m_x -= w_x; @m_y -= w_y
    if MOUSE_KEEP_WINDOW
      @m_x = [[@m_x, 0].max,Graphics.width-5].min
      @m_y = [[@m_y, 0].max,Graphics.height-5].min
    end
    return true
  end
#----------------------------------------------------------------------
# SELF POS
#----------------------------------------------------------------------
  def self.pos?
    return[-50,-50] unless self.update
    return [@m_x, @m_y]
  end
#----------------------------------------------------------------------
# SELF LCLICK
#----------------------------------------------------------------------
  def self.lclick?(repeat = false)
    return unless self.update
    return false if @l_clicked
    if ASKS.call(@lmb) != 0 then
      @l_clicked = true if !repeat
      return true end
  end
#----------------------------------------------------------------------
# SELF RCLICK
#----------------------------------------------------------------------  
  def self.rclick?(repeat = false)
    return unless self.update
    return false if @r_clicked
    if ASKS.call(@rmb) != 0 then
      @r_clicked = true if !repeat
      return true end
    end
#----------------------------------------------------------------------
# SELF SLOWPEAT
#----------------------------------------------------------------------
  def self.slowpeat
    return unless self.update
    return false if @delay > 0
    @delay = 120
    return true
  end
#----------------------------------------------------------------------
# SELF WITHIN?
#----------------------------------------------------------------------
  def self.within?(rect)
    return unless self.update
    return false if @m_x < rect.x or @m_y < rect.y
    bound_x = rect.x + rect.width; bound_y = rect.y + rect.height
    return true if @m_x < bound_x and @m_y < bound_y
    return false
  end
#----------------------------------------------------------------------
# SELF DISABLE
#----------------------------------------------------------------------
  def self.disable
    @enabled = false
    SHOWMOUS.call(1)
  end
#----------------------------------------------------------------------
# SELF ENABLE
#----------------------------------------------------------------------
  def self.enable
    @enabled = true
    SHOWMOUS.call(0)
  end
end
#----------------------------------------------------------------------
# MOUSE SETUP
#----------------------------------------------------------------------
Mouse.setup

#----------------------------------------------------------------------
# MODULE DATA MANAGER
#----------------------------------------------------------------------
module DataManager
  class << self
    alias mouse_init init
  end
  def self.init
    mouse_init
    $cursor = Mouse_Cursor.new
  end
end
#----------------------------------------------------------------------
# SCENE_BASE
#----------------------------------------------------------------------
class Scene_Base
  alias cursor_update update_basic
  def update_basic
    cursor_update
    mouse_cursor
  end
#----------------------------------------------------------------------
# MOUSE_CURSOR
#----------------------------------------------------------------------
  def mouse_cursor
    pos = Mouse.pos?
    $cursor.x = pos[0] + CURSOR_OFFSET_X
    $cursor.y = pos[1] + CURSOR_OFFSET_Y
  end
end

class Mouse_Cursor < Sprite_Base
  def initialize
    super
    @icon = $mouse_icon
    self.bitmap = Bitmap.new(24,24)
    draw_cursor
    self.z = 255
  end
  def set_icon(icon)
    return if @icon == icon
    @icon = icon
    draw_cursor
  end
  def draw_cursor
    self.bitmap.clear
    icon_bitmap = Cache.system("Iconset")
    rect = Rect.new(@icon % 16 * 24, @icon / 16 * 24, 24, 24)
    self.bitmap.blt(0, 0, icon_bitmap, rect)
  end
end
#----------------------------------------------------------------------
# WINDOW SELECTABLE
#----------------------------------------------------------------------
class Window_Selectable
  alias mouse_update update
  alias mouse_init initialize
  def initialize(x,y,w,h)
    mouse_init(x,y,w,h)
    @mouse_all_rects = []
    @timer = 0
  end
  def update
    mouse_update
    update_mouse if self.active
  end
  def update_mouse
    @timer -= 1
    @mouse_all_rects = []
    item_max.times {|i|
      rect = item_rect(i)
      rect.x += self.x + standard_padding - self.ox
      rect.y += self.y + standard_padding - self.oy
      if !self.viewport.nil?
        rect.x += self.viewport.rect.x - self.viewport.ox
        rect.y += self.viewport.rect.y - self.viewport.oy
      end
      @mouse_all_rects.push(rect) }
    item_max.times {|i|
      next if @timer > 0
      next unless Mouse.within?(@mouse_all_rects[i])
      @timer = 10 if i > top_row * 2 + page_item_max - 1
      @timer = 10 if i < top_row * 2
      self.index = i }
    process_cancel if Mouse.rclick? && cancel_enabled?
    return if MOUSE_CLICK_WITHIN && !within_index
    process_ok if Mouse.lclick? && ok_enabled?
  end
  def within_index
    item_max.times {|i|
      return true if Mouse.within?(@mouse_all_rects[i]) }
    return false
  end
end
#----------------------------------------------------------------------
# WINDOW NAME IMPUT
#----------------------------------------------------------------------
class Window_NameInput
  alias mouse_process_handling process_handling
  def process_handling
    mouse_process_handling
    process_back if Mouse.rclick?
  end
  def item_max
    return 90
  end
end
#----------------------------------------------------------------------
# WINDOW MESSAGE
#----------------------------------------------------------------------

class Window_Message < Window_Base
  def input_pause
    self.pause = true
    wait(10)
    Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C) || Mouse.lclick? #if !SceneManager.scene_is?(Scene_Map))
    Input.update
    self.pause = false
  end
end
#----------------------------------------------------------------------
# SCENE FILE
#----------------------------------------------------------------------
class Scene_File < Scene_MenuBase
  alias mouse_update update
  def update
    mouse_update
    mouse_input
  end
  def mouse_input
    xx = 0
    yy = 56
    width = Graphics.width
    rectcm1 = Rect.new(xx, yy, width, savefile_height)
    rectcm2 = Rect.new(xx, yy + rectcm1.height, width, savefile_height)
    rectcm3 = Rect.new(xx, yy + rectcm1.height * 2, width, savefile_height)
    rectcm4 = Rect.new(xx, yy + rectcm1.height * 3, width, savefile_height)
    rectttl = Rect.new(xx, yy, width, rectcm1.height * 4)
    rectcmA = Rect.new(0, yy - 12, Graphics.width, 24)
    rectcmB = Rect.new(0, Graphics.height - 12, Graphics.width, 24)
    @scroll = self.top_index
    last_index = @index
    @index = (0 + @scroll) if Mouse.within?(rectcm1)
    @index = (1 + @scroll) if Mouse.within?(rectcm2)
    @index = (2 + @scroll) if Mouse.within?(rectcm3)
    @index = (3 + @scroll) if Mouse.within?(rectcm4)
    cursor_down(false) if Mouse.within?(rectcmB) and Mouse.slowpeat
    cursor_up(false) if Mouse.within?(rectcmA) and Mouse.slowpeat
    if @index != last_index
      Sound.play_cursor
      @savefile_windows[last_index].selected = false
      @savefile_windows[@index].selected = true
    end
    on_savefile_ok if Mouse.lclick? and Mouse.within?(rectttl)
    on_savefile_cancel if Mouse.rclick? and Mouse.within?(rectttl)
  end
end
#----------------------------------------------------------------------
# GAME OVER
#----------------------------------------------------------------------
class Scene_Gameover
  alias mouse_update update
  def update
    mouse_update
    goto_title if Mouse.lclick? or Mouse.rclick?
  end
end
#----------------------------------------------------------------------
# GAME PLAYER
#----------------------------------------------------------------------
class Game_Player < Game_Character
  alias mouse_move_update update
  def update
    mouse_move_update
    mouse_input
  end
  def mouse_input
    begin      
    return if USE_MOUSE_BUTTONS && SceneManager.scene.mouse_overlay.update
    rescue
    return
    end
    return if !movable? || $game_map.interpreter.running?
    if !Mouse.lclick?(true) then return end
    if moving? then return end
    Graphics.width / 32 % 2 == 0 ? xxx = 16 : xxx = 0
    Graphics.height / 32 % 2 == 0 ? yyy = 16 : yyy = 0
    x = $game_map.display_x + (Mouse.pos?[0] + xxx) / 32
    y = $game_map.display_y + (Mouse.pos?[1] + yyy) / 32
    x -= 0.5 if Graphics.width / 32 % 2 == 0
    y -= 0.5 if Graphics.height / 32 % 2 == 0
    return if start_map_event_mouse(x, y, [0,1,2], false)
    if MOUSE_DIR8
      x = $game_map.display_x * 32 + Mouse.pos?[0]
      y = $game_map.display_y * 32 + Mouse.pos?[1]
      x -= @x * 32 + 16
      y -= @y * 32 + 16
      angle = Math.atan(x.abs/y.abs) * (180 / Math::PI)
      angle = (90 - angle) + 90 if x > 0 && y > 0
      angle += 180 if x < 0 && y > 0
      angle = 90 - angle + 180 + 90 if x < 0 && y < 0
      move_straight(8) if angle >= 337 || angle < 22
      move_diagonal(6,8) if angle >= 22 && angle < 67
      move_straight(6) if angle >= 67 && angle < 112
      move_diagonal(6,2) if angle >= 112 && angle < 157
      move_straight(2) if angle >= 157 && angle < 202
      move_diagonal(4,2) if angle >= 202 && angle < 247
      move_straight(4) if angle >= 247 && angle < 292
      move_diagonal(4,8) if angle >= 292 && angle < 337
    else
      x = $game_map.display_x + Mouse.pos?[0] / 32
      y = $game_map.display_y + Mouse.pos?[1] / 32
      sx = distance_x_from(x)
      sy = distance_y_from(y)
      if sx.abs > sy.abs
        move_straight(sx > 0 ? 4 : 6)
        move_straight(sy > 0 ? 8 : 2) if !@move_succeed && sy != 0
      elsif sy != 0
        move_straight(sy > 0 ? 8 : 2)
        move_straight(sx > 0 ? 4 : 6) if !@move_succeed && sx != 0
      end
    end
  end
  def start_map_event_mouse(x, y, triggers, normal)
    return false if $game_map.interpreter.running?
    $game_map.events_xy(x, y).each do |event|
      next unless event.trigger_from_afar
      if event.trigger_in?(triggers)
        event.start
        return true
      end
    end
    return false
  end
end
#----------------------------------------------------------------------
# GAME_EVENT
#----------------------------------------------------------------------
class Game_Event
  def trigger_from_afar
    return @event.name.include?("&&")
  end
  def mouse_icon?
    @event.name =~ /I:(\d+)/ ? $1.to_i : false
  end
end
#----------------------------------------------------------------------
# SCENE MAP
#----------------------------------------------------------------------
class Scene_Map
  attr_accessor   :mouse_overlay
  alias mouse_update update
  alias mouse_overlay_init start
  alias mouse_pre_battle pre_battle_scene
  def start(*args)
    mouse_overlay_init(*args)
    @mouse_overlay = Mouse_Overlay.new if USE_MOUSE_BUTTONS
    @last_mouse_x = -1
    @last_mouse_y = -1
  end
  def update
    mouse_update
    mouse_input_events
    update_mouse_icon
  end
  def mouse_input_events
    xx = $game_player.screen_x
    yy = $game_player.screen_y
    xx -= 16;
    recttop = Rect.new(xx - 6, yy - 80, 44, 48)
    rectrit = Rect.new(xx + 32, yy - 36, 48, 44)
    rectbot = Rect.new(xx - 6, yy, 44, 48)
    rectleft = Rect.new(xx - 48, yy - 38, 48, 44)
    mouse_action(8) if Mouse.within?(recttop)
    mouse_action(6) if Mouse.within?(rectrit)
    mouse_action(2) if Mouse.within?(rectbot)
    mouse_action(4) if Mouse.within?(rectleft)
    call_menu if Mouse.rclick? and !$game_map.interpreter.running?
  end
  def update_mouse_icon
    Graphics.width / 32 % 2 == 0 ? xxx = 16 : xxx = 0
    Graphics.height / 32 % 2 == 0 ? yyy = 16 : yyy = 0
    x = $game_map.display_x + (Mouse.pos?[0] + xxx) / 32
    y = $game_map.display_y + (Mouse.pos?[1] + yyy) / 32
    x -= 0.5 if Graphics.width / 32 % 2 == 0
    y -= 0.5 if Graphics.height / 32 % 2 == 0
    return if x == @last_mouse_x && y == @last_mouse_y
    @last_mouse_x = x
    @last_mouse_y = y
    events = $game_map.events_xy(x,y)
    icon = $mouse_icon
    events.each do |event|
      icon = event.mouse_icon? if event.mouse_icon?
    end
    $cursor.set_icon(icon)
  end
  def mouse_action(d)
    return if !Mouse.rclick?(true) || $game_map.interpreter.running?
    $game_player.set_direction(d)
    $game_player.check_action_event
  end
  def pre_battle_scene
    mouse_pre_battle
    @mouse_overlay.dispose
  end
end
#----------------------------------------------------------------------
# WINDOW NUMBER INPUT
#----------------------------------------------------------------------
class Window_NumberInput
  OFS = 12
  WLH = 24
  alias mouse_update update
  def update
    mouse_update
    mouse_input if SceneManager.scene_is?(Scene_Map) and self.active
  end
  def mouse_input
    hold_rect = []
    xx = self.x + OFS
    yy = self.y + OFS
    width = 20
    rectttl = Rect.new(xx, yy, self.contents.width, WLH)
    for i in Range.new(0, @digits_max - 1)
      hold_rect.push(Rect.new(xx, yy, width, WLH))
      xx += width
    end
    for i in Range.new(0, @digits_max - 1)
      @index = i if Mouse.within?(hold_rect[i])
    end
    rectok = Rect.new(xx, yy, 34, 24)
    rectnum = Rect.new(self.x + OFS, yy, @digits_max * 20, WLH)
    self.process_ok if Mouse.within?(rectok) and Mouse.lclick?
    process_mouse_change if Mouse.within?(rectnum)
  end
  def refresh
    contents.clear
    change_color(normal_color)
    s = sprintf("%0*d", @digits_max, @number)
    @digits_max.times do |i|
      rect = item_rect(i)
      rect.x += 1
      draw_text(rect, s[i,1], 1)
    end
    draw_text(self.contents.width - 24, 0, 34, WLH, "OK")
  end
  def update_placement
    self.width = @digits_max * 20 + padding * 2 + 34
    self.height = fitting_height(1)
    self.x = (Graphics.width - width) / 2
    if @message_window.y >= Graphics.height / 2
      self.y = @message_window.y - height - 8
    else
      self.y = @message_window.y + @message_window.height + 8
    end
  end
  def process_mouse_change
    return unless active
    place = 10 ** (@digits_max - 1 - @index)
    n = @number / place % 10
    @number -= n * place
    if Mouse.lclick?
      n = (n + 1) % 10
      Sound.play_cursor
    end
    if Mouse.rclick?
      n = (n + 9) % 10
      Sound.play_cursor
    end
    @number += n * place
    refresh
  end
end
#----------------------------------------------------------------------
# MOUSE_OVERLAY
#---------------------------------------------------------------------- 
class Mouse_Overlay
  def initialize
    @mouse_buttons = []
    MOUSE_BUTTONS.size.times do |i|
      @mouse_buttons[i] = Mouse_Button.new
      @mouse_buttons[i].x = MOUSE_BUTTONS[i][0]
      @mouse_buttons[i].y = MOUSE_BUTTONS[i][1]
      @mouse_buttons[i].bitmap = Bitmap.new("Graphics/System/" + MOUSE_BUTTONS[i][2])
      @mouse_buttons[i].on_lclick = MOUSE_BUTTONS[i][3]
    end
  end
  def update
    @mouse_buttons.size.times do |i| @mouse_buttons[i].update end
    if Mouse.lclick?(true)
      @mouse_buttons.size.times do |i|
        if Mouse.within?(@mouse_buttons[i].current_rect?)
          @mouse_buttons[i].on_lclick_eval
          return true
        end
      end
    end
    return false
  end
  def dispose
    @mouse_buttons.each do |sprite|
      sprite.dispose
    end
  end
end
#----------------------------------------------------------------------
# MOUSE_BUTTON
#----------------------------------------------------------------------
class Mouse_Button < Sprite_Base
  attr_accessor   :on_lclick
  def current_rect?
    Rect.new(x,y,width,height)
  end
  def on_lclick_eval
    eval(on_lclick)
  end
end
#----------------------------------------------------------------------
# WINDOW_BASE
#----------------------------------------------------------------------
class Window_Base
  def rect
    Rect.new(self.x,self.y,self.width,self.height)
  end
end
#----------------------------------------------------------------------
# SCENE_OPTIONS
#----------------------------------------------------------------------
class Scene_Options < Scene_MenuBase
  alias mouse_update update
  def update
    mouse_update
    update_mouse
  end
  def update_mouse
    create_rects unless @rects
    @rects.size.times do |i|
      @index = i if Mouse.within?(@rects[i])
    end
    if Mouse.lclick?
      if audio_index(@index)
        x = Mouse.pos?[0]
        return if x < 48+4
        return if x > 48+4+400
        value = (x - 48).to_f / 400
        $game_options.preset_volume(:master, value) if @window_index[@index] == :master
        $game_options.preset_volume(:bgm, value) if @window_index[@index] == :bgm
        $game_options.preset_volume(:se, value) if @window_index[@index] == :se
        @window_masterbar.refresh($game_options.master_volume)
        @window_bgmbar.refresh($game_options.bgm_volume)
        @window_sebar.refresh($game_options.se_volume)
        Sound.play_cursor
        $game_map.autoplay if $game_map && $game_map.map_id > 0
      end
    end
  end
  def create_rects
    @rects = []
    WINDOW_ORDER.each do |sym|
      @rects.push(@window_masterbar.rect) if sym == :master
      @rects.push(@window_bgmbar.rect) if sym == :bgm
      @rects.push(@window_sebar.rect) if sym == :se
      @rects.push(@window_resolution.rect) if sym == :resolution
      @rects.push(@window_message.rect) if sym == :message_se
      @rects.push(@window_switch.rect) if sym == :switch
    end
    @rects.push(@window_command.rect)
  end
end
#----------------------------------------------------------------------
# WINDOW_RECIPECONFIRM
#---------------------------------------------------------------------- 
class Window_RecipeConfirm < Window_Selectable
  alias mouse_rec_update update
  def update
    mouse_rec_update
    update_mouse if self.active
  end
  def update_mouse
    @timer -= 1
    @mouse_all_rects = []
    @mouse_all_rects.push(Rect.new(self.x,self.y,self.contents.width*0.85,self.height))
    @mouse_all_rects.push(Rect.new(self.x + self.contents.width*0.85,self.y,self.contents.width*0.25,self.height))
    if Mouse.rclick?
      if Mouse.within?(@mouse_all_rects[1])
        change_amount(-1)
      else
        process_cancel if cancel_enabled?
      end
    elsif Mouse.lclick?
      process_ok if ok_enabled? && Mouse.within?(@mouse_all_rects[0])
      change_amount(1) if Mouse.within?(@mouse_all_rects[1])
    end
  end
  def within_index
    item_max.times {|i|
      return true if Mouse.within?(@mouse_all_rects[i]) }
    return false
  end
end

Now, what I'm trying to find in this script is the part that decides if the mouse is hovering over a selectable window. Why? Because I've been experimenting with the scripts and found out that if you create two selectable windows and make the two of them activate, they show up on the screen but you can only interact with the first window created.


So I thought, what if I check if the mouse is hovering over one of the windows and only that window gets activated so I could interact with it while the other window waits inactive? Is such a thing is even possible? I've been inspecting the mouse script since then but I think I'm in over my head with this one.


To make it more clear: Here I'm trying to create a scene for travelling, but I don't want the choices to be on the same window.
Again, Im fairly new to ruby and if none of this makes any sense, sorry :kaoswt2:
Anyways, what do you think veteran scripters? Is such a thing feasible? Why? Why not? What would be a good alternative path for me (who wants to create his own custom scripts instead of using others') to choose?
 

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
13,528
Reaction score
14,259
First Language
English
Primarily Uses
RMVXA
As a heads up, RGSSx scripts is for scripts you have made. You'll need to post in learning RGSSx for what you want. I'll move it over there for you.

Moving to Learning RGSSx

 

virusasa

Avernite
Member
Joined
Jun 4, 2017
Messages
15
Reaction score
5
First Language
English
Primarily Uses
RMVXA
As a heads up, RGSSx scripts is for scripts you have made. You'll need to post in learning RGSSx for what you want. I'll move it over there for you.

[mod]Moving to Learning RGSSx[/mod]
Oh, sorry about that, and thanks for the heads up :kaoswt2:
 

MobiusXVI

Game Maker
Veteran
Joined
Mar 20, 2013
Messages
383
Reaction score
91
First Language
English
Primarily Uses
Did you try setting the option "MOUSE_CLICK_WITHIN = false" to "
MOUSE_CLICK_WITHIN = true"? That seems like it should let you do what you're trying to do. Based on my initial reading of the code, the script will check to see if it's within the bounds of the window when you click before it calls the appropriate handler method as long as this option is set to 'true'
 

virusasa

Avernite
Member
Joined
Jun 4, 2017
Messages
15
Reaction score
5
First Language
English
Primarily Uses
RMVXA
Did you try setting the option "MOUSE_CLICK_WITHIN = false" to "
MOUSE_CLICK_WITHIN = true"? That seems like it should let you do what you're trying to do. Based on my initial reading of the code, the script will check to see if it's within the bounds of the window when you click before it calls the appropriate handler method as long as this option is set to 'true'
Thanks for the reply! If I change that to "true" the cursor stays within the game window as in application's borders. I've actually found an easier way to get the menu design I want so I don't actually need this anymore. However I'm still curious if what I asked before is do-able. If someone could enlighten us, I would be grateful.
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Profile Posts

Frostorm wrote on Featherbrain's profile.
Hey, so what species are your raptors? Any of these?
... so here's my main characters running around inside "Headspace", a place people use as a safe place away from anxious/panic related thinking.
Stream will be live shortly! I will be doing some music tonight! Feel free to drop by!
Made transition effects for going inside or outside using zoom, pixi filter, and a shutter effect
I have gathered enough feedback from a few selected people. But it is still available if you want to sign up https://forums.rpgmakerweb.com/index.php?threads/looking-for-testers-a-closed-tech-demo.130774/

Forum statistics

Threads
105,992
Messages
1,018,189
Members
137,771
Latest member
evoque
Top