imgui.Checkbox и удаление строк

турбодизельный унитаз2012

Участник
Автор темы
127
9
Версия MoonLoader
.026-beta
Всем привет.
Я пытался сделать чекбокс с возможностью удалять строки в чате, но там были проблемы.
Суть вопроса:
Как правильно и грамотно сделать imgui.Checkbox, если при его активации, он будет удалять строки?

Lua:
-- sozdaem
local delltext = new.bool()
--mimgui
if imgui.Checkbox(u8'Убрать оповещения в VIP-чате, сообщения от администраторов и прочий бред', delltext) then
--хз как сюда вставить штуку, чтобы при вкл чекбокса, event.OnServerMessage удалял текст, если офф, то не удалял.
end
--mimgui end
function event.OnServerMessage(col, text)
    if text:find('^%[.* VIP]') or text:find('^Администратор %w+_%w+') or text:find('^Следящий за .* %w+_%w+') or text:find('^Гл. следящий за .* %w+_%w+') then
    return false
    end
end
end
 
Решение
Вот даже попробуй это вставить в свой скрипт, оно не заработает при включении галочки чекбокса.
Не могу понять, почему..
Ну во-первых, крашит у тебя из-за этого:
1708664241427.png

После delltext должно быть [0] - delltext[0].

А во-вторых, даже если ты и добавишь [0], у тебя это не будет работать, так как ты его сразу вырубаешь, когда он включается:
1708664354346.png

Попробуй на это заменить:
Lua:
if imgui.Checkbox(u8'Убрать оповещения в VIP-чате, сообщения от администраторов и прочий бред', delltext) then
    sampAddChatMessage('Поебень в чате '..(delltext[0] and 'врублена' or 'вырублена'), -1)
end
Ну а с цветами поиграйся там сам.)
Screenshot_1.png

Screenshot_2.png


Ну в третьих, у тебя в регулярках кое-чего не хватает...

турбодизельный унитаз2012

Участник
Автор темы
127
9
Скинь строчки из чатлога или же скриншотом из игры, которых нужно скрывать.
Сейчас..
Есть 3 вида VIP
[Brone VIP], [Silver VIP] и [Govl VIP].
Есть сообщения от администраторов, которые будут мешать.
Вот такие:
Администратор Ник_Ник (Ник_Ник - замена настоящего ника, но с проверкой на ID и без её проверки), Следящий за %s, Главный следящий за %s
Так же:
Отправил SAN News (тел. 11888)


Сам текст у меня есть, но при включении самого чекбокса он крашит скрипт.
Lua:
[23:01:25.926800] (error)    SobesHelper.lua: F:\ATMOSPHERIC WINTER GTA\moonloader\SobesHelper.lua:144: bad argument #2 to 'Checkbox' (cannot convert 'bool' to 'bool *')
stack traceback:
    [C]: in function 'Checkbox'
    F:\ATMOSPHERIC WINTER GTA\moonloader\SobesHelper.lua:144: in function '_draw'
    F:\ATMOSPHERIC WINTER GTA\moonloader\lib\mimgui\init.lua:107: in function <F:\ATMOSPHERIC WINTER GTA\moonloader\lib\mimgui\init.lua:91>
[23:01:25.928800] (error)    SobesHelper.lua: Script died due to an error. (0D617C74)

Lua:
if imgui.Checkbox(u8'Убрать оповещения в VIP-чате, сообщения от администраторов и прочий бред', delltext) then
    if delltext then delltext = false sampAddChatMessage('Поебень в чате вырублена', 0xFF6600) else delltext = true sampAddChatMessage('Поебень в чате врублена', 0x63CB00) end
end

function event.onServerMessage(col, text)
    if delltext[0] then
        if text:find('^%[.* VIP]') or text:find('^Вы позвонили в службу точного времени') or text:find('^Администратор %w+_%w+') or text:find('^Следящий за .* %w+_%w+') or text:find('^Гл. следящий за .* %w+_%w+') then
        return false
        end
    else
        if text:find('^%[.* VIP]') or text:find('^Вы позвонили в службу точного времени') or text:find('^Администратор %w+_%w+') or text:find('^Следящий за .* %w+_%w+') or text:find('^Гл. следящий за .* %w+_%w+') then
        return true
        end
    end
end

Вот даже попробуй это вставить в свой скрипт, оно не заработает при включении галочки чекбокса.
Не могу понять, почему..
 
Последнее редактирование:

Dmitriy Makarov

25.05.2021
Проверенный
2,478
1,113
Вот даже попробуй это вставить в свой скрипт, оно не заработает при включении галочки чекбокса.
Не могу понять, почему..
Ну во-первых, крашит у тебя из-за этого:
1708664241427.png

После delltext должно быть [0] - delltext[0].

А во-вторых, даже если ты и добавишь [0], у тебя это не будет работать, так как ты его сразу вырубаешь, когда он включается:
1708664354346.png

Попробуй на это заменить:
Lua:
if imgui.Checkbox(u8'Убрать оповещения в VIP-чате, сообщения от администраторов и прочий бред', delltext) then
    sampAddChatMessage('Поебень в чате '..(delltext[0] and 'врублена' or 'вырублена'), -1)
end
Ну а с цветами поиграйся там сам.)
Screenshot_1.png

Screenshot_2.png


Ну в третьих, у тебя в регулярках кое-чего не хватает:
1708664484620.png

Перед точкой нужно поставить знак - %.
 
Последнее редактирование:
  • Нравится
Реакции: AnWu и MLycoris