Advertisement
thiago_d_d

Interrupt Event

Jan 16th, 2013
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.43 KB | None | 0 0
  1. #=======================================================
  2. # http://thiagodd.blogspot.com.br
  3. #
  4. # [TSDA] Interrupt Event
  5. #   --> Version 1.0
  6. # by thiago_d_d
  7. #=======================================================
  8. # * Features
  9. #=======================================================
  10. # With this script, the player can interrupt some events
  11. # by simply pressing an directional key, so it will not
  12. # need to wait ofr sign messages for example.
  13. #=======================================================
  14. # * How to use
  15. #=======================================================
  16. # Put the event that can be be interrupted as PlacaDirection
  17. # Direction can be: 2 for down, 4 for left, 6 for right,
  18. # 8 for up.
  19. # Example:
  20. # Placa8 - with this, the event will be interrupted if
  21. # the player presses up.
  22. #=======================================================
  23. class Interpreter
  24.   attr_reader    :event_id
  25. end
  26. #-------------------------------------------------------
  27. class Game_Event
  28.   def name
  29.     return @event.name
  30.   end
  31. end
  32. #-------------------------------------------------------
  33. class Game_Player
  34.   attr_reader    :direction
  35.   alias sign_th_check_event_trigger_here check_event_trigger_here
  36.   def check_event_trigger_here(triggers)
  37.     result = false
  38.     if $game_system.map_interpreter.running?
  39.       return result
  40.     end
  41.     for i in $game_map.events.values
  42.       if is_sign?(i)
  43.         dir = sign_dir(i)
  44.         x = i.x
  45.         y = i.y
  46.         dir2 = 0
  47.         case dir
  48.         when 2
  49.           y += 1
  50.           dir2 = 8
  51.         when 4
  52.           x -= 1
  53.           dir2 = 6
  54.         when 6
  55.           x += 1
  56.           dir2 = 4
  57.         when 8
  58.           y -= 1
  59.           dir2 = 2
  60.         end
  61.         if @x == x && @y == y && @direction == dir2
  62.           if not i.jumping?
  63.             i.start
  64.             result = true
  65.           end
  66.         end
  67.       end
  68.     end
  69.     if result == true
  70.       return result
  71.     end
  72.     sign_th_check_event_trigger_here(triggers)
  73.   end
  74. end
  75. #-------------------------------------------------------
  76. class Scene_Map
  77.   alias sign_th_update update
  78.   def update
  79.     if (!$game_player.moving? &&
  80.       $game_system.map_interpreter.event_id > 0 &&
  81.       $game_system.map_interpreter.running?)
  82.       event_id = $game_system.map_interpreter.event_id
  83.       event = $game_map.events[event_id]
  84.       if is_sign?(event)
  85.         ar = [2,4,6,8]
  86.         ar2 = ["down","left","right","up"]
  87.         index = ar.index($game_player.direction)
  88.         ar.delete_at(index)
  89.         ar2.delete_at(index)
  90.         case Input.dir4
  91.         when ar[0]
  92.           eval("$game_player.move_" + ar2[0])
  93.           sign_end
  94.         when ar[1]
  95.           eval("$game_player.move_" + ar2[1])
  96.           sign_end
  97.         when ar[2]
  98.           eval("$game_player.move_" + ar2[2])
  99.           sign_end
  100.         end
  101.       end
  102.     end
  103.     sign_th_update
  104.   end
  105.   #-----------------------------------------------------
  106.   def sign_end
  107.     $game_system.map_interpreter.command_end
  108.     @message_window.terminate_message
  109.   end
  110.   #-----------------------------------------------------
  111. end
  112. def is_sign?(event)
  113.   name = event.name.clone
  114.   if (/Placa\d/) === name
  115.     return true
  116.   else
  117.     return false
  118.   end
  119. end
  120. #-----------------------------------------------------
  121. def sign_dir(event)
  122.   if is_sign?(event)
  123.     name = event.name.clone
  124.     name.gsub!(/Placa/,"")
  125.     dir = name.to_i
  126.     return dir
  127.   else
  128.     return 0
  129.   end
  130. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement