Проблема ввода текста в диалог

anastasiapopova

Новичок
Автор темы
5
0
Версия MoonLoader
Другое
Ну чтож, доброго вечера.
Проблема такая, хочу вывести сообщение в диалог по комбинации, ввожу комбинацию (в моем случае alt + 9) - реакции ноль.
Прошу мне помочь, очень буду благорна.
Прикрепляю скрин и код

Скрин как пример диалога

local send_text = '3432525262' текст тоже как пример

Lua:
script_name('Support Helper - Alpha Version') -- название скрипта
script_author('L/Bennett and ') -- автор скрипта
script_description('ну типо хелпер') -- описание скрипта

require "lib.moonloader" -- подключение библиотеки
local keys = require "vkeys" -- подключение клавиш
local sampev = require 'lib.samp.events'

local label = 0
local main_color = 0xFFFFFD
local main_color_text = "{FFFFAA}"
local white_color = "{FFFFFF}"
local dialog_id = 22 -- айди диалога
local send_text = '3432525262' -- текст который будет отправлен в качестве ответа на диалог

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    while true do
        wait(0)
        if isKeyDown(VK_MENU) and isKeyJustPressed(VK_9) then
            function sampev.onShowDialog(id, style, title, button1, button2, text)
                if id == dialog_id then
                    sampSendDialogResponse(dialog_id, nil, nil, send_text)
                    return false
                end
            end
        end
    end
end
 

Вложения

  • 2024-04-17_22-12-15.png
    2024-04-17_22-12-15.png
    55.9 KB · Просмотры: 24

Maxim25012

Известный
280
101
onShowDialog – это функция, которая будет выполняться после какого-то определённого события. В данном случае это событие – появление диалога. Выходит так, что при нажатии ALT + 9 будет задаваться функция для события, а не вызываться. Чтобы вставить текст в диалог, нужно использовать функцию sampSetCurrentDialogEditboxText(send_text), а чтобы получить ид диалога – sampGetCurrentDialogId().
 
  • Нравится
Реакции: anastasiapopova

anastasiapopova

Новичок
Автор темы
5
0
так чтоли?
Если нет, исправьте пожалуйста.

Lua:
script_name('Support Helper - Alpha Version') -- название скрипта
script_author('L/Bennett and ') -- автор скрипта
script_description('ну типо хелпер') -- описание скрипта

require "lib.moonloader" -- подключение библиотеки
local keys = require "vkeys" -- подключение клавиш
local sampev = require 'lib.samp.events'

local label = 0
local main_color = 0xFFFFFD
local main_color_text = "{FFFFAA}"
local white_color = "{FFFFFF}"
local send_text = '3432525262' -- текст который будет отправлен в качестве ответа на диалог

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    while true do
        wait(0)
        if isKeyDown(VK_MENU) and isKeyJustPressed(VK_9) then
            function sampev.onShowDialog(id, style, title, button1, button2, text)
                if id == dialog_id then
                    sampGetCurrentDialogId()
                    sampSetCurrentDialogEditboxText(send_text)
                    return false
                end   
            end
        end
    end
end
 

Kenshi.

Известный
274
121
либо можно вынести sampev.onShowDialog из main и там в переменную сохранять последний ид, либо в цикле получать айди диалога и сравнивать


еще возможная ошибка с keyJustPressed и isKeyDown - эти функции отличаются и по разному используются(но это не точно)
Lua:
script_name('Support Helper - Alpha Version') -- название скрипта
script_author('L/Bennett and ') -- автор скрипта
script_description('ну типо хелпер') -- описание скрипта

require "lib.moonloader" -- подключение библиотеки
local keys = require "vkeys" -- подключение клавиш
local sampev = require 'lib.samp.events'

local label = 0
local main_color = 0xFFFFFD
local main_color_text = "{FFFFAA}"
local white_color = "{FFFFFF}"
local send_text = '3432525262' -- текст который будет отправлен в качестве ответа на диалог

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    while true do
        wait(0)
        if isKeyDown(VK_MENU) and isKeyJustPressed(VK_9) then
                local id = sampGetCurrentDialogId()
                if id == dialog_id then
                    sampSetCurrentDialogEditboxText(send_text)
                end
            end
        end
    end
end
 
Последнее редактирование:
  • Нравится
Реакции: anastasiapopova

anastasiapopova

Новичок
Автор темы
5
0
либо можно вынести sampev.onShowDialog из main и там в переменную сохранять последний ид, либо в цикле получать айди диалога и сравнивать


еще возможная ошибка с keyJustPressed и isKeyDown - эти функции отличаются и по разному используются(но это не точно)
Lua:
script_name('Support Helper - Alpha Version') -- название скрипта
script_author('L/Bennett and ') -- автор скрипта
script_description('ну типо хелпер') -- описание скрипта

require "lib.moonloader" -- подключение библиотеки
local keys = require "vkeys" -- подключение клавиш
local sampev = require 'lib.samp.events'

local label = 0
local main_color = 0xFFFFFD
local main_color_text = "{FFFFAA}"
local white_color = "{FFFFFF}"
local send_text = '3432525262' -- текст который будет отправлен в качестве ответа на диалог

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    while true do
        wait(0)
        if isKeyDown(VK_MENU) and isKeyJustPressed(VK_9) then
                local id = sampGetCurrentDialogId()
                if id == dialog_id then
                    sampSetCurrentDialogEditboxText(send_text)
                end
            end
        end
    end
end
все же не работает
 

MLycoris

Режим чтения
Проверенный
1,821
1,860
все же не работает
Lua:
script_name('Support Helper - Alpha Version') -- название скрипта
script_author('L/Bennett and ') -- автор скрипта
script_description('ну типо хелпер') -- описание скрипта

require "lib.moonloader" -- подключение библиотеки

local send_text = '3432525262' -- текст который будет отправлен в качестве ответа на диалог

function main()
    while true do wait(0)
    if isKeyDown(VK_MENU) and wasKeyPressed(VK_9) and sampIsDialogActive() then
            sampSetCurrentDialogEditboxText(send_text)
        end
    end
end