Запуск в локальной сети сервера Wolfenstein: Enemy territory на Debian


2territory-180x180В предыдущей статье мы настраивали выделенный сервер игры Open Arena на Debian 7. Разовьем наше умение и запустим сервер Wolfenstein: Enemy Territory также для игры в локальной сети.

Немного об игре: Wolfenstein: Enemy Territory — бесплатный трехмерный online-мультиплеерный шутер от первого лица для Linux. Создан на основе игры Return to the Castle Wolfenstein. Действие игры происходит во время Второй мировой войны.

Изначально игру хотели сделать платной, как дополнение к Return to the Castle Wolfenstein, но так как в ней полностью отсутствует одиночный режим игры, то решено было сделать ее отдельной бесплатной игрой.

Играть можно как по сети, так и через интернет. В игре представлено несколько карт от разработчиков игры, которые являются копиями реальной местности. Дополнительные карты можно скачать в инетернете. Если вы подключаетесь к серверу, на котором используется карта, которой у вас нет, то она автоматически скачивается. Играть можно за одного из пяти типов персонажей. Причем, в течение игры вы повышаете уровень своего персонажа — «прокачка игрока».

Игры доступна для Linux, Windows и MacOS X.

Настраивать новый игровой сервер можно как на отдельной системе, так и на той же, где мы устанавливали Open Arena. Различаться эти варианты особо не будут — отличие только в используемом сервером игры номером порта для подключения клиентов. Рассмотрим вариант установки Wofenstein: Enemy Territory на имеющийся сервер с Debian.

Приступим.

Установка сервера

Создаем нового пользователя, от имени которого будет работать сервер игры (пусть это будет пользователь wet):

# adduser wet

Добавляем пользователя в группу sudo:

# usermod -a -G sudo wet

Заходим под нашим пользователем, качаем в домашний каталог пакет с игрой и распаковываем его (пакет можно взять на сайте http://www.splashdamage.com/wolfet):

$ wget http://filebase.trackbase.net/et/full/et260b.x86_full.zip
$ unzip et260b.x86_full.zip

В результате получаем в домашнем каталоге два файла: et260b.x86_keygen_V03.run  и текстовый файл от разработчиков с небольшим описанием. Если файл et260b.x86_keygen_V03.run не является исполняемым, делаем его таковым:

$ chmod +x et260b.x86_keygen_V03.run

Как пишут разработчики, этот пакет содержит в себе установщик клиента/сервера игры для Linux, etkey генератор, текущую версию клиента/сервера Punkbuster и патч ET 2.60b. Также, согласно руководству разработчиков, для установки пакета в системе должны быть установлены ntp, dialog, xterm, sudo. Ставим оные:

# aptitude install ntp dialog xterm sudo

Начинаем установку:

$ ./et260b.x86_keygen_V03.run

После проверки целостности пакета и наличия необходимых приложений будет выведено меню для создания etkey — выбираем «etkey not required», жмем OK.

Дальше будет предложено установить игру в /usr/local/games и инсталлятор запросит пароль root для доступа в этот каталог. Ставить будем в домашний каталог, поэтому здесь вместо ввода пароля администратора просто нажимаем ENTER. Будет предоставлена для ознакомления лицензия на использование игры (прокручиваем до конца пробелом), принимаем ее условия. Далее, если хотите, можете прочитать файл CHANGES и просматриваем руководство к игре. Наконец, нужно ввести путь для установки — вводим /home/wet/wolfenstein и путь для создания символьной ссылки на исполняемые файлы: вводим /home/wet. На предложение установить клиент/сервер Punkbuster отвечаем утвердительно. Читаем лицензионное соглашение на использование этой программы и соглашаемся.

Далее инсталлятор предложит создать меню запуска — отвечаем отрицательно. После отображения созданных параметров установки, принимаем их и начинается процесс копирования файлов в указанную директорию. После окончания установки инсталлятор предложит запустить игру — отказываемся.

Все, игра установлена — приступаем к конфигурированию сервера.

Осноной конфигурационный файл сервера server.cfg расположен в каталоге /home/wet/wolfenstein/etmain, его и будем редактировать (рекомендую сохранить оргинальную версию этого файла). Допустим, что запускать сервер будем на компьютере с IP-адресом сетевого интерфейса 192.168.0.182 и принимать входящие соединения от клиентов он будет на порту 27961 (по-умолчанию, сервер игры слушает порт 27960 — т.е. тот же самый, что и установленная нами Open Arena, таким образом, работать это не будет и для wolfenstein берем другой порт — 27961. При установке игры на отдельный сервер все, что касается номера порта, можно оставить по-умолчанию).

Настройка сервера

Скачать файлы конфигурации можно здесь.

server.cfg

set dedicated "1"                // 1: dedicated server for lan 2: dedicated server for internet
set net_ip "192.168.0.182"                // set to override the default IP ET uses
set net_port "27961"                // set to override the default port ET uses

// PASSWORDS & CLIENTS 

set sv_maxclients "20"                // number of players including private slots
set g_password ""                // set to password protect the server
set sv_privateclients "4"            // if set > 0, then this number of client slots will be reserved for connections
set sv_privatepassword ""            // that have "password" set to the value of "sv_privatePassword"
set rconpassword ""                 // remote console access password
set refereePassword ""                // referee status password

// DL, RATE

set sv_maxRate "10000"                // 10000 standard but poor for ET 
set sv_dl_maxRate "10000"            // increase/decerease if you have plenty/little spare bandwidth 
set sv_allowDownload "1"                    // global toggle for both legacy download and web download
set sv_wwwDownload "1"                // toggle to enable web download
set sv_wwwBaseURL "http://192.168.0.182/wet"                 // base URL for redirection
set sv_wwwDlDisconnected "0"            // tell clients to perform their downloads while disconnected from the server
set sv_wwwFallbackURL ""            // URL to send to if an http/ftp fails or is refused client side

// MOTD ETC

set sv_hostname "Your Wolfenstein Server"             // name of server here
set server_motd0 " ^NEnemy Territory ^7MOTD "    // message in right corner of join screen here
set server_motd1 ""
set server_motd2 ""
set server_motd3 ""
set server_motd4 ""
set server_motd5 ""

// MISC SETTINGS

set g_heavyWeaponRestriction "100"
set g_antilag "1"
set g_altStopwatchMode "0"
set g_autofireteams "1"
set g_complaintlimit "6"
set g_ipcomplaintlimit "3"
set g_fastres "0"
set g_friendlyFire "1"
//set g_gametype "4"                // Game type should be set from map rotation script
set g_minGameClients "8"
set g_maxlives "0"
set g_alliedmaxlives "0"
set g_axismaxlives "0"
set g_teamforcebalance "1"
set g_noTeamSwitching "0"
set g_voiceChatsAllowed "4"
set g_doWarmup "0"
set g_warmup "30"
set g_spectatorInactivity "0"
set sv_floodProtect "1"
set sv_allowDownload "1"
set sv_pure "1"
set sv_minping "0"
set sv_maxping "0"
set match_latejoin "1"
set match_minplayers "4"
set match_mutespecs "0"
set match_readypercent "100"
set match_timeoutcount "0"
set match_warmupDamage "1"
set team_maxplayers "0"
set team_nocontrols "1"
set pmove_fixed "0"
set pmove_msec "8"

// LMS ONLY SETTINGS

set g_lms_teamForceBalance "1"
set g_lms_roundlimit "3"
set g_lms_matchlimit "2"
set g_lms_currentMatch "0"
set g_lms_lockTeams "0"
set g_lms_followTeamOnly "1"

// VOTING

set g_allowVote "1"
set vote_limit "5"
set vote_percent "50"
set vote_allow_comp "1"
set vote_allow_gametype "1"
set vote_allow_kick "1"
set vote_allow_map "1"
set vote_allow_matchreset "1"
set vote_allow_mutespecs "1"
set vote_allow_nextmap "1"
set vote_allow_pub "1"
set vote_allow_referee "0"
set vote_allow_shuffleteams "1"
set vote_allow_swapteams "1"
set vote_allow_friendlyfire "1"
set vote_allow_timelimit "0"
set vote_allow_warmupdamage "1"
set vote_allow_antilag "1"
set vote_allow_balancedteams "1"
set vote_allow_muting "1"

// PUNKBUSTER

// sv_punkbuster is a readonly variable. Use +set sv_punkbuster on command line or use the command pb_sv_enable in the console
//pb_sv_enable

// LOGGING

set g_log "etserver.log"             // Game logging
set g_logsync 0
set logfile 0                     // Console logging ( 1: enable 2: enable and sync )

// MAP ROTATION

exec campaigncycle.cfg                // Campaign mode
//exec objectivecycle.cfg            // Objective mode
//exec lmscycle.cfg                // Last Man Standing mode

// WATCHDOG

// in case the game dies with an ERR_DROP
// or any situation leading to server running with no map
//set com_watchdog 10                // defaults 60
set com_watchdog_cmd "exec campaigncycle.cfg"    // defaults to quit

Организация запуска сервера

Запускать наш сервер будем так же демоном. Для этого ставим пакет daemon:

$sudo apt-get install daemon

С правами администратора создаем в каталоге /etc/init.d файл wet_ded следующего содержания:

файл wet_ded

#!/bin/sh
### BEGIN INIT INFO
# Provides:          wet_ded
# Required-Start:    $remote_fs
# Required-Stop:     $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript for an Wolfenstein ET server
# Description:       Starts a dedicated Wolfenstein ET server and allows 
# it to be started/stopped/restarted with init.d
### END INIT INFO

# Author: Poul Sander <openarena@poulander.com>
#
# Please remove the "Author" lines above and replace them
# with your own name if you copy and modify this script.

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Wolfenstein dedicated server"
NAME="wet_ded"

#The following line should be the server arguments:
SERVER_ARGS="+set net_ip "192.168.0.182" +set net_port "27961" +exec server.cfg"

# 1==LAN, 2==Internet
DEDICATED_ARG="+set dedicated 1"

DAEMON_ARGS="$DEDICATED_ARG $SERVER_ARGS"

# The executable to use:
DAEMON=/home/wet/etded

SCRIPTNAME=/etc/init.d/$NAME

#The game will be executed as this user. NEVER execute as root
USERNAME=wet

#USERNAME must have write access to the HOMEDIR
#Note that it is not enough to pass +set fs_homepath /path/to/ to a writeable location.
HOMEDIR=/home/$USERNAME

# Exit if the package is not installed
#[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{
    # Return
    #   0 if daemon has been started
    #   1 if daemon was already running
    #   2 if daemon could not be started
    daemon --name="$NAME" --user=$USERNAME --running && return 1 
    daemon --name="$NAME" --respawn --user=$USERNAME --output=/home/wet/wetded.out --env=HOME=$HOMEDIR  $DAEMON $DAEMON_ARGS > /dev/null
    # We do not check if it has been succesfully started as there are not other startup processed that can depend on OpenArena
}

