Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================
- # ■ Game_Map
- # Pokemon Script Project - Krosk
- # 10/11/07
- #-----------------------------------------------------------------------------
- # Scène à ne pas modifier de préférence
- #-----------------------------------------------------------------------------
- class Game_Map
- def setup(map_id)
- @map_id = map_id
- @map = load_data(sprintf("Data/Map%03d.rxdata", @map_id)) <---- l'erreur est indiquer ici
- tileset = $data_tilesets[@map.tileset_id]
- @tileset_name = tileset.tileset_name
- @autotile_names = tileset.autotile_names
- @panorama_name = tileset.panorama_name
- @panorama_hue = tileset.panorama_hue
- @fog_name = tileset.fog_name
- @fog_hue = tileset.fog_hue
- @fog_opacity = tileset.fog_opacity
- @fog_blend_type = tileset.fog_blend_type
- @fog_zoom = tileset.fog_zoom
- @fog_sx = tileset.fog_sx
- @fog_sy = tileset.fog_sy
- @battleback_name = tileset.battleback_name
- @passages = tileset.passages
- @priorities = tileset.priorities
- @terrain_tags = tileset.terrain_tags
- @display_x = 0
- @display_y = 0
- @need_refresh = false
- @events = {}
- for i in @map.events.keys
- @events[i] = Game_Event.new(@map_id, @map.events[i])
- end
- @common_events = {}
- for i in 1...$data_common_events.size
- @common_events[i] = Game_CommonEvent.new(i)
- end
- @fog_ox = 0
- @fog_oy = 0
- @fog_tone = Tone.new(0, 0, 0, 0)
- @fog_tone_target = Tone.new(0, 0, 0, 0)
- @fog_tone_duration = 0
- @fog_opacity_duration = 0
- @fog_opacity_target = 0
- @scroll_direction = 2
- @scroll_rest = 0
- @scroll_speed = 4
- if map_id == POKEMON_S::_WMAPID
- @need_refresh = true
- end
- end
- def passable?(x, y, d, self_event = nil)
- # 与えられた座標がマップ外の場合
- unless valid?(x, y)
- # 通行不可
- return false
- end
- # 方向 (0,2,4,6,8,10) から 障害物ビット (0,1,2,4,8,0) に変換
- bit = (1 << (d / 2 - 1)) & 0x0f
- # すべてのイベントでループ
- for event in events.values
- # 自分以外のタイルと座標が一致した場合
- if event.tile_id >= 0 and event != self_event and
- event.x == x and event.y == y and not event.through
- # 障害物ビットがセットされている場合
- if @passages[event.tile_id] & bit != 0
- # 通行不可
- return false
- # 全方向の障害物ビットがセットされている場合
- elsif @passages[event.tile_id] & 0x0f == 0x0f
- # 通行不可
- return false
- # それ以外で プライオリティが 0 の場合
- elsif @priorities[event.tile_id] == 0
- # 通行可
- return true
- end
- end
- end
- # Surf
- if self_event != nil
- if $game_map.terrain_tag(x, y) == 7 and self_event.terrain_tag != 7
- return false
- end
- if $game_map.terrain_tag(x, y) != 7 and self_event.terrain_tag == 7
- if self_event.type == Game_Player
- # Retour au skin normal
- $game_temp.common_event_id = POKEMON_S::Skill_Info.map_use(POKEMON_S::Skill_Info.id("SURF"))
- end
- return false
- end
- end
- # レイヤーの上から順に調べるループ
- for i in [2, 1, 0]
- # タイル ID を取得
- tile_id = data[x, y, i]
- # タイル ID 取得失敗
- if tile_id == nil
- # 通行不可
- return false
- # 障害物ビットがセットされている場合
- elsif @passages[tile_id] & bit != 0
- # 通行不可
- return false
- # 全方向の障害物ビットがセットされている場合
- elsif @passages[tile_id] & 0x0f == 0x0f
- # 通行不可
- return false
- # それ以外で プライオリティが 0 の場合
- elsif @priorities[tile_id] == 0
- # 通行可
- return true
- end
- end
- # 通行可
- return true
- end
- def bgm
- return @map.bgm
- end
- def refresh
- if @map_id > 0
- for event in @events.values
- event.refresh
- end
- for common_event in @common_events.values
- common_event.refresh
- end
- end
- if @map_id == POKEMON_S::_WMAPID and $scene.type == Scene_Map
- $scene.initialize_world_map
- end
- @need_refresh = false
- end
- def terrain_tag(x, y)
- if @map_id != 0
- for i in [2, 1, 0]
- tile_id = data[x, y, i]
- if tile_id == nil or @terrain_tags[tile_id] == nil
- return 0
- elsif @terrain_tags[tile_id] != nil and @terrain_tags[tile_id] > 0
- return @terrain_tags[tile_id]
- end
- end
- end
- return 0
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement