Advertisement
KingGerar

NPC Region Move by Raizen

Dec 29th, 2015
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.99 KB | None | 0 0
  1. #-------------------------------------------------------------------------------
  2. #                              NPC Region Move
  3. #-------------------------------------------------------------------------------
  4. # Este script faz com que determinados eventos somente andem sobre tiles com
  5. # determinadas regiões.
  6. #-------------------------------------------------------------------------------
  7. # Instruções:
  8. # Comente o evento com "<region id>"
  9. # No id colocar o id da region que o npc se moverá :)
  10. #===============================================================================
  11.  
  12. #===============================================================================
  13. # ** Game_CharacterBase
  14. #-------------------------------------------------------------------------------
  15. #  Esta classe gerencia os personagens. Comum a todos os persongens, armazena
  16. # informações básicas como coordenadas e gráficos
  17. # Esta classe é usada como superclasse da classe Game_Character.
  18. #===============================================================================
  19.  
  20. class Game_Event < Game_Character
  21.   #-----------------------------------------------------------------------------
  22.   # * Movimento em linha reta em
  23.   #     d       : direção (2,4,6,8)
  24.   #     turn_ok : permissão para mudar de direção
  25.   #-----------------------------------------------------------------------------
  26.   def move_straight(d, turn_ok = true)
  27.       if @list[0].parameters[0][0..6] == '<region'
  28.         @list[0].parameters[0][9] != '>' ? @region_id = @list[0].parameters[0][8..9] : @region_id = list[0].parameters[0][8]
  29.       end
  30.         @move_succeed = passable?(@x, @y, d)
  31.       @move_succeed = false unless $game_map.region_to_pass(@x, @y, d) == @region_id.to_i
  32.     if @move_succeed
  33.       set_direction(d)
  34.       @x = $game_map.round_x_with_direction(@x, d)
  35.       @y = $game_map.round_y_with_direction(@y, d)
  36.       @real_x = $game_map.x_with_direction(@x, reverse_dir(d))
  37.       @real_y = $game_map.y_with_direction(@y, reverse_dir(d))
  38.       increase_steps
  39.     elsif turn_ok
  40.       set_direction(d)
  41.       check_event_trigger_touch_front
  42.     end
  43.   end
  44. end
  45. #===============================================================================
  46. # ** Game_Map
  47. #-------------------------------------------------------------------------------
  48. #  Esta classe gerencia o mapa. Inclui funções de rolagem e definição de
  49. # passagens. A instância desta classe é referenciada por $game_map.
  50. #===============================================================================
  51.  
  52. class Game_Map
  53.   #-----------------------------------------------------------------------------
  54.   # * Definição de ID da região
  55.   #     x   : coordenada X
  56.   #     y   : coordenada Y
  57.   #-----------------------------------------------------------------------------
  58.   def region_to_pass(x, y, d)
  59.     case d
  60.     when 2
  61.       y += 1
  62.     when 4
  63.       x -= 1
  64.     when 6
  65.       x += 1
  66.     when 8
  67.       y -= 1
  68.     end
  69.     valid?(x, y) ? @map.data[x, y, 3] >> 8 : 0
  70.   end
  71. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement