#!/bin/sh

# ------------------------ Настройки --------------------------------
CPUSET="0"                    # Ядро, на котором будет запущен сервер
BASEDIR="/home/ds/hl"         # Корневая директория сервера
GAME="cstrike"                # Мод сервера
IP=""                         # IP адрес сервера
PORT="27015"                  # Порт сервера
MAXPLAYERS="32"               # Количество слотов для игроков
MAP="de_dust2"                # Стартовая карта
TICRATE="1100"                # sys_ticrate
PINGBOOST="4"                 # pingboost
PIDFILE="hlds.pid"            # Название файла с ID процесса
LOGFILE="hlds.log"            # Название файла логов
# -------------------------------------------------------------------

cd "$BASEDIR" || { echo "Ошибка: не удалось перейти в $BASEDIR"; exit 1; }

PIDS=$(ps ax | grep hlds | grep "$PORT" | grep -v grep | awk '{print $1}')

if [ -n "$PIDS" ]; then
  echo "Сервер найден (PID: $PIDS). Выключаю..."
  echo "$PIDS" | xargs -r kill -9
  rm -f "$PIDFILE"
  echo "Сервер успешно выключен."
  exit 0
else
  echo "Сервер не запущен. Запускаю..."
  taskset -c "$CPUSET" ./hlds_run \
    -game "$GAME" \
    +ip "$IP" +port "$PORT" +maxplayers "$MAXPLAYERS" +map "$MAP" \
    +sys_ticrate "$TICRATE" -pingboost "$PINGBOOST" \
    -pidfile "$PIDFILE" > "$LOGFILE" 2>&1 &
  sleep 1
  NEWPIDS=$(ps ax | grep hlds | grep "$PORT" | grep -v grep | awk '{print $1}')
  if [ -n "$NEWPIDS" ]; then
    echo "Сервер успешно включен (PID: $NEWPIDS)."
    exit 0
  else
    echo "Ошибка: не удалось запустить сервер. Проверьте $BASEDIR/$LOGFILE"
    exit 1
  fi
fi
