Download Game! Currently 125 players and visitors. Last logged in:ValkristMalcomRammonRitari

Blitzer's Blog >> 71626

Back to blogs index
Posted: 04 Aug 2026 01:31 [ permalink ]
#!/bin/bash
# x-console-auto: Timestamp-based execution engine

SCRIPT_FILE="$1"
if [ -z "$SCRIPT_FILE" ] || [ ! -f "$SCRIPT_FILE" ]; then
    echo "KC$yttC6: x-console-auto <skripti.xc>"
    exit 1
fi

# Otetaan nanosekuntitason baseline
START_TIME=$(date +%s.%N)
echo "[*] x-console-auto kC$ynnistyy. Baseline TS: 0.0s"

# EristetC$C$n kaikki yksilC6lliset sessiot kC$sikirjoituksesta (toinen
sarake)
SESSIONS=$(awk '!/^#/ && NF>2 {print $2}' "$SCRIPT_FILE" | sort -u)

for SESS in $SESSIONS; do
    (
        # Luetaan ja suoritetaan vain TCMCN session komennot aikajC$rjestyksess
C$
        grep -E "^[[:space:]]*\+[0-9]" "$SCRIPT_FILE" | awk -v s="$SESS" '$2
== s {print $0}' | while read -r line; do
            
            # Parsitaan rivi
            TS=$(echo "$line" | awk '{print $1}' | tr -d '+s')
            ACTION=$(echo "$line" | awk '{print $3}')
            # Loppuosa on argumentteja (evaluoidaan, jotta lainausmerkit
sC$ilyvC$t send-komennossa)
            ARGS=$(echo "$line" | cut -d' ' -f4-)

            # Lasketaan kuinka kauan pitC$C$ odottaa
            NOW=$(date +%s.%N)
            TARGET=$(awk "BEGIN {print $START_TIME + $TS}")
            DELAY=$(awk "BEGIN { d = $TARGET - $NOW; print (d > 0) ? d : 0 }")

            # Nukkuminen (blokkaa vain tC$mC$n session sC$iettC$)
            if (( $(awk "BEGIN {print ($DELAY > 0)}") )); then
                sleep "$DELAY"
            fi

            # Suoritetaan x-console komento
            echo -e "\033[36m[+${TS}s]\033[0m [\033[32m${SESS}\033[0m]
x-console $SESS $ACTION $ARGS"
            eval "x-console $SESS $ACTION $ARGS"
            
            # Huom: Jos ACTION on "wait-for", eval-komento blokkaa *tC$tC$*
sC$iettC$
            # kunnes teksti lC6ytyy. Seuraava aikaleima tC$lle sessiolle
lasketaan 
            # vasta wait-forin pC$C$tyttyC$, pitC$en tapahtumat synkassa.
            
        done
    ) &
done

# Odotetaan, ettC$ kaikkien sessioiden sC$ikeet ovat valmiita
wait
echo "[*] Kaikki kC$sikirjoituksen sC$ikeet suoritettu."