Lua [ARZ] PayDay Notifications

Tensay

Активный
Автор темы
167
52
Версия SA-MP
  1. 0.3.7 (R1)
Payday2.png



Здравствуйте, уважаемые пользователи BlastHack.
Представляю вам свой первый (надеюсь не последний) скрипт.
Сам скрипт очень маленький и простой. Присылает уведомление за 30 минут, 15 минут, 10 минут, 5 минут и 1 минуту до PayDay, чтобы игрок не выходил из игры.
Скрипт писался для Аризоны РП и работает только на ней!

Установка:
v1.0 - Перекинуть файл Notify.lua и файл imgui_notf.lua в папку moonloader.
v2.0 - Перекинуть файлы Notify v2.lua и notifications.lua в папку moonloader.

Активация:
/notify

Не знаю кто будет этим пользоваться, но вдруг кому-нибудь пригодиться.
Хочу сказать отдельное спасибо за правки в моем говнокоде этому человеку -
https://vk.com/luailya
  • Изменено включение/выключение скрипта. Теперь нужно просто ввести команду /notify, чтобы скрипт заработал.
  • Благодаря новой библиотеке изменены уведомления, теперь они стали более заметнее, чтобы вы точно не просрали PayDay.
  • Проверить работоспособность скрипта и увидеть новые уведомления можно командой /check
 

Вложения

  • imgui_notf.lua
    6.6 KB · Просмотры: 85
  • Notify.lua
    8.3 KB · Просмотры: 99
  • notifications.lua
    7.7 KB · Просмотры: 133
  • Notify v2.lua
    4.4 KB · Просмотры: 224
Последнее редактирование:

T1cKz

Известный
595
245
/timestamp и всё. Не думаю что есть челы которые не понимают что 2 мин до пейдея и ненад офф делать, если нужен вообще payday.
Вопрос. Зачем имгуи меню на 1 кнопку?
 
  • Нравится
Реакции: SomaGnoma

[w0te]

Потрачен
771
492
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Казалось бы, зачем 221 строчек для какой-то считалки времени, темболее с имгуем.
 
  • Нравится
Реакции: Крипер и SomaGnoma

Ep1kBurger

Активный
116
50
это было бы полезно, если бы после q and quit скрипт делал предупреждение о пд
 
  • Нравится
Реакции: cooqie

Taom1

Участник
35
3
а на Аризоне РпГ по мимо капчи и /time Изменят ?
 

Diqeey

Известный
443
60
рил, сделай чтобы при /q за минуту-пять до пд вылазило предупреждение. Было бы круто
 

T1cKz

Известный
595
245
Чисто ради интереса решил открыть всё же код. И есть пару вопросов
Lua:
 if text:find("банковский чек") and not text:find("говорит") then
Норм защита от дебила, но есть одно но. К регистру эта тема тоже чувствительна, и на АРЗ так то " __________Банковский чек__________"
Вместо
Lua:
imgui.Text("")
            imgui.Text("")
            imgui.Text("")
Можно юзать как минимум
Lua:
imgui.Text("\n\n\n")

И слегка переделал код, который может работать без зависимостей imgui, imgui_notf, а на рендере с моей модификацией Render Notf
Всё расписал что как работает.
Рендер-текст появляется внизу-посреднине экрана анимацией и исчезает
Lua:
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
И да, многие просили когда /q - предупреждать. Так вот вставлять туда где --ДОПОЛНЕНИЯ
А перед строкой с "function main" вставить "local warningQ = false"
Lua:
if sampGetChatInputText() == "/q" and minute >= 35 and not warningQ then 
                sampSetChatInputText("")
                sampSetChatInputEnabled(false)
                gtData.text = "PAYDAY через "..(60-minute).." минут, вы действительно хотите выйти?"
                gtData.time = os.clock() + 4
                warningQ = true
            end
 

Вложения

  • sa-mp-089.png
    sa-mp-089.png
    1.9 MB · Просмотры: 143
Последнее редактирование:

ARMOR

011110000111100101101001
Модератор
4,969
6,890
Убери imgui окно и сделай активацию скрипта по команде, т.к imgui для одного чекбокса нахуй не нужно.
 

Tensay

Активный
Автор темы
167
52
Чисто ради интереса решил открыть всё же код. И есть пару вопросов
Lua:
 if text:find("банковский чек") and not text:find("говорит") then
Норм защита от дебила, но есть одно но. К регистру эта тема тоже чувствительна, и на АРЗ так то " __________Банковский чек__________"
Вместо
Lua:
imgui.Text("")
            imgui.Text("")
            imgui.Text("")
Можно юзать как минимум
Lua:
imgui.Text("\n\n\n")

И слегка переделал код, который может работать без зависимостей imgui, imgui_notf, а на рендере с моей модификацией Render Notf
Всё расписал что как работает.
Рендер-текст появляется внизу-посреднине экрана анимацией и исчезает
Lua:
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
И да, многие просили когда /q - предупреждать. Так вот вставлять туда где --ДОПОЛНЕНИЯ
А перед строкой с "function main" вставить "local warningQ = false"
Lua:
if sampGetChatInputText() == "/q" and minute >= 35 and not warningQ then
                sampSetChatInputText("")
                sampSetChatInputEnabled(false)
                gtData.text = "PAYDAY через "..(60-minute).." минут, вы действительно хотите выйти?"
                gtData.time = os.clock() + 4
                warningQ = true
            end
Это мой первый скрипт, не совсем еще разобрался в lua. Спасибо за совет.

Скрипт тестировался на Аризоне, не знаю будет он работать на других проектах или нет, поэтому поставил ограничение.
 

STYOP

Известный
185
37
Скрипт тестировался на Аризоне, не знаю будет он работать на других проектах или нет, поэтому поставил ограничение.
Суть отписи чела в том, что в коде написано ограничение, а твой скрипт включился на сервере HackMySoftware :D
 

T1cKz

Известный
595
245
Это мой первый скрипт, не совсем еще разобрался в lua. Спасибо за совет.


Скрипт тестировался на Аризоне, не знаю будет он работать на других проектах или нет, поэтому поставил ограничение.
А что не так с другими серверами. Пейдей так же в 00 минут