Large Door Fix XP
Large Door Fix XPby Kyonides
Introduction
Have you ever noticed that all doors that are more than 32 pixels wide are automatically centered by the default event scripts?
There is a reason for that effect. They are supposed to be used as a single event that is wide enough for your heroes to slip into important buildings or dangerous dungeons. Nonetheless, that doesn't look quite good while waiting to enter a modern or futuristic supermarket, does it?
That's exactly why you need to grab this script!
It will make it possible to use it as if you had placed 2 door events in a row.
Actually, the other door event should display NO graphic.
Remember that the filename should ALWAYS include some @ at symbol.
Ruby:
# * Large Door Fix XP * #
# Scripter : Kyonides Arkanthes
# 2023-09-11
# - The file names of Door Character Sprites should begin with an @ symbol. - #
# That symbol can be either the 1st or 2nd or even the 3rd character of the
# filename. The fix will work as long as the @ symbol is there!
class Sprite_Character
def update
super
update_bitmap
update_visible
update_src_rect
update_screen
update_animation
end
def update_bitmap
if @tile_id != @character.tile_id or
@character_name != @character.character_name or
@character_hue != @character.character_hue
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_hue = @character.character_hue
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
else
c = @character
self.bitmap = RPG::Cache.character(c.character_name, c.character_hue)
@cw = bitmap.width / 4
@ch = bitmap.height / 4
# Large Door Fix
self.ox = @character_name[/@/] ? 32 : @cw / 2
self.oy = @ch
end
end
end
def update_visible
self.visible = !@character.transparent
end
def update_src_rect
if @tile_id == 0
sx = @character.pattern * @cw
sy = (@character.direction - 2) / 2 * @ch
self.src_rect.set(sx, sy, @cw, @ch)
end
end
def update_screen
self.x = @character.screen_x
self.y = @character.screen_y
self.z = @character.screen_z(@ch)
self.opacity = @character.opacity
self.blend_type = @character.blend_type
self.bush_depth = @character.bush_depth
end
def update_animation
if @character.animation_id != 0
animation = $data_animations[@character.animation_id]
animation(animation, true)
@character.animation_id = 0
end
end
end
Terms & Conditions
Free for use in ANY game.
Don't remove the header and its comments!
That's it!
本贴来自国际rpgmaker官方论坛作者:kyonides处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/large-door-fix-xp.161109/
页:
[1]