FND REL LUA SS Script by @cherryman

  • Привет! Если твой основной форумник заблокирован - ты можешь оставить заявку в этом разделе: Нажми на меня!, НЕ создавая новый форумный аккаунт.
  • Гость, цивильный бизнес — это твой главный источник крутого ролевого сюжета, уважения и стабильного дохода. Забирай коммерческое предприятие уже сегодня и сделай свое заведение центром тусовки всего сервера!

шкипер

коммерческий банк "валди́с"
Автор темы
2,741
31,897
🚫 Почему здесь нет автоматического режима

Некоторые знают, что была автоматическая версия скрипта (реворк v2.4) — с авто-скриншотом каждые Y строк и автоматической очисткой чата. В этой версии автоматики сознательно нет, и вот почему.

Автоматика, которая реально полезна (чтобы буфер чата не переполнялся между скриншотами), требует полной очистки истории чата после каждого снимка. Штатных команд SAMP для этого нет — единственный способ — лезть напрямую в структуру CChat в памяти процесса и занулять поля.

В реворке это делалось так:
memoryLib.fill(chat + 0x132, 0x0, 25200, true) -- занулить 25200 байт

Именно эта строка ломала чат: инпут улетал в верхний левый угол, и спасти мог только перезаход. Причина простая — офсет 0x132 не является началом массива записей чата, как думал автор реворка. Там лежат служебные поля: текущий ввод, скроллбар, флаги состояния. Зануляешь их — ломаешь всё.

Даже если убрать опасный memoryLib.fill и оставить только сброс счётчика сообщений:
memoryLib.setuint32(chat + 0x12E, 0, true) -- m_nMsgCount = 0
…проблема не уходит полностью. Счётчик сброшен, а физические записи в буфере остались, и внутреннее состояние CChat рассинхронизировано. SAMP хранит ещё и номер текущей страницы, масштаб текста, флаги инпута — всё это опирается на согласованное состояние, которое мы нарушаем вторжением в память.

Три причины, почему прямой доступ к памяти CChat — плохая идея:

  • Офсеты зависят от версии SAMP. 0x12E, 0x132, 0x13A — это для 0.3.7 R1. На другом билде они сдвинуты, и запись мимо = повреждение случайных полей. Скрипт не может это надёжно проверить.
  • Структура CChat не задокументирована. Мы не знаем точно, что лежит по каждому офсету. Любой незнакомый офсет — лотерея: сегодня работает, завтра падает.
  • Даже «безопасный» сброс счётчика рассинхронизирует состояние. Счётчик говорит «0», а буфер полон. PageUp показывает фантомные строки, инпут ведёт себя непредсказуемо.

К тому же счётчик строк сам по себе неточный. Он хукает только серверные сообщения, а клиентские (системные уведомления, ответы команд) пропускает. Поэтому авто-режим в любом случае работает криво — иногда делает лишний скриншот, иногда недодерживает.

Вывод: автоматический режим через прямую работу с памятью — это хождение по минному полю ради фичи, которая в принципе не может работать надёжно. Ручной режим по одной кнопке работает всегда, потому что использует только штатные API SAMP:

  • /fontsize, /pagesize — через sampProcessChatInput;
  • /blind — серверная команда;
  • F8 — через setVirtualKeyDown.

Эти функции безопасны по определению: их предоставляет сам SAMP/SAMPFUNCS, и они сами разбираются со своим внутренним состоянием. Ничего сломать невозможно.

Если кто-то хочет честную автоматику — её нужно делать на стороне сервера или через перехват рендера чата, а не через запись в чужую память. Это уже совсем другой проект.

---

⚙️ Требования

  • MoonLoader (рекомендуется 0.26.2+);
  • SAMPFUNCS;
  • (опционально) Chat++ — нужен, чтобы /pagesize работал больше 20 строк. Без него штатно ограничение 20.

Проверен на: SAMP 0.3.7 R1.

---

📥 Установка

  1. Скопировать sss.lua в папку moonloader.
  2. Конфиг создастся сам при первом запуске: moonloader\config\sss.ini.
  3. Зайти в игру, ввести /sss для настройки.

---

🎮 Использование

Команда: /sss — открыть меню настроек.

В меню доступны:
  • Клавиша активации — задаёте свою комбинацию (можно несколько клавиш через +, например ALT+P);
  • Размер шрифта при СС — от -3 до 5;
  • Число строк при СС — от 10 до 64 (значения больше 20 требуют Chat++);
  • Авто-стандарт — авто-возврат настроек из sa-mp.cfg после скриншота;
  • Уведомления — вкл/выкл сообщения в чат от скрипта.

Снимок: нажать настроенную клавишу в игре — скрипт сам сделает всю работу.

---

🛠 Что было исправлено в v1.1

Оригинальный скрипт содержал несколько багов, из-за которых он падал или просто не работал. В этой версии пофикшено:

  • Опечатка ampAddChatMessage — вместо sampAddChatMessage. Крашила скрипт при вводе кривого размера шрифта в диалоге.
  • Хоткей не срабатывал — массив buttID хранил строки ("119") вместо чисел (119). isKeyJustPressed("119") получал строку вместо числа и молча возвращал false. То есть горячая клавиша просто не работала, даже если была настроена.
  • VK_F8 не был определён — setVirtualKeyDown(VK_F8, true) падал с attempt to index a nil value. Скриншот вообще не делался.
  • Конфиг сохранялся не туда — inicfg.save(ini, 'sss') писал в файл sss в рабочем каталоге, а не в moonloader\config\sss.ini. Дальше inicfg.load не находил конфиг, возвращал nil, и скрипт падал на mainIni.chat.fontsize.
  • Сброс клавиши при отмене — если в диалоге настройки клавиши нажать ESC, не нажав клавишу, старое значение butt/buttID терялось навсегда. Приходилось перенастраивать заново. Теперь старое значение восстанавливается.
  • Срабатывание во время печати в чат — если печатал сообщение и случайно нажимал хоткей, /fontsize и /pagesize уходили в чат как текст. Добавлена проверка sampIsChatInputActive().

Также интерфейс полностью переведён на русский, убраны глобальные переменные, почищен устаревший синтаксис (table.getn → #).

🔗 Ссылки


Оставляю оригинальный скрипт, каким его задумывал автор. При наличии SS+ традиционные методы уходят на второй план.
 

Вложения

  • sss_original_fixed.zip
    3.9 KB · Просмотры: 0

шкипер

коммерческий банк "валди́с"
Автор темы
2,741
31,897
Поскольку автор скрипта заходил последний раз еще в феврале, а оригинальный тред умер и скрипт в нем не находится -- пересоздаю тему, поскольку это действительно полезная модификация. Ссылка на оригинальный тред: *тык* Итак:
author: @cherryman​
Screenshot Situations Script
S S S

Скрипт, который по вашему бинду делает скриншот чата поверх блэкскрина с автоматической настройкой /fontsize и /pagesize.

Хватит портить зрение, играя на /fontsize -2! Качество СС прежнее, а функционал новый!
1761762022635.png

Внимание: для корректной работы скрипта рекомендую установить (если еще нет) screenshot.asi и chat++.asi (альтернативный вариант, если не работает: *тык*)
​
Меню выше вызывается командой /sss. В оригинале все было на русском, но поскольку, вероятно, скрипт был сохранен с неверной кодировкой, все превратилось в кракозябры, поэтому здесь -- кривой перевод на английский от вашего покорного слуги (а еще скрипт прям в игре напомнит о важности чат++, это тоже моя идея, не знаю, зачем я это вкорячил)
activation button: можно изменить команду вызова бинда. работает не очень хорошо, поэтому дополнительно скину ини-файлик со своими настройками:
1761762425108.png

остальное понятно из названия. fontsize -- размер шрифта при блайнде, pagesize -- количество строк при блайнде.

auto defaults: достает стандартные, то есть обычные настройки чата из sa-mp.cfg. Однако, нужно ввести полный путь до этого файла в окошке.
1761762605093.png
C:\Users\%username%\Documents\GTA San Andreas User Files\SAMP\sa-mp.cfg

maunal defaults:
1761762671397.png
позволяет ввести нужные показатели самому.

Что вам ближе, решайте сами.

Ну и соответственно, уведомления, включить или выключить.

Работает это так:

И работает везде:
2025-10-29 00-51-58-023.png

Ссылка на скачивание: гуглодоки

Установка: содержимое папки ssslua кинуть в мунлоадер (или же сам lua-файл в корень мунлоадера, ini-файл в папку config)
 

EchPochMakx.

Пользователь
130
726
А можно сделать так что бы именно скрины с чатом в другую папку шли?
 

шкипер

коммерческий банк "валди́с"
Автор темы
2,741
31,897
А можно сделать так что бы именно скрины с чатом в другую папку шли?
Нет, скрипт за тебя делает блайнд, скринит это и анблайндит, а если надо (а иногда надо) снижает фонтсайз до минимального, чтобы было удобно.

Можешь прям открыть скрипт и прочитать код, он флудит в чат командами.

Мне удобно. Хотя бы по той причине, что лучше ничего не сделали (скринчат обрезает картинку, а фикса нет; про /удобство/ писать блайнд я промолчу, а скрипты от вора сосис не работают и он их не правит.
 

mace

Легенда
Banned
8,557
96,558
а нахуя если есть фаст сс. забудьте про фотошоп, вы делаете двойную работу и тратите на него время.

sa_20260913_202201_969.jpgsa_20261001_223033_894.jpg
 

EchPochMakx.

Пользователь
130
726
Screenshot Situations Script — SSS [REWORK]
Автоматизация скриншотов чата: разделители блоков, авто-СС и очистка чата по счётчику строк
​
Короче говоря, это реворк. Третий по счету кажется, если считать версию вора сосис и гхелперюгу. Поскольку я нещадно испохабил оригинал своим utf-8, пришлось сделать вот так. Вообще я ставил себе другую задачу, и... я с ней почти успешно справился. Че у нас в новой версии:
  • Ручной СС по бинду — как в оригинале: по вашей комбинации клавиш скрипт сам переключает чат в «съёмочный» режим (мелкий шрифт, больше строк), скрывает интерфейс командой /blind, делает скриншот и возвращает стандартные настройки чата. Руки заняты только кнопкой.
  • Разделитель каждые X строк — скрипт следит за чатом и после каждой X-й строки сервера печатает линию из дефисов. Идеально для монтажа: видно, где один блок реплик заканчивается и начинается следующий.
  • Авто-скриншот каждые Y строк — набралось Y строк с сервера? Скрипт сам выполняет полный цикл ручного СС (шрифт → строки → /blind → снимок → /blind → возврат настроек), после чего полностью вычищает чат — при прокрутке PageUp не останется ни одной старой строки. Цикл начинается с чистого листа

Посмотреть вложение 4841510

Команды

  • /sss — меню настроек (всё на русском, в отличие от оригинала, который из-за кодировки превратился в кракозябры)
  • /sssclear — принудительная очистка чата и сброс счётчиков
  • /sssinfo — диагностика: текущие значения, что лежит в конфиге на диске, статус окружения
Настройки в меню
  • Клавиша активации ручного СС — любая комбинация (включая Alt+клавиша), ловится зажатием
  • Размер шрифта при СС и число строк при СС (для строк больше 20 рекомендую Chat++)
  • X — интервал разделителей
  • Y — интервал авто-скриншота (допустимо 58–62, и Y обязан быть кратен X — скрипт подскажет подходящие значения и не даст сохранить кривые)
  • Авто-режим вкл/выкл
  • Стандартные настройки для возврата после СС — вручную или автоматически из вашего sa-mp.cfg (как в оригинале: вводите полный путь к файлу)
  • Уведомления
  • Автоочистка чата при спавне — при входе на сервер/респавне чат и счётчики обнуляются сами, цикл всегда стартует с чистого листа



Как это выглядит в цикле

Прислал 12 строк — в чате линия из дефисов. Ещё 12 — снова линия. На 60-й строке — финальная линия, затем авто-скриншот (чат сам мельчает и расширяется, интерфейс скрывается, снимок, всё возвращается), затем чат полностью очищается. Отсчёт «осталось 5…1» висит над экраном последние строки. Дальше всё по новой.
Посмотреть вложение 4841512
Собственно это и есть фича. Естественно она с багом, потому что скрипт хукает только СЕРВЕРНЫЕ сообщения, а не серверные не хукает. Поэтому он может подожрать немного строчек. Поэтому я в общем-то НЕ рекомендую использовать авторежим, либо как на скриншоте сверху, ставить 64 строки, а авторежим на 60. Я не хочу и не буду это исправлять, ибо меня устраивает на самом деле и так :^)

Требования и установка

  • MoonLoader (рекомендую 0.26.2+) и SAMPFUNCS
  • lib.samp.events — входит в состав штатных библиотек MoonLoader (обязателен: на нём построен подсчёт строк)
  • Проверен на SAMP 0.3.7 R1. На других билдах скриншот через память может не сработать — тогда скрипт автоматически уйдёт в запасной режим (эмуляция F8), ничего настраивать не надо

Установка: lua-файл — в папку moonloader. Конфиг создастся сам при первом запуске: moonloader\config\sss.ini.

Чем это отличается от оригинала
  • Интерфейс переведён на русский (обратно). И кстати, пофикшено задавание кнопки, теперь она задается плюс-минус нормально.
  • Добавлены: разделители блоков, авто-скриншот по счётчику строк, полная очистка чата через память CChat, автоочистка при спавне, отсчёт через GameText
  • Диалоги переписаны: убиты плодящиеся потоки-чекеры, которые в оригинале постепенно забивали игру
  • Исправлены падения (wait вне потока, опечатки) и работа с конфигом
  • Подсчёт строк идёт через хук ServerMessage — работает всегда, независимо от заполнения буфера чата

Скачать во вложениях.

я ненавижу мимгуи мимгуи сосет
2026-11-09 03-42-32-460.pngсломался чат
 

шкипер

коммерческий банк "валди́с"
Автор темы
2,741
31,897

EchPochMakx.

Пользователь
130
726
хммм... признаться честно я думал, что его нормальное поведение, потому что он у меня примерно так и настроен был.

на днях перепишу оригинал без мудрежки.
Отключили всё и методом клика понял что это случается после очистки чата иммено командой скрипта
 
  • Нравится
Реакции: шкипер
🎃 Хэллоуин