- 963
- 336
- Версия MoonLoader
- .026-beta
как сделать сдвиг окна, когда форма принята/отклонена/принята другим админом, в вверх?
пытался сделать, но крашит скрипт
p.s я могу накосячить чет, не бейте
пытался сделать, но крашит скрипт
p.s я могу накосячить чет, не бейте
Lua:
local formFrame = imgui.OnFrame(
function() return form_time and form_time ~= -1 and (form_time + 7) >= os.clock() end,
function(player)
player.HideCursor = true
local resX, resY = getScreenResolution()
local sizeX, sizeY = 400, 100
imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY - 200), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
imgui.SetNextWindowBgAlpha(0.3)
imgui.PushStyleColor(imgui.Col.TitleBg, imgui.GetStyle().Colors[imgui.Col.TitleBgActive])
imgui.Begin(u8'Форма', _, imgui.WindowFlags.NoScrollbar + imgui.WindowFlags.NoScrollWithMouse + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoResize)
imgui.SetCursorPos(imgui.ImVec2(15, imgui.GetWindowSize().y / 2 - 3))
imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(0.88, 0.88, 0.88, 1.00))
imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.77, 0.77, 0.77, 1.00))
imgui.PushStyleColor(imgui.Col.Text, imgui.ImVec4(0.33, 0.33, 0.33, 1.00))
imgui.Button(u8(table.concat(rkeys.getKeysName(BINDS.ACCEPT_FORM.v)) or 'error'), imgui.ImVec2(70, 30))
imgui.PopStyleColor(4)
imgui.SameLine()
imgui.PushFont(Font[20])
imgui.Text(u8'Принять форму')
imgui.PopFont()
if isKeyJustPressed(vkeys.name_to_id(table.concat(rkeys.getKeysName(BINDS.ACCEPT_FORM.v)))) and not sampIsCursorActive() then
lua_thread.create(function()
if mainIni.settings.form_ask then
if not FORM.CMD:find('.+%, вводи .+') then
local punish_form = (FORM.CMD:find('^/ban') or FORM.CMD:find('^/vcmute') or FORM.CMD:find('^/mute') or FORM.CMD:find('^/warn') or FORM.CMD:find('^/prison') or FORM.CMD:find('^/kick') or FORM.CMD:find('^/bgun') and (not FORM.CMD:find('^/un.+ ')) and not not FORM.CMD:find('^/vcun.+ '))
if punish_form then
sampSendChat('/a '..FORM.NICK:gsub('_.+', '')..', у тебя есть доказательства на '..(FORM.PUN_NICK or 'ID '..FORM.PUN_ID)..'? (+/-)')
aform_accept_id = id
aform_accept = true
wait(10000)
if aform_accept and aform_accept_id ~= -1 then
aform_accept = false
aform_accept_id = -1
sampSendChat('/a '..FORM.NICK:gsub('_.+', '')..', время на ответ исчерпано. Форма не принята.')
end
else
sampSendChat(FORM.RENDER)
out_render_form = true
wait(1000)
out_render_form = false
end
else
sampSendChat(FORM.RENDER)
end
else
if not FORM.CMD:find('.+%, вводи .+') then
sampSendChat(FORM.RENDER)
out_render_form = true
out_render_form = false
else
sampSendChat(FORM.RENDER)
end
end
local time = os.time() + 1
while time > os.time() do
wait(10)
-- \\ Тут типо пытался сделать сдвиг окна через imgui.SetWindowPosVec2 вверх на 1 пиксель каждые 10 мс, но вылазит ошибка
-- \\ cannot resume non-suspended coroutine
end
form_time = -1
end)
elseif isKeyJustPressed(vkeys.name_to_id(table.concat(rkeys.getKeysName(BINDS.REJECT_FORM.v)))) and not sampIsCursorActive() then
end
if out_render_form or aform_accept_id ~= -1 then
imgui.SetCursorPos(imgui.ImVec2(355, imgui.GetWindowSize().y / 2 + 5))
imgui.Text(faicons('CHECK'))
elseif (form_time + 5) <= os.clock() then
imgui.SetCursorPos(imgui.ImVec2(355, imgui.GetWindowSize().y / 2 + 5))
imgui.Text(faicons('XMARK'))
else
imgui.TimeSpinner((os.clock() - form_time) / 5 * 100, imgui.ImVec2(360, imgui.GetWindowSize().y / 2 + 13), nil, 17)
end
imgui.End()
end
)