月夜响荡曲的地图遮盖,有更新
借助两张原游戏的图说明效果#==============================================================================
# 月夜响荡曲的地图遮盖
# BY:仲秋 感谢:Sion,LBQ
#==============================================================================
# 使用方法:
# 1、事件名称叫做“MapMask”
# 2、注释中写入【"R, G, B"】颜色,注意空格,可以不写,默认0, 0, 0
# 3、同行写入【(X1, Y1, X2, Y2)】的数字,1是地图中的开始位置,2是结束位置,注意空格
# 这个是覆盖的方块效果
# 4、同行写入【】的数字,1是地图中的开始位置,2是结束位置,注意空格
# 这是在哪个区域内遮盖层透明,可以显示被遮盖的地点
# 5、同行写入【{X1, Y1, X2, Y2}】的数字,1是地图中的开始位置,2是结束位置,注意空格
# 这是在4的设定之下在这个区域内遮盖层不透明,用做墙壁(?)
#==============================================================================
# 修改处:Spriteset_Map:initialize重新定义
# update增加定义
# Scene_Map:perform_transfer重新定义
#==============================================================================
# ■ Spriteset_Map
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
def initialize
create_viewports
create_tilemap
create_parallax
create_characters
create_shadow
create_weather
create_pictures
create_timer
@mask_sprites = []
$game_map.events.values.each do |event|
if event.name==("MapMask")
for list in event.list
if list.code == 108
parameter = list.parameters
if parameter != nil
if parameter[/\"(\d+), (\d+), (\d+)\"/]
color = Color.new($1.to_i, $2.to_i, $3.to_i)
else
color = Color.new(0, 0, 0)
end
sprite = Sprite.new(@viewport1)
parameter[/\((\d+), (\d+), (\d+), (\d+)\)/]
sprite.x = $1.to_i*32+16
sprite.y = $2.to_i*32+16
sprite.z = 2000
sprite.bitmap = Bitmap.new(($3.to_i - $1.to_i)*32, ($4.to_i - $2.to_i)*32)
sprite.bitmap.fill_rect(0, 0, sprite.bitmap.width,sprite.bitmap.height, color)
if parameter[/<(\d+), (\d+), (\d+), (\d+)>/]
sprite.bitmap.fill_rect($1.to_i * 32 - sprite.x + 16,
$2.to_i * 32 - sprite.y + 16, ($3.to_i - $1.to_i) * 32,
($4.to_i - $2.to_i) * 32, Color.new(0, 0, 0, 0))
end
parameter[/\[(\d+), (\d+), (\d+), (\d+)\]/]
mask = ,[]]
if parameter[/{(\d+), (\d+), (\d+), (\d+)}/]
mask = [$1.to_i, $2.to_i, $3.to_i, $4.to_i]
end
if (mask..mask) === $game_player.x and
(mask..mask) === $game_player.y and
(mask.empty? or
not ((mask..mask) === $game_player.x and
(mask..mask) === $game_player.y))
mask.opacity = 0
else
mask.opacity = 255
end
end
@mask_sprites.push(mask)
end;end;end
end
update
end
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
alias hehe_update update
def update
hehe_update
$game_map.events.values.each do |event|
if event.name==("MapMask")
for list in event.list
if list.code == 108
for mask in @mask_sprites
mask.ox = $game_map.display_x*32
mask.oy = $game_map.display_y*32
if (mask..mask) === $game_player.x and
(mask..mask) === $game_player.y and
(mask.empty? or
not ((mask..mask) === $game_player.x and
(mask..mask) === $game_player.y))
mask.opacity -= 16 if mask.opacity > 0
else
mask.opacity += 8 if mask.opacity < 255
end
end
end;end;end;end
end
end
#==============================================================================
# ■ Scene_Map
#==============================================================================
class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# ● 处理场所移动
#--------------------------------------------------------------------------
def perform_transfer
pre_transfer
@spriteset.dispose
$game_player.perform_transfer
@spriteset = Spriteset_Map.new
post_transfer
end
end
为防止看不懂使用方法,特意传一张使用方法图attr_reader :name 这句要加到Game_Event里,我忘放里了
然后@name = @event.name这句加在Game_Event里initialize的@event = event下面 哇,特别炫酷{:nm05:} 看截图像是XP的,但是事件页怎么会是VA的? 那有XP 的脚本么? 水终结者 发表于 2014-5-31 09:04 static/image/common/back.gif
那有XP 的脚本么?
XP只要把和VA一样的地方改成XP的就行
页:
[1]