扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 110|回复: 0

[转载发布] 话说这个ace脚本有没有类似的mv插件?

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    2025-3-29 03:52
  • 签到天数: 127 天

    连续签到: 11 天

    [LV.7]常住居民III

    2350

    主题

    420

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    11311
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    14109

    灌水之王

    发表于 2024-2-24 06:42:07 | 显示全部楼层 |阅读模式
    RUBY 代码
    1. #==============================================================================
    2. # ■ 隐藏房间黑块
    3. #  by:VIPArcher [email: [email][email protected][/email]]
    4. #  -- 本脚本来自 [url]https://rpg.blue[/url] 使用或转载请保留以上信息。
    5. #==============================================================================
    6. # 使用说明:
    7. #  · 在需要用黑块遮罩的地图上建一个事件,事件名为 "Black_Room"并且在该事件里注释上
    8. #  需要遮罩的范围矩形,例如  就为从地图坐标(6,4)开始到坐标(10,17)的矩形
    9. #  区域填充上黑色块遮罩掉,当玩家踏入这个矩形时遮罩块消失。查看坐标可以看地图编辑器
    10. #  右下角,把要遮罩的区域的左上角的坐标和右下角的坐标带入即可。
    11. #  · 指定遮罩块颜色可在设置的第一行注释上
    12. #  · 每个遮罩可以指定角色踏入的矩形,规则同上,注释方法为在对应的矩形后面同一行注释
    13. #  例如,[6,4,10,18],未指定踏入区域时默认原矩形为踏入区域
    14. #  · 如需注释多个黑块房间请注意换行。
    15. #  · 需要用图片做为遮罩块,就像这样备注 ,[5,5,10,10]
    16. #   使用图片做为遮罩块必须设置踏入的矩形。文件放在"\Graphics\Parallaxes"文件夹下
    17. #==============================================================================
    18. $VIPArcherScript ||= {};$VIPArcherScript[:black_room] = 20150211
    19. #-------------------------------------------------------------------------------
    20. module VIPArcher end
    21. #==============================================================================
    22. # ★ 设定部分 ★
    23. #==============================================================================
    24. moduleVIPArcher::BlackRoom
    25.   Z = 999                        # 遮罩块的Z值
    26.   SW = 0                         # 该开关开启时遮罩块不可见
    27.   Edge = -5                      # 遮罩块边距留空的距离
    28.   Room_Color = Color.new(0,0,0)  # 默认遮罩块填充的颜色
    29.   Event_Name = 'Black_Room'      # 设置遮罩块的事件名
    30.   Opacity_Speed = 17             # 透明度变化的速度
    31. end
    32. #==============================================================================
    33. # ☆ 设定结束 ☆
    34. #==============================================================================
    35. class Sprite_BlackRoom < Sprite
    36.   includeVIPArcher::BlackRoom
    37.   #--------------------------------------------------------------------------
    38.   # ● 初始化对象
    39.   #--------------------------------------------------------------------------
    40.   def initialize(rect,check_rect,color,viewport)
    41.     super(viewport)
    42.     @check_rect, [url=home.php?mod=space&uid=10453]@color[/url] = check_rect,color
    43.     if rect.is_a?(Rect)
    44.       self.x, self.y, self.z = rect.x * 32, rect.y * 32, Z
    45.       width, height = rect.width - rect.x + 1,rect.height - rect.y + 1
    46.       set_bitmap(width * 32,height * 32)
    47.     elsif rect.is_a?(Array)
    48.       self.x, self.y, self.z = rect[1] * 32, rect[2] * 32, Z
    49.       set_bitmap(rect[0])
    50.     end
    51.   end
    52.   #--------------------------------------------------------------------------
    53.   # ● 设置Bitmap
    54.   #--------------------------------------------------------------------------
    55.   def set_bitmap(*args)
    56.     case args.size
    57.     when1
    58.       self.bitmap = Cache.parallax(args[0])
    59.     when2
    60.       self.bitmap = Bitmap.new(args[0], args[1])
    61.       rect = Rect.new(Edge, Edge, args[0] - Edge * 2, args[1] - Edge * 2)
    62.       self.bitmap.fill_rect(rect, @color)
    63.     end
    64.   end
    65.   #--------------------------------------------------------------------------
    66.   # ● 释放
    67.   #--------------------------------------------------------------------------
    68.   def dispose
    69.     super
    70.     self.bitmap.dispose
    71.   end
    72.   #--------------------------------------------------------------------------
    73.   # ● 位置判定
    74.   #--------------------------------------------------------------------------
    75.   def character_pos?
    76.     $game_player.x > @check_rect.width  || $game_player.x <  @check_rect.x ||
    77.     $game_player.y > @check_rect.height || $game_player.y <  @check_rect.y
    78.   end
    79.   #--------------------------------------------------------------------------
    80.   # ● 更新透明度
    81.   #--------------------------------------------------------------------------
    82.   def update_opacity
    83.     self.opacity += character_pos? ? Opacity_Speed : - Opacity_Speed
    84.     self.opacity = 0if$game_switches[SW]
    85.   end
    86.   #--------------------------------------------------------------------------
    87.   # ● 更新位置
    88.   #--------------------------------------------------------------------------
    89.   def update_position
    90.     self.ox = $game_map.display_x * 32
    91.     self.oy = $game_map.display_y * 32
    92.   end
    93.   #--------------------------------------------------------------------------
    94.   # ● 更新画面
    95.   #--------------------------------------------------------------------------
    96.   def update
    97.     super
    98.     update_opacity
    99.     update_position
    100.   end
    101. end
    102. #-------------------------------------------------------------------------------
    103. class Spriteset_Map
    104.   includeVIPArcher::BlackRoom
    105.   #--------------------------------------------------------------------------
    106.   # ● 生成黑色遮罩块
    107.   #--------------------------------------------------------------------------
    108.   alias black_room_create_characters create_characters
    109.   def create_characters
    110.     black_room_create_characters
    111.     room_sprite_dispose if@black_room_sprites
    112.     @black_room_sprites = []
    113.     $game_map.events.values.eachdo |event|
    114.       if event.instance_variable_get(:@event).name =~ /#{Event_Name}/i
    115.         returnif event.list.nil?
    116.         event.list.each{ |command| get_setup(command)}
    117.       end
    118.     end
    119.   end
    120.   #--------------------------------------------------------------------------
    121.   # ● 获取遮罩块设置
    122.   #--------------------------------------------------------------------------
    123.   def get_setup(command)
    124.     returnunless command.code == 108or408
    125.     command.parameters.each{|line|get_rect_setup(line);get_bitmap_setup(line)}
    126.   end
    127.   #--------------------------------------------------------------------------
    128.   # ● 备注文件名的设置
    129.   #--------------------------------------------------------------------------
    130.   def get_bitmap_setup(line)
    131.     if line =~ //i
    132.       rect = [$1,$2.to_i,$3.to_i]
    133.       if line =~ /\[(\d+.*?)\]/; x = $1.split(',')
    134.         check_rect = Rect.new(x[0].to_i,x[1].to_i,x[2].to_i,x[3].to_i)
    135.       end
    136.       sprite = Sprite_BlackRoom.new(rect,check_rect,@color,@viewport1)
    137.       sprite.opacity = 0unless sprite.character_pos?
    138.       @black_room_sprites.push(sprite)
    139.     end
    140.   end
    141.   #--------------------------------------------------------------------------
    142.   # ● 备注矩形的设置
    143.   #--------------------------------------------------------------------------
    144.   def get_rect_setup(line)
    145.     @color = eval($1)if line =~ //i
    146.     @color ||= Room_Color
    147.     if line =~ //; x = $1.split(',')
    148.       check_rect = rect = Rect.new(x[0].to_i,x[1].to_i,x[2].to_i,x[3].to_i)
    149.       if line =~ /\[(\d+.*?)\]/; x = $1.split(',')
    150.         check_rect = Rect.new(x[0].to_i,x[1].to_i,x[2].to_i,x[3].to_i)
    151.       end
    152.       sprite = Sprite_BlackRoom.new(rect,check_rect,@color,@viewport1)
    153.       sprite.opacity = 0unless sprite.character_pos?
    154.       @black_room_sprites.push(sprite)
    155.     end
    156.   end
    157.   #--------------------------------------------------------------------------
    158.   # ● 释放
    159.   #--------------------------------------------------------------------------
    160.   alias black_room_dispose dispose
    161.   def dispose
    162.     black_room_dispose
    163.     room_sprite_dispose
    164.   end
    165.   #--------------------------------------------------------------------------
    166.   # ● 释放遮罩块
    167.   #--------------------------------------------------------------------------
    168.   def room_sprite_dispose
    169.     @black_room_sprites.each{|sprite| sprite.dispose}
    170.   end
    171.   #--------------------------------------------------------------------------
    172.   # ● 更新画面
    173.   #--------------------------------------------------------------------------
    174.   alias black_room_update update
    175.   def update
    176.     black_room_update
    177.     @black_room_sprites.each{|sprite| sprite.update}
    178.   end
    179. end
    复制代码



    挺有趣的脚本,就是不知道有没有和它类似的mv插件,如果没有,不知道哪个老师能写一份造福一下mv的使用者们{:2_260:}
                 本帖来自P1论坛作者rkjspb,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=394956  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2025-4-20 20:40 , Processed in 0.130603 second(s), 53 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表