Вопросы по Lua скриптингу

Общая тема для вопросов по разработке скриптов на языке программирования Lua, в частности под MoonLoader.
  • Задавая вопрос, убедитесь, что его нет в списке частых вопросов и что на него ещё не отвечали (воспользуйтесь поиском).
  • Поищите ответ в теме посвященной разработке Lua скриптов в MoonLoader
  • Отвечая, убедитесь, что ваш ответ корректен.
  • Старайтесь как можно точнее выразить мысль, а если проблема связана с кодом, то обязательно прикрепите его к сообщению, используя блок [code=lua]здесь мог бы быть ваш код[/code].
  • Если вопрос связан с MoonLoader-ом первым делом желательно поискать решение на wiki.

Частые вопросы

Как научиться писать скрипты? С чего начать?
Информация - Гайд - Всё о Lua скриптинге для MoonLoader(https://blast.hk/threads/22707/)
Как вывести текст на русском? Вместо русского текста у меня какие-то каракули.
Изменить кодировку файла скрипта на Windows-1251. В Atom: комбинация клавиш Ctrl+Shift+U, в Notepad++: меню Кодировки -> Кодировки -> Кириллица -> Windows-1251.
Как получить транспорт, в котором сидит игрок?
Lua:
local veh = storeCarCharIsInNoSave(PLAYER_PED)
Как получить свой id или id другого игрока?
Lua:
local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED) -- получить свой ид
local _, id = sampGetPlayerIdByCharHandle(ped) -- получить ид другого игрока. ped - это хендл персонажа
Как проверить, что строка содержит какой-то текст?
Lua:
if string.find(str, 'текст', 1, true) then
-- строка str содержит "текст"
end
Как эмулировать нажатие игровой клавиши?
Lua:
local game_keys = require 'game.keys' -- где-нибудь в начале скрипта вне функции main

setGameKeyState(game_keys.player.FIREWEAPON, -1) -- будет сэмулировано нажатие клавиши атаки
Все иды клавиш находятся в файле moonloader/lib/game/keys.lua.
Подробнее о функции setGameKeyState здесь: lua - setgamekeystate | BlastHack — DEV_WIKI(https://www.blast.hk/wiki/lua:setgamekeystate)
Как получить id другого игрока, в которого целюсь я?
Lua:
local valid, ped = getCharPlayerIsTargeting(PLAYER_HANDLE) -- получить хендл персонажа, в которого целится игрок
if valid and doesCharExist(ped) then -- если цель есть и персонаж существует
  local result, id = sampGetPlayerIdByCharHandle(ped) -- получить samp-ид игрока по хендлу персонажа
  if result then -- проверить, прошло ли получение ида успешно
    -- здесь любые действия с полученным идом игрока
  end
end
Как зарегистрировать команду чата SAMP?
Lua:
-- До бесконечного цикла/задержки
sampRegisterChatCommand("mycommand", function (param)
     -- param будет содержать весь текст введенный после команды, чтобы разделить его на аргументы используйте string.match()
    sampAddChatMessage("MyCMD", -1)
end)
Крашит игру при вызове sampSendChat. Как это исправить?
Это происходит из-за бага в SAMPFUNCS, когда производится попытка отправки пакета определенными функциями изнутри события исходящих RPC и пакетов. Исправления для этого бага нет, но есть способ не провоцировать его. Вызов sampSendChat изнутри обработчика исходящих RPC/пакетов нужно обернуть в скриптовый поток с нулевой задержкой:
Lua:
function onSendRpc(id)
  -- крашит:
  -- sampSendChat('Send RPC: ' .. id)

  -- норм:
  lua_thread.create(function()
    wait(0)
    sampSendChat('Send RPC: ' .. id)
  end)
end
 
Последнее редактирование:

MrBidloKoder

Известный
425
248
Как сделать так, чтобы мой пед отыгрывал определённую анимку 5 секунд и эту анимку нельзя было сбить?
 

cobalt

Новичок
15
0
Ребят подскажите, мне вот нужно чтобы скрипт отправлял сообщение в чат, допустим "привет". Как выглядит этот термин? (Что-то по типу sampAddChatMessage - но надо чтобы в чат отправлял, надеюсь вы поняли о чем я)
 

samartinell1

Участник
98
14
как изменить размер шрифта в имгуи только для одного элемента типа как в
imgui.PushStyleVar
imgui.PopStyleVar
+
как сделать imgui.SetScrollY(imgui.GetScrollMaxY()) 1 раз, то есть чтобы я смог потом прокручивать страницу, через переменные пробовал, не прокручивается вообще.
Ребят подскажите, мне вот нужно чтобы скрипт отправлял сообщение в чат, допустим "привет". Как выглядит этот термин? (Что-то по типу sampAddChatMessage - но надо чтобы в чат отправлял, надеюсь вы поняли о чем я)
sampSendChat('привет')
 

Royan_Millans

Известный
145
182
как изменить размер шрифта в имгуи только для одного элемента типа как в
imgui.PushStyleVar
imgui.PopStyleVar
+
как сделать imgui.SetScrollY(imgui.GetScrollMaxY()) 1 раз, то есть чтобы я смог потом прокручивать страницу, через переменные пробовал, не прокручивается вообще.

sampSendChat('привет')

Lua:
local imgui_scrolldown_status = false

imgui.OnDrawFrame()
    if not imgui_scrolldown_status then imgui.SetScrollY(imgui.GetScrollMaxY()); imgui_scrolldown_status = true end
    if imgui.Button("Down") then imgui.ScrollDown() end

end

function imgui.ScrollDown()
imgui_scrolldown_status = false
end
 
  • Нравится
Реакции: samartinell1

samartinell1

Участник
98
14
как изменить размер шрифта в имгуи только для одного элемента
+
Можно ли как то избавиться от текста в ProgressBar, чтобы только полоса была, без процентов
 

СоМиК

Известный
458
314
Как подключить Google sheets API к скрипту? Гайды есть какие нибудь? Хочу написать скрипт, который будет работать с гугл таблицей
 

kizn

О КУ)))
Всефорумный модератор
2,405
2,060
Lua:
local example =
{
'Германия' = 'Берлин'
'Россия' = 'Москва'  -- понятия не имею как такое написать, уверен что мой вариант 99% неправильный
}

если найден текст из первой переменной - отправлять в чат ответ из второй переменной
 

CaJlaT

Овощ
Модератор
2,806
2,614
Lua:
local example =
{
'Германия' = 'Берлин'
'Россия' = 'Москва'  -- понятия не имею как такое написать, уверен что мой вариант 99% неправильный
}

если найден текст из первой переменной - отправлять в чат ответ из второй переменной
Lua:
local example =
{
    ['Германия'] = 'Берлин',
    ['Россия'] = 'Москва'
}


--где нужно
for k, v in pairs(example) do
    if text:find(k) then text = text:gsub(k, v) end
end
 
Последнее редактирование:
  • Влюблен
Реакции: kizn

shizzard

Участник
150
7
[ML] (error) px_1_1_alpha.lua: attempt to call a nil value
stack traceback:
[ML] (error) px_1_1_alpha.lua: Script died due to an error. (2BEEFD2C)
Lua:
local themes = import 'lib/imgui_themes.lua'
local tag = '{3498DB}[Хелпер Похиток]: '
local color =  0x3498DB--0xFF69B4
local red_color = 0xff0040
local berserk = 1
local imgui = require 'imgui'
local cbuffer = imgui.ImInt(0)
local buffer1 = imgui.ImBuffer(256)
local buffer2 = imgui.ImBuffer(256)
local buffer3 = imgui.ImBuffer(256)
local buffer4 = imgui.ImBuffer(256)
local buffer5 = imgui.ImBuffer(256)
local combobombo1 = imgui.ImInt(0)
local combobombo = imgui.ImInt(0)
font2 = renderCreateFont('Arial', 8, 5)
ftext = function(text)
    sampAddChatMessage('[Хелпер Похиток]: {ffffff}'..text,0x3498DB)
end
local inicfg = require 'inicfg'
local directIni = "moonloader\\config\\px.ini"
    local mainIni = inicfg.load({
    hotkey = {
    bindr = encodeJson({ VK_R, VK_ALT }),
    bindrb = encodeJson({ VK_Q, VK_ALT }),
    bindst = encodeJson({VK_O,VK_ALT}),
    bindt = encodeJson({VK_A,VK_ALT})
},
    itheme = {
        theme = encodeJson({themes.SwitchColorTheme(0)}),
    },
    trebovania = {
         treb1 = encodeJson({buffer1.v}),
         treb2 = encodeJson({buffer2.v}),
         treb3 = encodeJson({buffer3.v}),
         treb4 = encodeJson({buffer4.v}),
         treb5 = encodeJson({buffer5.v}),
         tclist = encodeJson(cbuffer.v)
    }
    },directIni)
require 'lib.moonloader'

local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local rkeys = require 'rkeys'
imgui.HotKey =  require('imgui_addons').HotKey
imgui.ToggleButton = require('imgui_addons').ToggleButton
local sampev = require 'lib.samp.events'
local tLastKeys = {}
local imBool = imgui.ImBool(false)
local ThemeMenu = {
    v = decodeJson(mainIni.itheme.theme)
}
local TrebMenu1 = {
    v = decodeJson(mainIni.trebovania.treb1)
}
local TrebMenu2 = {
    v = decodeJson(mainIni.trebovania.treb2)
}
local TrebMenu3 = {
    v = decodeJson(mainIni.trebovania.treb3)
}
local TrebMenu4 = {
    v = decodeJson(mainIni.trebovania.treb4)
}
local TrebMenu5 = {
    v = decodeJson(mainIni.trebovania.treb5)
}
local ActiveClockMenu = {
    v = decodeJson(mainIni.hotkey.bindr)
}
local ActiveClockMenu1 = {
    v = decodeJson(mainIni.hotkey.bindrb)
}
local ActiveClockMenu2 = {
    v = decodeJson(mainIni.hotkey.bindst)
}
local ActiveClockMenu3 = {
    v = decodeJson(mainIni.hotkey.bindt)
}
if not doesFileExist('moonloader\\px.ini') then inicfg.save(mainIni,'px.ini') end
local bt = 0
local rt =2
local pt = 6
local bt = 5
local key = 20000
local agent_window_state = imgui.ImBool(false)
local rasc_window_state = imgui.ImBool(false)
local poxititel_window_state = imgui.ImBool(false)
local extra_window_state = imgui.ImBool(false)
local extra_extra_window_state = imgui.ImBool(false)
local text_buffer_name = imgui.ImBuffer(256)
local min = imgui.ImInt(10)
local timer = 0
local priezd = imgui.ImBuffer(64)
local priezds = imgui.ImBuffer(64)
local combo = imgui.ImInt(0)
local combo1 = imgui.ImInt(0)
local combo2 = imgui.ImInt(0)
local combo3 = imgui.ImInt(0)
local combo4 = imgui.ImInt(0)
local pcombo = imgui.ImInt(0)
local pcombo1 = imgui.ImInt(0)
local pcombo2 = imgui.ImInt(0)
local pcombo3 = imgui.ImInt(0)
local pcombo4 = imgui.ImInt(0)
local sw, sh = getScreenResolution()
local combobombo = imgui.ImInt(0)
local combobombo1 = imgui.ImInt(0)
local pfbi =
                {
' ' ,u8'Стажёр', u8'Дежурный', u8'Мл.Агент',u8'Агент DEA',u8'Агент CID',u8'Глава DEA',u8'Глава CID',u8'Инспектор FBI',u8'Зам.Директора FBI',u8'Директор FBI'
            }
local checkfrac ={
    ' ',u8'Мэрия',u8'SAPD',u8'Медики',u8'Армия',u8'ФБР',u8'Автошколаы'
}
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
        local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
        local nick = sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(1))):gsub('_', ' ')
        sampAddChatMessage(tag .. '{FFFFFF}Добро пожаловать, '.. nick ..'.',color)
        sampAddChatMessage(tag .. '{FFFFFF}Автор : Steven Eaton. Приятной игры', color)
        sampAddChatMessage(tag .. '{FFFFFF}Активация : /px', color)
        sampAddChatMessage(tag .. '{FFFFFF}Отдельное спасибо {ff0040}ronnyevans', color)
    sampRegisterChatCommand("px3249234", poxitka)
        sampRegisterChatCommand(px230423402, poxitka2)
        sampRegisterChatCommand("px", poxitka1)
        sampRegisterChatCommand(aksodasidjasd, funcfunc)
        sampRegisterChatCommand(zhaohpgasdogijasdf, gerald)
        imgui.Process = False
        imgui.SwitchContext()
        themes.SwitchColorTheme()
        bindr = rkeys.registerHotKey(ActiveClockMenu.v, true, rhot)
        bindrb = rkeys.registerHotKey(ActiveClockMenu1.v, true, rbhot)
        bindst = rkeys.registerHotKey(ActiveClockMenu2.v, true, bindst)
                bindt = rkeys.registerHotKey(ActiveClockMenu3.v, true, bindt)
        themes.SwitchColorTheme(mainIni.itheme.theme)
      while true do
imgui.Process = extra_window_state.v -- window поменяй на свою переменную
                wait(0)
            end
        end
        function rhot(args)
            if buffer1.v == '' and buffer2.v == '' and buffer3.v == '' and buffer4.v == ''and  buffer5.v == '' then
                    sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
            else
                    sampAddChatMessage(tag..(u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)), red_color)
            end
    end
        function rbhot(args)
            if mainIni.trebovania.treb1 == ' ' and mainIni.trebovania.treb2 == ' ' and mainIni.trebovania.treb3 == ' ' and mainIni.trebovania.treb4 == ' ' and  mainIni.trebovania.treb5 == ' '  or  mainIni.trebovania.treb1 == '' and mainIni.trebovania.treb2 == '' and mainIni.trebovania.treb3 == '' and mainIni.trebovania.treb4 == '' and  mainIni.trebovania.treb5 == ' ' then
                sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
        else
                sampAddChatMessage(tag..(u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)), red_color)
        end

        function bindst(args)
           if  mainIni.trebovania.treb1 == ' ' and mainIni.trebovania.treb2 == ' ' and mainIni.trebovania.treb3 == ' ' and mainIni.trebovania.treb4 == ' ' and  mainIni.trebovania.treb5 == ' ' then
                sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
            else
                sampAddChatMessage(tag..(u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)), red_color)
            end
        end
    end



        function sampev.onServerMessage(color,text)
            if text:find('hrt code 3 (%d+)') then
                code = text:match('hrt code 3 (%d+)')
                sampAddChatMessage('code == '.. code, color)
            end
        end
        function sampev.onServerMessage(color, text)
    if text:find('The') then
            sampAddChatMessage('poprobui etot code', color)
        end

        function imgui.TextQuestion(text)
            imgui.TextDisabled('(?)')
            if imgui.IsItemHovered() then
              imgui.BeginTooltip()
              imgui.PushTextWrapPos(450)
              imgui.TextUnformatted(text)
              imgui.PopTextWrapPos()
              imgui.EndTooltip()
            end
        end
function poxitka(args)
agent_window_state.v = not agent_window_state.v
imgui.Process = agent_window_state.v
end
function poxitka1(args)
extra_window_state.v = not extra_window_state.v
imgui.Process = extra_window_state.v
end
function poxitka(args)
poxititel_window_state.v = not poxititel_window_state.v
imgui.Process = poxititel_window_state.v
end
function imgui.OnDrawFrame()
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5)) imgui.SetNextWindowSize(imgui.ImVec2(725, 340), imgui.Cond.FirstUseEver) -- размер
--    imgui.Begin(u8'Хелпер для похиток', show_main_window, imgui.WindowFlags.NoResize + imgui.WindowFlags.ShowBorders)
    --imgui.SetNextWindowSize(imgui.ImVec2(500,300),imgui.Cond.FirstUseEver)
    --imgui.SetNextWindowPos(imgui.ImVec2((sw/2),sh/2),imgui.Cond.FirstUseEver, imgui.ImVec2(0.5,0.5))
    if agent_window_state.v then
            imgui.Begin(u8"Хелпер для похиток v24".. ' ' ..os.date("%d.%m.%Y"), agent_window_state, imgui.WindowFlags.NoResize)
        --[[ = {u8'Цветы ',u8'Трость ',u8 "Бургер ",u8 "Пицца ", u8"Рем.комплект " , u8"2 рем.комплекта " , u8"3 рем.комплекта ", u8"Фотоаппарат ", u8"Пиво "}
        --povyazka = {u8'Красная повязка',u8"Синяя повязка", u8'Зеленая повязка', u8"Черная повязка",u8"Фиолетовая повязка"}
        --chislo = {'1 ', '2 ', '3 '}
    --    colors = {[1] = u8"Синяя", [2] =  "Красная", [3] =  "Коричневая", [4] = "Аква",[5] = "Чёрная", [6] = "Фиолетовая",[7] = "Черно-оранжевая"}
        --imgui.Begin(u8'Хелпер для похиток', agent_window_state)
        --imgui.Combo(u8'Количество',combo_select , chislo )
        -- imgui.Combo(u8'Выберите тему',combo_select, colors )
    --[[    imgui.PushItemWidth(150)
      imgui.Combo(u8'1 требование',combo , )
        imgui.SameLine()
        imgui.Combo(u8'Повязка', cpovyazka, povyazka)
        imgui.PushItemWidth(150)
        imgui.Combo(u8'2 требование',combo1 , )
        imgui.PushItemWidth(150)
        imgui.Combo(u8'3 требование',combo2 , )
        imgui.PushItemWidth(150)
        imgui.Combo(u8'4 требование',combo3 , )
        imgui.PushItemWidth(150)
        imgui.Combo(u8'5 требование',combo4 , )
        imgui.PushItemWidth(250)]]
        imgui.BeginChild("##firstchild", imgui.ImVec2(715, 180), true)
        local checkfrac ={u8' ', u8'Мэрия',u8'SAPD',u8'Медики',u8'Армия',u8'ФБР',u8'Автошкола',u8'Новости'}
        local pfbi ={u8' ', u8'Стажёр', u8'Дежурный', u8'Мл.Агент',u8'Агент DEA',u8'Агент CID',u8'Глава DEA',u8'Глава CID',u8'Инспектор FBI',u8'Зам.Директора FBI',u8'Директор FBI'}
        local pmed = {u8' ',u8'Интерн',u8'Санитар',u8'Мед.Брат',u8'Спасатель',u8'Нарколог',u8'Доктор',u8'Психолог',u8'Хирург',u8'Зам.Глав.Врача',u8'Глав.Врач'}
        local parmy = {u8" " , u8"Рядовой", u8"Ефрейтор",u8"Мл.Сержант",u8"Сержант",u8"Ст.Сержант",u8"Старшина",u8"Прапорщик",u8"Мл.Лейтенант",u8"Лейтенант",u8"Ст.Лейтенант",u8"Капитан",u8"Майор",u8"Подполковник",u8"Полковник",u8"Генерал"}
        local ppd = {u8' ',u8"Кадет", u8"Офицер",u8"Мл.Сержант",u8"Сержант",u8"Прапорщик",u8"Ст.Прапорщик",u8"Мл.Лейтенант",u8"Лейтенант",u8"Ст.Лейтенант",u8"Капитан",u8"Майор",u8"Подполковник",u8"Полковник",u8"Шериф"}
        local pmayor = {u8" ",u8"Секретарь",u8"Адвокат",u8"Охранник",u8"Нач.Охраны",u8"Зам.Мэра",u8"Мэр"}
        local pds = {u8" ",u8"Стажер",u8"Консультант",u8"Экзаменатор",u8"Мл.Инструктор",u8"Инструктор",u8"Координатор",u8"Мл.Менеджер",u8"Ст.Менеджер",u8"Директор",u8"Управляющий",}
        local pnews = {u8'',u8'Стажер',u8'Звукооператор',u8'Звукорежиссер',u8'Репортер',u8'Ведущий',u8'Редактор',u8'Гл.Редактор',u8'Тех.Директор',u8'Програмный Директор',u8'Ген.Директор', }

--[[
pfbi[1] = 70000,
pfbi[2] = 70000,
pfbi[3] = 70000,
pfbi[4] = 80000,
pfbi[5] = 80000,
pfbi[6] = 90000,
pfbi[7] = 90000,
pfbi[8] = 100000,
pfbi[9] = 100000,
pfbi[10] = 150000,

pds[1] = 20000,
pds[2] = 30000,
pds[3] = 40000,
pds[4] = 50000,
pds[5] = 60000,
pds[6] = 70000,
pds[7] = 80000,
pds[8] = 90000,
pds[9] = 100000,
pds[10] = 150000,

pnews[1] = 10000,
pnews[2] = 20000,
pnews[3] = 30000,
pnews[4] = 40000,
pnews[5] = 50000,
pnews[6] = 60000,
pnews[7] = 70000,
pnews[8] = 80000,
pnews[9] = 90000,
pnews[10] = 100000,

pmed[1] = 20000,
pmed[2] = 30000,
pmed[3] = 40000,
pmed[4] = 50000,
pmed[5] = 60000,
pmed[6] = 70000,
pmed[7] = 80000,
pmed[8] = 90000,
pmed[9] = 100000,
pmed[10] = 150000,

parmy[1] = 30000,
parmy[2] = 40000,
parmy[3] = 50000,
parmy[4] = 60000,
parmy[5] = 60000,
parmy[6] = 70000,
parmy[7] = 70000,
parmy[8] = 80000,
parmy[9] = 80000,
parmy[10] = 90000,
parmy[11] = 90000,
parmy[12] = 100000,
parmy[13] = 100000,
parmy[14] = 100000,
parmy[15] = 150000,

pmayor[1] = 20000,
pmayor[2] = 40000,
pmayor[3] = 60000,
pmayor[4] = 80000,
pmayor[5] = 100000,
pmayor[6] = 150000,

ppd[1] = 50000,
ppd[2] = 50000,
ppd[3] = 60000,
ppd[4] = 60000,
ppd[5] = 70000,
ppd[6] = 70000,
ppd[7] = 80000,
ppd[8] = 80000,
ppd[9] = 80000,
ppd[10] = 90000,
ppd[11] = 100000,
ppd[12] = 100000,
ppd[13] = 100000,
ppd[14] = 150000
]]
function bindt()
    sampAddChatMessage('hiiiiii', color)
end
        imgui.PushItemWidth(150)
    imgui.Combo(u8'Фракция',combobombo1,checkfrac,#checkfrac)
if combobombo1.v == 5 then
imgui.SameLine()
    imgui.SetCursorPosX(242)
imgui.Combo(u8'Ранг',combobombo,pfbi,#pfbi)
elseif combobombo1.v == 3 then
    imgui.SameLine()
        imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,pmed,#pmed)
elseif combobombo1.v == 4 then
    imgui.SameLine()
        imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,parmy,#parmy)
elseif combobombo1.v == 2 then
    imgui.SameLine()

        imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,ppd,#ppd)
elseif combobombo1.v == 1 then
    imgui.SameLine()
        imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,pmayor,#pmayor)

elseif combobombo1.v == 6 then
    imgui.SameLine()
    imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,pds,#pds)
elseif combobombo1.v == 7 then
    imgui.SameLine()
    imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,pnews,#pnews)

end


        imgui.PushItemWidth(150)
if     imgui.InputText(u8'1 требование', buffer1) then
        mainIni.trebovania.treb1 = buffer1.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine()
    if imgui.Button(u8'Очистить 1 требование') then
        mainIni.trebovania.treb1 = ' '
        buffer1.v = ' '
        inicfg.save(mainIni,directIni)
    end

        imgui.SameLine()
        imgui.SetCursorPosX(387)
    if    imgui.SliderInt(u8'Повязка (Клист)',cbuffer,1,33) then
        mainIni.trebovania.tclist = cbuffer.v
        inicfg.save(mainIni,directIni)
    end
if        imgui.InputText(u8'2 требование', buffer2) then
         mainIni.trebovania.treb2 = buffer2.v
        inicfg.save(mainIni, directIni)
    end
        imgui.SameLine()
        if imgui.Button(u8'Очистить 2 требование') then
            mainIni.trebovania.treb2 = ' '
                    buffer2.v = ''
            inicfg.save(mainIni,directIni)
        end
        imgui.SameLine()
        imgui.InputText(u8'РП отыгровки по приезду',priezd)
        if priezd.v:find('/me (.+)') then
    local text = priezd.v:match('/me (.+)')
    priezd.v = text
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Вводите без /me'))
        if imgui.InputText(u8'3 требование', buffer3) then
        mainIni.trebovania.treb3 = buffer3.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine()
    if imgui.Button(u8'Очистить 3 требование') then
        mainIni.trebovania.treb3 = ' '
                buffer3.v = ' '
        inicfg.save(mainIni,directIni)
    end
        imgui.SameLine()
        imgui.InputText(u8'Слова по приезду',priezds)
        if priezds.v:find('/s (.+)') then
    local text = priezds.v:match('/s (.+)')
    priezds.v = text
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Текст будет прописан через /s'))
        if imgui.InputText(u8'4 требование', buffer4) then
        mainIni.trebovania.treb4 = buffer4.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine()
    if imgui.Button(u8'Очистить 4 требование') then
        mainIni.trebovania.treb4 = ' '
                buffer4.v = ' '
        inicfg.save(mainIni,directIni)
    end
        imgui.SameLine()
         imgui.ToggleButton("##1", imBool)

        imgui.SameLine()
        imgui.Text(u8'Включить таймер')


        if imgui.InputText(u8'5 требование', buffer5) then
        mainIni.trebovania.treb5 = buffer5.v
        inicfg.save(mainIni, directIni)
    end
        imgui.SameLine()
        if imgui.Button(u8'Очистить 5 требование') then
            mainIni.trebovania.treb5 = ' '
                    buffer5.v = ' '
            inicfg.save(mainIni,directIni)
        end
        imgui.SameLine()
        if imBool.v == true then
imgui.SliderInt(u8"Таймер (минуты : секунды)", min, 10--[[минимальное число]], 20--[[максимальное число]])
imgui.PopItemWidth()
imgui.SetCursorPosX(387)
if imgui.Button(u8'Начать отсчёт') then
        if timer < os.time() then -- если таймер не идёт (меньше, чем время на пк)
                timer = os.time() + (min.v * 60) -- время на пк(в секундах) + перевод значения слайдера в минуты
        else -- если таймер больше, чем время на пк (если идёт)
                sampAddChatMessage('Ошибка, отсчёт уже идёт!', -1)
        end
end
if timer >= os.time() then -- пока таймер больше времени на пк (пока он идёт)
        imgui.SameLine()
    --    timeost = math.floor((timer - os.time())/60)..':'..math.floor((timer - os.time())%60)
        imgui.Text(math.floor((timer - os.time())/60)..':'..math.floor((timer - os.time())%60))

        --math.floor для того, чтобы после деления выводило целое число
        --(timer - os.time())/60) -- ((таймер-время на пк/)1 минуту) для определения минут
        --(timer - os.time())%60) -- остаток деления на 60 (секунды)
    end
end
imgui.SetCursorPosX(5)
imgui.SetCursorPosY(155)
        if imgui.Button(u8'Очистить все требования ') then
            mainIni.trebovania.treb1 = ' '
                mainIni.trebovania.treb2 = ' '
                    mainIni.trebovania.treb3 = ' '
                        mainIni.trebovania.treb4 = ' '
                            mainIni.trebovania.treb5 = ' '
                            buffer1.v = ''
                            buffer2.v = ''
                            buffer3.v = ''
                            buffer4.v = ''
                            buffer5.v = ''
            inicfg.save(mainIni,directIni)
        end



imgui.EndChild()
-- ===================================================================================================================================================================================================================================================================
        imgui.BeginChild("##secondchild", imgui.ImVec2(715, 130), true)
        if imgui.Button(u8'Показать все требования') then
    if mainIni.trebovania.treb1 == '' and mainIni.trebovania.treb2 == '' and mainIni.trebovania.treb3 == '' and mainIni.trebovania.treb4 == '' and mainIni.trebovania.treb5 == '' or mainIni.trebovania.treb1 == ' ' and mainIni.trebovania.treb2 == ' ' and mainIni.trebovania.treb3 == ' ' and mainIni.trebovania.treb4 == ' ' and mainIni.trebovania.treb5 == ' ' then
                sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
        else
                --    sampAddChatMessage(tag..(u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)), red_color)
                ftext(mainIni.trebovania.treb1 .. ' ' .. mainIni.trebovania.treb2 .. ' ' .. mainIni.trebovania.treb3 .. ' ' .. mainIni.trebovania.treb4 .. ' ' .. mainIni.trebovania.treb5)
            end
end
        imgui.SameLine()
        if imgui.HotKey('##3', ActiveClockMenu2, tLastKeys, 100) then
            rkeys.changeHotKey(bindst, ActiveClockMenu2.v)
            sampAddChatMessage(tag..'{F4A460}Старая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(tLastKeys.v),'+').. '{F4A460} Новая горячая клавиша {FFFFFF}'.. table.concat(rkeys.getKeysName(ActiveClockMenu2.v), " + "), color)
            mainIni.hotkey.bindst = encodeJson(ActiveClockMenu2.v)
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Чтобы показать все требования заполните все поля требовании'))
        imgui.SameLine()
        imgui.SetCursorPosX(355)
        if imgui.Button(u8('Отыграть в чат')) then
            if priezd.v == '' then
                sampAddChatMessage(tag.. '{ff0040}Ошибка! {FFFFFF}Вы не ввели отыгровку', color)
            else
            sampSendChat('/me ' .. (u8:decode(priezd.v)))
        end
    end
        if imgui.Button(u8'Сказать все требования в рацию') then
            if buffer1.v == '' and buffer2.v == '' and buffer3.v == '' and buffer4.v == '' and buffer5.v == '' then
                                    sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
                                else
        sampSendChat('/r ' .. (u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)))
        end
    end
        imgui.SameLine()
        function clockfunc()
                    sampSendChat('/r ' .. (u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)))
        end
        if imgui.HotKey('##1', ActiveClockMenu, tLastKeys, 100) then
            rkeys.changeHotKey(bindr, ActiveClockMenu.v)
            sampAddChatMessage(tag..'{F4A460}Старая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(tLastKeys.v),'+').. '{F4A460} Новая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(ActiveClockMenu.v), " + "), color)
            mainIni.hotkey.bindr = encodeJson(ActiveClockMenu.v)
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Чтобы сказать требования в рацию заполните все поля требовании'))
        imgui.SameLine()
        imgui.SetCursorPosX(355)
        if imgui.Button(u8('Крикнуть по приезду')) then
            if priezds.v == '' then
                sampAddChatMessage(tag .. '{FFFFFF}Нечего кричать,введите текст в поле.', color)
            else
            sampSendChat('/s ' .. priezds.v)
        end
    end

        if imgui.Button(u8'Сказать все требования в рацию /rb ') then
            if buffer1.v == '' and buffer2.v == '' and buffer3.v == '' and buffer4.v == '' and buffer5.v == '' then
                                    sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
                                else
        sampSendChat('/rb ' .. (u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)))
        end
    end
        imgui.SameLine()
        if imgui.HotKey('##2', ActiveClockMenu1, tLastKeys, 100) then
            rkeys.changeHotKey(bindrb, ActiveClockMenu1.v)
            sampAddChatMessage(tag..'{F4A460}Старая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(tLastKeys.v),'+').. '{F4A460} Новая горячая клавиша {FFFFFF}'.. table.concat(rkeys.getKeysName(ActiveClockMenu1.v), " + "), color)
            mainIni.hotkey.bindrb = encodeJson(ActiveClockMenu1.v)
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Чтобы сказать требования в рацию заполните все поля требовании'))
        imgui.SameLine()
        imgui.Button(u8'Показать оставшееся время')
        imgui.SameLine()
        if imgui.HotKey('##4', ActiveClockMenu3, tLastKeys, 100) then
            rkeys.changeHotKey(bindt, ActiveClockMenu3.v)
            sampAddChatMessage(tag..'{F4A460}Старая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(tLastKeys.v),'+').. '{F4A460} Новая горячая клавиша {FFFFFF}'.. table.concat(rkeys.getKeysName(ActiveClockMenu3.v), " + "), color)
            mainIni.hotkey.bindt = encodeJson(ActiveClockMenu3.v)
            inicfg.save(mainIni, directIni)
        end
        if imgui.Button(u8'Надеть повязку (Клист)') then
            if cbuffer.v == 0 then
                sampAddChatMessage(tag .. '{FFFFFF}Вы пытаетесь включить {FF0040}нулевой клист. {FFFFFF} Для начала оденьте маску или выберите другой клист', color)
            end
            sampSendChat('/clist ' .. cbuffer.v)
        end

        if imgui.Button(u8'Красная тема') then
            themes.SwitchColorTheme(2)
            mainIni.itheme.theme = 2
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        if imgui.Button(u8'Черная тема') then
            themes.SwitchColorTheme(5)
            mainIni.itheme.theme = 5
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        if imgui.Button(u8'Фиолетовая тема') then
            themes.SwitchColorTheme(6)
            mainIni.itheme.theme = 6
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        if imgui.Button(u8'Синяя тема') then
            themes.SwitchColorTheme()
            mainIni.itheme.theme = 0
            inicfg.save(mainIni, directIni)
        end

imgui.EndChild()
        imgui.End()
    end
    if extra_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(200,180),imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2((sw/2),sh/2),imgui.Cond.FirstUseEver, imgui.ImVec2(0.5,0.5))
        imgui.Begin(u8"Хелпер Похиток", extra_window_state,imgui.WindowFlags.NoResize)
        imgui.SetCursorPosX(40)
        imgui.SetCursorPosY(30)
        if     imgui.Button(u8'Для агентов',  imgui.ImVec2(120, 20)) then
             agent_window_state.v = not agent_window_state.v
        end
        imgui.SetCursorPosX(40)
        imgui.SetCursorPosY(55)
        function apply_custom_style()
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    style.ButtonTextAlign = imgui.ImVec2(0.5, 0.5)
end
apply_custom_style()
if     imgui.Button(u8'Для операторов HRT', (imgui.ImVec2(133,20))) then
     poxititel_window_state.v = not poxititel_window_state.v
end
apply_custom_style()
imgui.SetCursorPosX(30)
imgui.SetCursorPosY(80)
if imgui.CollapsingHeader(u8'Действия со скриптом') then
    imgui.SetCursorPosX(30)
    imgui.SetCursorPosY(130)
if imgui.Button(u8('Перезагрузить скрипт'),(imgui.ImVec2(133,20))) then
sampAddChatMessage(tag .. '{FFFFFF}Скрипт перезагружен.', color)
thisScript():reload()
end
imgui.SetCursorPosX(30)
imgui.SetCursorPosY(105)
if imgui.Button(u8('Выключить скрипт'),(imgui.ImVec2(133,20))) then
    sampAddChatMessage(tag .. '{FFFFFF}Выгружаю скрипт...', color)
    thisScript():unload()
end
end
            imgui.End()
            end
        end
end
 

tinkoir

Участник
97
33
[ML] (error) px_1_1_alpha.lua: attempt to call a nil value
stack traceback:
[ML] (error) px_1_1_alpha.lua: Script died due to an error. (2BEEFD2C)
Lua:
local themes = import 'lib/imgui_themes.lua'
local tag = '{3498DB}[Хелпер Похиток]: '
local color =  0x3498DB--0xFF69B4
local red_color = 0xff0040
local berserk = 1
local imgui = require 'imgui'
local cbuffer = imgui.ImInt(0)
local buffer1 = imgui.ImBuffer(256)
local buffer2 = imgui.ImBuffer(256)
local buffer3 = imgui.ImBuffer(256)
local buffer4 = imgui.ImBuffer(256)
local buffer5 = imgui.ImBuffer(256)
local combobombo1 = imgui.ImInt(0)
local combobombo = imgui.ImInt(0)
font2 = renderCreateFont('Arial', 8, 5)
ftext = function(text)
    sampAddChatMessage('[Хелпер Похиток]: {ffffff}'..text,0x3498DB)
end
local inicfg = require 'inicfg'
local directIni = "moonloader\\config\\px.ini"
    local mainIni = inicfg.load({
    hotkey = {
    bindr = encodeJson({ VK_R, VK_ALT }),
    bindrb = encodeJson({ VK_Q, VK_ALT }),
    bindst = encodeJson({VK_O,VK_ALT}),
    bindt = encodeJson({VK_A,VK_ALT})
},
    itheme = {
        theme = encodeJson({themes.SwitchColorTheme(0)}),
    },
    trebovania = {
         treb1 = encodeJson({buffer1.v}),
         treb2 = encodeJson({buffer2.v}),
         treb3 = encodeJson({buffer3.v}),
         treb4 = encodeJson({buffer4.v}),
         treb5 = encodeJson({buffer5.v}),
         tclist = encodeJson(cbuffer.v)
    }
    },directIni)
require 'lib.moonloader'

local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local rkeys = require 'rkeys'
imgui.HotKey =  require('imgui_addons').HotKey
imgui.ToggleButton = require('imgui_addons').ToggleButton
local sampev = require 'lib.samp.events'
local tLastKeys = {}
local imBool = imgui.ImBool(false)
local ThemeMenu = {
    v = decodeJson(mainIni.itheme.theme)
}
local TrebMenu1 = {
    v = decodeJson(mainIni.trebovania.treb1)
}
local TrebMenu2 = {
    v = decodeJson(mainIni.trebovania.treb2)
}
local TrebMenu3 = {
    v = decodeJson(mainIni.trebovania.treb3)
}
local TrebMenu4 = {
    v = decodeJson(mainIni.trebovania.treb4)
}
local TrebMenu5 = {
    v = decodeJson(mainIni.trebovania.treb5)
}
local ActiveClockMenu = {
    v = decodeJson(mainIni.hotkey.bindr)
}
local ActiveClockMenu1 = {
    v = decodeJson(mainIni.hotkey.bindrb)
}
local ActiveClockMenu2 = {
    v = decodeJson(mainIni.hotkey.bindst)
}
local ActiveClockMenu3 = {
    v = decodeJson(mainIni.hotkey.bindt)
}
if not doesFileExist('moonloader\\px.ini') then inicfg.save(mainIni,'px.ini') end
local bt = 0
local rt =2
local pt = 6
local bt = 5
local key = 20000
local agent_window_state = imgui.ImBool(false)
local rasc_window_state = imgui.ImBool(false)
local poxititel_window_state = imgui.ImBool(false)
local extra_window_state = imgui.ImBool(false)
local extra_extra_window_state = imgui.ImBool(false)
local text_buffer_name = imgui.ImBuffer(256)
local min = imgui.ImInt(10)
local timer = 0
local priezd = imgui.ImBuffer(64)
local priezds = imgui.ImBuffer(64)
local combo = imgui.ImInt(0)
local combo1 = imgui.ImInt(0)
local combo2 = imgui.ImInt(0)
local combo3 = imgui.ImInt(0)
local combo4 = imgui.ImInt(0)
local pcombo = imgui.ImInt(0)
local pcombo1 = imgui.ImInt(0)
local pcombo2 = imgui.ImInt(0)
local pcombo3 = imgui.ImInt(0)
local pcombo4 = imgui.ImInt(0)
local sw, sh = getScreenResolution()
local combobombo = imgui.ImInt(0)
local combobombo1 = imgui.ImInt(0)
local pfbi =
                {
' ' ,u8'Стажёр', u8'Дежурный', u8'Мл.Агент',u8'Агент DEA',u8'Агент CID',u8'Глава DEA',u8'Глава CID',u8'Инспектор FBI',u8'Зам.Директора FBI',u8'Директор FBI'
            }
local checkfrac ={
    ' ',u8'Мэрия',u8'SAPD',u8'Медики',u8'Армия',u8'ФБР',u8'Автошколаы'
}
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
        local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
        local nick = sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(1))):gsub('_', ' ')
        sampAddChatMessage(tag .. '{FFFFFF}Добро пожаловать, '.. nick ..'.',color)
        sampAddChatMessage(tag .. '{FFFFFF}Автор : Steven Eaton. Приятной игры', color)
        sampAddChatMessage(tag .. '{FFFFFF}Активация : /px', color)
        sampAddChatMessage(tag .. '{FFFFFF}Отдельное спасибо {ff0040}ronnyevans', color)
    sampRegisterChatCommand("px3249234", poxitka)
        sampRegisterChatCommand(px230423402, poxitka2)
        sampRegisterChatCommand("px", poxitka1)
        sampRegisterChatCommand(aksodasidjasd, funcfunc)
        sampRegisterChatCommand(zhaohpgasdogijasdf, gerald)
        imgui.Process = False
        imgui.SwitchContext()
        themes.SwitchColorTheme()
        bindr = rkeys.registerHotKey(ActiveClockMenu.v, true, rhot)
        bindrb = rkeys.registerHotKey(ActiveClockMenu1.v, true, rbhot)
        bindst = rkeys.registerHotKey(ActiveClockMenu2.v, true, bindst)
                bindt = rkeys.registerHotKey(ActiveClockMenu3.v, true, bindt)
        themes.SwitchColorTheme(mainIni.itheme.theme)
      while true do
imgui.Process = extra_window_state.v -- window поменяй на свою переменную
                wait(0)
            end
        end
        function rhot(args)
            if buffer1.v == '' and buffer2.v == '' and buffer3.v == '' and buffer4.v == ''and  buffer5.v == '' then
                    sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
            else
                    sampAddChatMessage(tag..(u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)), red_color)
            end
    end
        function rbhot(args)
            if mainIni.trebovania.treb1 == ' ' and mainIni.trebovania.treb2 == ' ' and mainIni.trebovania.treb3 == ' ' and mainIni.trebovania.treb4 == ' ' and  mainIni.trebovania.treb5 == ' '  or  mainIni.trebovania.treb1 == '' and mainIni.trebovania.treb2 == '' and mainIni.trebovania.treb3 == '' and mainIni.trebovania.treb4 == '' and  mainIni.trebovania.treb5 == ' ' then
                sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
        else
                sampAddChatMessage(tag..(u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)), red_color)
        end

        function bindst(args)
           if  mainIni.trebovania.treb1 == ' ' and mainIni.trebovania.treb2 == ' ' and mainIni.trebovania.treb3 == ' ' and mainIni.trebovania.treb4 == ' ' and  mainIni.trebovania.treb5 == ' ' then
                sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
            else
                sampAddChatMessage(tag..(u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)), red_color)
            end
        end
    end



        function sampev.onServerMessage(color,text)
            if text:find('hrt code 3 (%d+)') then
                code = text:match('hrt code 3 (%d+)')
                sampAddChatMessage('code == '.. code, color)
            end
        end
        function sampev.onServerMessage(color, text)
    if text:find('The') then
            sampAddChatMessage('poprobui etot code', color)
        end

        function imgui.TextQuestion(text)
            imgui.TextDisabled('(?)')
            if imgui.IsItemHovered() then
              imgui.BeginTooltip()
              imgui.PushTextWrapPos(450)
              imgui.TextUnformatted(text)
              imgui.PopTextWrapPos()
              imgui.EndTooltip()
            end
        end
function poxitka(args)
agent_window_state.v = not agent_window_state.v
imgui.Process = agent_window_state.v
end
function poxitka1(args)
extra_window_state.v = not extra_window_state.v
imgui.Process = extra_window_state.v
end
function poxitka(args)
poxititel_window_state.v = not poxititel_window_state.v
imgui.Process = poxititel_window_state.v
end
function imgui.OnDrawFrame()
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5)) imgui.SetNextWindowSize(imgui.ImVec2(725, 340), imgui.Cond.FirstUseEver) -- размер
--    imgui.Begin(u8'Хелпер для похиток', show_main_window, imgui.WindowFlags.NoResize + imgui.WindowFlags.ShowBorders)
    --imgui.SetNextWindowSize(imgui.ImVec2(500,300),imgui.Cond.FirstUseEver)
    --imgui.SetNextWindowPos(imgui.ImVec2((sw/2),sh/2),imgui.Cond.FirstUseEver, imgui.ImVec2(0.5,0.5))
    if agent_window_state.v then
            imgui.Begin(u8"Хелпер для похиток v24".. ' ' ..os.date("%d.%m.%Y"), agent_window_state, imgui.WindowFlags.NoResize)
        --[[ = {u8'Цветы ',u8'Трость ',u8 "Бургер ",u8 "Пицца ", u8"Рем.комплект " , u8"2 рем.комплекта " , u8"3 рем.комплекта ", u8"Фотоаппарат ", u8"Пиво "}
        --povyazka = {u8'Красная повязка',u8"Синяя повязка", u8'Зеленая повязка', u8"Черная повязка",u8"Фиолетовая повязка"}
        --chislo = {'1 ', '2 ', '3 '}
    --    colors = {[1] = u8"Синяя", [2] =  "Красная", [3] =  "Коричневая", [4] = "Аква",[5] = "Чёрная", [6] = "Фиолетовая",[7] = "Черно-оранжевая"}
        --imgui.Begin(u8'Хелпер для похиток', agent_window_state)
        --imgui.Combo(u8'Количество',combo_select , chislo )
        -- imgui.Combo(u8'Выберите тему',combo_select, colors )
    --[[    imgui.PushItemWidth(150)
      imgui.Combo(u8'1 требование',combo , )
        imgui.SameLine()
        imgui.Combo(u8'Повязка', cpovyazka, povyazka)
        imgui.PushItemWidth(150)
        imgui.Combo(u8'2 требование',combo1 , )
        imgui.PushItemWidth(150)
        imgui.Combo(u8'3 требование',combo2 , )
        imgui.PushItemWidth(150)
        imgui.Combo(u8'4 требование',combo3 , )
        imgui.PushItemWidth(150)
        imgui.Combo(u8'5 требование',combo4 , )
        imgui.PushItemWidth(250)]]
        imgui.BeginChild("##firstchild", imgui.ImVec2(715, 180), true)
        local checkfrac ={u8' ', u8'Мэрия',u8'SAPD',u8'Медики',u8'Армия',u8'ФБР',u8'Автошкола',u8'Новости'}
        local pfbi ={u8' ', u8'Стажёр', u8'Дежурный', u8'Мл.Агент',u8'Агент DEA',u8'Агент CID',u8'Глава DEA',u8'Глава CID',u8'Инспектор FBI',u8'Зам.Директора FBI',u8'Директор FBI'}
        local pmed = {u8' ',u8'Интерн',u8'Санитар',u8'Мед.Брат',u8'Спасатель',u8'Нарколог',u8'Доктор',u8'Психолог',u8'Хирург',u8'Зам.Глав.Врача',u8'Глав.Врач'}
        local parmy = {u8" " , u8"Рядовой", u8"Ефрейтор",u8"Мл.Сержант",u8"Сержант",u8"Ст.Сержант",u8"Старшина",u8"Прапорщик",u8"Мл.Лейтенант",u8"Лейтенант",u8"Ст.Лейтенант",u8"Капитан",u8"Майор",u8"Подполковник",u8"Полковник",u8"Генерал"}
        local ppd = {u8' ',u8"Кадет", u8"Офицер",u8"Мл.Сержант",u8"Сержант",u8"Прапорщик",u8"Ст.Прапорщик",u8"Мл.Лейтенант",u8"Лейтенант",u8"Ст.Лейтенант",u8"Капитан",u8"Майор",u8"Подполковник",u8"Полковник",u8"Шериф"}
        local pmayor = {u8" ",u8"Секретарь",u8"Адвокат",u8"Охранник",u8"Нач.Охраны",u8"Зам.Мэра",u8"Мэр"}
        local pds = {u8" ",u8"Стажер",u8"Консультант",u8"Экзаменатор",u8"Мл.Инструктор",u8"Инструктор",u8"Координатор",u8"Мл.Менеджер",u8"Ст.Менеджер",u8"Директор",u8"Управляющий",}
        local pnews = {u8'',u8'Стажер',u8'Звукооператор',u8'Звукорежиссер',u8'Репортер',u8'Ведущий',u8'Редактор',u8'Гл.Редактор',u8'Тех.Директор',u8'Програмный Директор',u8'Ген.Директор', }

--[[
pfbi[1] = 70000,
pfbi[2] = 70000,
pfbi[3] = 70000,
pfbi[4] = 80000,
pfbi[5] = 80000,
pfbi[6] = 90000,
pfbi[7] = 90000,
pfbi[8] = 100000,
pfbi[9] = 100000,
pfbi[10] = 150000,

pds[1] = 20000,
pds[2] = 30000,
pds[3] = 40000,
pds[4] = 50000,
pds[5] = 60000,
pds[6] = 70000,
pds[7] = 80000,
pds[8] = 90000,
pds[9] = 100000,
pds[10] = 150000,

pnews[1] = 10000,
pnews[2] = 20000,
pnews[3] = 30000,
pnews[4] = 40000,
pnews[5] = 50000,
pnews[6] = 60000,
pnews[7] = 70000,
pnews[8] = 80000,
pnews[9] = 90000,
pnews[10] = 100000,

pmed[1] = 20000,
pmed[2] = 30000,
pmed[3] = 40000,
pmed[4] = 50000,
pmed[5] = 60000,
pmed[6] = 70000,
pmed[7] = 80000,
pmed[8] = 90000,
pmed[9] = 100000,
pmed[10] = 150000,

parmy[1] = 30000,
parmy[2] = 40000,
parmy[3] = 50000,
parmy[4] = 60000,
parmy[5] = 60000,
parmy[6] = 70000,
parmy[7] = 70000,
parmy[8] = 80000,
parmy[9] = 80000,
parmy[10] = 90000,
parmy[11] = 90000,
parmy[12] = 100000,
parmy[13] = 100000,
parmy[14] = 100000,
parmy[15] = 150000,

pmayor[1] = 20000,
pmayor[2] = 40000,
pmayor[3] = 60000,
pmayor[4] = 80000,
pmayor[5] = 100000,
pmayor[6] = 150000,

ppd[1] = 50000,
ppd[2] = 50000,
ppd[3] = 60000,
ppd[4] = 60000,
ppd[5] = 70000,
ppd[6] = 70000,
ppd[7] = 80000,
ppd[8] = 80000,
ppd[9] = 80000,
ppd[10] = 90000,
ppd[11] = 100000,
ppd[12] = 100000,
ppd[13] = 100000,
ppd[14] = 150000
]]
function bindt()
    sampAddChatMessage('hiiiiii', color)
end
        imgui.PushItemWidth(150)
    imgui.Combo(u8'Фракция',combobombo1,checkfrac,#checkfrac)
if combobombo1.v == 5 then
imgui.SameLine()
    imgui.SetCursorPosX(242)
imgui.Combo(u8'Ранг',combobombo,pfbi,#pfbi)
elseif combobombo1.v == 3 then
    imgui.SameLine()
        imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,pmed,#pmed)
elseif combobombo1.v == 4 then
    imgui.SameLine()
        imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,parmy,#parmy)
elseif combobombo1.v == 2 then
    imgui.SameLine()

        imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,ppd,#ppd)
elseif combobombo1.v == 1 then
    imgui.SameLine()
        imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,pmayor,#pmayor)

elseif combobombo1.v == 6 then
    imgui.SameLine()
    imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,pds,#pds)
elseif combobombo1.v == 7 then
    imgui.SameLine()
    imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,pnews,#pnews)

end


        imgui.PushItemWidth(150)
if     imgui.InputText(u8'1 требование', buffer1) then
        mainIni.trebovania.treb1 = buffer1.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine()
    if imgui.Button(u8'Очистить 1 требование') then
        mainIni.trebovania.treb1 = ' '
        buffer1.v = ' '
        inicfg.save(mainIni,directIni)
    end

        imgui.SameLine()
        imgui.SetCursorPosX(387)
    if    imgui.SliderInt(u8'Повязка (Клист)',cbuffer,1,33) then
        mainIni.trebovania.tclist = cbuffer.v
        inicfg.save(mainIni,directIni)
    end
if        imgui.InputText(u8'2 требование', buffer2) then
         mainIni.trebovania.treb2 = buffer2.v
        inicfg.save(mainIni, directIni)
    end
        imgui.SameLine()
        if imgui.Button(u8'Очистить 2 требование') then
            mainIni.trebovania.treb2 = ' '
                    buffer2.v = ''
            inicfg.save(mainIni,directIni)
        end
        imgui.SameLine()
        imgui.InputText(u8'РП отыгровки по приезду',priezd)
        if priezd.v:find('/me (.+)') then
    local text = priezd.v:match('/me (.+)')
    priezd.v = text
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Вводите без /me'))
        if imgui.InputText(u8'3 требование', buffer3) then
        mainIni.trebovania.treb3 = buffer3.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine()
    if imgui.Button(u8'Очистить 3 требование') then
        mainIni.trebovania.treb3 = ' '
                buffer3.v = ' '
        inicfg.save(mainIni,directIni)
    end
        imgui.SameLine()
        imgui.InputText(u8'Слова по приезду',priezds)
        if priezds.v:find('/s (.+)') then
    local text = priezds.v:match('/s (.+)')
    priezds.v = text
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Текст будет прописан через /s'))
        if imgui.InputText(u8'4 требование', buffer4) then
        mainIni.trebovania.treb4 = buffer4.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine()
    if imgui.Button(u8'Очистить 4 требование') then
        mainIni.trebovania.treb4 = ' '
                buffer4.v = ' '
        inicfg.save(mainIni,directIni)
    end
        imgui.SameLine()
         imgui.ToggleButton("##1", imBool)

        imgui.SameLine()
        imgui.Text(u8'Включить таймер')


        if imgui.InputText(u8'5 требование', buffer5) then
        mainIni.trebovania.treb5 = buffer5.v
        inicfg.save(mainIni, directIni)
    end
        imgui.SameLine()
        if imgui.Button(u8'Очистить 5 требование') then
            mainIni.trebovania.treb5 = ' '
                    buffer5.v = ' '
            inicfg.save(mainIni,directIni)
        end
        imgui.SameLine()
        if imBool.v == true then
imgui.SliderInt(u8"Таймер (минуты : секунды)", min, 10--[[минимальное число]], 20--[[максимальное число]])
imgui.PopItemWidth()
imgui.SetCursorPosX(387)
if imgui.Button(u8'Начать отсчёт') then
        if timer < os.time() then -- если таймер не идёт (меньше, чем время на пк)
                timer = os.time() + (min.v * 60) -- время на пк(в секундах) + перевод значения слайдера в минуты
        else -- если таймер больше, чем время на пк (если идёт)
                sampAddChatMessage('Ошибка, отсчёт уже идёт!', -1)
        end
end
if timer >= os.time() then -- пока таймер больше времени на пк (пока он идёт)
        imgui.SameLine()
    --    timeost = math.floor((timer - os.time())/60)..':'..math.floor((timer - os.time())%60)
        imgui.Text(math.floor((timer - os.time())/60)..':'..math.floor((timer - os.time())%60))

        --math.floor для того, чтобы после деления выводило целое число
        --(timer - os.time())/60) -- ((таймер-время на пк/)1 минуту) для определения минут
        --(timer - os.time())%60) -- остаток деления на 60 (секунды)
    end
end
imgui.SetCursorPosX(5)
imgui.SetCursorPosY(155)
        if imgui.Button(u8'Очистить все требования ') then
            mainIni.trebovania.treb1 = ' '
                mainIni.trebovania.treb2 = ' '
                    mainIni.trebovania.treb3 = ' '
                        mainIni.trebovania.treb4 = ' '
                            mainIni.trebovania.treb5 = ' '
                            buffer1.v = ''
                            buffer2.v = ''
                            buffer3.v = ''
                            buffer4.v = ''
                            buffer5.v = ''
            inicfg.save(mainIni,directIni)
        end



imgui.EndChild()
-- ===================================================================================================================================================================================================================================================================
        imgui.BeginChild("##secondchild", imgui.ImVec2(715, 130), true)
        if imgui.Button(u8'Показать все требования') then
    if mainIni.trebovania.treb1 == '' and mainIni.trebovania.treb2 == '' and mainIni.trebovania.treb3 == '' and mainIni.trebovania.treb4 == '' and mainIni.trebovania.treb5 == '' or mainIni.trebovania.treb1 == ' ' and mainIni.trebovania.treb2 == ' ' and mainIni.trebovania.treb3 == ' ' and mainIni.trebovania.treb4 == ' ' and mainIni.trebovania.treb5 == ' ' then
                sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
        else
                --    sampAddChatMessage(tag..(u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)), red_color)
                ftext(mainIni.trebovania.treb1 .. ' ' .. mainIni.trebovania.treb2 .. ' ' .. mainIni.trebovania.treb3 .. ' ' .. mainIni.trebovania.treb4 .. ' ' .. mainIni.trebovania.treb5)
            end
end
        imgui.SameLine()
        if imgui.HotKey('##3', ActiveClockMenu2, tLastKeys, 100) then
            rkeys.changeHotKey(bindst, ActiveClockMenu2.v)
            sampAddChatMessage(tag..'{F4A460}Старая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(tLastKeys.v),'+').. '{F4A460} Новая горячая клавиша {FFFFFF}'.. table.concat(rkeys.getKeysName(ActiveClockMenu2.v), " + "), color)
            mainIni.hotkey.bindst = encodeJson(ActiveClockMenu2.v)
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Чтобы показать все требования заполните все поля требовании'))
        imgui.SameLine()
        imgui.SetCursorPosX(355)
        if imgui.Button(u8('Отыграть в чат')) then
            if priezd.v == '' then
                sampAddChatMessage(tag.. '{ff0040}Ошибка! {FFFFFF}Вы не ввели отыгровку', color)
            else
            sampSendChat('/me ' .. (u8:decode(priezd.v)))
        end
    end
        if imgui.Button(u8'Сказать все требования в рацию') then
            if buffer1.v == '' and buffer2.v == '' and buffer3.v == '' and buffer4.v == '' and buffer5.v == '' then
                                    sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
                                else
        sampSendChat('/r ' .. (u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)))
        end
    end
        imgui.SameLine()
        function clockfunc()
                    sampSendChat('/r ' .. (u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)))
        end
        if imgui.HotKey('##1', ActiveClockMenu, tLastKeys, 100) then
            rkeys.changeHotKey(bindr, ActiveClockMenu.v)
            sampAddChatMessage(tag..'{F4A460}Старая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(tLastKeys.v),'+').. '{F4A460} Новая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(ActiveClockMenu.v), " + "), color)
            mainIni.hotkey.bindr = encodeJson(ActiveClockMenu.v)
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Чтобы сказать требования в рацию заполните все поля требовании'))
        imgui.SameLine()
        imgui.SetCursorPosX(355)
        if imgui.Button(u8('Крикнуть по приезду')) then
            if priezds.v == '' then
                sampAddChatMessage(tag .. '{FFFFFF}Нечего кричать,введите текст в поле.', color)
            else
            sampSendChat('/s ' .. priezds.v)
        end
    end

        if imgui.Button(u8'Сказать все требования в рацию /rb ') then
            if buffer1.v == '' and buffer2.v == '' and buffer3.v == '' and buffer4.v == '' and buffer5.v == '' then
                                    sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
                                else
        sampSendChat('/rb ' .. (u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)))
        end
    end
        imgui.SameLine()
        if imgui.HotKey('##2', ActiveClockMenu1, tLastKeys, 100) then
            rkeys.changeHotKey(bindrb, ActiveClockMenu1.v)
            sampAddChatMessage(tag..'{F4A460}Старая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(tLastKeys.v),'+').. '{F4A460} Новая горячая клавиша {FFFFFF}'.. table.concat(rkeys.getKeysName(ActiveClockMenu1.v), " + "), color)
            mainIni.hotkey.bindrb = encodeJson(ActiveClockMenu1.v)
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Чтобы сказать требования в рацию заполните все поля требовании'))
        imgui.SameLine()
        imgui.Button(u8'Показать оставшееся время')
        imgui.SameLine()
        if imgui.HotKey('##4', ActiveClockMenu3, tLastKeys, 100) then
            rkeys.changeHotKey(bindt, ActiveClockMenu3.v)
            sampAddChatMessage(tag..'{F4A460}Старая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(tLastKeys.v),'+').. '{F4A460} Новая горячая клавиша {FFFFFF}'.. table.concat(rkeys.getKeysName(ActiveClockMenu3.v), " + "), color)
            mainIni.hotkey.bindt = encodeJson(ActiveClockMenu3.v)
            inicfg.save(mainIni, directIni)
        end
        if imgui.Button(u8'Надеть повязку (Клист)') then
            if cbuffer.v == 0 then
                sampAddChatMessage(tag .. '{FFFFFF}Вы пытаетесь включить {FF0040}нулевой клист. {FFFFFF} Для начала оденьте маску или выберите другой клист', color)
            end
            sampSendChat('/clist ' .. cbuffer.v)
        end

        if imgui.Button(u8'Красная тема') then
            themes.SwitchColorTheme(2)
            mainIni.itheme.theme = 2
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        if imgui.Button(u8'Черная тема') then
            themes.SwitchColorTheme(5)
            mainIni.itheme.theme = 5
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        if imgui.Button(u8'Фиолетовая тема') then
            themes.SwitchColorTheme(6)
            mainIni.itheme.theme = 6
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        if imgui.Button(u8'Синяя тема') then
            themes.SwitchColorTheme()
            mainIni.itheme.theme = 0
            inicfg.save(mainIni, directIni)
        end

imgui.EndChild()
        imgui.End()
    end
    if extra_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(200,180),imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2((sw/2),sh/2),imgui.Cond.FirstUseEver, imgui.ImVec2(0.5,0.5))
        imgui.Begin(u8"Хелпер Похиток", extra_window_state,imgui.WindowFlags.NoResize)
        imgui.SetCursorPosX(40)
        imgui.SetCursorPosY(30)
        if     imgui.Button(u8'Для агентов',  imgui.ImVec2(120, 20)) then
             agent_window_state.v = not agent_window_state.v
        end
        imgui.SetCursorPosX(40)
        imgui.SetCursorPosY(55)
        function apply_custom_style()
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    style.ButtonTextAlign = imgui.ImVec2(0.5, 0.5)
end
apply_custom_style()
if     imgui.Button(u8'Для операторов HRT', (imgui.ImVec2(133,20))) then
     poxititel_window_state.v = not poxititel_window_state.v
end
apply_custom_style()
imgui.SetCursorPosX(30)
imgui.SetCursorPosY(80)
if imgui.CollapsingHeader(u8'Действия со скриптом') then
    imgui.SetCursorPosX(30)
    imgui.SetCursorPosY(130)
if imgui.Button(u8('Перезагрузить скрипт'),(imgui.ImVec2(133,20))) then
sampAddChatMessage(tag .. '{FFFFFF}Скрипт перезагружен.', color)
thisScript():reload()
end
imgui.SetCursorPosX(30)
imgui.SetCursorPosY(105)
if imgui.Button(u8('Выключить скрипт'),(imgui.ImVec2(133,20))) then
    sampAddChatMessage(tag .. '{FFFFFF}Выгружаю скрипт...', color)
    thisScript():unload()
end
end
            imgui.End()
            end
        end
end
ты не весь код с ошибкой скинул вроде, там же ещё строка с ошибкой должна писаться
 

CaJlaT

Овощ
Модератор
2,806
2,614
[ML] (error) px_1_1_alpha.lua: attempt to call a nil value
stack traceback:
[ML] (error) px_1_1_alpha.lua: Script died due to an error. (2BEEFD2C)
Lua:
local themes = import 'lib/imgui_themes.lua'
local tag = '{3498DB}[Хелпер Похиток]: '
local color =  0x3498DB--0xFF69B4
local red_color = 0xff0040
local berserk = 1
local imgui = require 'imgui'
local cbuffer = imgui.ImInt(0)
local buffer1 = imgui.ImBuffer(256)
local buffer2 = imgui.ImBuffer(256)
local buffer3 = imgui.ImBuffer(256)
local buffer4 = imgui.ImBuffer(256)
local buffer5 = imgui.ImBuffer(256)
local combobombo1 = imgui.ImInt(0)
local combobombo = imgui.ImInt(0)
font2 = renderCreateFont('Arial', 8, 5)
ftext = function(text)
    sampAddChatMessage('[Хелпер Похиток]: {ffffff}'..text,0x3498DB)
end
local inicfg = require 'inicfg'
local directIni = "moonloader\\config\\px.ini"
    local mainIni = inicfg.load({
    hotkey = {
    bindr = encodeJson({ VK_R, VK_ALT }),
    bindrb = encodeJson({ VK_Q, VK_ALT }),
    bindst = encodeJson({VK_O,VK_ALT}),
    bindt = encodeJson({VK_A,VK_ALT})
},
    itheme = {
        theme = encodeJson({themes.SwitchColorTheme(0)}),
    },
    trebovania = {
         treb1 = encodeJson({buffer1.v}),
         treb2 = encodeJson({buffer2.v}),
         treb3 = encodeJson({buffer3.v}),
         treb4 = encodeJson({buffer4.v}),
         treb5 = encodeJson({buffer5.v}),
         tclist = encodeJson(cbuffer.v)
    }
    },directIni)
require 'lib.moonloader'

local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local rkeys = require 'rkeys'
imgui.HotKey =  require('imgui_addons').HotKey
imgui.ToggleButton = require('imgui_addons').ToggleButton
local sampev = require 'lib.samp.events'
local tLastKeys = {}
local imBool = imgui.ImBool(false)
local ThemeMenu = {
    v = decodeJson(mainIni.itheme.theme)
}
local TrebMenu1 = {
    v = decodeJson(mainIni.trebovania.treb1)
}
local TrebMenu2 = {
    v = decodeJson(mainIni.trebovania.treb2)
}
local TrebMenu3 = {
    v = decodeJson(mainIni.trebovania.treb3)
}
local TrebMenu4 = {
    v = decodeJson(mainIni.trebovania.treb4)
}
local TrebMenu5 = {
    v = decodeJson(mainIni.trebovania.treb5)
}
local ActiveClockMenu = {
    v = decodeJson(mainIni.hotkey.bindr)
}
local ActiveClockMenu1 = {
    v = decodeJson(mainIni.hotkey.bindrb)
}
local ActiveClockMenu2 = {
    v = decodeJson(mainIni.hotkey.bindst)
}
local ActiveClockMenu3 = {
    v = decodeJson(mainIni.hotkey.bindt)
}
if not doesFileExist('moonloader\\px.ini') then inicfg.save(mainIni,'px.ini') end
local bt = 0
local rt =2
local pt = 6
local bt = 5
local key = 20000
local agent_window_state = imgui.ImBool(false)
local rasc_window_state = imgui.ImBool(false)
local poxititel_window_state = imgui.ImBool(false)
local extra_window_state = imgui.ImBool(false)
local extra_extra_window_state = imgui.ImBool(false)
local text_buffer_name = imgui.ImBuffer(256)
local min = imgui.ImInt(10)
local timer = 0
local priezd = imgui.ImBuffer(64)
local priezds = imgui.ImBuffer(64)
local combo = imgui.ImInt(0)
local combo1 = imgui.ImInt(0)
local combo2 = imgui.ImInt(0)
local combo3 = imgui.ImInt(0)
local combo4 = imgui.ImInt(0)
local pcombo = imgui.ImInt(0)
local pcombo1 = imgui.ImInt(0)
local pcombo2 = imgui.ImInt(0)
local pcombo3 = imgui.ImInt(0)
local pcombo4 = imgui.ImInt(0)
local sw, sh = getScreenResolution()
local combobombo = imgui.ImInt(0)
local combobombo1 = imgui.ImInt(0)
local pfbi =
                {
' ' ,u8'Стажёр', u8'Дежурный', u8'Мл.Агент',u8'Агент DEA',u8'Агент CID',u8'Глава DEA',u8'Глава CID',u8'Инспектор FBI',u8'Зам.Директора FBI',u8'Директор FBI'
            }
local checkfrac ={
    ' ',u8'Мэрия',u8'SAPD',u8'Медики',u8'Армия',u8'ФБР',u8'Автошколаы'
}
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
        local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
        local nick = sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(1))):gsub('_', ' ')
        sampAddChatMessage(tag .. '{FFFFFF}Добро пожаловать, '.. nick ..'.',color)
        sampAddChatMessage(tag .. '{FFFFFF}Автор : Steven Eaton. Приятной игры', color)
        sampAddChatMessage(tag .. '{FFFFFF}Активация : /px', color)
        sampAddChatMessage(tag .. '{FFFFFF}Отдельное спасибо {ff0040}ronnyevans', color)
    sampRegisterChatCommand("px3249234", poxitka)
        sampRegisterChatCommand(px230423402, poxitka2)
        sampRegisterChatCommand("px", poxitka1)
        sampRegisterChatCommand(aksodasidjasd, funcfunc)
        sampRegisterChatCommand(zhaohpgasdogijasdf, gerald)
        imgui.Process = False
        imgui.SwitchContext()
        themes.SwitchColorTheme()
        bindr = rkeys.registerHotKey(ActiveClockMenu.v, true, rhot)
        bindrb = rkeys.registerHotKey(ActiveClockMenu1.v, true, rbhot)
        bindst = rkeys.registerHotKey(ActiveClockMenu2.v, true, bindst)
                bindt = rkeys.registerHotKey(ActiveClockMenu3.v, true, bindt)
        themes.SwitchColorTheme(mainIni.itheme.theme)
      while true do
imgui.Process = extra_window_state.v -- window поменяй на свою переменную
                wait(0)
            end
        end
        function rhot(args)
            if buffer1.v == '' and buffer2.v == '' and buffer3.v == '' and buffer4.v == ''and  buffer5.v == '' then
                    sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
            else
                    sampAddChatMessage(tag..(u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)), red_color)
            end
    end
        function rbhot(args)
            if mainIni.trebovania.treb1 == ' ' and mainIni.trebovania.treb2 == ' ' and mainIni.trebovania.treb3 == ' ' and mainIni.trebovania.treb4 == ' ' and  mainIni.trebovania.treb5 == ' '  or  mainIni.trebovania.treb1 == '' and mainIni.trebovania.treb2 == '' and mainIni.trebovania.treb3 == '' and mainIni.trebovania.treb4 == '' and  mainIni.trebovania.treb5 == ' ' then
                sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
        else
                sampAddChatMessage(tag..(u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)), red_color)
        end

        function bindst(args)
           if  mainIni.trebovania.treb1 == ' ' and mainIni.trebovania.treb2 == ' ' and mainIni.trebovania.treb3 == ' ' and mainIni.trebovania.treb4 == ' ' and  mainIni.trebovania.treb5 == ' ' then
                sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
            else
                sampAddChatMessage(tag..(u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)), red_color)
            end
        end
    end



        function sampev.onServerMessage(color,text)
            if text:find('hrt code 3 (%d+)') then
                code = text:match('hrt code 3 (%d+)')
                sampAddChatMessage('code == '.. code, color)
            end
        end
        function sampev.onServerMessage(color, text)
    if text:find('The') then
            sampAddChatMessage('poprobui etot code', color)
        end

        function imgui.TextQuestion(text)
            imgui.TextDisabled('(?)')
            if imgui.IsItemHovered() then
              imgui.BeginTooltip()
              imgui.PushTextWrapPos(450)
              imgui.TextUnformatted(text)
              imgui.PopTextWrapPos()
              imgui.EndTooltip()
            end
        end
function poxitka(args)
agent_window_state.v = not agent_window_state.v
imgui.Process = agent_window_state.v
end
function poxitka1(args)
extra_window_state.v = not extra_window_state.v
imgui.Process = extra_window_state.v
end
function poxitka(args)
poxititel_window_state.v = not poxititel_window_state.v
imgui.Process = poxititel_window_state.v
end
function imgui.OnDrawFrame()
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5)) imgui.SetNextWindowSize(imgui.ImVec2(725, 340), imgui.Cond.FirstUseEver) -- размер
--    imgui.Begin(u8'Хелпер для похиток', show_main_window, imgui.WindowFlags.NoResize + imgui.WindowFlags.ShowBorders)
    --imgui.SetNextWindowSize(imgui.ImVec2(500,300),imgui.Cond.FirstUseEver)
    --imgui.SetNextWindowPos(imgui.ImVec2((sw/2),sh/2),imgui.Cond.FirstUseEver, imgui.ImVec2(0.5,0.5))
    if agent_window_state.v then
            imgui.Begin(u8"Хелпер для похиток v24".. ' ' ..os.date("%d.%m.%Y"), agent_window_state, imgui.WindowFlags.NoResize)
        --[[ = {u8'Цветы ',u8'Трость ',u8 "Бургер ",u8 "Пицца ", u8"Рем.комплект " , u8"2 рем.комплекта " , u8"3 рем.комплекта ", u8"Фотоаппарат ", u8"Пиво "}
        --povyazka = {u8'Красная повязка',u8"Синяя повязка", u8'Зеленая повязка', u8"Черная повязка",u8"Фиолетовая повязка"}
        --chislo = {'1 ', '2 ', '3 '}
    --    colors = {[1] = u8"Синяя", [2] =  "Красная", [3] =  "Коричневая", [4] = "Аква",[5] = "Чёрная", [6] = "Фиолетовая",[7] = "Черно-оранжевая"}
        --imgui.Begin(u8'Хелпер для похиток', agent_window_state)
        --imgui.Combo(u8'Количество',combo_select , chislo )
        -- imgui.Combo(u8'Выберите тему',combo_select, colors )
    --[[    imgui.PushItemWidth(150)
      imgui.Combo(u8'1 требование',combo , )
        imgui.SameLine()
        imgui.Combo(u8'Повязка', cpovyazka, povyazka)
        imgui.PushItemWidth(150)
        imgui.Combo(u8'2 требование',combo1 , )
        imgui.PushItemWidth(150)
        imgui.Combo(u8'3 требование',combo2 , )
        imgui.PushItemWidth(150)
        imgui.Combo(u8'4 требование',combo3 , )
        imgui.PushItemWidth(150)
        imgui.Combo(u8'5 требование',combo4 , )
        imgui.PushItemWidth(250)]]
        imgui.BeginChild("##firstchild", imgui.ImVec2(715, 180), true)
        local checkfrac ={u8' ', u8'Мэрия',u8'SAPD',u8'Медики',u8'Армия',u8'ФБР',u8'Автошкола',u8'Новости'}
        local pfbi ={u8' ', u8'Стажёр', u8'Дежурный', u8'Мл.Агент',u8'Агент DEA',u8'Агент CID',u8'Глава DEA',u8'Глава CID',u8'Инспектор FBI',u8'Зам.Директора FBI',u8'Директор FBI'}
        local pmed = {u8' ',u8'Интерн',u8'Санитар',u8'Мед.Брат',u8'Спасатель',u8'Нарколог',u8'Доктор',u8'Психолог',u8'Хирург',u8'Зам.Глав.Врача',u8'Глав.Врач'}
        local parmy = {u8" " , u8"Рядовой", u8"Ефрейтор",u8"Мл.Сержант",u8"Сержант",u8"Ст.Сержант",u8"Старшина",u8"Прапорщик",u8"Мл.Лейтенант",u8"Лейтенант",u8"Ст.Лейтенант",u8"Капитан",u8"Майор",u8"Подполковник",u8"Полковник",u8"Генерал"}
        local ppd = {u8' ',u8"Кадет", u8"Офицер",u8"Мл.Сержант",u8"Сержант",u8"Прапорщик",u8"Ст.Прапорщик",u8"Мл.Лейтенант",u8"Лейтенант",u8"Ст.Лейтенант",u8"Капитан",u8"Майор",u8"Подполковник",u8"Полковник",u8"Шериф"}
        local pmayor = {u8" ",u8"Секретарь",u8"Адвокат",u8"Охранник",u8"Нач.Охраны",u8"Зам.Мэра",u8"Мэр"}
        local pds = {u8" ",u8"Стажер",u8"Консультант",u8"Экзаменатор",u8"Мл.Инструктор",u8"Инструктор",u8"Координатор",u8"Мл.Менеджер",u8"Ст.Менеджер",u8"Директор",u8"Управляющий",}
        local pnews = {u8'',u8'Стажер',u8'Звукооператор',u8'Звукорежиссер',u8'Репортер',u8'Ведущий',u8'Редактор',u8'Гл.Редактор',u8'Тех.Директор',u8'Програмный Директор',u8'Ген.Директор', }

--[[
pfbi[1] = 70000,
pfbi[2] = 70000,
pfbi[3] = 70000,
pfbi[4] = 80000,
pfbi[5] = 80000,
pfbi[6] = 90000,
pfbi[7] = 90000,
pfbi[8] = 100000,
pfbi[9] = 100000,
pfbi[10] = 150000,

pds[1] = 20000,
pds[2] = 30000,
pds[3] = 40000,
pds[4] = 50000,
pds[5] = 60000,
pds[6] = 70000,
pds[7] = 80000,
pds[8] = 90000,
pds[9] = 100000,
pds[10] = 150000,

pnews[1] = 10000,
pnews[2] = 20000,
pnews[3] = 30000,
pnews[4] = 40000,
pnews[5] = 50000,
pnews[6] = 60000,
pnews[7] = 70000,
pnews[8] = 80000,
pnews[9] = 90000,
pnews[10] = 100000,

pmed[1] = 20000,
pmed[2] = 30000,
pmed[3] = 40000,
pmed[4] = 50000,
pmed[5] = 60000,
pmed[6] = 70000,
pmed[7] = 80000,
pmed[8] = 90000,
pmed[9] = 100000,
pmed[10] = 150000,

parmy[1] = 30000,
parmy[2] = 40000,
parmy[3] = 50000,
parmy[4] = 60000,
parmy[5] = 60000,
parmy[6] = 70000,
parmy[7] = 70000,
parmy[8] = 80000,
parmy[9] = 80000,
parmy[10] = 90000,
parmy[11] = 90000,
parmy[12] = 100000,
parmy[13] = 100000,
parmy[14] = 100000,
parmy[15] = 150000,

pmayor[1] = 20000,
pmayor[2] = 40000,
pmayor[3] = 60000,
pmayor[4] = 80000,
pmayor[5] = 100000,
pmayor[6] = 150000,

ppd[1] = 50000,
ppd[2] = 50000,
ppd[3] = 60000,
ppd[4] = 60000,
ppd[5] = 70000,
ppd[6] = 70000,
ppd[7] = 80000,
ppd[8] = 80000,
ppd[9] = 80000,
ppd[10] = 90000,
ppd[11] = 100000,
ppd[12] = 100000,
ppd[13] = 100000,
ppd[14] = 150000
]]
function bindt()
    sampAddChatMessage('hiiiiii', color)
end
        imgui.PushItemWidth(150)
    imgui.Combo(u8'Фракция',combobombo1,checkfrac,#checkfrac)
if combobombo1.v == 5 then
imgui.SameLine()
    imgui.SetCursorPosX(242)
imgui.Combo(u8'Ранг',combobombo,pfbi,#pfbi)
elseif combobombo1.v == 3 then
    imgui.SameLine()
        imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,pmed,#pmed)
elseif combobombo1.v == 4 then
    imgui.SameLine()
        imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,parmy,#parmy)
elseif combobombo1.v == 2 then
    imgui.SameLine()

        imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,ppd,#ppd)
elseif combobombo1.v == 1 then
    imgui.SameLine()
        imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,pmayor,#pmayor)

elseif combobombo1.v == 6 then
    imgui.SameLine()
    imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,pds,#pds)
elseif combobombo1.v == 7 then
    imgui.SameLine()
    imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,pnews,#pnews)

end


        imgui.PushItemWidth(150)
if     imgui.InputText(u8'1 требование', buffer1) then
        mainIni.trebovania.treb1 = buffer1.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine()
    if imgui.Button(u8'Очистить 1 требование') then
        mainIni.trebovania.treb1 = ' '
        buffer1.v = ' '
        inicfg.save(mainIni,directIni)
    end

        imgui.SameLine()
        imgui.SetCursorPosX(387)
    if    imgui.SliderInt(u8'Повязка (Клист)',cbuffer,1,33) then
        mainIni.trebovania.tclist = cbuffer.v
        inicfg.save(mainIni,directIni)
    end
if        imgui.InputText(u8'2 требование', buffer2) then
         mainIni.trebovania.treb2 = buffer2.v
        inicfg.save(mainIni, directIni)
    end
        imgui.SameLine()
        if imgui.Button(u8'Очистить 2 требование') then
            mainIni.trebovania.treb2 = ' '
                    buffer2.v = ''
            inicfg.save(mainIni,directIni)
        end
        imgui.SameLine()
        imgui.InputText(u8'РП отыгровки по приезду',priezd)
        if priezd.v:find('/me (.+)') then
    local text = priezd.v:match('/me (.+)')
    priezd.v = text
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Вводите без /me'))
        if imgui.InputText(u8'3 требование', buffer3) then
        mainIni.trebovania.treb3 = buffer3.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine()
    if imgui.Button(u8'Очистить 3 требование') then
        mainIni.trebovania.treb3 = ' '
                buffer3.v = ' '
        inicfg.save(mainIni,directIni)
    end
        imgui.SameLine()
        imgui.InputText(u8'Слова по приезду',priezds)
        if priezds.v:find('/s (.+)') then
    local text = priezds.v:match('/s (.+)')
    priezds.v = text
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Текст будет прописан через /s'))
        if imgui.InputText(u8'4 требование', buffer4) then
        mainIni.trebovania.treb4 = buffer4.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine()
    if imgui.Button(u8'Очистить 4 требование') then
        mainIni.trebovania.treb4 = ' '
                buffer4.v = ' '
        inicfg.save(mainIni,directIni)
    end
        imgui.SameLine()
         imgui.ToggleButton("##1", imBool)

        imgui.SameLine()
        imgui.Text(u8'Включить таймер')


        if imgui.InputText(u8'5 требование', buffer5) then
        mainIni.trebovania.treb5 = buffer5.v
        inicfg.save(mainIni, directIni)
    end
        imgui.SameLine()
        if imgui.Button(u8'Очистить 5 требование') then
            mainIni.trebovania.treb5 = ' '
                    buffer5.v = ' '
            inicfg.save(mainIni,directIni)
        end
        imgui.SameLine()
        if imBool.v == true then
imgui.SliderInt(u8"Таймер (минуты : секунды)", min, 10--[[минимальное число]], 20--[[максимальное число]])
imgui.PopItemWidth()
imgui.SetCursorPosX(387)
if imgui.Button(u8'Начать отсчёт') then
        if timer < os.time() then -- если таймер не идёт (меньше, чем время на пк)
                timer = os.time() + (min.v * 60) -- время на пк(в секундах) + перевод значения слайдера в минуты
        else -- если таймер больше, чем время на пк (если идёт)
                sampAddChatMessage('Ошибка, отсчёт уже идёт!', -1)
        end
end
if timer >= os.time() then -- пока таймер больше времени на пк (пока он идёт)
        imgui.SameLine()
    --    timeost = math.floor((timer - os.time())/60)..':'..math.floor((timer - os.time())%60)
        imgui.Text(math.floor((timer - os.time())/60)..':'..math.floor((timer - os.time())%60))

        --math.floor для того, чтобы после деления выводило целое число
        --(timer - os.time())/60) -- ((таймер-время на пк/)1 минуту) для определения минут
        --(timer - os.time())%60) -- остаток деления на 60 (секунды)
    end
end
imgui.SetCursorPosX(5)
imgui.SetCursorPosY(155)
        if imgui.Button(u8'Очистить все требования ') then
            mainIni.trebovania.treb1 = ' '
                mainIni.trebovania.treb2 = ' '
                    mainIni.trebovania.treb3 = ' '
                        mainIni.trebovania.treb4 = ' '
                            mainIni.trebovania.treb5 = ' '
                            buffer1.v = ''
                            buffer2.v = ''
                            buffer3.v = ''
                            buffer4.v = ''
                            buffer5.v = ''
            inicfg.save(mainIni,directIni)
        end



imgui.EndChild()
-- ===================================================================================================================================================================================================================================================================
        imgui.BeginChild("##secondchild", imgui.ImVec2(715, 130), true)
        if imgui.Button(u8'Показать все требования') then
    if mainIni.trebovania.treb1 == '' and mainIni.trebovania.treb2 == '' and mainIni.trebovania.treb3 == '' and mainIni.trebovania.treb4 == '' and mainIni.trebovania.treb5 == '' or mainIni.trebovania.treb1 == ' ' and mainIni.trebovania.treb2 == ' ' and mainIni.trebovania.treb3 == ' ' and mainIni.trebovania.treb4 == ' ' and mainIni.trebovania.treb5 == ' ' then
                sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
        else
                --    sampAddChatMessage(tag..(u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)), red_color)
                ftext(mainIni.trebovania.treb1 .. ' ' .. mainIni.trebovania.treb2 .. ' ' .. mainIni.trebovania.treb3 .. ' ' .. mainIni.trebovania.treb4 .. ' ' .. mainIni.trebovania.treb5)
            end
end
        imgui.SameLine()
        if imgui.HotKey('##3', ActiveClockMenu2, tLastKeys, 100) then
            rkeys.changeHotKey(bindst, ActiveClockMenu2.v)
            sampAddChatMessage(tag..'{F4A460}Старая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(tLastKeys.v),'+').. '{F4A460} Новая горячая клавиша {FFFFFF}'.. table.concat(rkeys.getKeysName(ActiveClockMenu2.v), " + "), color)
            mainIni.hotkey.bindst = encodeJson(ActiveClockMenu2.v)
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Чтобы показать все требования заполните все поля требовании'))
        imgui.SameLine()
        imgui.SetCursorPosX(355)
        if imgui.Button(u8('Отыграть в чат')) then
            if priezd.v == '' then
                sampAddChatMessage(tag.. '{ff0040}Ошибка! {FFFFFF}Вы не ввели отыгровку', color)
            else
            sampSendChat('/me ' .. (u8:decode(priezd.v)))
        end
    end
        if imgui.Button(u8'Сказать все требования в рацию') then
            if buffer1.v == '' and buffer2.v == '' and buffer3.v == '' and buffer4.v == '' and buffer5.v == '' then
                                    sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
                                else
        sampSendChat('/r ' .. (u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)))
        end
    end
        imgui.SameLine()
        function clockfunc()
                    sampSendChat('/r ' .. (u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)))
        end
        if imgui.HotKey('##1', ActiveClockMenu, tLastKeys, 100) then
            rkeys.changeHotKey(bindr, ActiveClockMenu.v)
            sampAddChatMessage(tag..'{F4A460}Старая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(tLastKeys.v),'+').. '{F4A460} Новая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(ActiveClockMenu.v), " + "), color)
            mainIni.hotkey.bindr = encodeJson(ActiveClockMenu.v)
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Чтобы сказать требования в рацию заполните все поля требовании'))
        imgui.SameLine()
        imgui.SetCursorPosX(355)
        if imgui.Button(u8('Крикнуть по приезду')) then
            if priezds.v == '' then
                sampAddChatMessage(tag .. '{FFFFFF}Нечего кричать,введите текст в поле.', color)
            else
            sampSendChat('/s ' .. priezds.v)
        end
    end

        if imgui.Button(u8'Сказать все требования в рацию /rb ') then
            if buffer1.v == '' and buffer2.v == '' and buffer3.v == '' and buffer4.v == '' and buffer5.v == '' then
                                    sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
                                else
        sampSendChat('/rb ' .. (u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)))
        end
    end
        imgui.SameLine()
        if imgui.HotKey('##2', ActiveClockMenu1, tLastKeys, 100) then
            rkeys.changeHotKey(bindrb, ActiveClockMenu1.v)
            sampAddChatMessage(tag..'{F4A460}Старая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(tLastKeys.v),'+').. '{F4A460} Новая горячая клавиша {FFFFFF}'.. table.concat(rkeys.getKeysName(ActiveClockMenu1.v), " + "), color)
            mainIni.hotkey.bindrb = encodeJson(ActiveClockMenu1.v)
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Чтобы сказать требования в рацию заполните все поля требовании'))
        imgui.SameLine()
        imgui.Button(u8'Показать оставшееся время')
        imgui.SameLine()
        if imgui.HotKey('##4', ActiveClockMenu3, tLastKeys, 100) then
            rkeys.changeHotKey(bindt, ActiveClockMenu3.v)
            sampAddChatMessage(tag..'{F4A460}Старая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(tLastKeys.v),'+').. '{F4A460} Новая горячая клавиша {FFFFFF}'.. table.concat(rkeys.getKeysName(ActiveClockMenu3.v), " + "), color)
            mainIni.hotkey.bindt = encodeJson(ActiveClockMenu3.v)
            inicfg.save(mainIni, directIni)
        end
        if imgui.Button(u8'Надеть повязку (Клист)') then
            if cbuffer.v == 0 then
                sampAddChatMessage(tag .. '{FFFFFF}Вы пытаетесь включить {FF0040}нулевой клист. {FFFFFF} Для начала оденьте маску или выберите другой клист', color)
            end
            sampSendChat('/clist ' .. cbuffer.v)
        end

        if imgui.Button(u8'Красная тема') then
            themes.SwitchColorTheme(2)
            mainIni.itheme.theme = 2
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        if imgui.Button(u8'Черная тема') then
            themes.SwitchColorTheme(5)
            mainIni.itheme.theme = 5
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        if imgui.Button(u8'Фиолетовая тема') then
            themes.SwitchColorTheme(6)
            mainIni.itheme.theme = 6
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        if imgui.Button(u8'Синяя тема') then
            themes.SwitchColorTheme()
            mainIni.itheme.theme = 0
            inicfg.save(mainIni, directIni)
        end

imgui.EndChild()
        imgui.End()
    end
    if extra_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(200,180),imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2((sw/2),sh/2),imgui.Cond.FirstUseEver, imgui.ImVec2(0.5,0.5))
        imgui.Begin(u8"Хелпер Похиток", extra_window_state,imgui.WindowFlags.NoResize)
        imgui.SetCursorPosX(40)
        imgui.SetCursorPosY(30)
        if     imgui.Button(u8'Для агентов',  imgui.ImVec2(120, 20)) then
             agent_window_state.v = not agent_window_state.v
        end
        imgui.SetCursorPosX(40)
        imgui.SetCursorPosY(55)
        function apply_custom_style()
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    style.ButtonTextAlign = imgui.ImVec2(0.5, 0.5)
end
apply_custom_style()
if     imgui.Button(u8'Для операторов HRT', (imgui.ImVec2(133,20))) then
     poxititel_window_state.v = not poxititel_window_state.v
end
apply_custom_style()
imgui.SetCursorPosX(30)
imgui.SetCursorPosY(80)
if imgui.CollapsingHeader(u8'Действия со скриптом') then
    imgui.SetCursorPosX(30)
    imgui.SetCursorPosY(130)
if imgui.Button(u8('Перезагрузить скрипт'),(imgui.ImVec2(133,20))) then
sampAddChatMessage(tag .. '{FFFFFF}Скрипт перезагружен.', color)
thisScript():reload()
end
imgui.SetCursorPosX(30)
imgui.SetCursorPosY(105)
if imgui.Button(u8('Выключить скрипт'),(imgui.ImVec2(133,20))) then
    sampAddChatMessage(tag .. '{FFFFFF}Выгружаю скрипт...', color)
    thisScript():unload()
end
end
            imgui.End()
            end
        end
end
Лог не полный, а с такой табуляцией хрен найдёшь ошибку, без конкретной строки.
Если всё-же лог полный, то скажи после чего появился краш (что менял/добавлял/изменял в скрипте)
 

Fott

Простреленный
3,443
2,303
[ML] (error) px_1_1_alpha.lua: attempt to call a nil value
stack traceback:
[ML] (error) px_1_1_alpha.lua: Script died due to an error. (2BEEFD2C)
Lua:
local themes = import 'lib/imgui_themes.lua'
local tag = '{3498DB}[Хелпер Похиток]: '
local color =  0x3498DB--0xFF69B4
local red_color = 0xff0040
local berserk = 1
local imgui = require 'imgui'
local cbuffer = imgui.ImInt(0)
local buffer1 = imgui.ImBuffer(256)
local buffer2 = imgui.ImBuffer(256)
local buffer3 = imgui.ImBuffer(256)
local buffer4 = imgui.ImBuffer(256)
local buffer5 = imgui.ImBuffer(256)
local combobombo1 = imgui.ImInt(0)
local combobombo = imgui.ImInt(0)
font2 = renderCreateFont('Arial', 8, 5)
ftext = function(text)
    sampAddChatMessage('[Хелпер Похиток]: {ffffff}'..text,0x3498DB)
end
local inicfg = require 'inicfg'
local directIni = "moonloader\\config\\px.ini"
    local mainIni = inicfg.load({
    hotkey = {
    bindr = encodeJson({ VK_R, VK_ALT }),
    bindrb = encodeJson({ VK_Q, VK_ALT }),
    bindst = encodeJson({VK_O,VK_ALT}),
    bindt = encodeJson({VK_A,VK_ALT})
},
    itheme = {
        theme = encodeJson({themes.SwitchColorTheme(0)}),
    },
    trebovania = {
         treb1 = encodeJson({buffer1.v}),
         treb2 = encodeJson({buffer2.v}),
         treb3 = encodeJson({buffer3.v}),
         treb4 = encodeJson({buffer4.v}),
         treb5 = encodeJson({buffer5.v}),
         tclist = encodeJson(cbuffer.v)
    }
    },directIni)
require 'lib.moonloader'

local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local rkeys = require 'rkeys'
imgui.HotKey =  require('imgui_addons').HotKey
imgui.ToggleButton = require('imgui_addons').ToggleButton
local sampev = require 'lib.samp.events'
local tLastKeys = {}
local imBool = imgui.ImBool(false)
local ThemeMenu = {
    v = decodeJson(mainIni.itheme.theme)
}
local TrebMenu1 = {
    v = decodeJson(mainIni.trebovania.treb1)
}
local TrebMenu2 = {
    v = decodeJson(mainIni.trebovania.treb2)
}
local TrebMenu3 = {
    v = decodeJson(mainIni.trebovania.treb3)
}
local TrebMenu4 = {
    v = decodeJson(mainIni.trebovania.treb4)
}
local TrebMenu5 = {
    v = decodeJson(mainIni.trebovania.treb5)
}
local ActiveClockMenu = {
    v = decodeJson(mainIni.hotkey.bindr)
}
local ActiveClockMenu1 = {
    v = decodeJson(mainIni.hotkey.bindrb)
}
local ActiveClockMenu2 = {
    v = decodeJson(mainIni.hotkey.bindst)
}
local ActiveClockMenu3 = {
    v = decodeJson(mainIni.hotkey.bindt)
}
if not doesFileExist('moonloader\\px.ini') then inicfg.save(mainIni,'px.ini') end
local bt = 0
local rt =2
local pt = 6
local bt = 5
local key = 20000
local agent_window_state = imgui.ImBool(false)
local rasc_window_state = imgui.ImBool(false)
local poxititel_window_state = imgui.ImBool(false)
local extra_window_state = imgui.ImBool(false)
local extra_extra_window_state = imgui.ImBool(false)
local text_buffer_name = imgui.ImBuffer(256)
local min = imgui.ImInt(10)
local timer = 0
local priezd = imgui.ImBuffer(64)
local priezds = imgui.ImBuffer(64)
local combo = imgui.ImInt(0)
local combo1 = imgui.ImInt(0)
local combo2 = imgui.ImInt(0)
local combo3 = imgui.ImInt(0)
local combo4 = imgui.ImInt(0)
local pcombo = imgui.ImInt(0)
local pcombo1 = imgui.ImInt(0)
local pcombo2 = imgui.ImInt(0)
local pcombo3 = imgui.ImInt(0)
local pcombo4 = imgui.ImInt(0)
local sw, sh = getScreenResolution()
local combobombo = imgui.ImInt(0)
local combobombo1 = imgui.ImInt(0)
local pfbi =
                {
' ' ,u8'Стажёр', u8'Дежурный', u8'Мл.Агент',u8'Агент DEA',u8'Агент CID',u8'Глава DEA',u8'Глава CID',u8'Инспектор FBI',u8'Зам.Директора FBI',u8'Директор FBI'
            }
local checkfrac ={
    ' ',u8'Мэрия',u8'SAPD',u8'Медики',u8'Армия',u8'ФБР',u8'Автошколаы'
}
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
        local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
        local nick = sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(1))):gsub('_', ' ')
        sampAddChatMessage(tag .. '{FFFFFF}Добро пожаловать, '.. nick ..'.',color)
        sampAddChatMessage(tag .. '{FFFFFF}Автор : Steven Eaton. Приятной игры', color)
        sampAddChatMessage(tag .. '{FFFFFF}Активация : /px', color)
        sampAddChatMessage(tag .. '{FFFFFF}Отдельное спасибо {ff0040}ronnyevans', color)
    sampRegisterChatCommand("px3249234", poxitka)
        sampRegisterChatCommand(px230423402, poxitka2)
        sampRegisterChatCommand("px", poxitka1)
        sampRegisterChatCommand(aksodasidjasd, funcfunc)
        sampRegisterChatCommand(zhaohpgasdogijasdf, gerald)
        imgui.Process = False
        imgui.SwitchContext()
        themes.SwitchColorTheme()
        bindr = rkeys.registerHotKey(ActiveClockMenu.v, true, rhot)
        bindrb = rkeys.registerHotKey(ActiveClockMenu1.v, true, rbhot)
        bindst = rkeys.registerHotKey(ActiveClockMenu2.v, true, bindst)
                bindt = rkeys.registerHotKey(ActiveClockMenu3.v, true, bindt)
        themes.SwitchColorTheme(mainIni.itheme.theme)
      while true do
