- 1,401
- 18,402
Простой скрипт, который автоматически делает скриншот чата на черном фоне по достижению количества строк.
Активация/деактивация -- /bt
По умолчанию скрипт работает на 12 строках и с ожиданием суммарно в 2 секунды. Если хотите изменить -- открываете .lua-файл блокнотом и меняете вручную, только не забудьте сохранить!
Подчеркнутые цифры можно менять по своему усмотрению. Первую желательно на одну меньше чем /pagesize, вторую -- как угодно, только учтите, что указаны миллисекунды, то есть 1000 мс -- это 1 секунда. В целом, этого даже с лихвой.
Демонстрация работы (ускорено в 10 раз):
Скачать: https://www.upload.ee/files/17958950/blindtoggle.lua.html
p.s. в теории все использованные тут библиотеки -- стандартные, поэтому lua-файл достаточно просто закинуть в папку Moonloader и все.
Активация/деактивация -- /bt
По умолчанию скрипт работает на 12 строках и с ожиданием суммарно в 2 секунды. Если хотите изменить -- открываете .lua-файл блокнотом и меняете вручную, только не забудьте сохранить!

Подчеркнутые цифры можно менять по своему усмотрению. Первую желательно на одну меньше чем /pagesize, вторую -- как угодно, только учтите, что указаны миллисекунды, то есть 1000 мс -- это 1 секунда. В целом, этого даже с лихвой.
Демонстрация работы (ускорено в 10 раз):
Скачать: https://www.upload.ee/files/17958950/blindtoggle.lua.html
p.s. в теории все использованные тут библиотеки -- стандартные, поэтому lua-файл достаточно просто закинуть в папку Moonloader и все.
Для совсем искушенных прикладываю исходный код:
Код:
local memory = require("memory")
local vkeys = require 'vkeys'
local sampev = require("samp.events")
local ffi = require("ffi")
local chatTable = {}
local scriptEnabled = false -- Переменная для отслеживания состояния скрипта
function sampev.onServerMessage(color, text)
if scriptEnabled then -- Добавляем сообщения только если скрипт включен
table.insert(chatTable, text)
end
end
function takeScreenshot()
local screenshotAddress = sampGetBase() + 0x119CBC
if screenshotAddress then
memory.setuint8(screenshotAddress, 1)
return true -- Успех
else
sampAddChatMessage("Ошибка: невозможно создать скриншот.", 0xFF0000)
return false -- Ошибка
end
end
local function clearChat()
memory.fill(sampGetChatInfoPtr() + 306, 0x0, 25200)
memory.write(sampGetChatInfoPtr() + 306, 25562, 4, 0x0)
memory.write(sampGetChatInfoPtr() + 0x63DA, 1, 1)
end
local function processChat()
if #chatTable >= 12 then -- Вот тут менять количество строк. По умолчанию -- 12. Можно больше, главное, следить за /pagesize
sampSendChat("/blind")
wait(1000)
if takeScreenshot() then
wait(500)
sampSendChat("/blind")
wait(1000) -- Даем время увидеть сообщение о выполнении. Можете уменьшить или увеличить.
clearChat()
else
sampAddChatMessage("Ошибка при создании скриншота. Очистка чата отменена.", 0xFF0000)
end
chatTable = {}
end
end
function main()
while not isSampAvailable() do
wait(100)
end
sampAddChatMessage("Скрипт загружен. Используйте /bt для запуска/остановки.", 0x00FF00)
sampRegisterChatCommand("bt", function()
scriptEnabled = not scriptEnabled
if scriptEnabled then
sampAddChatMessage("Скрипт запущен.", 0x00FF00)
else
scriptEnabled = false
chatTable = {}
sampAddChatMessage("Скрипт остановлен.", 0x00FF00)
end
end)
while true do
wait(0)
if scriptEnabled then
processChat()
end
end
end