SA:MP код луа ввод текста

ZaeJ

Участник
Автор темы
35
1
Добрый день, подскажите код для луа, с помощью которого при нажатии клавиши луашник будет сам открывать чат и писать текст(за определенное кд)
т.е. Чтоб на фрапсе было видно, что я пишу текст от руки, а не биндером
 

meowprd

Тот самый Котовский
Проверенный
1,302
731
Для SAMP на Lua можно использовать библиотеку SAMPFuncs (если ты играешь через MoonLoader).

chat:
local sampev = require 'lib.samp.events'

-- Настройки
local hotkey = 0x54  -- Клавиша "T"
local message = "Привет, это тестовое сообщение!"
local cooldown = 5000 -- Задержка между отправками (в миллисекундах)
local lastTime = 0

function sendMessage()
    if os.clock() * 1000 - lastTime > cooldown then
        lastTime = os.clock() * 1000

        -- Открываем чат
        sampSendChat("/")

        -- Печатаем текст по буквам
        for i = 1, #message do
            sampSendChat(message:sub(1, i))
            wait(50) -- Задержка между символами для эффекта "ручного ввода"
        end

        -- Нажимаем Enter
        sampSendChat("{ENTER}")
    end
end

function main()
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage("{00FF00}Автоматический чат загружен!", -1)

    while true do
        if isKeyDown(hotkey) then
            sendMessage()
        end
        wait(10)
    end
end
Какой-то не очень ответ дала нейросетка
Не заведется так, как хочет этого ТС
 

ZaeJ

Участник
Автор темы
35
1
ahk макрос сделай да и всё
в АХК не встречал такой функции, чтоб можно было задать свое время, за которое оно будет вводить текст

Забил запрос в чат гпт - вот что выдал
Lua:
script_name("AutoType")
script_author("Твой Ник")

local sampev = require "lib.samp.events"
local ffi = require "ffi"

local activationKey = 0x54  -- Код клавиши "T"
local message = "Привет, мир!"  -- Текст сообщения
local totalTypeTime = 2000   -- Время на ввод всего сообщения (мс)

function main()
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage("AutoType загружен. Нажмите T для ввода текста.", 0x00FF00)

    while true do
        wait(0)
        if wasKeyPressed(activationKey) and not isSampChatInputActive() then
            typeMessage()
        end
    end
end

function typeMessage()
    sampSendChat("/")  -- Открываем чат
    wait(200)          -- Ждём немного

    local charDelay = totalTypeTime / #message  -- Рассчитываем задержку между символами

    -- Вводим текст посимвольно
    for i = 1, #message do
        local char = message:sub(i, i)
        sampSetChatInputText(sampGetChatInputText() .. char)
        wait(math.random(charDelay * 0.8, charDelay * 1.2))  -- Добавляем рандомность для реалистичности
    end

    wait(300)  -- Финальная задержка
    sampSendChat("{ENTER}")  -- Отправляем сообщение
end
Проблема - не запускается луашник в игре

AutoHotKey:
#Persistent
#SingleInstance Force
SendMode Input
SetBatchLines -1

activationKey := "t"  ; Клавиша для активации ввода
chatKey := "F6"       ; Клавиша для открытия чата
message := "Привет, мир!"  ; Сообщение для ввода
totalTypeTime := 2000  ; Время на ввод всего текста (в миллисекундах)

~%activationKey%::
    ; Открываем чат
    Send, {%chatKey%}
    Sleep, 200

    ; Вычисляем задержку между символами
    charDelay := totalTypeTime / StrLen(message)

    ; Вводим текст посимвольно
    Loop, Parse, message
    {
        Send, %A_LoopField%
        Random, randDelay, charDelay * 0.8, charDelay * 1.2
        Sleep, randDelay
    }

    ; Завершаем ввод (Enter)
    Sleep, 300
    Send, {Enter}
return
Попросил этот же код переписать в AHK
 
Последнее редактирование:

Dmitriy Makarov

25.05.2021
Проверенный
2,508
1,136
 

meowprd

Тот самый Котовский
Проверенный
1,302
731
в АХК не встречал такой функции, чтоб можно было задать свое время, за которое оно будет вводить текст

Забил запрос в чат гпт - вот что выдал
Lua:
script_name("AutoType")
script_author("Твой Ник")

local sampev = require "lib.samp.events"
local ffi = require "ffi"

local activationKey = 0x54  -- Код клавиши "T"
local message = "Привет, мир!"  -- Текст сообщения
local totalTypeTime = 2000   -- Время на ввод всего сообщения (мс)

function main()
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage("AutoType загружен. Нажмите T для ввода текста.", 0x00FF00)

    while true do
        wait(0)
        if wasKeyPressed(activationKey) and not isSampChatInputActive() then
            typeMessage()
        end
    end
end

function typeMessage()
    sampSendChat("/")  -- Открываем чат
    wait(200)          -- Ждём немного

    local charDelay = totalTypeTime / #message  -- Рассчитываем задержку между символами

    -- Вводим текст посимвольно
    for i = 1, #message do
        local char = message:sub(i, i)
        sampSetChatInputText(sampGetChatInputText() .. char)
        wait(math.random(charDelay * 0.8, charDelay * 1.2))  -- Добавляем рандомность для реалистичности
    end

    wait(300)  -- Финальная задержка
    sampSendChat("{ENTER}")  -- Отправляем сообщение
end
Проблема - не запускается луашник в игре
ровно такой же ответ давал какой-то паренек раньше.

/test Привет, мир
Lua:
local delay = 500 -- задержка между символами (в мс)

function main()
    while not isSampAvailable() do wait(100) end

    sampRegisterChatCommand("test", function(message)
      if not message then sampAddChatMessage("Usage: /test [message]", -1) end
      lua_thread.create(function()
        sampSetChatInputEnabled(true)
        wait(50)
        for i = 1, #message do
            local char = message:sub(i, i)
            sampSetChatInputText(sampGetChatInputText() .. char)
            wait(delay)
        end
        sampSetChatInputText("")
        sampSendChat(message)
        sampSetChatInputEnabled(false)
      end)
    end)
    wait(-1)
end