Advertisement
DaxSoft

Ultimate Sensor Event 2.5

Sep 9th, 2014
404
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #==============================================================================
  2. # • Ultimate Sensor Event
  3. #==============================================================================
  4. # Autor: Dax
  5. # Requerimento: Dax Core
  6. # Versão: 2.5
  7. # Site: www.dax-soft.weebly.com
  8. #==============================================================================
  9. # @tiagoms : Feedback que ajudou a incrementar mais.
  10. #==============================================================================
  11. # • Descrição:
  12. #------------------------------------------------------------------------------
  13. # Um sistema de sensor, onde permite diferentes tipos de formas dos eventos
  14. # "sentir" a presença do jogador.
  15. #==============================================================================
  16. # • Como usar: Utilze os comandos em condições.
  17. #------------------------------------------------------------------------------
  18. # a : área em quadrados(tiles) em que o sensor será ativado. Por padrão é 1
  19. # b : ID do evento. Se definir nada, é o evento local. Por padrão é o evento local.
  20. #------------------------------------------------------------------------------
  21. # 1 * Primeiro tipo de sensor, e o sensor de área. O comando para calcular esse
  22. # tipo de sensor é o : sarea?(a, b) :
  23. # 2 * Sensor que verifica se está em baixo do evento..: sfront?(a, b)
  24. # 3 * Sensor que verifica se está em cima do evento..: sago?(a, b)
  25. # 4 * Sensor que verifica se está a esquerda do evento: sleft?(a, b)
  26. # 5 * Sensor que verifica se está a direita do evento: sright?(a, b)
  27. # 6 * Sensor que faz uma verificação em forma de cruz: scross?(a, b)
  28. # 7 * Sensor que verifica se está somente na visão do evento: svision?(a, b)
  29. # 8 * Sensor que verifica se está sobre o evento.. sabout?(b)
  30. # 9 * Sensor que verifica se está somente atrás do evento. sbehind?(a, b)
  31. # 10 * Sensor que verifica se está somente a esquerda do evento. vleft?(a, b)
  32. # 11 * Sensor que verifica se está somente a direita do evento. vright?(a, b)
  33. #------------------------------------------------------------------------------
  34. # * Atenção, o item 2 á 5 são estáticos, ou seja,
  35. # serão fixos independente da direção em que o evento esteja
  36. # * Os itens 7, 9, 10, 11: Em uma linha reta
  37. #------------------------------------------------------------------------------
  38. #==============================================================================
  39. Dax.register(:sensor_event, "Dax", 2.5, "12/07/14")
  40. #==============================================================================
  41. # • Game_Interpreter
  42. #==============================================================================
  43. class Game_Interpreter
  44. #----------------------------------------------------------------------------
  45. # • Pega as coordenadas do evento é do player.
  46. #----------------------------------------------------------------------------
  47. def block_sensor(b=nil)
  48. event = $game_map.events[b.nil? ? @event_id : Integer(b)]
  49. yield(event.x, event.y, $game_player.x, $game_player.y)
  50. end
  51. #----------------------------------------------------------------------------
  52. # • Sensor por área.
  53. #----------------------------------------------------------------------------
  54. def sarea?(a=1, b=nil)
  55. a = a < 0 || a.nil? ? 1 : Integer(a).abs
  56. distance = DMath.distance_sensor($game_player, $game_map.events[b.nil? ? @event_id : Integer(b)])
  57. return (distance <= a)
  58. end
  59. #----------------------------------------------------------------------------
  60. # • Sensor na frente do evento.
  61. #----------------------------------------------------------------------------
  62. def sfront?(a=1, b=nil)
  63. a = a < 0 || a.nil? ? 1 : Integer(a).abs
  64. block_sensor(b) { |ex, ey, px, py|
  65. return unless px == ex
  66. (ey..(ey + a)).each { |y|
  67. break unless $game_map.passable?(ex, y, 2)
  68. return true if py == y
  69. }
  70. }
  71. return false
  72. end
  73. #----------------------------------------------------------------------------
  74. # • Sensor atrás do evento.
  75. #----------------------------------------------------------------------------
  76. def sago?(a=1, b=nil)
  77. a = a < 0 || a.nil? ? 1 : Integer(a).abs
  78. block_sensor(b) { |ex, ey, px, py|
  79. return unless px == ex
  80. ey.downto(ey - a).each { |y|
  81. break unless $game_map.passable?(ex, y, 8)
  82. return true if py == y
  83. }
  84. }
  85. return false
  86. end
  87. #----------------------------------------------------------------------------
  88. # • Sensor quando estiver sobre o evento.
  89. #----------------------------------------------------------------------------
  90. def sabout?(b=nil)
  91. block_sensor(b) { |ex, ey, px, py| return true if px == ex && py == ey }
  92. return false
  93. end
  94. #----------------------------------------------------------------------------
  95. # • Sensor quando estiver a direita do evento.
  96. #----------------------------------------------------------------------------
  97. def sright?(a=1, b=nil)
  98. a = a < 0 || a.nil? ? 1 : Integer(a).abs
  99. block_sensor(b) {|ex, ey, px, py|
  100. return unless py == ey
  101. (ex..(ex + a)).each { |x|
  102. break unless $game_map.passable?(x, ey, 6)
  103. return true if px == x
  104. }
  105. }
  106. return false
  107. end
  108. #----------------------------------------------------------------------------
  109. # • Sensor quando estiver a esquerda do evento.
  110. #----------------------------------------------------------------------------
  111. def sleft?(a=1, b=nil)
  112. a = a < 0 || a.nil? ? 1 : Integer(a).abs
  113. block_sensor(b) {|ex, ey, px, py|
  114. return unless py == ey
  115. ex.downto(ex - a).each { |x|
  116. break unless $game_map.passable?(x, ey, 4)
  117. return true if px == x
  118. }
  119. }
  120. return false
  121. end
  122. #----------------------------------------------------------------------------
  123. # • Sensor em forma de cruz.
  124. #----------------------------------------------------------------------------
  125. def scross?(a=1, b=nil)
  126. sfront?(a, b) || sago?(a, b) || sright?(a, b) || sleft?(a, b)
  127. end
  128. #----------------------------------------------------------------------------
  129. # • Sensor que verifica somente a visão do evento.
  130. #----------------------------------------------------------------------------
  131. def svision?(a=1, b=nil)
  132. case $game_map.events[b.nil? ? @event_id : Integer(b)].direction
  133. when 2 then sfront?(a, b)
  134. when 4 then sleft?(a, b)
  135. when 6 then sright?(a, b)
  136. when 8 then sago?(a, b)
  137. end
  138. end
  139. #----------------------------------------------------------------------------
  140. # • Sensor que verifica se está somente atrás do evento.
  141. #----------------------------------------------------------------------------
  142. def sbehind?(a=1, b=nil)
  143. case $game_map.events[b.nil? ? @event_id : Integer(b)].direction
  144. when 2 then sago?(a, b)
  145. when 4 then sright?(a, b)
  146. when 6 then sleft?(a, b)
  147. when 8 then sfront?(a, b)
  148. end
  149. end
  150. #----------------------------------------------------------------------------
  151. # • Sensor que verifica se está somente a esquerda do evento.
  152. #----------------------------------------------------------------------------
  153. def vleft?(a=1, b=nil)
  154. case $game_map.events[b.nil? ? @event_id : Integer(b)].direction
  155. when 2 then sright?(a, b)
  156. when 4 then sfront?(a, b)
  157. when 6 then sago?(a, b)
  158. when 8 then sleft?(a, b)
  159. end
  160. end
  161. #----------------------------------------------------------------------------
  162. # • Sensor que verifica se está somente a direita do evento.
  163. #----------------------------------------------------------------------------
  164. def vright?(a=1, b=nil)
  165. case $game_map.events[b.nil? ? @event_id : Integer(b)].direction
  166. when 2 then sleft?(a, b)
  167. when 4 then sfront?(a, b)
  168. when 6 then sago?(a, b)
  169. when 8 then sright?(a, b)
  170. end
  171. end
  172. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement