-
Notifications
You must be signed in to change notification settings - Fork 0
Door System
oneachina edited this page Jul 25, 2026
·
2 revisions
门是 ZombieRun 的核心机制。玩家按编号顺序依次通过大门向终点推进。
按钮触发
↓
倒计时(duration 秒)—— Title 显示 "X 号大门即将开启……"
↓
门开了!(方块变空气)—— Title 显示 "X 号大门开启"
↓
倒计时(duration 秒)—— Title 显示 "X 号大门将在 N 秒后关闭……"
↓
关门判定(一次性,方块恢复)
├── 已通过玩家(位置 > 门中心)→ 更新 playerRoom + 触发 SpecialBehavior(如有)
└── 未通过玩家(位置 < 门中心)→ 10 秒传送倒计时 → 传送到 DOOR_PLAYER/DOOR_ZOMBIE 重生点
核心变化(v1 → v2):
- 不再实时追踪玩家"穿过门"事件。关门那一刻一次性判定位置。
- 开门和关门共用一个
duration参数(默认 15 秒)。 - 同组多扇门(如地铁三入口)共享一个门号,按钮触发一扇即全开,全部关后统一判定。
| 模式 | 触发方式 | 门号 | 用途 |
|---|---|---|---|
normal |
人类右键按钮 | 自动递增 | 游戏主流程门 |
player |
开局自动开启 | 无 | 人类初始区域的出口 |
zombie |
开局 100 tick 后自动开启 | 无 | 僵尸初始区域的出口 |
start |
游戏开始即开启 | 无 | 起始门 |
player / zombie / start 门不参与门号系统。
多扇门使用相同 group 名即为一个门组。同组门共享门号、联动开启/关闭。
典型场景:地铁站多个入口 → 三扇门同组同号,任意按钮触发全部开启,全部关后统一传送。
# 第一扇:新组自动分配门号
/zr doors add normal -g subway_line1
# 第二、三扇:同名组自动继承门号
/zr doors add normal -g subway_line1
/zr doors add normal -g subway_line1无需手打坐标,用选区棒可视化选区。
/zr postool # 获得木棍选区棒(再输一次关闭)
左键方块 → pos1 # 第一个角
右键方块 → pos2 # 第二个角
/zr doors add normal [-g 组名] [duration]postool 选区同时也用于特殊行为的目标坐标:
- pos1 = 人类传送目标
- pos2 = 僵尸传送目标(可选,不设则不传僵尸)
# postool 选区后(推荐)
/zr doors add normal # 默认 duration
/zr doors add normal -g my_group 20 # 组 + duration=20
/zr doors add player # 起始门
/zr doors add zombie # 起始门
# 手打坐标(兼容旧方式)
/zr doors add <x1> <y1> <z1> <x2> <y2> <z2> <mode>添加时自动扫描门区域内所有方块类型,关门时精确恢复。
/zr doors edit <门名> duration <秒>
/zr doors edit <门名> door-number <新号>
/zr doors edit <门名> group <新组名>/zr doors info <门名> # 查看详情
/zr doors list # 列出所有
/zr doors remove <门名> # 删除
/zr doors reset <门名> # 重置为关闭按钮方块必须是 REDSTONE_LAMP 或 LEVER。
/zr buttons add <x> <y> <z> normal <门号>人类右键触发开门倒计时。非人类无法操作。
/zr buttons add <x> <y> <z> escape人类右键启动 30 秒直升机撤离倒计时,倒计时结束人类获胜。按钮使用后消失。
关门时自动传送"已通过"的玩家。支持人类/僵尸独立目标坐标。僵尸坐标不设则不传送僵尸。
关门 → 立即传送到绝对坐标(人类/僵尸各自的目标)。
# postool 选区后(推荐):pos1=人类目标, pos2=僵尸目标
/zr door behavior set <门号> subway "线路名"
# 手打坐标
/zr door behavior set <门号> subway "线路名" <hx> <hy> <hz> [zx] [zy] [zz]| 配置项 | 说明 |
|---|---|
human-target-x/y/z |
人类落地坐标 |
zombie-target-x/y/z |
僵尸落地坐标(可选) |
line-name |
线路名称,用于 Title 提示 |
关门倒计时期间 Title 自动显示:
- 未上车玩家:
"X号线列车将在 N 秒后发车,请立即上车!" - 已上车玩家:
"X号线列车将在 N 秒后发车……"
关门 → 倒计时 → 垂直传送(保持 X/Z,改变 Y)。
# postool 后:pos1.y=人类Y, pos2.y=僵尸Y
/zr door behavior set <门号> elevator
# 手打
/zr door behavior set <门号> elevator <人类Y> [僵尸Y]| 配置项 | 说明 | 默认 |
|---|---|---|
human-target-y |
人类目标楼层 | 必填 |
zombie-target-y |
僵尸目标楼层 | 可选 |
countdown |
到达倒计时秒数 | 5 |
关门 → Title 提示 → 延迟 tick 后传送(无倒计时 UI)。
/zr door behavior set <门号> airport [delayTicks]| 配置项 | 说明 | 默认 |
|---|---|---|
human-target-x/y/z |
人类目标 | 必填 |
zombie-target-x/y/z |
僵尸目标 | 可选 |
delay-ticks |
延迟 tick 数 | 60 |
/zr door behavior info <门号>
/zr door behavior remove <门号>按门号操作,同组门自动全部生效。
每个玩家有一个 room 属性:
-
关门时一次性判定:位置 > 门中心 →
playerRoom更新为该门号 - 关门时
room < doorNumber的玩家触发 10 秒传送倒计时 - 用于 PlaceholderAPI:
%zombierun_room%