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

w99zzl1

Участник
Автор темы
117
12
Версия 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

Участник
Автор темы
117
12
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

Участник
Автор темы
117
12
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

Известный
989
351
Неа... Вот что отправляется (при нажатии на "отправить"
Посмотреть вложение 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,988
2,190
 

w99zzl1

Участник
Автор темы
117
12
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

Известный
989
351
🤦‍♂️
Но все равно. Магический код! Теперь, все что я пишу в поле, отправляется в чат (после нажатия кнопки "отправить", но после текста следует черная пустая строка (как на скрине выше) и не получается сделать скриншот!!! Пишет 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

Участник
Автор темы
117
12
Покажи как ты 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

Известный
989
351
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

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


Так а тебе нахуй 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")```