- 252
- 39
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
- Версия MoonLoader
- .026-beta
У меня есть много полей, как сделать что-бы когда человек не введёт хотя бы в одно поле, оно выдало ошибку. Я сделал, но оно работает частично, то есть вополняется проверка введено ли, выдаёт ошибку и сохраняет, а мне надо что-бы просто дало ошибку.
КОд
КОд
Lua:
script_name("[ARP] Gnews-Assistant")
script_author("Jesus_McWood")
require "lib.moonloader"
local inicfg = require 'inicfg'
local imgui = require 'imgui'
local directIni = 'moonloader/Gnews-Assistant/config.ini'
local mainIni = inicfg.load(nil, directIni)
local tag = "{FFD700}[Gnews-Assistant]"
local main_color = "0xFFD700"
local main_window = imgui.ImBool(false)
local settings_window = imgui.ImBool(false)
local info_window = imgui.ImBool(false)
local gnews_window = imgui.ImBool(false)
local pred_window = imgui.ImBool(false)
local pred2_window = imgui.ImBool(false)
local pred3_window = imgui.ImBool(false)
local pred4_window = imgui.ImBool(false)
local tag_buffer = imgui.ImBuffer(10)
local avans_buffer = imgui.ImBuffer(10)
local location_buffer = imgui.ImBuffer(10000)
local org_buffer = imgui.ImBuffer(10)
local treb_buffer = imgui.ImBuffer(10000)
local gps_buffer = imgui.ImBuffer(50)
local fa = require 'fAwesome5'
local fa_font = nil
local fa_glyph_ranges = imgui.ImGlyphRanges({ fa.min_range, fa.max_range })
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local sw, sh = getScreenResolution()
local ImVec2 = imgui.ImVec2
local table1
local shablon = {
config = {
org="LSPD", -- Организация
tag="МВД", -- Тэг
avans="10.000", -- Аванс
location="в холле департамента Los-Santos", -- Локация
gps="GPS 3-3", -- ГПС
treb="3 года в штате, лицензии и быть законопослушным" -- Требования
}
}
function CustomStyle()
imgui.SwitchContext()
local style = imgui.GetStyle()
local colors = style.Colors
local clr = imgui.Col
local ImVec4 = imgui.ImVec4
style.WindowPadding = imgui.ImVec2(9, 5)
style.WindowRounding = 10
style.ChildWindowRounding = 10
style.FramePadding = imgui.ImVec2(5, 3)
style.FrameRounding = 6.0
style.ItemSpacing = imgui.ImVec2(9.0, 3.0)
style.ItemInnerSpacing = imgui.ImVec2(9.0, 3.0)
style.IndentSpacing = 21
style.ScrollbarSize = 6.0
style.ScrollbarRounding = 13
style.GrabMinSize = 17.0
style.GrabRounding = 16.0
style.WindowTitleAlign = imgui.ImVec2(0.5, 0.5)
style.ButtonTextAlign = imgui.ImVec2(0.5, 0.5)
colors[clr.Text] = ImVec4(0.90, 0.90, 0.90, 1.00)
colors[clr.TextDisabled] = ImVec4(1.00, 1.00, 1.00, 1.00)
colors[clr.WindowBg] = ImVec4(0.00, 0.00, 0.00, 1.00)
colors[clr.ChildWindowBg] = ImVec4(0.00, 0.00, 0.00, 1.00)
colors[clr.PopupBg] = ImVec4(0.00, 0.00, 0.00, 1.00)
colors[clr.Border] = ImVec4(0.82, 0.77, 0.78, 1.00)
colors[clr.BorderShadow] = ImVec4(0.35, 0.35, 0.35, 0.66)
colors[clr.FrameBg] = ImVec4(1.00, 1.00, 1.00, 0.28)
colors[clr.FrameBgHovered] = ImVec4(0.68, 0.68, 0.68, 0.67)
colors[clr.FrameBgActive] = ImVec4(0.79, 0.73, 0.73, 0.62)
colors[clr.TitleBg] = ImVec4(0.00, 0.00, 0.00, 1.00)
colors[clr.TitleBgActive] = ImVec4(0.46, 0.46, 0.46, 1.00)
colors[clr.TitleBgCollapsed] = ImVec4(0.00, 0.00, 0.00, 1.00)
colors[clr.MenuBarBg] = ImVec4(0.00, 0.00, 0.00, 0.80)
colors[clr.ScrollbarBg] = ImVec4(0.00, 0.00, 0.00, 0.60)
colors[clr.ScrollbarGrab] = ImVec4(1.00, 1.00, 1.00, 0.87)
colors[clr.ScrollbarGrabHovered] = ImVec4(1.00, 1.00, 1.00, 0.79)
colors[clr.ScrollbarGrabActive] = ImVec4(0.80, 0.50, 0.50, 0.40)
colors[clr.ComboBg] = ImVec4(0.24, 0.24, 0.24, 0.99)
colors[clr.CheckMark] = ImVec4(0.99, 0.99, 0.99, 0.52)
colors[clr.SliderGrab] = ImVec4(1.00, 1.00, 1.00, 0.42)
colors[clr.SliderGrabActive] = ImVec4(0.76, 0.76, 0.76, 1.00)
colors[clr.Button] = ImVec4(0.51, 0.51, 0.51, 0.60)
colors[clr.ButtonHovered] = ImVec4(0.68, 0.68, 0.68, 1.00)
colors[clr.ButtonActive] = ImVec4(0.67, 0.67, 0.67, 1.00)
colors[clr.Header] = ImVec4(0.72, 0.72, 0.72, 0.54)
colors[clr.HeaderHovered] = ImVec4(0.92, 0.92, 0.95, 0.77)
colors[clr.HeaderActive] = ImVec4(0.82, 0.82, 0.82, 0.80)
colors[clr.Separator] = ImVec4(0.73, 0.73, 0.73, 1.00)
colors[clr.SeparatorHovered] = ImVec4(0.81, 0.81, 0.81, 1.00)
colors[clr.SeparatorActive] = ImVec4(0.74, 0.74, 0.74, 1.00)
colors[clr.ResizeGrip] = ImVec4(0.80, 0.80, 0.80, 0.30)
colors[clr.ResizeGripHovered] = ImVec4(0.95, 0.95, 0.95, 0.60)
colors[clr.ResizeGripActive] = ImVec4(1.00, 1.00, 1.00, 0.90)
colors[clr.CloseButton] = ImVec4(0.45, 0.45, 0.45, 0.50)
colors[clr.CloseButtonHovered] = ImVec4(0.70, 0.70, 0.90, 0.60)
colors[clr.CloseButtonActive] = ImVec4(0.70, 0.70, 0.70, 1.00)
colors[clr.PlotLines] = ImVec4(1.00, 1.00, 1.00, 1.00)
colors[clr.PlotLinesHovered] = ImVec4(1.00, 1.00, 1.00, 1.00)
colors[clr.PlotHistogram] = ImVec4(1.00, 1.00, 1.00, 1.00)
colors[clr.PlotHistogramHovered] = ImVec4(1.00, 1.00, 1.00, 1.00)
colors[clr.TextSelectedBg] = ImVec4(1.00, 1.00, 1.00, 0.35)
colors[clr.ModalWindowDarkening] = ImVec4(0.88, 0.88, 0.88, 0.35)
end
CustomStyle()
function imgui.BeforeDrawFrame()
if fa_font == nil then
local font_config = imgui.ImFontConfig()
font_config.MergeMode = true
fa_font = imgui.GetIO().Fonts:AddFontFromFileTTF('moonloader/lib/resource/fonts/fa-solid-900.ttf', 14, font_config, fa_glyph_ranges)
end
end
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
-- wait(7000)
sampAddChatMessage(tag .. " {FFD700}Gnews-Assistant {FFFFFF}успешно запущен. Автор: {FFD700}Jesus_McWood", 0xFFD700)
sampAddChatMessage(tag .. " {FFFFFF}Скрипт создан для игроков сервера {FFD700}Advance Role Play", 0xFFD700)
sampAddChatMessage(tag .. " {FFFFFF}Наш сайт - {FFD700}https://www.scriptscorporated.site/", 0xFFD700)
sampRegisterChatCommand("gnews", cmd_gnews)
table1 = inicfg.load(nil, directIni)
while true do
wait(0)
table1 = inicfg.load(nil, directIni)
if isKeyDown(VK_MENU) and isKeyJustPressed(VK_E) then
main_window.v = not main_window.v
end
imgui.Process = main_window.v or settings_window.v or info_window.v or gnews_window.v or pred_window.v or pred2_window.v or pred3_window.v or pred4_window.v
end
end
function cmd_gnews()
gnews_window.v = not gnews_window.v
end
function imgui.OnDrawFrame()
if main_window.v then -- Главное меню
imgui.ShowCursor = true
imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(305, 160), imgui.Cond.FirstUseEver)
imgui.Begin(u8'Gnews-Assistant | Главное меню', main_window, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoScrollbar)
if imgui.Button(u8"Главная " .. fa.ICON_FA_HOME, imgui.ImVec2(140, 38)) then
main_window.v = true
sampAddChatMessage(tag .. " {FFFFFF}Вы и так на главной странице!", main_color)
end
imgui.SameLine()
if imgui.Button(u8"Информация " .. fa.ICON_FA_QUESTION_CIRCLE, imgui.ImVec2(140, 38)) then
main_window.v = false
info_window.v = not info_window.v
end
if imgui.Button(u8"Подача новостей " .. fa.ICON_FA_NEWSPAPER, imgui.ImVec2(140, 38)) then
main_window.v = false
gnews_window.v = not gnews_window.v
end
imgui.SameLine()
if imgui.Button(u8"Настройки " .. fa.ICON_FA_COGS, imgui.ImVec2(140, 38)) then
main_window.v = false
settings_window.v = not settings_window.v
end
if imgui.Button(u8"Перезапустить " .. fa.ICON_FA_SYNC_ALT, imgui.ImVec2(140, 38)) then
lua_thread.create(function()
main_window.v = false
sampAddChatMessage(tag .. " {FFFFFF}Перезапускаем скрипт", 0xFFD700)
wait(1100)
thisScript():reload()
end)
end
imgui.SameLine()
if imgui.Button(u8"Закрыть " .. fa.ICON_FA_WINDOW_CLOSE, imgui.ImVec2(140, 38)) then
main_window.v = false
end
imgui.End()
end
if settings_window.v then -- Меню настроек
imgui.ShowCursor = true
imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(475, 285), imgui.Cond.FirstUseEver)
imgui.Begin(u8'Gnews-Assistant | Настройки', settings_window, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoScrollbar)
imgui.PushItemWidth(200)
imgui.InputText(u8"Требования (c мал. буквы!)", treb_buffer)
imgui.PopItemWidth()
imgui.SameLine()
imgui.TextQuestion(u8'Пример отображения в чате: МВД | Требования: 3 года в штате, лицензии и быть законопослушным.')
imgui.PushItemWidth(200)
imgui.InputText(u8"Локация проведения (c мал. буквы!)", location_buffer)
imgui.PopItemWidth()
imgui.SameLine()
imgui.TextQuestion(u8'Пример отображения в чате: МВД | Собеседование пройдет в холле департамента Los-Santos. GPS 3-3.')
imgui.PushItemWidth(100)
imgui.InputText(u8"Введите сумму аванса (без знака $. Ствьте , вместо .)", avans_buffer)
imgui.PopItemWidth()
imgui.SameLine()
imgui.TextQuestion(u8'Пример отображения в чате: МВД | Текст сообщения. Аванс: 10.000$')
imgui.PushItemWidth(100)
imgui.InputText(u8"Ваша организация (CAPS-LOCK-ом)", org_buffer)
imgui.PopItemWidth()
imgui.PushItemWidth(100)
imgui.InputText(u8"GPS", gps_buffer)
imgui.PopItemWidth()
imgui.SameLine()
imgui.TextQuestion(u8'Пример как указать: GPS 3-3')
imgui.PushItemWidth(50)
imgui.InputText(u8"Тэг организации в /gnews", tag_buffer)
imgui.PopItemWidth()
imgui.SameLine()
imgui.TextQuestion(u8'Пример отображения в чате: МВД | Текст сообщения')
imgui.Text("")
imgui.Separator()
imgui.Text("")
table1.config.org = org_buffer.v
table1.config.tag = tag_buffer.v
table1.config.avans = avans_buffer.v
table1.config.location = location_buffer.v
table1.config.gps = gps_buffer.v
table1.config.treb = treb_buffer.v
if imgui.Button(u8"Сохранить " .. fa.ICON_FA_SAVE, imgui.ImVec2(460, 38)) then
if org_buffer.v == "" then
sampAddChatMessage(tag .. " {FF0000}Ошибка! {FFFFFF}Вы не заполнили одно из полей.")
end
if org_buffer.v == org_buffer.v then
if inicfg.save(table1, directIni) then
lua_thread.create(function()
sampAddChatMessage(tag .. " {FFFFFF}Сохраняем настройки", main_color)
wait(1000)
sampAddChatMessage(tag .. " {FFFFFF}Настройки {32CD32}сохранены", main_color)
settings_window.v = false
end)
end
end
end
if imgui.Button(u8"Главная " .. fa.ICON_FA_HOME, imgui.ImVec2(460, 38)) then
settings_window.v = false
main_window.v = true
end
imgui.End()
end
if info_window.v then -- Меню информация
imgui.ShowCursor = true
imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(405, 263), imgui.Cond.FirstUseEver)
imgui.Begin(u8'Gnews-Assistant | Информация', info_window, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoScrollbar)
if imgui.TreeNode(u8'Разработчики') then
imgui.Separator()
imgui.Text(u8"Программист: Jesus_McWood")
imgui.Separator()
imgui.Text(u8"Дизайнер: Jesus_McWood")
imgui.Separator()
imgui.Text(u8"Адаптация: Jesus_McWood")
imgui.Separator()
imgui.Text(u8"Руководство: Jesus_McWood")
imgui.Separator()
imgui.Text(u8"Идея: Jesus_McWood")
imgui.Separator()
imgui.TreePop()
end
if imgui.TreeNode(u8'Список изменений (Change Log)') then
imgui.Separator()
imgui.Text(u8"[04.12.20]: Релиз скрипта")
imgui.Separator()
imgui.TreePop()
end
if imgui.TreeNode(u8'О скрипте') then
imgui.Separator()
imgui.Text(u8"Привет мой друг, сейчас я расскажу тебе о лучшем на \nAdvance Role Play помощнике собеседований. \nСкрипт поможет абсолютно каждому лидеру и заместителю. \nМы будем часто пополнять его новыми обновлениями. \n\nПриятной игры на Advance Role Play")
imgui.Separator()
imgui.TreePop()
end
if imgui.Button(u8"Главная " .. fa.ICON_FA_HOME, imgui.ImVec2(390, 38)) then
info_window.v = false
main_window.v = true
end
imgui.End()
end
if gnews_window.v then -- Меню подачи
imgui.ShowCursor = true
imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(385, 170), imgui.Cond.FirstUseEver)
imgui.Begin(u8'Gnews-Assistant | Подача новостей', gnews_window, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoScrollbar)
if imgui.Button(u8"Сообщить о начале \nсобеседования", imgui.ImVec2(180, 45)) then
gnews_window.v = false
pred_window.v = not pred_window.v
end
imgui.SameLine()
if imgui.Button(u8"Сообщить о продолжении \nсобеседования", imgui.ImVec2(180, 45)) then
gnews_window.v = false
pred2_window.v = not pred2_window.v
end
if imgui.Button(u8"Сообщить о конце \nсобеседования", imgui.ImVec2(180, 45)) then
gnews_window.v = false
pred3_window.v = not pred3_window.v
end
if imgui.Button(u8"Сообщить о ДОД", imgui.ImVec2(180, 45)) then
gnews_window.v = false
pred4_window.v = not pred4_window.v
end
imgui.Separator()
if imgui.Button(u8"Главная " .. fa.ICON_FA_HOME, imgui.ImVec2(370, 38)) then
gnews_window.v = false
main_window.v = true
end
imgui.End()
end
if pred_window.v then -- Предпросмотр
imgui.ShowCursor = true
imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(385, 80), imgui.Cond.FirstUseEver)
imgui.Begin(u8'Gnews-Assistant', pred_window, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoScrollbar)
if imgui.Button(u8"Объявить", imgui.ImVec2(180, 45)) then
pred_window.v = false
lua_thread.create(function()
sampSendChat("/n "..u8:decode(mainIni.config.tag).." | Уважаемые жители! Сейчас пройдет собеседование в "..u8:decode(mainIni.config.org)..".")
wait(1000)
sampSendChat("/n "..u8:decode(mainIni.config.tag).." | Требования: "..u8:decode(mainIni.config.treb)..".")
wait(1000)
sampSendChat("/n "..u8:decode(mainIni.config.tag).." | Собеседование пройдет "..u8:decode(mainIni.config.location)..".") -- Аванс: "..u8:decode(mainIni.config.avans)..".")
end)
end
imgui.SameLine()
if imgui.Button(u8"Не объявлять", imgui.ImVec2(180, 45)) then
pred_window.v = false
gnews_window.v = not gnews_window.v
end
imgui.End()
end
if pred2_window.v then -- Предпросмотр
imgui.ShowCursor = true
imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(385, 80), imgui.Cond.FirstUseEver)
imgui.Begin(u8'Gnews-Assistant', pred2_window, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoScrollbar)
if imgui.Button(u8"Объявить", imgui.ImVec2(180, 45)) then
pred2_window.v = false
lua_thread.create(function()
sampSendChat("/n "..u8:decode(mainIni.config.tag).." | Собеседование в "..u8:decode(mainIni.config.org).." продолжается. Аванс: "..u8:decode(mainIni.config.avans).."$ ")
end)
end
imgui.SameLine()
if imgui.Button(u8"Не объявлять", imgui.ImVec2(180, 45)) then
pred2_window.v = false
gnews_window.v = not gnews_window.v
end
imgui.End()
end
if pred3_window.v then -- Предпросмотр
imgui.ShowCursor = true
imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(385, 80), imgui.Cond.FirstUseEver)
imgui.Begin(u8'Gnews-Assistant', pred3_window, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoScrollbar)
if imgui.Button(u8"Объявить", imgui.ImVec2(180, 45)) then
pred3_window.v = false
lua_thread.create(function()
sampSendChat("/n "..u8:decode(mainIni.config.tag).." | Собеседование в "..u8:decode(mainIni.config.org).." окончилось")
end)
end
imgui.SameLine()
if imgui.Button(u8"Не объявлять", imgui.ImVec2(180, 45)) then
pred3_window.v = false
gnews_window.v = not gnews_window.v
end
imgui.End()
end
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
Последнее редактирование: