BurningTimesAi/공유/기획/FirstRising/맵/tools/floor_tour.sh

54 lines
2.1 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
# 맵 하나의 바닥을 자리마다 찍는다. bash floor_tour.sh <꼬리표> <맵 이름> "<x> <z>" ["<x> <z>" ...] → cap/floor_<맵>_<꼬리표>_<번호>.png
# Entry 에서 Play → 로비 → 필드 이동 → 준비 기다림 → 자리마다 촬영(임시 카메라 · 플레이어는 옮기지 않는다) → 에디터 로그 점검 → Play 종료
# BOSS=<보스 열쇠> 를 주면 끝에 그 보스의 전용 필드에도 들어가 찍는다(예: BOSS=R4)
SP="C:/Users/sw/AppData/Local/Temp/claude/E--BurningTimes/3562a2c1-e88a-4143-b7ec-e74c317778d8/scratchpad"
source "$SP/bt.sh"
export PYTHONIOENCODING=utf-8
TAG="$1"; MAP="$2"; shift; shift
st
python "$SP/logscan.py" mark
unity command clear_console --project-path "$P" --format json --no-banner >/dev/null 2>&1
unity command editor_play --project-path "$P" --format json --no-banner 2>&1 | grep -E '"success"' | head -1
for i in $(seq 1 40); do
sleep 3
r=$(ev lobby_ready 2>&1 | head -1)
case "$r" in *"scene=Lobby"*"player=True"*"config=True"*) echo "ready $i"; break;; esac
done
sleep 6
ev travel go "$MAP" | grep -o "go=[A-Za-z]*"
ok=""
for k in $(seq 1 60); do
sleep 2
s=$(ev travel state 2>&1 | head -1)
case "$s" in *"traveling=False"*"current=$MAP/"*"player=True"*) ok="1"; break;; esac
done
sleep 8
echo "[$MAP] ${ok:+OK} $(ev travel state | grep -o 'characters=[0-9]*\|pos=([^)]*)' | tr '\n' ' ')"
ev shot_cam "floor_${MAP}_${TAG}_0start" >/dev/null
n=1
for xz in "$@"; do
set -- $xz
ev shot_at "floor_${MAP}_${TAG}_${n}" "$1" "$2" >/dev/null
echo " shot $n ($1, $2)"
n=$((n+1))
done
python "$SP/logscan.py" scan "floor-$MAP"
if [ -n "$BOSS" ]; then
ev arena enter $BOSS | head -1
for k in $(seq 1 10); do
sleep 2
s=$(ev floor_probe 2>&1 | head -1)
case "$s" in "field="*) break;; esac
done
sleep 3
echo "$BOSS $s"
ev shot_cam "floor_${MAP}_${TAG}_boss" >/dev/null
ev arena exit | head -1
sleep 3
fi
unity command editor_stop --project-path "$P" --format json --no-banner 2>&1 | grep -E '"success"' | head -1
sleep 6
st
python "$SP/logscan.py" scan "floor-tour-$TAG"