Setsobes - Помогите пофиксить баг

Roman_Jasusu

Новичок
Автор темы
5
0
В Луа скриптах не шарю, по этому обращаюсь сюда. Суть в том, что когда я использую setsobes для забива собеседований у меня с начало пишет /d [Свой тэг] - [Информация]: Перешёл на частоту 103,9. Вот тут все правильно, потом он пишет
У меня это Армия ЛС по этому /d [Армия ЛС] - [103,9]: Занимаю гос.волну на определенное время для проведения призыва. (Тут тоже все окей)
Дальше уже по системе Аризоны забивается через /lmenu, а он пишет /d [Армия ЛС] - [Информация]: Тех.неполаки. а так быть не далжно
Вообще должно быть так:
/d [Армия ЛС] - [Информация]: Перешёл на частоту 103,9
/d [Армия ЛС] - [103,9]: Занимаю гос.волну на определенное время для проведения призыва.
/lmenu там уже сам назначаешь на сколько и где, а после уже
/d [Армия ЛС] - [Информация]: Покинул частоту 103,9.
Я играю на Аризона Сэинт-Роуз [06] и у нас тут свои частоты а тэг армии потому что я 9ка ЛСа
Вот сам файл
SetSobes_Imgui.lua:
script_name("SetSobes")
script_authors("The key")
local mem = require "memory"
local key = require 'vkeys'
require "lib.sampfuncs"
require "lib.moonloader"
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local dirml = getWorkingDirectory()
local ev = require 'lib.samp.events'
local imgui = require 'imgui'


function styleWin()
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local clr = imgui.Col
    local ImVec4 = imgui.ImVec4

    style.WindowRounding = 2.0
    style.WindowTitleAlign = imgui.ImVec2(0.5, 0.84)
    style.ChildWindowRounding = 2.0
    style.FrameRounding = 2.0
    style.ItemSpacing = imgui.ImVec2(5.0, 4.0)
    style.ScrollbarSize = 13.0
    style.ScrollbarRounding = 0
    style.GrabMinSize = 8.0
    style.GrabRounding = 1.0

    colors[clr.FrameBg]                = ImVec4(0.16, 0.29, 0.48, 0.54)
    colors[clr.FrameBgHovered]         = ImVec4(0.26, 0.59, 0.98, 0.40)
    colors[clr.FrameBgActive]          = ImVec4(0.26, 0.59, 0.98, 0.67)
    colors[clr.TitleBg]                = ImVec4(0.04, 0.04, 0.04, 1.00)
    colors[clr.TitleBgActive]          = ImVec4(0.16, 0.29, 0.48, 1.00)
    colors[clr.TitleBgCollapsed]       = ImVec4(0.00, 0.00, 0.00, 0.51)
    colors[clr.CheckMark]              = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.SliderGrab]             = ImVec4(0.24, 0.52, 0.88, 1.00)
    colors[clr.SliderGrabActive]       = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.Button]                 = ImVec4(0.26, 0.59, 0.98, 0.40)
    colors[clr.ButtonHovered]          = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ButtonActive]           = ImVec4(0.06, 0.53, 0.98, 1.00)
    colors[clr.Header]                 = ImVec4(0.26, 0.59, 0.98, 0.31)
    colors[clr.HeaderHovered]          = ImVec4(0.26, 0.59, 0.98, 0.80)
    colors[clr.HeaderActive]           = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.Separator]              = colors[clr.Border]
    colors[clr.SeparatorHovered]       = ImVec4(0.26, 0.59, 0.98, 0.78)
    colors[clr.SeparatorActive]        = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ResizeGrip]             = ImVec4(0.26, 0.59, 0.98, 0.25)
    colors[clr.ResizeGripHovered]      = ImVec4(0.26, 0.59, 0.98, 0.67)
    colors[clr.ResizeGripActive]       = ImVec4(0.26, 0.59, 0.98, 0.95)
    colors[clr.TextSelectedBg]         = ImVec4(0.26, 0.59, 0.98, 0.35)
    colors[clr.Text]                   = ImVec4(1.00, 1.00, 1.00, 1.00)
    colors[clr.TextDisabled]           = ImVec4(0.50, 0.50, 0.50, 1.00)
    colors[clr.WindowBg]               = ImVec4(0.06, 0.06, 0.06, 0.94)
    colors[clr.ChildWindowBg]          = ImVec4(1.00, 1.00, 1.00, 0.00)
    colors[clr.PopupBg]                = ImVec4(0.08, 0.08, 0.08, 0.94)
    colors[clr.ComboBg]                = colors[clr.PopupBg]
    colors[clr.Border]                 = ImVec4(0.43, 0.43, 0.50, 0.50)
    colors[clr.BorderShadow]           = ImVec4(0.00, 0.00, 0.00, 0.00)
    colors[clr.MenuBarBg]              = ImVec4(0.14, 0.14, 0.14, 1.00)
    colors[clr.ScrollbarBg]            = ImVec4(0.02, 0.02, 0.02, 0.53)
    colors[clr.ScrollbarGrab]          = ImVec4(0.31, 0.31, 0.31, 1.00)
    colors[clr.ScrollbarGrabHovered]   = ImVec4(0.41, 0.41, 0.41, 1.00)
    colors[clr.ScrollbarGrabActive]    = ImVec4(0.51, 0.51, 0.51, 1.00)
    colors[clr.CloseButton]            = ImVec4(0.41, 0.41, 0.41, 0.50)
    colors[clr.CloseButtonHovered]     = ImVec4(0.98, 0.39, 0.36, 1.00)
    colors[clr.CloseButtonActive]      = ImVec4(0.98, 0.39, 0.36, 1.00)
    colors[clr.PlotLines]              = ImVec4(0.61, 0.61, 0.61, 1.00)
    colors[clr.PlotLinesHovered]       = ImVec4(1.00, 0.43, 0.35, 1.00)
    colors[clr.PlotHistogram]          = ImVec4(0.90, 0.70, 0.00, 1.00)
    colors[clr.PlotHistogramHovered]   = ImVec4(1.00, 0.60, 0.00, 1.00)
    colors[clr.ModalWindowDarkening]   = ImVec4(0.80, 0.80, 0.80, 0.35)
end
styleWin()

local win = imgui.ImBool(false)

local wave = {
    combo = {
        u8"91,8 - Министерство юстиций.",
        u8"100,3 - Все гос.структуры.",
        u8"102,7 - Экстренная частота",
        u8"104,8 - МЮ, МО, МЗ",
                u8"105,5 - Губернатор.",
        u8"108,3 - МЮ - МО",
        u8"109,6 - ТСР - МЮ, МО, МЗ",
        u8"115,2 - Министерство Обороны."
    },
    f = {
    "91,8",
    "100,3",
    "102,7",
    "104,8",
        "105,5",
    "108,3",
    "109,6",
    "115,2"
    }
}
local orgs = {
    u8"Похитители",
    u8"Армия ЛС",
    u8"ВМС",
    u8"Тюрьма ЛВ",
    u8"Полиция ЛС",
    u8"Полиция СФ",
    u8"Полиция ЛВ",
        u8"S.W.A.T",
    u8"Областная полиция",
    u8"ФБР",
    u8"Больница ЛС",
    u8"Больница СФ",
    u8"Больница ЛВ",
    u8"Банк",
    u8"Правительство",
    u8"Автошкола",
    u8"СМИ ЛС",
    u8"СМИ СФ",
    u8"СМИ ЛВ",
    u8"Министр обороны",
    u8"Министр здравоохранения",
    u8"Министр юстиции"
}

local tag = imgui.ImBuffer(256)
local place = imgui.ImBuffer(256)
local time = imgui.ImBuffer(256)
local wf = imgui.ImInt(0)
local wo = imgui.ImInt(0)
local connect = false
local page = 0
local sobd = false

function main()
    repeat wait(100) until isSampAvailable()
    sampRegisterChatCommand("setsobes", function() win.v = not win.v end)
    if doesFileExist(dirml.."/setsobes.json") then
        local f = io.open(dirml.."/setsobes.json")
        local v = f:read("*a")
        local r, s = pcall(decodeJson, v)
        if r then
            print(1)
            tag.v = u8(s.tag)
            place.v = u8(s.place)
        end
        f:close()
    end
    lockPlayerControl(false)
  while true do
    wait(0)
    imgui.Process = win.v
  end
end




function imgui.OnDrawFrame()
    if win.v then
    local sw, sh = getScreenResolution()
    imgui.SetNextWindowSize(imgui.ImVec2(250, 181), imgui.Cond.FirstUseEver)
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.Begin(u8"Меню департамента", win, 2);
    local s = imgui.GetWindowSize()
        imgui.PushItemWidth(120)
        if page == 0 then
            imgui.InputText(u8"Тег организации", tag)
            if imgui.Button(u8"Назначить собеседование", imgui.ImVec2(234, 30)) then
                page = 1
                imgui.SetWindowSize(u8"Меню департамента", imgui.ImVec2(250, 140))
            end
            if imgui.Button(u8"Волны департамента", imgui.ImVec2(234, 30)) then
                page = 2
                if connect then
                    imgui.SetWindowSize(u8"Меню департамента", imgui.ImVec2(250, 170))
                else
                    imgui.SetWindowSize(u8"Меню департамента", imgui.ImVec2(250, 136))
                end
                
            end
            if imgui.Button(u8"Тех. неполадки", imgui.ImVec2(234, 30)) then
                if tag.v ~= "" then
                    sampSendChat("/d ["..u8:decode(tag.v).."] - [Информация] Тех. неполадки.")
                end
            end
            if imgui.Button(u8"Сохранить", imgui.ImVec2(234, 20)) then
                local set = {
                    tag = u8:decode(tag.v),
                    place = u8:decode(place.v)
                }
                local f = io.open(dirml.."/setsobes.json", "w")
                f:write(encodeJson(set))
                f:flush()
                f:close()
            end
        elseif page == 1 then
            imgui.InputText(u8"Место проведения", place)
            imgui.InputText(u8"Время", time)
            if imgui.Button(u8"Назначить", imgui.ImVec2(234, 30)) then
                if place.v ~= "" and time.v:find("%d+,%d+") and tag.v ~= "" then
                    lua_thread.create(setS)
                    page = 0
                    imgui.SetWindowSize(u8"Меню департамента", imgui.ImVec2(250, 181))
                end
            end
            if imgui.Button(u8"Назад", imgui.ImVec2(234, 20)) then
                page = 0
                imgui.SetWindowSize(u8"Меню департамента", imgui.ImVec2(250, 181))
            end
         elseif page == 2 then
            imgui.PushItemWidth(155)
                imgui.Combo(u8"Частота", wf, wave.combo)
                imgui.Combo(u8"Организация", wo, orgs)
                if not connect then
                    if imgui.Button(u8"Подключиться к частоте", imgui.ImVec2(234, 30)) then
                        if tag.v ~= "" then
                            connect = true
                            imgui.SetWindowSize(u8"Меню департамента", imgui.ImVec2(250, 170))
                            lua_thread.create(cwave)
                        end
                    end
                else
                    if imgui.Button(u8"Написать в депантамент", imgui.ImVec2(234, 30)) then
                        sampSetChatInputEnabled(true)
                        sampSetChatInputText("/d ["..u8:decode(tag.v).."] - ["..wave.f[wf.v+1].."] - ["..u8:decode(orgs[wo.v+1]).."]: ")
                    end
                    if imgui.Button(u8"Покинуть частоту", imgui.ImVec2(234, 30)) then
                        connect = false
                        imgui.SetWindowSize(u8"Меню департамента", imgui.ImVec2(250, 136))
                        lua_thread.create(dcwave)
                    end
                end
            imgui.PopItemWidth()
            if imgui.Button(u8"Назад", imgui.ImVec2(234, 20)) then
                page = 0
                imgui.SetWindowSize(u8"Меню департамента", imgui.ImVec2(250, 181))
            end
        end
        imgui.PopItemWidth()
    imgui.End()
    end
end



function setS()
    sampSendChat("/d ["..u8:decode(tag.v).."] - [Информация] Перешёл на частоту 103,9")
    wait(1800)
    sampSendChat("/d ["..u8:decode(tag.v).."] - [103,9] Занимаю гос.волну на определенное время для проведения призыва.")
    wait(500)
    sobd = true
    sampSendChat("/lmenu")
end

function cwave()
    if wf.v > 0 then
        sampSendChat("/d ["..u8:decode(tag.v).."] - [Информация] Перешёл на частоту ".. wave.f[wf.v+1])
    end
end

function dcwave()
    if wf.v > 0 then
        sampSendChat("/d ["..u8:decode(tag.v).."] - [Информация] Покинул частоту ".. wave.f[wf.v+1])
    end
end


function ev.onShowDialog(id, st, tit, b1, b2, tx)
    if sobd then
        if tit:find("Банк:") and tx:find("Пригласить в организацию") then
            if tx:find("Перевод") then
                sampSendDialogResponse(id, 1, 3, "")
            else
                sampSendDialogResponse(id, 1, 2, "")
            end
            return false
        end
        if tx:find("Назначить собеседование") then
            sampSendDialogResponse(id, 1, 0, "")
            return false
        end
        if tx:find("на которое хотите назначить собеседование") then
            sampSendDialogResponse(id, 1, 0, time.v..","..u8:decode(place.v))
            sobd = false
                lua_thread.create(function()
                    wait(250)
                    sampSendChat("/d ["..u8:decode(tag.v).."] - [Информация] Покидаю частоту 103,9.", -1)
                end)
            return false
        end
    end
end
 

Вложения

  • SetSobes_Imgui.lua
    9.7 KB · Просмотры: 13
  • Эм
Реакции: YarikVL и qdIbp