Advertisement
Guest User

Game_Map

a guest
Aug 26th, 2020
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.77 KB | None | 0 0
  1. #==============================================================================
  2. # ■ Game_Map
  3. # Pokemon Script Project - Krosk
  4. # 10/11/07
  5. #-----------------------------------------------------------------------------
  6. # Scène à ne pas modifier de préférence
  7. #-----------------------------------------------------------------------------
  8.  
  9. class Game_Map
  10. def setup(map_id)
  11. @map_id = map_id
  12. @map = load_data(sprintf("Data/Map%03d.rxdata", @map_id)) <---- l'erreur est indiquer ici
  13. tileset = $data_tilesets[@map.tileset_id]
  14. @tileset_name = tileset.tileset_name
  15. @autotile_names = tileset.autotile_names
  16. @panorama_name = tileset.panorama_name
  17. @panorama_hue = tileset.panorama_hue
  18. @fog_name = tileset.fog_name
  19. @fog_hue = tileset.fog_hue
  20. @fog_opacity = tileset.fog_opacity
  21. @fog_blend_type = tileset.fog_blend_type
  22. @fog_zoom = tileset.fog_zoom
  23. @fog_sx = tileset.fog_sx
  24. @fog_sy = tileset.fog_sy
  25. @battleback_name = tileset.battleback_name
  26. @passages = tileset.passages
  27. @priorities = tileset.priorities
  28. @terrain_tags = tileset.terrain_tags
  29. @display_x = 0
  30. @display_y = 0
  31. @need_refresh = false
  32. @events = {}
  33. for i in @map.events.keys
  34. @events[i] = Game_Event.new(@map_id, @map.events[i])
  35. end
  36. @common_events = {}
  37. for i in 1...$data_common_events.size
  38. @common_events[i] = Game_CommonEvent.new(i)
  39. end
  40. @fog_ox = 0
  41. @fog_oy = 0
  42. @fog_tone = Tone.new(0, 0, 0, 0)
  43. @fog_tone_target = Tone.new(0, 0, 0, 0)
  44. @fog_tone_duration = 0
  45. @fog_opacity_duration = 0
  46. @fog_opacity_target = 0
  47. @scroll_direction = 2
  48. @scroll_rest = 0
  49. @scroll_speed = 4
  50. if map_id == POKEMON_S::_WMAPID
  51. @need_refresh = true
  52. end
  53. end
  54.  
  55. def passable?(x, y, d, self_event = nil)
  56. # 与えられた座標がマップ外の場合
  57. unless valid?(x, y)
  58. # 通行不可
  59. return false
  60. end
  61. # 方向 (0,2,4,6,8,10) から 障害物ビット (0,1,2,4,8,0) に変換
  62. bit = (1 << (d / 2 - 1)) & 0x0f
  63. # すべてのイベントでループ
  64. for event in events.values
  65. # 自分以外のタイルと座標が一致した場合
  66. if event.tile_id >= 0 and event != self_event and
  67. event.x == x and event.y == y and not event.through
  68. # 障害物ビットがセットされている場合
  69. if @passages[event.tile_id] & bit != 0
  70. # 通行不可
  71. return false
  72. # 全方向の障害物ビットがセットされている場合
  73. elsif @passages[event.tile_id] & 0x0f == 0x0f
  74. # 通行不可
  75. return false
  76. # それ以外で プライオリティが 0 の場合
  77. elsif @priorities[event.tile_id] == 0
  78. # 通行可
  79. return true
  80. end
  81. end
  82. end
  83.  
  84. # Surf
  85. if self_event != nil
  86. if $game_map.terrain_tag(x, y) == 7 and self_event.terrain_tag != 7
  87. return false
  88. end
  89. if $game_map.terrain_tag(x, y) != 7 and self_event.terrain_tag == 7
  90. if self_event.type == Game_Player
  91. # Retour au skin normal
  92. $game_temp.common_event_id = POKEMON_S::Skill_Info.map_use(POKEMON_S::Skill_Info.id("SURF"))
  93. end
  94. return false
  95. end
  96. end
  97.  
  98. # レイヤーの上から順に調べるループ
  99. for i in [2, 1, 0]
  100. # タイル ID を取得
  101. tile_id = data[x, y, i]
  102. # タイル ID 取得失敗
  103. if tile_id == nil
  104. # 通行不可
  105. return false
  106. # 障害物ビットがセットされている場合
  107. elsif @passages[tile_id] & bit != 0
  108. # 通行不可
  109. return false
  110. # 全方向の障害物ビットがセットされている場合
  111. elsif @passages[tile_id] & 0x0f == 0x0f
  112. # 通行不可
  113. return false
  114. # それ以外で プライオリティが 0 の場合
  115. elsif @priorities[tile_id] == 0
  116. # 通行可
  117. return true
  118. end
  119. end
  120. # 通行可
  121. return true
  122. end
  123.  
  124. def bgm
  125. return @map.bgm
  126. end
  127.  
  128. def refresh
  129. if @map_id > 0
  130. for event in @events.values
  131. event.refresh
  132. end
  133. for common_event in @common_events.values
  134. common_event.refresh
  135. end
  136. end
  137. if @map_id == POKEMON_S::_WMAPID and $scene.type == Scene_Map
  138. $scene.initialize_world_map
  139. end
  140. @need_refresh = false
  141. end
  142.  
  143. def terrain_tag(x, y)
  144. if @map_id != 0
  145. for i in [2, 1, 0]
  146. tile_id = data[x, y, i]
  147. if tile_id == nil or @terrain_tags[tile_id] == nil
  148. return 0
  149. elsif @terrain_tags[tile_id] != nil and @terrain_tags[tile_id] > 0
  150. return @terrain_tags[tile_id]
  151. end
  152. end
  153. end
  154. return 0
  155. end
  156.  
  157. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement