Advertisement
DaxSoft

Sensor Event

Jul 20th, 2014
322
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.81 KB | None | 0 0
  1. #==============================================================================
  2. # • Sensor Event
  3. #==============================================================================
  4. # Autor: Dax
  5. # Requerimento: Dax Core
  6. # Versão: 1.0
  7. # Site: www.dax-soft.weebly.com
  8. #==============================================================================
  9. # • Descrição:
  10. #------------------------------------------------------------------------------
  11. # Um sistema de sensor, onde permite diferentes tipos de formas dos eventos
  12. # "sentir" a presença do jogador.
  13. #==============================================================================
  14. # • Como usar: Utilze os comandos em condições.
  15. #------------------------------------------------------------------------------
  16. # a : área em quadrados(tiles) em que o sensor será ativado. Por padrão é 1
  17. # b : ID do evento. Se definir nada, é o evento local. Por padrão é o evento local.
  18. #------------------------------------------------------------------------------
  19. # 1 * Primeiro tipo de sensor, e o sensor de área. O comando para calcular esse
  20. # tipo de sensor é o : sarea?(a, b) :
  21. # 2 * Sensor que verifica a parte frontal do evento.. sfront?(a, b)
  22. # 3 * Sensor que verifica a parte de trás do evento.. sago?(a, b)
  23. # 4 * Sensor que verifica a parte do lado esq. do evento sleft?(a, b)
  24. # 5 * Sensor que verifica a parte do lado dir. do e vento sright?(a, b)
  25. # 6 * Sensor que verifica as partes frontal, de trás, dos lado.. (Em forma de
  26. # cruz).. scross?(a, b)
  27. # 7 * Sensor que verifica somente a frente do evento.. Na visão do evento.
  28. # svision?(a, b)
  29. # 8 * Sensor que verifica se está sobre o evento.. sabout?(b)
  30. #==============================================================================
  31. Dax.register(:sensor_event, "Dax", 1.0, "12/07/14")
  32. #==============================================================================
  33. # • Game_Interpreter
  34. #==============================================================================
  35. class Game_Interpreter
  36. #----------------------------------------------------------------------------
  37. # • Pega as coordenadas do evento é do player.
  38. #----------------------------------------------------------------------------
  39. def block_sensor(b=nil)
  40. event = $game_map.events[b.nil? ? @event_id : Integer(b)]
  41. yield(event.x, event.y, $game_player.x, $game_player.y)
  42. end
  43. #----------------------------------------------------------------------------
  44. # • Sensor por área.
  45. #----------------------------------------------------------------------------
  46. def sarea?(a=1, b=nil)
  47. a = a < 0 || a.nil? ? 1 : Integer(a).abs
  48. distance = DMath.distance_sensor($game_player, $game_map.events[b.nil? ? @event_id : Integer(b)])
  49. return (distance <= Integer(a))
  50. end
  51. #----------------------------------------------------------------------------
  52. # • Sensor na frente do evento.
  53. #----------------------------------------------------------------------------
  54. def sfront?(a=1, b=nil)
  55. a = a < 0 || a.nil? ? 1 : Integer(a).abs
  56. block_sensor(b) { |ex, ey, px, py|
  57. return unless px == ex
  58. (ey..(ey + a)).each { |y|
  59. break unless $game_map.passable?(ex, y, 2)
  60. return true if py == y
  61. }
  62. }
  63. return false
  64. end
  65. #----------------------------------------------------------------------------
  66. # • Sensor atrás do evento.
  67. #----------------------------------------------------------------------------
  68. def sago?(a=1, b=nil)
  69. a = a < 0 || a.nil? ? 1 : Integer(a).abs
  70. block_sensor(b) { |ex, ey, px, py|
  71. return unless px == ex
  72. ey.downto(ey - a).each { |y|
  73. break unless $game_map.passable?(ex, y, 8)
  74. return true if py == y
  75. }
  76. }
  77. return false
  78. end
  79. #----------------------------------------------------------------------------
  80. # • Sensor quando estiver sobre o evento.
  81. #----------------------------------------------------------------------------
  82. def sabout?(b=nil)
  83. block_sensor(b) { |ex, ey, px, py| return true if px == ex && py == ey }
  84. return false
  85. end
  86. #----------------------------------------------------------------------------
  87. # • Sensor quando estiver a direita do evento.
  88. #----------------------------------------------------------------------------
  89. def sright?(a=1, b=nil)
  90. a = a < 0 || a.nil? ? 1 : Integer(a).abs
  91. block_sensor(b) {|ex, ey, px, py|
  92. return unless py == ey
  93. (ex..(ex + a)).each { |x|
  94. break unless $game_map.passable?(x, ey, 6)
  95. return true if px == x
  96. }
  97. }
  98. return false
  99. end
  100. #----------------------------------------------------------------------------
  101. # • Sensor quando estiver a esquerda do evento.
  102. #----------------------------------------------------------------------------
  103. def sleft?(a=1, b=nil)
  104. a = a < 0 || a.nil? ? 1 : Integer(a).abs
  105. block_sensor(b) {|ex, ey, px, py|
  106. return unless py == ey
  107. ex.downto(ex - a).each { |x|
  108. break unless $game_map.passable?(x, ey, 4)
  109. return true if px == x
  110. }
  111. }
  112. return false
  113. end
  114. #----------------------------------------------------------------------------
  115. # • Sensor em forma de cruz.
  116. #----------------------------------------------------------------------------
  117. def scross?(a=1, b=nil)
  118. sfront?(a, b) || sago?(a, b) || sright?(a, b) || sleft?(a, b)
  119. end
  120. #----------------------------------------------------------------------------
  121. # • Sensor que verifica somente a visão do evento.
  122. #----------------------------------------------------------------------------
  123. def svision?(a=1, b=nil)
  124. case $game_map.events[b.nil? ? @event_id : Integer(b)].direction
  125. when 2 then sfront?(a, b)
  126. when 4 then sleft?(a, b)
  127. when 6 then sright?(a, b)
  128. when 8 then sago?(a, b)
  129. end
  130. end
  131. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement