REL LUA blindtoggle

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

кислота

D. T. said nothing wrong #freeAdler
Автор темы
Assistant
State Section
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 и все.

Для совсем искушенных прикладываю исходный код:
Код:
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
 
  • Нравится
Реакции: hakeemio