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

[转载发布] 【移植】【ULDS】无限图层显示系统 for XP Ver 2.16

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    7 天前
  • 签到天数: 128 天

    连续签到: 1 天

    [LV.7]常住居民III

    2358

    主题

    428

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    11519
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    14333

    灌水之王

    发表于 2024-4-19 17:18:01 | 显示全部楼层 |阅读模式
    ULDS (Unlimited Layers Display System) 这个名字在 P1 可谓是如雷贯耳,按照最新的改版观点,这是一个“能够改变 RMVA 游戏制作导向”的脚本。ULDS 的强大之处不必多说,懂的人自然懂。有些人问了这脚本能不能有 XP 版,有 VX 版,我们的高冷 taroxd 已经明确表示了:不会。此外,就我个人看来,RMXP 强大的图层编辑系统已经能够满足绝大多数人们的编辑需求,因此 ULDS 似乎不是很必要。

    不过啊,既然发在这里了,我觉得肯定有人问我:那你做出来的这玩意,有啥用?这个问题……似乎很难回答。但是我可以告诉你另外一个故事:原版 ULDS 刚发布的时候,其作者 taroxd 也并不知道它有啥用。所以,谁知道呢?

    脚本和范例都放在下面了,我不生产 ULDS,我只是一个 VA -> XP 的搬运工。范例的话比较丑,用的是原版范例素材和一个很愚蠢的截图。如果各位美工醋们能做出来更好的范例请一定要告诉我。用法和 VA 的 ULDS 有一些不同,因此使用之前请仔细阅读说明再做改动。

    第一版序




    RUBY 代码
    [code]#----------------------------------------------------------------------------
    # ● 无限图层显示系统 Unlimited Layers Display System By Taroxd
    #   XP 移植 By RyanBern
    #----------------------------------------------------------------------------
    #
    #  使用方法:导入此脚本后,在游戏主目录新建一个名为 ULDS_Data 的文件夹,然后
    #            新建 txt 文本文件 ULDS000.txt,其中 000 请替换成真正的地图 ID。
    #            此后在此 txt 文件里面加入如下内容。
    #
    #  注意:保存 txt 文件请务必使用 UTF-8 编码,否则其中的中文不会被正常识别。
    #        如果文件名里面没有中文则无影响。
    #
    #  另:本脚本会尝试和原版 ULDS 保持一致,固不再单独写出版本号。
    #
    #  
    #    x: X坐标
    #      公式,默认为 0
    #    y: Y坐标
    #      公式,默认为 0
    #    z: Z坐标
    #      公式,只计算一次,默认为 10,可以设置为 -100 来当作远景图使用
    #    zoom: 缩放倍率
    #      公式,默认为 1。缩放的原点为画面左上角。
    #    zoom_x: 横向缩放倍率
    #      公式,默认为 zoom
    #    zoom_y: 纵向缩放倍率
    #      公式,默认为 zoom
    #    opacity: 不透明度
    #      公式,默认为 255
    #    blend_type: 合成方式
    #      公式,只计算一次。默认为 0 (0:正常、1:加法、2:减法)
    #    scroll: 图像跟随地图卷动的速度
    #      实数,默认为 32
    #    scroll_x: 图像跟随地图横向卷动的速度
    #      实数,默认为 scroll
    #    scroll_y:图像跟随地图纵向卷动的速度
    #      实数,默认为 scroll
    #    loop: 循环
    #      冒号后面不需要填写任何东西。
    #    visible: 图像是否显示
    #      公式,默认为 true
    #    path: 图像的路径名
    #      默认为 Parallaxes
    #    color: 合成的颜色
    #      公式,只计算一次。默认为 Color.new(0, 0, 0, 0)
    #    tone: 色调
    #      公式,只计算一次。默认为 Tone.new(0, 0, 0, 0)
    #    eval: 初始化后,以 sprite 或 plane 为 self 执行的代码。
    #      公式,默认为空
    #    update: 图片显示时,每帧执行的更新代码
    #      公式,默认为 t += 1
    #    dispose: 图片释放前执行的代码
    #      公式,默认为空
    #  
    #
    #  其中 filename 是图片文件名(无需扩展名),放入 Pictures 文件夹内
    #  这个文件夹可以通过 path 设置更改
    #
    #  在  和  中间的部分均为选填。不填则自动设为默认值。
    #  每一个设置项只能写一行。
    #  每一行只能写一个设置项。
    #  一般来说,正常使用时大部分都是不需要设置的。
    #
    #  设置项目中的“公式”表示,这一个设置项可以像技能的伤害公式一样填写。
    #  “只计算一次”表示,该公式只会在刚刚进入地图时计算一次,之后不会更新。
    #  可用 t 表示当前已经显示的帧数,s[n], v[n] 分别表示 n 号开关和 n 号变量。
    #  width 表示图片宽度,height 表示图片高度。
    #
    #  例:
    #   
    #     x: t
    #     scroll_x: 16
    #     scroll_y: 64
    #     loop:
    #   
    #
    #  需要多行公式时,可以重复备注。
    #  例:
    #   
    #     path: Battlers
    #     x: width / 2
    #     y: height / 2
    #     eval: self.ox = width / 2
    #     eval: self.oy = height / 2
    #     eval: self.angle = 180
    #   
    #
    #----------------------------------------------------------------------------
    #  z 坐标详解:
    #    ulds 图层的坐标和地图画面的三个视口(Viewport)是独立的,具体设定如下
    #      【0】最低图块层、在普通角色下方
    #      【1~200】在地图所有内容的上方(包括远景图,任意优先度的图块,角色图,雾图形)
    #      【201~3000】在【显示图片】所产生的图片上方
    #      【>3000】在【画面闪烁】效果的上方
    #    目前暂不支持在地图内容上的分割(例如不能设置为在角色上方而在雾图形下方),
    #    如果有需求可考虑添加。
    #----------------------------------------------------------------------------
    #  更新记录:
    #   2014.07.10 Ver1.01: 修正了 zoom、zoom_y 会报错的问题
    #   2014.07.11 Ver1.02: 修正了切换图块组之后失效的问题
    #   2014.08.14 Ver1.1:  增加了 speed_x, speed_y 的设置
    #   2014.08.16 Ver1.2:  fix 设定更改为 scroll
    #   2014.08.29 Ver1.21: 修正了坐标误差
    #   2014.09.19 Ver1.22: 修正了远景图与图层使用相同文件时报错的问题
    #   2014.09.25 Ver2.0:  属性可以用公式进行设置了;其他细节改进
    #   2014.09.26 Ver2.01: 增加了 path、update 的设置
    #   2015.01.02 Ver2.1:  增加了 init、color、tone 的设置;其他细节改进
    #   2015.01.03 Ver2.11: 修复了 zoom 属性会导致坐标误差的问题
    #   2015.02.02 Ver2.12: 支持多行备注和公式中的 width 和 height;其他细节改进
    #   2015.07.04 Ver2.13: 修复了循环时可能不会更新的问题
    #   2017.03.22 Ver2.15: 允许文件名为空,即备注
    #   2017.05.10 Ver2.16: 增加了 dispose 设置
    #----------------------------------------------------------------------------

    module Taroxd; end

    moduleTaroxd::ULDS

      DEFAULT_PATH = 'Pictures'                    # 图片文件的默认路径
      DEFAULT_Z = 10                                 # 默认的 z 值
      RE_OUTER = /(.*?)/mi  # 读取备注用的正则表达式
      RE_INNER = /(\w+) *: *(.*)/                    # 读取设置用的正则表达式
      MAPDATA_PREFIX = 'ULDS_Data'

      module Base
        includeMath

        attr_accessor :scroll_x, :scroll_y

        def dispose
          bitmap.dispose
          super
        end

        def adjust_x
          1.0 * @scroll_x * $game_map.display_x / 128
          #return x if @scroll_x.abs < Float::EPSILON
          #$game_map.display_x / (128.0 / @scroll_x)
          #$game_map.adjust_x(1.0 * x / @scroll_x) * @scroll_x
        end

        def adjust_y
          1.0 * @scroll_y * $game_map.display_y / 128
          #return y if @scroll_y.abs < Float::EPSILON
          #$game_map.display_y / (128.0 / @scroll_y)
          #$game_map.adjust_y(1.0 * y / @scroll_y) * @scroll_y
        end
      end

      class Sprite < ::Sprite
        include Base

        def x=(x)
          self.ox = adjust_x
          super
          #super(-adjust_x(x))
        end

        def y=(y)
          self.oy = adjust_y
          super
          #super(-adjust_y(y))
        end
      end

      class Plane < ::Plane
        include Base

        attr_reader :visible

        def initialize(_)
          super
          @visible = true
        end

        def x=(x)
          self.ox = adjust_x + x
        end

        def y=(y)
          self.oy = adjust_y + y
        end

        def visible=(visible)
          super
          @visible = visible
        end

        def width
          bitmap.width
        end

        def height
          bitmap.height
        end
      end

      class  name}
            contents.scan(RE_INNER)do |key, value|
              (settings[key] ||= '')

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

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

    本版积分规则

    关闭

    幸运抽奖

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

    立即查看

    聊天机器人
    Loading...

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

    GMT+8, 2025-5-4 21:19 , Processed in 0.104453 second(s), 58 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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