Advertisement
DaxSoft

Ultimate Sensor Event 3.0

Dec 21st, 2014
386
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.46 KB | None | 0 0
  1. #==============================================================================
  2. # • Ultimate Sensor Event
  3. #==============================================================================
  4. # Autor: Dax
  5. # Requerimento: Dax Core
  6. # Versão: 3.0
  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.0]
  22. # 1 * Primeiro tipo de sensor, e o sensor de área. O comando para usar esse
  23. # tipo de sensor é o : sarea?(a, b) :
  24. # 2 * Sensor que verifica se está em baixo do evento..: sfront?(a, b)
  25. # 3 * Sensor que verifica se está em cima do evento..: sago?(a, b)
  26. # 4 * Sensor que verifica se está a esquerda do evento: sleft?(a, b)
  27. # 5 * Sensor que verifica se está a direita do evento: sright?(a, b)
  28. # 6 * Sensor que faz uma verificação em forma de cruz: scross?(a, b)
  29. # 7 * Sensor que verifica se está somente na visão do evento: svision?(a, b)
  30. # 8 * Sensor que verifica se está sobre o evento.. sabout?(b)
  31. # • [2.0~2.5] :
  32. # 9 * Sensor que verifica se está somente atrás do evento. sbehind?(a, b)
  33. # 10 * Sensor que verifica se está somente a esquerda do evento. vleft?(a, b)
  34. # 11 * Sensor que verifica se está somente a direita do evento. vright?(a, b)
  35. # 12 * Sensor que verifica em forma de cone, na visão do evento. scone?(a, b)
  36. # 13 * Sensor que verifica em forma de círculo. scircle?(a, b)
  37. # • [3.0] :
  38. # 14 * Sensor que verifica a esquerda-superior na diagonal. dsleft?(a, b)
  39. # 15 * Sensor que verifica a esquerda-inferior na diagonal. dileft?(a, b)
  40. # 16 * Sensor que verifica a direita-superior na diagonal. dsright?(a, b)
  41. # 17 * Sensor que verifica a direita-inferior na diagonal. diright?(a, b)
  42. # 18 * Sensor que verifica em todos os lados na diagonal. diagonal?(a, b)
  43. # 19 * Sensor que verifica em forma de círculo. scircle?(a, b)
  44. # 20 * Sensor que verifica a diagonal de acordo com a visão do evento. vdiagonal?(a, b)
  45. #------------------------------------------------------------------------------
  46. # * Atenção, o item 2 á 5 são estáticos, ou seja,
  47. # serão fixos independente da direção em que o evento esteja
  48. # * Os itens 7, 9, 10, 11: Em uma linha reta
  49. #==============================================================================
  50. Dax.register(:sensor_event, "Dax", 3.0, "12/07/14")
  51. #==============================================================================
  52. # • Game_Interpreter
  53. #==============================================================================
  54. class Game_Interpreter
  55. #----------------------------------------------------------------------------
  56. # • Inicialização do objeto
  57. #----------------------------------------------------------------------------
  58. alias :_sensorEvent_init :initialize
  59. def initialize(*args)
  60. _sensorEvent_init
  61. @_nozero = ->(number) { return (number < 0 || number.nil? ? 1 : number.to_i) }
  62. end
  63. #----------------------------------------------------------------------------
  64. # • Pega as coordenadas do evento é do player.
  65. #----------------------------------------------------------------------------
  66. def block_sensor(b=nil)
  67. event = $game_map.events[b.nil? ? @event_id : Integer(b)]
  68. yield(event.x, event.y, $game_player.x, $game_player.y)
  69. end
  70. #----------------------------------------------------------------------------
  71. # • Sensor por área.
  72. #----------------------------------------------------------------------------
  73. def sarea?(a=1, b=nil)
  74. a = @_nozero[a]
  75. distance = DMath.distance_sensor($game_player, $game_map.events[b.nil? ? @event_id : Integer(b)])
  76. return (distance <= a)
  77. end
  78. #----------------------------------------------------------------------------
  79. # • Sensor na frente do evento.
  80. #----------------------------------------------------------------------------
  81. def sfront?(a=1, b=nil)
  82. a = @_nozero[a]
  83. block_sensor(b) { |ex, ey, px, py|
  84. return unless px == ex
  85. (ey..(ey + a)).each { |y|
  86. break unless $game_map.passable?(ex, y, 2)
  87. return true if py == y
  88. }
  89. }
  90. return false
  91. end
  92. #----------------------------------------------------------------------------
  93. # • Sensor atrás do evento.
  94. #----------------------------------------------------------------------------
  95. def sago?(a=1, b=nil)
  96. a = @_nozero[a]
  97. block_sensor(b) { |ex, ey, px, py|
  98. return unless px == ex
  99. ey.downto(ey - a).each { |y|
  100. break unless $game_map.passable?(ex, y, 8)
  101. return true if py == y
  102. }
  103. }
  104. return false
  105. end
  106. #----------------------------------------------------------------------------
  107. # • Sensor quando estiver sobre o evento.
  108. #----------------------------------------------------------------------------
  109. def sabout?(b=nil)
  110. block_sensor(b) { |ex, ey, px, py| return true if px == ex && py == ey }
  111. return false
  112. end
  113. #----------------------------------------------------------------------------
  114. # • Sensor quando estiver a direita do evento.
  115. #----------------------------------------------------------------------------
  116. def sright?(a=1, b=nil)
  117. a = @_nozero[a]
  118. block_sensor(b) {|ex, ey, px, py|
  119. return unless py == ey
  120. (ex..(ex + a)).each { |x|
  121. break unless $game_map.passable?(x, ey, 6)
  122. return true if px == x
  123. }
  124. }
  125. return false
  126. end
  127. #----------------------------------------------------------------------------
  128. # • Sensor quando estiver a esquerda do evento.
  129. #----------------------------------------------------------------------------
  130. def sleft?(a=1, b=nil)
  131. a = @_nozero[a]
  132. block_sensor(b) {|ex, ey, px, py|
  133. return unless py == ey
  134. ex.downto(ex - a).each { |x|
  135. break unless $game_map.passable?(x, ey, 4)
  136. return true if px == x
  137. }
  138. }
  139. return false
  140. end
  141. #----------------------------------------------------------------------------
  142. # • Sensor em forma de cruz.
  143. #----------------------------------------------------------------------------
  144. def scross?(a=1, b=nil)
  145. sfront?(a, b) || sago?(a, b) || sright?(a, b) || sleft?(a, b)
  146. end
  147. #----------------------------------------------------------------------------
  148. # • Sensor que verifica somente a visão do evento.
  149. #----------------------------------------------------------------------------
  150. def svision?(a=1, b=nil)
  151. case $game_map.events[b.nil? ? @event_id : Integer(b)].direction
  152. when 2 then sfront?(a, b)
  153. when 4 then sleft?(a, b)
  154. when 6 then sright?(a, b)
  155. when 8 then sago?(a, b)
  156. end
  157. end
  158. #----------------------------------------------------------------------------
  159. # • Sensor que verifica se está somente atrás do evento.
  160. #----------------------------------------------------------------------------
  161. def sbehind?(a=1, b=nil)
  162. case $game_map.events[b.nil? ? @event_id : Integer(b)].direction
  163. when 2 then sago?(a, b)
  164. when 4 then sright?(a, b)
  165. when 6 then sleft?(a, b)
  166. when 8 then sfront?(a, b)
  167. end
  168. end
  169. #----------------------------------------------------------------------------
  170. # • Sensor que verifica se está somente a esquerda do evento.
  171. #----------------------------------------------------------------------------
  172. def vleft?(a=1, b=nil)
  173. case $game_map.events[b.nil? ? @event_id : Integer(b)].direction
  174. when 2 then sright?(a, b)
  175. when 4 then sfront?(a, b)
  176. when 6 then sago?(a, b)
  177. when 8 then sleft?(a, b)
  178. end
  179. end
  180. #----------------------------------------------------------------------------
  181. # • Sensor que verifica se está somente a direita do evento.
  182. #----------------------------------------------------------------------------
  183. def vright?(a=1, b=nil)
  184. case $game_map.events[b.nil? ? @event_id : Integer(b)].direction
  185. when 2 then sleft?(a, b)
  186. when 4 then sfront?(a, b)
  187. when 6 then sago?(a, b)
  188. when 8 then sright?(a, b)
  189. end
  190. end
  191. #----------------------------------------------------------------------------
  192. # • Sensor que verifica o lado esquerdo-superior na diagonal.
  193. #----------------------------------------------------------------------------
  194. def dsleft?(a=1, b=nil)
  195. a = @_nozero[a]
  196. block_sensor(b) {|ex, ey, px, py|
  197. 0.upto(a) { |i| return true if px == (ex - i) and py == (ey - i) }
  198. }
  199. return false
  200. end
  201. #----------------------------------------------------------------------------
  202. # • Sensor que verifica o lado direito-superior na diagonal.
  203. #----------------------------------------------------------------------------
  204. def dsright?(a=1, b=nil)
  205. a = @_nozero[a]
  206. block_sensor(b) {|ex, ey, px, py|
  207. 0.upto(a) { |i| return true if px == (ex + i) and py == (ey - i) }
  208. }
  209. return false
  210. end
  211. #----------------------------------------------------------------------------
  212. # • Sensor que verifica o lado esquerdo-inferior na diagonal.
  213. #----------------------------------------------------------------------------
  214. def dileft?(a=1, b=nil)
  215. a = @_nozero[a]
  216. block_sensor(b) {|ex, ey, px, py|
  217. 0.upto(a) { |i| return true if px == (ex - i) and py == (ey + i) }
  218. }
  219. return false
  220. end
  221. #----------------------------------------------------------------------------
  222. # • Sensor que verifica o lado direito-inferior na diagonal.
  223. #----------------------------------------------------------------------------
  224. def diright?(a=1, b=nil)
  225. a = @_nozero[a]
  226. block_sensor(b) {|ex, ey, px, py|
  227. 0.upto(a) { |i| return true if px == (ex + i) and py == (ey + i) }
  228. }
  229. return false
  230. end
  231. #----------------------------------------------------------------------------
  232. # • Sensor que verifica a diagonal em todos os lados.
  233. #----------------------------------------------------------------------------
  234. def diagonal?(a=1, b=nil)
  235. dsleft?(a, b) || dsright?(a, b) || dileft?(a, b) || diright?(a, b)
  236. end
  237. #----------------------------------------------------------------------------
  238. # • Sensor que verifica a diagonal de acordo com a visão do evento.
  239. #----------------------------------------------------------------------------
  240. def vdiagonal?(a=1, b=nil)
  241. case $game_map.events[b.nil? ? @event_id : Integer(b)].direction
  242. when 2 then dileft?(a, b) || diright?(a, b)
  243. when 4 then dsleft?(a, b) || dileft?(a, b)
  244. when 6 then dsright?(a, b) || diright?(a, b)
  245. when 8 then dsleft?(a, b) || dsright?(a, b)
  246. end
  247. end
  248. #----------------------------------------------------------------------------
  249. # • Sensor que verifica em forma de círculo.
  250. #----------------------------------------------------------------------------
  251. def scircle?(a=2, b=nil)
  252. diagonal?(a-1, b) || scross?(a, b)
  253. end
  254. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement