Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #=======================================================
- # http://thiagodd.blogspot.com.br
- #
- # [TSDA] Interrupt Event
- # --> Version 1.0
- # by thiago_d_d
- #=======================================================
- # * Features
- #=======================================================
- # With this script, the player can interrupt some events
- # by simply pressing an directional key, so it will not
- # need to wait ofr sign messages for example.
- #=======================================================
- # * How to use
- #=======================================================
- # Put the event that can be be interrupted as PlacaDirection
- # Direction can be: 2 for down, 4 for left, 6 for right,
- # 8 for up.
- # Example:
- # Placa8 - with this, the event will be interrupted if
- # the player presses up.
- #=======================================================
- class Interpreter
- attr_reader :event_id
- end
- #-------------------------------------------------------
- class Game_Event
- def name
- return @event.name
- end
- end
- #-------------------------------------------------------
- class Game_Player
- attr_reader :direction
- alias sign_th_check_event_trigger_here check_event_trigger_here
- def check_event_trigger_here(triggers)
- result = false
- if $game_system.map_interpreter.running?
- return result
- end
- for i in $game_map.events.values
- if is_sign?(i)
- dir = sign_dir(i)
- x = i.x
- y = i.y
- dir2 = 0
- case dir
- when 2
- y += 1
- dir2 = 8
- when 4
- x -= 1
- dir2 = 6
- when 6
- x += 1
- dir2 = 4
- when 8
- y -= 1
- dir2 = 2
- end
- if @x == x && @y == y && @direction == dir2
- if not i.jumping?
- i.start
- result = true
- end
- end
- end
- end
- if result == true
- return result
- end
- sign_th_check_event_trigger_here(triggers)
- end
- end
- #-------------------------------------------------------
- class Scene_Map
- alias sign_th_update update
- def update
- if (!$game_player.moving? &&
- $game_system.map_interpreter.event_id > 0 &&
- $game_system.map_interpreter.running?)
- event_id = $game_system.map_interpreter.event_id
- event = $game_map.events[event_id]
- if is_sign?(event)
- ar = [2,4,6,8]
- ar2 = ["down","left","right","up"]
- index = ar.index($game_player.direction)
- ar.delete_at(index)
- ar2.delete_at(index)
- case Input.dir4
- when ar[0]
- eval("$game_player.move_" + ar2[0])
- sign_end
- when ar[1]
- eval("$game_player.move_" + ar2[1])
- sign_end
- when ar[2]
- eval("$game_player.move_" + ar2[2])
- sign_end
- end
- end
- end
- sign_th_update
- end
- #-----------------------------------------------------
- def sign_end
- $game_system.map_interpreter.command_end
- @message_window.terminate_message
- end
- #-----------------------------------------------------
- end
- def is_sign?(event)
- name = event.name.clone
- if (/Placa\d/) === name
- return true
- else
- return false
- end
- end
- #-----------------------------------------------------
- def sign_dir(event)
- if is_sign?(event)
- name = event.name.clone
- name.gsub!(/Placa/,"")
- dir = name.to_i
- return dir
- else
- return 0
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement