| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 |
| 技术:栈位理论 [2024/05/06 23:27] – 陆地猫 echochrome | 技术:栈位理论 [2025/10/13 12:11] (当前版本) – [僵尸栈位相关] echochrome |
|---|
| 本条目部分或全部内容搬运自外部资源。 | 本条目部分或全部内容搬运自外部资源。 |
| |
| 遵守[[https://creativecommons.org/licenses/by-sa/4.0/deed.zh|CC BY-SA 4.0协议]],部分内容可能有所改动。 | 遵守合理使用原则,部分内容可能有所改动。 |
| </WRAP> | </WRAP> |
| ~~SNIPPET_C~~snippet:引自外部~~ | ~~SNIPPET_C~~snippet:引自外部~~ |
| </callout> | </callout> |
| ===== 前言 ===== | ===== 前言 ===== |
| pvz中并<wrap hi>没有真正的栈,有的只是类似栈的结构</wrap>。底层逻辑介绍参见[[攻略:dataarray|DataArray]],以下为叙述方便可能仍用到“栈/栈位”的表述。 | 栈位,也称编号、序号。pvz中并<wrap hi>没有真正的栈,有的只是类似栈的结构</wrap>。底层逻辑介绍参见[[攻略:dataarray|DataArray]],以下为叙述方便可能仍用到“栈/栈位”的表述。 |
| |
| 栈位显示相关工具和展示视频可见[[https://www.bilibili.com/video/BV1oE41157SY/|PvZ 栈位理论]]。 | 栈位显示相关工具和展示视频可见[[https://www.bilibili.com/video/BV1oE41157SY/|PvZ 栈位理论]]。 |
| <wrap hi>此概念仅在蹦极和舞王的相关现象中用到,了解它并不是必要的。</wrap> | <wrap hi>此概念仅在蹦极和舞王的相关现象中用到,了解它并不是必要的。</wrap> |
| |
| 事实上,游戏通过栈位和序列号共同确定一植物或僵尸(只不过大部分现象仅依赖栈位)。序列号有时也被称为<fc #008080>mRank计数</fc>,但在内存中被称为<fc #008080>mNextKey</fc>。游戏内部存在初值为0的计数器,植物、僵尸、子弹等各有一个,植物/僵尸/子弹/…生成时将被给予计数器当前值,即为序列号,之后对应计数器自增1((简化的表述,实际情况请参阅[[攻略:dataarray|DataArray]]))。 | 事实上,游戏通过栈位和序列号共同确定一植物或僵尸(只不过大部分现象仅依赖栈位)。序列号有时也被称为<fc #008080>mRank计数</fc>,但在内存中被称为<fc #008080>mNextKey</fc>。游戏内部存在初值为0的计数器,植物、僵尸、子弹等各有一个,植物/僵尸/子弹/…生成时将被给予计数器当前值,即为序列号,之后对应计数器自增1。((此段初值与自增为经过简化的表述,实际情况请参阅[[攻略:dataarray|DataArray]])) |
| |
| 重进游戏时,计数器将被重置为0,这将可能使蹦极抓取植物、舞王区分伴舞过程产生错误。 | 重进关卡时,计数器将被重置为初值,这将可能使蹦极抓取植物、舞王区分伴舞过程产生错误。 |
| |
| 对于让植物/僵尸拥有特定序列号以达成的操作是否应该归入“栈位理论”范畴,存在些许争议。 | 对于让植物/僵尸拥有特定序列号以达成的操作是否应该归入“栈位理论”范畴,存在些许争议。 |
| |
| === 蹦极 === | === 蹦极 === |
| 蹦极依靠栈位和序列号来确定将要偷的植物,若设法将目标植物拥有与蹦极选定的植物相同的栈位和序列号,则目标植物会被偷取。此原理又名栈位偷,尽管这并未完全体现背后的机制。利用此原理可以做到一些神奇的事情:蹦极偷炮、炮后轮悬空、植物下方无花盆荷叶而悬空((悬空植物也可以通过投篮僵尸实现,示例视频www.bilibili.com/video/BV16v411w7Mh))。 <del>用于满足日益发展的审美观</del> | 蹦极依靠栈位和序列号来确定将要偷的植物,若设法将目标植物拥有与蹦极选定的植物相同的栈位和序列号,则目标植物会被偷取。此原理又名栈位偷,尽管这并未完全体现背后的机制。利用此原理可以做到一些神奇的事情:蹦极偷炮、炮后轮悬空、植物下方无花盆荷叶而悬空((悬空植物也可以通过投篮僵尸实现,如[[https://www.bilibili.com/video/BV1wa4y1n77R|示例视频]]与[[https://tieba.baidu.com/p/7108157454|相关工具]]))。 <del>用于满足日益发展的审美观</del> |
| |
| 复现方法: | 复现方法: |
| |
| 在有水路的地形中,使蹦极选定一株陆地上被套在南瓜中的植物,并用上述方法更换为猫尾草,则蹦极偷取猫后会在南瓜下放置荷叶,则实现了陆地荷叶,在荷叶上种植猫尾草就实现了陆地猫。 | 在有水路的地形中,使蹦极选定一株陆地上被套在南瓜中的植物,并用上述方法更换为猫尾草,则蹦极偷取猫后会在南瓜下放置荷叶,则实现了陆地荷叶,在荷叶上种植猫尾草就实现了陆地猫。 |
| | |
| | 也称作飞贼荷叶skip、蹦极荷叶skip、Bungee Lilypad Skip(BLS)。 |
| |
| 除陆地放荷叶和猫外,利用此特性可以做到: | 除陆地放荷叶和猫外,利用此特性可以做到: |
| |
| <callout type="warning" title="注意" icon="true"> | <callout type="warning" title="注意" icon="true"> |
| 制造陆地荷叶的条件不仅仅是蹦极靠栈位和序列号判断植物,它还包含了至少以下几点: | 制造陆地猫的条件不仅仅是蹦极靠栈位和序列号判断植物,它还包含了至少以下几点: |
| * 1、蹦极依靠自身所在格来决定偷猫后补种荷叶的格子,而非猫原来在的格子; | * 1、蹦极依靠自身所在格来决定偷猫后补种荷叶的格子,而非猫原来在的格子; |
| * 2、补荷叶的过程不涉及额外的合法性判断; | * 2、补荷叶的过程不涉及额外的合法性判断; |
| 2、屋顶地形车底垫花盆,可观察到一部分撑杆尝试越过花盆,一部分继续行走。垫花盆后的1cs内,栈位较冰车低的撑杆先进行了飞跃判定,栈位较冰车大的撑杆飞跃判定比冰车碾压判定晚,正常行走。 | 2、屋顶地形车底垫花盆,可观察到一部分撑杆尝试越过花盆,一部分继续行走。垫花盆后的1cs内,栈位较冰车低的撑杆先进行了飞跃判定,栈位较冰车大的撑杆飞跃判定比冰车碾压判定晚,正常行走。 |
| [{{:攻略:车底垫.png?nolink&200|九列噬碑藤种下被立即碾压,部分巨人举锤}}][{{:攻略:车底垫2.png?nolink&220|花盆种下被立即碾压,部分撑杆跃过}}] | [{{:攻略:车底垫.png?nolink&200|九列噬碑藤种下被立即碾压,部分巨人举锤}}][{{:攻略:车底垫2.png?nolink&220|花盆种下被立即碾压,部分撑杆跃过}}] |
| 由于僵尸的栈位在正常游戏中不可控制,故采用上述“车底垫”的方式来垫巨人消除砸率的操作是不严谨、不被接受的((可以使用地刺、窝瓜来车底垫全部巨人,因为地刺、窝瓜免疫碾压,且地刺在种后26cs才扎车))。 | 由于僵尸的栈位在正常游戏中不可控制,故采用上述“车底垫”的方式来垫巨人消除砸率的操作是不严谨、不被接受的((可以使用地刺、窝瓜、三叶草来车底垫全部巨人,因为它们免疫碾压,且地刺在种后26cs才扎车))。 |
| |
| === 撑杆 === | === 撑杆 === |
| |
| === 拦截bug === | === 拦截bug === |
| (以灰烬激活投掷为时间参考,单位为cs)已知Ice3的生效时间是原速激活后105(减速210),但正常可拦截时间是原速107+(减速212+)。这是因为激活后106(减速211)时存在拦截bug,在这一cs内拦截可能导致拦截失败,甚至出现炸黑巨人没炸掉小鬼的情形(如图)。该bug与小鬼和巨人间的栈位高低有关: | (以炮激活投掷与炮拦截时机为参考,单位为cs)已知Ice3的生效时间是原速激活后105(减速210),但正常可拦截时间是原速107+(减速212+)。这是因为激活后106(减速211)时存在拦截bug,在这一cs内拦截可能导致拦截失败,甚至出现炸黑巨人没炸掉小鬼的情形(如图)。该bug与小鬼和巨人间的栈位高低有关: |
| [{{:攻略:106拦截1.png?nolink&290|核弹触发拦截bug}}][{{:攻略:106拦截2.png?nolink&400|巨人炸黑,小鬼存活}}] | [{{:攻略:106拦截1.png?nolink&290|核弹触发拦截bug}}][{{:攻略:106拦截2.png?nolink&400|巨人炸黑,小鬼存活}}] |
| 若小鬼栈位高于巨人,则此时小鬼存在时间为1cs,该cs内必定成功拦截; | 若小鬼栈位高于巨人,则此时小鬼存在时间为1cs,该cs内必定成功拦截; |