Страница 1 из 1

Скрипт запуска игры

Добавлено: 2011-06-23 12:44:13
cubespace
Здравствуйте!

FreeBSD 8.0

Есть скрипт запуска игры "Counter Strike 1.6"
Он же еще используется для запуска игры "BF2"

Код: Выделить всё

#!/bin/sh
. /etc/rc.subr
export PATH=${PATH}:/usr/local/bin
name="cs1"
rcvar=`set_rcvar`
CS1_DIR=/usr/games/cs_1
cd $CS1_DIR
start_cmd="cs1_start"
restart_cmd="cs1_restart"
stop_cmd="cs1_stop"

[ -z "$cs1_enable" ] && cs1_enable="YES"

cs1_start ()
{
        checkyesno cs1_enable &&
        {
                echo "Starting cs1."
               /usr/local/bin/screen -d -m -A -S bf2 '/usr/games/cs_1/start_cs1.6.sh'
        }
}

cs1_restart ()
{
        checkyesno cs1_enable &&
        {
                echo "Restarting cs1."
                killall -9 cs1
                screen -d -m -S bf2 '/usr/games/cs_1/start_cs1.6.sh'
        }
}

cs1_stop ()
{
        checkyesno cs1_enable &&
        {
                echo "Stoping cs1."
                killall -9 cs1
        }
}

load_rc_config $name
run_rc_command "$1"



#cat start_cs1.6.sh

Код: Выделить всё

#!/bin/sh
cd /usr/games/cs_1/
./hlds_run -game cstrike -console -debug -insecure -nomaster +sv_lan 1 +maxplayers 32 +map de_dust -norestart +ip 0.0.0.0 -port 27038 +log on -notrap
Но запуск игры идет от пользователя "ROOT"
Что именно добавить что бы скрипт запускал игру от пользователя "USER1" ?

Re: Скрипт запуска игры

Добавлено: 2011-06-24 17:04:47
kpp
Где-то так:

Код: Выделить всё

( /usr/bin/su USER1; cd /usr/games/cs_1/;
./hlds_run -game cstrike -console -debug -insecure -nomaster +sv_lan 1 +maxplayers 32 +map de_dust -norestart +ip 0.0.0.0 -port 27038 +log on -notrap )&

Re: Скрипт запуска игры

Добавлено: 2011-06-25 1:52:41
cubespace
Что то не получается(((
или не так делаю((

Но не запускается от пользователя, запуск идет от root

sockstat -4

Код: Выделить всё

root     srcds_i686 1827  7  tcp4   *:27038 

Re: Скрипт запуска игры

Добавлено: 2011-06-25 23:06:53
kpp

Код: Выделить всё

su -c -m start_cs1.6.sh USER1

Re: Скрипт запуска игры

Добавлено: 2011-06-26 15:04:19
cubespace
незнаю правильно ли такой вариант ?

Но так стартовало )

Код: Выделить всё

/usr/bin/su -c -m USER1 '/usr/games/cs_1/start_cs1.6.sh'

Код: Выделить всё

USER1      hlds_i686      22488    5   udp4     *:27038               *:*
USER1      hlds_i686      22488    12  udp4     *:26900               *:*
USER1      hlds_i686      22487    5   udp4     *:27038               *:*
USER1      hlds_i686      22487    12  udp4     *:26900               *:*
USER1      hlds_i686      22486    5   udp4     *:27038               *:*
USER1      hlds_i686      22486    12  udp4     *:26900               *:*


Re: Скрипт запуска игры

Добавлено: 2011-08-03 20:16:24
EARL
У меня скрипт для запуска cs16 примерно такого вида

Код: Выделить всё

#!/bin/sh
#
# PROVIDE: cs16
# REQUIRE: DAEMON
#

. /etc/rc.subr

name="cs16"
rcvar=${name}_enable
pidfile="${name}.pid"
start_cmd=cs16_start
stop_cmd=cs16_stop
server_args="+ip 127.0.0.1 +maxplayers 11 +map de_dust2"

load_rc_config ${name}
eval ": \${${name}_enable:=\"NO\"}"

cs16_start()
{
    cd $(eval echo "\${${name}_chdir}")
    if [ -f $pidfile ]; then
        pid=`cat $pidfile`
        echo "$name already running? (pid=$pid)."
    else
        echo "Starting $name."
        su -l $(eval echo "\${${name}_user}") -c "cd $(eval echo \"\${${name}_chdir}\") && \
        export LD_LIBRARY_PATH=\".:$LD_LIBRARY_PATH\" && \
        /usr/local/bin/screen -A -m -d -S cs16 ./hlds_amd -game cstrike -pidfile $pidfile $server_args"
    fi
}

сs16_stop()
{
    cd $(eval echo "\${${name}_chdir}")
    if [ -f $pidfile ]; then
        echo "Stopping $name."
        pid=`cat $pidfile`
        kill -15 $pid
        rm $pidfile
    else
        echo "$name not running?"
    fi
}

run_rc_command $1

Дальше создаете пользователя, например cs16. В папку /home/cs16/server скачиваете сервер игры и тогда в rc.conf останется добавить такие строчки

Код: Выделить всё

cs16_enable="YES"
cs16_user="cs16"
cs16_chdir="/home/cs16/server"
Сервер будет стартовать от заданного пользователя.

PS Единственно стоит заметить, что я запускаю не hlds_run, а напрямую hlds_amd. Ну можете подредактировать rc скрипт для запуска нужной версии сервера в зависимости от вашего процессора.