require('lib.moonloader')
local event = require 'lib.samp.events'
local imgui = require 'mimgui'
local encoding = require 'encoding'
local u8 = encoding.UTF8
local ffi = require 'ffi'
local str, sizeof = ffi.string, ffi.sizeof
local input = imgui.new.char[64]()
local new = imgui.new
encoding.default = 'CP1251'
local inicfg = require 'inicfg'
local directIni = 'SobesHelper.ini'
local ini = inicfg.load(inicfg.load({
main = {
org = 0
},
}, directIni))
inicfg.save(ini, directIni)
local ComboNTest = new.int(ini.main.org)
function onScriptTerminate(s) -- функция сохранения, при выгрузке скрипта
if s == thisScript() then
ini.main.org = ComboNTest[0] -- запихиваем комбо в ини
inicfg.save(ini, directIni) -- сохраняем
end
end
local inputField = imgui.new.char[256]()
local ComboMesta_list = new.int()
local nitem_list = {u8'Не выбрано', u8'Полиция ЛС', u8'ФБР', u8'Армия ЛС', u8'Больница ЛС', u8'Мэрия', u8'РКШД', u8'Полиция СФ', u8'Армия ЛВ', u8'Полиция ЛВ', u8'S.W.A.T', u8'Правительство'}
local nImItems = imgui.new['const char*'][#nitem_list](nitem_list)
local nmesta_list = {u8'здание мэрии', u8'здание нашего холла'}
local iMmesta_list = imgui.new['const char*'][#nmesta_list](nmesta_list)
local tab = 1
local sobes = new.bool(false)
local dialogsobes = new.bool(false)
local checkbox_one = new.bool(false)
local inputField = imgui.new.char[256]()
imgui.OnFrame(function() return sobes[0] end, function(player)
local resX, resY = getScreenResolution()
local sizeX, sizeY = 700, 370
imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
imgui.Begin('Sobes helper', sobes, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)-- + imgui.WindowFlags.NoMove)
for numberTab,nameTab in pairs({'Информация','Собеседования','Настройки'}) do -- создаём и парсим таблицу с названиями будущих вкладок
if imgui.Button(u8(nameTab), imgui.ImVec2(130,90)) then -- 2ым аргументом настраивается размер кнопок (подробнее в гайде по мимгуи)
tab = numberTab -- меняем значение переменной tab на номер нажатой кнопки
end
end
imgui.Separator()
imgui.Separator()
imgui.Separator()
-- imgui.SameLine()
imgui.Text(u8'Автор скрипта: enthype')
-- imgui.SameLine()
-- imgui.SameLine()
imgui.Text(u8'Связь с разработчиком')
imgui.SameLine()
imgui.Text(u8'•')
imgui.SameLine()
imgui.Link('https://vk.com/number1241')
imgui.SameLine()
imgui.Text(u8'•')
imgui.SameLine()
imgui.Link('https://t.me/enthype')
imgui.SameLine()
imgui.Text(u8'•')
imgui.SetCursorPos(imgui.ImVec2(150,30))
if imgui.BeginChild('Name##'..tab, imgui.ImVec2(540, 275), true) then
if tab == 1 then
imgui.Text(u8'Здарова ленивые жопы, которым впадлу писать вручную текст и проводить собес.\nС этим скриптом Вы сможете это делать проще и быстрее.\n • Лёгкость с собесами\n • Простый в использовании\n • Автор имеет социально-националистические взгляды')
elseif tab == 2 then
imgui.PushItemWidth(155)
if imgui.Combo(u8'Выберите свою организацию',ComboNTest,nImItems, #nitem_list) then
ini.main.org = ComboNTest[0]
inicfg.save(ini, directIni)
end
if imgui.Combo(u8'выберите место проведения',ComboMesta_list,iMmesta_list, #nmesta_list) then
end
local selected_value = u8:decode(nitem_list[ComboNTest[0] + 1])
local selected_mesto = u8:decode(nmesta_list[ComboMesta_list[0] + 1])
imgui.PopItemWidth()
if imgui.Button(u8'Оповестить о начале') then
lua_thread.create(function()
sampSendChat('/d ['..selected_value..'] > [Всем]: Занимаю волну гос. новостей.')
wait(1000)
sampSendChat('/gov Уважаемые жители штата! Прошу минутку Вашего внимания!')
wait(5000)
sampSendChat('/gov Сейчас, на данный момент, проходит собеседование в ряды нашей организации - '..selected_value..'.')
wait(5000)
sampSendChat('/gov Всем желающим прибыть в '..selected_mesto..'.')
wait(5000)
sampSendChat('/gov Благодарю всех Вас за внимание!')
wait(1000)
sampSendChat('/d ['..selected_value..'] > [Всем]: Освобождаю волну гос. новостей.')
wait(1000)
sampSendChat('/time')
wait(100)
sampCloseCurrentDialogWithButton(1)
end)
end
if imgui.Button(u8'Оповестить об окончании') then
lua_thread.create(function()
local selected_value = u8:decode(nitem_list[ComboNTest[0] + 1])
local selected_mesto = u8:decode(nmesta_list[ComboMesta_list[0] + 1])
sampSendChat('/d ['..selected_value..'] > [Всем]: Занимаю волну гос. новостей.')
wait(1000)
sampSendChat('/gov Уважаемые жители штата! Прошу минутку Вашего внимания!')
wait(5000)
sampSendChat('/gov Хочу ооповестить, что собеседование в нашу организацию '..selected_value..' было окончено.')
wait(5000)
sampSendChat('/gov Благодарим всех кто пришёл. А кто не успел, обязательно успеет в другой раз!')
wait(5000)
sampSendChat('/gov Благодарю всех Вас за внимание!')
wait(1000)
sampSendChat('/d ['..selected_value..'] > [Всем]: Освобождаю волну гос. новостей.')
wait(1000)
sampSendChat('/time')
wait(100)
sampCloseCurrentDialogWithButton(1)
end)
end
imgui.SameLine()
if imgui.Button(u8'Сохранить') then
ini.main.org = ComboNTest[0] -- запихиваем комбо в ини
inicfg.save(ini, directIni)
sampAddChatMessage('Вы сохранили выбор',-1)
end
imgui.Separator()
imgui.Text(u8'Эта тема отвечает за вопросы. Просто, нажми на кнопку ниже.')
if imgui.Button(u8'Собеседование') then
dialogsobes[0] = not dialogsobes[0]
end
elseif tab == 3 then
end
imgui.EndChild()
end
if tab == 1 then
imgui.Text(u8'Здарова ленивые жопы, которым впадлу писать вручную текст и проводить собес.\nС этим скриптом Вы сможете это делать проще и быстрее.\n • Лёгкость с собесами\n • Простый в использовании\n • Автор имеет социально-националистические взгляды')
elseif tab == 2 then
imgui.PushItemWidth(155)
if imgui.Combo(u8'Выберите свою организацию',ComboNTest,nImItems, #nitem_list) then
ini.main.org = ComboNTest[0]
inicfg.save(ini, directIni)
end
if imgui.Combo(u8'выберите место проведения',ComboMesta_list,iMmesta_list, #nmesta_list) then
end
local selected_value = u8:decode(nitem_list[ComboNTest[0] + 1])
local selected_mesto = u8:decode(nmesta_list[ComboMesta_list[0] + 1])
imgui.PopItemWidth()
if imgui.Button(u8'Оповестить о начале') then
lua_thread.create(function()
sampSendChat('/d ['..selected_value..'] > [Всем]: Занимаю волну гос. новостей.')
wait(1000)
sampSendChat('/gov Уважаемые жители штата! Прошу минутку Вашего внимания!')
wait(5000)
sampSendChat('/gov Сейчас, на данный момент, проходит собеседование в ряды нашей организации - '..selected_value..'.')
wait(5000)
sampSendChat('/gov Всем желающим прибыть в '..selected_mesto..'.')
wait(5000)
sampSendChat('/gov Благодарю всех Вас за внимание!')
wait(1000)
sampSendChat('/d ['..selected_value..'] > [Всем]: Освобождаю волну гос. новостей.')
wait(1000)
sampSendChat('/time')
wait(100)
sampCloseCurrentDialogWithButton(1)
end)
end
if imgui.Button(u8'Оповестить об окончании') then
lua_thread.create(function()
local selected_value = u8:decode(nitem_list[ComboNTest[0] + 1])
local selected_mesto = u8:decode(nmesta_list[ComboMesta_list[0] + 1])
sampSendChat('/d ['..selected_value..'] > [Всем]: Занимаю волну гос. новостей.')
wait(1000)
sampSendChat('/gov Уважаемые жители штата! Прошу минутку Вашего внимания!')
wait(5000)
sampSendChat('/gov Хочу ооповестить, что собеседование в нашу организацию '..selected_value..' было окончено.')
wait(5000)
sampSendChat('/gov Благодарим всех кто пришёл. А кто не успел, обязательно успеет в другой раз!')
wait(5000)
sampSendChat('/gov Благодарю всех Вас за внимание!')
wait(1000)
sampSendChat('/d ['..selected_value..'] > [Всем]: Освобождаю волну гос. новостей.')
wait(1000)
sampSendChat('/time')
wait(100)
sampCloseCurrentDialogWithButton(1)
end)
end
imgui.SameLine()
if imgui.Button(u8'Сохранить') then
ini.main.org = ComboNTest[0] -- запихиваем комбо в ини
inicfg.save(ini, directIni)
sampAddChatMessage('Вы сохранили выбор',-1)
end
imgui.Separator()
imgui.Text(u8'Эта тема отвечает за вопросы. Просто, нажми на кнопку ниже.')
if imgui.Button(u8'Собеседование') then
dialogsobes[0] = not dialogsobes[0]
end
elseif tab == 3 then
end
imgui.EndChild()
imgui.End()
end)
imgui.OnFrame(function() return dialogsobes[0] end, function(pl)
local resX, resY = getScreenResolution()
local sizeX, sizeY = 190, 250
imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
imgui.Begin(u8'Собеседование', dialogsobes, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
imgui.Text(u8'Code..')
imgui.End()
end)
function main()
while not isSampAvailable() do wait(0) end
sampAddChatMessage('sobes load sobes load sobes load sobes load sobes load ', 0xff0000)
sampRegisterChatCommand('shelper', function()
sobes[0] = not sobes[0]
end)
while true do
wait(0)
end
end
imgui.OnInitialize(function()
local ImVec4 = imgui.ImVec4
imgui.SwitchContext()
imgui.GetStyle().Colors[imgui.Col.WindowBg] = imgui.ImVec4(0.14, 0.12, 0.16, 1.00)
imgui.GetStyle().Colors[imgui.Col.ChildBg] = imgui.ImVec4(0.30, 0.20, 0.39, 0.00)
imgui.GetStyle().Colors[imgui.Col.PopupBg] = imgui.ImVec4(0.05, 0.05, 0.10, 0.90)
imgui.GetStyle().Colors[imgui.Col.Border] = imgui.ImVec4(0.89, 0.85, 0.92, 0.30)
imgui.GetStyle().Colors[imgui.Col.BorderShadow] = imgui.ImVec4(0.00, 0.00, 0.00, 0.00)
imgui.GetStyle().Colors[imgui.Col.FrameBg] = imgui.ImVec4(0.30, 0.20, 0.39, 1.00)
imgui.GetStyle().Colors[imgui.Col.FrameBgHovered] = imgui.ImVec4(0.41, 0.19, 0.63, 0.68)
imgui.GetStyle().Colors[imgui.Col.FrameBgActive] = imgui.ImVec4(0.41, 0.19, 0.63, 1.00)
imgui.GetStyle().Colors[imgui.Col.TitleBg] = imgui.ImVec4(0.41, 0.19, 0.63, 0.45)
imgui.GetStyle().Colors[imgui.Col.TitleBgCollapsed] = imgui.ImVec4(0.41, 0.19, 0.63, 0.35)
imgui.GetStyle().Colors[imgui.Col.TitleBgActive] = imgui.ImVec4(0.41, 0.19, 0.63, 0.78)
imgui.GetStyle().Colors[imgui.Col.MenuBarBg] = imgui.ImVec4(0.30, 0.20, 0.39, 0.57)
imgui.GetStyle().Colors[imgui.Col.ScrollbarBg] = imgui.ImVec4(0.30, 0.20, 0.39, 1.00)
imgui.GetStyle().Colors[imgui.Col.ScrollbarGrab] = imgui.ImVec4(0.41, 0.19, 0.63, 0.31)
imgui.GetStyle().Colors[imgui.Col.ScrollbarGrabHovered] = imgui.ImVec4(0.41, 0.19, 0.63, 0.78)
imgui.GetStyle().Colors[imgui.Col.ScrollbarGrabActive] = imgui.ImVec4(0.41, 0.19, 0.63, 1.00)
imgui.GetStyle().Colors[imgui.Col.CheckMark] = imgui.ImVec4(0.56, 0.61, 1.00, 1.00)
imgui.GetStyle().Colors[imgui.Col.SliderGrab] = imgui.ImVec4(0.41, 0.19, 0.63, 0.24)
imgui.GetStyle().Colors[imgui.Col.SliderGrabActive] = imgui.ImVec4(0.41, 0.19, 0.63, 1.00)
imgui.GetStyle().Colors[imgui.Col.Button] = imgui.ImVec4(0.41, 0.19, 0.63, 0.44)
imgui.GetStyle().Colors[imgui.Col.ButtonHovered] = imgui.ImVec4(0.41, 0.19, 0.63, 0.86)
imgui.GetStyle().Colors[imgui.Col.ButtonActive] = imgui.ImVec4(0.64, 0.33, 0.94, 1.00)
imgui.GetStyle().Colors[imgui.Col.Header] = imgui.ImVec4(0.41, 0.19, 0.63, 0.76)
imgui.GetStyle().Colors[imgui.Col.HeaderHovered] = imgui.ImVec4(0.41, 0.19, 0.63, 0.86)
imgui.GetStyle().Colors[imgui.Col.HeaderActive] = imgui.ImVec4(0.41, 0.19, 0.63, 1.00)
imgui.GetStyle().Colors[imgui.Col.ResizeGrip] = imgui.ImVec4(0.41, 0.19, 0.63, 0.20)
imgui.GetStyle().Colors[imgui.Col.ResizeGripHovered] = imgui.ImVec4(0.41, 0.19, 0.63, 0.78)
imgui.GetStyle().Colors[imgui.Col.ResizeGripActive] = imgui.ImVec4(0.41, 0.19, 0.63, 1.00)
imgui.GetStyle().Colors[imgui.Col.PlotLines] = imgui.ImVec4(0.89, 0.85, 0.92, 0.63)
imgui.GetStyle().Colors[imgui.Col.PlotLinesHovered] = imgui.ImVec4(0.41, 0.19, 0.63, 1.00)
imgui.GetStyle().Colors[imgui.Col.PlotHistogram] = imgui.ImVec4(0.89, 0.85, 0.92, 0.63)
imgui.GetStyle().Colors[imgui.Col.PlotHistogramHovered] = imgui.ImVec4(0.41, 0.19, 0.63, 1.00)
imgui.GetStyle().Colors[imgui.Col.TextSelectedBg] = imgui.ImVec4(0.41, 0.19, 0.63, 0.43)
end)
function imgui.Link(link, text)
text = text or link
local tSize = imgui.CalcTextSize(text)
local p = imgui.GetCursorScreenPos()
local DL = imgui.GetWindowDrawList()
local col = { 0xFFFF7700, 0xFFFF9900 }
if imgui.InvisibleButton("##" .. link, tSize) then os.execute("explorer " .. link) end
local color = imgui.IsItemHovered() and col[1] or col[2]
DL:AddText(p, color, text)
DL:AddLine(imgui.ImVec2(p.x, p.y + tSize.y), imgui.ImVec2(p.x + tSize.x, p.y + tSize.y), color)
end