SA:MP Lua Samp Replay Mod | Машина времени в SAMP

maynkraftpro2010

Известный
Автор темы
430
202
XSfPBQD.jpg

Передаю привет оставшимся 10 самперам.

Samp Replay Mod - скрипт, позволяющий записать вашу игровую сессию в один файл, чтобы просмотреть или поделиться им с кем-то.

Зачем это нужно:
  1. Скрипт записывает всё состояние игры. Видно все действия, которые происходят за экраном. Благодаря этому можно узнать упущенные моменты, не замеченные при игре. Так же сохраняется информация о движении локального игрока. Можно посмотреть на себя со стороны.
  2. Этот скрипт можно использовать как машину ностальгии. Запишите обычную каточку, сохраните повтор и посмотрите через 5 лет. Будет интересно походить по серверу, который уже не существует или очень изменился. К слову, такие повторы из 2022 существуют, ими я поделюсь в теме.
Во многих играх существует функция повтора. Даже в одиночной GTA при нажатии на кнопку F1 воспроизводится недавний геймплей, но в мультиплеере такая фишка была вырезана. Данный скрипт позволяет записывать все движения игроков, машин, объекты и чат. Если говорить коротко, вы сохраняете всю информацию, которая пришла к вам с сервера. После сохранения вы можете воспроизвести всю сохраненную сессию.
Видео и баннер скрипта сделаны https://www.ls-customs.com/, за что я им очень благодарен.
При получении PACKET_CONNECTION_REQUEST_ACCEPTED(34) запускаются 2 потока для записи RPC и пакетов данных. После все пакеты и RPC сжимаются в строки, а после добавляются в очередь, чтобы избежать потерь. Если несколько тактов подряд не пришло ни одного пакета, то сохраняется лишь количество пустых тактов, чтобы не тратить память на каждый пустой такт. В секунду максимум может сохраниться 10000 пакетов и 1000 RPC (в теории. на практике lua не такой быстрый, но хватает для всех серверов). Благодаря такому большому запасу даже на ЦР на Аризоне все движения игроков и маппинг спокойно сохраняются. Из этой очереди все данные записываются в файл. Действия локального игрока тоже сохраняются благодаря конвертации исходящей синхры во входящую (Это было сложно. Для этого были использованы исходники SAMP.Lua от команды бластхака, за что им огромное спасибо!)
Требования:

Версии скрипта:
  1. SampReplayMod_2021.lua - старая версия из 2021 года. К ней прилагается .zip архив с сохранениями из начала 2022 года. Самое настоящее проявление эффекта машины времени этого скрипта. Не рекомендуется для использования из-за нестабильности. Активируется командой /replaymod
  2. [RM]_RecordStable.lua и [RM]_PlayStable.lua. Актуальная версия скрипта. Первый используется для записи, второй для воспроизведения повторов. Более стабильная и актуальная версия. Запись активируется автоматически при входе на сервер. Для открытия меню воспроизведения используется команда /rm

1766927088895.png
1766927095618.png

Архив к записями из 2022 лежит по ссылке: https://drive.google.com/file/d/1yLrBdG_2WozaTiOVBlxpkIMc64s97Xlk/view?usp=sharing
Папка с записями находится по адресу moonloader/ReplayMod
 

Вложения

  • SampReplayMod_2021.lua
    37.9 KB · Просмотры: 12
  • [RM]_RecordStable.lua
    20.4 KB · Просмотры: 16
  • [RM]_PlayStable.lua
    27.5 KB · Просмотры: 10
Последнее редактирование:

AdCKuY_DpO4uLa

Адский дрочер
Друг
369
807
запускаются 2 потока для записи RPC и пакетов данных
Луа тред - не поток, а просто самопальная луажит корутина, которая вертится в том же потоке, что и основная логика скрипта/гта/сампа, имхо не нужный оверхед. На будущее, в io библиотеке есть возможность читать/писать в двоичном формате, можно сильно снизить вес записи реплея и нагрузки, не прибегая к сериализации и десиреализации в/из строки