Works with
关于受伤和疾病
什么样的生存游戏不会让你伤到腿?有了这个插件,玩家可能会受伤并感染疾病。目前有 6 种状态条件,每种状态都可以通过插件的配置文件完全自定义。
Status 条件
/inflict <player> concussion /cure <player> concussion
- 周期性地模糊玩家的视线。
- 当玩家被爆头时发生的几率。
- 更强大的武器更有可能发生。
/inflict <player> foodpoisoning /cure <player> foodpoisoning
- 迫使玩家偶尔呕吐,这会损害他们的食物和口渴程度。
- 由食用变质的肉引起。
- 可以通过喝治疗茶来治愈。
/inflict <player> brokenleg /cure <player> brokenleg
- 防止冲刺并在移动时造成损坏。
- 可能在受到掉落伤害时发生,高度越高,几率越高。
- 也可能发生在腿部中弹时,武器威力越大,这种情况就越有可能发生。
/inflict <player> rabies /cure <player> rabies
- 周期性地对受害者造成伤害,并使受害者的屏幕闪烁红色。
- 很少会因野生动物叮咬而感染。
- 没有治愈的方法,最好让受害者摆脱痛苦。
/inflict <player> tapeworm /cure <player> tapeworm
- 食物和水消耗的影响大大降低。
- 可因食用生肉或未煮熟的肉而发生。
- 易于用抗生素(抗辐射药丸)治疗。
/inflict <player> z13virus /cure <player> z13virus
- 人们对这种疾病知之甚少,但经常被误认为是狂犬病。
- 当受害者死去时,会发生可怕的事情……
- 似乎发生在玩家被僵尸(稻草人)咬伤时。
定制
每个状态条件都有可以通过插件配置自定义的属性。以下是每个属性的快速描述。
Enabled – 设置为 false 可禁用此条件。
可能性 – 此情况以任何方式发生的几率 (0 – 1.0)。对于某些情况,例如脑震荡或腿部骨折,这将是发生这种情况的最小几率,并且根据受到的伤害程度而变得更有可能。这仅与某些情况相关,其他条件可能会使用物品/实体对玩家造成伤害。
图标 – 此条件的图标的 URL。
From Legshots – (仅限断腿)设置为 false 可禁用在球员腿部中弹时发生此情况。
From Falling – (仅限断腿) 设置为 false 以禁用在玩家受到跌落伤害时发生这种情况。
Damage Scale (伤害缩放比例) – 状态条件的伤害效果乘数。这将修改所有类型的伤害(饥饿、口渴等),而不仅仅是生命值。例如,值为 0.5 将造成一半的伤害,而值为 2.0 将造成双倍伤害。
Show Duration(显示持续时间) – 如果您不希望玩家看到此条件还剩下多少秒,请设置为 false。如果将其设置为 true,则会产生轻微的性能损失。
Show Indicator – 如果您不希望自定义状态框架指示器针对此条件显示,请设置为 false。
治愈物品 – 物品短名称,相应的几率从 0 到 1.0。列出的物品在被玩家食用/使用时将有机会治愈这种情况。可以选择指定物品皮肤,参见物品皮肤部分。
间隔最小秒数 – 条件症状发生之间的最短时间(以秒为单位)。仅与某些条件相关。
Interval Max Seconds (间隔最大秒数) – 条件症状发生之间的最长时间(以秒为单位)。仅与某些条件相关。
Duration Min Seconds (持续时间最小秒数) – 条件将持续的最小秒数。
Duration Max Seconds (持续时间最大秒数) – 条件将持续的最大秒数。
Move items to Zombie – (仅限 Z13 病毒)设置为 false 可禁止将物品从尸体移动到新生成的僵尸。这些物品将改为留在背包中。
复活秒数 – (仅限 Z13 病毒)受感染玩家的尸体复活为僵尸之前的秒数。
Infliction Entities (施加实体) – 实体简称,具有 0-1.0 的相应几率。列出的实体在对玩家造成伤害时将有几率造成该条件。
Infliction Items – 物品短名称,相应的几率范围为 0-1.0。列出的物品在被玩家消耗/使用时将有机会造成该条件。可以选择指定物品皮肤,请参阅物品皮肤部分。
Infliction Damage Action (造成伤害操作) – 确定造成实体必须造成伤害才能造成条件的方式。允许的值为 “melee”、“ranged” 或 “any”。
Item 皮肤
你可以选择指定只有具有特定皮肤的物品才会被计入 Cure 和 Infliction 物品。要做到这一点,只需在此处将 #<skin id 附加到物品短名称的末尾>即可。如果同时指定了皮肤物品和非皮肤物品定义,那么皮肤定义将优先(如果适用)。例如,如果你的配置看起来像这样,那么……
- 如果食用了带有皮肤 12345 的 Anti-Rad Pills,那么它有 100% 的治愈几率。
- 对抗辐射药丸与任何其他皮肤(包括默认皮肤)只有 50% 的治愈几率。
- 只有拥有 67890 皮肤的苹果有 100% 的治愈几率。
- 所有其他苹果的治愈几率为 0%(因为它们没有被列出)。
"Cure Items": { "antiradpills": 0.5, "antiradpills#12345": 1.0, "apple#67890": 1.0 },
创建您自己的自定义状态条件
请注意,这是 WIP 功能,可能会有一些 bug,发现请报告!
从 v1.2.0 开始,你可以使用 API 方法 “CreateCondition” 创建自己的插件,该插件可以通过 Injuries and Diseases 来注册自定义状态条件。但是,如果你不是开发人员怎么办? 没关系! 我为您创建了一个插件,其中包含大量可配置选项供您创建自己的状态条件。在任何一种情况下,这里有一些指南,说明您需要做什么来创建自己的状态条件。
对于非开发人员
如果您不是插件开发人员,并且想要创建自己的自定义状态条件,那么您可以下载此插件文件并编辑它生成的配置,以根据需要自定义状态条件。目前,您可以对状态条件执行的操作有限。如果您希望包含特定条件、触发器或效果,请打开支持票证并提出建议!或者,如果您想要完全自由,您可以查看开发人员部分,以完全按照您的意愿创建自己的状态条件插件。
对于开发人员
如果你是一个插件开发者,并且想要创建一个插件来添加一些自定义状态条件,那么你可以使用 “CreateCondition” API 方法(参见 API 部分)来注册你想要添加的任何自定义条件。要查看其工作原理的代码示例,您可以参考上面 “For Non-Developers” 部分中提到的插件文件下载。该插件包含一些关于插件必须如何操作才能处理 Injuries and Diseases 的提示。创建自定义条件时,Injuries and Diseases 将处理某些方面,而您的插件需要处理其他方面。以下是其中一些内容的细分:
Injuries and Diseases 将处理……
- 显示状态指示器
- 状态持续时间和倒计时
- 显示 infliction, cure 和 diagnosis 消息(尽管它们需要位于 YOUR plugin 的本地化文件中)
- 在间隔和首次施加条件时发生的效果(将这些方法传递到 CreateCondition 方法)
- 是否显示条件持续时间/指示器(将此传递到 CreateCondition 方法中)
您的插件应该处理…
- 使用 API 注册条件
- 造成你状态的方法(实体攻击、消耗的物品等)
- 治愈病情的方法
- 定位(伤害和疾病将参考其中一些)
- 将图像添加到图像库
- 与您的自定义条件相关的任何配置选项
权限
injuriesanddiseases.admin
- 管理员命令是必需的
injuriesanddiseases.doctor
- 将玩家指定为医生
- 医生命令需要
injuriesanddiseases.immune
- 玩家不会受到任何条件的影响
- 在获得时也会治愈玩家的任何当前状态
管理员命令
/inflict <player> <condition> <revealed?>
- 对玩家施加指定的条件(参见状态条件部分)。
- (可选)您可以设置是否显示状态。默认值在配置中设置。
/cure <player> <condition?>
- 治愈玩家的所有状况。
- 如果指定了条件,则球员将仅治愈该条件。
/conditions <player>
- 返回玩家遇到的所有条件的列表,并包括剩余持续时间。
/reveal <player> <condition>
- 如果尚未显示条件,则向玩家显示该条件。
医生 (可选)
作为可选功能,您可以将玩家分配为医生。医生可以诊断玩家,这将向玩家揭示他们所患的状况。默认情况下,这不是必需的,因为玩家会自动收到他们的病情通知。但是,在配置中,您可以对其进行设置,以便玩家在让医生诊断之前不知道情况。一旦他们诊断出玩家,医生也会被告知如何治愈病情。医生可以被分配 doctor perm,并可以访问以下命令:
/diagnose
- 将诊断他们正在观察的球员的任何未确诊的疾病。如果可能,还将推荐治疗。
支持的插件
Injuries and Diseases 内置了对以下插件的支持:
- 僵尸部落
- 默认配置值包含对 ZombieHorde 僵尸造成 Z13 病毒的支持
- 僵尸部落实体配置中的关键字是 “zombie”
- 行尸走肉
- 默认配置值包含对行尸走肉僵尸造成 Z13 病毒的支持
- 行尸走肉插件使用“稻草人”实体来表示他们的僵尸,这已经包含在内
- BotReSpawn
- 如果您希望 BotReSpawn 实体施加条件,请在条件配置的 infliction entities 部分中使用关键字 “botrespawn”。
配置
Death Removes Conditions – 如果您希望条件在玩家死亡时仍然存在,请设置为 false。
Pause on Disconnect – 如果您希望条件计时器在玩家休眠时继续,则设置为 false。如果您希望条件计时器在玩家休眠时暂停,则设置为 true。
需要诊断 – 如果您希望在造成条件时自动向玩家显示条件,请设置为 false。如果您希望它们在医生诊断之前显示为未知,请设置为 true。
Show Doctor Indicator – 如果您希望在获得医生权限的玩家中显示指示器,请设置为 true。
Messages Enabled – 如果您不希望在玩家的条件状态更新时,消息出现在玩家的聊天中,请设置为 false。
消息图标 ID – 您希望在此插件的所有聊天消息中显示的玩家头像的 Steam ID。
图像 – 此插件中使用的各种图像的图像 URL 列表。
Status Conditions — 状态条件的配置(请参阅自定义部分)。
版本 – 跟踪为您的配置生成的版本,不要手动编辑。
开发人员 API
使用这些开发人员 API 工具,您可以通过代码扩展现有条件的功能。您可以通过为每个条件使用各种挂钩来添加其他效果。
/* * Returns a list of all enabled conditions. */ List<string> GetConditions(); /* * Returns a list of conditions a player is inflicted with. */ List<string> GetPlayerConditions(ulong userId); /* * Returns true if the player has the specified condition. */ bool HasCondition(ulong userId, string conditionNameId); /* * Inflicts the player with the specified condition. */ void SetCondition(ulong userId, string conditionNameId, bool revealed); /* * Removes the condition for the player. */ void RemoveCondition(ulong userId, string conditionNameId, bool cured); /* * Removes all conditions for the player. */ void RemoveAllConditions(ulong userId, bool cured); /* * Reveals the condition to the player if it is not already revealed. */ void RevealCondition(ulong userId, string conditionNameId); /* * Create a custom condition. BETA */ void CreateCondition(Plugin plugin, string conditionNameId, string imageLibraryIconName, int minIntervalSeconds, int maxIntervalSeconds, int minDurationSeconds, int maxDurationSeconds, bool showDuration, bool showIndicator, Action<BasePlayer> beginEffect = null, Action<BasePlayer> intervalEffect = null);