岛屿生活 - 晒黑

岛屿生活 - 晒黑

创建自定义晒痕并将其应用到模拟市民晒黑时。许多用户生成内容(UGC)将UV贴图随机放置,导致晒痕出现在随机区域。这个模组允许为晒黑提供正确的UV贴图。它不包含任何默认内容

游戏玩法

岛屿生活 - 晒黑修复

一个自定义晒痕的模组

这个模组允许为服装应用自定义晒痕。
它不会修复损坏的肤色。
它不会为现有的损坏服装创建正确的漫反射贴图(uv_0)。

如果您的模拟市民在所有服装上都能正常晒黑,那么可能不需要这个工具。
我遇到过多个UGC创作者将服装网格的UV展开到漫反射贴图的随机位置。
虽然这对分层服装可能有好处,但对晒黑效果的影响是随机的。
晒黑后,模拟市民会出现与服装完全不匹配的晒痕。
修复破损服装的相同方法也可用于制作透晒服装。
使用优质物品制作此类服装甚至更加简单,只需调整不透明度/透明度或完全移除某些部分即可。

制作自定义晒痕

这部分内容相当长,因为它描述了如何添加自定义晒痕。它没有描述如何使用

必需品

为创建漫反射贴图所需的物品。漫反射贴图用于了解哪些部分需要晒黑。可以参考各种泳装和类似服装的原始漫反射贴图。
使用Gimp、Photoshop或其他图像编辑器来创建新的漫反射贴图。
使用Sims4Studio、S4PE或其他工具来创建package文件。

  • GUIDs
  • 可选:使用Python来验证'data' *1)
  • 可选:使用XML编辑器来创建XML片段 *2)

*1) 在线:https://www.example.com - 在数据前添加 'a='。'美化'功能会检查语法并压缩代码。
*2) 在线:https://www.example.com

该包文件需要包含:

  • 漫反射贴图包含所需的晒痕线条
  • CAS部件项目引用漫反射贴图
  • XML片段调校引用CAS部件项目及应被替换的CAS部件项目

漫反射贴图

最简单的方法是使用现有物品的高质量漫反射贴图并进行修改。
将某些区域设为透明或增加不透明区域的尺寸。
或者合并2-3张漫反射贴图。

命名与实例ID

为你的创作选择一个名称。我选择了“o19_yfBody_EF01SwimsuitOnePiece_TanThrough”,因为我修改了“yfBody_EF01SwimsuitOnePiece_...”的漫反射贴图。
我还将我的漫反射贴图命名为 'o19_yfBody_EF01SwimsuitOnePiece_TanThrough.png'

使用哈希生成器生成十六进制和十进制格式的fnv64 ID(带高位):

  • 'o19_yfBody_EF01SwimsuitOnePiece_TanThrough' = (0x) ECA26728CACFC809 = 17051304564077086729

写下名称、十六进制和十进制ID,稍后会用到。

