PrivateStorageAnywherePLUS

PrivateStorageAnywherePLUS

用一个快捷键或控制器按钮(默认为F6)从任何地方打开你的私人存储。无需走回你的营地箱子。使用游戏原生界面,支持完整的物品交互。支持键盘修饰键(例如 Shift+I),

游戏玩法

私人存储任意处+


打开你的私人仓库和全部五个房屋仓库箱(采集品、衣柜、冰箱、印记、收集品),只需一个快捷键或控制器按钮即可在世界任何地方操作。无需返回营地或房屋仓库箱。


功能特点

  • F4 从任何地方打开私人仓库(营地仓库)
  • F5 从任意位置打开 采集品宝箱
  • F6 打开 梳妆台
  • F7 打开 冰箱
  • F8 打开 符号仓库
  • F9 打开 收集仓库
  • 预设的控制器组合:LB + 左摇杆(Xbox)/ L1 + L3(PS)用于私人仓库;LB + 右摇杆(Xbox)/ L1 + R3(PS)用于采集物。其他箱子默认未绑定—如需使用,请在INI文件中自行分配。
  • 再次按下相同的键/按钮以关闭。要切换箱子,请先关闭当前箱子,然后按下下一个箱子的绑定键。
  • 每个宝箱还支持可选的XInput控制器按钮及修饰键,以及PS5/PS4(DualSense/DualShock 4)手柄按钮,所有设置均可在INI文件中配置。
  • ESC 关闭
  • 原生UI: 使用游戏内置仓库界面 — 无自定义覆盖层
  • 本地化标题: 每个面板标题(私人仓库、可采集物、梳妆台、冰箱、标记、收集品)都会自动匹配你的游戏语言,所有14种支持的语言(韩文/英文/日文/俄文/土耳其文/西班牙文/墨西哥文/法文/德文/意大利文/波兰文/葡萄牙文/繁体中文/简体中文)
  • 完整交互: 能够像亲自操作箱子一样,将物品移入或移出每个箱子
  • 私人仓库在游戏开始后立即生效,无需NPC访问。房屋箱子(可采集物、梳妆台、冰箱、符号、收藏品)在每个游戏会话中需要访问一次NPC后,模组才能显示其内容。
  • 防更新: 使用自动模式扫描、虚函数表匹配和运行时字符串交叉引用来定位内部游戏函数,而非硬编码偏移量
  • 与UI模组兼容: 通过vtable签名识别仓库面板,而非面板ID——即使在“去黑边”等模组更改UI配置时也能正常工作
  • 安全系统: 过场动画、小游戏及其他不安全状态下,快捷键将自动禁用
  • 可配置: 每个箱子的热键可通过INI文件重新分配
  • 键盘修饰键: 可选的修饰键支持(例如,单独按 I 打开背包,而 Shift+I 打开存储)
  • Xbox / XInput 手柄: 将手柄按钮分配给任意面板。支持可选的修饰按钮(例如,按住LB键+左摇杆进行私密操作)。原生支持Xbox手柄,并通过Steam输入支持所有其他手柄。
  • PS5 / PS4控制器: 原生HID支持DualSense和DualShock 4 — 使用圆圈按钮或任何已配置按钮关闭仓库。私密模式默认为L1 + L3,采集物模式默认为L1 + R3。每个面板可配置PSButton/PSModifier(分享键、选项键、圆圈键、三角键、方块键、交叉键、L1、R1、L3、R3、触控板、PS键、静音键)。
  • INI热重载: 按下F11键可重新加载所有设置,无需重启游戏

要求

  • 终极ASI加载器 (ThirteenAG) — 将 version.dll 放入游戏目录下的 bin64 文件夹。如果你已在使用其他ASI模组,加载器可能已安装。

安装

  1. 确保“终极ASI加载器”(version.dll)位于:
    [Steam]\steamapps\common\Crimson Desert\bin64\
    
  2. PrivateStorageAnywhere.asiPrivateStorageAnywhere.ini 复制到同一个 bin64 文件夹中。
  3. 启动游戏。按F4打开私有存储,F5打开可采集物,F6/F7/F8/F9分别打开衣柜/冰箱/符号/收藏品。

配置

编辑 PrivateStorageAnywhere.ini

[Settings]
Enabled=1                          ; 主开关(0=关闭,1=开启)
DebugLog=0                        ; 为故障排除创建日志文件
ReloadKey=7A                      ; 无需重启即可重新加载INI(7A = F11)
; --- 面板 0 — 私人仓库(默认:F4 / LB+左摇杆 / L1+L3) ---
PrivateHotkey=73
PrivateControllerButton=0040      ; 左摇杆
PrivateControllerModifier=0100    ; LB
PrivatePSButton=L3
PrivatePSModifier=L1
; --- 面板 1 — 可收集宝箱(默认:F5 / LB+右摇杆 / L1+R3) ---
GatherablesHotkey=74
GatherablesControllerButton=0080 ; 右摇杆
GatherablesControllerModifier=0100 ; LB
GatherablesPSButton=R3
GatherablesPSModifier=L1
; --- 面板2 — 梳妆台(默认:F6) ---
DresserHotkey=75
; --- 面板 3 — 冰箱(默认:F7) ---
RefrigeratorHotkey=76
; --- 面板4 — 符号存储(默认:F8) ---
SymbolHotkey=77
; --- 面板5 — 收集储存物 (默认:F9) ---
CollectingHotkey=78

每个绑定都是一个面板开关:从冷启动时打开对应面板,或当任何面板处于打开状态时关闭仓库。将任何 <Name>Hotkey / <Name>ControllerButton / <Name>PSButton 设为 00(或留空)即可禁用。

完整的Windows虚拟键码参考位于INI文件的底部。

控制器设置

每个面板都有自身的<Name>ControllerButton和可选的<Name>ControllerModifier。例如,将冰箱绑定到LB + 方向键上

RefrigeratorControllerButton=0001    ; 方向键上
RefrigeratorControllerModifier=0100 ; LB

控制器按键数值: 方向键上=0001, 方向键下=0002, 方向键左=0004, 方向键右=0008, 开始/菜单键=0010, 返回/视图键=0020, 左摇杆=0040, 右摇杆=0080, LB键=0100, RB键=0200, A键=1000, B键=2000, X键=4000, Y键=8000

通过Steam输入支持非Xbox控制器

Switch及其他非索尼控制器可通过Steam Input支持,系统会自动将其转换为XInput协议。

PS5 / PS4 控制器设置

每个面板都有自己的 <Name>PSButton 和可选的 <Name>PSModifier 用于DualSense / DualShock 4。例如,将冰箱绑定到 L1 + 三角键

RefrigeratorPSButton=Triangle
RefrigeratorPSModifier=L1

支持的 PSButton 值: Share, Options, Circle, Triangle, Square, Cross, L1, R1, L3, R3, Touchpad, PS, Mute

关闭操作会延迟到按钮释放时执行,以防止在游戏过程中触发翻滚闪避。支持 DualSense、DualSense Edge 和 DualShock 4 v1/v2 通过 USB 和蓝牙连接。


⚠ 物品栏扩展模组 ⚠

这款模组[尚未经过测试]与任何物品栏扩展或私人存储扩展模组兼容。如果与这些模组出现冲突,将不提供兼容性支持。


杀毒软件通知

某些防病毒程序可能会标记此模组,因为它依赖于底层钩子技术直接访问游戏的内部面板功能。 《红色沙漠》未提供官方模组API以支持该功能,因此模组需要定位并调用游戏内存中的内部函数。此类操作即便模组本身无害,也可能被防病毒软件视为可疑行为。


卸载

删除游戏 bin64 文件夹中的 PrivateStorageAnywhere.asiPrivateStorageAnywhere.ini。如果有 PrivateStorageAnywhere.log,也可选择一并删除。


更新日志

v1.5.5

  • 针对游戏版本 1.10.00 进行了更新。
  • 修复:1.10更新后,F键快捷键隐藏了HUD但未出现仓库面板。珍珠深渊调整了子模式枚举:模组的“打开仓库”模式标志模式原本推导出子模式5(警报/电影),而非子模式6(对话/商店)。仓库HTML视图只有在当前模式标签列表包含“store”时才会被面板管理器挂载,因此面板一直处于未挂载和不可见状态。模组现在将子类型标志设置为索引6,使得游戏基于时钟周期的模式解析器在下一帧推导出子模式6,面板管理器挂载仓库视图,面板正常渲染。

v1.5.4

  • 已更新至游戏版本 1.09.00
  • 修复:1.09版本更新后,每次打开仓库游戏崩溃的问题。

v1.5.3

  • 修复:在加载界面(及其他非游戏状态)中,快捷键可能打开仓库。安全状态检查仅检查了子模式字节,该字节仍携带上一游戏帧的过时值,而游戏模式字节已切换至“加载”。现在检查要求两个字节均匹配游戏内运行状态。游戏状态枚举值已通过Ghidra反编译游戏的调试状态名生成器验证。
  • 修复:从安全状态白名单中移除了过时的"0x11 = 临时游戏玩法"条目——该子模式值在1.08版本中未定义,因此将其视为安全状态可能导致意外状态通过。

v1.5.2

  • 已为游戏版本 1.08.00 更新。
  • 修正:仓库窗口顶部标题在每个面板上都错误地停留在游戏默认的“Camp Provision”/“UI_WareHouse_Title”文本上——在1.08版本中,仓库处理器停止通过SetTitle写入顶部标题,导致模组的静态解析器无法找到该节点。顶部标题节点是通过运行时SetTitle钩子在自然NPC仓库打开过程中追踪到的;现在它位于handler+0xE8位置,并像底部标签一样随面板切换。
  • 修复:解决了误报问题,该误报曾将[RSP+disp32]栈偏移视为处理程序相对加载。现在要求MOV的源基址寄存器与(已知良好的)BottomLabel MOV使用的寄存器匹配,并跳过SIB编码。防止因写入错误的处理程序槽位而导致的静默数据损坏。
  • 新增:四个房屋面板在全部14种游戏语言中增加了对应语言的标题——梳妆台冰箱符号存储收藏存储。此前无论游戏语言如何设置,这些面板始终显示英文文本。两个具有原生游戏本地化标题的储物箱(私人存储、可收集物品箱)已在早期版本中完成本地化。
  • 改进:为未来的游戏更新提高了抗漂移能力。
    • 通过"Housing_GatheredMaterials"字符串引用(LEA+MOV-RIP模式)动态解析HGM字符串槽位,而非使用1.06版本的硬编码RVA。
    • 容器虚函数表初始未设置,并通过自动重新学习填充,现在需要连续5次观察到相同的虚函数表指针后才采用它。这防止了先前因单帧过时引用而导致的后续SetInventory崩溃问题。
    • 清除了所有剩余的1.06版硬编码RVA(WarehouseRefresh/ContainerWalker/SubObjectResolver/ContainerMarker)——这些内容自1.06版起就处于禁用调用路径中,并会在未来的补丁中无声漂移。
    • 在首次调用FilterRender时进行一次性序言正确性检查——如果字节看起来不像函数序言,日志会发出明确的警告,而不是跳入错误的代码。
  • 清理:移除了约560行(约占源代码10%)的死诊断代码。最显著的移除是一个未使用的硬件断点子系统(向量化异常处理器 + 通过Toolhelp线程枚举进行的每线程DR0/DR7寄存器操作)。该子系统在运行时从未真正启用,但其API组合与反调试/进程注入模式匹配,这类模式会被防病毒启发式引擎和Chrome安全浏览功能标记为可疑。此外还移除了:五个未使用的筛选钩子诊断捕获函数、用于查找顶层标题节点的SetTitle诊断钩子、每个Handler调用的数据包字节转储、一个废弃的BindRefresh回退链以及RTTI堆扫描辅助函数。

v1.5.1

  • 更新至游戏版本 1.07.00
  • 修正:物品栏栏位扩展(10 → 1000)再次生效。
  • 现在,当物品栏/地图/任务日志覆盖层打开时,快捷键会被屏蔽(此前只有完全暂停菜单才会屏蔽它们)。

v1.5.0

  • 针对游戏版本 1.06.00 进行了更新。每个面板(私人储物箱和所有五个房屋宝箱)都能正常打开和关闭,不会发生崩溃。
  • 房屋箱子(F5–F9)现在需要在每次游戏会话中至少访问一次对应箱子的NPC,物品才会显示。如果没有访问NPC,面板会打开一个空网格(不会崩溃)。私人储物柜仍可从游戏开始时立即使用。
  • 已修复:当“移动物品”数量对话框或“物品详情”弹窗打开时,ESC / B / 圆圈键不再关闭仓库。现在两个关闭检测源完全独立,因此任何一个都不会掩盖另一个。
  • 已修复:XInput每面板关闭组合键(例如LB + 左摇杆)现在遵守模态防护。此前,在数量对话框或详情弹窗打开时按下关闭组合键会跳过模态关闭步骤,直接关闭仓库。
  • 现在启动时引导日志会列出每个面板的按键绑定,以便你准确验证每个面板连接到了哪个按键/按钮。
  • 重新解析了1.06版本中所有移动的内部游戏地址:SetInventory、WarehouseRefresh、ContainerWalker、ContainerMarker DAT、ItemDetailOpen、容器vtable、FactoryWrapper、InventoryInfoMgrPtr以及Housing_GatheredMaterials字符串槽位。

v1.4.4

  • 新的默认按键布局:F4–F9 分别对应私人物品/可采集物/梳妆台/冰箱/象征/收集(使用连续的按键块,而非F6+F7-F9+Num0)。
  • 新的默认控制器绑定:LB + 左摇杆(Xbox)/ L1 + L3(PS)用于私人物品,LB + 右摇杆 / L1 + R3用于可采集物品。其他宝箱默认保持未绑定状态。
  • 修复:B按钮(Xbox)无法可靠关闭房屋箱子。每次打开房屋时运行的内部补丁中存在一个残留的写入操作,干扰了游戏的输入流程;B键按压在模组能够读取前即被消耗。已移除该补丁。
  • 已修复:Xbox的B键和PS的○键现在采用相同的关闭行为——按下标记为待定,释放触发关闭。消除了快速双击时可能出现的意外重新打开问题。
  • 修复:在某些控制器设置下,可采集物在打开后有时会立即自动关闭。
  • 改进:多控制器支持 — 所有四个XInput插槽都会被轮询,因此任何连接的控制器的按键操作都会被识别,而不仅仅是插槽0。将DualSense和实体Xbox控制器路由到不同插槽的Steam输入设置不再会丢失按键。
  • 改进:长按关闭 — 当面板已经打开时,长按每个面板的绑定键超过700毫秒也会关闭它。有助于解决开关行为不明显的问题。
  • 清理:移除了内部控制器流程的日志行;日志现在专注于仓库状态变化和错误。在INI中将DebugLog=0设置为完全禁用日志记录。

v1.4.3

  • 已更新至游戏版本1.05.1 热修复

v1.4.2

  • 新功能:PS5/PS4修饰键——按住一个键以启用另一个键,这样多个箱子可以通过一个修饰键共享动作按钮(例如L1+三角键 / L1+方块键 / L1+叉键)。INI中每个箱子设置<Name>PSModifier,以及用于私人箱子的传统PSModifier
  • 修复:当物品“查看详情”弹窗打开时,按下ESC(或B/圆圈键)不再错误地关闭底层的存储界面——ESC现在会先关闭弹窗,再次按下ESC则会关闭仓库。

v1.4.1

  • 新功能:按箱子设置的XInput控制器按键(可选修饰键)——每个箱子可通过INI绑定到任意控制器按键组合。
  • 新功能:按箱子设定的PS5/PS4(HID)按钮——每个箱子可通过INI文件绑定到任意DualSense/DualShock 4按钮。
  • 已修改:默认情况下,“符号存储”热键被禁用——它在游戏中的用途目前尚不明确。如果你知道它的作用,可以通过INI文件手动重新启用。

v1.4.0

  • 新增:所有五个房屋存储箱(可采集物品、梳妆台、冰箱、符号、收藏品)现在可以通过专用快捷键(F7/F8/F9/F12/Num0)在任何位置打开。每个快捷键可切换其面板的开启/关闭。
  • 新功能:INI文件中支持每个箱子的热键/修饰键配置 —— 无需重新编译即可重新分配或禁用单个箱子。

v1.3.3

  • 更新至游戏版本 1.0.4.1(2026-04-23)——内部游戏结构布局再次更改,所有受影响的偏移量和序言模式已重新适配
  • 修复:私人物品栏不再显示“捐赠资金”快捷键提示
  • 修复:当有模态框(数量选择/确认对话框)打开时,按下ESC键现在会先正确关闭模态框,再次按下ESC键再关闭仓库界面
  • 修复: 关闭时不再出现"面板隐藏异常"的日志噪音——模组现在直接执行关闭状态清除
  • 修复:仓库不再在新的“游戏内菜单”状态下打开
  • 新增:INI设置 PanelId — 4月23日新增了多种仓库类型;设为0以自动捕获(默认)
  • 改善:多个结构体偏移量已改为动态解析,因此未来不涉及布局变更的更新将无需重建

v1.3.2

  • 已更新至游戏版本1.0.3.1——内部游戏功能已重构,需重新适配

v1.3.1

  • 修复:访问捐赠NPC后显示错误的按键指南——现在在加载背包前会触发游戏内部UI状态重置
  • 已修复:加载存档后第一次按F6时,仓库面板有时会未经正确激活而打开
  • 改进:从游戏代码中动态解析额外的结构体偏移量,包括捐赠状态字段

v1.3.0

  • 修正:2026年4月11日游戏更新后出现的随机崩溃问题——仓库处理器结构体已重新整理
  • 改进:所有结构体偏移量现在在启动时从游戏代码中动态解析,而非硬编码

v1.2.6

  • 修复:在数量/确认对话框仍打开时,F6和控制器切换按钮可能关闭仓库
  • 已修复:幻影弹窗bug — 访问营地NPC仓库后,ESC有时无法关闭模组打开的仓库

v1.2.5

  • 修复:游戏更新后仓库面板有时无法打开——原因为自动捕获功能永久锁定了一个错误的UI控制器
  • 改进:自动捕获现在通过RTTI扫描使用精确的虚函数表匹配

v1.2.4

  • 修复:当其他面板共享同一基类时,自动捕获不再抓取错误的UI控制器
  • 修复:模态对话框偏移扫描现在会选择正确的(仓库特定的)偏移量

v1.2.3

  • QOL:关闭仓库时光标立即隐藏
  • 改进: CanShow 检测现已防更新

v1.2.2

  • 修复:与2026-04-04版本更新兼容——仓库面板现在能正确显示
  • 修复:面板显示/隐藏使用游戏自身的基础类命令,而非手动标记操作
  • 移除: 更新后导致崩溃的不安全缓存清除调用
  • 改进:语言检测和模态对话框检测现在支持更新

v1.2.1

  • 修复:ESC键现在会在关闭仓库前正确关闭数量对话框
  • 已修复:窗口检测现在使用精确的游戏窗口类名

v1.2.0

  • 新增:本地化仓库标题——自动匹配游戏语言(14种语言)
  • 新:通过CSS树扫描已正确设置顶部标题
  • 新增:通过 HID Raw Input 支持原生 PS5/PS4 手柄
  • 新增:可配置的PS按键(圆圈、三角、方块、叉、L1、R1、L3、R3、分享、选项、触摸板、PS、静音)
  • 新功能:松开按钮时延迟关闭,以防止翻滚躲避
  • 新功能:游戏发起的关闭检测 — 正确恢复模式字节和光标

v1.1.2

  • 修复:自动捕获现在通过vtable(虚函数表)而不是面板ID来识别仓库控制器
  • 已修复:从仓库处理程序对象动态解析面板ID
  • 改进:FindFunctionStart 可识别 INT3 填充和额外的前导码模式
  • 改进:如果检测到RIP相对寻址的指令,钩子安装将安全中止
  • 改进:模式字节访问由自旋锁保护

v1.1.1

  • 新增:使用键盘打开仓库时,鼠标光标现在会自动出现
  • 新增:关闭仓库时光标再次隐藏

v1.1

  • 修复:CanShow钩子现在正确抑制了仅与竞争商店面板相关的内容
  • 修复:去除了不安全的暴力破解 SetTitle 扫描
  • 修复:DLL卸载现在正确恢复所有游戏钩子
  • 修正:手柄上的B按钮现在可以始终关闭仓库
  • 改进:函数解析现在使用字符串交叉引用,而非脆弱的字节模式

v1.0.0

  • 初始版本发布
  • 随时随地按F6打开私人储物箱
  • 通过面板ID自动收集 — 无需访问宝箱
  • 基于模式扫描的功能检测(防更新)
  • 安全系统:在过场动画、小游戏和互动过程中会被禁用
  • 通过XInput支持手柄操作,带有可选的修饰键
  • 键盘修饰键支持(例如 Shift+I)
  • 使用F11键热重载INI文件
  • 可通过INI文件配置的热键

也来看看

快捷菜单热键 — 为所有游戏菜单(背包、任务书、技能、地图等)提供直接的键盘和控制器快捷键。与任意位置私有仓库完全兼容——按Shift+I打开仓库,按I打开背包。

快速技能点 — 降低技能点升级所需的经验门槛。通过简单的INI设置,可配置2倍至128倍的加速倍率。仅影响技能点获取——阵营声望及其他成长系统保持原版设定。