Помощь .lua

Gaidenusha

Новичок
Автор темы
24
1
Нарушение правил раздела
Как сделать так, что-бы при нажатии на чекбокс, менялась тема на красную, и так же, как сделать что-бы можно было биндить клавиши, и так же свою команду

Как сделать так, что-бы при нажатии на чекбокс, менялась тема на красную, и так же, как сделать что-бы можно было биндить клавиши, и так же свою команду
Желательно с обьяснением, что-бы потом как создавал другой скрипт смог посмотреть, ну или же запомнить.
 

Вложения

  • 00000.lua
    2.5 KB · Просмотры: 6
Последнее редактирование:

Dmitriy Makarov

25.05.2021
Проверенный
2,505
1,134
Не знаю, насчёт "своей команды". Просто регистрируй команду, как обычно и всё. Твоя просьба выполнима, конечно, но так как я с телефона, мне сложно это делать без тестов.
А так, вот. Поправил чутка код и табуляцию..
Lua:
--author: Gaidusha/Screamzilla

require "lib.moonloader"
local imgui = require "imgui"
local rkeys = require 'rkeys' -- Для регистрации клавиш бинда. (Вроде)
imgui.HotKey = require('imgui_addons').HotKey -- Библиотека для самих бинд клавиш.
local encoding = require "encoding"

encoding.default = "CP1251"
u8 = encoding.UTF8

local main_window_state = imgui.ImBool(false)
local text_buffer = imgui.ImBuffer(256)
     
-- Checkbox
local checked_test = imgui.ImBool(false)
local checked_test_2 = imgui.ImBool(false)
     
--Radio
local checked_radio = imgui.ImInt(1)

local tLastKeys = {} -- Таблица, чтобы записывать последнюю нажатую клавишу в бинде клавиш.
local path = getGameDirectory()..'\\moonloader\\script.json' -- Путь до файла с настройками.

local config = { -- Наши настройки
    hot_key = {v = {VK_C}}, -- Сама клавиша биржа по умолчанию.
    -- Тут можешь ещё клавиши добавить. Клавишу нужно указать там, где "VK_C" выше.
}

-- Создание нашего файла с настройками.
if not doesFileExist(path) then
    local f = io.open(path, 'w+')
    f:write(encodeJson(config)):close()
else
    local f = io.open(path, "r")
    a = f:read("*a")
    config = decodeJson(a)
    f:close()
end
     
     
function  main()
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage("GAIDUSHA:Скрипт загружен", -1)
    bind = rkeys.registerHotKey(config.hot_key.v, true, function() -- "config.hot_key.v" - путь до нашей клавиши в настройках выше.
        -- Тут действие на наш бинд.
        sampAddChatMessage("Проверка хоткея.", -1)
    end)
    sampRegisterChatCommand("arm", function()
        main_window_state.v = not main_window_state.v
    end)
    sampRegisterChatCommand("check", function()
        sampAddChatMessage(checked_radio.v, -1)
    end)
    while true do wait(0)
        if isKeyJustPressed(VK_NUMPAD1) and not sampIsCursorActive() then
            sampSendChat("Предьявите ваши документы удостоверяющие вашу личность.")
        end
        if isKeyJustPressed(VK_NUMPAD2) and not sampIsCursorActive() then
            sampSendChat("Можете сказать цель прибытия, и дальнейшие действия на территории ВЧ?")
        end
        if isKeyJustPressed(VK_NUMPAD3) and not sampIsCursorActive() then
            wait(3000)
            sampSendChat("Отьедьте от кпп на 20М.")
            wait(3000)
            sampSendChat("Иначе через 10 секунд я открою огонь.")
        end
        imgui.Process = main_window_state.v
    end
end

function imgui.OnDrawFrame()
    if main_window_state.v then
        imgui.Begin("Binnder by Gaidusha", main_window_state)
        imgui.InputText(u8"Сюда текст", text_buffer)
        x, y, z = getCharCoordinates(PLAYER_PED)
        imgui.Text(u8("Позиция игрока: X:" .. math.floor(x) .. " | Y: ".. math.floor(y) .. " | Z:" .. math.floor(z)))
        if imgui.Button("Press me") then
            sampAddChatMessage("1000-7", -1)
        end
        if imgui.Checkbox("CHECKBOX", checked_test) then -- При нажатии на чекбокс
            red_style() -- Применяем красный стиль. Как его убрать - хз, перезапусти скрипт.
        end
        imgui.Checkbox("CHECKBOX2", checked_test_2)
        if imgui.HotKey("##hotkey1", config.hot_key, tLastKeys, 100) then -- Первый аргумент - ID хоткея. Смотри, чтобы они не были одинаковыми. Второй - путь до клавиши. 3 - Последняя нажатая клавиша. 4 - размер элемента.
            -- При нажатии на хоткей...
            rkeys.changeHotKey(bind, config.hot_key.v) -- Срабатывает функция смены клавиши бинда.
            JSONSave() -- После смены клавиши, она сохраняется в наши настройки.
        end
        imgui.End()
    end
end


-- Функция сохранения наших настроек.
function JSONSave()
    if doesFileExist(path) then
        local f = io.open(path, 'w+')
        if f then
            f:write(encodeJson(config)):close()
        end
    end
end


-- Красный стиль.
function red_style()
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local clr = imgui.Col
    local ImVec4 = imgui.ImVec4

    style.WindowRounding = 2.0
    style.WindowTitleAlign = imgui.ImVec2(0.5, 0.84)
    style.ChildWindowRounding = 2.0
    style.FrameRounding = 2.0
    style.ItemSpacing = imgui.ImVec2(5.0, 4.0)
    style.ScrollbarSize = 13.0
    style.ScrollbarRounding = 0
    style.GrabMinSize = 8.0
    style.GrabRounding = 1.0

    colors[clr.FrameBg]                = ImVec4(0.48, 0.16, 0.16, 0.54)
    colors[clr.FrameBgHovered]         = ImVec4(0.98, 0.26, 0.26, 0.40)
    colors[clr.FrameBgActive]          = ImVec4(0.98, 0.26, 0.26, 0.67)
    colors[clr.TitleBg]                = ImVec4(0.04, 0.04, 0.04, 1.00)
    colors[clr.TitleBgActive]          = ImVec4(0.48, 0.16, 0.16, 1.00)
    colors[clr.TitleBgCollapsed]       = ImVec4(0.00, 0.00, 0.00, 0.51)
    colors[clr.CheckMark]              = ImVec4(0.98, 0.26, 0.26, 1.00)
    colors[clr.SliderGrab]             = ImVec4(0.88, 0.26, 0.24, 1.00)
    colors[clr.SliderGrabActive]       = ImVec4(0.98, 0.26, 0.26, 1.00)
    colors[clr.Button]                 = ImVec4(0.98, 0.26, 0.26, 0.40)
    colors[clr.ButtonHovered]          = ImVec4(0.98, 0.26, 0.26, 1.00)
    colors[clr.ButtonActive]           = ImVec4(0.98, 0.06, 0.06, 1.00)
    colors[clr.Header]                 = ImVec4(0.98, 0.26, 0.26, 0.31)
    colors[clr.HeaderHovered]          = ImVec4(0.98, 0.26, 0.26, 0.80)
    colors[clr.HeaderActive]           = ImVec4(0.98, 0.26, 0.26, 1.00)
    colors[clr.Separator]              = colors[clr.Border]
    colors[clr.SeparatorHovered]       = ImVec4(0.75, 0.10, 0.10, 0.78)
    colors[clr.SeparatorActive]        = ImVec4(0.75, 0.10, 0.10, 1.00)
    colors[clr.ResizeGrip]             = ImVec4(0.98, 0.26, 0.26, 0.25)
    colors[clr.ResizeGripHovered]      = ImVec4(0.98, 0.26, 0.26, 0.67)
    colors[clr.ResizeGripActive]       = ImVec4(0.98, 0.26, 0.26, 0.95)
    colors[clr.TextSelectedBg]         = ImVec4(0.98, 0.26, 0.26, 0.35)
    colors[clr.Text]                   = ImVec4(1.00, 1.00, 1.00, 1.00)
    colors[clr.TextDisabled]           = ImVec4(0.50, 0.50, 0.50, 1.00)
    colors[clr.WindowBg]               = ImVec4(0.06, 0.06, 0.06, 0.94)
    colors[clr.ChildWindowBg]          = ImVec4(1.00, 1.00, 1.00, 0.00)
    colors[clr.PopupBg]                = ImVec4(0.08, 0.08, 0.08, 0.94)
    colors[clr.ComboBg]                = colors[clr.PopupBg]
    colors[clr.Border]                 = ImVec4(0.43, 0.43, 0.50, 0.50)
    colors[clr.BorderShadow]           = ImVec4(0.00, 0.00, 0.00, 0.00)
    colors[clr.MenuBarBg]              = ImVec4(0.14, 0.14, 0.14, 1.00)
    colors[clr.ScrollbarBg]            = ImVec4(0.02, 0.02, 0.02, 0.53)
    colors[clr.ScrollbarGrab]          = ImVec4(0.31, 0.31, 0.31, 1.00)
    colors[clr.ScrollbarGrabHovered]   = ImVec4(0.41, 0.41, 0.41, 1.00)
    colors[clr.ScrollbarGrabActive]    = ImVec4(0.51, 0.51, 0.51, 1.00)
    colors[clr.CloseButton]            = ImVec4(0.41, 0.41, 0.41, 0.50)
    colors[clr.CloseButtonHovered]     = ImVec4(0.98, 0.39, 0.36, 1.00)
    colors[clr.CloseButtonActive]      = ImVec4(0.98, 0.39, 0.36, 1.00)
    colors[clr.PlotLines]              = ImVec4(0.61, 0.61, 0.61, 1.00)
    colors[clr.PlotLinesHovered]       = ImVec4(1.00, 0.43, 0.35, 1.00)
    colors[clr.PlotHistogram]          = ImVec4(0.90, 0.70, 0.00, 1.00)
    colors[clr.PlotHistogramHovered]   = ImVec4(1.00, 0.60, 0.00, 1.00)
    colors[clr.ModalWindowDarkening]   = ImVec4(0.80, 0.80, 0.80, 0.35)
end
Для бинда клавиш нужны эти 2 библиотеки.