Автозапуск Screen

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Автозапуск Screen

Сообщение Bizdelnick »

Возьмите из файла /etc/init.d/skeleton кусот от строки

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

### BEGIN INIT INFO
до

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

### END INIT INFO
включительно и скопируйте в свой файл. В строке

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

# Provides:          skeleton
исправьте имя сервиса на

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

# Provides:          q3s1
Short-Description и Description тоже неплохо бы поправить, но они ни на что не влияют.
После этого
Bizdelnick писал(а):
14.08.2015 15:36
update-rc.d q3s1 enable
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Bookkc
Сообщения: 245
ОС: Ubuntu, Gentoo, Debian

Re: Автозапуск Screen

Сообщение Bookkc »

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

#! /bin/sh
set -e
### BEGIN INIT INFO
# Provides:          q3s1
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.
### END INIT INFO
BASEPATH="/root/q3s"
BINARY="ioq3ded"
DAEMON="$BASEPATH/$BINARY"
OPTIONS="+set dedicated 2 +set fs_game excessiveplus +set com_hunkmegs 26 +set net_port 7777 +exec rail.cfg"
RUNAS="root:root"
PIDFILE="$BASEPATH/$BINARY.pid"

test -x $DAEMON || exit 0

export HOME=$BASEPATH

case "$1" in
  start)
        echo -n "Starting Q3A"
        cd $BASEPATH
        start-stop-daemon --start --quiet -c $RUNAS --pidfile $PIDFILE \
                -N -10 -m -b -d $BASEPATH --exec $DAEMON -- $OPTIONS
        echo "."
        ;;
  stop)
        echo -n "Stopping Q3A"
        start-stop-daemon --stop --quiet --pidfile $PIDFILE \
                --exec $DAEMON
        echo "."
        ;;
  restart|force-reload)
        $0 stop
        sleep 3
        $0 start
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0



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

root@debian:~# update-rc.d q3s1 enable
update-rc.d: using dependency based boot sequencing
update-rc.d: error: no runlevel symlinks to modify, aborting!
root@debian:~#


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

root@debian:~# reboot

Broadcast message from root@debian (pts/2) (Fri Aug 14 16:19:30 2015):

The system is going down for reboot NOW!
root@debian:~#


Сервер по прежнему не стартует
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Автозапуск Screen

Сообщение Bizdelnick »

А update-rc.d q3s1 defaults тоже ругаться будет?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Автозапуск Screen

Сообщение Bizdelnick »

Да, кстати. ls -l /etc/init.d/q3s1 покажите.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Goodvin
Ведущий рубрики
Сообщения: 4333
Статус: ⚝⚠⚒⚑⚖☭☞☣☤&

Re: Автозапуск Screen

Сообщение Goodvin »

Bookkc писал(а):
14.08.2015 15:27
И так... сделал по этому мануалу http://notes.splitbrain.org/q3aserver

Нет, Вы сделали не по мануалу, а опять какую-то бессмысленную самодеятельность.

По Вашей ссылке в init-скрипте написано:

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

#! /bin/sh
set -e

BASEPATH="/opt/games/quake3"


А Вы его куда засунули?
И главное - зачем?

Bookkc писал(а):
14.08.2015 15:27

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

#! /bin/sh
set -e

BASEPATH="/root/q3s"
BINARY="ioq3ded"

Вы, напрмиер, уверены, что из каталога /root и его недр разрешено что-то запускать?

Разгребать Ваши остальные "изобретения" желания как-то совсем нет.
Берётесь делать по чужому мануалу, не понимая как и почмеу оно так сделано и как работает, - так делайте по мануалу.
Запустите, убедитесь в работоспособности, разберитесь почему оно так устроено и как работает.
А только потом начинайте что-то "изобретать".
Спасибо сказали:
Аватара пользователя
Goodvin
Ведущий рубрики
Сообщения: 4333
Статус: ⚝⚠⚒⚑⚖☭☞☣☤&

Re: Автозапуск Screen

Сообщение Goodvin »

Bookkc писал(а):
14.08.2015 15:44

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

root@debian:~/q3s# update-rc.d q3s1 enable
update-rc.d: using dependency based boot sequencing
update-rc.d: error: q3s1 Default-Start contains no runlevels, aborting.
root@debian:~/q3s#


Вот такое

Обоже. я же новичок, зачем вы меня грузите какими то заголовками и скелетонами. просто скажите где и что исправить? :laugh: :wacko:


Вы уже пробовали взять штатный пакет и init-скрипты для Debian вот отсюда?
https://packages.debian.org/search?suite=de...ds=quake-server
Читаем README.Debian

Quake III Arena dedicated server for Debian
===========================================

Running the server via the init script
--------------------------------------

The quake3-server init script runs a dedicated server as the user
"Debian-quake3". This is a simple setup suitable for running one server
on a machine; by default it will cycle through the standard
Quake III Arena deathmatch maps.

The Debian-quake3 user's home directory is /var/games/quake3-server, so you
can find Quake III files in the /var/games/quake3-server/.q3a directory.

By default, the init script will use
/usr/share/games/quake3/baseq3/debian_server.cfg, which is a symlink to
/etc/quake3-server/server.cfg. You can edit this file, or put an alternative
configuration in /var/games/quake3-server/.q3a/baseq3 and change
/etc/default/quake3-server to exec that.

Disabling the init script
-------------------------

To disable the init script, use the facilities provided by your init system.
For instance, under sysvinit, use

update-rc.d quake3-server disable

or under systemd, use

ln -s /dev/null /etc/systemd/system/quake3-server.service

Changing the value of the START_DAEMON variable in
/etc/default/quake3-server is deprecated. Please leave it set to
"unless-disabled-by-upgrade".
Спасибо сказали:
Аватара пользователя
Goodvin
Ведущий рубрики
Сообщения: 4333
Статус: ⚝⚠⚒⚑⚖☭☞☣☤&

Re: Автозапуск Screen

Сообщение Goodvin »

А вот и ссылка на содержимое родного init-скрипта из Debian.
http://www.filewatcher.com/p/quake3-server...ke3-server.html

Учитесь пользоваться поиском и читать документацию от того, что берёте в руки.
Спасибо сказали:
Bookkc
Сообщения: 245
ОС: Ubuntu, Gentoo, Debian

Re: Автозапуск Screen

Сообщение Bookkc »

я директории root всё прекрасно запускается. на всё стоят права 777

Пробовал это, стоит старый дебиан 6 ещё... собирал сервер из сорцов в ручную.

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

root@debian:~# update-rc.d q3s1 defaults
update-rc.d: using dependency based boot sequencing
insserv: warning: script 'S97DbSecuritySpt' missing LSB tags and overrides
insserv: warning: script 'S99selinux' missing LSB tags and overrides
insserv: warning: script 'selinux' missing LSB tags and overrides
insserv: There is a loop between service DbSecuritySpt and mountnfs if started
insserv:  loop involving service mountnfs at depth 10
insserv:  loop involving service nfs-common at depth 9
insserv:  loop involving service anacron at depth 11
insserv:  loop involving service mountnfs-bootclean at depth 12
insserv:  loop involving service alsa-utils at depth 14
insserv: There is a loop between service DbSecuritySpt and mountall-bootclean if started
insserv:  loop involving service mountall-bootclean at depth 9
insserv:  loop involving service mountall at depth 8
insserv: There is a loop between service single and mtab if started
insserv:  loop involving service mtab at depth 6
insserv:  loop involving service checkroot at depth 5
insserv: There is a loop between service single and bootlogd if started
insserv:  loop involving service bootlogd at depth 3
insserv:  loop involving service mountdevsubfs at depth 2
insserv: There is a loop at service DbSecuritySpt if started
insserv: There is a loop at service single if started
insserv:  loop involving service DbSecuritySpt at depth 2
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: There is a loop between service selinux and single if started
insserv:  loop involving service single at depth 3
insserv:  loop involving service selinux at depth 2
insserv:  loop involving service rsyslog at depth 1
insserv:  loop involving service mountoverflowtmp at depth 11
insserv:  loop involving service checkfs at depth 8
insserv:  loop involving service hostname at depth 5
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting DbSecuritySpt depends on single and therefore on system facility `$all' which can not be true!
insserv: Starting selinux depends on single and therefore on system facility `$all' which can not be true!
insserv: Max recursions depth 99 reached
insserv:  loop involving service bootlogs at depth 1
insserv:  loop involving service keymap at depth 5
insserv: There is a loop between service DbSecuritySpt and mountoverflowtmp if started
insserv: exiting now without changing boot order!
update-rc.d: error: insserv rejected the script header
root@debian:~#



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

root@debian:~# ls -l /etc/init.d/q3s1
-rwxrwxrwx 1 root root 1253 Авг 14 12:22 /etc/init.d/q3s1
root@debian:~#
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Автозапуск Screen

Сообщение Bizdelnick »

Bookkc писал(а):
14.08.2015 22:47
на всё стоят права 777

Зря.

Bookkc писал(а):
14.08.2015 22:47
insserv: loop involving service

Признавайтесь, что ещё химичили с инитскриптами.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Bookkc
Сообщения: 245
ОС: Ubuntu, Gentoo, Debian

Re: Автозапуск Screen

Сообщение Bookkc »

Всё что химичил, тут в теме.

Почему зря ?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Автозапуск Screen

Сообщение Bizdelnick »

Зря, потому что разрешения должны стоять минимально необходимые для работы. Разрешать всем подряд запись вообще никогда не требуется.
Однако Goodvin напомнил интересную вещь: в Debian уже есть пакет quake3-server. Почему Вы не хотите использовать его, он ведь заведомо рабочий?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Bookkc
Сообщения: 245
ОС: Ubuntu, Gentoo, Debian

Re: Автозапуск Screen

Сообщение Bookkc »

Я ж написал. Стоит дебиан 6, изначально хотел подключить репо и выкачать его через apt-get но не получилось это сделать. пришлось собирать из сорцов.

Во время скачивания пакета выдавало какую-то ошибку( не помню какую, было давно)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Автозапуск Screen

Сообщение Bizdelnick »

Bookkc писал(а):
15.08.2015 21:49
Во время скачивания пакета выдавало какую-то ошибку( не помню какую, было давно)

Зашибись. Выдавало ошибку, на исправление которой ушло бы несколько минут, но Вы вместо этого уже две недели пытаетесь (и не можете) сделать всё через задницу... И зачем было создавать тему про какой-то screen, а не про проблему с установкой пакета?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Bookkc
Сообщения: 245
ОС: Ubuntu, Gentoo, Debian

Re: Автозапуск Screen

Сообщение Bookkc »

Почему такая уверенность что ушло бы минуты? и да, у меня проблема не с сервером кваки3, а с автозапуском скрина вот я и создал тему. Если бы я хотел сделать по другому - сделал бы в итоге запустить скрин не удалось. Мне удобней через скрин всё смотреть, а не через задницу как предлагаете Вы

И да, меня интересовал именно в ручную собранный сервер так что это был не вариант.
Спасибо сказали:
Аватара пользователя
Goodvin
Ведущий рубрики
Сообщения: 4333
Статус: ⚝⚠⚒⚑⚖☭☞☣☤&

Re: Автозапуск Screen

Сообщение Goodvin »

Bookkc писал(а):
15.08.2015 10:00
Всё что химичил, тут в теме.
Да-да, там чуть выше пример, как Вы "делали по мануалу".

Через пару страниц выяснится, что там ещё половина системы "собрана из сырцов", потому что автору хочется стоя и в гамаке.
Спасибо сказали:
Аватара пользователя
Goodvin
Ведущий рубрики
Сообщения: 4333
Статус: ⚝⚠⚒⚑⚖☭☞☣☤&

Re: Автозапуск Screen

Сообщение Goodvin »

Bookkc писал(а):
16.08.2015 12:31
Почему такая уверенность что ушло бы минуты? и да, у меня проблема не с сервером кваки3, а с автозапуском скрина вот я и создал тему. Если бы я хотел сделать по другому - сделал бы в итоге запустить скрин не удалось. Мне удобней через скрин всё смотреть, а не через задницу как предлагаете Вы

И да, меня интересовал именно в ручную собранный сервер так что это был не вариант.

А pak0.pk3 тоже из сырцов пересобрали? :))
А то вот пишут, что без него квака не работает.

Поведайте нам, в чём же была такая важная причина не использовать то, что собрали специально обученные люди, квалификация которых заведомо Вашу превосходит?

Вы же тут немного выше писали, что новичок и мало в чём разбираетесь.
Что же такого Вы там сделали, что Вам требуется именно собранный Вами вручную сервер?
Спасибо сказали:
Bookkc
Сообщения: 245
ОС: Ubuntu, Gentoo, Debian

Re: Автозапуск Screen

Сообщение Bookkc »

pak0.pk3 не собирал, а перебирал (карты добавлял, убирал не нужный хлам). Без него не работает квака.

В коде менял кое что для мода Instagib, в частности что бы боты могли бегать, а не стоять на месте. Особенность мода такая, в обычном режиме боты бегают при виде предметов (по предметам) а в этом моде их нет, по этому они стоят. В итоге нашел мануал как сделать что бы предметы были невидимы (аптечки) вот боты и бегают теперь по пустой карте. Ссылку на мануал дать не могу т.к. нет сейчас её при себе. Суть в том, что поменять там пару фрагментов кода и всё, ничего глобального.
Спасибо сказали:
Bookkc
Сообщения: 245
ОС: Ubuntu, Gentoo, Debian

Re: Автозапуск Screen

Сообщение Bookkc »

Спустя несколько лет я вернулся к этой теме и мне всё таки самому удалось это сделать. В инете вопросов "как закинуть скрин в автозагрузку" очень много а вариантов решения по факту нету. Многим удобный скрины как и мне. и вот собственно я сам нашел решение... Да сейчас гуру линукса придут в ветку для новичков и начнут поливать какашками меня типа "так делать нельзяяяяя" или "следующая тема будет что слетела ось" и т д. Да это возможно дикие костыли, да может реально и не правильно это, но это работает у меня и я рад. меня устраивает...

Закидываем в rc.local это

Shell

su -c 'screen -d -m -S realm ./home/wow/release/bin/realm.sh' wow
В моём случаи запускается файл realm.sh из под юзера wow

Сам файл такого вида:

Shell

#!/bin/sh
while true
do
/home/wow/release/bin/drealm
echo "If you want to completely stop the server process now, press Ctrl+C before
the time is up!"
echo "Rebooting in:"
for i in 5 4 3 2 1
do
echo "$i..."
sleep 1
done
echo "Rebooting now!"
done
Собственно что получаем, бинарник запускается при запуске системы, если вдруг крашится бинарник мой то он автоматически перезапускается.

Может кому пригодится(да я уверен кому то пригодится). Спасибо всем. :yes3:
Спасибо сказали:
Ответить