imgui.Process = extra_window_state.v -- window поменяй на свою переменную
                wait(0)
            end
        end
        function rhot(args)
            if buffer1.v == '' and buffer2.v == '' and buffer3.v == '' and buffer4.v == ''and  buffer5.v == '' then
                    sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
            else
                    sampAddChatMessage(tag..(u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)), red_color)
            end
    end
        function rbhot(args)
            if mainIni.trebovania.treb1 == ' ' and mainIni.trebovania.treb2 == ' ' and mainIni.trebovania.treb3 == ' ' and mainIni.trebovania.treb4 == ' ' and  mainIni.trebovania.treb5 == ' '  or  mainIni.trebovania.treb1 == '' and mainIni.trebovania.treb2 == '' and mainIni.trebovania.treb3 == '' and mainIni.trebovania.treb4 == '' and  mainIni.trebovania.treb5 == ' ' then
                sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
        else
                sampAddChatMessage(tag..(u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)), red_color)
        end

        function bindst(args)
           if  mainIni.trebovania.treb1 == ' ' and mainIni.trebovania.treb2 == ' ' and mainIni.trebovania.treb3 == ' ' and mainIni.trebovania.treb4 == ' ' and  mainIni.trebovania.treb5 == ' ' then
                sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
            else
                sampAddChatMessage(tag..(u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)), red_color)
            end
        end
    end



        function sampev.onServerMessage(color,text)
            if text:find('hrt code 3 (%d+)') then
                code = text:match('hrt code 3 (%d+)')
                sampAddChatMessage('code == '.. code, color)
            end
        end
        function sampev.onServerMessage(color, text)
    if text:find('The') then
            sampAddChatMessage('poprobui etot code', color)
        end

        function imgui.TextQuestion(text)
            imgui.TextDisabled('(?)')
            if imgui.IsItemHovered() then
              imgui.BeginTooltip()
              imgui.PushTextWrapPos(450)
              imgui.TextUnformatted(text)
              imgui.PopTextWrapPos()
              imgui.EndTooltip()
            end
        end
function poxitka(args)
agent_window_state.v = not agent_window_state.v
imgui.Process = agent_window_state.v
end
function poxitka1(args)
extra_window_state.v = not extra_window_state.v
imgui.Process = extra_window_state.v
end
function poxitka(args)
poxititel_window_state.v = not poxititel_window_state.v
imgui.Process = poxititel_window_state.v
end
function imgui.OnDrawFrame()
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5)) imgui.SetNextWindowSize(imgui.ImVec2(725, 340), imgui.Cond.FirstUseEver) -- размер
--    imgui.Begin(u8'Хелпер для похиток', show_main_window, imgui.WindowFlags.NoResize + imgui.WindowFlags.ShowBorders)
    --imgui.SetNextWindowSize(imgui.ImVec2(500,300),imgui.Cond.FirstUseEver)
    --imgui.SetNextWindowPos(imgui.ImVec2((sw/2),sh/2),imgui.Cond.FirstUseEver, imgui.ImVec2(0.5,0.5))
    if agent_window_state.v then
            imgui.Begin(u8"Хелпер для похиток v24".. ' ' ..os.date("%d.%m.%Y"), agent_window_state, imgui.WindowFlags.NoResize)
        --[[ = {u8'Цветы ',u8'Трость ',u8 "Бургер ",u8 "Пицца ", u8"Рем.комплект " , u8"2 рем.комплекта " , u8"3 рем.комплекта ", u8"Фотоаппарат ", u8"Пиво "}
        --povyazka = {u8'Красная повязка',u8"Синяя повязка", u8'Зеленая повязка', u8"Черная повязка",u8"Фиолетовая повязка"}
        --chislo = {'1 ', '2 ', '3 '}
    --    colors = {[1] = u8"Синяя", [2] =  "Красная", [3] =  "Коричневая", [4] = "Аква",[5] = "Чёрная", [6] = "Фиолетовая",[7] = "Черно-оранжевая"}
        --imgui.Begin(u8'Хелпер для похиток', agent_window_state)
        --imgui.Combo(u8'Количество',combo_select , chislo )
        -- imgui.Combo(u8'Выберите тему',combo_select, colors )
    --[[    imgui.PushItemWidth(150)
      imgui.Combo(u8'1 требование',combo , )
        imgui.SameLine()
        imgui.Combo(u8'Повязка', cpovyazka, povyazka)
        imgui.PushItemWidth(150)
        imgui.Combo(u8'2 требование',combo1 , )
        imgui.PushItemWidth(150)
        imgui.Combo(u8'3 требование',combo2 , )
        imgui.PushItemWidth(150)
        imgui.Combo(u8'4 требование',combo3 , )
        imgui.PushItemWidth(150)
        imgui.Combo(u8'5 требование',combo4 , )
        imgui.PushItemWidth(250)]]
        imgui.BeginChild("##firstchild", imgui.ImVec2(715, 180), true)
        local checkfrac ={u8' ', u8'Мэрия',u8'SAPD',u8'Медики',u8'Армия',u8'ФБР',u8'Автошкола',u8'Новости'}
        local pfbi ={u8' ', u8'Стажёр', u8'Дежурный', u8'Мл.Агент',u8'Агент DEA',u8'Агент CID',u8'Глава DEA',u8'Глава CID',u8'Инспектор FBI',u8'Зам.Директора FBI',u8'Директор FBI'}
        local pmed = {u8' ',u8'Интерн',u8'Санитар',u8'Мед.Брат',u8'Спасатель',u8'Нарколог',u8'Доктор',u8'Психолог',u8'Хирург',u8'Зам.Глав.Врача',u8'Глав.Врач'}
        local parmy = {u8" " , u8"Рядовой", u8"Ефрейтор",u8"Мл.Сержант",u8"Сержант",u8"Ст.Сержант",u8"Старшина",u8"Прапорщик",u8"Мл.Лейтенант",u8"Лейтенант",u8"Ст.Лейтенант",u8"Капитан",u8"Майор",u8"Подполковник",u8"Полковник",u8"Генерал"}
        local ppd = {u8' ',u8"Кадет", u8"Офицер",u8"Мл.Сержант",u8"Сержант",u8"Прапорщик",u8"Ст.Прапорщик",u8"Мл.Лейтенант",u8"Лейтенант",u8"Ст.Лейтенант",u8"Капитан",u8"Майор",u8"Подполковник",u8"Полковник",u8"Шериф"}
        local pmayor = {u8" ",u8"Секретарь",u8"Адвокат",u8"Охранник",u8"Нач.Охраны",u8"Зам.Мэра",u8"Мэр"}
        local pds = {u8" ",u8"Стажер",u8"Консультант",u8"Экзаменатор",u8"Мл.Инструктор",u8"Инструктор",u8"Координатор",u8"Мл.Менеджер",u8"Ст.Менеджер",u8"Директор",u8"Управляющий",}
        local pnews = {u8'',u8'Стажер',u8'Звукооператор',u8'Звукорежиссер',u8'Репортер',u8'Ведущий',u8'Редактор',u8'Гл.Редактор',u8'Тех.Директор',u8'Програмный Директор',u8'Ген.Директор', }

--[[
pfbi[1] = 70000,
pfbi[2] = 70000,
pfbi[3] = 70000,
pfbi[4] = 80000,
pfbi[5] = 80000,
pfbi[6] = 90000,
pfbi[7] = 90000,
pfbi[8] = 100000,
pfbi[9] = 100000,
pfbi[10] = 150000,

pds[1] = 20000,
pds[2] = 30000,
pds[3] = 40000,
pds[4] = 50000,
pds[5] = 60000,
pds[6] = 70000,
pds[7] = 80000,
pds[8] = 90000,
pds[9] = 100000,
pds[10] = 150000,

pnews[1] = 10000,
pnews[2] = 20000,
pnews[3] = 30000,
pnews[4] = 40000,
pnews[5] = 50000,
pnews[6] = 60000,
pnews[7] = 70000,
pnews[8] = 80000,
pnews[9] = 90000,
pnews[10] = 100000,

pmed[1] = 20000,
pmed[2] = 30000,
pmed[3] = 40000,
pmed[4] = 50000,
pmed[5] = 60000,
pmed[6] = 70000,
pmed[7] = 80000,
pmed[8] = 90000,
pmed[9] = 100000,
pmed[10] = 150000,

parmy[1] = 30000,
parmy[2] = 40000,
parmy[3] = 50000,
parmy[4] = 60000,
parmy[5] = 60000,
parmy[6] = 70000,
parmy[7] = 70000,
parmy[8] = 80000,
parmy[9] = 80000,
parmy[10] = 90000,
parmy[11] = 90000,
parmy[12] = 100000,
parmy[13] = 100000,
parmy[14] = 100000,
parmy[15] = 150000,

pmayor[1] = 20000,
pmayor[2] = 40000,
pmayor[3] = 60000,
pmayor[4] = 80000,
pmayor[5] = 100000,
pmayor[6] = 150000,

ppd[1] = 50000,
ppd[2] = 50000,
ppd[3] = 60000,
ppd[4] = 60000,
ppd[5] = 70000,
ppd[6] = 70000,
ppd[7] = 80000,
ppd[8] = 80000,
ppd[9] = 80000,
ppd[10] = 90000,
ppd[11] = 100000,
ppd[12] = 100000,
ppd[13] = 100000,
ppd[14] = 150000
]]
function bindt()
    sampAddChatMessage('hiiiiii', color)
end
        imgui.PushItemWidth(150)
    imgui.Combo(u8'Фракция',combobombo1,checkfrac,#checkfrac)
if combobombo1.v == 5 then
imgui.SameLine()
    imgui.SetCursorPosX(242)
imgui.Combo(u8'Ранг',combobombo,pfbi,#pfbi)
elseif combobombo1.v == 3 then
    imgui.SameLine()
        imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,pmed,#pmed)
elseif combobombo1.v == 4 then
    imgui.SameLine()
        imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,parmy,#parmy)
elseif combobombo1.v == 2 then
    imgui.SameLine()

        imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,ppd,#ppd)
elseif combobombo1.v == 1 then
    imgui.SameLine()
        imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,pmayor,#pmayor)

elseif combobombo1.v == 6 then
    imgui.SameLine()
    imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,pds,#pds)
elseif combobombo1.v == 7 then
    imgui.SameLine()
    imgui.SetCursorPosX(242)
    imgui.Combo(u8'Ранг',combobombo,pnews,#pnews)

end


        imgui.PushItemWidth(150)
if     imgui.InputText(u8'1 требование', buffer1) then
        mainIni.trebovania.treb1 = buffer1.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine()
    if imgui.Button(u8'Очистить 1 требование') then
        mainIni.trebovania.treb1 = ' '
        buffer1.v = ' '
        inicfg.save(mainIni,directIni)
    end

        imgui.SameLine()
        imgui.SetCursorPosX(387)
    if    imgui.SliderInt(u8'Повязка (Клист)',cbuffer,1,33) then
        mainIni.trebovania.tclist = cbuffer.v
        inicfg.save(mainIni,directIni)
    end
if        imgui.InputText(u8'2 требование', buffer2) then
         mainIni.trebovania.treb2 = buffer2.v
        inicfg.save(mainIni, directIni)
    end
        imgui.SameLine()
        if imgui.Button(u8'Очистить 2 требование') then
            mainIni.trebovania.treb2 = ' '
                    buffer2.v = ''
            inicfg.save(mainIni,directIni)
        end
        imgui.SameLine()
        imgui.InputText(u8'РП отыгровки по приезду',priezd)
        if priezd.v:find('/me (.+)') then
    local text = priezd.v:match('/me (.+)')
    priezd.v = text
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Вводите без /me'))
        if imgui.InputText(u8'3 требование', buffer3) then
        mainIni.trebovania.treb3 = buffer3.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine()
    if imgui.Button(u8'Очистить 3 требование') then
        mainIni.trebovania.treb3 = ' '
                buffer3.v = ' '
        inicfg.save(mainIni,directIni)
    end
        imgui.SameLine()
        imgui.InputText(u8'Слова по приезду',priezds)
        if priezds.v:find('/s (.+)') then
    local text = priezds.v:match('/s (.+)')
    priezds.v = text
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Текст будет прописан через /s'))
        if imgui.InputText(u8'4 требование', buffer4) then
        mainIni.trebovania.treb4 = buffer4.v
        inicfg.save(mainIni, directIni)
    end
    imgui.SameLine()
    if imgui.Button(u8'Очистить 4 требование') then
        mainIni.trebovania.treb4 = ' '
                buffer4.v = ' '
        inicfg.save(mainIni,directIni)
    end
        imgui.SameLine()
         imgui.ToggleButton("##1", imBool)

        imgui.SameLine()
        imgui.Text(u8'Включить таймер')


        if imgui.InputText(u8'5 требование', buffer5) then
        mainIni.trebovania.treb5 = buffer5.v
        inicfg.save(mainIni, directIni)
    end
        imgui.SameLine()
        if imgui.Button(u8'Очистить 5 требование') then
            mainIni.trebovania.treb5 = ' '
                    buffer5.v = ' '
            inicfg.save(mainIni,directIni)
        end
        imgui.SameLine()
        if imBool.v == true then
imgui.SliderInt(u8"Таймер (минуты : секунды)", min, 10--[[минимальное число]], 20--[[максимальное число]])
imgui.PopItemWidth()
imgui.SetCursorPosX(387)
if imgui.Button(u8'Начать отсчёт') then
        if timer < os.time() then -- если таймер не идёт (меньше, чем время на пк)
                timer = os.time() + (min.v * 60) -- время на пк(в секундах) + перевод значения слайдера в минуты
        else -- если таймер больше, чем время на пк (если идёт)
                sampAddChatMessage('Ошибка, отсчёт уже идёт!', -1)
        end
end
if timer >= os.time() then -- пока таймер больше времени на пк (пока он идёт)
        imgui.SameLine()
    --    timeost = math.floor((timer - os.time())/60)..':'..math.floor((timer - os.time())%60)
        imgui.Text(math.floor((timer - os.time())/60)..':'..math.floor((timer - os.time())%60))

        --math.floor для того, чтобы после деления выводило целое число
        --(timer - os.time())/60) -- ((таймер-время на пк/)1 минуту) для определения минут
        --(timer - os.time())%60) -- остаток деления на 60 (секунды)
    end
end
imgui.SetCursorPosX(5)
imgui.SetCursorPosY(155)
        if imgui.Button(u8'Очистить все требования ') then
            mainIni.trebovania.treb1 = ' '
                mainIni.trebovania.treb2 = ' '
                    mainIni.trebovania.treb3 = ' '
                        mainIni.trebovania.treb4 = ' '
                            mainIni.trebovania.treb5 = ' '
                            buffer1.v = ''
                            buffer2.v = ''
                            buffer3.v = ''
                            buffer4.v = ''
                            buffer5.v = ''
            inicfg.save(mainIni,directIni)
        end



imgui.EndChild()
-- ===================================================================================================================================================================================================================================================================
        imgui.BeginChild("##secondchild", imgui.ImVec2(715, 130), true)
        if imgui.Button(u8'Показать все требования') then
    if mainIni.trebovania.treb1 == '' and mainIni.trebovania.treb2 == '' and mainIni.trebovania.treb3 == '' and mainIni.trebovania.treb4 == '' and mainIni.trebovania.treb5 == '' or mainIni.trebovania.treb1 == ' ' and mainIni.trebovania.treb2 == ' ' and mainIni.trebovania.treb3 == ' ' and mainIni.trebovania.treb4 == ' ' and mainIni.trebovania.treb5 == ' ' then
                sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
        else
                --    sampAddChatMessage(tag..(u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)), red_color)
                ftext(mainIni.trebovania.treb1 .. ' ' .. mainIni.trebovania.treb2 .. ' ' .. mainIni.trebovania.treb3 .. ' ' .. mainIni.trebovania.treb4 .. ' ' .. mainIni.trebovania.treb5)
            end
end
        imgui.SameLine()
        if imgui.HotKey('##3', ActiveClockMenu2, tLastKeys, 100) then
            rkeys.changeHotKey(bindst, ActiveClockMenu2.v)
            sampAddChatMessage(tag..'{F4A460}Старая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(tLastKeys.v),'+').. '{F4A460} Новая горячая клавиша {FFFFFF}'.. table.concat(rkeys.getKeysName(ActiveClockMenu2.v), " + "), color)
            mainIni.hotkey.bindst = encodeJson(ActiveClockMenu2.v)
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Чтобы показать все требования заполните все поля требовании'))
        imgui.SameLine()
        imgui.SetCursorPosX(355)
        if imgui.Button(u8('Отыграть в чат')) then
            if priezd.v == '' then
                sampAddChatMessage(tag.. '{ff0040}Ошибка! {FFFFFF}Вы не ввели отыгровку', color)
            else
            sampSendChat('/me ' .. (u8:decode(priezd.v)))
        end
    end
        if imgui.Button(u8'Сказать все требования в рацию') then
            if buffer1.v == '' and buffer2.v == '' and buffer3.v == '' and buffer4.v == '' and buffer5.v == '' then
                                    sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
                                else
        sampSendChat('/r ' .. (u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)))
        end
    end
        imgui.SameLine()
        function clockfunc()
                    sampSendChat('/r ' .. (u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)))
        end
        if imgui.HotKey('##1', ActiveClockMenu, tLastKeys, 100) then
            rkeys.changeHotKey(bindr, ActiveClockMenu.v)
            sampAddChatMessage(tag..'{F4A460}Старая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(tLastKeys.v),'+').. '{F4A460} Новая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(ActiveClockMenu.v), " + "), color)
            mainIni.hotkey.bindr = encodeJson(ActiveClockMenu.v)
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Чтобы сказать требования в рацию заполните все поля требовании'))
        imgui.SameLine()
        imgui.SetCursorPosX(355)
        if imgui.Button(u8('Крикнуть по приезду')) then
            if priezds.v == '' then
                sampAddChatMessage(tag .. '{FFFFFF}Нечего кричать,введите текст в поле.', color)
            else
            sampSendChat('/s ' .. priezds.v)
        end
    end

        if imgui.Button(u8'Сказать все требования в рацию /rb ') then
            if buffer1.v == '' and buffer2.v == '' and buffer3.v == '' and buffer4.v == '' and buffer5.v == '' then
                                    sampAddChatMessage(tag .. '{FFFFFF}Нет требовании, введите их в поля требовании.', color)
                                else
        sampSendChat('/rb ' .. (u8:decode(buffer1.v)).. ' ' .. (u8:decode(buffer2.v)) .. ' ' .. (u8:decode(buffer3.v)) ..' ' .. (u8:decode(buffer4.v)) .. ' ' .. (u8:decode(buffer5.v)))
        end
    end
        imgui.SameLine()
        if imgui.HotKey('##2', ActiveClockMenu1, tLastKeys, 100) then
            rkeys.changeHotKey(bindrb, ActiveClockMenu1.v)
            sampAddChatMessage(tag..'{F4A460}Старая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(tLastKeys.v),'+').. '{F4A460} Новая горячая клавиша {FFFFFF}'.. table.concat(rkeys.getKeysName(ActiveClockMenu1.v), " + "), color)
            mainIni.hotkey.bindrb = encodeJson(ActiveClockMenu1.v)
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.TextQuestion(u8('Чтобы сказать требования в рацию заполните все поля требовании'))
        imgui.SameLine()
        imgui.Button(u8'Показать оставшееся время')
        imgui.SameLine()
        if imgui.HotKey('##4', ActiveClockMenu3, tLastKeys, 100) then
            rkeys.changeHotKey(bindt, ActiveClockMenu3.v)
            sampAddChatMessage(tag..'{F4A460}Старая горячая клавиша: {FFFFFF}'.. table.concat(rkeys.getKeysName(tLastKeys.v),'+').. '{F4A460} Новая горячая клавиша {FFFFFF}'.. table.concat(rkeys.getKeysName(ActiveClockMenu3.v), " + "), color)
            mainIni.hotkey.bindt = encodeJson(ActiveClockMenu3.v)
            inicfg.save(mainIni, directIni)
        end
        if imgui.Button(u8'Надеть повязку (Клист)') then
            if cbuffer.v == 0 then
                sampAddChatMessage(tag .. '{FFFFFF}Вы пытаетесь включить {FF0040}нулевой клист. {FFFFFF} Для начала оденьте маску или выберите другой клист', color)
            end
            sampSendChat('/clist ' .. cbuffer.v)
        end

        if imgui.Button(u8'Красная тема') then
            themes.SwitchColorTheme(2)
            mainIni.itheme.theme = 2
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        if imgui.Button(u8'Черная тема') then
            themes.SwitchColorTheme(5)
            mainIni.itheme.theme = 5
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        if imgui.Button(u8'Фиолетовая тема') then
            themes.SwitchColorTheme(6)
            mainIni.itheme.theme = 6
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        if imgui.Button(u8'Синяя тема') then
            themes.SwitchColorTheme()
            mainIni.itheme.theme = 0
            inicfg.save(mainIni, directIni)
        end

imgui.EndChild()
        imgui.End()
    end
    if extra_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(200,180),imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2((sw/2),sh/2),imgui.Cond.FirstUseEver, imgui.ImVec2(0.5,0.5))
        imgui.Begin(u8"Хелпер Похиток", extra_window_state,imgui.WindowFlags.NoResize)
        imgui.SetCursorPosX(40)
        imgui.SetCursorPosY(30)
        if     imgui.Button(u8'Для агентов',  imgui.ImVec2(120, 20)) then
             agent_window_state.v = not agent_window_state.v
        end
        imgui.SetCursorPosX(40)
        imgui.SetCursorPosY(55)
        function apply_custom_style()
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    style.ButtonTextAlign = imgui.ImVec2(0.5, 0.5)
end
apply_custom_style()
if     imgui.Button(u8'Для операторов HRT', (imgui.ImVec2(133,20))) then
     poxititel_window_state.v = not poxititel_window_state.v
end
apply_custom_style()
imgui.SetCursorPosX(30)
imgui.SetCursorPosY(80)
if imgui.CollapsingHeader(u8'Действия со скриптом') then
    imgui.SetCursorPosX(30)
    imgui.SetCursorPosY(130)
if imgui.Button(u8('Перезагрузить скрипт'),(imgui.ImVec2(133,20))) then
sampAddChatMessage(tag .. '{FFFFFF}Скрипт перезагружен.', color)
thisScript():reload()
end
imgui.SetCursorPosX(30)
imgui.SetCursorPosY(105)
if imgui.Button(u8('Выключить скрипт'),(imgui.ImVec2(133,20))) then
    sampAddChatMessage(tag .. '{FFFFFF}Выгружаю скрипт...', color)
    thisScript():unload()
end
end
            imgui.End()
            end
        end
end
local color = 0x3498DB--0xFF69B4 local red_color = 0xff0040
Так вроде нельзя, попробуй
Lua:
local color = 3498DB--0xFF69B4
local red_color = ff0040
-- там где нужно заюзать пишешь
tonumber(color,16)
--и соответственно
tonumber(red_color,16)
Тунамбер вернет цвет в
 

kizn

О КУ)))
Всефорумный модератор
2,405
2,060
если в переменной text содержится >20 символов

как сделать такую проверку?