欢迎加入!

注册后,您将能够与我们社区的其他成员进行讨论、分享和私信。

无论您是想寻求帮助、分享经验,还是结识志同道合的朋友,我们都期待您的参与!一起探索更多精彩内容吧。

立即注册! 加入群聊
  • 所有的免费插件都是同步外网更新,所有都是最新版!
车辆部署锁

同步更新 车辆部署锁 同步更新

没有下载权限
购买会员

特征​

  • 允许玩家将密码锁和钥匙锁部署到各种车辆上,就像将锁部署到门和容器上一样(无需命令)。
  • 防止没有锁定授权的玩家访问座椅、燃料、存储、炮塔和其他车辆功能。与大多数向车辆添加容器和其他附件的插件兼容。
  • 锁授权可以根据插件配置与锁所有者的团队、朋友或部落成员共享,也可以通过兼容的共享插件共享。这允许其他玩家在不需要钥匙或代码的情况下进入车辆,并防止他们成为车辆炮塔的目标。
  • 部署锁会消耗玩家库存中的锁,或者根据蓝图价格消耗等效资源。
  • 为有权限的玩家提供免费锁。
  • 与出租车模块兼容。

笔记​

  • 使用时,许多车辆都会出现“锁定”和“解锁”提示。有时这很有用,但有时它只会占用您屏幕上的空间。不幸的是,该插件无法更改此行为,因为它是受客户端控制的。
  • 模块化汽车必须有一个驾驶舱模块(即驾驶员座椅)才能获得锁。如果有多个驾驶舱模块,锁将部署到最前面的驾驶舱模块。如果该驾驶舱被移除,锁将移动到另一个驾驶舱模块(如果存在),否则锁将被销毁。
  • 模块化汽车可能在部署锁的同时具有内置锁。不建议这样做,但如果发生这种情况,玩家需要同时满足内置锁和部署锁的规则才能进入汽车。
  • 锁不会阻止玩家进入运输舱,例如模块化汽车平板或废旧运输直升机的后部。
  • 拖船上的锁只能在距离船闸 3 米范围内进行交互,尽管“Lock”和“Unlock”提示在 3 米以上可见。
  • 拖船的门仍然需要锁来阻止打开和关闭它们。这可以根据要求进行更改。

命令​

此插件使用相同的语法提供聊天和控制台命令。在聊天中使用命令时,请为其添加正斜杠前缀: '/'。
注意:除了能够直接部署锁之外,如果您靠近车辆且没有建筑物被阻止,您还可以使用以下命令。如果您拥有其中一个免费权限,但您的库存中没有锁定,则这些权限非常有用。

  • vehiclecodelock(或 , ) -- 将密码锁部署到您正在瞄准的车辆上。vcodelockvlock
  • vehiclekeylock(或 ) -- 为您要瞄准的车辆部署钥匙锁。vkeylock

权限​

此插件使用权限系统。要分配权限,请使用 。要删除权限,请使用 。oxide.grant <user or group> <name or steam id> <permission>oxide.revoke <user or group> <name or steam id> <permission>

所有锁​

  • vehicledeployedlocks.masterkey-- 允许玩家打开此插件管理的任何锁,对于允许管理员访问锁定的车辆非常有用。

密码锁​

  • vehicledeployedlocks.codelock.free-- 允许玩家为车辆部署密码锁,而不消耗锁或库存中的资源。
以下权限允许玩家为车辆部署代码锁。

  • vehicledeployedlocks.codelock.allvehicles(多合一)
  • vehicledeployedlocks.codelock.attackhelicopter
  • vehicledeployedlocks.codelock.chinook
  • vehicledeployedlocks.codelock.duosub
  • vehicledeployedlocks.codelock.hotairballoon
  • vehicledeployedlocks.codelock.kayak
  • vehicledeployedlocks.codelock.locomotive
  • vehicledeployedlocks.codelock.magnetcrane
  • vehicledeployedlocks.codelock.minicopter
  • vehicledeployedlocks.codelock.modularcar
  • vehicledeployedlocks.codelock.motorbike.sidecar
  • vehicledeployedlocks.codelock.motorbike
  • vehicledeployedlocks.codelock.pedalbike
  • vehicledeployedlocks.codelock.pedaltrike
  • vehicledeployedlocks.codelock.rowboat
  • vehicledeployedlocks.codelock.rhib
  • vehicledeployedlocks.codelock.ridablehorse
  • vehicledeployedlocks.codelock.scraptransport
  • vehicledeployedlocks.codelock.sedan
  • vehicledeployedlocks.codelock.sedanrail
  • vehicledeployedlocks.codelock.snowmobile
  • vehicledeployedlocks.codelock.solosub
  • vehicledeployedlocks.codelock.tomaha
  • vehicledeployedlocks.codelock.tugboat
  • vehicledeployedlocks.codelock.workcart
  • vehicledeployedlocks.codelock.workcartaboveground
  • vehicledeployedlocks.codelock.workcartcovered

钥匙锁​

  • vehicledeployedlocks.keylock.free-- 允许玩家为车辆部署钥匙锁,而不消耗锁或库存中的资源。
以下权限允许玩家为车辆部署钥匙锁。

  • vehicledeployedlocks.keylock.allvehicles(多合一)
  • vehicledeployedlocks.keylock.attackhelicopter
  • vehicledeployedlocks.keylock.chinook
  • vehicledeployedlocks.keylock.duosub
  • vehicledeployedlocks.keylock.hotairballoon
  • vehicledeployedlocks.keylock.kayak
  • vehicledeployedlocks.keylock.locomotive
  • vehicledeployedlocks.keylock.magnetcrane
  • vehicledeployedlocks.keylock.minicopter
  • vehicledeployedlocks.keylock.modularcar
  • vehicledeployedlocks.keylock.motorbike.sidecar
  • vehicledeployedlocks.keylock.motorbike
  • vehicledeployedlocks.keylock.pedalbike
  • vehicledeployedlocks.keylock.pedaltrike
  • vehicledeployedlocks.keylock.rhib
  • vehicledeployedlocks.keylock.ridablehorse
  • vehicledeployedlocks.keylock.rowboat
  • vehicledeployedlocks.keylock.scraptransport
  • vehicledeployedlocks.keylock.sedan
  • vehicledeployedlocks.keylock.sedanrail
  • vehicledeployedlocks.keylock.snowmobile
  • vehicledeployedlocks.keylock.solosub
  • vehicledeployedlocks.keylock.tomaha
  • vehicledeployedlocks.keylock.tugboat
  • vehicledeployedlocks.keylock.workcart
  • vehicledeployedlocks.keylock.workcartaboveground
  • vehicledeployedlocks.keylock.workcartcovered

配置​

设置和选项可以在目录下的文件中进行配置。建议使用编辑器和验证器,以避免格式问题和语法错误。VehicleDeployedLocksconfig
{
"Allow NPCs to bypass locks": false,
"Allow deploying locks onto vehicles owned by other players": false,
"Allow deploying locks onto unowned vehicles": true,
"Require cupboard auth to deploy locks onto unowned vehicles": false,
"Auto claim unowned vehicles when deploying locks": false,
"Auto replace vehicle ownership when deploying locks": false,
"Allow pushing vehicles while locked out": true,
"Cooldown to auto craft locks (seconds)": 10.0,
"Modular car settings": {
"Allow editing while locked out": true
},
"Lock sharing settings": {
"Clan": false,
"Clan or ally": false,
"Friends": false,
"Team": false
},
"Auto unlock idle vehicles": {
"Enabled": false,
"Unlock after idle time (seconds)": 3600.0,
"Check interval seconds": 300.0,
"Exempt owned vehicles": true,
"Exempt vehicles near cupboards": true
}
}
  • Allow NPCs to bypass locks (true或 ) -- 是否允许 NPC 绕过车辆锁。false
  • Allow deploying locks onto vehicles owned by other players (true或 ) -- 是否允许玩家在其他人拥有的车辆(即,其 Steam ID 为不同玩家的车辆)上部署锁。此类车辆很可能由插件生成,或者允许玩家领取该车辆的插件。默认情况下,这是为了防止自有车辆被其他人部署锁。注意:如果所有者将代码锁解锁,其他玩家仍然可以使用自定义代码将其锁定,以锁定所有者。falseOwnerIDfalse
  • Allow deploying locks onto unowned vehicles (true或 ) -- 是否允许玩家在没有所有者的车辆上部署锁(即 is),这通常描述在世界中自然生成的车辆,尽管某些插件也可能生成没有所有者的车辆。注意:在 NPC 供应商处生成的载具默认没有所有者,除非由诸如载具供应商选项之类的插件设置。您还可以使用 Claim Vehicle 插件,允许玩家通过可选的冷却时间来领取无主车辆。falseOwnerID0
  • Require cupboard auth to deploy locks onto unowned vehicles (true或 ) -- 是否要求玩家在 TC 半径内才能为无主车辆设置锁。false
  • Auto claim unowned vehicles when deploying locks (true或 -- 如果车辆尚未拥有,是否自动将车辆所有权分配给部署锁的玩家。false
  • Auto replace vehicle ownership when deploying locks (true或 ) -- 如果车辆已经拥有,是否自动将车辆所有权分配给部署锁的玩家。false
  • Allow pushing vehicles while locked out (true或 ) -- 是否允许玩家在未获得车辆锁授权的情况下推动车辆。默认情况下,这与原版行为一致。falsetrue
  • Cooldown to auto craft locks (seconds)-- 如果玩家的库存中没有锁,则为玩家制作锁的冷却时间。由于玩家可以捡起载具部署的锁(根据设计),因此此冷却时间可以防止玩家以比通常制作锁更快的速度有效地制作锁。根据服务器上锁的制作速度进行配置。
  • Modular car settings
    • AllowEditingWhileLockedOut-- 是否允许玩家在未获得汽车锁的授权时编辑电梯上的汽车。默认情况下,这与允许玩家编辑汽车的原版汽车锁一致(这可能允许移除锁)。将此项设置为将使未经授权的玩家无法编辑车辆。truefalse
  • Lock sharing settings(each or ) -- 是否允许玩家绕过其部落成员、盟友部落成员、朋友或队友设置的锁。truefalse
  • Auto unlock idle vehicles-- 设置以自动检测怠速车辆并解锁它们。
    • Enabled (true或 ) -- While ,将定期检查车辆是否处于空闲状态并可能解锁。falsetrue
    • Unlock after idle time (seconds)-- 确定车辆使用后多长时间将被视为怠速。支持除 Sedan 之外的所有车辆,它不跟踪原版中的活动信息。
    • Check interval seconds-- 多久检查一次车辆是否怠速。
    • Exempt owned vehicles-- 虽然 ,拥有的车辆免于怠速检查。true
    • Exempt vehicles near cupboards-- 虽然 ,TC 附近的车辆免于怠速检查。true

地方化​

默认消息位于目录下的文件中。要添加对其他语言的支持,请创建一个新的语言文件夹(例如 对于德语),请将默认语言文件复制到新文件夹,然后自定义消息。VehicleDeployedLockslang/ende
{
"Generic.Error.NoPermission": "You don't have permission to do that.",
"Generic.Error.BuildingBlocked": "Error: Cannot do that while building blocked.",
"Generic.Error.Cooldown": "Please wait <color=red>{0}s</color> and try again.",
"Generic.Error.VehicleLocked": "That vehicle is locked.",
"Deploy.Error.NoVehicleFound": "Error: No vehicle found.",
"Deploy.Error.VehicleDead": "Error: That vehicle is dead.",
"Deploy.Error.Other": "Error: You cannot do that.",
"Deploy.Error.DifferentOwner": "Error: Someone else owns that vehicle.",
"Deploy.Error.NoOwner": "Error: You do not own that vehicle.",
"Deploy.Error.NoOwner.NoBuildingPrivilege": "Error: Locking unowned vehicles requires building privilege.",
"Deploy.Error.HasLock": "Error: That vehicle already has a lock.",
"Deploy.Error.InsufficientResources": "Error: Not enough resources to craft a {0}.",
"Deploy.Error.Mounted": "Error: That vehicle is currently occupied.",
"Deploy.Error.ModularCar.NoCockpit": "Error: That car needs a cockpit module to receive a lock.",
"Deploy.Error.Distance": "Error: Too far away."
}

开发人员 API​

API_DeployCodeLock / API_DeployKeyLock​

插件可以调用这些 API 将锁部署到支持的车辆上。该参数是可选的,但建议提供它,因为它允许与自动锁定插件的潜在兼容性,并允许玩家在没有钥匙的情况下访问钥匙锁。BasePlayer

注意:这些将跳过一些检查,例如权限、玩家是否被建筑阻塞以及车辆是否已安装。这允许您的插件使用自由裁量权来确定是否应该允许玩家将特定锁部署到特定车辆上。

CodeLock API_DeployCodeLock(BaseEntity vehicle, BasePlayer player, bool isFree = true)
KeyLock API_DeployKeyLock(BaseEntity vehicle, BasePlayer player, bool isFree = true)
返回值将是新部署的锁,或者如果由于以下任何原因未部署锁。null

  • 车辆不受支持
  • 该车辆是一辆模块化汽车,没有驾驶舱模块
  • 车辆已经有密码锁或钥匙锁
  • 车辆被毁坏或“死亡”
  • 另一个插件用 or 钩子阻止了它CanDeployVehicleCodeLockCanDeployVehicleKeyLock
  • 参数是 ,并且玩家没有足够的物品或资源来部署锁(这也考虑了免费锁的权限),或者最近购买了锁并且处于冷却状态isFreefalse

API_CanPlayerDeployCodeLock / API_CanPlayerDeployKeyLock​

插件可以调用这些 API 来查看玩家是否能够为指定的车辆部署锁,遵循此插件的配置并执行与玩家尝试通过命令部署锁相同的检查,但权限、冷却和挂载检查除外。例如,这些方法可以由添加 UI 按钮来部署锁的插件使用,因为它不必重新实现该插件已经可以执行的各种检查。

bool API_CanPlayerDeployCodeLock(BasePlayer player, BaseEntity vehicle)
bool API_CanPlayerDeployKeyLock(BasePlayer player, BaseEntity vehicle)

API_CanAccessVehicle​

插件可以调用此 API 来确定玩家是否对可能上锁的车辆进行了授权。

bool API_CanAccessVehicle(BasePlayer player, BaseEntity vehicle, bool provideFeedback = true)
如果满足以下任何条件,则返回 ,否则返回 。truefalse

  • 车辆没有锁
  • 锁已解锁
  • 玩家对锁有直接授权
  • 锁所有者正在与玩家共享访问权限
  • 钩子回来了CanUseLockedEntitytrue
如果为 true,则锁将播放 access granted or denied 音效,如果玩家没有访问权限,将向玩家发送聊天消息。provideFeedback

API_RegisterCustomVehicleType(实验性)​

插件可以调用此 API 来注册自定义车辆类型。

void API_RegisterCustomVehicleType(string vehicleType, Vector3 lockPosition, Quaternion lockRotation, string parentBone, Func<BaseEntity, BaseEntity> determineLockParent)
运作方式:

  • 您的插件应调用此 API 一次,以将自身注册到 Vehicle Deployed Locks
    • 可以多次调用,但只需要调用一次
  • Vehicle Deployed Locks 将自动注册以下权限
    • vehicledeployedlocks.codelock.<vehicleType>
    • vehicledeployedlocks.keylock.<vehicleType>
  • 该函数将在两个可能的时间被调用,如下所示determineLockParent
    • 当玩家尝试将锁部署到无法识别的实体上时
      • 如果该函数返回一个实体(而不是 ),则向 Vehicle Deployed Locks 表明该实体可以接收锁null
    • 当玩家尝试挂载或使用具有无法识别的父对象时
      • 如果该函数返回一个实体(而不是 ),则向 Vehicle Deployed Locks 表明它可以找到该实体上的锁,以便进行授权null
  • 和 应相对于lockPositionlockRotationdetermineLockParent
  • 该字符串可以是一个字符串,引用锁应相对于该父实体定位的骨骼parentBone
    • 例如,此插件使用特定骨骼将锁附加到 Horses 和 Magnet Cranes
    • 如果不需要指定骨骼,则设置为 (最常见)null
例:

[PluginReference]
Plugin VehicleDeployedLocks;

void OnServerInitialized()
{
RegisterWithVehicleDeployedLocks();
}

void OnPluginLoaded(Plugin plugin)
{
if (plugin == VehicleDeployedLocks)
RegisterWithVehicleDeployedLocks();
}

void RegisterWithVehicleDeployedLocks()
{
if (VehicleDeployedLocks == null)
return;

Func<BaseEntity, BaseEntity> determineLockParent = (entity) =>
{
var computerStation = entity as ComputerStation;
if (computerStation == null)
return null;

// Only return non-null when this is a custom vehicle.
return computerStation.GetParentEntity() as Drone;
};

VehicleDeployedLocks.Call("API_RegisterCustomVehicleType", "megadrone", LockPosition, LockRotation, null, determineLockParent);
}

钩​

CanDeployVehicleCodeLock / CanDeployVehicleKeyLock​

  • 当玩家或插件尝试将锁部署到车辆上时调用。
  • 返回将阻止部署锁。玩家的任何物品都不会被消耗掉。false
  • 返回将导致默认行为。null
bool? CanDeployVehicleCodeLock(BaseEntity vehicle, BasePlayer player)
bool? CanDeployVehicleKeyLock(BaseEntity vehicle, BasePlayer player)
您可以将类型替换为更具体的类型,以便仅对特定车辆类型运行钩子方法。BaseEntity

OnVehicleLockDeployed​

当玩家或插件将锁部署到车辆上时调用。

void OnVehicleLockDeployed(BaseEntity vehicle, BaseLock baseLock)
您可以将 and 类型替换为更具体的类型,以便仅对特定车辆/锁类型运行挂钩方法。BaseEntityBaseLock

OnItemDeployed​

这是一个 Oxide 钩子,通常在部署 lock 或其他 deployable 时调用。为了实现与其他插件的兼容性,每当玩家的车辆上部署代码锁时,此插件都会调用此钩子。

void OnItemDeployed(Deployer deployer, BaseEntity entity, BaseLock baseLock)
注意:如果通过 API 部署锁而不指定玩家,则不会调用此函数。为此,请使用 .OnVehicleLockDeployed

CanUseLockedEntity​

这是一个 Oxide 钩子,通常在玩家尝试使用上锁的实体(如门或盒子)时调用。为了实现与其他插件的兼容性,尤其是共享插件,每当玩家尝试访问上锁车辆的任何功能(包括座椅、燃料或存储空间)时,此插件都会调用此钩子。如果插件配置了 ,则在尝试编辑电梯上锁的轿厢时也会调用此函数。AllowEditingWhileLockedOut: false

  • 如果锁当前已解锁,则不调用。这与 Oxide 钩略有不同,后者适用于未上锁的门/盒子/橱柜。
  • 返回将允许玩家使用车辆,无论他们是否被授权使用锁。除非你知道你在做什么,否则你应该返回以避免潜在的钩子冲突。truenull
  • 返回将阻止玩家使用车辆,无论他们是否被授权锁。false
  • 返回将导致默认行为。null
object CanUseLockedEntity(BasePlayer player, BaseLock baseLock)
{
// Example: Only let the lock owner access the car
if (baseLock == null) return null;
var seatingModule = baseLock.GetParentEntity() as VehicleModuleSeating;
if (seatingModule == null) return null;
var car = seatingModule.Vehicle as ModularCar;
if (car == null || car.OwnerID == 0 || car.OwnerID == player.userID) return null;
return false;
}
作者
小橘子
下载
1
查看
14
首次发布
最后更新

评分

0.00 星 0 星

来自小橘子的更多资源

后退
顶部