View Range Module 5.0

28 de julho de 2015

View Range Module é um script para o RPG Maker XP, desenvolvido pelo Near Fantastica e o SephirothSpawn, que é usado para testar a posição de objetos em comparação com outro objeto.

Ele pode testar se um objeto está em um raio circular definido ou em uma região retangular defina. O módulo também vai dizer a você as distâncias entre os objetos. Você pode usar isto como condições, opções de script ou em variáveis stock.

Código do View Range Module 5.0:

#==============================================================================
# ** 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

Informações adicionais

Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!

Deixe um comentário

Inscreva-se na nossa newsletter!