可以将其添加到当前包中(适用于UGC),也可以为EA CAS部件创建一个新包:

  • 启动S4S
  • S4S > 工具 > 创建空包
  1. 图像
  • 添加 > RLE 2 图像 > 组: 0, 实例: ECA26728CACFC809 (记下的十六进制ID)
  • 选择图像条目
  • 导入 > 文件 'o19_yfBody_EF01SwimsuitOnePiece_TanThrough.png'
  1. CAS 部件
  • 导入或修改具有完全不同实例键的CAS部件。修改:Key.Instance为ECA26728CACFC809 [REF.hex]
  • PartFlags.Allow*:取消勾选
  • PartFlags.Default*:取消勾选
  • PartFlags.Show*:取消勾选
  1. 片段调校
  • 添加 > 片段调整 > 组: 0, 实例: ECA26728CACFC809 (匹配所选项目) [REF] 选择片段调整条目 插入 (n~[REF.name], s=[REF.dec]:

代码:

<?xml version="1.0" encoding="utf-8"?>
<I c="TanningFix" i="snippet" m="tanning.snippet" n="o19_yfBody_EF01SwimsuitOnePiece_TanThrough" s="17051304564077086729">
<!-- ECA26728CACFC809 -->
<T n="version"></T>
<T n="data">
{
'BodyType.FULL_BODY': {
0xECA26728CACFC809: [ 0x10927, 0x10928, 0x10929, 0x1092A, 0x1092B, 0x1092C, 0x1092D, 0x1092E, 0x1092F,
0x11929, 0x1192A, 0x1192B, 0x1192C, ],  # 新色板
# 在ID后添加名称,如果可以解析,它将替换上面的行
'o19_yfBody_EF01SwimsuitOnePiece_TanThrough': ['yfBody_EF01SwimsuitOnePiece_*', ],
},
}
</T>
</I>

显然,获取名称并使用通配符匹配EA CAS部分比使用数字更为简便。建议您先采用这种方式并检查日志文件。该模组会搜索所有匹配项并列出它们的ID(十进制,这些数字与上述十六进制数字对应):
_get_int_cas_part_ids(o19_yfBody_EF01SwimsuitOnePiece_TanThrough) -> '{17051304564077086729}'
_get_int_cas_part_ids(yfBody_EF01SwimsuitOnePiece_*) -> '{67879, 67880, 67881, 67882, 67883, 67884, 67885, 67886, 67887, 71977, 71978, 71979, 71980}'

保存包文件。

更多信息

可以使用数字5代替'BodyType.FULL_BODY'。最常用的类型包括:

HAT = 1
头发 = 2
头部 = 3
FULL_BODY = 5
UPPER_BODY = 6
LOWER_BODY = 7
鞋子 = 8
项链 = 12
手套 = 13
SOCKS = 36
TIGHTS = 42

多个设置可以组合使用,各部分之间用','分隔。

另一个显然不会起作用的字典示例:

{
1: {
12: [34, 56, ],
11: [22, 33, ],
 },
'BodyType.SOCKS ': {
'foo': ['bar*', ],
'kk': ['nik*', 'adi*', ],
 },
}

附录

游戏兼容性

该模组已在《模拟人生4》1.103.315版本(2023年12月)、S4CL 3.0(2023年12月)、TS4Lib 0.1.8(2023年9月)中测试通过。
预计将与即将发布的多个TS4、S4CL和TS4Lib版本兼容。

依赖项

  • 模拟人生4 TS4-资料库(NexusMods)或 TS4-资料库(GitHub)
  • S4CL(NexusMods)或 S4CL(GitHub)

如果未安装,请下载并安装TS4和这些模组。
全部免费提供。

安装

  1. 定位包含Mods文件夹的本地化《模拟人生4》文件夹。
  2. 将ZIP文件解压到此《模拟人生4》文件夹中。
  3. 这将创建以下目录/文件:
    • Mods/_o19_/$mod_name.ts4script
    • Mods/_o19_/$mod_name.package
    • mod_data/$mod_name/*
      和/或
    • mod_documentation/$mod_name/*
  4. mod_logs/$mod_name.txt 将在数据记录时自动生成。

手动安装

如果你不想将ZIP文件解压到《模拟人生4》文件夹中,你可能需要阅读以下内容。

  • ZIP文件/mod_data中的文件通常是必需的,应解压到The Sims 4/mod_data目录下。
  • ZIP文件/mod_documentation中的文件供您阅读,使用此模组时不需要这些文件。

[i] [i]Mods/o19/*.ts4script 文件可以存放在 Mods 中的任意文件夹内,或直接放在 Mods 目录下。强烈建议将其存放在 o19 文件夹中,这样你就知道是谁创建了它。

使用情况跟踪 / 隐私

该模组不会向任何追踪服务器发送数据。
代码开源且未经混淆,可供查阅。

日志文件('mod_logs'文件夹)中的某些日志条目可能包含本地用户名,特别是在文件未找到的情况下(WARN、ERROR)。