Advertisement
LiTTleDRAgo

[RGSS] Multiple Event Trigger

Mar 15th, 2013
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 4.57 KB | None | 0 0
  1. #==============================================================================
  2. # [XP] DRG - Multiple Event Trigger
  3. # Version: 1.10
  4. # Author : LiTTleDRAgo
  5. #==============================================================================
  6. #==============================================================================
  7. # ** Game_Character
  8. #------------------------------------------------------------------------------
  9. #  This class deals with characters. It's used as a superclass for the
  10. #  Game_Player and Game_Event classes.
  11. #==============================================================================
  12. if !defined?(Window_ActorCommand)
  13. class Game_Character
  14.   #--------------------------------------------------------------------------
  15.   # * Some Crap about map_trigger
  16.   #--------------------------------------------------------------------------
  17.   def map_trigger(*a)  maptrigger(*a)                    end
  18.   def drg1632013_s(*a) event_table[a[0],a[1]] = a[2]     end
  19.   def event_table()    
  20.     s = $game_map.instance_variable_get(:@event_table)
  21.     s = $game_map.instance_variable_set(:@event_table, {}) if !s.is_a?(Hash)
  22.     i = $game_map.map_id
  23.     m = $game_map.instance_variable_get(:@map) if s[i].nil?          
  24.     m = Table.new(m.width*2, m.height*2)       if s[i].nil?
  25.     s[i] = m                                   if s[i].nil?
  26.     return s[i]
  27.   end
  28.   def maptrigger(x,y,id=@id)
  29.     x,y = [x.is_a?(Integer) ? [x]*2 : x, y.is_a?(Integer) ? [y]*2 : y ]
  30.     x,y = [x.is_a?(Range) ? x.to_a : x, y.is_a?(Range) ? y.to_a : y ]
  31.     return if !x.is_a?(Array) || !y.is_a?(Array)
  32.     x.each {|a| y.each {|b|drg1632013_s(a,b,id) }}
  33.   end
  34. end
  35.  
  36. #==============================================================================
  37. # ** Game_Player
  38. #------------------------------------------------------------------------------
  39. #  This class handles the player. Its functions include event starting
  40. #  determinants and map scrolling. Refer to "$game_player" for the one
  41. #  instance of this class.
  42. #==============================================================================
  43.    
  44. class Game_Player
  45.   #--------------------------------------------------------------------------
  46.   # * Alias Method
  47.   #--------------------------------------------------------------------------
  48.   if !method_defined?(:drg1532013_here)
  49.     alias drg1532013_here check_event_trigger_here
  50.     alias drg1532013_there check_event_trigger_there
  51.     alias drg1532013_touch check_event_trigger_touch
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   # * Same Position Starting Determinant
  55.   #--------------------------------------------------------------------------
  56.   def check_event_trigger_here(t)
  57.     result = drg1532013_here(t)
  58.     s = event_table[@x, @y] || 0
  59.     e = $game_map.events[s] if $game_map.events.include?(s)
  60.     s = !e.nil? && t.include?(e.trigger) && !e.jumping?
  61.     [e.start, result = true] if s && !$game_system.map_interpreter.running?
  62.     return result
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # * Front Event Starting Determinant
  66.   #--------------------------------------------------------------------------
  67.   def check_event_trigger_there(t)
  68.     result = drg1532013_there(t)
  69.     new_x = @x + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
  70.     new_y = @y + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
  71.     return result if $game_system.map_interpreter.running?
  72.     s = event_table[new_x, new_y] || 0
  73.     e = $game_map.events[s] if $game_map.events.include?(s)
  74.     f = !e.nil? && t.include?(e.trigger) && !e.jumping?
  75.     [e.start, result = true] if  f
  76.     if result == false && $game_map.counter?(new_x, new_y)
  77.       new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
  78.       new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
  79.       s = event_table[new_x, new_y] || 0
  80.       e = $game_map.events[s] if $game_map.events.include?(s)
  81.       f = !e.nil? && t.include?(e.trigger) && !e.jumping?
  82.       [e.start, result = true] if f
  83.     end
  84.     return result
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # * Touch Event Starting Determinant
  88.   #--------------------------------------------------------------------------
  89.   def check_event_trigger_touch(x, y)
  90.     result = drg1532013_touch(x, y)
  91.     s = event_table[x, y] || 0
  92.     e = $game_map.events[s] if $game_map.events.include?(s)
  93.     s = !e.nil? && [1,2].include?(e.trigger) && !e.jumping?
  94.     [e.start, result = true] if s && !$game_system.map_interpreter.running?
  95.     return result
  96.   end
  97. end
  98. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement