Existuje způsob jak změnit tileset mapy bez toho, aby se udělala nová mapa?
Příklad z RMK2K3:
Z tohoto:
Toto:
V RMK2K3 to jde jednim příkazem a to Change Map Tileset. Existuje ře?ení skrz script
Moderátor: Moderátoři
class Game_System
attr_accessor :tileset_settings
alias tileset_initialize initialize
def initialize
tileset_initialize
@tileset_settings = Hash.new
end
end
class Game_Map
attr_accessor :tileset_flag
def setup(map_id)
# Put map ID in @map_id memory
@map_id = map_id
# Load map from file and set @map
@map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
# set tile set information in opening instance variables
if $game_system.tileset_settings[@map_id] != nil
tileset_id = $game_system.tileset_settings[@map_id]
else
tileset_id = @map.tileset_id
end
tileset = $data_tilesets[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
# Initialize displayed coordinates
@display_x = 0
@display_y = 0
# Clear refresh request flag
@need_refresh = false
# Set map event data
@events = {}
for i in @map.events.keys
@events[i] = Game_Event.new(@map_id, @map.events[i])
end
# Set common event data
@common_events = {}
for i in 1...$data_common_events.size
@common_events[i] = Game_CommonEvent.new(i)
end
# Initialize all fog information
@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
# Initialize scroll information
@scroll_direction = 2
@scroll_rest = 0
@scroll_speed = 4
end
def change_tileset(tileset_id)
$game_system.tileset_settings[@map_id] = tileset_id
tileset = $data_tilesets[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
@tileset_flag = true
end
end
class Spriteset_Map
alias tileset_update update
def update
if $game_map.tileset_flag
@tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
for i in 0..6
autotile_name = $game_map.autotile_names[i]
@tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
end
@tilemap.map_data = $game_map.data
@tilemap.priorities = $game_map.priorities
$game_map.tileset_flag = false
end
tileset_update
end
end
Grim píše:Dá? mi link kde jsi to vzal Pro lep?í pochopení. Díky.
Zpět na Problémy, tipy, rady, tutoriály k RPG Makeru XP
Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník