сохранение текста с поля imgui

w99zzl1

Участник
Автор темы
86
9
Версия MoonLoader
.026-beta
Привет! Отрывок кода:

Lua:
            if autoPiar[0] then
                imgui.Text(u8'Введите текст пиара:')
                imgui.InputText(u8"Input some text", textBuffer, 256)
            end
            if imgui.IsItemHovered() then
                imgui.SetTooltip(rpInviteFamilyTooltip)
            end
Помогите пожалуйста сделать так, чтобы после нажатия enter в поле ввода, введенный текст сохранялся, и выводился в чат каждые 10 минут (при включенной функции кншн, if autoPiar) (sampAddChatMessage)
 

w99zzl1

Участник
Автор темы
86
9
Lua:
-- If Enter TextInput:
if imgui.InputText(.., .., imgui.InputTextFlags.EnterReturnsTrue) then
    -- code...
end
ИзвиняюсЬ, а что с этим делать?)

У меня получилось вот так:


Lua:
if autoPiar[0] then
                    -- Добавляем поле ввода текста
                    imgui.Text(u8'Введите текст для отправки в чат:')
                    imgui.InputText(u8"Input some text", textBuffer, 256)
                if imgui.Button(u8"Отправить") then
                    sampAddChatMessage(textBuffer) -- Отправляем текст в чат 
                end
            end
теперь при нажатии на галочку (чекбокс) появляется поле с вводом. Усердным трудом у меня наконец то получилось кое как сделать что планировал, но как всегда, програма затупила и я потерял свой код😭😭 Там я добавил переменные, помню textBuffet_t, и функцию отвечающую за отправку текста в чат, потому что отправляется пустое поле. Помогите пожалуйста!
 
Последнее редактирование:

w99zzl1

Участник
Автор темы
86
9
Lua:
local str = u8:decode(ffi.string(textBuffer))
sampAddChatMessage(str, -1) -- Отправляем текст в чат
Неа... Вот что отправляется (при нажатии на "отправить"
изображение_2024-09-02_001820210.png

Код:

Lua:
            if imgui.Checkbox(u8'Auto-Piar', autoPiar) then
                ini.setting.enable_checkbox3 = autoPiar[0] -- тут вписываем значение
                local str = u8:decode(ffi.string(textBuffer))
                sampAddChatMessage(str, -1) -- Отправляем текст в чат
                inicfg.save(ini, "Example.ini") -- сохраняем конфиг
            end

не нужно случайно создавать функцию для autoPiar?

Увидел, что не туда вставил))

теперь вот код:
Lua:
            if imgui.Checkbox(u8'Auto-Piar', autoPiar) then
                ini.setting.enable_checkbox3 = autoPiar[0] -- тут вписываем значение
                inicfg.save(ini, "Example.ini") -- сохраняем конфиг
            end
                if autoPiar[0] then
                    -- Добавляем поле ввода текста
                    imgui.Text(u8'Введите текст для отправки в чат:')
                    imgui.InputText(u8"Input some text", textBuffer, 256)
                if imgui.Button(u8"Отправить") then
                    local str = u8:decode(ffi.string(textBuffer)) -- строка человека выше)
                    sampAddChatMessage(str, -1) -- Отправляем текст в чат
                end
            end
но теперь при нажатии на кнопку "отправить" скрипт крашится с ошибкой:
[ML] (error) Family Helper: D:\SAMP ULTRA\moonloader\Family-Helper.lua:277: attempt to index global 'ffi' (a nil value)
stack traceback:
D:\SAMP ULTRA\moonloader\Family-Helper.lua:277: in function '_draw'
D:\SAMP ULTRA\moonloader\lib\mimgui\init.lua:107: in function <D:\SAMP ULTRA\moonloader\lib\mimgui\init.lua:91>
[ML] (error) Family Helper: Script died due to an error. (01B2D0E4)
(Код который предоставлен выше (не второй полный) вообще крашится при нажатии на галочку (чекбокс) Auto-Piar (при отключении) )
 

Lance_Sterling

Известный
963
336
Неа... Вот что отправляется (при нажатии на "отправить"
Посмотреть вложение 250883
Код:

Lua:
            if imgui.Checkbox(u8'Auto-Piar', autoPiar) then
                ini.setting.enable_checkbox3 = autoPiar[0] -- тут вписываем значение
                local str = u8:decode(ffi.string(textBuffer))
                sampAddChatMessage(str, -1) -- Отправляем текст в чат
                inicfg.save(ini, "Example.ini") -- сохраняем конфиг
            end

не нужно случайно создавать функцию для autoPiar?

Увидел, что не туда вставил))

теперь вот код:
Lua:
            if imgui.Checkbox(u8'Auto-Piar', autoPiar) then
                ini.setting.enable_checkbox3 = autoPiar[0] -- тут вписываем значение
                inicfg.save(ini, "Example.ini") -- сохраняем конфиг
            end
                if autoPiar[0] then
                    -- Добавляем поле ввода текста
                    imgui.Text(u8'Введите текст для отправки в чат:')
                    imgui.InputText(u8"Input some text", textBuffer, 256)
                if imgui.Button(u8"Отправить") then
                    local str = u8:decode(ffi.string(textBuffer)) -- строка человека выше)
                    sampAddChatMessage(str, -1) -- Отправляем текст в чат
                end
            end
но теперь при нажатии на кнопку "отправить" скрипт крашится с ошибкой:
[ML] (error) Family Helper: D:\SAMP ULTRA\moonloader\Family-Helper.lua:277: attempt to index global 'ffi' (a nil value)
stack traceback:
D:\SAMP ULTRA\moonloader\Family-Helper.lua:277: in function '_draw'
D:\SAMP ULTRA\moonloader\lib\mimgui\init.lua:107: in function <D:\SAMP ULTRA\moonloader\lib\mimgui\init.lua:91>
[ML] (error) Family Helper: Script died due to an error. (01B2D0E4)
(Код который предоставлен выше (не второй полный) вообще крашится при нажатии на галочку (чекбокс) Auto-Piar (при отключении) )
local ffi = require("ffi")

В начало кода
 

MLycoris

На вид оружие массового семяизвержения
Проверенный
1,992
2,186
 

w99zzl1

Участник
Автор темы
86
9
local ffi = require("ffi")

В начало кода
🤦‍♂️
Но все равно. Магический код! Теперь, все что я пишу в поле, отправляется в чат (после нажатия кнопки "отправить", но после текста следует черная пустая строка (как на скрине выше) и не получается сделать скриншот!!! Пишет unable to save screenshot. Ещё не пишутся в поле русские символы(
Код:

Lua:
            if imgui.Checkbox(u8'Auto-Piar', autoPiar) then
                ini.setting.enable_checkbox3 = autoPiar[0] -- тут вписываем значение
                inicfg.save(ini, "Example.ini") -- сохраняем конфиг
            end
                if autoPiar[0] then
                    -- Добавляем поле ввода текста
                    imgui.Text(u8'Введите текст для отправки в чат:')
                    imgui.InputText(u8"Input some text", textBuffer, 256)
                if imgui.Button(u8"Отправить") then
                    local str = u8:decode(ffi.string(textBuffer))
                    sampAddChatMessage(str, -1) -- Отправляем текст в чат
                sampAddChatMessage(textBuffer)
                end
            end
                if imgui.IsItemHovered() then
                    imgui.SetTooltip(rpInviteFamilyTooltip)
                end
            if imgui.IsItemHovered() then
                imgui.SetTooltip(rpInviteFamilyTooltip)
            end
 

Lance_Sterling

Известный
963
336
🤦‍♂️
Но все равно. Магический код! Теперь, все что я пишу в поле, отправляется в чат (после нажатия кнопки "отправить", но после текста следует черная пустая строка (как на скрине выше) и не получается сделать скриншот!!! Пишет unable to save screenshot. Ещё не пишутся в поле русские символы(
Код:

Lua:
            if imgui.Checkbox(u8'Auto-Piar', autoPiar) then
                ini.setting.enable_checkbox3 = autoPiar[0] -- тут вписываем значение
                inicfg.save(ini, "Example.ini") -- сохраняем конфиг
            end
                if autoPiar[0] then
                    -- Добавляем поле ввода текста
                    imgui.Text(u8'Введите текст для отправки в чат:')
                    imgui.InputText(u8"Input some text", textBuffer, 256)
                if imgui.Button(u8"Отправить") then
                    local str = u8:decode(ffi.string(textBuffer))
                    sampAddChatMessage(str, -1) -- Отправляем текст в чат
                sampAddChatMessage(textBuffer)
                end
            end
                if imgui.IsItemHovered() then
                    imgui.SetTooltip(rpInviteFamilyTooltip)
                end
            if imgui.IsItemHovered() then
                imgui.SetTooltip(rpInviteFamilyTooltip)
            end
Покажи как ты encoding подключил
 

w99zzl1

Участник
Автор темы
86
9
Покажи как ты encoding подключил
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

Спасибо! Попытался сделать, вышло вот так:
Код:
local setting2 = inicfg.load({
    nigger = {
        inputsaved = '',
        autoPiar = false,
    }
}, 'Example.ini')

-- код

            if imgui.Checkbox(u8'Auto-Piar', autoPiar) then
                ini.setting.enable_checkbox3 = autoPiar[0] -- тут вписываем значение
                inicfg.save(ini, "Example.ini") -- сохраняем конфиг
            end
                if autoPiar[0] then
                    -- Добавляем поле ввода текста
                    imgui.Text(u8'Введите текст для отправки в чат:')
                    if imgui.InputText('##Add', inputt, 256) then
                        settings.nigger.inputsaved = u8:decode(ffi.string(inputt)) -- Упрощённая запись
                        inicfg.save(settings, 'Test.ini')
                    end
                    imgui.Text(inputt)
                    -- Кнопка отправки в чат
                    if imgui.Button(u8'Вывести в чат') then
                        sampAddChatMessage(settings.nigger.inputsaved, -1)
                    end
                    -- если чекбокс активен и прошло 10 секунд
                    if autoPiar[0] then
                        local currentTime = os.clock()
                        if currentTime - lastSendTime >= sendInterval then
                            sampAddChatMessage(settings.nigger.inputsaved, -1) -- Отправка сообщения
                            lastSendTime = currentTime -- Обновляем время последней отправки
                        end
                    end
                if imgui.Button(u8"Отправить") then
                    sampAddChatMessage(textBuffer_t) -- Отправляем текст в чат 
                end
            end
Думал уже все работает, но когда я начинаю вводить текст в поле - скрипт крашится с ошибкой -
[ML] (error) Family Helper: D:\SAMP ULTRA\moonloader\Family-Helper.lua:290: attempt to index field 'nigger' (a nil value)
stack traceback:
D:\SAMP ULTRA\moonloader\Family-Helper.lua:290: in function '_draw'
D:\SAMP ULTRA\moonloader\lib\mimgui\init.lua:107: in function <D:\SAMP ULTRA\moonloader\lib\mimgui\init.lua:91>
[ML] (error) Family Helper: Script died due to an error. (1A16509C)
Помогите пожалуйста, что я делаю не так?(
 
Последнее редактирование:

Lance_Sterling

Известный
963
336
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8


Спасибо! Попытался сделать, вышло вот так:
Код:
local setting2 = inicfg.load({
    nigger = {
        inputsaved = '',
        autoPiar = false,
    }
}, 'Example.ini')

-- код

            if imgui.Checkbox(u8'Auto-Piar', autoPiar) then
                ini.setting.enable_checkbox3 = autoPiar[0] -- тут вписываем значение
                inicfg.save(ini, "Example.ini") -- сохраняем конфиг
            end
                if autoPiar[0] then
                    -- Добавляем поле ввода текста
                    imgui.Text(u8'Введите текст для отправки в чат:')
                    if imgui.InputText('##Add', inputt, 256) then
                        settings.nigger.inputsaved = u8:decode(ffi.string(inputt)) -- Упрощённая запись
                        inicfg.save(settings, 'Test.ini')
                    end
                    imgui.Text(inputt)
                    -- Кнопка отправки в чат
                    if imgui.Button(u8'Вывести в чат') then
                        sampAddChatMessage(settings.nigger.inputsaved, -1)
                    end
                    -- если чекбокс активен и прошло 10 секунд
                    if autoPiar[0] then
                        local currentTime = os.clock()
                        if currentTime - lastSendTime >= sendInterval then
                            sampAddChatMessage(settings.nigger.inputsaved, -1) -- Отправка сообщения
                            lastSendTime = currentTime -- Обновляем время последней отправки
                        end
                    end
                if imgui.Button(u8"Отправить") then
                    sampAddChatMessage(textBuffer_t) -- Отправляем текст в чат
                end
            end
Думал уже все работает, но когда я начинаю вводить текст в поле - скрипт крашится с ошибкой -
[ML] (error) Family Helper: D:\SAMP ULTRA\moonloader\Family-Helper.lua:290: attempt to index field 'nigger' (a nil value)
stack traceback:
D:\SAMP ULTRA\moonloader\Family-Helper.lua:290: in function '_draw'
D:\SAMP ULTRA\moonloader\lib\mimgui\init.lua:107: in function <D:\SAMP ULTRA\moonloader\lib\mimgui\init.lua:91>
[ML] (error) Family Helper: Script died due to an error. (1A16509C)
Помогите пожалуйста, что я делаю не так?(
Ебаный в рот, был бы я у пк.. но тем кому не лень помочь - скинь им полный код

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


Спасибо! Попытался сделать, вышло вот так:
Код:
local setting2 = inicfg.load({
    nigger = {
        inputsaved = '',
        autoPiar = false,
    }
}, 'Example.ini')

-- код

            if imgui.Checkbox(u8'Auto-Piar', autoPiar) then
                ini.setting.enable_checkbox3 = autoPiar[0] -- тут вписываем значение
                inicfg.save(ini, "Example.ini") -- сохраняем конфиг
            end
                if autoPiar[0] then
                    -- Добавляем поле ввода текста
                    imgui.Text(u8'Введите текст для отправки в чат:')
                    if imgui.InputText('##Add', inputt, 256) then
                        settings.nigger.inputsaved = u8:decode(ffi.string(inputt)) -- Упрощённая запись
                        inicfg.save(settings, 'Test.ini')
                    end
                    imgui.Text(inputt)
                    -- Кнопка отправки в чат
                    if imgui.Button(u8'Вывести в чат') then
                        sampAddChatMessage(settings.nigger.inputsaved, -1)
                    end
                    -- если чекбокс активен и прошло 10 секунд
                    if autoPiar[0] then
                        local currentTime = os.clock()
                        if currentTime - lastSendTime >= sendInterval then
                            sampAddChatMessage(settings.nigger.inputsaved, -1) -- Отправка сообщения
                            lastSendTime = currentTime -- Обновляем время последней отправки
                        end
                    end
                if imgui.Button(u8"Отправить") then
                    sampAddChatMessage(textBuffer_t) -- Отправляем текст в чат
                end
            end
Думал уже все работает, но когда я начинаю вводить текст в поле - скрипт крашится с ошибкой -
[ML] (error) Family Helper: D:\SAMP ULTRA\moonloader\Family-Helper.lua:290: attempt to index field 'nigger' (a nil value)
stack traceback:
D:\SAMP ULTRA\moonloader\Family-Helper.lua:290: in function '_draw'
D:\SAMP ULTRA\moonloader\lib\mimgui\init.lua:107: in function <D:\SAMP ULTRA\moonloader\lib\mimgui\init.lua:91>
[ML] (error) Family Helper: Script died due to an error. (1A16509C)
Помогите пожалуйста, что я делаю не так?(
Так а тебе нахуй imgui.Text(inputt)? Убери

Конфиг к которому ты обращаешься settings, а который подгрузил setting2
 

w99zzl1

Участник
Автор темы
86
9
Ебаный в рот, был бы я у пк.. но тем кому не лень помочь - скинь им полный код


Так а тебе нахуй imgui.Text(inputt)? Убери

Конфиг к которому ты обращаешься settings, а который подгрузил setting2
Привет ещё раз. Восстановив свои нервы, решил достигнуть задуманного)
получилось так:


Lua:
            if imgui.Checkbox(u8'Auto-Piar', autoPiar) then
                ini.setting2.enable_checkbox3 = autoPiar[0] -- тут вписываем значение
                inicfg.save(ini, "Example.ini") -- сохраняем конфиг
            end
                if autoPiar[0] then
                    -- Добавляем поле ввода текста
                    imgui.Text(u8'Введите текст для отправки в чат:')
                    if imgui.InputText('##Add', inputt, 256) then
                        setting2.nigger.inputsaved = u8:decode(ffi.string(inputt)) -- Упрощённая запись
                        inicfg.save(setting2, 'Test.ini')
                    end
                    -- Кнопка отправки в чат
                    if imgui.Button(u8'Вывести в чат') then
                        sampAddChatMessage(setting2.nigger.inputsaved, -1)
                    end
                    -- если чекбокс активен и прошло 10 секунд
                    if autoPiar[0] then
                        local currentTime = os.clock()
                        if currentTime - lastSendTime >= sendInterval then
                            sampAddChatMessage(setting2.nigger.inputsaved, -1) -- Отправка сообщения
                            lastSendTime = currentTime -- Обновляем время последней отправки
                        end
                    end
                if imgui.Button(u8"Отправить") then
                    sampAddChatMessage(textBuffer_t) -- Отправляем текст в чат
                end
            end

Но при активации скрипта самп просто вылетает без каких либо ошибок. Просто вылетает. Возможно ли это из за того что у меня 2 if AutoPiar или 2 кнопки отправки? Я их попытался убрать, но это не помогло. Помогите пожалуйста


UPD: а, ну и вот эти три "штуки":
```local setting2 = inicfg.load({
nigger = {
inputsaved = '',
autoPiar = false,
}
}, 'Example.ini')

local textBuffer = imgui.new.char[256]()
local ffi = require("ffi")```