TheoAllen

Theo - Terrain Tag as Passabilty

Jun 30th, 2013
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.89 KB | None | 0 0
  1. # =============================================================================
  2. # TheoAllen - Terrain Tag as Passability
  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_TagPassability] = true
  8. # =============================================================================
  9. # CHANGE LOGS:
  10. # -----------------------------------------------------------------------------
  11. # 2013.06.21 - Finished script
  12. # =============================================================================
  13. =begin
  14.  
  15.   Perkenalan :
  16.   Script ini berfungsi untuk menggunakan terrain tag sebagai passability
  17.   disamping menggunakan X dan O.
  18.  
  19.   Cara penggunaan :
  20.   Pasang dibawah material namun diatas main
  21.   Setelah kamu selesai menyetting terrain tag dalam database, gunakan comment
  22.   pada event
  23.  
  24.   <terrain tag: n>
  25.   <terrain tag: m,n>
  26.   <terrain tag: m,n, ...>
  27.  
  28.   Dimana n dan m adalah angka terrain tag. Kamu bisa menambahkan angka sebanyak
  29.   kamu mau. misalnya <terrain tag: 1,2,3,4,5,6>
  30.  
  31.   Ingat, jika sebuah event sudah ditentukan terrain tagnya, maka event itu
  32.   tidak akan bisa bergerak walaupun di tile dengan passability O
  33.  
  34.   Terms of use :
  35.   Credit gw, TheoAllen. Kalo semisal u bisa ngedit2 script gw trus jadi lebih
  36.   keren, terserah. Ane bebasin. Asal ngga ngeklaim aja. Kalo semisal mau
  37.   dipake buat komersil, jangan lupa, gw dibagi gratisannya.
  38.  
  39.  
  40. =end
  41. # =============================================================================
  42. # Tidak ada konfigurasi
  43. # =============================================================================
  44. module THEO
  45.   module MAP
  46.   module REGEXP
  47.     TAGS = /<(?:TERRAIN_TAG|terrain tag):[ ]*[ ]*(\d+(?:\s*,\s*\d+)*)>/i
  48.   end
  49.   end
  50. end
  51.  
  52. class Game_Event < Game_Character
  53.  
  54.   alias ori_passable? map_passable?
  55.   def map_passable?(x,y,d)
  56.     return ori_passable?(x,y,d) if @tag_passable.empty?
  57.     return tag_passable?(x,y,d)
  58.   end  
  59.  
  60.  
  61.   def read_tag_passability
  62.     @tag_passable = []
  63.     @list.each do |command|
  64.       next unless command.code == 108 || command.code == 408
  65.       case command.parameters[0]
  66.       when THEO::MAP::REGEXP::TAGS
  67.         $1.scan(/\d+/).each do |num|
  68.           puts num.to_i
  69.           @tag_passable.push(num.to_i)
  70.         end
  71.       end
  72.     end
  73.   end
  74.  
  75.   def tag_passable?(x,y,d)
  76.     x2 = $game_map.round_x_with_direction(x, d)
  77.     y2 = $game_map.round_y_with_direction(y, d)
  78.     @tag_passable.include?($game_map.terrain_tag(x2,y2))
  79.   end
  80.  
  81. end
  82.  
  83. class Game_Map
  84.  
  85.   alias pre_tag_setup setup
  86.   def setup(map_id)
  87.     pre_tag_setup(map_id)
  88.     setup_event_passability
  89.   end
  90.  
  91.   def setup_event_passability
  92.     @events.values.each do |event|
  93.       event.read_tag_passability
  94.     end
  95.   end
  96.  
  97. end
Advertisement
Add Comment
Please, Sign In to add comment