TheoAllen

Theo - Memorize Event Position

Jun 17th, 2013
360
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.09 KB | None | 0 0
  1. # =============================================================================
  2. # TheoAllen - Memorize Event Position
  3. # Version : 1.0
  4. # Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com
  5. # (This script documentation is written in informal indonesian language)
  6. # =============================================================================
  7. ($imported ||= {})[:Theo_MemorizeEvent] = true
  8. # =============================================================================
  9. # CHANGE LOGS:
  10. # -----------------------------------------------------------------------------
  11. # 2013.06.18 - Finished script
  12. # =============================================================================
  13. =begin
  14.  
  15.   Perkenalan :
  16.   Script ini berfungsi untuk mengingat posisi terakhir dari sebuah event sebelum
  17.   berpindah ke map lain. Saat kamu kembali ke map itu, event tersebut akan
  18.   berada pada posisi terakhir kali sesaat sebelum player berpindah peta.
  19.  
  20.   Cara penggunaan :
  21.   Pasang dibawah material namun diatas main.
  22.   Tulis <memorize> pada awal nama event untuk mengingat posisi terakhir event
  23.  
  24.   Terms of use :
  25.   Credit gw, TheoAllen. Kalo semisal u bisa ngedit2 script gw trus jadi lebih
  26.   keren, terserah. Ane bebasin. Asal ngga ngeklaim aja. Kalo semisal mau
  27.   dipake buat komersil, jangan lupa, gw dibagi gratisannya.
  28.  
  29. =end
  30. # =============================================================================
  31. # Tidak ada konfigurasi
  32. # =============================================================================
  33. module THEO
  34.   module MAP
  35.   module REGEXP
  36.     MEMORIZE = /<(?:MEMORIZE|memorize)>(.*)/
  37.   end
  38.   end
  39. end
  40.  
  41. Point = Struct.new(:x,:y)
  42.  
  43. class Event_Memorizer
  44.  
  45.   def initialize
  46.     @data = {}
  47.   end
  48.  
  49.   def [](key)
  50.     if @data[key].nil?
  51.       event = $game_map.events[key[1]]
  52.       @data[key] = Point.new(event.x,event.y)
  53.     end
  54.     return @data[key]
  55.   end
  56.  
  57.   def []=(key,value)
  58.     @data[key] = value
  59.   end
  60.  
  61. end
  62.  
  63. class Game_System
  64.   attr_accessor :event_pos
  65.  
  66.   alias pre_evmemorize_init initialize
  67.   def initialize
  68.     pre_evmemorize_init
  69.     init_event_memorizer
  70.   end
  71.  
  72.   def init_event_memorizer
  73.     @event_pos = Event_Memorizer.new
  74.   end
  75. end
  76.  
  77. class Game_Event < Game_Character
  78.  
  79.   def name
  80.     @event.name
  81.   end
  82.  
  83. end
  84.  
  85. class Scene_Map < Scene_Base
  86.  
  87.   include THEO::MAP
  88.  
  89.   alias pre_evmemorize_transfer pre_transfer
  90.   def pre_transfer
  91.     pre_evmemorize_transfer
  92.     save_events_location
  93.   end
  94.  
  95.   def save_events_location
  96.     $game_map.events.each do |id,event|
  97.       case event.name
  98.       when REGEXP::MEMORIZE
  99.         $game_system.event_pos[[$game_map.map_id,id]]=Point.new(event.x,event.y)
  100.       end
  101.     end
  102.   end
  103.  
  104. end
  105.  
  106. class Game_Map
  107.  
  108.   include THEO::MAP
  109.  
  110.   alias pre_setup_evmemorize setup
  111.   def setup(map_id)
  112.     pre_setup_evmemorize(map_id)
  113.     load_events_location
  114.   end
  115.  
  116.   def load_events_location
  117.     events.each do |id,event|
  118.       case event.name
  119.       when REGEXP::MEMORIZE
  120.         point = $game_system.event_pos[[map_id,id]]
  121.         event.moveto(point.x,point.y)
  122.       end
  123.     end
  124.   end
  125.  
  126. end
Advertisement
Add Comment
Please, Sign In to add comment