opt-cc/api/war-parser/run.sh

78 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
createScoreboardHeader() {
printf "%25s %8s %8s %8s %8s %8s\n" "Name" "Kill" "FF" "Death" "Respawn"
echo "---------------------------------------------------------------------------"
}
createScoreboard() {
NAME="$1"
FILE="$2"
KILL=0
FF=0
DEATH=0
RESPAWN=0
#escape '[' -> somehow escapes all special chars, lol?
ESC_NAME=$(echo "$NAME" | sed -r 's/[\[]+/\\[/g')
while IFS= read -r line; do
case "$line" in
*\(WEST\)[" "]von:[" "]${ESC_NAME}[" "]\(EAST\)* | *\(EAST\)[" "]von:[" "]${ESC_NAME}[" "]\(WEST\)*)
((KILL++))
;;
*\(EAST\)[" "]von:[" "]${ESC_NAME}[" "]\(EAST\)* | *\(WEST\)[" "]von:[" "]${ESC_NAME}[" "]\(WEST\)*)
((FF++))
;;
*${ESC_NAME}[" "]*von:*)
((DEATH++))
;;
*Spieler:*${ESC_NAME}*)
((RESPAWN++))
;;
esac
done < <(grep -- "${ESC_NAME}" ${FILE})
#echo {\"name\":\"$NAME\", \"kill\":${KILL}, \"ff\":${FF}, \"death\":${DEATH}, \"respawn\":${RESPAWN}},
if [[ $NAME =~ [^[:space:]] ]]; then
printf "%25s %8s %8s %8s %8s %8s\n" "$NAME" $KILL $FF $DEATH $RESPAWN
fi
}
FILE="$1"
PLAYERS=()
while IFS='' read -r line || [[ -n "$line" ]]; do
if [[ $line =~ [^[:space:]] ]]; then
case "$line" in
*"TFAR_RadioRequestEvent"*)
RES=$(echo "$(grep -oP ':[0-9]+\s\(\K.*?(?=\)\sREMOTE)' <<< "$line")")
;;
*"Respawn"*)
RES=$(echo "$(grep -oP '\|\|\sSpieler:\s\K.*?(?=\s-\sKosten:)' <<< "$line")")
;;
*"Abschuss"*)
RES=$(echo "$(grep -oP '\|\|\s\K.*?(?=\s\((EAST|WEST|CIV))' <<< "$line")")
RES1=$(echo "$(grep -oP 'von:\s\K.*?(?=\s\((EAST|WEST|CIV))' <<< "$line")")
;;
esac
if [[ $RES =~ [^[:space:]] && " ${PLAYERS[*]} " != *" $RES "* ]]; then
PLAYERS+=("$RES")
fi
if [[ $RES1 =~ [^[:space:]] && " ${PLAYERS[*]} " != *" $RES1 "* ]]; then
PLAYERS+=("$RES1")
fi
fi
done < ${FILE}
createScoreboardHeader
for i in "${PLAYERS[@]}"
do
:
createScoreboard "$i" ${FILE}
done