Files
metin2-client/tools/server/sash/install.sh
T
shenleiandClaude Opus 5.5 4d7306792e AVA2 unlock P4: sash (mt_sash windows/slot/tooltips, sash module, CHR_EQUIPPART_SASH, item_scale)
Client side of metin2-server FEATURE-AVA2-UNLOCK P4: HEADER_CG_SASH 211 /
HEADER_GC_SASH 215, a fifth awPart WORD in the character packets (old
servers break), the sash part attached by scale per job/sex, the combine
and absorb windows in script mt_sash, and quest tools/server/sash on 20016.
The ava2items pack keeps the four grade-4 sashes plus their effects,
acce window images and item_scale.txt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 13:45:02 +09:00

36 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
# Installs quest sash (README.md): run on the server from this directory, then restart the game cores.
# Adds pc.open_sash to quest_functions (needs the sash game binary; an older core would fail the call, not the boot),
# compiles only sash.quest in an isolated staging directory and copies its objects into the live quest tree.
set -eu
SERVER=${SERVER:-/usr/metin2/server}
LOCALE=${LOCALE:-newcibn}
QUEST="$SERVER/share/locale/$LOCALE/quest"
HERE=$(cd "$(dirname "$0")" && pwd)
BACKUP=/root/backup-sash/$(date +%Y%m%d-%H%M%S)
export LC_ALL=C
mkdir -p "$BACKUP/stage"
cp -p "$QUEST/quest_functions" "$QUEST/locale_list" "$BACKUP/"
[ -f "$QUEST/sash.quest" ] && cp -p "$QUEST/sash.quest" "$BACKUP/"
echo "backup: $BACKUP"
# A GBK trail byte 0x5C would be a backslash to qc.
iconv -f UTF-8 -t GBK "$HERE/sash.quest" > "$BACKUP/sash.gbk"
if grep -q '\\' "$BACKUP/sash.gbk"; then echo "sash.quest: backslash byte in GBK" >&2; exit 1; fi
cp "$QUEST/quest_functions" "$BACKUP/stage/"
grep -qx 'pc.open_sash' "$BACKUP/stage/quest_functions" || echo 'pc.open_sash' >> "$BACKUP/stage/quest_functions"
cp "$BACKUP/sash.gbk" "$BACKUP/stage/sash.quest"
(cd "$BACKUP/stage" && "$QUEST/qc" sash.quest) > "$BACKUP/qc.log" 2>&1 || { cat "$BACKUP/qc.log" >&2; exit 1; }
test -s "$BACKUP/stage/object/state/sash"
[ "$(cd "$BACKUP/stage/object/20016/chat" && ls | grep -c '^sash\.')" -eq 9 ] || { echo "unexpected qc output" >&2; exit 1; }
cat "$BACKUP/stage/quest_functions" > "$QUEST/quest_functions"
cat "$BACKUP/sash.gbk" > "$QUEST/sash.quest"
grep -qx 'sash.quest' "$QUEST/locale_list" || echo 'sash.quest' >> "$QUEST/locale_list"
(cd "$BACKUP/stage/object" && find . -type f) | while read -r f; do
mkdir -p "$QUEST/object/$(dirname "$f")"
cp "$BACKUP/stage/object/$f" "$QUEST/object/$f"
done
echo "done; restart the game cores"