True PVE - 真正的PVE

免费 True PVE - 真正的PVE 2.3.3

没有下载权限

欢迎客人!

注册账号后就可以下载免费插件了.也可以享受折扣了

文件链接损坏请在文件下方留言,不会使用,我们将会及时更新来自备份服务器的新链接。如有其它问题请 提交工单 和我们联系!【加入QQ群:188710777

现在注册 立即登录
  • 网站问题工单提交(无底部颜色)
真正的PVE是一个损害控制插件,最初旨在为希望真正成为PVE的服务器改进默认服务器pve模式 (server.PVE = true)。此插件还可用于微调PVP行为,从而实现一系列损害控制配置,以自定义PVP,PVE以及介于两者之间的任何内容。

注:TruePVE旨在与server.pve false(PVP模式开启)!运行TruePVEserver.pve true可能会产生意想不到的影响。

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

命令​

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

控制台命令​

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

聊天命令​

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

配置​

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

调试​

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

跟踪文本标识:

  • 启动器类型和预制名称
  • 目标类型和预制名称
  • 是否命中排除组
  • 哪些特殊逻辑块被击中
  • 使用哪个规则集
  • 选择了哪些EntityGroups
  • 评估哪些规则以及最终结果 (true: 允许损坏,false: 阻止损坏,null: 生锈默认损坏处理)
示例输出:

======================
== 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命令提供)-这些字段区分大小写,并且通常类型是骆驼大小写,而预制是小写。此外,通常,一个类型可以包含许多预设,但预设始终是相同的类型,因此您可以将类型定义为成员,并通过在排除中定义它们来排除不需要的单个预设。

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

规则集​

规则集也是一组规则,这并不奇怪。

姓名当计划规则集更改或特定于区域的配置时,将用作参考。

违约损失选项定义规则集的标准行为是什么-也就是说,它是允许还是阻止整体损坏。这应该总是设置false对于PVE规则集。

旗帜选项允许您定义一些内置规则 (需要在幕后进行更专业编码的规则)。只有定义的标志被启用,而任何未定义的标志自然被禁用。下面是可用标志的列表和说明。

规则部分是准语义准确规则的列表 (没有更多链接!)。它们定义一个规则集及其对另一个规则集的行为。格式为:[RuleSet 1] [behavior] [RuleSet 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!"

规则集标志​

备注-这些标志中的大多数都是从以前的配置选项中延续下来的,但是有些标志稍微改变了功能。

覆盖规则:-如果使用,所有标志都会忽略规则的评估,但仅允许实体组中的例外的TrapsIgnorePlayers,TurretsIgnoreScientist,StaticSamSitesIgnorePlayers和PlayerSamSitesIgnorePlayers

忽略所有规则:-需要NoHeliDamage,NoHeliDamagePlayer,NoHeliDamageQuarry来处理Heli伤害。默认情况下不使用heli标志允许损坏。无论哪种方式,规则永远不会被评估。

  • 衰变伤害-TruePVE不能处理衰变伤害
  • 抢劫-TruePVE不处理抢劫。使用防止掠夺插件
  • 动物伤害-不评估规则-允许对该物体造成所有伤害
  • AdvancedChristmasLights-不评估规则-您必须能够构建以损坏此对象
  • GrowableEntity-不评估规则-您必须能够构建或成为所有者才能损坏此对象
  • 授权损坏是一个非常利基的标志,被严重误解。当未与CupboardOwnership、authorizeddamerequiresownership或AuthorizedDamageCheckPrivilege配对时,将评估以下内容:
  • 如果实体是mount或samsite,则将检查规则以查看是否有任何规则可以阻止损坏。如果不是,那么当实体不属于任何玩家时,或者如果它属于玩家或他们的盟友,则允许伤害。否则,将最后评估规则。
  • 授权损坏与配对CupboardOwnership当没有工具柜保护实体时,或者当有一个柜子并且您被授权时,它将允许损坏。否则,损坏将被阻止 (意味着不评估规则。)
  • 授权损坏与配对授权损害所有权它将首先评估车辆的规则,并在所述规则不允许的情况下阻止损坏。否则,当实体不属于玩家 (minicopters除外),或者当玩家拥有实体,或者玩家是所有者的盟友时,允许损坏。如果在这一点上没有任何东西允许损坏,那么它就会被阻止 (意味着规则不会被评估)。
  • 授权损坏与配对授权damagecheckprivilege它将通过橱柜授权保护衰变实体,玩家直升机和拖船。如果它是不同的实体,或者如果未授权损坏,则将检查授权损坏,授权损坏的所有权和/或cupboardownship。如果到这一点仍然没有授权损坏,那么最后将评估规则。
  • 授权农场损坏是一个独立的/独立的标志,所有者和盟友可以伤害孵化的鸡
  • HopperCannotTargetEnemyLoot将防止敌人的跳跃者抢劫掉落的物品和尸体
  • 动物信号员-防止动物瞄准睡觉的玩家
  • 自杀性阻断-块自杀-不使用规则
  • FriendlyFire-使队友,氏族伴侣和朋友之间的友好火
  • 自伤-允许玩家 (通常) 伤害自己,例如使用C4或BeanCans等。
  • CupboardOwnership-当启用授权损坏将橱柜范围外的实体视为无主,橱柜范围内的实体将需要授权。
  • 扭曲伤害-允许玩家破坏任何树枝积木不管授权 (鼓励声音建筑实践)
  • TwigDamageRequiresOwnership-块损坏树枝,除了从所有者,所有者的盟友,或者当你有TC auth
  • WoodenDamage-与TwigDamage标志相同,但用于木材
  • WoodenDamageRequiresOwnership-与TwigDamageRequiresOwnership标志相同,但对于木材 (它需要WoodenDamage标志)
  • NoHeliDamage-禁用以下列出的现有heli标志未涵盖的所有其他实体的heli损坏
  • NoHeliDamagePlayer-防止heli伤害玩家
  • NoHeliDamageQuarry-防止heli损坏采石场
  • NoHeliDamageSleepers-防止heli损坏卧铺 (这不检查玩家是否在线!)
  • 可转换的马匹-防止伤害骑马
  • NoHeliDamageBuildings-防止损坏建筑物,车辆和可部署在TC范围内时
  • 直升机锁定-允许heli损坏锁定的盒子/门 (需要LockedBoxesImmortal或LockedDoorsImmortal)
  • NoPlayerDamageToCar-防止玩家损坏模块化汽车
  • NoPlayerDamageToMini-防止玩家损坏Minicopter
  • NoPlayerDamageToScrap-防止玩家损坏ScrapTransportHelicopter
  • NoMLRSDamage-防止使用MLRS瞄准任何东西,并防止不使用MLRS发射的MLRS火箭造成的伤害
  • 人类损伤-使任何类型的npc都能损坏玩家 (插件覆盖此行为非常常见!)
  • NpcsCanHurtAnything-允许npc损坏任何东西 (LockedBoxesImmortal和LockedDoorsImmortal覆盖此标志)-任何npc插件都覆盖此标志并给出意外结果是很常见的。请咨询该开发人员。
  • LockedBoxesImmortal-锁定的盒子是不朽的 (_HeliDamageLocked_覆盖此)
  • LockedDoorsImmortal-锁着的门是不朽的 (_HeliDamageLocked_覆盖此)
  • ExcludeTugboatFromImmortalFlags-防止LockedBoxesImmortal和LockedDoorsImmortal标志保护拖船上的实体
  • AdminsHurtSleepers-管理员可以伤害睡眠者
  • 管理员玩家-管理员可以伤害清醒或睡着的球员
  • 保护轨枕-枕木免受NPC损坏
  • TrapsIgnorePlayers-玩家不触发陷阱 (不工作的熊/捕捉陷阱)
  • 陷阱科学家-防止npc触发陷阱
  • TurretsIgnorePlayers-玩家不触发炮塔 (不工作的火焰炮塔)
  • TurretsIgnoreScientist-防止npc被玩家拥有的炮塔作为目标 (“ent who” 控制台命令显示有效的steam id)
  • StaticTurretsIgnorePlayers-防止炮塔 (没有所有者,例如在纪念碑上) 瞄准玩家
  • SafeZoneTurretsIgnorePlayers-防止安全区域内的炮塔瞄准玩家 (这些是绿色哨兵炮塔)
  • 静态samsitesignoreplayers-静态sam站点忽略所有玩家,例如从Launch Site或已将SamSite.staticRespawn设置为true的插件。
  • PlayerSamSitesIgnorePlayers-玩家sam站点忽略所有玩家,例如从部署的sam站点。如果另一个插件将SamSite.staticRespawn设置为true,则此标志将不适用于该sam站点。
  • SamSitesIgnoreMLRS-防止SAM站点瞄准MLRS火箭
  • 车辆碰撞损坏无驱动程序-车辆将采取碰撞,如果没有球员坐在司机座位
  • TurretsIgnoreBradley-防止插件炮塔射击布拉德利APC
  • LockedVehiclesImmortal-模块化汽车在受密码锁保护时不会受到损害
  • 静态turretsignorescientist-防止非拥有的炮塔和npc炮塔射击npc

对于开发人员​

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

// 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");

外部API调用​

接受集合参数的非分配API方法:

  • bool RemoveMappings(List<string> keys, List<string> results = null)
  • void GetMappingsDictionaryNoAlloc(Dictionary<string, string> dict)
  • void GetMappingsListNoAlloc(List<string> list)
我们在处理OnEntityTakeDamage() 时调用以下钩子;

CanEntityTakeDamage: 返回/false将允许/不允许损坏并跳过正常的TruePVE损坏评估。

object CanEntityTakeDamage(BaseCombatEntity entity, HitInfo hitinfo)
我们在处理CanBeTargeted() 时调用以下钩子;

CanEntityBeTargeted: 返回/false将允许/不允许定位并跳过正常的TruePVE目标评估。这适用于炮塔,samsites等。

object CanEntityBeTargeted(BasePlayer player, BaseEntity entity)
我们在处理OnTrapTrigger() 时调用以下钩子;

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

object CanEntityTrapTrigger(BaseTrap trap, BasePlayer player)
CanMlrsTargetLocation: 返回/false将允许/禁止MLRS实体发射MLRS火箭并跳过正常的TruePVE触发评估。

object CanMlrsTargetLocation(MLRS mlrs, BasePlayer player)

区域集成​

在 “映射” 或 “使用排除” 下添加区域ID和规则集。使用上面解释的映射。

  • 映射-将区域名称 (LiteZones) 或名称/ID (ZoneManager) 映射到规则集名称,或仅将规则集名称映射到自身。可用于将多个区域映射到同一规则集。也可用于通过映射到 “排除” 来创建排除区域 (具有默认Rust行为的区域)。示例:
"Mappings": {
"default": "default",
"66499587": "killall",
"62819081": "exclude"
},

学分​

  • ignignokt84,这个插件的原作者
  • rfc1920,用于帮助维护插件
  • nivex,用于帮助维护插件
作者
rust插件网
下载
0
查看
28
首次发布
最后更新
评分
0.00 星 0 星

来自rust插件网的更多资源

后退
顶部