Помогите с inputtext

boy next door

Участник
Автор темы
217
18
Версия MoonLoader
.026-beta
Приветос.
Короче, у меня случилась проблемка.
Если я ввожу любой символ в imputtext, то скрипт крашит или флудит символом "@", само по себе.
Все переменные есть.
Вот само окно:
1704802742396.png

Code:

Lua:
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8
local ffi = require 'ffi'
local str, sizeof = ffi.string, ffi.sizeof
local input_setleader = imgui.new.char(64)
local input_setsupport = imgui.new.char(64)
local new = imgui.new
local show = imgui.new.bool(false)


function main()
    sampAddChatMessage('Helper загуржен.', 0xffcc00)
    sampRegisterChatCommand('chelp', function() show[0] = not show[0] end) 
    wait(-1)
end

imgui.OnFrame(function() return show[0] and not isGamePaused() end, function()
    imgui.SetNextWindowPos(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver, imgui.ImVec2(1, 1))
    imgui.SetNextWindowSize(imgui.ImVec2(370, 190), imgui.Cond.FirstUseEver)
    input_setleader = imgui.new.char(64)
    input_setsupport = imgui.new.char(64)
    imgui.Begin(u8'Выдача должности', show, imgui.WindowFlags.NoResize)
    imgui.Text(u8'ID игрока, ID организации, ID скина (1-311)')
    imgui.InputText(u8'Введите значение', input_setleader, sizeof(input_setleader))
    sampSendChat('/setleader '..u8:decode(str(input_setleader)))
    imgui.Button(u8'Назначить на должность')
    imgui.Text(u8'ID игрока')
    imgui.InputText(u8'Введите значение', input_setsupport, sizeof(input_setsupport))
    sampSendChat('/setsupport '..u8:decode(str(input_setsupport)))
    imgui.Button(u8'Назначить на должность')
    imgui.End()
end)
 
Последнее редактирование:
Решение
1. Ты флудишь каждый кадр в чат (Считай, что OnFrame - это почти беск. цикл, но вызывается каждый кадр. 100 FPS - 100 раз в сек. (или не в сек. хз.):
1704811354616.png

Тебе их надо перенести в соответствующие кнопки:
Lua:
if imgui.Button(u8"Назначить на должность##1") then -- Про "##1" объяснил ниже.
    sampSendChat('/setleader '..u8:decode(str(input_setleader)))
end

if imgui.Button(u8"Назначить на должность##2") then -- Про "##2" объяснил ниже.
    sampSendChat('/setsupport '..u8:decode(str(input_setsupport)))
end
2. У тебя переменные
Lua:
input_setleader = imgui.new.char(64)
input_setsupport = imgui.new.char(64)
объявляются каждый кадр. Перенеси их вверх, где-то под 10-й строчкой, где local show.

3. Кнопки с одинаковыми...