关于 Pocket Dimensions
推出便携式 3 x 3 盒装底座 – 您可以将其放入库存中!部署它们并打开它们进入内部 – 存储、制作、冶炼、种植、聚会…… 住。 扩展并维护维护以保护免受袭击者的攻击。捡起它们并部署到其他地方。跳出框框思考……在内部也是如此!
观看 SRTBULL 的教程!
正如 SHADOWFRAX 精选的那样!(大约 0:55 标记)
就像《神秘博士》中的 TARDIS 一样,它们的内部更大!在“真实”的 Rust 世界中,一个整整 9x9x9 米大(超过 25000 立方英尺)的袖珍维度整齐地装进一个小木箱里。你可以用任何你喜欢的方式对盒子进行伪装或伪装——只要玩家的创意工坊皮肤/服务器皮肤插件允许。
玩家可以通过 Tool Cupboard 的 UI 中的一个按钮轻松地将现有建筑转换为 Pocket Dimensions。或者,如果这太费力了,完整的、新鲜的、随时可以移动的复制粘贴文件可以作为盒子出售,并带有您自己的自定义皮肤 – 这完全是可选的,需要复制粘贴,更多内容在下面的专门部分中。是否允许任何一种方法完全取决于您的配置。
默认情况下,该配置允许以多种不同的方式突袭 Pocket Dimensions – 但如果您打算在 PVE 服务器上运行此插件并且您不想要任何这些,则可以调整许多配置选项以增强您的服务器体验。两种类型的服务器在此页面上都有自己的专用部分 – 请阅读以下内容。
确保你维护了口袋维度的完整性!如果口袋维度建筑的任何外部结构(墙壁/门口)1) 腐烂 2) 被突袭 3) 被管理员/插件移除,或 4) 容纳维度本身的盒子被摧毁,维度将崩溃,传送其中的所有玩家,并将存储容器、炮塔、工具柜和其他任何可以存储任何物品的东西的所有内容掉落到盒子最后部署的位置。 来得容易去得快!
您可以随时捡起 Pocket Dimension 盒子并将它们移动到其他地方,所有内容都仍然存在。您甚至可以在 Pocket Dimensions 内的 Pocket Dimensions 中部署 Pocket Dimensions……一个盒子的感觉!默认情况下,该配置不允许拾取里面有玩家的盒子,但您可以切换此设置。
快速开始
- 作为管理员:请确保从下面的列表中授予您的组/玩家适当的权限。如果您打算使用任何扩展功能,请确保 Copy Paste、No Escape 和 Server Rewards / Economics 已加载并正确配置。有关这些插件的支持的更多信息,请参见下文。这也适用于从配置中分发/支持皮肤盒模板的任何可能兼容的插件,例如 Kits 或 Shop by Mevent,或基于 Copy Paste 的插件,例如 Raidable Bases。
- 作为玩家:制作一个满足有效性要求的 3 x 3 x 3 立方体(更多内容见下文)- 如果您有适当的权限和适当数量的所需货币,请打开工具柜并按下粉红色的“转换为 Pocket Dimension”按钮。如果构建正确,您现在将收到一个包含整个立方体的盒子。或者,部署一个新的小木盒,该盒子使用配置中提到的皮肤 ID 进行皮肤处理,该 ID 引用了有效的复制粘贴模板 – 无需玩家构建,但仍然可以。此插件附带几个预先构建的、已知的有效 Pocket Dimensions,可供您的玩家享用。
权限 (Oxide.Grant 用户 YourName [权限名称以 pocketdimensions 开头]。
此插件使用普通的 Oxide 权限系统。要在典型服务器上进行快速设置,请授予自己 pocketdimensions.admin 权限,并授予 Oxide 中的默认组 pocketdimensions.player.all 权限。
- pocketdimensions.admin – 执行本节下方的 管理员命令 部分中提到的管理员命令需要此权限。
- pocketdimensions.player.all – 此权限相当于授予下面提到的所有 4 个权限。如果您想要更自定义的权限设置,请不要授予此权限。例如,如果您不想允许玩家在内部重生和转换,而您只想允许部署/拾取和进入/退出,请使用以下 4 个权限的组合。
- pocketdimensions.deploy.pickup – 此权限的持有者可以部署和拾取 Pocket Dimension 框,无论是现有的框还是基于配置中的皮肤 ID/复制粘贴文件组合的新框。当然,这也考虑了构建块/其他条件。
- pocketdimensions.player.enter.exit – 拥有此权限的持有者可以通过打开盒子进入 Pocket Dimensions,并通过与门户交互来退出。如果玩家没有该权限,他们将在打开/交互时收到通知,并被禁止进出。
- pocketdimensions.player.convert – 拥有此权限的持有者可以通过从其工具柜的 UI 转换现有建筑来创建新的口袋维度 – 只要他们有所需的货币数量(某些必需的物品/服务器奖励/经济),并且建筑本身满足结构要求。没有此权限的玩家甚至不会在 UI 中看到转换按钮。
- pocketdimensions.player.respawn – 此权限的持有者可以在 Pocket Dimensions 中部署的包、床和毛巾上重生。如果玩家没有该权限,并且他们(或其他人将他们装进)在口袋维度中部署了一个包,则玩家将不会在他们的死亡屏幕上看到该包作为可能的重生位置。
管理员命令(需要 pocketdimensions.admin 权限)
这些命令可以从控制台和聊天中执行 — 在聊天的情况下,它们必须以正斜杠 ( / ) 为前缀,在控制台的情况下,没有正斜杠。
/pd.check
靠近 TC 并直接查看它,然后从聊天或 F1 控制台发出此命令。它将执行有效性检查,而无需实际转换任何内容。如果发现任何问题,它会告诉你到底出了什么问题。用于制作您自己的复制粘贴模板。
/pd.convert
靠近 TC 并直接查看它,然后从聊天或 F1 控制台发出此命令。它将首先执行有效性检查。如果发现任何问题,它会告诉你到底出了什么问题。然后,如果没有发现问题,它会将建筑转换为口袋维度,你将以可部署的小木箱物品的形式收到它。
/pd.lostnfound
当口袋维度物品消失、被回收、放置在被摧毁的容器中或以其他方式从世界中删除时,它所代表的维度将被标记为“丢失”。只要物品仍然存在于世界某处的容器中(包括玩家的库存),这种特殊标记就不会发生。标记为“丢失”的口袋维度可以被管理员回收为与建筑物绑定的新创建的物品,进行部署和检查,并归还给合法所有者……或者被管理员折叠,如果管理员有一种预感,玩家故意“丢失”了他们的维度,这样当玩家离线时,没有人能够访问任何东西。
使用此命令会给你所有新回收的盒子物品(所以要确保你的库存里有空间),或者它会告诉你失物招领处没有任何东西可以回收。
/pd.givebox [皮肤 ID 或复制粘贴文件名] [可选:玩家部分名称/完整 Steam ID]
使用此命令创建一个 Small Wooden Box 物品,使用配置中提到的特殊皮肤进行皮肤处理,然后提供给玩家。基于 Copy Paste 模板的新 Pocket Dimension 将在该盒子首次部署到某个位置时创建。
此命令需要安装 Copy Paste 才能正常工作,并在配置中正确设置 Skin ID – to – Copy Paste 文件名条目。提到的文件名也必须存在于您的 Copy Paste 数据文件夹中。
使用第一个参数通过其皮肤 ID 或 Copy Paste 文件名来识别配置的 Copy Paste 部分中提到的模板。多个皮肤 ID 可能会导致相同的 Copy Paste 文件名,因此如果您通过文件名识别模板,则配置中指向此文件名的第一个条目的皮肤 ID 将被选为新创建和给定框的皮肤。
如果未提供可选的第二个参数,则假定应该为执行此命令的玩家(通常是管理员)提供一个新皮肤框。支持使用 STEAM ID 或玩家名称参数执行命令的插件可以使用此命令。
/pd.emergencycleanup
无论出于何种原因,都可以将其作为最后的手段来完全摆脱服务器上的所有 Pocket Dimensions 实体。毕竟,这是一个非常实验性的插件,事情可能会出错……这包括所有的 Pocket Dimension 建筑、它们的内容、里面的战利品,以及部署在世界中的包含 Pocket Dimensions 的盒子。如果一个维度没有被部署为盒子,而是作为物品保存在容器中,这些物品不会被移除,但在部署时,玩家会收到其关联的 Pocket Dimension 被突袭或腐烂的通知。请谨慎使用,此命令无法撤消。
这些是到目前为止的所有管理员命令。没有玩家命令,因为我认为当没有其他优雅的玩家输入/交互方式时,它们是最后的选择。
是什么让建筑成为 Pocket Dimension 的“有效”候选者?
并非每座建筑都可以被转换。一般来说,必须建造一个 3 x 3 x 3 的立方体,侧面的任何地方都只有一个外部单门 – 外面没有其他东西(除了屋顶上的太阳能电池板/风力涡轮机的潜在例外,如果你的配置允许的话)。构建块可以是任何等级或混合等级 – 从 Twig 到 Armoured。立方体内部是什么并不重要,只有外部“外壳”很重要。一旦转化为口袋维度,玩家就可以像使用常规基地一样在内部建造/扩展/拆除。
更具体地说,当检查建筑物的有效性时,会测试以下标准,并且每个连续问题的答案必须是 “是”,然后才能进行下一个问题 – 如果答案为 “否”,玩家将被告知原因:
- 这座建筑总体上正好有 9 个方形地基吗?
- 这座建筑的整体面积是否正好是 9 平方英尺(大概是天花板)?
- 建筑物总体上是否至少有 1 个单门口?
- 建筑物整体上至少有 35 面普通墙吗?
- 9 个宫格的本位牌堆都在同一水平线上吗?
- 对于 9 个方形地基中的每一个,它是否有匹配的方形地板作为天花板,正好高于它 9 米?
- 建筑物的中间地基是否已经没有标记为属于 Pocket Dimension?
- 建筑物的四个侧面是否有一堵普通的墙(或一个门口,但只有一个),而不是墙框、窗框或缺失的建筑块,以使外壳“气密”并防止玩家从维度掉入虚空?
- 建筑物的外壳上是否恰好有一个门口 – 不多也不少 – ?
- 目前唯一的外部门口是否“空”,即目前没有门/自动售货机部署在那里?
- 如果配置不允许在天花板上放置太阳能电池板/风力涡轮机,那么建筑物中没有那些可能被禁止的结构吗?
- 3 x 3 x 3 立方体内的所有电气/水实体是否都与该立方体外部的实体没有任何电线/软管连接?(如果您的配置中允许太阳能电池板/风力涡轮机,则这些实体在此检查阶段将获得特殊通行证)
- 建筑物是否没有任何实体从 3 x 3 x 3 立方体中“伸出”——例如屋顶、蜂窝、门廊、SAM 站点、楼梯等,或者太阳能电池板/风车(如果您的配置不允许它们)?
如果所有这些问题的答案都是响亮的“是” – 别担心,提问和回答这些问题是插件的工作,而不是你!- 该建筑被认为是有效的,因此可以转换为 Pocket Dimension!无论成功与否,您都会被告知结果。
突袭口袋维度(仅适用于默认启用 PVP 的设置)
这是新配置的默认行为。如果您打算在 PVE 服务器上运行此插件(玩家与环境,即人类玩家之间没有突袭/伤害),您可以跳过本节并直接进入下面的推荐 PVE 设置部分。
突袭口袋维度有两种主要方法:
- 从内部,通过损坏属于外壳的建筑结构 – 墙壁或容纳出口门户的门口
- 从外部,通过损坏展开的 Pocket Dimension 盒子。
默认情况下,不包含 Pocket Dimensions 的盒子上不能放置锁,以允许玩家从内部进行突袭 – 但如果您只想让玩家以无聊的方式突袭盒子,则可以切换此设置。当然,Pocket Dimension 内部的任何东西都可以 – 而且应该 – 被锁定!
当从外部突袭时,在默认配置下,次元箱会受到普通小木箱正常伤害的 2% (1/50)。换句话说,在默认配置下,大约需要 7-8 次 C4 充能才能使其内部的维度崩溃(或多或少与装甲级地基一样多)。
就像普通的原版建筑突袭一样,相同的策略(或这些策略的组合)也可以在这里应用:
- 深海 – 进去,拿走货物,出去,离开,向建筑所有者说 GG,他们可以保留他们的 Pocket Dimension。Rust 突袭中的体育精神精髓。
- 悲伤 – 进来,拿走货物(或不拿走),让建筑无法使用,直到它最终腐烂(维度崩溃),离开。高度恶意,但有时是唯一的选择……
- Yoink – 进入,拿走货物,重新密封入口,并声称维度现在是你的。不过,你可能想把它的盒子搬到另一个地方。
- 结束 – 进入并立即开始损坏 shell 的一个外部块(通常是出口门户所在的门口,或旁边的墙 – 甚至两者兼而有之!一旦其中一个外部 shell 元素消失(或被管理员“杀死”,或件删除),整个维度就会崩溃。更多关于维度 Collapses 的信息,请参阅下面的部分。
建议的 PVE 设置(仅适用于启用 PVE 的默认设置)
这将需要调整一些配置设置并重新加载插件。如果您打算在 PVP 服务器上运行此插件(玩家对玩家,即允许人类玩家之间的突袭/伤害),请返回上面的 Raiding Pocket Dimensions 部分 – 大多数默认设置在大多数情况下都应该可以正常工作。要了解这些推荐设置中的每一个作用,请查看下面的配置部分以了解详细信息。
"DimensionalBoxesSubtractItemConditionWhenPickingUp": 0.0, "DimensionalBoxesAllowLockingWithLocks": true, "DimensionalBoxesAllowDamage": false, "DimensionaBoxesDamageResistanceDivisor": 50.0, "DimensionalBoxesAlwaysHaveStability": true, "DimensionalBoxesCheckForPlayersInsideWhenPickingUp": false, "DimensionalBoxesCheckBuildingBlockOutsideWhenEnteringDimension": true, "DimensionalBoxesCheckTCAuthInsideWhenEnteringDimension": false, "DimensionalBoxesCheckTCAuthInsideWhenPickingUp": false, "DimensionalPocketsAllowSolarAndWindmill": true, "DimensionalPocketsTrapImmunityAfterTeleport": 5.0, "DimensionalPocketsExteriorBlocksAllowNonDecayDamage": false, "DimensionalPocketsActualAltitudeMin": 3200.0, "DimensionalPocketsActualAltitudeMax": 3900.0, "DimensionaPocketsAllowVendingMachineBroadcast": true, "EffectPlayerTeleportAppear": "assets/prefabs/missions/portal/proceduraldungeon/effects/appear.prefab", "EffectPlayerTeleportDisappear": "assets/prefabs/missions/portal/proceduraldungeon/effects/disappear.prefab", "EffectsPlayerTeleportEnable": true,
Pocket 维度的折叠
所有美好的事物最终都会结束。在这种情况下,“崩溃”意味着某个 Pocket Dimension 及其所有相关实体都被摧毁,最后,就好像 Pocket Dimension 根本不存在一样——除了从中掉落的所有多汁战利品。
这可能在以下情况下发生…
- 包含 Pocket Dimension 的盒子被管理员/插件“杀死”,或者损坏到销毁点
- Pocket Dimension 内部的一个外壳结构(墙壁/外部门口)被管理员插件“杀死”,或者腐烂/损坏到破坏点
- 位于外部门口的出口门户被管理员/插件“杀死”
在正常情况下,在典型的 PVP 服务器上,你只会期望 Pocket Dimensions 在腐烂、被突袭或被管理员故意移除(通过“杀死”盒子或外壳结构)时崩溃。
如果 Dimensions 突然无缘无故地消失,则可能来自另一个插件的功能,例如 Abandoned Bases – 但在这种情况下,这是完全预期的结果:Pocket Dimensions 应该在服务器上尽可能地表现得像正常的基地一样!关于废弃基地的话题,如果你使用那个插件,你绝对不应该允许锁上包含 Pocket Dimensions 的盒子 – 否则现在解锁的废弃 Pocket Dimension 将无法访问,因为盒子本身不会算作基地,并且它会保持锁定状态!
在 Collapse 期间,与 Dimension 关联的框的最后已知位置将用作枢纽点,其中…
- 该维度内的所有玩家,无论是沉睡的还是在线的,活着的还是作为尸体或尸袋的,都会被传送到枢纽点,不受伤害
- 所有拥有物品栏的实体,即其中存储的东西 – TC、盒子、炮塔、陷阱、储物柜等 – 都会在枢纽点掉落他们的灰色战利品袋,就好像所有这些实体都在同一时间被突袭一样
- 所有构建块和其他结构都会死亡,在枢纽点碎裂
如果折叠的 Dimension 内部也包含 Pocket Dimensions,依此类推(又名 box-ception),则整个“树”也会在根部折叠。这样,最好的突袭方式总是在直接部署在世界中的 Dimension 处(“box-ception”序列中的第一个维度),因为它涉及的材料和精力最少。
与 CopyPaste(以及任何使用它的插件,如 Raidable Bases)配合使用效果很好
此插件与 Copy Paste 完全兼容,并将其作为可选依赖项包含在内:即 Pocket Dimensions 不需要 Copy Paste 运行,但可能会通过额外的功能增强玩家的体验。强烈推荐。uMod 版本和分发的用于 Raidable Bases 的自定义补丁版本都可以使用。
作为管理员,您可以 /copy 和 /paste 建筑物并立即转换它(使用命令或在 Tool Cupboard UI 中),或者只是检查它是否是要转换的有效候选者 – 更多关于有效性的信息见下文。您还可以在插件配置中将一些皮肤 ID 定义为特殊皮肤:当带有这些特定皮肤的盒子第一次生成时(由玩家部署,由其他插件生成/粘贴 – 复制粘贴本身或使用它的插件,如 Raidable Bases,或完全独立的插件),无论您定义的复制粘贴文件名是什么,此盒子将立即变成一个 Pocket Dimension,其中包含以该名称复制的建筑物中的所有内容。之后,盒子也可以重新蒙皮,而不会出现任何问题。
您还可以使用 /pd.give 命令从服务器/F1 控制台或聊天中按名称或 Steam ID(请参阅上面的管理员命令部分)为玩家提供单独的新口袋维度 – 它的制作方式是依赖自定义命令的商店/套件插件可以轻松利用它们。如果您不希望玩家转换自己的建筑,这很有用。
Pocket Dimensions 插件甚至为这些插件提供了一些预定义的模板,因此您可以了解如何设置自己的模板。只需发出不带任何参数的 /pd.give 命令即可获取列表。如果您希望它们正常工作,请确保安装最新版本的 Copy Paste,并将包含的 Copy Paste 文件上传到服务器上的适当文件夹。
与 Server Rewards / Economics 兼容
将有效的建筑转换为口袋维度不应该是免费的 – 事实并非如此。默认情况下,玩家需要将 500 个废料存入 TC – 或者在他们的库存中准备好该数量,两者都可以。您可以根据自己的喜好调整配置中货币物品的数量和简称。您甚至可以这样做,这样不仅要检查该货币物品的简称,还要检查它的皮肤 – 如果您有自定义物品附带的插件,这很有用。
但您也可以使用 Server Rewards 或 Economics 作为潜在货币!查看上面的配置部分了解更多详情。为此,必须安装 Server Rewards 或 Economics,具体取决于您想要使用哪一个。
此外,带有配置中提到的皮肤 ID 的盒子(导致复制粘贴模板)可以在 Server Rewards 商店中出售,因此它是双向的。
与 No Escape 的兼容性
如果您不在服务器上使用 No Escape 插件,则可以跳过此部分。
口袋维度在许多方面都只是常规基地,因此伤害属于它们的任何实体都会施加突袭阻止,攻击里面的任何玩家会施加战斗阻止。
这两者都算作一个转义块。如果此插件检测到玩家被转义阻止,则可以在 Pocket Dimension 配置中启用/禁用几个可选限制,以更改此转义块对受影响玩家游戏的影响:
- 输入 Pocket 尺寸
- 退出型腔尺寸
- 将 Pocket Dimension Items 部署到 Box 中
- 将 Pocket Dimension Boxes 拾取到物品中
与其他插件的兼容性
任何能够发布/使用蒙皮物品/生成蒙皮小木箱的插件,都应该开箱即用(不是双关语)。如果有任何问题,请随时告诉我。
配置 (oxide/config/PocketDimensions.json)
以下是所有配置值(及其默认值)的概要,这些值与玩家权限相结合,将影响您服务器上的游戏性。除了高级内容(如 TC UI Button 的定位/样式或 CopyPaste 模板)之外的所有内容都在本节中解释:
“DimensionalBoxesSubtractItemConditionWhenPickingUp”:0.0、
几乎每次捡起 Pocket Dimension 盒子时都被迫不断修复它会非常不方便,所以这个值将决定会丢失多少条件(在 0.0 到 1.0 的范围内,代表 0% 到 100%)——默认情况下,它是 0.0,所以盒子只有在损坏时才会失去状态。将其设置为更高的值(但永远不会超过 1.0)以阻止玩家过多、过于轻松地移动他们的盒子。
“DimensionalBoxesAllowLockingWithLocks”: false,
明显。 默认情况下,如果钥匙锁或密码锁被放置在 Pocket Dimension 盒子上(无论是自动的、带有插件的,还是由玩家手动放置的),锁只会掉到地上。这是为了给突袭玩家一个机会,从内部对一个维度进行可以说是 HARDER 的选择(从统计上讲)。将此设置为 true 以禁用此行为并允许锁定。
“DimensionalBoxesAllowDamage”: true,
默认情况下,包含 Pocket Dimensions 的盒子会受到伤害 – 这使得可以说更容易的突袭选项成为可能,即通过摧毁盒子从外部进行突袭。受到的伤害量取决于下面定义的 ResistanceDivisor 值。如果你想让部署的 Pocket Dimensions 从外部坚不可摧,不让玩家伤害包含它的盒子,请将其设置为 false。
“DimensionaBoxesDamageResistanceDivisor”: 50.0,
这个值将决定一个次元盒子比其普通的小木箱要强多少。例如,默认值 50 意味着它受到的伤害减少 50 倍,即 2%(1 除以 50)。相应地增加和减少此值以使来自外部的突袭更难或更容易。
“DimensionalBoxesAlwaysHaveStability”: true,
默认情况下,此设置为 true,这意味着如果放置 Dimension 盒子的地板/地基突然被摧毁,盒子本身将保持漂浮在空中,而不是与它一起被摧毁。它基本上将所有带有 Pocket Dimensions 的盒子视为始终直接放置在坚不可摧的地形上。当然,这永远不适用于正在折叠的 Dimension – “box-ception” 序列中的任何子 Dimension 都不会在“纳尼亚”中保持漂浮。如果您想在盒子不直接放置在实际地形上时更轻松地从外部突袭 Dimensions,请将此设置为 false。
“DimensionalBoxesCheckForPlayersInsideWhenPickingUp”: true,
如果玩家在 Pocket Dimension 内部,并且它的盒子刚刚被捡起,那么里面的玩家现在会被卡住,直到盒子被重新部署到其他地方。 另一方面。。。 整个 30 人的团队都可以通过这种方式“走私”,全部悄悄地藏在里面!因此,默认情况下,你不能在玩家在里面捡到口袋维度,也不建议允许玩家在里面重生,出于同样的原因。如果你真的知道你在做什么,请将其设置为 false。
“DimensionalBoxesCheckBuildingBlockOutsideWhenEnteringDimension”:false、
在原版 Rust 中,如果一个盒子被解锁,它可以被打开,即使尝试解锁的玩家没有获得 TC 的授权。因此,这个值被设置为 false,这样即使你没有获得 TC 的授权,你仍然可以进入 Dimensional Box。如果你想要额外的安全层,请将这个值设置为 true,而不是在包含 Dimension 的盒子上锁。
“DimensionalBoxesCheckTCAuthInsideWhenEnteringDimension”:false、
另一方面,此设置确保在口袋维度本身内部需要对 TC 进行授权(如果此时存在)。出于与上述相同的原因,它被设置为 false,但如果您感到额外的偏执,请随意将其设置为 false,并且唯一能够进入口袋维度的玩家是那些在 TC 转换之前最初在 TC 上进行身份验证的玩家 – 以及稍后加入的其他玩家,但这也需要 pocketdimensions.player.respawn 权限。
“DimensionalBoxesCheckTCAuthInsideWhenPickingUp”:false、
与上面类似,但与拾取维度框有关——当然,所有其他拾取的检查也会经过测试(例如外部的积木)。默认情况下,此值设置为 false,但如果您愿意,您可以将其切换为 true,这样拾取口袋维度的唯一方法是在其内部的 TC 上获得授权。
“DimensionalPocketsAllowSolarAndWindmill”:false、
在 Pocket Dimension 内允许几乎无限且不受挑战的电力可能会对游戏性产生多种影响 – 因此默认值为 false。此外,当屋顶上太阳能/风力发电机的电线连接被切断时,恢复它们的唯一方法是使用“卡夹”进行管理员干预。如果您不希望玩家在 Pocket Dimension 内依赖燃料发电机,请将其设置为 true。
“DimensionalPocketsAllowTestGenerators”: true,
与上面的设置类似,只处理测试生成器(静态的、静态不可见的或可部署的)。通常,普通玩家无法获得这些(除非涉及管理员/插件),因此,此设置为 true。如果你有插件/工具包,玩家可以获取/生成它们,你应该将其设置为 false。
“DimensionalPocketsTrapImmunityAfterTeleport”:1.5、
当你进入一个未知的口袋维度时,你永远不知道霰弹枪陷阱或炮塔是否正对着入口放置。同样,当你在口袋维度内部时,你不知道外面发生了什么,所以你永远无法确定是否有人放置了瞄准包含该维度的盒子的陷阱。因此,玩家进入/退出口袋维度后自动陷阱瞄准的默认冷却时间设置为 1.5 秒。随你喜欢让它变长或变短,只是不要负数,最好不超过 60 秒。
“DimensionalPocketsExteriorBlocksAllowNonDecayDamage”: true,
这可以通过从内部攻击其外部外壳块(墙壁/门口)来有效地折叠整个口袋维度 – 因此,它被设置为 true。如果你想使整个外壳不受伤害(腐烂伤害除外),请将其设置为 false。
“DimensionalPocketsActualAltitudeMin”:3200.0、
所以诀窍是这样的:在现实中,实际的 Pocket Dimension 建筑存在于地图上随机选择的位置,但在天空中,玩家被物理传送到它们之间或从它们之间传送——所以它会产生一种错觉,即在“正常现实”之外一个完全隐蔽的地方,在那里你甚至听不到实际地图上发生的任何事情。类似于万圣节传送门的工作原理。此设置定义了 Pocket Dimensions 在擦除期间物理上驻留的最小随机高度 – 默认情况下,3200 米(3.2 公里,或大约 2 英里)。如果您有任何其他插件可以在高空生成事物,请调整它。不建议将其设置为低于 1000 – 里面的玩家可能会听到实际地图上发生的事情,例如 C4、补给飞机、直升机等。
“DimensionalPocketsActualAltitudeMax”:3900.0、
与上面的设置类似,这定义了最大高度。这两个设置一起有效地在天空中创建了一个长方体空间,预计口袋维度实际位于随机选择的位置。默认情况下,此值设置为 3900.0,这是有充分理由的:在正好 4000 米的高度,所有玩家都会立即死亡,包括上帝模式中的管理员,这是原版 RUST 的行为。因此,不建议将此值设置为高于默认值。
“DimensionaPocketsAllowVendingMachineBroadcast”: false,
在保持幻觉的话题上 – 允许玩家在地图上有效地广播他们的 Pocket Dimension 的位置肯定会打破这种幻觉,因此该值默认为 false。尝试在 Pocket Dimensions 中部署的自动售货机中启用广播的玩家将收到警告,并且不会启用广播。如果您真的不太关心这样的视觉细节,请将其设置为 true。
“DimensionalPocketsRespawningInsideRequiresDeployment”: true,
防止玩家试图在当前未部署的尺寸的袋子/床/毛巾内重生,以防止玩家被有效地困在里面(至少直到他们重生到其他地方,或者直到盒子被重新部署到外面)。
“DimensionalPocketsTeleportingInsideRequiresDeployment”: true,
与上面的设置类似,但不是处理在睡袋内重生的问题,而是防止玩家传送到当前未部署的口袋维度(适用于任何类型的传送/传送插件)。注意:当前处于卡入状态的管理员可以随心所欲地传送,这仅适用于普通玩家。
“DimensionalPocketsMaxInceptionDepth”:10、
如果要限制维度内部的维度数量等,则此设置适合您。如果在擦除过程中更改此值,则只会选中新部署的框以查看它们是否保持在限制范围内,并且不会影响现有的维度树。
“DimensionalPocketsLocationMinTemperature”:15.0、
当选中口袋维度的新随机位置时,此设置将确保在中午 12 点(中午)基于生物群系的温度始终大于此值。如果你想要更凉爽的气候,请减小此值。
“DimensionalPocketsLocationMaxTemperature”:32.0、
与上述设置类似,当考虑口袋维度的新随机位置时,这将使基于生物群系的温度上限为中午 12 点。如果你不介意更热的气候,请增加此值。
“EffectPlayerTeleportAppear”: “assets/prefabs/missions/portal/proceduraldungeon/effects/appear.prefab”,
这是一个纯粹的装饰性设置。当玩家进入或退出 Pocket Dimension 时,它算作一次传送。发生这种情况时,您选择的视听效果将在玩家的新位置播放。默认情况下,它与用于万圣节地牢的相同。您可以在此列表中使用大多数预制件效果,只需在 “Search” 框中按 “effect” 进行筛选即可。
“EffectPlayerTeleportDisappear”: “assets/prefabs/missions/portal/proceduraldungeon/effects/disappear.prefab”,
与上述设置对应的是 – 它只是在被传送的玩家的旧位置创建效果。同样,它是来自万圣节地牢的效果。如果您想使用不同的效果,请查看我上面链接的预制件列表。在提交之前,您可以使用 Play FX 插件先在游戏中找到所有插件进行测试。
“EffectsPlayerTeleportEnable”: true,
效果可能会很响亮并吸引注意力。也许您不需要。默认情况下,传送效果处于启用状态,但如果将此设置的值设置为 false,则在玩家进入或退出时不会播放任何特殊效果。
“CheckEscapeBlockWhenEnteringDimensions”: true,
如果你安装了 No Escape,这将阻止被 Escape 阻止的玩家进入 Pocket 维度,就像它的名字所暗示的那样。默认情况下它是 true。如果你认为从外面突袭的玩家仍然能够进入里面,请随意将其更改为 false。
“CheckEscapeBlockWhenExitingDimensions”: true,
同样,如果您没有安装 No Escape,请忽略此设置以及之后的下一个设置。与上述类似,仅在退出维度时。玩家将被告知,由于被 Escape Blocked 的原因,他们无法退出或进入维度。如果您觉得 Escape Block 不应该与退出无关,请将默认值更改为 false。
“CheckEscapeBlockWhenDeployingDimensions”: true,
没有 Escape 特定设置 3。你现在明白了:如果这个设置为 true(并且默认为 TRUE),Escape Blocked 玩家将无法将任何 Pocket Dimension Item 部署到他们可以输入的 Box 表单中。如果你认为这个限制太严格,请将默认的 “true” 值更改为 false。
“CheckEscapeBlockWhenPickingUpDimensions”: true,
而适用于 No Escape 的最后一个设置 – 它与上面的设置相反。默认情况下,施加了 Escape Block 的玩家无法捡起里面有 Pocket Dimensions 的盒子。如果你不同意,请将其更改为 false。
“ForbiddenCommandsInsideDimensions”: [“tp”,“warp”,“back”,“home”,“tpr”,“tpa”,“kit”],
此黑名单包含默认聊天和控制台命令,没有管理员权限的玩家将无法运行这些命令,而他们自己位于 Pocket Dimension 图层高度范围内。您可以添加或删除自己的命令集(不包括正斜杠)。
“ForbiddenCommandsCheckingEnabled”: true,
如果将其设置为 false,则将禁用对上述黑名单的依赖,并且任何玩家都可以在 Pocket Dimension 内执行任何命令。
“ConversionCostCurrencyUsed”: “CustomItemAmount”, //英语
默认情况下,从普通基础到 Pocket Dimension 的转换会花费 Rust 中存在的某个物理物品,该设置反映在 “CustomItemAmount” 的值中。如果你更喜欢使用 Server Rewards / Economics 来支付转换费用,请将此值分别设置为 “ServerRewards” 或 “Economics”。你甚至可以将其设置为 “NoCost” – 并且转换对玩家是免费的(但基础仍然需要正确构建和维护)。
“ConversionCostAmount”:500、
500 废品来转换听起来像是一个适中的数量。500 RP 或 ¤500 但不是 – 因此您可以根据所使用的货币,根据需要将此金额调整为更高或更低。只接受大于 0 的整数。
“ConversionCostCustomItemShortname”: “报废”,
除了默认的 “scrap” 之外,还有什么 – 通用货币。当然,如果你选择了 Server Rewards 或 Economics 来代替,这个设置就无关紧要了。无论你从批准列表中选择什么有效的物品简称,这就是玩家需要支付的转换费用。由于并非所有物品都可以放入 TC 中,它还会检查玩家的库存中是否有该物品。
“ConversionCostCustomItemOverrideName”: null,
同样,这仅适用于 “CustomItemAmount” 选项。如果您想使用完全自定义的项目,例如,由另一个插件注册的项目,具有不同的图标/行为,这些项目通常具有自定义名称。如果此值为 null(没有引号)或空(只有 “”引号),则将使用翻译成客户端语言的 Item 定义名称。
“ConversionCostCustomItemSkinID”:0、
最后:如果您只想接受物品的某些皮肤变体 – 同样,对于具有自定义物品(如水基)的插件很有用 – 将默认值 0 设置为 Steam 创意工坊上可用的任何有效物品 ID。如果您的货币未设置为“CustomItemAmount”,此设置也将被忽略。
还有一些设置,但这些都是最重要的设置,它们将塑造您独特的服务器体验。
翻译支持 (oxide/lang/en/PocketDimensions.json)
玩家看到的几乎所有字符串,包括聊天和 GUI 中显示的文本,都可以编辑。只需加载插件并让它生成文件 – 编辑后,重新加载插件。
Hooks/API(适用于插件开发人员)
如果您不想添加 [PluginReference],您也可以通过 Interface.CallHook() 调用这些函数
//get an array of BasePortal entities that are assigned to Dimensional Pockets // - or null if none are present var portalArray = PocketDimensions?.CallHook("GetDimensionalPortals") as BasePortal[]; //get an array of BuildingManager.Building instances that are assigned to Dimensional Pockets // - or null if none are present var pocketArray = PocketDimensions?.CallHook("GetDimensionalPockets") as BuildingManager.Building[]; //get an array of StorageContainer entities that are assigned to Dimensional Pockets // - or null if none are present var boxArray = PocketDimensions?.CallHook("GetDimensionalBoxes") as StorageContainer[]; //pass a BasePortal entity and get a boolean true if it's assigned to a Dimensional Pocket // - or false if it's not var isDimensionalPortal = PocketDimensions?.CallHook("CheckIsDimensionalBox", basePortal).Equals(true); //pass a BuildingManager.Building instance and get a boolean true if it's assigned to a Dimensional Pocket // - or false if it's not var isDimensionalPocket = PocketDimensions?.CallHook("CheckIsDimensionalPocket", building).Equals(true); //pass a StorageContainer entity and get a boolean true if it's assigned to a Dimensional Pocket //- or false if it's not var isDimensionalBox = PocketDimensions?.CallHook("CheckIsDimensionalBox", storageContainer).Equals(true); //pass a BuildingBlock entity and get a boolean true if it's assigned to a Dimensional Pocket SPECIFICALLY as a Shell Block // - or false if it's not var isDimensionalShellBlock = PocketDimensions?.CallHook("CheckIsDimensionalShellBlock", buildingBlock).Equals(true); //pass a DecayEntity entity and get a boolean true if inside a DimensionalPocket Building // - or false if it's not var doesBelongToDimensionalPocket = PocketDimensions?.CallHook("CheckBelongsToDimensionalPocket", decayEntity).Equals(true); //pass a global::Item instance and get a boolean true if it's assigned to a Dimensional Pocket // - or false if it's not. //You must also specify whether you're looking for "fresh", unopened dimensions in that item OR an already existing dimensions. //If you want to check both cases, you must do two separate checks, passing a different boolean (true when looking for fresh, //false when not) as the second (counting from 0th) argument. var isDimensionalItem = PocketDimensions?.CallHook("CheckIsDimensionalItem", item, lookingForFresh).Equals(true);