Sabikku
Nagrody:
Ranga RM:
Pomógł: 73 razy Dołączył: 04 Kwi 2010 Posty: 428
Wysłany: Sob 05 Mar, 2011 18:35
Cytat: A jak maksymalnie można powiększyć.
Na tyle, na ile pozwala silniczek makera lub twoje zasoby sprzętowe - obstawiam 10-20.
Cytat: rozpędziłem się z tamtym komentarzem, Sabbiku, edytowałbyś go tak, aby zmniejszał/powiększał tylko te zdarzenie gdzie wpisze zoom np. "2.33" bo nie przeczytałem ze zrozumieniem i myślałem że to powiększa/zmniejsza dane zdarzenie.
Nie mam humoru na testy, więc nie gwarantuję braku problemów, ale łap:
Spoiler:
Kod: # ================================================================
# Character Resize Script.
# ----------------------------------------------------------------
# * by Sabikku
# * 26.07.10
# * zamthir.net/forum
# * ultimateam.pl
# ================================================================
class Game_Character
attr_accessor :zoom
alias zoomold_init initialize
def initialize
zoomold_init
@zoom = 1.0
end
end
class Game_Map
# Setup. -------------------------------------------------------
alias sab_setup setup
def setup(map_id)
sab_setup(map_id)
for event in @map.events.values
if event.name.gsub(/[0-9]+.[0-9]+/,'')=='zoom '
@events[event.id].zoom = (event.name.gsub(/zoom /,'')).to_f
end
end
end
end
# ================================================================
class Spriteset_Map
# Initialize. --------------------------------------------------
def initialize
# Make viewports
@viewport1 = Viewport.new(0, 0, 640, 480)
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport2.z = 200
@viewport3.z = 5000
# Make tilemap
@tilemap = Tilemap.new(@viewport1)
@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
# Make panorama plane
@panorama = Plane.new(@viewport1)
@panorama.z = -1000
# Make fog plane
@fog = Plane.new(@viewport1)
@fog.z = 3000
# Make character sprites
@character_sprites = []
for i in $game_map.events.keys.sort
# -----
sprite = Sprite_Character.new(@viewport1, $game_map.events[i], zoom = $game_map.events[i].zoom)
# -----
@character_sprites.push(sprite)
end
@character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
# Make weather
@weather = RPG::Weather.new(@viewport1)
# Make picture sprites
@picture_sprites = []
for i in 1..50
@picture_sprites.push(Sprite_Picture.new(@viewport2,
$game_screen.pictures[i]))
end
# Make timer sprite
@timer_sprite = Sprite_Timer.new
# Frame update
update
end
end
# ================================================================
class Sprite_Character < RPG::Sprite
attr_accessor :zoom
# Initialize. --------------------------------------------------
alias zoomold_init initialize
def initialize(a,b, zoom = 1.0)
@zoom = zoom
zoomold_init(a,b)
end
# Update. ------------------------------------------------------
def update
super
# If tile ID, file name, or hue are different from current ones
if @tile_id != @character.tile_id or
@character_name != @character.character_name or
@character_hue != @character.character_hue
# Remember tile ID, file name, and hue
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_hue = @character.character_hue
# If tile ID value is valid
if @tile_id >= 384
self.bitmap = RPG::Cache.tile($game_map.tileset_name,
@tile_id, @character.character_hue)
self.src_rect.set(0, 0, 32, 32)
self.ox = 16
self.oy = 32
# If tile ID value is invalid
else
self.bitmap = RPG::Cache.character(@character.character_name,
@character.character_hue)
self.zoom_x = @zoom # <-----
self.zoom_y = @zoom # <-----
@cw = bitmap.width / 4
@ch = bitmap.height / 4
self.ox = @cw / 2
self.oy = @ch
end
end
# Set visible situation
self.visible = (not @character.transparent)
# If graphic is character
if @tile_id == 0
# Set rectangular transfer
sx = @character.pattern * @cw
sy = (@character.direction - 2) / 2 * @ch
self.src_rect.set(sx, sy, @cw, @ch)
end
# Set sprite coordinates
self.x = @character.screen_x
self.y = @character.screen_y
self.z = @character.screen_z(@ch)
# Set opacity level, blend method, and bush depth
self.opacity = @character.opacity
self.blend_type = @character.blend_type
self.bush_depth = @character.bush_depth
# Animation
if @character.animation_id != 0
animation = $data_animations[@character.animation_id]
animation(animation, true)
@character.animation_id = 0
end
end
end
# ================================================================