Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Библиотека уведомлений для MoonLoader
- Библиотека для создания красивых уведомлений с FontAwesome иконками в MoonLoader скриптах.
- ## Установка
- 1. Скопируйте файл `lib/notifications.lua` в папку `lib/` вашего MoonLoader
- 2. Убедитесь, что у вас установлены зависимости:
- - `mimgui`
- - `fAwesome6`
- - `inicfg`
- ## Быстрый старт
- ```lua
- -- Подключаем библиотеку
- local notifications = require 'lib.notifications'
- -- Показываем уведомление
- notifications.info("Привет мир!", 4000)
- ```
- ## Основные функции
- ### Показать уведомление
- ```lua
- notifications.show(text, type, duration, custom_colors)
- ```
- **Параметры:**
- - `text` - текст уведомления
- - `type` - тип уведомления ("success", "error", "warning", "info", "debug")
- - `duration` - длительность в миллисекундах (по умолчанию 4000)
- - `custom_colors` - кастомные цвета (опционально)
- ### Типы уведомлений
- #### Информация
- ```lua
- notifications.info("Информационное сообщение", 4000)
- ```
- #### Успех
- ```lua
- notifications.success("Операция выполнена успешно!", 4000)
- ```
- #### Ошибка
- ```lua
- notifications.error("Произошла ошибка!", 4000)
- ```
- #### Предупреждение
- ```lua
- notifications.warning("Внимание! Что-то пошло не так.", 4000)
- ```
- #### Отладка
- ```lua
- notifications.debug("Отладочная информация", 4000)
- ```
- ## Настройки
- ### Конфигурация библиотеки
- ```lua
- notifications.configure({
- max_notifications = 5, -- Максимальное количество уведомлений
- default_duration = 4000, -- Длительность по умолчанию (мс)
- fade_in_time = 300, -- Время появления (мс)
- fade_out_time = 300, -- Время исчезновения (мс)
- position = "bottom_left", -- Позиция по умолчанию
- movable = false -- Возможность перетаскивания
- })
- ```
- ### Позиции уведомлений
- - `"top_right"` - Верхний правый угол
- - `"top_left"` - Верхний левый угол
- - `"bottom_right"` - Нижний правый угол
- - `"bottom_left"` - Нижний левый угол (по умолчанию)
- - `"center"` - Центр экрана
- ### Включение перетаскивания
- ```lua
- notifications.set_interactive(true) -- Включить перетаскивание
- notifications.set_interactive(false) -- Отключить перетаскивание
- ```
- ## Управление уведомлениями
- ### Очистить все уведомления
- ```lua
- notifications.clear()
- ```
- ### Получить количество активных уведомлений
- ```lua
- local count = notifications.count()
- print("Активных уведомлений: " .. count)
- ```
- ### Сохранить позиции
- ```lua
- notifications.save_positions()
- ```
- ### Сбросить сохраненные позиции
- ```lua
- notifications.reset_positions()
- ```
- ## Кастомные цвета
- ```lua
- local custom_colors = {
- r = 0.2, -- Красный (0.0 - 1.0)
- g = 0.8, -- Зеленый (0.0 - 1.0)
- b = 0.2, -- Синий (0.0 - 1.0)
- a = 0.9 -- Прозрачность (0.0 - 1.0)
- }
- notifications.info("Уведомление с кастомными цветами", 4000, custom_colors)
- ```
- ## Примеры использования
- ### Простой пример
- ```lua
- local imgui = require 'mimgui'
- local encoding = require 'encoding'
- encoding.default = 'CP1251'
- local u8 = encoding.UTF8
- local ffi = require 'ffi'
- local mem = require 'memory'
- local socket_url = require 'socket.url'
- local vkeys = require 'vkeys'
- local mimgui_hotkeys = require 'mimgui_hotkeys'
- local fAwesome6 = require 'fAwesome6'
- local inicfg = require 'inicfg'
- -- Подключаем библиотеку уведомлений
- local notifications = require 'lib.notifications'
- function main()
- -- Проверяем загрузку SAMP
- if not isSampfuncsLoaded() then
- sampAddChatMessage(u8'{FF0000}[Script] {FFFFFF}SAMP Functions не загружены!', -1)
- return
- end
- -- Ждем доступности SAMP
- while not isSampAvailable() do
- wait(100)
- end
- -- Показываем разные типы уведомлений
- notifications.info("Скрипт загружен!", 4000)
- wait(1000)
- notifications.success("Все системы работают!", 4000)
- wait(1000)
- notifications.warning("Внимание! Проверьте настройки.", 4000)
- wait(-1)
- end
- ```
- ### Пример с кастомными настройками
- ```lua
- local notifications = require 'lib.notifications'
- function main()
- -- Настраиваем библиотеку
- notifications.configure({
- max_notifications = 3,
- default_duration = 6000,
- position = "top_right",
- movable = true
- })
- -- Показываем уведомления
- notifications.info("Настройки применены!", 4000)
- wait(-1)
- end
- ```
- ### Пример с кастомными цветами
- ```lua
- local notifications = require 'lib.notifications'
- function main()
- -- Кастомные цвета для уведомления
- local purple_colors = {
- r = 0.5,
- g = 0.2,
- b = 0.8,
- a = 0.9
- }
- notifications.info("Специальное уведомление!", 4000, purple_colors)
- wait(-1)
- end
- ```
- ## Особенности
- ### Автоматическое скрытие курсора
- - Курсор автоматически скрывается во время показа уведомлений
- - Восстанавливается после исчезновения всех уведомлений
- ### FontAwesome иконки
- - Все уведомления отображаются с соответствующими иконками
- - Поддерживаются иконки FontAwesome 6
- ### Сохранение позиций
- - При включенном перетаскивании позиции сохраняются автоматически
- - Позиции восстанавливаются при перезапуске скрипта
- ### Анимации
- - Плавное появление и исчезновение уведомлений
- - Прогресс-бар показывает оставшееся время
- ## Файлы конфигурации
- Библиотека создает файл `notification_positions.ini` для сохранения позиций уведомлений.
- ## Зависимости
- - `mimgui` - для интерфейса
- - `fAwesome6` - для иконок
- - `inicfg` - для сохранения настроек
- - `encoding` - для кодировки
- ## Поддерживаемые иконки
- - **success**: `"check"` - галочка
- - **error**: `"xmark"` - крестик
- - **warning**: `"exclamation"` - восклицание
- - **info**: `"info"` - информация
- - **debug**: `"gear"` - шестеренка
- ## Устранение неполадок
- ### Иконки не отображаются
- 1. Убедитесь, что `fAwesome6` правильно установлен
- 2. Проверьте, что шрифт FontAwesome загружен
- ### Курсор не скрывается
- 1. Убедитесь, что используется последняя версия библиотеки
- 2. Проверьте, что нет конфликтов с другими скриптами
- ### Уведомления не появляются
- 1. Проверьте, что все зависимости установлены
- 2. Убедитесь, что SAMP загружен и доступен
- ## Лицензия
- Библиотека распространяется свободно для использования в MoonLoader скриптах.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement