此插件需要 Chaos 扩展 -> https://chaoscode.io/resources/chaos.321/

SkinBox 允许玩家更改他们放置在盒子中的任何可蒙皮物品的皮肤。
当物品被放入盒子中时,它将填充可用的皮肤。
然后,用户可以拖出他们想要的皮肤。

v2.2.0+ 中的旧视频

UI 更改

275886529de26da06aaa1066c148767e.jpg
00fd5b1e2d1c303b36c9848a0bb56f55.jpg

特征
SkinBox 允许您;

  • 从 Steam 创意工坊导入玩家可以在 SkinBox 中领取的特定皮肤
  • 从 Steam 创意工坊轻松导入整个皮肤收藏
  • 支持重定向的项目皮肤,例如工业门 -> 钣金门
  • 能够重新设计已部署项目的皮肤
  • 将创意工坊皮肤名称应用于物品
  • 应用使用成本以使用 SkinBox
  • 应用使用冷却时间以使用 SkinBox
  • 授予 VIP 访问特定皮肤的权限
  • 在容器中按名称搜索皮肤
  • 使用最喜欢的系统来确定常用皮肤的优先级
  • 可选择用于特殊蒙皮的喷雾罐,而不是 command
  • 能够存储一组蒙皮物品并将其应用于您的库存

此插件需要 Steam API 密钥才能访问创意工坊皮肤列表。
您可以通过以下链接获取您的 Steam API 密钥 -> https://steamcommunity.com/dev/apikey 获得 Steam API 密钥
后,将其输入到您的配置中,如下所示

法典:
"Steam API key for workshop skins (https://steamcommunity.com/dev/apikey)": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"

** 注意 ** 如果没有有效的 Steam API 密钥,此插件将无法运行!

关于客户端皮肤下载
服务器或插件都不负责在客户端上实际加载皮肤。这纯粹是客户端和 Steam 之间的事情。该插件仅告诉客户端皮肤 ID,客户端要求 Steam 下载它。

有关皮肤图标未在客户端上加载的任何问题完全是客户端的问题。

如果用户遇到皮肤图标无法加载的问题,请告诉他们打开 Steam,转到下载选项卡,然后强制启动排队的创意工坊请求

权限

SkinBox 使用 Oxides 权限系统
要分配用户权限,请在控制台中使用 oxide.grant user “username|steam id” “permission”。
要分配组权限,请在控制台中使用 oxide.grant group “groupname” “permission”。
您可以在此处阅读有关如何使用权限系统的更多信息:uMod – 权限

权限都在配置中,可以根据您的喜好进行自定义。
默认情况下,它们是;

“skinbox.use” – 打开皮肤盒
需要 “skinbox.admin” – 使用管理员命令
需要 “skinbox.ignorecost” – 忽略具有此权限
的玩家的使用成本 “skinbox.ignorecooldown” – 忽略具有此权限

的玩家的冷却时间 允许按物品类别
重新设置皮肤
您可以为各种项目类别分配权限,这些类别将限制对具有该权限的玩家进行皮肤设置。
默认情况下,它们都使用 “skinbox.use” 权限,该权限允许任何具有该权限的人对这些项目类型进行皮肤。
如果您想将这些物品类型限制为特定玩家,您需要将权限更改为默认权限以外的其他权限,并将其授予这些玩家

法典:
    "Permission required to skin weapons": "skinbox.use",
    "Permission required to skin deployables": "skinbox.use",
    "Permission required to skin attire": "skinbox.use",

将批准的皮肤限制为特定玩家
您可以以相同的方式将 Rust 批准的皮肤的使用限制为特定玩家

法典:
"Permission required to view approved skins": "skinbox.use",

每个皮肤
的自定义权限
您还可以在配置的 “Custom permissions per skin(每个皮肤的自定义权限)”部分为每个皮肤 ID 分配自定义权限。您指定您的权限,然后将皮肤添加到该列表中。
默认配置包含如何执行此作的示例

C#:
"Custom permissions per skin": {
      "skinbox.example1": [
        9990,
        9991,
        9992
      ],
      "skinbox.example2": [
        9993,
        9994,
        9995
      ],
      "skinbox.example3": [
        9996,
        9997,
        9998
      ]
    }

聊天命令
/skinbox | /sb – 打开皮肤框
/skinbox <skinID> | /sb <skinID> – 将指定的皮肤应用到当前手中的物品,而无需打开框
此命令和此命令的别名可以在标题为“打开 SkinBox

的命令”部分的配置中更改 /skindeployed | /sd– 打开皮肤框以重新设置已部署项目的
皮肤 /skindeployed <skinID> | /sd <skinID> – 将指定的皮肤应用于目标实体,而不打开该框
此命令和此命令的别名可以在标题为“打开已部署项目 SkinBox 的命令”

部分的配置中更改 /skinset | /ss – 打开皮肤集框
/skinset <ID> | /ss <ID>– 将具有指定 ID 的皮肤集应用到您的库存中,而无需打开框
此命令和此命令的别名可以在标题为“打开皮肤集

的命令”部分的配置中更改 控制台命令
添加/删除单个皮肤 ID
skinbox.addskin– 使用单独的 ID 号
添加一个或多个皮肤(例如 skinbox.addskin 820574348 (仅一个) -OR- skinbox.addskin 820574348 820610731 (一次两个,您最多可以在同一命令中添加 16 个皮肤 ID))skinbox.removeskin

(例如 skinbox.removeskin 820574348 (仅一个) – 或 – skinbox.removeskin 820574348 820610731 (一次两个,最多可以在同一命令中添加 16 个皮肤 ID))

skinbox.addvipskin <permission> <skinID> – 使用皮肤的单个 ID 号添加皮肤,并为其分配指定的权限。
此权限必须已存在于配置

skinbox.removevipskin 的自定义权限部分中 <permission> <skinID> – 删除皮肤并将其从该权限皮肤列表中删除。
此权限必须已存在于配置

skinbox.validatevipskins 的自定义权限部分中 – 将 VIP 皮肤列表与实际皮肤列表进行比较,并从创意工坊中查询任何缺失的皮肤。

添加/删除皮肤集合
skinbox.addcollection – 添加集合
中的所有皮肤(例如:skinbox.addcollection 659627304)

skinbox.removecollection – 删除集合
中的所有皮肤(例如:skinbox.addcollection 659627304)

skinbox.addvipcollection <permission> <collectionID> – 添加集合中的所有皮肤,并为它们分配指定的权限。
此权限必须已存在于自定义权限中ission

部分 – 删除集合中的所有皮肤,并将其从该权限皮肤列表中删除。
此权限必须已存在于配置的

自定义权限部分 将皮肤 ID
列入黑名单
 skinbox.addexcluded – 阻止玩家使用此皮肤,除非他们具有适当的身份验证级别
(例如:skinbox.addexcluded 820574348(只有一个) – 或 – skinbox.addexcluded 820574348 820610731

skinbox.removeexcluded – 从排除列表中
删除皮肤 ID(例如:skinbox.removeskin 820574348 -OR- skinbox.removeskin 820574348 820610731

skinbox.addcollectionexclusion – 将整个皮肤集合添加到皮肤黑名单

skinbox.removecollectionexclusion – 从皮肤黑名单

中删除整个皮肤集合 如何找到这些皮肤和集合 ID 号
通过您喜欢的浏览器打开 Steam 创意工坊,然后单击任何皮肤。
在 URL 中,您将看到末尾附加的 ID 号。这是添加此皮肤时需要使用的皮肤 ID。
使用相同的过程添加皮肤集合

示例,URL 的末尾包含 ?id=2373483517。此编号是皮肤 ID

9c9d8768700287c3c778f293c1f3a052.png

将使用成本应用于 SkinBox
您可以在标题为“使用成本选项”的配置部分中指定使用 SkinBox 和重新设置项目外观的成本。
在这里,您可以更改成本,以及在应用成本时使用的货币。
如果您希望 VIP 在使用 SkinBox 时不收取任何费用,只需授予他们 “skinbox.ignorecost” 权限即可

C#:
"Usage Cost Options": {
    "Enable usage costs": false,
    "Currency used for usage costs (Scrap, Economics, ServerRewards)": "Scrap",
    "Cost to open the SkinBox": 5,
    "Cost to skin deployables": 10,
    "Cost to skin attire": 20,
    "Cost to skin weapons": 30
  },

使用 SkinBox
后应用冷却
时间您可以在使用 SkinBox 后为玩家应用冷却时间。您可以在标题为“冷却选项”的配置部分中修改此设置:
如果您想防止冷却时间应用于 VIP,只需授予他们 “skinbox.ignorecooldown” 权限即可

C#:
"Cooldown Options": {
    "Enable cooldowns": false,
    "Cooldown time start's when a item is removed from the box": true,
    "Length of cooldown time (seconds)": 60
  },

收藏夹系统
收藏夹系统的工作原理是记录玩家使用的皮肤并确定使用最多的皮肤的优先级。
它还包含一个数据清除系统来删除旧的玩家数据
这个系统可以在配置中切换,并且可以调整

清除时间 玩家还可以使用提供的按钮

清除每个项目的收藏夹 皮肤套装系统
皮肤套装系统允许有权的玩家将特定皮肤存储在套装中,并轻松地将其应用于他们的库存
玩家可以通过按下皮肤框中的“设置”按钮或输入皮肤套装聊天命令
之一来访问皮肤套装框 玩家将有 12 个插槽,他们可以将皮肤物品拖入其中。皮肤设置框将为玩家保存这些皮肤。

– 皮肤将首先应用于物品栏中未蒙皮的物品,然后再覆盖已经蒙皮
的物品 – 皮肤只会应用于物品栏中
同类型的第一件物品 – 皮肤套装中只能有独特的物品(比如 1 把突击步枪、1 条裤子等)
– 要将物品添加到皮肤套装中,您只需将皮肤物品拖到皮肤套装框中
即可- 要从皮肤套装中删除物品,请右键单击该物品或将战利品悬停在其上
– 您可以通过按“清除”按钮
来清除整个套装 – 您可以通过按“应用”按钮
来应用皮肤套装 – 您可以在配置文件中编辑玩家可以拥有的皮肤套装数量
– 皮肤套装使用配置中设置的成本规则。皮肤套装 UI 中显示的应用成本反映了将该套装应用于用户当前库存

的成本 Spray Can Support
您可以选择为玩家提供特殊皮肤的喷雾罐,这些喷雾罐可用于重新设置地板上的物品和已部署的物品(如门和盒子)的皮肤。

默认情况下,此选项处于禁用状态,要启用它,请在配置中将 “Allow skinning via SkinBox spray can” 设置为 true。

此选项有一个控制台命令,可用于提供/创建 SkinBox 喷雾罐。
该命令只能由具有管理员权限的玩家通过 RCON 运行,也可以添加到支持购买命令的商店中。

通过游戏内控制台运行不带参数的命令 “skinbox.spraycan” 会给自己一个喷雾罐
在 RCON 中或通过游戏内商店运行命令 “skinbox.spraycan <playerNameOrID>” 会给目标玩家一个喷雾罐

如果你想在你的战利品表中包含这些物品,简称是 ‘spraycan‘ ,皮肤 ID 是 ‘2937962221

其他配置选项
“最大可见页面数” – 设置用户可以在 SkinBox
中访问的页面限制 “包含已批准的皮肤” – 自动导入所有已批准的皮肤
“包括手动导入的创意工坊皮肤” – 导入您通过命令添加的所有创意工坊皮肤,或直接导入到配置中

The configuration file can be found in your server directory at …/oxide/config/SkinBox.json
The use of an editor and validator is recommended to avoid formatting issues
JSON:
{
  "Skin Options": {
    "Maximum number of approved skins allowed for each item (-1 is unlimited)": -1,
    "Maximum number of pages viewable": 3,
    "Include approved skins": true,
    "Include manually imported workshop skins": true,
    "Remove approved skin ID's from config workshop skin list": false,
    "Include redirected skins": true,
    "Steam API key for workshop skins (https://steamcommunity.com/dev/apikey)": ""
  },
  "Cooldown Options": {
    "Enable cooldowns": false,
    "Cooldown time start's when a item is removed from the box": true,
    "Length of cooldown time (seconds)": 60
  },
  "Command Options": {
    "Commands to open the SkinBox": [
      "skinbox",
      "sb"
    ],
    "Commands to open the deployed item SkinBox": [
      "skindeployed",
      "sd"
    ][/FONT],
    "Commands to open the set set box": [
      "skinset",
      "ss"
    ],
    "Allow skinning via Skinbox spray can": true
[FONT=Tahoma]  },
  "Permission Options": {
    "Permission required to use SkinBox": "skinbox.use",
    "Permission required to reskin deployed items": "skinbox.use",
    "Permission required to use admin functions": "skinbox.admin",
    "Permission that bypasses usage costs": "skinbox.ignorecost",
    "Permission that bypasses usage cooldown": "skinbox.ignorecooldown",
    "Permission required to skin weapons": "skinbox.use",
    "Permission required to skin deployables": "skinbox.use",
    "Permission required to skin attire": "skinbox.use",
    "Permission required to view approved skins": "skinbox.use",[/FONT]
    "Permission required to use skin sets": "skinbox.use",
[FONT=Tahoma]    "Custom permissions per skin": {
      "skinbox.example1": [
        9990,
        9991,
        9992
      ],
      "skinbox.example2": [
        9993,
        9994,
        9995
      ],
      "skinbox.example3": [
        9996,
        9997,
        9998
      ]
    }
  },
  "Usage Cost Options": {
    "Enable usage costs": false,
    "Currency used for usage costs (Scrap, Economics, ServerRewards)": "Scrap",
    "Cost to open the SkinBox": 5,
    "Cost to skin deployables": 10,
    "Cost to skin attire": 20,
    "Cost to skin weapons": 30
  },
  "Other Options": {
    "Allow stacked items": false,
    "Auth-level required to view blacklisted skins": 2
  }[/FONT],
  "Favourites Options": {
    "Enable favourites system": true,
    "Enable purging of favourites data": true,
    "Purge user favourites that haven't been online for x amount of days": 7
  },
  "Set Options": {
    "Enable set system": true,
    "Number of skin sets allowed": 3
  },
[FONT=Tahoma]  "Imported Workshop Skins": {},
  "Blacklisted Skin ID's": [],
  "Version": {
    "Major": 2,
    "Minor": 2,
    "Patch": 0
  }
}


在字符串中返回原因以取消以下任何钩子

C#:
string SB_CanUseSkinBox(BasePlayer player)
string SB_CanAcceptItem(BasePlayer player, Item item)
string SB_CanReskinItem(BasePlayer player, Item item, ulong newSkinID)
string SB_CanReskinDeployable(BasePlayer player, BaseEntity targetEntity, ItemDefinition targetItemDefintion)
string SB_CanReskinDeployableWith(BasePlayer player, BaseEntity targetEntity, ItemDefinition targetItemDefintion, ulong newSkinID)

返回指定项目短名称的皮肤 ID 的 List<ulong> 以覆盖 SkinBox 中显示的内容。为默认行为返回 null

C#:
List<ulong> SB_GetSkinOverrides(BasePlayer player, string shortname)

//Example usage
private object SB_GetSkinOverrides(BasePlayer player, string shortname)
{
    if (shortname == "tshirt")
    {
         Debug.Log($"Overriding skins for {player.displayName}");
         return new List<ulong>
         {
             2828965156,
             2828949212,
             2828923429,
             2828843252,
             2828375164,
             2828348837,
             2827794893
         };
    }
    return null;
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。