#
# Function that stops the daemon/service
#
do_stop()
{
    # Return
    #   0 if daemon has been stopped
    #   1 if daemon was already stopped
    #   2 if daemon could not be stopped
    #   other if a failure occurred
    daemon --name=$NAME --user=$USERNAME --running ] || return 1
    daemon --name=$NAME --user=$USERNAME --stop
    # Wait for children to finish too if this is a daemon that forks
    # and if the daemon is only ever run from this initscript.
    # If the above conditions are not satisfied then add some other code
    # that waits for the process to drop all resources that could be
    # needed by services started subsequently.  A last resort is to
    # sleep for some time.
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
    #
    # If the daemon can reload its configuration without
    # restarting (for example, when it is sent a SIGHUP),
    # then implement that here.
    #
    return 0
}

case "$1" in
  start)
    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
    do_start
    case "$?" in
    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  stop)
    [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
    do_stop
    case "$?" in
    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  #reload|force-reload)
    #
    # If do_reload() is not implemented then leave this commented out
    # and leave 'force-reload' as an alias for 'restart'.
    #
    #log_daemon_msg "Reloading $DESC" "$NAME"
    #do_reload
    #log_end_msg $?
    #;;
  restart|force-reload)
    #
    # If the "reload" option is implemented then remove the
    # 'force-reload' alias
    #
    log_daemon_msg "Restarting $DESC" "$NAME"
    do_stop
    case "$?" in
      0|1)
    do_start
    case "$?" in
        0) log_end_msg 0 ;;
        1) log_end_msg 1 ;; # Old process is still running
        *) log_end_msg 1 ;; # Failed to start
    esac
    ;;
      *)
        # Failed to stop
    log_end_msg 1
    ;;
    esac
    ;;
  *)
    #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
    echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
    exit 3
    ;;
esac

Добавляем его в автозапуск:

$ sudo update-rc.d wet_ded defaults 19

Перегружаемся и проверяем старт нашего сервера:

wet@test:~$ ps aux|grep wet
 root      1760  0.0  0.1   9136   888 ?        Ss   14:22   0:00 sshd: wet [priv]
 wet       1766  0.0  0.1   9268   716 ?        S    14:22   0:00 sshd: wet@pts/0
 wet       1767  0.0  0.3   7004  1664 pts/0    Ss   14:22   0:00 -bash
 wet       5901  0.0  0.1   5392   548 ?        S    15:04   0:00 daemon --name=wet_ded --respawn --user=wet --output=/home/wet/wetded.out --env=HOME=/home/wet /home/wet/etded +set dedicated 1 +set net_ip 192.168.0.184 +set net_port 27961 +exec server.cfg
 wet       5903  1.9 14.5 145572 76180 ?        S    15:04   0:17 ./etded.x86 +set dedicated 1 +set net_ip 192.168.0.184 +set net_port 27961 +exec server.cfg
 wet       5931  0.0  0.6  10304  3352 pts/0    S+   15:04   0:00 mc
 wet       5933  0.0  0.4   6740  2340 pts/1    Ss   15:04   0:00 bash -rcfile .bashrc
 wet       6990  0.0  0.2   5912  1096 pts/1    R+   15:19   0:00 ps aux
 wet       6991  0.0  0.1   5140   780 pts/1    S+   15:19   0:00 grep wet

Если вывод команды похож на этот — значит сервер запустился.

Работающий демон ведет лог, который расположен в домашнем каталоге и называется wetded.out.

Подключаемся клиентом на IP-адрес сервера и удачной игры.

Полезности

Добавление новых карт

В стандартной комплектации игры идет ряд карт, которые со временем захочется расширить. Для этого нужно решить вопрос с получением добавленных карт клиентами. Это решается двумя способами: скачивание клиентом карты вручную и размещение ее в каталоге etmain  рабочей директории клиента и получение карты автоматически при присоединении к игре. Разумеется, второй способ является более предпочтительным его и будем реализовывать. Сам сервер игры отдает файлы очень медленно (около 20 KBps) поэтому нам нужно использовать альтернативный способ для обеспечения клиентов файлами карт и он есть — это web-сервер. Я использую Nginx с минимальными настройками. Итак, начнем:

1. Устанавливаем и настраиваем nginx:

$ sudo apt-get install nginx

После установки web-сервера приступаем к его настройке. Делаем лишь минимальную настройку  для возможности получения файлов по http протоколу. Конфигурационный файл web-сервера находится в каталоге /etc/nginx и называется, как ни странно, nginx.conf. Его мы трогать не будем. Нас интересует каталог /etc/nginx/sites-available и расположенный там файл default, который описывает настройки хоста по-умолчанию. Но, для начала создадим каталог, в котором будут храниться наши файлы для загрузки. Допустим, это будет каталог /home/www. Создаем его и приступаем к настройке виртуального хоста web-сервера с корневым каталогом в /home/www.  Делаем резервную копию файла  /etc/nginx/sites-available/default:

$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.origin

Копируем файл default в файл games (это будет конфиг нашего виртуального хостинга):

$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/games

и редактируем файл games. Изменить нужно только одно значение: root в секции server, указав путь к созданному нами каталогу  /home/www и добавить параметр «autoindex  on» в подсекции «location /»(для формирования списка файлов и каталогов, находящихся на web-сервере):

server {
    root /home/www;
      location / {
      autoindex on;
      }
 }

Осталось только активировать наш виртуальный хостинг (создать ссылку на наш конфиг games в каталоге /etc/nginx/sites-enabled) и дективировать хостинг default:

$ sudo ln -s /etc/nginx/sites-available/games /etc/nginx/sites-enabled/games
$ sudo rm /etc/nginx/sites-enabled/default

Создаем каталог /home/www/wet/etmain, копируем туда и в каталог /home/wet/wolfenstein/etmain карты (файлы в формате *.pk3) и перезапускаем nginx:

$ sudo service nginx restart

Заходим в браузере на наш web-сервер и, если видим список файлов и каталогов из /home/www, значит все в порядке.

2. Корректируем настройки сервера

Web-сервер установлен и функционирует, далее, нужно внести коррективы в конфиг сервера игры, указав ему, чтобы он перенаправлял клиентов для скачивания отсутствующих файлов на наш web-сервер. Изменяем приведенные ниже значения в файле /home/wet/wolfenstein/etmain/server.cfg следующим образом (в образце этого файла выше эти изменения уже сделаны):

set sv_allowDownload "1" // global toggle for both legacy download and web download
set sv_wwwDownload "1"  // toggle to enable web download
set sv_wwwBaseURL "http://192.168.0.182/wet" // base URL for redirection

