SA:MP Lua [ARZ] Fake Keyboard

0o0o0o0o0o0oo0o0o0o0o0o0o

Новичок
Автор темы
3
1
Всем привет!

Представляю свой нейро-говнокод. Данный скрипт создан специально для тех людей, которые ловят с АХК.

Активация скрипта: /mykb
Снимок экрана 2026-04-11 183847.png

P.S. Данный скрипт сделал за 10 минут 😎. Тестировал его на АХК от Bratanchik1488. Внизу прикреплю этот файл. Активация самого АХК — POEL (вводить как чит-код). Код оставляю открытым, так что пользуйтесь и дорабатывайте под себя. kb1.lua - Fake keyboard.
KeyBoard:
script_author('0o0o0o0o0o0oo0o0o0o0o0o0o')
script_name(' ARZ Fake KeyBoard ')

local vkeys = require 'vkeys'
local inicfg = require 'inicfg'
local imgui = require 'imgui'
local encoding = require 'encoding'
local ffi = require 'ffi'

encoding.default = 'CP1251'
u8 = encoding.UTF8

ffi.cdef[[ short GetAsyncKeyState(int vKey); ]]

local flash_keys = {}
local last_dialog_text = ""

-- Функция проверки активности клавиши (физической или виртуальной)
local function isKeyActive(vkey, key_name)
    if bit.band(ffi.C.GetAsyncKeyState(vkey), 0x8000) ~= 0 then return true end
    if flash_keys[tostring(key_name)] and os.clock() < flash_keys[tostring(key_name)] then
        return true
    end
    return false
end

local iniFile = 'keyboard_v3.ini'
local ini = inicfg.load({
    config = { active = true, mode = 0, move = false, theme = 0 },
    pos = { x = 10, y = 500 }
}, iniFile)

local settings = imgui.ImBool(false)
local keyboard = imgui.ImBool(ini.config.active)
local keyboard_type = imgui.ImInt(ini.config.mode)
local move = imgui.ImBool(ini.config.move)
local theme = imgui.ImInt(ini.config.theme)

function main()
    if not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    
    sampRegisterChatCommand('mykb', function() settings.v = not settings.v end)
    
    while true do
        wait(0)
        
        -- СИСТЕМА ПЕРЕХВАТА ВВОДА БОТА
        if sampIsDialogActive() then
            local current_text = sampGetCurrentDialogEditboxText()
            if current_text ~= last_dialog_text then
                -- Если текст стал длиннее, значит бот или игрок ввели символ
                if #current_text > #last_dialog_text then
                    local char = current_text:sub(#current_text, #current_text):upper()
                    flash_keys[char] = os.clock() + 0.12 -- Подсветка на 120мс
                end
                last_dialog_text = current_text
            end
        else
            last_dialog_text = ""
        end

        -- УПРАВЛЕНИЕ КУРСОРОМ И КАМЕРОЙ
        imgui.Process = (keyboard.v or settings.v)
        imgui.ShowCursor = settings.v
        imgui.LockPlayer = settings.v
        
        if settings.v == false and (ini.config.active ~= keyboard.v or ini.config.mode ~= keyboard_type.v) then
            ini.config.active, ini.config.mode, ini.config.move, ini.config.theme = keyboard.v, keyboard_type.v, move.v, theme.v
            inicfg.save(ini, iniFile)
        end
    end
end

function imgui.OnDrawFrame()
    if settings.v then
        imgui.Begin(u8'Настройки клавиатуры. By: 0o0o0o0o0o0oo0o0o0o0o0o0o', settings, imgui.WindowFlags.AlwaysAutoResize)
        imgui.Combo(u8'Раскладка', keyboard_type, {u8'Вся', u8'Без NumPad', u8'Только цифры', u8'Компакт', u8'WASD'})
        imgui.Checkbox(u8'Показывать', keyboard)
        imgui.Checkbox(u8'Разрешить перетаскивание', move)
        if imgui.Combo(u8'Цвет нажатия', theme, {u8'Зелёный', u8'Красный', u8'Пурпурный', u8'Синий', u8'Розовый', u8'Жёлтый'}) then
            if styles[theme.v] then styles[theme.v]() end
        end
        imgui.End()
    end

    if keyboard.v then
        local window_flags = imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.AlwaysAutoResize + imgui.WindowFlags.NoFocusOnAppearing
        if not move.v then window_flags = window_flags + imgui.WindowFlags.NoInputs + imgui.WindowFlags.NoMove end

        imgui.PushStyleVar(imgui.StyleVar.WindowPadding, imgui.ImVec2(5, 3))
        imgui.PushStyleColor(imgui.Col.WindowBg, imgui.ImVec4(0, 0, 0, 0))
        
        imgui.SetNextWindowPos(imgui.ImVec2(ini.pos.x, ini.pos.y), imgui.Cond.FirstUseEver)
        imgui.Begin('##kb_hud', _, window_flags)
            local p = imgui.GetWindowPos()
            ini.pos.x, ini.pos.y = p.x, p.y
            
            local layout = keyboards[keyboard_type.v + 1]
            if layout then
                for i, line in ipairs(layout) do
                    for k, v in ipairs(line) do
                        if isKeyActive(v[2], v[1]) then
                            imgui.PushStyleColor(imgui.Col.ChildWindowBg, imgui.GetStyle().Colors[imgui.Col.ButtonActive])
                        else
                            imgui.PushStyleColor(imgui.Col.ChildWindowBg, imgui.ImVec4(0, 0, 0, 0.4))
                        end
                        imgui.BeginChild('##k'..i..k, imgui.ImVec2(imgui.CalcTextSize(v[1]).x + 12, 25), true)
                        imgui.CenterText(v[1])
                        imgui.EndChild()
                        imgui.PopStyleColor()
                        if k ~= #line then imgui.SameLine() end
                    end
                end
            end
        imgui.End()
        imgui.PopStyleColor()
        imgui.PopStyleVar()
    end
end

function imgui.CenterText(text)
    local width = imgui.GetWindowWidth()
    local size = imgui.CalcTextSize(text)
    imgui.SetCursorPosX((width - size.x) / 2)
    imgui.Text(text)
end

-- Раскладки из твоего оригинала
keyboards = {
    {{{'Esc', 27}, {'F1', 112}, {'F2', 113}, {'F3', 114}, {'F4', 115}, {'F5', 116}, {'F6', 117}, {'F7', 118}, {'F8', 119}, {'F9', 120}, {'F10', 121}, {'F11', 122}, {'F12', 123}}, {{'~', 192}, {'1', 49}, {'2', 50}, {'3', 51}, {'4', 52}, {'5', 53}, {'6', 54}, {'7', 55}, {'8', 56}, {'9', 57}, {'0', 48}, {'-', 189}, {'=', 187}, {'BkSp', 8}}, {{'Tab', 9}, {'Q', 81}, {'W', 87}, {'E', 69}, {'R', 82}, {'T', 84}, {'Y', 89}, {'U', 85}, {'I', 73}, {'O', 79}, {'P', 80}, {'[', 219}, {']', 221}, {'\\', 220}}, {{'Caps', 20}, {'A', 65}, {'S', 83}, {'D', 68}, {'F', 70}, {'G', 71}, {'H', 72}, {'J', 74}, {'K', 75}, {'L', 76}, {';', 186}, {"'", 222}, {'Enter', 13}}, {{'Shift', 16}, {'Z', 90}, {'X', 88}, {'C', 67}, {'V', 86}, {'B', 66}, {'N', 78}, {'M', 77}, {',', 188}, {'.', 190}, {'/', 191}, {'Shift ', 16}}, {{'Ctrl', 17}, {'Win', 91}, {'Alt', 18}, {'Space', 32}, {'Alt ', 18}, {'Win ', 91}, {'List', 93}, {'Ctrl ', 17}}},
    {{{'~', 192}, {'1', 49}, {'2', 50}, {'3', 51}, {'4', 52}, {'5', 53}, {'6', 54}, {'7', 55}, {'8', 56}, {'9', 57}, {'0', 48}, {'-', 189}, {'=', 187}, {'BkSp', 8}}, {{'Tab', 9}, {'Q', 81}, {'W', 87}, {'E', 69}, {'R', 82}, {'T', 84}, {'Y', 89}, {'U', 85}, {'I', 73}, {'O', 79}, {'P', 80}, {'[', 219}, {']', 221}, {'\\', 220}}, {{'Caps', 20}, {'A', 65}, {'S', 83}, {'D', 68}, {'F', 70}, {'G', 71}, {'H', 72}, {'J', 74}, {'K', 75}, {'L', 76}, {';', 186}, {"'", 222}, {'Enter', 13}}, {{'Shift', 16}, {'Z', 90}, {'X', 88}, {'C', 67}, {'V', 86}, {'B', 66}, {'N', 78}, {'M', 77}, {',', 188}, {'.', 190}, {'/', 191}, {'Shift ', 16}}, {{'Ctrl', 17}, {'Win', 91}, {'Alt', 18}, {'Space', 32}, {'Alt ', 18}, {'Win ', 91}, {'List', 93}, {'Ctrl ', 17}}},
    {{{'1', 49}, {'2', 50}, {'3', 51}}, {{'4', 52}, {'5', 53}, {'6', 54}}, {{'7', 55}, {'8', 56}, {'9', 57}}, {{'0', 48}}},
    {{{'1', 49}, {'2', 50}, {'3', 51}, {'4', 52}, {'5', 53}, {'6', 54}, {'7', 55}, {'8', 56}, {'9', 57}, {'0', 48}}},
    {{{'W', 87}}, {{'A', 65}, {'S', 83}, {'D', 68}}}
}

styles = {
    [0] = function() imgui.GetStyle().Colors[imgui.Col.ButtonActive] = imgui.ImVec4(0.16, 1.00, 0.11, 1.00) end,
    [1] = function() imgui.GetStyle().Colors[imgui.Col.ButtonActive] = imgui.ImVec4(1.00, 0.11, 0.11, 1.00) end,
    [2] = function() imgui.GetStyle().Colors[imgui.Col.ButtonActive] = imgui.ImVec4(1.00, 0.11, 0.89, 1.00) end,
    [3] = function() imgui.GetStyle().Colors[imgui.Col.ButtonActive] = imgui.ImVec4(0.44, 0.11, 1.00, 1.00) end,
    [4] = function() imgui.GetStyle().Colors[imgui.Col.ButtonActive] = imgui.ImVec4(1.00, 0.11, 0.35, 1.00) end,
    [5] = function() imgui.GetStyle().Colors[imgui.Col.ButtonActive] = imgui.ImVec4(1.00, 0.89, 0.11, 1.00) end,
}
 

Вложения

  • treningcaptchi_0.4.lua
    253.9 KB · Просмотры: 8
  • kb1.lua
    7.6 KB · Просмотры: 12
Последнее редактирование: