Нужен скрипт по типу биндера но в чате

Любитель Детройта...

Известный
Автор темы
501
96
здарова великие хацкеры и програмисты, короче у меня проблема с клавиатурой и нужен скрипт который при открытом чате по нажатию альт + 1 будет писать букву «К» после чего можно дальше самому писать в чате... Зачем мне это¿ вот как я пишу сейчас:
"Как деLа?" - не работает русская буква Л, английская К работает...
"Щапка" - не работает Ш, пишу из-за этогобукву Щ
Ну я думаю вы поняLи мою про6Lему... Просто нужно что 6ы при открытом чате я жмякаL "Alt + 1" и в чат выводиLо 6укву К допустим и при этом чат не закрываLся и не отправLяLось всё на сервер, а даLьще я мог писать и сам отправить что написаL...
Есть идеи?
 
Решение
В массиве с 5 по 9 - по образу и подобию, добавляешь любые тебе буквы\слова и кнопки

Код:
local key = require 'vkeys'
local memory = require 'memory'

local active = {false, false}
local buttons = {
    {'кк', key.VK_1}, -- Alt + 1 = кк ; Ctrl + 1 = КК
    {'л', key.VK_2}, -- Alt + 2 = л   ; Ctrl + 2 = Л
    {'ш', key.VK_O} -- Alt + щ\o = ш  ; Ctrl + щ\o = Ш
}

local un_rus = {[string.char(184)] = string.char(168)}
for i = 192, 223 do local a, A = string.char(i + 32), string.char(i); un_rus[a] = A end

addEventHandler("onWindowMessage", function(msg, wp)
    if isSampAvailable() then
        if sampIsChatInputActive() and (msg == 256 or msg == 260) then
            if wp == 18 then active = {true, false} end
            if wp == 17 then...

Kvisk

Известный
212
223
В массиве с 5 по 9 - по образу и подобию, добавляешь любые тебе буквы\слова и кнопки

Код:
local key = require 'vkeys'
local memory = require 'memory'

local active = {false, false}
local buttons = {
    {'кк', key.VK_1}, -- Alt + 1 = кк ; Ctrl + 1 = КК
    {'л', key.VK_2}, -- Alt + 2 = л   ; Ctrl + 2 = Л
    {'ш', key.VK_O} -- Alt + щ\o = ш  ; Ctrl + щ\o = Ш
}

local un_rus = {[string.char(184)] = string.char(168)}
for i = 192, 223 do local a, A = string.char(i + 32), string.char(i); un_rus[a] = A end

addEventHandler("onWindowMessage", function(msg, wp)
    if isSampAvailable() then
        if sampIsChatInputActive() and (msg == 256 or msg == 260) then
            if wp == 18 then active = {true, false} end
            if wp == 17 then active = {true, true} end

            for _, keys in ipairs(buttons) do
                if active[1] and wp == keys[2] then
                    consumeWindowMessage(true, false)
                    local txt = sampGetChatInputText()
                    local gCur = getChatCursorPos()

                    sampSetChatInputText(txt:sub(1, gCur)..(active[2] and keys[1]:nupper() or keys[1])..txt:sub(gCur+1))
                    setChatCursorPos(gCur + #keys[1])
                    break
                end
            end
        end
        if (msg == 257 or msg == 261) and (wp == 18 or wp == 17) then
            active = {false, false}
        end
    end
end)

function getChatCursorPos()
    local pEditBox = memory.getuint32(sampGetInputInfoPtr() + 0x08, true)
    return memory.getuint8(pEditBox + 0x119, true)
end
function setChatCursorPos(pos)
    local pEditBox = memory.getuint32(sampGetInputInfoPtr() + 0x08, true)
    memory.setuint8(pEditBox + 0x119, pos, true)
    memory.setuint8(pEditBox + 0x11E, pos, true)
end
function string.nupper(s)
    local s, res = string.upper(s), {}
    for i=1, #s do
        local ch = s:sub(i, i)
        res[i] = un_rus[ch] or ch
    end
    return table.concat(res)
end
 
Последнее редактирование:

Любитель Детройта...

Известный
Автор темы
501
96
В массиве с 5 по 9 - по образу и подобию, добавляешь любые тебе буквы\слова и кнопки

Код:
local key = require 'vkeys'
local memory = require 'memory'

local active = {false, false}
local buttons = {
    {'кк', key.VK_1}, -- Alt + 1 = кк ; Ctrl + 1 = КК
    {'л', key.VK_2}, -- Alt + 2 = л   ; Ctrl + 2 = Л
    {'ш', key.VK_O} -- Alt + щ\o = ш  ; Ctrl + щ\o = Ш
}

local un_rus = {[string.char(184)] = string.char(168)}
for i = 192, 223 do local a, A = string.char(i + 32), string.char(i); un_rus[a] = A end

addEventHandler("onWindowMessage", function(msg, wp)
    if isSampAvailable() then
        if sampIsChatInputActive() and (msg == 256 or msg == 260) then
            if wp == 18 then active = {true, false} end
            if wp == 17 then active = {true, true} end

            for _, keys in ipairs(buttons) do
                if active[1] and wp == keys[2] then
                    consumeWindowMessage(true, false)
                    local txt = sampGetChatInputText()
                    local gCur = getChatCursorPos()

                    sampSetChatInputText(txt:sub(1, gCur)..(active[2] and keys[1]:nupper() or keys[1])..txt:sub(gCur+1))
                    setChatCursorPos(gCur + #keys[1])
                    break
                end
            end
        end
        if (msg == 257 or msg == 261) and (wp == 18 or wp == 17) then
            active = {false, false}
        end
    end
end)

function getChatCursorPos()
    local pEditBox = memory.getuint32(sampGetInputInfoPtr() + 0x08, true)
    return memory.getuint8(pEditBox + 0x119, true)
end
function setChatCursorPos(pos)
    local pEditBox = memory.getuint32(sampGetInputInfoPtr() + 0x08, true)
    memory.setuint8(pEditBox + 0x119, pos, true)
    memory.setuint8(pEditBox + 0x11E, pos, true)
end
function string.nupper(s)
    local s, res = string.upper(s), {}
    for i=1, #s do
        local ch = s:sub(i, i)
        res[i] = un_rus[ch] or ch
    end
    return table.concat(res)
end
cкрипт ра6очий спаси6о но есть загвостка при нажатии ком6инации, пишет не букву Л а символы по типу "РєР єР»"
с английским все норм, проблема с русскими буквами
 

Kvisk

Известный
212
223
cкрипт ра6очий спаси6о но есть загвостка при нажатии ком6инации, пишет не букву Л а символы по типу "РєР єР»"
с английским все норм, проблема с русскими буквами
Потому что кодировка lua скрипта должать быть - 1251
eYq5Br9.png

Частые вопросы
Как вывести текст на русском? Вместо русского текста у меня какие-то каракули.

Изменить кодировку файла скрипта на Windows-1251. В Atom: комбинация клавиш Ctrl+Shift+U, в Notepad++: меню Кодировки -> Кодировки -> Кириллица -> Windows-1251.
 
Последнее редактирование: