REL LUA blindtoggle

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

.хлестаков

андерграунд против чепухи
Автор темы
1,584
20,659
Простой скрипт, который автоматически делает скриншот чата на черном фоне по достижению количества строк.

Активация/деактивация -- /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
 
  • Нравится
Реакции: ушастый и ViceLørd