OpenArena: cron script to announce gaming event

This commit is contained in:
Sergii Pylypenko
2013-02-27 16:46:33 +02:00
parent 0ce3784210
commit 0211bc04ff
3 changed files with 65 additions and 2 deletions

View File

@@ -0,0 +1,63 @@
#!/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 now`
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