Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

How do I use "View Range Script. By Near Fantastica

A link to the code here: viewtopic.php?f=12&t=30648&hilit=Near+Fantastica


I just simply do not understand what to do. I put the script into my database and named it View_Range. From there... I don't really understand what to do.

I've tried a few things, but they just resulted in error during a game test.

Help would be most appreciated.
 
First off, make sure you have the most updated version:
Code:
#============================================================================== 

# ** Modules.View Range (5.0)               By Near Fantastica & SephirothSpawn

#------------------------------------------------------------------------------

# * Description :

#

#   The View Range Module is used to test objects position in comparision with

#   another object. It can test if an object is within a defined circular

#   range of another object or a rectangular defined region. It can also tell

#   you this distances between objects.

#------------------------------------------------------------------------------

# * Syntax :

#

#   Test if object is within defined range from another object :

#    - VR.in_range?(object1, object2, range)

#    - VR.in_range?(object1x, object1y, object2x, object2y, range)

#

#   Test if object is within defined rectanlge :

#    - VR.in_rect_range?(object, <args>)

#    - VR.in_rect_range?(x, y, <args>)

#

#    args can either be : x, y, width, height or Rect.new(x, y, width, height)

#

#   Test range between objects :

#    - range = VR.range(object1, object2, <integer>)

#    - range = VR.range(object1x, object1y, object2x, object2y, <integer>)

#

#    integer : if true, returns integer ; if false, returns float

#==============================================================================

 

MACL::Loaded << 'Modules.View Range'

 

#==============================================================================

# ** View Range

#==============================================================================

 

module VR

  #----------------------------------------------------------------------------

  # * Within Range Test

  #----------------------------------------------------------------------------

  def VR.in_range?(*args)

    # If 3 Arguments (Element, Object, Range)

    if args.size == 3

      x = (args[0].x - args[1].x) ** 2

      y = (args[0].y - args[1].y) ** 2

      r = args[2]

    # If 5 Arguments (Elementx, Elementy, Objectx, Objecty, Range)

    elsif args.size == 5

      x = (args[0] - args[2]) ** 2

      y = (args[1] - args[3]) ** 2

      r = args[4]

    else

      p 'Wrong Defined Number of Arguments'

      return 

    end

    return (x + y) <= (r * r)

  end

  #----------------------------------------------------------------------------

  # * Within Rect Range Test

  #----------------------------------------------------------------------------

  def VR.in_rect_range?(*args)

    # If 2 Arguments (Object, Rect)

    if args.size == 2

      x_, y_ = args[0].x, args[0].y

      x, y, w, h = args[1].x, args[1].y, args[1].width, args[1].height

    # If 3 Arguments (Objectx, Objecty, Rect)

    elsif args.size == 3

      x_, y_ = args[0], args[1]

      x, y, w, h = args[2].x, args[2].y, args[2].width, args[2].height

    # If 5 Arguments (Object, Rectx, Recty, Rectwidth, Rectheight)

    elsif args.size == 5

      x_, y_ = args[0].x, args[0].y

      x, y, w, h = args[1], args[2], args[3], args[4]

    # If 6 Arguments (Objectx, Objecty, Rectx, Recty, Rectwidth, Rectheight)

    elsif args.size == 6

      x_, y_, x, y, w, h = *args

    else

      p 'Wrong Defined Number of Arguments'

      return

    end

    # Return Object Within Rect

    return x_.between?(x, x + w) && y_.between?(y, y + h)

  end

  #----------------------------------------------------------------------------

  # * Range

  #----------------------------------------------------------------------------

  def VR.range(*args)

    # If 2 Arguments (Element, Object)

    if args.size == 2

      x = (args[0].x - args[1].x) * (args[0].x - args[1].x)

      y = (args[0].y - args[1].y) * (args[0].y - args[1].y)

      integer = true

    # If 3 Arguments (Element, Object, Integer

    elsif args.size == 3

      x = (args[0].x - args[1].x) * (args[0].x - args[1].x)

      y = (args[0].y - args[1].y) * (args[0].y - args[1].y)

      integer = args[2]

    # If 4 Arguments (Elementx, Elementy, Objectx, Objecty)

    elsif args.size == 4

      x = (args[0] - args[2]) * (args[0] - args[2])

      y = (args[1] - args[3]) * (args[1] - args[3])

      integer = true

    # If 5 Arguments (Elementx, Elementy, Objectx, Objecty, integer)

    elsif args.size == 5

      x = (args[0] - args[2]) * (args[0] - args[2])

      y = (args[1] - args[3]) * (args[1] - args[3])

      integer = args[4]

    else

      p 'Wrong Defined Number of Arguments'

      return

    end

    r = Math.sqrt(x + y)

    return integer ? r.to_i : r

  end

end

As it says in the script heading, you can test:
- If object is within x distance from another object
- If object is bound within a rectangle
- Return the distance from one object to another

You can use this for the Condition and script option, store variables, etc.

Anyways, to test if object 1 is within x distances to object 2. You can use any object with a .x and .y instance, more often you use events and the player.
Code:
# Events

$game_map.events[event_id]

# Player

$game_player

So to test if the player is within 5 tiles of a target event
Code:
VR.in_range?($game_player, $game_map.events[event_id], 5)

It's as simple as that. Be sure to read the script heading, and ask any questions if you are unsure about something.
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top