#最新
真正的PVE

Rust-免费插件 2023-05-05 0 1,656
真正的PVE
资源编号:2292
最近更新:2023-12-16
¥ 0B票 升级VIP
增值服务:
下载不了?请联系网站客服提交链接错误!
详情介绍

真正的PVE

转载:uMod – nivex 的真 PVE

True PVE是一个损害控制插件,最初旨在为希望真正成为PVE的服务器改进默认的服务器PVE模式(server.pve = true)。该插件也可用于微调 PVP 行为,从而实现一系列损害控制配置以自定义 PVP、PVE 以及介于两者之间的任何内容。

注意:TruePVE旨在与(PVP模式开启)一起使用!使用 运行 TruePVE 可能会产生意想不到的效果。server.pve falseserver.pve true

在下载此插件的任何新版本之前,请阅读更新说明以了解更改的内容!重要的更新信息通常包含在这些注释中,并且会让您知道是否需要执行任何操作,以及您可以在新版本中看到哪些更改。

命令

此插件使用相同的语法提供聊天和控制台命令。在聊天中使用命令时,请为其添加正斜杠前缀:“/”。

控制台命令

  • tpve.def– 擦除并创建默认配置/数据
  • tpve.sched [enable|disable]– 启用/禁用计划
  • tpve.trace– 切换跟踪;5M后自动禁用(硬编码),以防止意外日志溢出。有关跟踪的更多详细信息,请参阅下文。
  • tpve.usage– 显示命令使用信息

聊天命令

  • /tpve_prod– 打印出正在查看的实体的类型和预制件名称(对于实体组)
  • /tpve map [name] <target>– 创建/更新/删除映射。[name] 是映射的名称或要映射的区域 ID。 是一个可选参数,用于定义要映射到的规则集名称或“排除”以跳过处理。留空将删除 [name] 的映射<target><target>

配置

可以在目录下的文件中配置设置和选项。建议使用编辑器和验证器,以避免格式问题和语法错误。TruePVEconfig
  • 配置版本 – 不更改
  • 默认规则集 – 要使用的默认规则集的名称
  • 配置选项 – 全局配置选项
    • 处理损坏 – 启用 TruePVE 损坏处理
    • 使用区域 – 允许使用特定于区域的损坏配置(需要区域管理器)
  • 映射 – 将区域名称(LiteZones)或名称/ID(区域管理器)映射到规则集名称,或仅将规则集名称映射到自身。可用于将多个区域映射到同一规则集。也可用于通过映射到“排除”来创建排除区域(具有默认 rust 行为的区域)。例:
"Mappings": {
   "default": "default",
   "66499587": "killall",
   "62819081": "exclude"
},
  • 计划 – 计划规则集更改
    • 已启用 – 启用计划使用
    • 使用实时 – 启用使用实时(服务器时间)
    • 广播 – 允许在计划的规则集更改时发送广播消息(但是如果没有为计划条目设置消息,则不会广播消息)
    • 条目 – 计划条目 – 详见下文规则集 – 定义的损坏配置 – 详见下文 实体组 – 规则中使用的已定义实体分组 – 详见下文

调试

跟踪会打开基本的调试日志记录,以帮助调试和识别规则集、规则和实体组配置的问题。捕获损坏日志记录后,应手动关闭跟踪但将在 5 分钟后自动禁用(硬编码) – 这是为了防止日志在意外打开时溢出。跟踪结果输出到 ./oxide/logs/TruePVE/truepve_ruletrace-[date].txt

跟踪文本标识:

  • 启动器类型和预制件名称
  • 目标类型和预制件名称
  • 排除组是否命中
  • 命中哪些特殊逻辑块
  • 使用哪个规则集
  • 选择哪些实体组
  • 评估哪些规则,以及最终结果(真:允许损坏,假:块损坏,空:Rust 默认损坏处理)

示例输出:

======================
==  STARTING TRACE  ==
==  15:09:18.38210  ==
======================
From: BasePlayer, player
To: Workbench, workbench3.deployed
   No shared locations (empty location) - no exclusions
No exclusion found - lookup RuleSet
Using RuleSet "default"
No match in pre-checks; evaluating RuleSet rules...
  Initator EntityGroup matches: players
  Target EntityGroup matches: none
   Evaluating Rules...
    Checking direct initiator->target rules...
    No direct match rules found; continuing...
     Evaluating "players->any"...
      No match found
    No matching initiator->any rules found; continuing...
    No matching any->target rules found; returning default value: False
======================
==  STARTING TRACE  ==
==  15:09:18.69712  ==
======================
From: BasePlayer, player
To: VendingMachine, vendingmachine.deployed
   No shared locations (empty location) - no exclusions
No exclusion found - lookup RuleSet
Using RuleSet "default"
Door/StorageContainer detected with immortal flag; lock check results: null; continue checks
Initiator is player with authorization over non-player target; allow and return

实体组

毫不奇怪,实体组是定义一组实体的容器。

名称在规则中用作引用,成员排除项定义组中的实体。实体组在所有规则集之间共享,因此您无需为不同的规则集创建同一组的多个版本。

的成员和排除项可以同时包含类型和预制件名称(通过 /tpve_prod 命令提供) – 这些字段区分大小写,通常 Type 为驼峰大小写,而预制件为小写。此外,通常,一个 Type 可以包含许多预制件,但预制件始终是相同的类型,因此您可以将 Type 定义为成员,并通过在排除项中定义不需要的单个预制件来排除它们。

// Example entity group
{
  "name": "players",
  "members": "BasePlayer",
  "exclusions": ""
}

规则集

毫不奇怪,规则集是一组规则。

规则集的名称在计划规则集更改或特定于区域的配置时用作参考。

defaultAllowDamage 选项定义规则集的标准行为是什么 – 即,它是允许还是阻止整体损害。对于 PVE 规则集,这应始终设置为 false

flags 选项允许您定义一些内置规则(需要在后台进行更专业编码的规则)。仅启用定义的标志,而自然禁用任何未定义的标志。可用标志的列表和说明如下。

规则部分是准语义准确的规则列表(没有更多的链接!它们定义一个规则集及其对另一个规则集的行为。格式为:[规则集 1] [行为] [规则集 2],但是目前规则集是从规则的末端拉出来的,只有少数行为对规则有任何影响,所以你几乎可以在规则集 1 和 2 之间说任何话,它将被假定为“允许损害”。例外情况是,如果行为中出现“不能”或“不能”一词,则该规则将被否定并假定为“防止损害”。

此外,还有一些通用的规则集名称可用于定义更广泛的应用程序 – 术语“任何”、“无”、“一切”、“全部”、“任何”和“”可用于规则集 1 或规则集 2。但同样,语义被考虑在内,因此“无”或“无”将再次有效地颠倒规则含义。因此,使用双重否定,如“玩家不能伤害任何东西”将转化为“玩家可以伤害一切”,并可能阻止你加入任何游艇俱乐部。

规则优先级

在编写规则时必须考虑一定的优先级。通常,更具体的规则会覆盖广泛的规则(带有“任何”或“无”等的规则)。如果你有两个规则:“任何东西都可以伤害玩家”和“路障不能伤害玩家”,那么路障规则将始终覆盖“任何东西”规则。

计划条目

计划条目定义计划的全局规则集更改,并已汇总到一行中,其中三 (3) 个部分由空格分隔:

  1. 时间 – 计划条目生效的时间。对于游戏内时间,格式为“hh:mm”,其中 hh 是小时(24 小时格式),mm 是分钟。但是,实时计划条目应输入为“d.hh:mm”,其中 d 是星期几,为 0-6(星期日至星期六)。星期几现在也接受(星号)作为通配符来表示每日,因此实时输入“*.08:00”将在每天 0800(上午 8:00)触发。请注意,对于实时,如果您不提供星期几,则假定为 0(星期日),并且您的计划条目只会在星期日触发!*
  2. 规则集 – 要在指定时间全局设置的规则集名称
  3. 消息 – 规则集名称后的所有文本都用作广播消息,以便在规则集更改时发送给所有玩家。此消息也会发送给在计划条目期间登录的任何玩家。令人震惊的是,如果消息为空,则不会广播任何消息。
// Example schedule entries using realtime
"*.12:00 default PVE enabled!" // at 12:00 daily, set RuleSet "default" and broadcast "PVE enabled!"
"*.18:00 pvp PVP time!" // at 18:00 (6pm) daily, set RuleSet "pvp" and broadcast "PVP time!"

规则集标志

注意 – 这些标志中的大多数都是从以前的配置选项中继承而来的,但有些标志的功能略有改变。

覆盖规则: – 所有标志在使用时都会忽略规则的评估,但陷阱忽略玩家、炮塔忽略玩家、炮塔忽略科学家和 SamSitesIgnore玩家除外,它们只允许实体组中的例外

忽略所有规则: – NoHeliDamage,NoHeliDamagePlayer,NoHeliDamageQuarry需要处理Heli伤害。默认情况下,不使用直升机标志会造成损坏。无论哪种方式,都不会评估规则。

  • 衰减损坏 – TruePVE 无法处理衰减损坏
  • 抢劫 – TruePVE不处理抢劫。使用防止抢劫插件
  • 动物伤害 – 不评估规则 – 允许此对象的所有伤害
  • 高级圣诞灯 – 不评估规则 – 您必须能够构建以损坏此对象
  • GrowableEntity – 不评估规则 – 您必须能够构建或成为所有者才能损坏此对象
  • 授权损害是一个非常小众的标志,被严重误解。它允许玩家破坏他们拥有的实体,或拥有橱柜授权。当与橱柜所有权配对时,当没有工具橱柜保护实体时,它将允许损坏。授权损害要求所有权通过在玩家拥有实体、成为盟友或攻击不受工具柜保护的实体时允许伤害来帮助完善它。
  • “授权损坏”会覆盖规则,除非这些规则适用于坐骑或坐骑。授权损害要求所有权会覆盖规则,除非玩家是盟友并且规则适用于坐骑。在这种情况下,如果损坏未被阻止,规则将继续评估。如果玩家不是盟友,那么除了坐骑之外,规则还可以覆盖 samsites。
  • 自杀已阻止 – 阻止自杀 – 不使用规则
  • 自我伤害 – 允许玩家(通常)伤害自己,例如使用C4或豆罐等。
  • 橱柜所有权 – 启用授权损坏后,橱柜范围之外的实体将被视为无主实体,橱柜范围内的实体将需要授权。
  • 树枝伤害 – 允许玩家破坏任何树枝积木,无论授权如何(以鼓励健全的建造实践)。这目前要求在重写之前也设置授权损坏标志。
  • NoHeliDamage – 禁用直升机伤害(采石场使用NoHeliDamageQuarry,玩家使用NoHeliDamagePlayer
  • NoHeliDamagePlayer – 防止直升机伤害玩家
  • 无直升机损坏采石场 – 防止直升机损坏采石场
  • 直升机损坏已锁定 – 允许直升机损坏上锁的盒子/门(需要锁定的盒子不朽或锁定的门不朽)
  • 人类NPC伤害 – 启用人类NPC伤害
  • 锁定的盒子不朽 – 锁定的盒子是不朽的(_HeliDamageLocked _overrides这个)
  • 锁门不朽 – 锁门是不朽的(_HeliDamageLocked _overrides这个)
  • 管理员伤害睡眠者 – 管理员可以伤害睡眠者
  • 受保护的睡眠者 – 睡眠者受到保护,免受NPC伤害
  • 陷阱忽略玩家 – 玩家不触发陷阱(不适用于熊/快照陷阱)
  • 炮塔忽略玩家 – 玩家不触发炮塔(不适用于火焰炮塔)
  • 炮塔忽略科学家 – 科学家和所有其他 NPC 不会触发炮塔
  • SamSitesIgnorePlayer – Sam 网站忽略所有玩家。要排除静态 Samsites(例如启动站点中的静态 samsites),请排除 SamSites 实体组中的sam_static(请勿将 SamSite 作为成员或排除项)。用于玩家萨姆特斯。sam_site_turret_deployed
  • MiniCopterIsImmuneToCollision – 已删除 – 使用规则作为实体组中的成员mini cannot hurt miniMiniCopter
  • 迷你不能伤害玩家 – 已删除 – 使用规则作为实体组中的成员mini cannot hurt playersMiniCopter
  • 汽车免疫 – 已删除 – 请参阅默认配置作为此更大的规则和实体组。
  • 无炮塔伤害玩家 – 移除 – 使用炮塔忽略玩家标志
  • 无炮塔伤害科学家 – 移除 – 使用炮塔忽略科学家标志

对于开发人员

钩子可用于外部插件添加、更新和删除映射:

// add or update a mapping - returns true if successful
bool AddOrUpdateMapping(string key, string ruleset);

// remove a mapping - returns true if successful
bool RemoveMapping(string key);
//Get the current ruleset name
TruePVE.Call<string>("CurrentRuleSetName");

外部接口调用

我们在处理 OnEntityTakeDamage() 时调用以下钩子;

可以实体接受伤害:返回真/将允许/不允许伤害并跳过正常的PVE伤害评估。

object CanEntityTakeDamage(BaseCombatEntity entity, HitInfo hitinfo)

我们在处理 CanBeTargeted() 时调用以下钩子;

CanEntityBeTargeted:返回true/false将允许/禁止定位并跳过正常的TruePVE目标评估。

object CanEntityBeTargeted(BasePlayer player, BaseEntity turret)

我们在处理 OnTrapTrigger() 时调用以下钩子;

CanEntityTrapTrigger:返回true/false将允许/禁止触发事件并跳过正常的TruePVE触发器评估。

object CanEntityTrapTrigger(BaseTrap trap, BasePlayer player)

区域集成

从 ZoneManager 2.4.61 开始,您不再需要修改 ZoneManager!ZoneManager 3.0.0 不会为我们返回 zoneId。任何高于或低于的版本都应该有效。

资源下载此资源仅限注册用户下载,请先
如有问题详情联系QQ:1157774811

版权声明:本站所有资源均来自用户上传以及互联网搜集,仅供学习和研究使用,不提供任何技术服务。我们尊重和保护知识产权,如有作品侵犯了您的权益,请通过邮箱1157774811@qq.com与我们联系。
免责声明:本站不对所提供资源的准确性、安全性和完整性作出任何保证。下载的资源仅供个人学习和参考,请您在下载后24小时内删除,任何因私自用于商业或非法目的而引起的法律责任由用户自行承担。

Biu腐蚀网 – 一站式游戏服务器开服与插件资源平台 Rust-免费插件 真正的PVE https://www.biubr.com/2292.html

相关文章

猜你喜欢