Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================
- # • Sensor Event
- #==============================================================================
- # Autor: Dax
- # Requerimento: Dax Core
- # Versão: 1.0
- # Site: www.dax-soft.weebly.com
- #==============================================================================
- # • Descrição:
- #------------------------------------------------------------------------------
- # Um sistema de sensor, onde permite diferentes tipos de formas dos eventos
- # "sentir" a presença do jogador.
- #==============================================================================
- # • Como usar: Utilze os comandos em condições.
- #------------------------------------------------------------------------------
- # a : área em quadrados(tiles) em que o sensor será ativado. Por padrão é 1
- # b : ID do evento. Se definir nada, é o evento local. Por padrão é o evento local.
- #------------------------------------------------------------------------------
- # 1 * Primeiro tipo de sensor, e o sensor de área. O comando para calcular esse
- # tipo de sensor é o : sarea?(a, b) :
- # 2 * Sensor que verifica a parte frontal do evento.. sfront?(a, b)
- # 3 * Sensor que verifica a parte de trás do evento.. sago?(a, b)
- # 4 * Sensor que verifica a parte do lado esq. do evento sleft?(a, b)
- # 5 * Sensor que verifica a parte do lado dir. do e vento sright?(a, b)
- # 6 * Sensor que verifica as partes frontal, de trás, dos lado.. (Em forma de
- # cruz).. scross?(a, b)
- # 7 * Sensor que verifica somente a frente do evento.. Na visão do evento.
- # svision?(a, b)
- # 8 * Sensor que verifica se está sobre o evento.. sabout?(b)
- #==============================================================================
- Dax.register(:sensor_event, "Dax", 1.0, "12/07/14")
- #==============================================================================
- # • Game_Interpreter
- #==============================================================================
- class Game_Interpreter
- #----------------------------------------------------------------------------
- # • Pega as coordenadas do evento é do player.
- #----------------------------------------------------------------------------
- def block_sensor(b=nil)
- event = $game_map.events[b.nil? ? @event_id : Integer(b)]
- yield(event.x, event.y, $game_player.x, $game_player.y)
- end
- #----------------------------------------------------------------------------
- # • Sensor por área.
- #----------------------------------------------------------------------------
- def sarea?(a=1, b=nil)
- a = a < 0 || a.nil? ? 1 : Integer(a).abs
- distance = DMath.distance_sensor($game_player, $game_map.events[b.nil? ? @event_id : Integer(b)])
- return (distance <= Integer(a))
- end
- #----------------------------------------------------------------------------
- # • Sensor na frente do evento.
- #----------------------------------------------------------------------------
- def sfront?(a=1, b=nil)
- a = a < 0 || a.nil? ? 1 : Integer(a).abs
- block_sensor(b) { |ex, ey, px, py|
- return unless px == ex
- (ey..(ey + a)).each { |y|
- break unless $game_map.passable?(ex, y, 2)
- return true if py == y
- }
- }
- return false
- end
- #----------------------------------------------------------------------------
- # • Sensor atrás do evento.
- #----------------------------------------------------------------------------
- def sago?(a=1, b=nil)
- a = a < 0 || a.nil? ? 1 : Integer(a).abs
- block_sensor(b) { |ex, ey, px, py|
- return unless px == ex
- ey.downto(ey - a).each { |y|
- break unless $game_map.passable?(ex, y, 8)
- return true if py == y
- }
- }
- return false
- end
- #----------------------------------------------------------------------------
- # • Sensor quando estiver sobre o evento.
- #----------------------------------------------------------------------------
- def sabout?(b=nil)
- block_sensor(b) { |ex, ey, px, py| return true if px == ex && py == ey }
- return false
- end
- #----------------------------------------------------------------------------
- # • Sensor quando estiver a direita do evento.
- #----------------------------------------------------------------------------
- def sright?(a=1, b=nil)
- a = a < 0 || a.nil? ? 1 : Integer(a).abs
- block_sensor(b) {|ex, ey, px, py|
- return unless py == ey
- (ex..(ex + a)).each { |x|
- break unless $game_map.passable?(x, ey, 6)
- return true if px == x
- }
- }
- return false
- end
- #----------------------------------------------------------------------------
- # • Sensor quando estiver a esquerda do evento.
- #----------------------------------------------------------------------------
- def sleft?(a=1, b=nil)
- a = a < 0 || a.nil? ? 1 : Integer(a).abs
- block_sensor(b) {|ex, ey, px, py|
- return unless py == ey
- ex.downto(ex - a).each { |x|
- break unless $game_map.passable?(x, ey, 4)
- return true if px == x
- }
- }
- return false
- end
- #----------------------------------------------------------------------------
- # • Sensor em forma de cruz.
- #----------------------------------------------------------------------------
- def scross?(a=1, b=nil)
- sfront?(a, b) || sago?(a, b) || sright?(a, b) || sleft?(a, b)
- end
- #----------------------------------------------------------------------------
- # • Sensor que verifica somente a visão do evento.
- #----------------------------------------------------------------------------
- def svision?(a=1, b=nil)
- case $game_map.events[b.nil? ? @event_id : Integer(b)].direction
- when 2 then sfront?(a, b)
- when 4 then sleft?(a, b)
- when 6 then sright?(a, b)
- when 8 then sago?(a, b)
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement