вывод сообщения в чат по кнопке imgui с условием

johnnysins

Участник
Автор темы
29
1

здравствуйте, как сделать чтобы выводилось сообщение введенное в строку в чат по нажатию кнопки в imgui окошке, при этом чтобы если строка была пустая выводилось сообщение что то типа вы не ввели ничего в строку короче просто посмотрите код​

Код:
function imgui.OnDrawFrame()
    imgui.Begin(u8'menu', main_window_state)
    imgui.InputText(u8'вводить текст сюда', text_buffer)
    if imgui.Button('press me') but #text_buffer == 0 then
        sampAddChatMessage(u8'вы не ввели число', -1)
    else
        sampAddChatMessage(u8'вы указали аргумент: ' .. text_buffer, -1)
    end
      --  sampAddChatMessage(u8:decode(text_buffer.v), -1)
    imgui.End()
end
1741117356577.png

могу при необходимости скинуть весь код​

 

johnnysins

Участник
Автор темы
29
1
ну ты был на правильном пути:

Lua:
    if imgui.Button('press me') then
        if #text_buffer == 0 then
            sampAddChatMessage(u8'вы не ввели число', -1)
        else
            sampAddChatMessage(u8'вы указали аргумент: ' .. text_buffer, -1)
        end
    end
      --  sampAddChatMessage(u8:decode(text_buffer.v), -1)
Код:
require 'lib.moonloader'
local imgui = require 'imgui'
local encoding = require 'encoding'

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

local main_window_state = imgui.ImBool(false)
local text_buffer = imgui.ImBuffer(256)

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end

    imgui.Process = false

    sampRegisterChatCommand('imgui', cmd_imgui)

    while true do
        wait(0)
        if main_window_state.v == false then
            imgui.Process = false
        end
    end
end

function cmd_imgui(arg)
    main_window_state.v = not main_window_state.v
    imgui.Process = main_window_state.v
end

function imgui.OnDrawFrame()
    imgui.Begin(u8'menu', main_window_state)
    imgui.InputText(u8'вводить текст сюда', text_buffer)
    if imgui.Button('press me') then
        if #text_buffer == 0 then
            sampAddChatMessage('вы не ввели слово в строку', -1)
        else
            sampAddChatMessage('вы написали: ' .. (text_buffer.v), -1)
        end
    end
    imgui.End()
end
не робит почему то, вылезает варнинг и скрипт крашится
 

johnnysins

Участник
Автор темы
29
1
ахах but, в следущий раз добавь please и заработает))

moonloader.log в студию
аххахахаха)
[ML] (error) imgui.lua: C:\Users\L\Desktop\gta sa\moonloader\imgui.lua:35: attempt to get length of upvalue 'text_buffer' (a userdata value)
stack traceback:
C:\Users\L\Desktop\gta sa\moonloader\imgui.lua:35: in function 'OnDrawFrame'
C:\Users\L\Desktop\gta sa\moonloader\lib\imgui.lua:1378: in function <C:\Users\L\Desktop\gta sa\moonloader\lib\imgui.lua:1367>
[ML] (error) imgui.lua: Script died due to an error. (1125408C)
[ML] (error) imgui_notf.lua: cannot resume non-suspended coroutine
stack traceback:
[C]: in function 'SetMouseCursor'
C:\Users\L\Desktop\gta sa\moonloader\imgui_notf.lua:103: in function <C:\Users\L\Desktop\gta sa\moonloader\imgui_notf.lua:99>
[ML] (error) imgui_notf.lua: Script died due to an error. (11254834)

ахах but, в следущий раз добавь please и заработает))

moonloader.log в студию
скажи еще перед but запятую не поставил)
 
  • Ха-ха
Реакции: copypaste_scripter

johnnysins

Участник
Автор темы
29
1
Lua:
function imgui.OnDrawFrame()
    imgui.Begin(u8'menu', main_window_state)
    imgui.InputText(u8'вводить текст сюда', text_buffer)
    if imgui.Button('press me') then
        if text_buffer == 0 then
            sampAddChatMessage('вы не ввели слово в строку', -1)
        else
            sampAddChatMessage('вы написали: ' .. text_buffer.v, -1)
        end
    end
    imgui.End()
end
ребят, ну условие все равно не работает, в любом случае выполняется только эта строка :
Lua:
sampAddChatMessage('вы написали: ' .. text_buffer.v, -1)
вы тип меня тролллите или чо?

1741156608889.png