版本 2.1.9 中的新功
昨天 发布
- 更新以修复重定向皮肤被强制添加到非重定向项目的问题
- 修复了在禁用命名配置选项时应用于重定向皮肤的名称
版本 2.1.6 中的新功能
发布于
- NRE 修复 – 可能很少导致项目噗噗
关于斯金纳
斯金纳! 无与伦比的 No.1 性能皮肤插件。使用独特的皮肤盒对游戏中的任何项目进行皮肤处理,为您提供实时皮肤、自动皮肤和皮肤设置。
- Live Skinning – 在不移动项目的情况下就地蒙皮
- 自动导入 – 自动导入并使用所有游戏批准的皮肤
- 皮肤集 – 为任何项目创建各种不同的皮肤集
- 皮肤请求 – 允许玩家请求,允许管理员在游戏中接受新皮肤
- 自动皮肤 – 自动将所选皮肤应用于进入您库存的每件物品
Skinner 2.0 在插件效率方面提供了无与伦比的性能。我们的标准测试表明,运行时结果比最接近的执行插件快 60 倍,内存使用效率高 200 倍。
SkinMenu 命令:
- /Skin 或 /S – 通过选择要应用的皮肤来实时对库存中的任何物品进行皮肤
- /SkinCraft 或 /Sc – 创建多个皮肤集以用于其他功能,例如 skinauto 或 skinteam
- /Skinitem 或 /Si – 对你在游戏中查看的可部署物品进行皮肤处理。
- 参数 – 指定 1、2 或 3 以自动使用皮肤集。
自动命令:
- /skincon 或 /scon – 将您正在查看的容器中的所有项目设置为默认工艺集
- 参数 – 可选,显示 1、2 或 3 以自动使用皮肤集。
- /skininv 或 /sinv – 将库存中的所有物品设置为默认工艺集
- 参数 – 可选,显示 1、2 或 3 以自动使用皮肤集。
- /Skinauto 或 /Sauto – 根据您的皮肤集自动将所选皮肤应用于进入您库存的每个物品。
- 参数 – 可选,显示 1、2 或 3 以自动使用皮肤集。
- /Skinteam 或 /st – 将物品栏和团队中的所有物品设置为默认工艺集
- 参数 – 可选,显示 1、2 或 3 以自动使用皮肤集。
- 切换 – 使用 /skinteam 切换来选择加入或退出团队皮肤集
- /SkinBase – 允许您将基地中的所有可部署物蒙皮到您的默认 skincraft 皮肤。
- Args – 可选,指定项目名称以筛选正在蒙皮的项目,例如:/Skinbase sleepingbag 到仅皮肤睡袋。
- /SkinAll 命令 – 对基地中所有容器中的所有物品进行蒙皮。
- Args – 可选,通过短名称指定项目,例如:/SkinAll rifle.ak 仅蒙皮 ak47。
皮肤导入命令:
- /skinimport 或 /sip – 导入自定义工作室皮肤
- Args – WorkshopID 示例:/Skinimport 2397648701
- /colimport 或 /cip – 使用 /skinimport collectionID 导入自定义工作间集合
- Args – 集合 ID 示例:/Colimport 2921147807
- /Skinrequest 或 /Sr – 请求将皮肤添加到 skinner,请求的皮肤将显示在 /Skinrequests UI 中以供审批
- Args – WorkshopID 示例:/Skinrequest 2397648701
- /Skinrequests 或 /Srs – 打开带有一框皮肤审批的 skinner 菜单
- 按钮使用 – 选择一个选项并删除皮肤以执行该过程
尝试 – 接收具有该皮肤
的项目副本 批准 – 将菜单中的皮肤添加到导入的皮肤列表
拒绝 – 删除皮肤
- 按钮使用 – 选择一个选项并删除皮肤以执行该过程
注意:所有聊天命令都是通用的,这意味着它们可以通过控制台、rcon(用于导入命令)使用,并且可以通过配置进行自定义。
玩家权限:
- Skinner.default – 启用 /skin 命令
- Skinner.items – 启用 /skinitem 命令
- Skinner.craft – 启用 /skincraft 命令
- Skinner.skinauto – 启用 /skinauto 命令
- Skinner.skincon – 启用 /skincon 命令
- Skinner.skininv – 启用 /skininv 命令
- Skinner.skinbase – 用于 /skinbase 命令
- Skinner.skinteam – 允许使用 /skinteam 命令
- Skinner.skinall – 用于 /skinall 命令
- Skinner.skinrequest – 启用 /skinrequest
冷却时间权限:
冷却时间设置可以通过插件配置进行调整。应用冷却时间权限示例 skinner.default30 将对拥有该权限的人强制执行冷却时间。如果没有应用冷却时间权限,则不会强制执行冷却时间。如果为单个玩家分配了多个冷却时间,则将使用最快的冷却时间。
"Command based cooldowns ('permission' : 'command' seconds": { "Default30CD": { "skin": 30.0, "skinitem": 30.0, "skincraft": 30.0, "skincon": 30.0, "skininv": 30.0, "skinteam": 30.0, "skinbase": 60.0, "skinall": 60.0 }
管理员权限:
- Skinner.import – 启用 /Skinimport、/Colimport 和 /Skinrequests
- Skinner.bypassauth – 在使用 /Skinitem 时绕过构建身份验证要求
- Skinner.permskintry – 在使用 /Skinrequests 时启用 try 功能
- 警告:尝试皮肤会复制该物品。仅将此烫发给允许生成物品的管理员。
其他权限:
- Skinner.skinautotoggled – 当玩家禁用 skinauto 时应用
- Skinner.skinteamblock – 当玩家禁用团队皮肤时应用
Skinner 提供了多种导入皮肤的方法,包括通过配置和命令:
通过配置导入:
要通过配置导入皮肤,请按照下面的代码片段将 workshopID 插入到导入的皮肤列表中,完成后重新加载 Skinner,shortname 和 displayname 字段将自动填充。您可以使用此方法在任何阶段添加额外的皮肤。
"Imported Skins List": { "861142659": {}, "2617744110": {} },
可以选择将整个创意工坊皮肤集合添加到 conifg,每个物品皮肤都会在插件加载时自动导入到您导入的皮肤列表中。
"Import Skin collections (steam workshop ID)": [496517795,2921147807],
通过命令导入:
命令可用于通过 RCON、聊天命令和 f1 控制台编辑导入的皮肤和集合的配置选项。命令包括:
- /skinimport 工作室 ID
- /colimport 集合 ID
通过 Skin Requests 导入:
玩家可以使用 skinrequests 功能请求将皮肤添加到游戏中。通过使用命令 /skinrequest WorkshoID,皮肤会自动上传到皮肤请求框。具有 skinner.import 权限的管理员可以使用 /skinrequests 命令打开请求框。
然后可以“尝试”批准或拒绝请求框中的皮肤。
请求
的每个皮肤都可以使用配置中的 webhook 记录到 discord。
从其他插件导入:
Skinner 现在有一个适用于 Windows 的工具,可以从 skinbox、xskins 和 skincontroller 导入数据。只需在工具中选择包含导入皮肤的 json 数据文件,然后将新导入的皮肤列表复制到 skinner 配置中。
https://github.com/Whispers88/SkinDataConverter/releases/tag/Main
注意: “导入的皮肤 (skinid : ‘shortnamestring’, skinid2 : ‘shortnamestring2’”: {}“ 现在是多余的,并会自动转换为导入的皮肤列表。
{ "Skin Commands (skin items in you inventory": [ "skin", "s", "skinbox", "sb" ], "Skin Items Commands (skin items you have already placed": [ "skinitem", "si", "skindeployed", "sd" ], "Set default items to be skinned": [ "skincraft", "sc" ], "Automatically set all items in you inventory to your default skins": [ "skininv", "sinv" ], "Automatically set all items a container to your default skins": [ "skincon", "scon" ], "Automatically skin all deployables in your base": [ "skinbase", "skinbuilding" ], "Automatically skin all items in your base": [ "skinall", "sa" ], "Automatically skin all items that are moved into you inventory": [ "skinauto", "sauto" ], "Skin your teams inventories with your skin set": [ "skinteam", "st" ], "Request workshop skins via workshop ID": [ "skinrequest", "sr" ], "Approve workshop skin requests": [ "skinrequests", "srs" ], "Set your selected skin set": [ "skinset", "ss" ], "Import Custom Skins": [ "skinimport", "sip" ], "Import Workshop Collection Command": [ "colimport", "cip" ], "Skin Request Notification Discord Webhook": "", "Custom Page Change UI Positon anchor/offset 'min x, min y', 'max x', max y'": [ "0.5 0.0", "0.5 0.0", "198 60", "400 97" ], "Custom Searchbar UI Positon anchor/offset 'min x, min y', 'max x', max y'": [ "0.5 0.0", "0.5 0.0", "410 635", "572 660" ], "Custom Set Selection UI Positon anchor/offset 'min x, min y', 'max x', max y'": [ "0.5 0.0", "0.5 0.0", "250 610", "573 633" ], "Auto import approved skins": true, "Remove player data after inactivity (days)": 14, "Apply names of skins to skinned items": true, "Add Search Bar UI": true, "Use on itemcraft hook (skin items after crafting - not required when using skinauto)": false, "Override spraycan behaviour": false, "Use spraycan effect when holding spraycan and skinning deployables": true, "Blacklisted Skins (skinID)": [], "Blacklisted Itemms (itemID)": [], "Import Skin collections (steam workshop ID)": [], "Command based cooldowns ('permission' : 'command' seconds": { "Default30CD": { "skin": 30.0, "skinitem": 30.0, "skincraft": 30.0, "skincon": 30.0, "skininv": 30.0, "skinteam": 30.0, "skinbase": 60.0, "skinall": 60.0 } }, "Imported Skins List": {} }
//Get all Cached skins public Dictionary<int, List<ulong>> GetAllCachedSkins() { return _cachedSkins; } //Check if skin is a Redirect item public bool IsRedirectID(ulong uID) { return HasMask(uID); } //Convert Redirect ID to item ID public int RedirectIDtoItemID(ulong uID) { return (int)UnsetMask(uID); } //Get a list of skins for a particular item public List<ulong>? GetSkinsItemList(int itemid) { _cachedSkins.TryGetValue(itemid, out List<ulong>? cachedSkins); return cachedSkins; }