Как всегда записывать демо

15 августа 2018 г, 00:31
Мастер Дела

Пользователь

Рейтинг: 95

Сообщений: 15

Спасибок: 16

Добрый день.
Наверно, вам приходилось периодически сталкиваться с нарушениями от випов/админов в ваш адрес, а если вы являетесь випом/админом и достаточно везучие, то даже подстав в виде вырезания фрагмента длиной в одну минуту, выгодному подставляющей стороне. Именно в такой момент времени хочется записать демо, да только демка не записывалась, а момент упущен.


Постановка задачи (чего в итоге нужно добиться):

1) Запись демок должна осуществляться нажатием одной и той же кнопки, при этом старые демки не должны перезаписываться.
2) Использование сторонних программ при записи демо запрещено - только стим-кс и ее возможности.

Для начала попробуем понять, какие возможности нам предоставляет стим-кс. Очевидно (по крайней мере мне :) ), что для реализации подобного механизма стим-кс должна обладать хотя бы одной из следующих возможностей:

1) Возможность присваивать значения переменным и использовать их в будущем - к сожалению единственной найденной мной возможностью что-либо присвоить в стим-кс оказалась команда setinfo, однако нет действующего способа внутри консоли стим-кс прочитать значение переменной и тем более использовать данное значение в качестве аргумента консольной команды
2) Возможность прочитать текущую системную дату и время и использовать в качестве аргумента команды - тут нас тоже ждет облом, т.к. такой возможности также нет

We need to go deeper.

На этом печальном моменте меня посетила мысль - а что, если забиндить такую команду на кнопку, в тексте которой при при выполнении на данную кнопку будет биндится другая команда?
Очевидно, что если мы будем составлять такую бинд-команду, то даже для двух последовательно-записываемых демок она будет достаточно длинная, в виде:

bind KP_END "stop; record num1.dem; bind KP_END "stop; record num2.dem;";"

В такой команде сразу бросаются кавычки в кавычках, и внутренний голос подсказывает "такая бинд-команда в кс не применится".

Однако, следует вспомнить, что в кс существует команда exec <имя .cfg файла> - данная команда выполняет в реальном времени в кс команды, прописанные в указанном файле.

Прототип решения.

Можно попробовать создать бинд-команду, которая будет содержать в себе команду exec конфига, в котором будет бинд другой команды. Ну так попробуем :)

Создадим файл num1.cfg со следующим содержимым:

bind "KP_END" "stop; record num1.dem; exec num2.cfg;"

После выполнения команды exec num1.cfg можно будет использовать данный бинд.
По нажатию кнопки 1 на num-lock панели будут выполнены следующие команды:

stop - останавливает запись демо, если в данный момент демо записывается.
record num1.dem - начинает запись демо в файл num1.dem.
exec num2.cfg - выполняет команды, находящиеся в файле num2.cfg. СТОП - нужно еще создать этот файл num2.cfg :). Его содержимое из одной строки будет таким:

bind "KP_END" "stop; record num2.dem; exec num3.cfg;"

т.е при нажатии кнопки 1 на num-lock также будет выполнен пере-бинд кнопки 1 на num-lock, чтобы она теперь выполняла такие команды:

stop - останавливает запись демо, если в данный момент демо записывается.
record num2.dem - начинает запись демо в файл num2.dem.
exec num3.cfg - выполняет команды, находящиеся в файле num3.cfg. Файл num3.cfg также нужно будет создать по аналогии - запись в num3.dem и выполнение num4.cfg, и т.д.

Таким образом, насоздавав предварительно .cfg файлов num*.cfg, можно обеспечить себя тем самым "интерфейсом одной кнопки для записи демо", как я и хотел в постановке задачи. Осталось только насоздавать .cfg файлов. Но прежде - улучшение команды.

Для того, чтобы в демо в удобном виде записалось время съемки этого демо, можно прописать команду thetime в чате кс. Это тоже можно автоматизировать :)
Таким образом содержимое файла num1.cfg станет следующим:

bind "KP_END" "stop; record num1.dem; say thetime; exec num2.cfg;"

Генерация файлов.

Создавать сотни таких cfg файлов вручную явно не очень удачная затея. Поэтому для автоматического создания необходимых файлов напишем generator.bat файл:

@echo off
@setlocal enabledelayedexpansion
@for /l %%x in (1, 1, 500) do (
@set /a "y=%%x+1"
@echo bind "KP_END" "stop; record num%%x.dem; say thetime; exec num!y!.cfg;">num%%x.cfg
)
pause

Данный .bat файл при выполнении сгенерирует 500 .cfg файлов по требуемому шаблону. Будет осуществляться бинд кнопки KP_END - кнопки 1 на num-lock панели. При необходимости число генерируемых файлов и саму кнопку можно поменять для вашего удобства.

Осталось только зайти в кс и набрать exec num1.cfg для начала эксплуатации "демо-машины".

Решение:

Для удобства записи демо я сгенерировал .cfg файлы, которые помогут автоматизировать процесс записи демо. Почему так и как что-то (например, кнопку для бинда) исправить под себя - читайте в спойлере выше.

Что будет работать:

 

появится возможность по нажатию кнопки 1 на num-lock панели автоматически начинать запись демо, при этом с каждым новым нажатием кнопки будет создаваться новый файл с демо, а не затираться существующий.

Как это использовать:

нажимайте кнопку 1 на на num-lock панели каждый раз, когда начинаете играть, а также после каждой смены карты. При выходе из игры запись демо заканчивается автоматически.

Как все настроить:
1) загружаете архив с https://drive.google...jUXr33M5IUfIBzi
2) распаковываете все содержимое архива целиком в папку cstrike вашей кс
3) запускаете кс и вводите в консоли:

exec num1.cfg

Готово!

В последствии в процессе использования вы увидите ваши демки в папке cstrike:

 
Спойлер
Поскольку кс сохраняет текущее состояние bind команд при корректном завершении (выход через меню), то в случае если ваша кс вылетит, вы можете потерять те демки, которые записывали в последний раз. Однако у меня стим-кс не вылетает и мне норм :)
Отредактировал: Мастер Дела, 15 августа 2018 г, 01:44

Хоть как соблюдай все правила,все равно будешь забанен


thesamememeever

Пользователь

Рейтинг: 242

Сообщений: 27

Спасибок: 43

Прекрасно.

почему тема не популярна?


воскресе

Спасибо сказали: Мастер Дела
ыыыыыыыыыыыыыы

banned

Рейтинг: 1240

Сообщений: 182

Спасибок: 210

Хорошая работа, нужная вещь получилась, спасибо

 

Отредактировал: ыыыыыыыыыыыыыы, 17 августа 2018 г, 14:36

ыыыыыыыыыыыы

Спасибо сказали: Мастер Дела
Stella Artois

Почётный хуй ONEKILL

Рейтинг: 6251

Сообщений: 396

Спасибок: 1167

ты умница32.png

Спасибо сказали: Мастер Дела
Мастер Дела

Пользователь

Рейтинг: 95

Сообщений: 15

Спасибок: 16

PRIMA VICTORIA писал:

Прекрасно.

почему тема не популярна?

Сам раздел не популярен (


Хоть как соблюдай все правила,все равно будешь забанен

thesamememeever

Пользователь

Рейтинг: 242

Сообщений: 27

Спасибок: 43

Мастер Дела писал:
PRIMA VICTORIA писал:

Прекрасно.

почему тема не популярна?

Сам раздел не популярен (

ну всё, флудим в чат чтобы увидели


воскресе

HVRDPWR

Почётный хуй ONEKILL

Рейтинг: 2257

Сообщений: 274

Спасибок: 396

Чиста на копи пасте сработал

Спасибо сказали: o_p
Последняя активность

Тема: Нужна помощь!

Автор: prom12345

Дата: 9 апреля 2024 г, 15:57

Тема: Разрешения играть за КТ лицам меньше 16 лет

Автор: Marhmelow_

Дата: 8 апреля 2024 г, 21:13

Топ 5 пользователей
Веня Дыркин

Логин: Веня Дыркин

Рейтинг: 13798

Сообщений: 683

Спасибок: 2623

Nezhdanchik

Логин: Nezhdanchik

Рейтинг: 7700

Сообщений: 540

Спасибок: 1432

MANIAC666

Логин: MANIAC666

Рейтинг: 7044

Сообщений: 614

Спасибок: 1286

Ренатуффка

Логин: Ренатуффка

Рейтинг: 6861

Сообщений: 474

Спасибок: 1277

Stella Artois

Логин: Stella Artois

Рейтинг: 6251

Сообщений: 396

Спасибок: 1167

ONEKILL.RU | Ваша Игровая Площадка | Рекламодателям