更智能的容器

更智能的容器

想快速放下你的战利品吗?厌倦了为了多存一些特定物品堆而寻找对应的箱子吗?教会你的容器与相邻容器一起整理物品吧!

[size=5]功能[/size]
[list]
[] 教会你的容器自动将放入其中的物品发送到其他容器——如果这些容器已经装满了相同的物品堆叠。
[
] 将[i]同类物品[/i]放到它们的兄弟那里:铜矿石会进入装有锡矿石的箱子,依此类推。
[] 你可以[i]从任意物品组合创建这样的物品组[/i]——只需把你的胡萝卜、石头和羽毛放进一个箱子里,点击按钮,从此你的胡萝卜就会进入装有羽毛的箱子。
[
] 配置模组,通过单击一个按钮即可[i]卸载[/i]你背包中所有特定的战利品物品到对应的箱子中。
[/list]
[size=4]工作原理:[/size]
当你通过 [Ctrl + 点击] 将物品堆叠放入容器时
如果容器已满或不包含相同物品:
- 检查附近的每个容器,如果它不是满的并且有相同的物品(堆叠)—— 你的物品会被转移到那里。
- 否则(如果都没有找到)检查附近的每个容器,如果它不是满的并且有“相关”物品组的物品 —— 你的物品会被转移到那里。
换句话说:如果物品组包含你的物品,并且箱子包含该物品组中的任何其他物品,那么你的物品就会被送到这个箱子。

[size=3]通用配置参数[/size]
[spoiler]
- range - 定义查找“附近”容器的范围
- onlyStackableItems - (默认启用)启用时 - 不可堆叠的物品(工具、武器、盔甲)不会被重新排列
- hudMessageEnabled - (默认启用)启用 HUD 消息,提示物品已被放置到其他箱子。
- hudMessageText - HUD 消息由图标、物品名称加上此 hudMessageText 组成
- audioFeedbackEnabled - 如果物品成功分发,播放游戏内音效
- effectFeedbackEnabled - 在物品分发到的箱子上显示临时视觉效果
[/spoiler]


[size=5]物品分组[/size]
有三种可用选项来定义物品组:
- 通过显式列出所有组成员的物品名称
- 通过匹配物品名称前缀:trophyboar 和 trophytroll 是前缀为 'trophy' 的组成员
- 通过匹配物品名称后缀:carrotSeeds 和 turnipSeeds 是后缀为 'seeds' 的组成员
- 通过匹配游戏内 item-type:Tool、Weapon、Ammo、Armor、Trophie

[size=4]分组配置参数[/size]
[spoiler]
- enabled - (默认为 true)启用物品组逻辑
- itemTypeGroupsEnabled - 启用按物品类型分组(Trophie、Tool、Ammo、Armor、Weapon)。
- groupingKeyModifier - LeftControl。如果你想使用单独的快捷键触发分组逻辑,请改为“LeftControl + LeftShift”。
(按住 Ctrl 是必须的,因为它是游戏内的“移动堆叠”按键)
- createGroupBtnEnabled - (默认为 true)添加一个 UI 按钮,帮助创建自定义物品组
- createGroupBtnPos - 调整按钮位置
- fuzzyGroupingEnabled - (默认为 false)启用更宽泛的标准进行分组。
[/spoiler]

[size=3]预配置物品组[/size]
[spoiler]
[ItemGroup] 配置节包含一组基于物品名称的组:

valuables = ruby,coins,amber,amberpearl
ore = copperore,flametalore,ironore,silverore,tinore,ironscrap,blackmetalscrap
rock = stone,flint,obsidian
ingots = copper,bronze,flametal,iron,silver,tin,blackmetal
wood = wood,finewood,corewood,ancientbark
mushrooms = Mushroom,MushroomBlue,MushroomYellow
berries = Blueberries,Cloudberry,Raspberry,Honey
vegetables = Carrot,Turnip
cookedMeat = CookedLoxMeat,NeckTailGrilled,MeatCooked,FishCooked,SerpentMeatCooked
food = CarrotSoup,Sausages,QueensJam,SerpentStew,TurnipStew,BloodPudding
[/spoiler]

[size=3]按后缀或前缀匹配物品名称的预配置组:[/size]
[spoiler]
[PostfixedItemGroups] posfixes = cone,seeds,pelt,hide # 例如 CarrotSeeds 会进入 TurnipSeeds
[PrefixedItemGroups] prefixes = trophy,mead,arrow,armor,cape,helmet,atgeir,bow,battleaxe,knife,mace,shield,sledge,spear,sword,tankard # 例如 ArrowFire 会进入 ArrowFlint
[/spoiler]

[size=4]工作原理:[/size]
当你通过 [Ctrl + 点击] 将物品堆叠放入容器时

[list]
[] 如果上述基于相同物品名称的简单容器查找没有结果,那么:
[
] 检查附近的每个容器,如果容器和你的物品同时满足以下任一条件
- 属于相同物品名称组的成员(无论是预配置组还是从 [ItemGroup] 配置节创建的用户组)- 或者属于相同物品名称前缀组的成员 - 或者属于相同物品名称后缀组的成员 - 那么物品会被转移到那里。[] 如果没有匹配 - 检查附近的每个容器,如果容器有任何 item-type 与你物品类型相同的物品
那么物品会被转移到那里(可通过 itemTypeGroupsEnabled 配置选项禁用)[
] 如果以上都不匹配且启用了 fuzzyGroupingEnabled 选项 - 会检查额外的基于 item-types 的组:
IsMaterial、IsConsumable、IsCustomization、IsMisc[/list]

