From d0265ebfe8afb67b24d6f99c119bf6c52d2ba020 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Thu, 15 Jun 2017 08:51:13 +1000 Subject: [PATCH] Fix warning waits for intervals of 1 or 2 minutes --- tools/arkmanager | 73 ++++++++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index 26c6511..19862d1 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -1524,42 +1524,47 @@ doWarn(){ local warnintervals=( 90 60 45 30 20 15 10 5 4 3 2 ) - for warninterval in "${warnintervals[@]}"; do - if [ "`getServerPID`" != "$pid" ]; then - echo "Server has stopped. Aborting $1" - rm -f "${arkserverroot}/${arkwarnlockfile}" - return 1 - fi - if (( warnminutes >= warninterval )); then - sleep 1m & - sleeppid=$! - printWarnMessage "$1" "$2" "minutes" "$warnminutes" - for (( min = warnminutes; min >= warninterval; min-- )); do - numplayers=$(numPlayersConnected) - echo "There are ${numplayers} players connected" - if [[ "numplayers" == "-1" ]]; then - echo "Server is not running. Shutting down immediately" - return 0 - elif (( (numplayers + 0) == 0 )); then - doBroadcastWithEcho "Nobody is connected. Shutting down immediately" - rm -f "${arkserverroot}/${arkwarnlockfile}" - return 0 - fi - if isUpdateCancelRequested; then - doBroadcastWithEcho "Restart cancelled by player request" - return 1 - fi - wait $sleeppid - if (( $min > $warninterval )); then - sleep 1m & - sleeppid=$! - fi - done - warnminutes=$(( warninterval - 1 )) - fi - done + if (( warnminutes > 2 )); then + for warninterval in "${warnintervals[@]}"; do + if [ "`getServerPID`" != "$pid" ]; then + echo "Server has stopped. Aborting $1" + rm -f "${arkserverroot}/${arkwarnlockfile}" + return 1 + fi + if (( warnminutes >= warninterval )); then + sleep 1m & + sleeppid=$! + printWarnMessage "$1" "$2" "minutes" "$warnminutes" + for (( min = warnminutes; min >= warninterval; min-- )); do + numplayers=$(numPlayersConnected) + echo "There are ${numplayers} players connected" + if [[ "numplayers" == "-1" ]]; then + echo "Server is not running. Shutting down immediately" + return 0 + elif (( (numplayers + 0) == 0 )); then + doBroadcastWithEcho "Nobody is connected. Shutting down immediately" + rm -f "${arkserverroot}/${arkwarnlockfile}" + return 0 + fi + if isUpdateCancelRequested; then + doBroadcastWithEcho "Restart cancelled by player request" + return 1 + fi + wait $sleeppid + if (( $min > $warninterval )); then + sleep 1m & + sleeppid=$! + fi + done + warnminutes=$(( warninterval - 1 )) + fi + done + fi local warnseconds=120 + if (( warnminutes == 1 )); then + warnseconds = 60 + fi warnintervals=( 90 60 45 30 20 15 10 5 0 ) for warninterval in "${warnintervals[@]}"; do sleep $(( warnseconds - warninterval ))s &