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