Помогите со скриптом

$Mr.R1ch$

Участник
Автор темы
90
23
Версия SA-MP
  1. Другая
Помогите сделать поиск в мимуги окне по CollapsingHeader, а то я не осилил.


Lua:
imgui.OnFrame(function()
  return WinState[0]
end, function(player)
  imgui.SetNextWindowPos(imgui.ImVec2(1150, 560), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
  imgui.SetNextWindowSize(imgui.ImVec2(800, 700), imgui.Cond.Always)
  imgui.Begin(u8'Умная выдача розыска', WinState, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove)
  imgui.InputTextWithHint('##Search',u8'Поиск',search,256)
  imgui.SameLine()
    if imgui.Button(u8'Очистить') then
        imgui.StrCopy(search,'')   
        else
        imgui.SetCursorPos(imgui.ImVec2(745, 39))
     if imgui.Button(faicons('gear'), imgui.ImVec2(50, 50)) then
     MainWindow[0] = not MainWindow[0]
     end
   end
 for k,v in pairs(commands) do
        if u8(v):find(ffi.string(search)) then
            imgui.Text(u8(v))
        end
end
if imgui.CollapsingHeader(u8'Глава 1. Нанесение телесных повреждений.') then
    imgui.TextWrapped(u8'1.1 УК | Нанесение телесных повреждений по неосторожности гражданскому лицу  | 1*.')
   if imgui.IsItemClicked() then
   WinState[0] = not WinState[0]
       if checkboxfive[0] then
           lua_thread.create(function()
           sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
           wait(1200)
                sampSendChat('/r '..ini.set.nick..' на CONTROL. Запрашиваю объявление в розыск дело N-'..pID..'.')
                wait(1200)
                if checkboxthere[0] then
                sampSendChat ('/r Причина запроса - 1.1 УК, 1 степень')
                wait(1200)
                if checkboxfour[0] then
                sampSendChat('/r Нанесение телесных повреждений по неосторожности гражданскому лицу.')
                end
                end
                end)
                   else
          
       if pID ~= -1 then
       lua_thread.create(function()
           sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
            wait(1200)
             sampSendChat('/su '..pID..' 1 1.1 УК')
            wait(1200)
           sampSendChat('/do Преступник занесен в базу данных.')
            wait(1200)
               end)
            end
       end
   end


    imgui.TextWrapped(u8'1.2 УК | Умышленное нанесение телесных повреждений гражданскому | 2*.')
    if imgui.IsItemClicked() then
   WinState[0] = not WinState[0]
       if checkboxfive[0] then
           lua_thread.create(function()
           sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
           wait(1200)
                sampSendChat('/r '..ini.set.nick..' на CONTROL. Запрашиваю объявление в розыск дело N-'..pID..'.')
                wait(1200)
                if checkboxthere[0] then
                sampSendChat ('/r Причина запроса - 1.2 УК, 2 степень')
                wait(1200)
                if checkboxfour[0] then
                sampSendChat('/r Умышленное нанесение телесных повреждений гражданскому | 2*.')
                end
                end
                end)
                   else
                  
    if pID ~= -1 then
    lua_thread.create(function()
            sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
            wait(1200)
             sampSendChat('/su '..pID..' 2 1.2 УК')
            wait(1200)
           sampSendChat('/do Преступник занесен в базу данных.')
           wait(1200)
             end)
         end
     end
 end
    imgui.TextWrapped(u8'1.3 УК | Нанесение телесных повреждений по неосторожности государственному служащему при исполнении | 3*.')
    if imgui.IsItemClicked() then
    WinState[0] = not WinState[0]
       if checkboxfive[0] then
           lua_thread.create(function()
           sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
           wait(1200)
                sampSendChat('/r '..ini.set.nick..' на CONTROL. Запрашиваю объявление в розыск дело N-'..pID..'.')
                wait(1200)
                if checkboxthere[0] then
                sampSendChat ('/r Причина запроса - 1.3 УК, 3 степень')
                wait(1200)
                if checkboxfour[0] then
                sampSendChat('/r Нанесение телесных повреждений по неосторожности гос.служащему при исполнении.')
                end
                end
                end)
                   else
                  
    if pID ~= -1 then
        lua_thread.create(function()
            sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
            wait(1200)
             sampSendChat('/su '..pID..' 3 1.3 УК')
            wait(1200)
           sampSendChat('/do Преступник занесен в базу данных.')
            wait(1200)
             end)
         end
      end
  end
    imgui.TextWrapped(u8'1.4 УК | Умышленное нанесение телесных повреждений государственному служащему при исполнении | 4*.')
    if imgui.IsItemClicked() then
    WinState[0] = not WinState[0]
       if checkboxfive[0] then
           lua_thread.create(function()
           sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
           wait(1200)
                sampSendChat('/r '..ini.set.nick..' на CONTROL. Запрашиваю объявление в розыск дело N-'..pID..'.')
                wait(1200)
                if checkboxthere[0] then
                sampSendChat ('/r Причина запроса - 1.4 УК, 4 степень')
                wait(1200)
                if checkboxfour[0] then
                sampSendChat('/r Умышленное нанесение телесных повреждений гос. служащему при исполнении.')
                end
                end
                end)
                   else
                  
    if pID ~= -1 then
        lua_thread.create(function()
            sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
            wait(1200)
             sampSendChat('/su '..pID..' 4 1.4 УК')
            wait(1200)
           sampSendChat('/do Преступник занесен в базу данных.')
            wait(1200)
              end)
           end
       end
  end
      end
if imgui.CollapsingHeader(u8'Глава 2. Вооруженное нападение.') then
    imgui.TextWrapped(u8'2.1 УК | Вооруженное нападение на гражданское лицо | 5*.')
    if imgui.IsItemClicked() then
    WinState[0] = not WinState[0]
       if checkboxfive[0] then
           lua_thread.create(function()
           sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
           wait(1200)
                sampSendChat('/r '..ini.set.nick..' на CONTROL. Запрашиваю объявление в розыск дело N-'..pID..'.')
                wait(1200)
                if checkboxthere[0] then
                sampSendChat ('/r Причина запроса - 2.1 УК, 5 степень')
                wait(1200)
                if checkboxfour[0] then
                sampSendChat('/r Вооруженное нападение на гражданское лицо.')
                end
                end
                end)
                   else
                  
    if pID ~= -1 then
        lua_thread.create(function()
            sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
            wait(1200)
             sampSendChat('/su '..pID..' 5 2.1 УК')
            wait(1200)
           sampSendChat('/do Преступник занесен в базу данных.')
            wait(1200)
            end)
       end
   end
end

    imgui.TextWrapped(u8'2.2 УК | Вооруженное нападение на государственного служащего при исполнении | 6*.')
    if imgui.IsItemClicked() then
    WinState[0] = not WinState[0]
       if checkboxfive[0] then
           lua_thread.create(function()
           sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
           wait(1200)
                sampSendChat('/r '..ini.set.nick..' на CONTROL. Запрашиваю объявление в розыск дело N-'..pID..'.')
                wait(1200)
                if checkboxthere[0] then
                sampSendChat ('/r Причина запроса - 2.2 УК, 6 степень')
                wait(1200)
                if checkboxfour[0] then
                sampSendChat('/r Вооруженное нападение на гос. служащего при исполнении.')
                end
                end
                end)
                   else
                  
    if pID ~= -1 then
        lua_thread.create(function()
            sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
            wait(1200)
             sampSendChat('/su '..pID..' 6 2.2 УК')
            wait(1200)
           sampSendChat('/do Преступник занесен в базу данных.')
            wait(1200)
            end)
       end
   end
end
    imgui.TextWrapped(u8'2.3 УК | Вооруженное нападение на гражданское лицо либо на государственного служащего при исполнении в центре опасного района(гетто) | 6*.')
    if imgui.IsItemClicked() then
    WinState[0] = not WinState[0]
       if checkboxfive[0] then
           lua_thread.create(function()
           sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
           wait(1200)
                sampSendChat('/r '..ini.set.nick..' на CONTROL. Запрашиваю объявление в розыск дело N-'..pID..'.')
                wait(1200)
                if checkboxthere[0] then
                sampSendChat ('/r Причина запроса - 2.3 УК, 6 степень')
                wait(1200)
                if checkboxfour[0] then
                sampSendChat('/r Вооруженное нападение на гражданское лицо либо на гос.служащего при исполнении в центре опасного района(гетто).')
                end
                end
                end)
                   else
                  
    if pID ~= -1 then
        lua_thread.create(function()
            sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
            wait(1200)
             sampSendChat('/su '..pID..' 6 2.3 УК')
            wait(1200)
           sampSendChat('/do Преступник занесен в базу данных.')
        end)
    end
end
   end
        end
 

Andrinall

Известный
680
532
Помогите сделать поиск в мимуги окне по CollapsingHeader, а то я не осилил.


Lua:
imgui.OnFrame(function()
  return WinState[0]
end, function(player)
  imgui.SetNextWindowPos(imgui.ImVec2(1150, 560), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
  imgui.SetNextWindowSize(imgui.ImVec2(800, 700), imgui.Cond.Always)
  imgui.Begin(u8'Умная выдача розыска', WinState, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove)
  imgui.InputTextWithHint('##Search',u8'Поиск',search,256)
  imgui.SameLine()
    if imgui.Button(u8'Очистить') then
        imgui.StrCopy(search,'')
        else
        imgui.SetCursorPos(imgui.ImVec2(745, 39))
     if imgui.Button(faicons('gear'), imgui.ImVec2(50, 50)) then
     MainWindow[0] = not MainWindow[0]
     end
   end
 for k,v in pairs(commands) do
        if u8(v):find(ffi.string(search)) then
            imgui.Text(u8(v))
        end
end
if imgui.CollapsingHeader(u8'Глава 1. Нанесение телесных повреждений.') then
    imgui.TextWrapped(u8'1.1 УК | Нанесение телесных повреждений по неосторожности гражданскому лицу  | 1*.')
   if imgui.IsItemClicked() then
   WinState[0] = not WinState[0]
       if checkboxfive[0] then
           lua_thread.create(function()
           sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
           wait(1200)
                sampSendChat('/r '..ini.set.nick..' на CONTROL. Запрашиваю объявление в розыск дело N-'..pID..'.')
                wait(1200)
                if checkboxthere[0] then
                sampSendChat ('/r Причина запроса - 1.1 УК, 1 степень')
                wait(1200)
                if checkboxfour[0] then
                sampSendChat('/r Нанесение телесных повреждений по неосторожности гражданскому лицу.')
                end
                end
                end)
                   else
       
       if pID ~= -1 then
       lua_thread.create(function()
           sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
            wait(1200)
             sampSendChat('/su '..pID..' 1 1.1 УК')
            wait(1200)
           sampSendChat('/do Преступник занесен в базу данных.')
            wait(1200)
               end)
            end
       end
   end


    imgui.TextWrapped(u8'1.2 УК | Умышленное нанесение телесных повреждений гражданскому | 2*.')
    if imgui.IsItemClicked() then
   WinState[0] = not WinState[0]
       if checkboxfive[0] then
           lua_thread.create(function()
           sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
           wait(1200)
                sampSendChat('/r '..ini.set.nick..' на CONTROL. Запрашиваю объявление в розыск дело N-'..pID..'.')
                wait(1200)
                if checkboxthere[0] then
                sampSendChat ('/r Причина запроса - 1.2 УК, 2 степень')
                wait(1200)
                if checkboxfour[0] then
                sampSendChat('/r Умышленное нанесение телесных повреждений гражданскому | 2*.')
                end
                end
                end)
                   else
               
    if pID ~= -1 then
    lua_thread.create(function()
            sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
            wait(1200)
             sampSendChat('/su '..pID..' 2 1.2 УК')
            wait(1200)
           sampSendChat('/do Преступник занесен в базу данных.')
           wait(1200)
             end)
         end
     end
 end
    imgui.TextWrapped(u8'1.3 УК | Нанесение телесных повреждений по неосторожности государственному служащему при исполнении | 3*.')
    if imgui.IsItemClicked() then
    WinState[0] = not WinState[0]
       if checkboxfive[0] then
           lua_thread.create(function()
           sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
           wait(1200)
                sampSendChat('/r '..ini.set.nick..' на CONTROL. Запрашиваю объявление в розыск дело N-'..pID..'.')
                wait(1200)
                if checkboxthere[0] then
                sampSendChat ('/r Причина запроса - 1.3 УК, 3 степень')
                wait(1200)
                if checkboxfour[0] then
                sampSendChat('/r Нанесение телесных повреждений по неосторожности гос.служащему при исполнении.')
                end
                end
                end)
                   else
               
    if pID ~= -1 then
        lua_thread.create(function()
            sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
            wait(1200)
             sampSendChat('/su '..pID..' 3 1.3 УК')
            wait(1200)
           sampSendChat('/do Преступник занесен в базу данных.')
            wait(1200)
             end)
         end
      end
  end
    imgui.TextWrapped(u8'1.4 УК | Умышленное нанесение телесных повреждений государственному служащему при исполнении | 4*.')
    if imgui.IsItemClicked() then
    WinState[0] = not WinState[0]
       if checkboxfive[0] then
           lua_thread.create(function()
           sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
           wait(1200)
                sampSendChat('/r '..ini.set.nick..' на CONTROL. Запрашиваю объявление в розыск дело N-'..pID..'.')
                wait(1200)
                if checkboxthere[0] then
                sampSendChat ('/r Причина запроса - 1.4 УК, 4 степень')
                wait(1200)
                if checkboxfour[0] then
                sampSendChat('/r Умышленное нанесение телесных повреждений гос. служащему при исполнении.')
                end
                end
                end)
                   else
               
    if pID ~= -1 then
        lua_thread.create(function()
            sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
            wait(1200)
             sampSendChat('/su '..pID..' 4 1.4 УК')
            wait(1200)
           sampSendChat('/do Преступник занесен в базу данных.')
            wait(1200)
              end)
           end
       end
  end
      end
if imgui.CollapsingHeader(u8'Глава 2. Вооруженное нападение.') then
    imgui.TextWrapped(u8'2.1 УК | Вооруженное нападение на гражданское лицо | 5*.')
    if imgui.IsItemClicked() then
    WinState[0] = not WinState[0]
       if checkboxfive[0] then
           lua_thread.create(function()
           sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
           wait(1200)
                sampSendChat('/r '..ini.set.nick..' на CONTROL. Запрашиваю объявление в розыск дело N-'..pID..'.')
                wait(1200)
                if checkboxthere[0] then
                sampSendChat ('/r Причина запроса - 2.1 УК, 5 степень')
                wait(1200)
                if checkboxfour[0] then
                sampSendChat('/r Вооруженное нападение на гражданское лицо.')
                end
                end
                end)
                   else
               
    if pID ~= -1 then
        lua_thread.create(function()
            sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
            wait(1200)
             sampSendChat('/su '..pID..' 5 2.1 УК')
            wait(1200)
           sampSendChat('/do Преступник занесен в базу данных.')
            wait(1200)
            end)
       end
   end
end

    imgui.TextWrapped(u8'2.2 УК | Вооруженное нападение на государственного служащего при исполнении | 6*.')
    if imgui.IsItemClicked() then
    WinState[0] = not WinState[0]
       if checkboxfive[0] then
           lua_thread.create(function()
           sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
           wait(1200)
                sampSendChat('/r '..ini.set.nick..' на CONTROL. Запрашиваю объявление в розыск дело N-'..pID..'.')
                wait(1200)
                if checkboxthere[0] then
                sampSendChat ('/r Причина запроса - 2.2 УК, 6 степень')
                wait(1200)
                if checkboxfour[0] then
                sampSendChat('/r Вооруженное нападение на гос. служащего при исполнении.')
                end
                end
                end)
                   else
               
    if pID ~= -1 then
        lua_thread.create(function()
            sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
            wait(1200)
             sampSendChat('/su '..pID..' 6 2.2 УК')
            wait(1200)
           sampSendChat('/do Преступник занесен в базу данных.')
            wait(1200)
            end)
       end
   end
end
    imgui.TextWrapped(u8'2.3 УК | Вооруженное нападение на гражданское лицо либо на государственного служащего при исполнении в центре опасного района(гетто) | 6*.')
    if imgui.IsItemClicked() then
    WinState[0] = not WinState[0]
       if checkboxfive[0] then
           lua_thread.create(function()
           sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
           wait(1200)
                sampSendChat('/r '..ini.set.nick..' на CONTROL. Запрашиваю объявление в розыск дело N-'..pID..'.')
                wait(1200)
                if checkboxthere[0] then
                sampSendChat ('/r Причина запроса - 2.3 УК, 6 степень')
                wait(1200)
                if checkboxfour[0] then
                sampSendChat('/r Вооруженное нападение на гражданское лицо либо на гос.служащего при исполнении в центре опасного района(гетто).')
                end
                end
                end)
                   else
               
    if pID ~= -1 then
        lua_thread.create(function()
            sampSendChat('/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого')
            wait(1200)
             sampSendChat('/su '..pID..' 6 2.3 УК')
            wait(1200)
           sampSendChat('/do Преступник занесен в базу данных.')
        end)
    end
end
   end
        end
Главное перевожу код с плюсов на луа и иногда наоборот, но вот чтоб прочитать эту шляпу - убил около часа...
Как ты сам вообще ориентируешься в этой куче нечитаемости?

Чутка привёл код к читаемому виду(конкретно внутри OnFrame. Таблицу с данными можно вынести в json файлик и грузить оттуда где-то в imgui.OnInitialize
Добавил не совсем поиск, а скорее открытие нужного и закрытие остальных при поиске.

Объясняю... Открыта первая глава, я ввожу в поиск 3 и нажимаю найти - у меня закрывается первая и открывается collapsing header 3-ей главы
(Она у меня не заполнена, так что текста нема)
1703609981286.png

1703610027391.png


Код расчитан под конкретное кол-во строк отыгровки под разными чекбоксами. Если что-то менять, то и код чуток надо корректить.
Код:
(checkboxfive[0] == true) - 2 строки
{
  (checkboxthere[0] == true) - 1 строка
  {
    (checkboxfour[0] == true) - 1 строка
  }
}

если (checkboxfive[0] == false и pID ~= 1) - 3 строки

Lua:
local criminal_codes = {
    {
        header = 'Глава 1. Нанесение телесных повреждений.',
        items = {
            {
                wrapped = '1.1 УК | Нанесение телесных повреждений по неосторожности гражданскому лицу  | 1*.',
                messages = {
                    boxfive = {
                        '/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого',
                        '/r %s на CONTROL. Запрашиваю объявление в розыск дело N-%d.',
                    },
                    boxthere = {
                        '/r Причина запроса - 1.1 УК, 1 степень',
                    },
                    boxfour = {
                        '/r Нанесение телесных повреждений по неосторожности гражданскому лицу.'
                    },
                    pID = {
                        '/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого',
                        '/su %d 1 1.1 УК',
                        '/do Преступник занесен в базу данных.'
                    }
                }
            },
            {
                wrapped = '1.2 УК | Умышленное нанесение телесных повреждений гражданскому | 2*.',
                messages = {
                    boxfive = {
                        '/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого',
                        '/r %s на CONTROL. Запрашиваю объявление в розыск дело N-%d.'
                    },
                    boxthere = {
                        '/r Причина запроса - 1.2 УК, 2 степень'
                    },
                    boxfour = {
                        '/r Умышленное нанесение телесных повреждений гражданскому | 2*.'
                    },
                    pID = {
                        '/me зажал кнопку на опции и сообщил диспетчеру приметы подозреваемого',
                        '/su %d 2 1.2 УК',
                        '/do Преступник занесен в базу данных.'
                    }
                }
            }
        }
    },
    {
        header = 'Глава 2. Вооруженное нападение.',
        items = {
            wrapped = '1.1 ....',
            messages = {
                boxfive = {},
                boxthere = {},
                boxfour = {},
                pID = {}
            }
        }
    },
    -- ... и так далее заполняется.. Можно вынести в отдельный json файлик и оттуда грузить, почему бы и нет.
}
Lua:
-- где-то к переменным
local search_active = false

imgui.OnFrame(function() return WinState[0] end, function(player)
    imgui.SetNextWindowPos(imgui.ImVec2(1150, 560), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(800, 700 / 2), imgui.Cond.Always)
    imgui.Begin(u8'Умная выдача розыска', WinState, imgui.WindowFlags.NoResize )--+ imgui.WindowFlags.NoMove)
    imgui.InputTextWithHint('##Search', u8'Поиск', search, 256)
    imgui.SameLine()
    if imgui.Button(u8'Найти') then
        search_active = true
    else
        --imgui.SetCursorPos(imgui.ImVec2(745, 39))
        --if imgui.Button(faicons('gear'), imgui.ImVec2(50, 50)) then
        --    MainWindow[0] = not MainWindow[0]
        --end
    end
    imgui.SameLine()
    if imgui.Button(u8"Очистить") then imgui.StrCopy(search, '') end

    local str_search = ffi.string(search)
    for chapter_id, chapter in ipairs(criminal_codes) do
        if #str_search ~= 0 and u8(chapter.header):find(str_search) and search_active then
            imgui.SetNextItemOpen(true)
        elseif search_active then
            imgui.SetNextItemOpen(false)
        end

        if imgui.CollapsingHeader(u8(chapter.header) .. "##" .. chapter_id) then
            for article_id, article in ipairs(chapter.items) do
                imgui.TextWrapped(u8(article.wrapped))
                if imgui.IsItemClicked() then
                    WinState[0] = not WinState[0]
                    send_thread:run(article.messages, _, {ini.set.nick, pID}, _, _, _, {pID}, _)
                end
            end
        end
    end
    search_active = false

    imgui.End()
end)

send_thread = lua_thread.create_suspended(function(item, ...)
    local args = {...}
    local idx = 1

    local function format_message(text)
        return (args[idx] ~= nil and text:format(table.unpack(args[idx])) or text)
    end

    local function send(tbl)
        for _, message in ipairs(tbl) do
            sampSendChat(format_message(message))
            idx = idx + 1
            wait(1200)
        end
    end

    if checkboxfive[0] then
        send(item.boxfive)
        
        if not checkboxthere[0] then idx = idx + #item.boxthere return end
        send(item.boxthere)

        if not checkboxfour[0] then idx = idx + #item.boxfour return end
        send(item.boxfour)
    else
        if pID ~= -1 then
            idx = #item.boxfive + #item.boxthere + #item.boxfour + 1
            send(item.pID)
        end
    end
end)

Можно было сделать чуток по другому, но лично меня запарило разгребать кучу одинакового кода с кривейшей табуляцией, так что вперёд)

upd: исправил момент с говнокодом в send_thread
 
  • Нравится
Реакции: YarikVL