设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 700|回复: 4
打印 上一主题 下一主题

[原创发布] 【VA】ULDS无限图层便捷模版

[复制链接]

Lv5.捕梦者 (超级版主)

梦石
18
星屑
13588
在线时间
2220 小时
注册时间
2012-12-12
帖子
600
跳转到指定楼层
1
发表于 2026-3-10 06:50:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 congwsbn 于 2026-3-10 08:21 编辑

简介 /
此脚本为更方便的使用【ULDS】而制作,极大简化繁琐操作。
脚本作者:@百里_飞柳 ,范例工程:@congwsbn ,兼容RGD部分:deepseek


功能介绍 /
如果一张地图有下层、上层、光层、影层等多个远景图,每一张都要复制一遍地图注释很麻烦吧。
某个地图不想要光层、影层还要特意修改注释;或是想要整体修改某个值,要每张地图都去修改。
用便捷模版模版便可以一句“<ulds_diy map 1>”完成全部配置,
并自动判断有无下层、上层、光层、影层等,方便整体修改。

使用介绍


脚本 /
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ● ULDS便捷模版
  4. #    脚本作者:老鹰  ([url=https://github.com/OneEyedEagle/EAGLE-RGSS3]https://github.com/OneEyedEagle/EAGLE-RGSS3[/url])
  5. #    范例工程:葱兔 Onion rabbit  ([url=https://rpg.blue/?317370]https://rpg.blue/?317370[/url])
  6. #    兼容RGD部分(解决RGD打包脚本失效的问题):deepseek
  7. #==============================================================================
  8. module Taroxd::ULDS
  9.   DIY_SETTINGS = {
  10. # -----------------------------------------------------------------------------
  11. #  ▍使用方法
  12. # -----------------------------------------------------------------------------
  13.  
  14. #  ● 地图备注写: <ulds_diy map filename>
  15.  
  16. #     释义:
  17. #     map      → 下方模版对应的名称,名称中不能有空格。
  18. #     filename → 模板中的 [name],也就是远景图名称。
  19. #                 在 [name]前可以加入统一前缀,如“map”,就可以只写编号了。
  20. #                 在 [name]后加后缀,显示对应名称远景图,没有便自动跳过。
  21. #                   如 _U 为上层遮挡, _L 为光层,_S 为影层。
  22. #   ·若要兼容<ulds></ulds>,请将 <ulds_diy> 放置于备注最后(参考“window”地图)
  23. #   ·远景素材必须是工程中有的素材(红点),VA自带的RTP(蓝点)不行
  24.  
  25. # -----------------------------------------------------------------------------
  26. #  ▍模版格式说明
  27. # -----------------------------------------------------------------------------
  28. #  "模版名称" =>  
  29. #   "自定义内容,如<ulds=Map[name]></ulds>"
  30. #  ,(逗号不要漏掉)
  31.  
  32. # -----------------------------------------------------------------------------
  33. #  ▍模版1
  34. # -----------------------------------------------------------------------------
  35. "map" =>
  36. "<ulds=map[name]></ulds>
  37.  
  38. <ulds=map[name]_U>
  39.   z: 101
  40. </ulds>
  41.  
  42. <ulds=map[name]_L>
  43.   z: 370
  44.   blend_type: 1
  45. </ulds>
  46.  
  47. <ulds=map[name]_S>
  48.   z: 375
  49.   blend_type: 2
  50. </ulds>
  51. ",
  52.  
  53. # -----------------------------------------------------------------------------
  54. #  ▍模版2、3、4……
  55. # -----------------------------------------------------------------------------
  56. #~ "" => "
  57. #~ # 内容
  58.  
  59. #~ ",
  60.  
  61.  
  62. #==============================================================================
  63. #                                 × 设定完毕 ×
  64. #==============================================================================
  65.   }
  66. # -----------------------------------------------------------------------------
  67.  
  68.   RE_DIY = /<ulds_diy +(.*?) +(.*?)>/mi
  69.  
  70.   class << self
  71.     # 保存原始的 new 方法(如果需要备用)
  72.     alias_method :new_original, :new
  73.  
  74.     # 新的 new 方法:如果位图加载失败,则返回 nil(不创建对象)
  75.     def new(settings, viewport)
  76.       @settings = settings
  77.       bitmap = make_bitmap
  78.       return nil unless bitmap  # 位图为空则不创建对象
  79.  
  80.       # 创建容器(Sprite 或 Plane)
  81.       container = (extract('loop') ? Plane : Sprite).new(viewport)
  82.       container.bitmap = bitmap
  83.       container.instance_eval(init_container_code, __FILE__, __LINE__)
  84.       container
  85.     end
  86.  
  87.     # 重写 make_bitmap,捕获文件不存在的异常,返回 nil
  88.     def make_bitmap
  89.       basename = extract(nil)
  90.       return nil if basename.empty?  # 文件名为空则跳过
  91.  
  92.       folder_name = "Graphics/#{extract('path', DEFAULT_PATH).chomp}"
  93.       Bitmap.new("#{folder_name}/#{basename}")
  94.     rescue Errno::ENOENT
  95.       # 图片不存在,安静地跳过(不输出警告,避免干扰)
  96.       nil
  97.     end
  98.  
  99.     # 新的 from_note:处理 <ulds_diy> 标签,合并后逐个解析,自动跳过位图缺失的图层
  100.     def from_note(note, viewport)
  101.       diy_strings = []
  102.       note.scan(RE_DIY).each do |type, name|
  103.         template = DIY_SETTINGS[type]
  104.         next unless template
  105.         diy_strings << template.gsub('[name]', name)
  106.       end
  107.       combined_note = diy_strings.join("\n") + "\n" + note
  108.  
  109.       # 解析所有 <ulds> 标签,逐个创建对象
  110.       combined_note.scan(RE_OUTER).map do |name, contents|
  111.         settings = {nil => name}
  112.         contents.scan(RE_INNER) do |key, value|
  113.           (settings[key] ||= '') << value << "\n"
  114.         end
  115.         new(settings, viewport)  
  116.       end.compact
  117.     end
  118.   end
  119. end


更多详情可参考范例工程  ▶ 百度网盘

ULDS便捷模版.rar (4.19 MB, 下载次数: 19)


———————————————————————————————————————————————————————

  ▶ 葱の耕种田
———————————————————————————————————————————————————————
◎ Onion rabbit - Congwsbn


评分

参与人数 4+4 收起 理由
星间漫游起重机 + 1 精品文章
百里_飞柳 + 1 精品文章
IndigoIX + 1 塞糖
白小荟 + 1 好东西!

查看全部评分


葱兔の游戏列表 (´・ω・`)

Lv3.寻梦者

梦石
0
星屑
1535
在线时间
279 小时
注册时间
2020-8-9
帖子
24

极短27参与

2
发表于 2026-3-10 07:02:03 | 只看该作者
这么强?!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1634
在线时间
162 小时
注册时间
2022-1-14
帖子
36
3
发表于 2026-3-10 08:49:31 | 只看该作者
这个好!
用原生ULDS的时候,其实做个新地图复制备注的时候还不算麻烦,也就是改名字时仔细一点检查
但如果做着做着要加东西:“加个开关控制昼夜吧!加点太阳光晕!”之类的就要一张一张改了
(而且备注那个小窗口,内容一多只能用方向键上下翻……也不能用鼠标滚轮的说)
有这个的话就可以统一用模板管理了,妙哉!
回复 支持 反对

使用道具 举报

Lv6.析梦学徒

老鹰

梦石
40
星屑
37240
在线时间
7038 小时
注册时间
2012-5-26
帖子
3346

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

4
发表于 2026-3-10 08:52:48 | 只看该作者
只是做了一点微小的工作,DeepSeek一改,都看不出我的代码了
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
4
星屑
9241
在线时间
884 小时
注册时间
2017-10-28
帖子
473
5
发表于 2026-5-23 11:31:25 | 只看该作者
居然還有便捷模板,再也不用一個個複製粘貼了好耶
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2026-6-4 10:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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