[size=4]添加自定义物品组[/size]
将想要的物品放入一个箱子,点击 [☼] 按钮(在箱子面板的左下角)。
新组将包含此箱子中所有唯一的物品名称。

[size=3]合并或扩展物品组[/size]
当你点击 [☼] 按钮时,模组会检查当前箱子中的物品是否已经是某个基于物品名称的组成员。
在这种情况下 - 会弹出一个提示对话框,提供以下选项:
- 继续创建新组
- 将所有检测到的组合并为一个(最大的组将作为“基础”组)

[size=5]卸载物品。[/size]
配置允许“卸载”的物品组和名称。
打开任意箱子并点击 [⇓⇓] 按钮。

[size=3]“卸载”配置参数[/size]
[spoiler]
enabled - (默认为 true)启用卸载逻辑和 UI 按钮
btnPos - 调整按钮位置
groupsList - 允许“卸载”的 [ItemGroup] 配置节中的物品组 ID 列表
itemsList - 允许“卸载”的物品名称列表
itemsSkipList - 要从“卸载”中排除的物品名称的高优先级列表
alwaysGrouping - (默认为 true) - 卸载时始终启用分组逻辑。否则 - 需要按下 groupingKeyModifier。
addToItemsFilterKeyModifier - 如果按下 - 覆盖 createGroupBtn 的行为,将物品名称传递到卸载的“itemsList”而不是创建新物品组
addToSkipItemsFilterKeyModifier - 如果按下 - 覆盖 createGroupBtn 的行为,将物品名称传递到卸载的“itemsSkipList”而不是创建新物品组
materialsFiltering - 始终允许“materials”物品类型“卸载”
trophiesFiltering - 始终允许战利品“卸载”
consumableFiltering - (默认禁用)始终允许任何消耗品“卸载”
[/spoiler]

[size=4] 工作原理:[/size]
检查你背包中每个未装备的物品,然后:
1. 如果物品不在 itemsSkipList 配置选项中
* 如果物品匹配 groupsList 配置选项中的任何组
* 或者物品名称列在 itemsList 配置选项中
* 或者物品类型是 MaterialsmaterialsFiltering 配置选项已启用
* 或者物品类型是 TrophytrophiesFiltering 配置选项已启用
* 或者物品类型是 ConsumableconsumableFiltering 配置选项已启用
2. 尝试将物品移动到附近的“相关”箱子

[size=3]从游戏 UI 配置[/size]
- Shift + 点击 [☼] 按钮:通过将当前打开的箱子中所有物品的名称添加到 itemsList 配置选项,允许它们被卸载。
- Ctrl + 点击 [☼] 按钮:通过将当前打开的箱子中所有物品的名称添加到 itemsSkipList 配置选项,禁止它们被卸载。

[size=5]禁用预配置组[/size]
你可以禁用任何预配置组
- 在配置文件中:删除 '=' 符号后面的部分。例如:"vegetables ="
- 从 ConfigurationManager UI 中:将值设为空字符串

ⓘ 你可以手动验证、合并或添加新组到 [ItemGroup] 配置节。
示例:"fishes = FishRaw,FishCooked"。(需要重启游戏)
物品名称可以通过以下方式发现:
- 通过搜索一些“valheim Spawn items list”。
- 在将物品移动到箱子时按“Ctrl + L + 点击”(而不是 Ctrl + 点击):物品名称会打印到控制台(F5)。

[size=5]手柄支持[/size]

[spoiler]
- 触发物品分组:[i]gamepadKey1[/i](LTrigger)+ [i]gamepadKey2[/i](JoystickButton2)应与当前物品“转移”组合(LTrigger+X)保持同步。仅在默认 Valheim 手柄布局再次更改时才应调整。
- RightStick 点击:在容器面板时触发创建组([☼])。
- RightStick 点击 + RTrigger:与 addToItemsFilterKey 相同。
- RightStick 点击 + LTrigger:与 addToSkipItemsFilterKey 相同。
- menuButton(☰):在容器面板时触发全部卸载物品按钮([⇓⇓])。
- 合并或创建对话框:LeftBumper= 合并,RightBumper=创建
- 我尝试模仿游戏的提示框,但它们现在与按钮有点重叠。设置 [Unload] btnPos = {"x":1.5,"y":7.9}
- 从 1.6.0 版本起,合并提示对话框未被完全支持 :!
[/spoiler]

[size=5]配置模组:[/size]

- 推荐:通过添加 -console 启动选项启用游戏内控制台(由 F5 打开)。
- 推荐:安装最新的 [[url=https://github.com/BepInEx/BepInEx.ConfigurationManager/releases/]BepInEx.ConfigurationManager[/url]]
- 启动游戏。在玩游戏时通过 ConfigurationManager 调整配置(在菜单或物品栏 UI 时按 F1)
- 从 Valheim\BepInEx\config\flueno.SmartContainers.cfg 的配置文件中配置。需要重启游戏。

[size=5]安装(手动):[/size]
[list=1]
[]从 zip 文件中提取 DLL 到 "<GameDirectory>\Bepinex\plugins"
[
]启动游戏。
[/list]