64 lines
1.3 KiB
Bash
Executable File
64 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Date format is free-form
|
|
DATE="This Friday 9PM +EST"
|
|
# Event message
|
|
MESSAGE="^2Friday ^1Frag ^2Evening ^7on ^3CyberXZT server\n^6"
|
|
# Message when no event is happening
|
|
NO_EVENT_MESSAGE="To change map, press ^3Back ^7-> ^3Vote"
|
|
# How long event will happen, in hours
|
|
DURATION=2
|
|
# When to start announcing event, in days
|
|
ANNOUNCE_START=3
|
|
|
|
OUT="$1"
|
|
if [ -z "$OUT" ]; then
|
|
OUT=motd.cfg
|
|
fi
|
|
|
|
S1=`date +%s -d "$DATE"`
|
|
S2=`date +%s -d "-20 seconds"`
|
|
SECONDS=`expr $S1 - $S2`
|
|
MINUTES=`expr $SECONDS / 60`
|
|
HOURS=`expr $MINUTES / 60`
|
|
DAYS=`expr $HOURS / 24`
|
|
MINUTES=`expr $MINUTES % 60`
|
|
HOURS=`expr $HOURS % 24`
|
|
|
|
TXT=""
|
|
if [ $SECONDS -lt 0 ]; then
|
|
if [ $SECONDS -gt `expr -$DURATION '*' 3600` ]; then
|
|
TXT="come join right now!"
|
|
fi
|
|
else
|
|
if [ "$MINUTES" '!=' 0 ]; then
|
|
TXT="$MINUTES minutes"
|
|
fi
|
|
if [ "$HOURS" '!=' 0 ]; then
|
|
if [ "$HOURS" '=' 1 ]; then
|
|
TXT="$HOURS hour $TXT"
|
|
else
|
|
TXT="$HOURS hours $TXT"
|
|
fi
|
|
fi
|
|
if [ "$DAYS" '!=' 0 ]; then
|
|
if [ "$DAYS" '=' 1 ]; then
|
|
TXT="tomorrow $TXT"
|
|
else
|
|
TXT="in $DAYS days $TXT"
|
|
fi
|
|
else
|
|
TXT="in $TXT"
|
|
fi
|
|
fi
|
|
|
|
if [ $SECONDS -gt `expr $ANNOUNCE_START '*' 3600 '*' 24` ]; then
|
|
TXT="" # Do not announce event if it's too far in the future
|
|
fi
|
|
|
|
if [ -n "$TXT" ]; then
|
|
echo "$MESSAGE$TXT" > "$OUT"
|
|
else
|
|
echo "$NO_EVENT_MESSAGE" > "$OUT"
|
|
fi
|