3. Добавляем новую карту в конфигурационный файл ротации карт

Организована ротация карт в Wolfenstein ET следующим образом: в файле server.cfg в разделе «MAP ROTATION» устанавливается какой тип игры используется на сервере (Кампания (Campaign Mode), Игра на выполнение задачи (Objective Mode), Игра до последнего человека (Last Man Standing или LMS)) и указываются соответствующие им конфигурационные файлы (соответственно, campaigncycle.cfg, objectivecycle.cfg, lmscycle.cfg). Итак, путем комментирования/раскомментирования выбираем режим игры и добавляем в соответствующий конфиг в том же каталоге, где находится server.cfg,  новую карту. Для примера привожу файл objectivecycle.cfg, в который добавлена новая карта artic_gun:

set d1 "set g_gametype 2 ; map artic_gun ; set nextmap vstr d2"
set d2 "set g_gametype 2 ; map oasis ; set nextmap vstr d3"
set d3 "set g_gametype 2 ; map battery ; set nextmap vstr d4"
set d4 "set g_gametype 2 ; map goldrush ; set nextmap vstr d5"
set d5 "set g_gametype 2 ; map radar ; set nextmap vstr d6"
set d6 "set g_gametype 2 ; map railgun ; set nextmap vstr d7"
set d7 "set g_gametype 2 ; map fueldump ; set nextmap vstr d1"
vstr d1

Перезапускаем демон wet_ded:

$ sudo /etc/init.d/wet_ded restart

Таким образом, добавление дополнительных карт на игровой сервер заключается в копировании файлов в формате *.pk3 в каталог /home/www/wet/etmain (каталог web-сервера для скачивания клиентами) и в каталог /home/wet/wolfenstein/etmain (каталог с картами сервера игры), добавление новой карты в соответствующий конфигурационный файл ротации карт, а также перезапуске демона игрового сервера wet_ded.

Добавление ботов в сетевую игру

В моем случае, на сервере игры в локальной сети играет не слишком много игроков, поэтому было принято решение добавить ботов для усиления напряженности игры. Выбор остановился на Omnibotе.

1. Установка

Берем omnibotа (v. 0.71)  отсюда.

Распаковываем архив и заливаем архив Omni-Bot Linux ET 0.71 STABLE.zip, находящийся внутри, на наш сервер.

Распаковываем его в папку ~/wolfenstein. В результате, в этом каталоге должны появиться два новых каталога: omni-bot и omnibot.

Добавляем в файл server.cfg параметр, разрешающий запуск бота и указывающий путь к его рабочему каталогу:

//BOTS
set omnibot_enable "1"
set omnibot_path "/home/wet/wolfenstein/omni-bot"

Для получения клиентами архива с ботом создаем на нашем web-сервере новый каталог /home/www/wet/omnibot и копируем туда файл ~/wolfenstein/omnibot/omnibot_et.pk3.

Добавляем в файл демона /etc/init.d/wet_ded следующее:

было:

#The following line should be the server arguments:
SERVER_ARGS="+set net_ip "192.168.0.182" +set net_port "27961" +exec server.cfg"

стало:

#The following line should be the server arguments:
SERVER_ARGS="+set net_ip "192.168.0.182" +set net_port "27961" +set fs_game omnibot +set com_hunkmegs 64 +exec server.cfg"

2. Настройка ботов

Общая настройка ботов осуществляется путем редактирования файла ~/wolfenstein/omni-bot/et/user/omni-bot.cfg.

Добавлять ботов в игру можно несколькими способами:

1. Используя параметры MinBots и MaxBots в секции [ServerManager] файла ~/wolfenstein/omni-bot/et/user/omni-bot.cfg. Устанавливая значение MinBots меньше, чем  MaxBots, при запуске игры мы получим ботов в количестве, определенном значением MaxBots, и, при входе в игру каждого человека, соответствующее количество ботов будет выходить из игры пока их количество не будет равно значению MinBots. Если указать в обоих параметрах : -1, этот параметр обрабатываться не будет и в игре боты автоматически не появятся и можно добавить вручную или из конфига нужное количество;

2. Командой /bot addbot в консоли клиента.  Для управления сервером из клиентской консоли игры и установления каких-либо значений необходимо в файле /wolfenstein/etmain/server.cfg в параметре set rconpassword «you_password» установить пароль.  Запускаем клиент игры и открываем консоль (консоль открывается нажатием тильды ~). Здесь также можно установить значение минимального и максимального количества ботов в игре, переопределив значение, указанное в файле omni-bot.cfg.  например:

/rcon yourpassword bot maxbots 2
/rcon yourpassword bot minbots -1

Добавляем ботов:

/rcon yourpassword bot addbot 1 1 ^1RAMMSTEIN
/rcon yourpassword bot addbot 2 2 ^4METALLICA

Структура этой команды следующая: bot addbot  [1= Axis, 2 = Allies] [1 = soldier, 2 = medic, 3 = engineer,4 = field ops, 5 = covert ops] [^4 = blue = Allies, ^1 = red = Axis NameBot]. Итак, мы добавили два бота: солдата в команду немцев по имени RAMMSTEIN и медика в команду американцев по имени METALLICA.

Чтобы боты автоматически не добавлялись и была возможность четко контролировать их добавление вручную, рекомендую установить параметры MinBots и MaxBots в -1 а затем уже добавлять их из консоли.

3. С помощью конфигурационного файла omnibot.cfg. Этот способ удобен, когда нужно добавить некоторое количество ботов в разные команды с разными параметрами и, чтобы не вводить все это в консоли.

Создаем в каталоге ~/.etwolf/etmain файл omnibot.cfg следующего содержания:

//omnibot
bot maxbots 10
bot kickall
bot difficulty 4 //range is 0-5
bot addbot 1 1 ^1RAMMSTEIN //axis soldier
bot addbot 1 2 ^1MEGADETH //axis medic
bot addbot 1 3 ^1TOOL //axis engineer
bot addbot 1 4 ^1SLAYER //axis fops
bot addbot 1 5 ^1OZZY //axis covie
bot addbot 2 1 ^4FILTER //allied soldier
bot addbot 2 2 ^4METALLICA //allied medic
bot addbot 2 3 ^4PANTERA //allied engineer
bot addbot 2 4 ^4DISTURBED //allied fops
bot addbot 2 5 ^4GODSMACK //allied covie
set g_gravity 800 //default is 800
set g_speed 320 //default is 320

Структура этого файла такая же, как и команды addbot: bot addbot  [1= Axis, 2 = Allies] [1 = soldier, 2 = medic, 3 = engineer,4 = field ops, 5 = covert ops] [^4 = blue = Allies, ^1 = red = Axis NameBot]. В начале этого файла устанавливается максимальное количество ботов (10), удаляются все имеющиеся боты из игры (bot kickall) и устанавливается уровень ботов (bot difficulty 4).

Для того, чтобы загрузить этот конфигурационный файл заходим в консоль и вводим:

/rcon yourpassword exec omnibot.cfg

В файле ~/wolfenstein/omni-bot/et/user/omni-bot.cfg добавляем в секцию [ServerManager] параметр SleepBots  = 1. Этот параметр усыпляет ботов, если в игре нет ни одного небота.

После внесения изменений в конфигурационные файлы перезапускаем демон сервера:

$ sudo /etc/init.d/wet_ded restart

Если мы добавляем ботов в игру, то нам нужно и уметь их отттуда выгонять. Для того, чтобы выгнать бота из игры нам нужно знать идентификатор (id) этого бота. Чтобы его узнать, в консоли вводим:

/players

Будет выведен полный список игроков (как живых, так и ботов). Нас интересует крайний левый столбик — это и есть идентификатор игрока. Для того, чтобы выгнать бота, например, с  id 5, вводим в консоли:

/rcon yourpassword bot kickbot 5

Чтобы выгнать всех ботов из игры, вводим в консоли:

/rcon yourpassword bot kickall

Однако, если значение MinBots или MaxBots установлено в отличное от 0 или -1 значение, боты уйдут, но войдут в игру другие из списка по-умолчанию в количестве, установленном MinBots и MaxBots. Чтобы этого не происходило, устанавливаем значение MinBots и MaxBots в 0 или -1, например, так:

/rcon yourpassword bot minbots 0
/rcon yourpassword bot maxbots 0
/rcon yourpassword bot kickall

Материалы по теме:

Официальный сайт игры

Описание игры на русском языке

Дополнительные карты и еще много чего полезного

Advanced Wolfenstein: Enemy Territory Server Setup Guide (большое количество полезных материалов по серверной части игры в т.ч. по командам удаленного управления)

Advanced Wolfenstein: Enemy Territory Server Setup Guide

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s