TS4 资料库

TS4 资料库

这个模组本身不执行任何功能,它由其他模组调用。它是我在模组中经常使用的方法和类的集合。

实用工具

TS4 资料库

这是我经常使用的一些方法的简易库。它并不能取代TS4-Tools,后者仍用于日志记录。

基础额外内容

生成一个'basic_extras'调整项,用于插入到实例化的调整对象中。

通用枚举

Python Enum 的克隆版本,支持通过 @_missing_ 返回默认值。

文件工具

在基础文件夹中搜索文件并获取绝对或相对文件名 f(base_folder)

FNV

FNV在可用时使用TS4哈希方法,否则使用Python实现。 它支持所有类型的FNV32和FNV64计算,可使用自定义质数和字符串。
它支持UTF-8编码以及大小写混合输入。 作弊命令 o19.ts4l.test_fnv foo 会将 FNV 值输出到控制台和日志文件中。

服装工具

目前只是一个为模拟市民应用服装的方法。 如果仅存在先前的outfit_index且所选索引有效且未被使用,则会创建新服装。

漂亮词典

一个小工具,用于将Dict数据格式化为人类可读的形式。 它避免了数据转换为JSON。

运行命令

添加了运行'execute'或'client_cheat'命令的功能。 此功能将从RunCheatCommands中移除并整合至此。

标准欧拉角

一个非常基础的StdEulerAngle(横滚、俯仰、偏航)实现,用于将角度转换为四元数。 轴旋转可能不符合TS4标准。

标准四元数

一个简单的StdQuaternion(w, x, y, z)[/i]实现,用于旋转向量和四元数。 TS4四元数(x, y, z, w)使用了不同的参数顺序!

标准向量

一个非常基础的StdVector(x, y, z)实现。应与TS4的Vector3D兼容。 轴方向可能与TS4标准不符。

模拟名称

获取经典的 'sim_name' 作为单个字符串(例如 'Ann Lee#Smith' 或 'Ann#Lee Smith'),其中 '#' 作为名字和姓氏之间的分隔符。

SimCache

所有已加载模拟市民的缓存。见下文。

单例

一个用于Python的随机单例类。用法:Foo(object, metaclass=Singleton): 而不是 Foo:

调谐助手

一个简单的方法get_tuning_ids(manager, tuning)用于访问实例化的调谐类(不再以XML形式存在)。 管理器不是必需的,调谐可以是's'的ID或'n'的名称,支持通配符以匹配多个调谐。

TS4文件夹

提供对TS4⁽¹⁾/游戏、TS4⁽²⁾/Mods和TS4⁽²⁾/mod_data文件夹的访问权限。

  • TS4⁽¹⁾ 不是 TS4⁽²⁾。
  • 在 TS4⁽¹⁾ 中有 'Game'、'Data'、'Delta' 以及已安装的 DLC,如 'EP01'、'GP01'、'FP01'、'SP01' 等。
  • 在 TS4⁽²⁾ 中有 'Mods'、'GameVersion.txt'、Mods、'mod_logs'、'mod_data'、'mod_documentation' 等。

不常见记录器

一个无需运行TS4即可工作的日志记录器,用于在本地和后续游戏中测试模组的各个部分,而无需更改代码。

原版名称(地点)

用于处理更多vanilla_*.py文件以获取人类可读字符串的处理程序。要获取活动区域的人类可读英文描述,请使用:

r = VanillaNames.from_enum(VanillaRegions(getattr(services.current_region(), 'guid64', 0)))
v = VanillaNames.from_enum(VanillaVenues(getattr(services.get_current_venue(), 'guid64', 0)))

要将这样的字符串转换回枚举类型,请使用枚举类和字符串并调用例如:

enum = VanillaNames.to_enum(VanillaRegions, '职业外星世界')  
enum = VanillaNames.to_enum('ts4lib.common_enums.vanilla_regions.VanillaRegions', '职业外星世界')

命令 o19.ts4l.log_location 利用添加到该类的许多功能来获取友好的名称。

世界与社区

访问世界名称(新克雷斯特)和社区(羊驼泻湖)及其英文描述。 它旨在写入配置文件,以帮助玩家自定义世界和/或社区。

要获取当前区域的信息,请使用:

w, n = WorldsAndNeighbourhoods().get_world_and_neighbourhood_name(CommonLocationUtils().get_current_world_id())