require "lib.moonloader" -- подгружаем библиотеки
local sampev = require "samp.events"
local enabled = true
local gtData = { -- массив кода(тут половина не нужна для этого скрипта, но для дальнейшей модификации может помочь
time = os.clock(),
text = "",
line = 2,
anim = 0,
alpha = 0,
}
local font = renderCreateFont("Calibri", 15, FCR_BORDER + FCR_BOLD) -- подгрузка шрифта
--- основная часть скрипта
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
sampRegisterChatCommand("notify", function() enabled = not enabled printString("~p~Notify: ~w~"..tostring(enabled), 1111) end)
local wX, wY = getScreenResolution()
gtData.text = "Notify loaded | Включить/Отключить - /notify" -- задаём текст
gtData.time = os.clock() + 10 -- и время сколько он будет показывать
while true do
wait(0)
if enabled then
local minute = tonumber(os.date("%M")) -- получаем сразу минуты и переводим переменную в int
local second = tonumber(os.date("%S")) -- так же секунды
if second == 0 then -- каждую новую минуту секунда == 0
if minute == 45 or minute == 30 or minute == 59 or minute == 15 then -- если при этой новой минуте она равна чему-то из этого
gtData.text = "PAYDAY через "..(60-minute).." минут" -- то мы вычисляем 60 минут - текущую = кол-во оставшихся
gtData.time = os.clock() + 4 -- вывод на 4 секунды
end
end
-- ДОПОЛНЕНИЯ
end
if gtData.time >= os.clock() then -- если время вывода больше чем текущее
if gtData.time-os.clock() >= 0.5 and gtData.alpha <= 250 then -- задаём анимацию смены прозрачности
gtData.alpha = gtData.alpha + 5
if gtData.anim <= 40 then gtData.anim = gtData.anim + 1 end -- вместе с прозрачностью выходит и текст
elseif gtData.time-os.clock() <= 0.5 and gtData.alpha >= 1 then
gtData.alpha = gtData.alpha - 5
if gtData.anim >= -50 then gtData.anim = gtData.anim - 1 end
end
local offX = renderGetFontDrawTextLength(font, gtData.text)
local ySize = renderGetFontDrawHeight(font)
local tempA = gtData.alpha - 50 -- тут мы делаем так, что бы фон тоже появлялся вместе с текстом
if tempA < 0 then tempA = 0 end
renderDrawBox(wX/2-(offX/2)-20, wY-((gtData.line*20)+gtData.anim+5), offX*1.2, (ySize/1.5)*gtData.line+5, join_argb(tempA, 0, 0, 0))
renderFontDrawText(font, gtData.text, wX/2-(offX/2), wY-((gtData.line*20)+gtData.anim), join_argb(gtData.alpha, 255, 255, 255))
end
end
end
function join_argb(a, r, g, b) -- фипа
local argb = b -- b
argb = bit.bor(argb, bit.lshift(g, 8)) -- g
argb = bit.bor(argb, bit.lshift(r, 16)) -- r
argb = bit.bor(argb, bit.lshift(a, 24)) -- a
return argb
end