Damage Boost/zh: Difference between revisions

From Minecraft Parkour Wiki
Content added Content deleted
(Created page with "在非同步状态下进行损坏可能会产生尚未完全了解的其他影响。特别是,玩家可能会从跳跃中过早落地,甚至[https://youtu.be/xYSzRg5rYdA 激活假跳跃]。")
No edit summary
 
(19 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
__NOTOC__
__NOTOC__
伤害跳跃是一种机制,涉及以某种方式受到伤害以提升跳跃高度。
伤害跳跃是一种机制,通过以某种方式受到伤害以提升跳跃高度。


本页面仍需要一个清晰的解释以及代码分析,但主要的想法列在此处。
本页面仍需要一个清晰的解释以及代码分析,但主要的想法列在此处。


玩家可以由自然因素受到伤害:落,火焰,仙人掌,药水等等……
玩家可以由自然因素受到伤害:落,火焰,仙人掌,药水等等……


有意思的是,溺水并不影响玩家的速度。在旧版本的游戏中,溺水会不断地将玩家向下压而使他们困在水中。但是在 1.8 中受到其他种类的伤害,例如药水,同样会使你面对这样的困境。
有意思的是,溺水并不影响玩家的速度。在旧版本的游戏中,溺水会不断地将玩家向下压而使他们困在水中。但是在 1.8 中受到其他种类的伤害,例如药水,同样会使你面对这样的困境。
Line 14: Line 14:




<span id="Introduction:"></span>
== 介绍: ==
== 介绍: ==


Line 38: Line 39:
'''注意:'''
'''注意:'''


* '''近似'''这个词特指由于双精度值在数据包中的储存方式,速度是以1/8000为单位向下取整的。
<div lang="en" dir="ltr" class="mw-content-ltr">
* 自然原因造成的伤害与击退不同,击退是在玩家被实体击中时应用的。
* The phrase "approximately" captures the fact that speed is rounded by 1/8000 towards 0, due to how doubles are stored in the velocity packet
* Damage taken from natural causes is not the same as knockback, which is applied when the player is hit by an entity.
</div>






<span id="Synchronized_Damage_Boost"></span>
== 同步伤害跳跃 ==
== 同步伤害跳跃 ==


Line 51: Line 51:
在与服务器同步的情况下受到伤害时可以保持玩家在下一刻的速度。
在与服务器同步的情况下受到伤害时可以保持玩家在下一刻的速度。


我们想法是利用这种速度守恒来保持尽可能多的垂直速度,这是一个跳跃开始(0.42m/t)。在最佳情况下,跳跃高度的最大值达到约1.6685米,允许玩家跳上1.625高的方块。
的是利用这种速度守恒来保持尽可能多的向上速度,跳跃开始的速度(0.42m/t)。在最佳情况下,跳跃高度的最大值达到约 1.6685 米,使玩家跳上 1.625高的方块。






<span id="Desynchronized_Damage_Boost"></span>
== 不同步时的伤害跳跃 ==
== 不同步时的伤害跳跃 ==


<youtube>https://youtu.be/9HxDTb4QNIc</youtube>
<youtube>https://youtu.be/9HxDTb4QNIc</youtube>


不同步的伤害让玩家'''原地加速'''( 实际上 ,玩家的速度是简单的更新 )。通过在[[Special:MyLanguage/Slime Block|slime block]](或1.12+中的床)上反弹,可以将向下加速度重定向到另一个方向。
不同步的伤害让玩家'''原地加速'''实际上仅仅是玩家的速度更新。通过在[[Special:MyLanguage/Slime Block|粘液块]](或 1.12+ 中的床)上反弹,可以将向下加速度转为上加速度


需要注意的是,通过在方块边缘落地,玩家可以在粘液块上受到摔落伤害的同时反弹。
<div lang="en" dir="ltr" class="mw-content-ltr">
Note that you can take fall damage on a slime block and still bounce, by landing on the outline of the block.
</div>


在非同步状态下进行损坏可能会产生尚未完全了解的其他影响。特别是,玩家可能会从跳跃中过早落地,甚至[https://youtu.be/xYSzRg5rYdA 激活假跳跃]。
在非同步状态下受到伤害可能会产生尚未完全了解的其他影响。特别是,玩家可能会从跳跃中过早落地,甚至[https://youtu.be/xYSzRg5rYdA 激活假跳跃]。






<span id="Interaction_with_Jump_Boost"></span>
==与跳跃提升的交互==
== 与跳跃提升的联动 ==


<youtube>https://youtu.be/FFvNmZ-Zssk</youtube>
<youtube>https://youtu.be/FFvNmZ-Zssk</youtube>


显然,[[Special:MyLanguage/Status Effects|跳跃提升]]效果可以与伤害跳跃相结合,以实现更高的跳跃或反弹。跳跃提升等级 129 或更高时,虽然玩家无法跳得更高(由于服务器以字节而不是无符号字节发送药水效果),但仍然受到伤害提升的影响,因为这是在服务器端计算的。
<div lang="en" dir="ltr" class="mw-content-ltr">
Obviously, the [[Special:MyLanguage/Status Effects|jump boost]] effect can be combined with damage boost to jump or bounce even higher. What isn't obvious is how the game handles jump boost past level 129, which wraps around to become negative. The exact mechanics involved are still blurry.
</div>


当玩家跳跃或从跳跃中降落并受到伤害时,他们将以 3.9 m/t 的初始速度向上运动(该上限被硬编码到速度包中)。
<div lang="en" dir="ltr" class="mw-content-ltr">
In that case, when the player jumps or lands from a jump and takes damage, they can be be flung upwards, with up to 3.9 m/t of initial speed (this upper bound is hard-coded into the velocity packet).
</div>


具体来说,对于252 - 256级的跳跃提升,玩家会跳的更低。在这种情况下,可以很容易地激活该故障。
<div lang="en" dir="ltr" class="mw-content-ltr">
Specifically, for jump boost levels 252 - 256, the player is able to jump, though with less initial speed. In this situation, the glitch can be activated very easily.
</div>




'''注意:''' 129 - 249 级的跳跃提升仅通过在黏液块上跳跃就可起效,因为负速度会被转换成正向的垂直速度。
<div lang="en" dir="ltr" class="mw-content-ltr">
'''Note:''' jump boost levels 129 - 249 can be abused on slime blocks by simply jumping, as the negative speed is converted into a massive bounce.
</div>

Latest revision as of 03:12, 25 February 2023

Other languages:

伤害跳跃是一种机制,通过以某种方式受到伤害以提升跳跃高度。

本页面仍需要一个清晰的解释以及代码分析,但主要的想法列在此处。

玩家可以由自然因素受到伤害:摔落,火焰,仙人掌,药水等等……

有意思的是,溺水并不影响玩家的速度。在旧版本的游戏中,溺水会不断地将玩家向下压而使他们困在水中。但是在 1.8 中受到其他种类的伤害,例如药水,同样会使你面对这样的困境。

在跑酷服务器中通常会禁用伤害,但这个机制在其它地方有很大作用,例如速通跑酷地图。



介绍:

当受伤时,信息会通过数据包传递给服务器,然后再返回给玩家。对于集成服务器(单人)和专用服务器(多人)都是如此。在这个过程中,玩家的运动被修改:

  • 当玩家的速度与服务器同步时,玩家在受到伤害时保持近似相同的速度。
  • 当玩家的速度与服务器不同步时,玩家似乎会在受到伤害时加速,因为它是以预期的速度更新的。


目前还不清楚玩家的速度何时和如何失去同步,但这里有一些已知的情况:

  • 跑出一个方块,并在最后一刻跳跃
  • 跳到黏液块上
  • 从梯子上下来
  • 处于水中或岩浆中

我们怀疑,失去同步与 NetHandler 独立于移动代码调用 jump() 方法有关。


注意:

  • 近似这个词特指由于双精度值在数据包中的储存方式,速度是以1/8000为单位向下取整的。
  • 自然原因造成的伤害与击退不同,击退是在玩家被实体击中时应用的。


同步伤害跳跃

在与服务器同步的情况下受到伤害时可以保持玩家在下一刻的速度。

目的是利用这种速度守恒来保持尽可能多的向上速度,即跳跃最开始的速度(0.42m/t)。在最佳情况下,跳跃高度的最大值达到约 1.6685 米,使玩家能跳上 1.625 格高的方块。


不同步时的伤害跳跃

不同步的伤害让玩家原地加速(实际上仅仅是玩家的速度被更新)。通过在粘液块(或 1.12+ 中的床)上反弹,可以将向下加速度转为向上加速度。

需要注意的是,通过在方块边缘落地,玩家可以在粘液块上受到摔落伤害的同时反弹。

在非同步状态下受到伤害可能会产生尚未完全了解的其他影响。特别是,玩家可能会从跳跃中过早落地,甚至激活假跳跃


与跳跃提升的联动

显然,跳跃提升效果可以与伤害跳跃相结合,以实现更高的跳跃或反弹。跳跃提升等级 129 或更高时,虽然玩家无法跳得更高(由于服务器以字节而不是无符号字节发送药水效果),但仍然受到伤害提升的影响,因为这是在服务器端计算的。

当玩家跳跃或从跳跃中降落并受到伤害时,他们将以 3.9 m/t 的初始速度向上运动(该上限被硬编码到速度包中)。

具体来说,对于252 - 256级的跳跃提升,玩家会跳的更低。在这种情况下,可以很容易地激活该故障。


注意: 129 - 249 级的跳跃提升仅通过在黏液块上跳跃就可起效,因为负速度会被转换成正向的垂直速度。