Клуб исследователей Warface
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.

Генератор скриптов и графиков

Перейти вниз

Генератор скриптов и графиков Empty Генератор скриптов и графиков

Сообщение автор Пушистая 25.07.15 22:25

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

Генератор скриптов и графиков Yeaiez10

https://yadi.sk/d/oLzuVXADi64iZ

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

WARFACE

Итак, для начала, что нам нужно. Дополнительно, нам понадобится 3 программы:
1) Какой-либо граббер видео с экрана (я использую fraps, пойдет также умело настроенный bandicam или raptr). Главное требование - для хорошей плавности генерируемых скриптов, видео желательно писать с частотой 60к/с без дропов (об этом позднее).
2) Видеоредактор, умеющий покадрово проигрывать видео, и сохранять его в виде последовательности BMP-файлов. Я использую VirtualDub, однако похожей функциональности можно добиться и от Adobe Premiere.
3) Если планируется пользоваться полученными макросами, а не просто рисовать графики, то дополнительно нужна программа записи полученного макроса в мышку. Обычно это Bloody или Oscar, в зависимости от модели мышки. Если используется софт другого производителя мышей - генератор сохраняет промежуточный текстовый файл с координатами, который легко в Word'е приводится к нужному вам виду, например, на Питоне.

Шаг первый. Запись
В Варфейсе отдача половины оружия имеет ярко выраженный рисунок отдачи. Это значит, что ствол трясется от очереди к очереди практически одинаково, а пули улетают в перекрестие. У такого оружия достаточно легко компенсируется отдача смещением мыши в противоположном направлении. Для этого нужно найти среднюю траекторию смещения ствола, чем собственно и занимается программа по видеоряду.
Итак, запись.  Для начала нам нужно записать 1-5 видео со стрельбой из прицела. Видео должно быть коротким, то есть: вошли в режим прицела, запустили запись, выпустили магазин, остановили запись. При этом, не должно быть т.н. дропов кадров - когда ввиду недостаточной мощности процессора, граббер не успевает записать очередной кадр, и дублирует предыдущий. Это приводит к рассинхронизации. Как определить дропы? Загрузив записанное видео в редактор, например в VirtualDub, покадрово просмотрите кадров 100. Если заметны дублирующиеся кадры (в VDub они заметны еще и по отсутствию метки [k]), выкидываете это видео, и снижаете например разрешение или качество графики - желательно писать на минимальных настройках игры, т.к. дополнительные настройки и тормозят запись, и мешают в дальнейшем.
Если планируется автоматическое определение, то дополнительно нужно соблюсти следующие пункты:
1) смещение каждой пары кадров должно быть  0-40 пикселов. Если на видео есть резкие рывки, надо либо понижать разрешение игры (смещение в пикселах при разрешении 1920*1080 например 50пксл, при 1600*900 станет 28пксл), либо увеличивать записываемую частоту кадров (смещение 50 пксл при 30кадрах/с станет 25пксл при 60кадрах/с), либо уменьшать кратность прицела.
2) на видео должен быть квадратный участок, по которому и будет вестись определение. Он должен находиться недалеко от середины экрана, в него не должны попадать статичные объекты (линии прицела, например), а также различные эффекты - дым, пламя выстрела, отлетевшая от стены пыль, движение листвы деревьев, так как это сильно ухудшит, или сделает автоматическое определение определение невозможным. Кроме того, изображение в этой области должно находится достаточно далеко, для минимальных искажений, и быть достаточно контрастным.
Итак мы записали 1-5 видео. Чем больше очередей было записано, тем более точнее будет определена средняя траектория, но и тем дольше будет обрабатываться видео.

Шаг второй. Обработка в редакторе.
Следующий этап - сохранение нужного отрезка кадров. Сначала, в VirtualDub необходимо вырезать лишние кадры. Должны остаться только кадры, начиная с первого выстрела (кадр, в котором счетчик патронов уменьшился на 1 - скажем, в магазине 30 патронов, нужен первым будет кадр, в котором патронов стало 29), и до последнего (допустим. нам нужны все 30 выстрелов, тогда последним будет кадр, когда счетчик патронов стал 0). Не желательно, чтобы количество кадров превысило 300-400, если планируется создание макроса - макрос просто не поместится в мышку.
Далее, нужно сохранить получившийся отрезок в виде последовательности BMP файлов (File->Export->Image Sequence). Именовать желательно так, чтобы получилась последовательность 001.bmp, 002.bmp, итд. Помещаем (или сразу сохраняем) эти файлы в папку 1 генератора. Следующую очередь (если есть) помещаем в папку 2, и т.д., до 5.

Шаг третий. Автоматическая генерация траектории.
Дальше есть два варианта. Если в очереди не более 100-200 кадров, очередь одна, и с автоматическим определением есть проблемы (кадры не соответствуют вышеописанным требованиям), то можно попробовать ручное создание траектории. Во всех же остальных случаях определение траектории можно сделать автоматически.
Запускаем СкриптГенератор, нажимаем кнопку "Сгенерировать координаты движения по кадрам". В открывшемся окне будет загружен первый кадр последовательности. Нужно указать имя конечного файла, и поставить галочку на "Лучшем результате", если количество времени на расчет не важно - расчет будет идти очень долго (10-40 минут), однако ошибки определения менее вероятны. Далее надо кликнуть по картинке для размещения зеленого прямоугольника. В этой области будет идти определение. Она должна отвечать вышеописанным требованиям (находится рядом с центром, не содержать статических элементов, в нее не должны попадать эффекты, огонь от выстрела, и т.д.). Нажимаем "Сгенерировать координаты смещения", идем пить чай полчаса, или сворачиваем программу (она "подвиснет"). В конце расчета программа покажет окно с затраченным на расчет временем.

Шаг третий. Ручная обработка.
В случае, если есть необходимость в ручном создании координат, запускаем генератор скриптов и выбираем "Указать координаты движения прицела вручную". Будет загружен первый кадр последовательности. Для начала укажем рабочую область - зададим координаты смещения вверху. Скажем, при значениях -200 и 0, мы видим как раз центр кадра с перекрестием.  Далее укажем название файла.
После этого нужно отыскать недалеко от центра какую-либо хорошо заметную точку местности - обычно это угол, например, дома или контейнера. Подводим мышку точно в этот угол, нажимаем на него, появится зеленый крестик. В случае, если точка была указана неверно, стираем ее кнопкой "Стереть точку" и указываем снова. Повторяем данные действия для всех кадров. По завершению жмем "Сгенерировать координаты смещения".

Шаг четвертый. Графики движения.
Итак, в папке с программой у нас появился текстовый файл .xls с координатами движения ствола. Чтобы показать эти координаты наглядно в виде анимированного графика, запускаем Генератор Скриптов и выбираем "Показать график движения". Программа выведет одновременно до 4 .xls файлов в корне папки в виде разноцветных графиков.

Шаг четвертый. Создание макроса по координатам.
Если конечной целью является создание макроса мыши, нужно запустить программу и выбрать "Создать скрипт по найденным координатам". В открывшемся окне нужно выбрать имя файла с координатами (файл должен находится в корне папки программы). Далее, необходимо задать название конечного файла, и указать путь сохранения.
После этого необходимо подобрать параметры макроса.
Для начала, значения поправок нужно сделать нулевыми. В случае, если оружие автоматическое, нужно убрать галку с "Полуавтомат в автомат". Коэффициент высоты нужно указать 1.
Далее идет подбор нужных значений по следующему алгоритму. Для начала подбирается задержка. Это пауза между смещениями. В мышках Bloody она больше, так как сама мышь быстрее выполняет команды - в среднем, ей нужно около 0.6мс для выполнения 1 команды. Для Х7 задержка будет меньше, так как мышь обрабатывает каждую команду около 1.8мс.
Ставится галка на режиме отладки, и создается ряд файлов (нажатием кнопки "Создать скрипт") с разными значениями задержки. Скажем, 13, 13.5, 14, 14.5, 15, 15.5. Ориентировочно, для частоты 60 кадров/с, у мышек Bloody задержка составит 15.4мс, для Х7 - 13.1мс. Загружаем получившиеся макросы в мышь, в игре нажимаем на кнопку выстрела, и смотрим, чтобы при текущем значении задержки происходило выстрелов количество в магазине-1, а при большем на 0.1 - выстреливались все патроны. Допустим, у нас получилось значение 13.2мс. Теперь подбираем масштаб. Убираем галку "Отладка". Создаем скрипт с таким масштабом, чтобы мышь проходила с зажатой кнопкой около 50-100 пикселов на рабочем столе. Для Bloody при разрешении экрана 1920*1080, сенситивити мыши 3200 и ч2 прицеле это около 1.0, для Х7 при чувствительности 3800 это около 3.2. Теперь в игре подбираем такое значение чувствительности мыши, чтобы прицел как можно меньше дергался, не забывая старое значение. Скажем, если чувствительность была 40, а найденная 62 - вносим эти значения в окошки "исходная sens." и "подобранная sens.", жмем кнопку "Рассчитать масштаб", и полученное значение указываем в окошке масштаба. После этого в игре меняем чувствительность обратно на 40. Далее создаем несколько скриптов с небольшим шагом задержки - например, 13.0, 13.1, 13.2, 13.3, 13.4 и выбираем среди них тот, при котором прицел трясется меньше в конце очереди. Точное значение масштаб подбираем опять же помощью игровой чувствительности и окошка расчета.
Пушистая
Пушистая
Admin

Сообщения : 14
Дата регистрации : 2015-07-25

https://warface.profiforum.ru

Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения