Исходник Информация Гайд [ARZ] CEF уведомления в своих скриптах

MTG MODS

Активный
Автор темы
147
105
Доброго времени суток всем, кто читает эту тему.
И так, начну с того, что на Аризоне уже давно существуют свои кастомные (CEF) уведомления.

В общем, я решил, что если их можно получать от сервера, то значит можно и эмулировать отправку от сервера.
И я начал разбираться, что это такое и как оно работает.

Спустя некоторое время поисков, написания и тестов я хочу представить вам библиотеку "CEF_Notification"
С её помощью вы сможете использовать настраиваемые CEF уведомления в игре.

Примеры:
1692882126908.png
1692882251744.png


Это впечатляюще, не правда ли?



И так, как же пользоваться этой библиотекой:

1) Скачайте файл "CEF_Notification.lua" из прикрепенных ниже файлов, затем поместите его по пути:
*Коренвая папка ГТА*/moonloader/lib/

2) Откройте свой lua скрипт, и подключите данную библиотеку с помощью
Lua:
local CEF_Notification = require('lib.CEF_Notification')

3) Для показа уведомления в нужном вам фрагменте кода используйте эту функцию:
Lua:
CEF_Notification(type, title, text, time)
Данная функция имеет 4 аргумента:
1) type - тип уведомления ( указывайте 'info' или 'error' или 'success' или 'halloween' (или '' если вы хотите уведомление без иконки) )
2) title - текст заголовка/названия уведомления ( указывайте текст )
3) text - текст содержимого уведомления ( указывайте текст )
4) time - время отображения уведомления в миллисекундах ( указывайте любое число ).


Давайте наведу пример:
Lua:
-- code
CEF_Notification('error', 'Ошибка!', 'Вы не можете войти в это здание, оно закрыто.', 2000)
-- code
В этом случае вы увидите такое уведомление, которое будет отображатся 2 секунды.
1692882251744.png



Зависимости: MoonLoader 0.26 и выше

P.S. Работает на всех серверах аризоны рп, возможно на клонах/бонусниках аризоны, и если вы владелец/разработчик своего сервера, то можно включить этим способом: https://www.blast.hk/threads/176332/
 

Вложения

  • CEF_Notification.lua
    708 байт · Просмотры: 106
  • [OLD] CEF_Notify_libnary.lua
    1.2 KB · Просмотры: 33
Последнее редактирование:

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,769
11,213
Извините, а ваши родители случайно не VRush и Kaban Bunya? А откуда у вас такой говнокод?
1. почему тип передается как число? Почему их всего 2 если их 4?
1692890856267.png

2. зачем добавлять в либу копирайты, если ты просто добавил говнокод к функции егора?
3. зачем мейн?
4. зачем вызывать evalcef через pcall если он не крашнется и ничего не вернет?
5. зачем создавать экспортируемую функцию и в ней через pcall вызывать функцию, в которой уже есть pcall?

Убираем все говно и получаем:
Lua:
--[[
    АФТАР ИТАВА СКРЕБДА КОТОРИ ДАБАВЛЯИТ УВИДАМЛЕНЯ НИВЕРЛАНЕ И ЧОПА СРЕБДС
]]

---@param type 'info' | 'error' | 'success' | 'halloween'
---@param title string
---@param text string
---@param time number
function EXPORTS.addArizonaNotification(type, title, text, time)
    assert(type == 'info' or type == 'error' or type == 'success' or type == 'halloween', 'Invalid notification type!');
    local str = ('window.executeEvent(\'event.notify.initialize\', \'["%s", "%s", "%s", "%s"]\');'):format(type, title, text, time);
    local bs = raknetNewBitStream();
    raknetBitStreamWriteInt8(bs, 17);
    raknetBitStreamWriteInt32(bs, 0);
    raknetBitStreamWriteInt32(bs, #str);
    raknetBitStreamWriteString(bs, str);
    raknetEmulPacketReceiveBitStream(220, bs);
    raknetDeleteBitStream(bs);
end
 

MTG MODS

Активный
Автор темы
147
105
Почему их всего 2 если их 4?
Не знал что есть 4, самостоятельно обнаружил только 2
пробовал без него, ничего не работало
зачем вызывать evalcef через pcall если он не крашнется
Если какой-то аргумент указать неправильно, может крашнуться, вот и защита такая
 
Последнее редактирование:

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,769
11,213
пробовал без него, ничего не работало
потому что ты зачем то сделал это на import/export (и все ровно говоришь что бы кидали в \lib), хотя тут можно спокойно обойтись и без этого:
Lua:
---@param type 'info' | 'error' | 'success' | 'halloween'
---@param title string
---@param text string
---@param time number
return function(type, title, text, time)
    assert(type == 'info' or type == 'error' or type == 'success' or type == 'halloween', 'Invalid notification type!');
    local str = ('window.executeEvent(\'event.notify.initialize\', \'["%s", "%s", "%s", "%s"]\');'):format(type, title, text, time);
    local bs = raknetNewBitStream();
    raknetBitStreamWriteInt8(bs, 17);
    raknetBitStreamWriteInt32(bs, 0);
    raknetBitStreamWriteInt32(bs, #str);
    raknetBitStreamWriteString(bs, str);
    raknetEmulPacketReceiveBitStream(220, bs);
    raknetDeleteBitStream(bs);
end
Использование:
Lua:
local arizonaNotification = require('lib.arizonaNotification');

arizonaNotification('info', 'Заголовок', 'Текст', 1500);

-- или (сойдет если хочешь вызвать только 1 раз)
require('lib.arizonaNotification')('info', 'Заголовок', 'Текст', 1500);
 

MTG MODS

Активный
Автор темы
147
105
потому что ты зачем то сделал это на import/export (и все ровно говоришь что бы кидали в \lib), хотя тут можно спокойно обойтись и без этого:
Lua:
---@param type 'info' | 'error' | 'success' | 'halloween'
---@param title string
---@param text string
---@param time number
return function(type, title, text, time)
    assert(type == 'info' or type == 'error' or type == 'success' or type == 'halloween', 'Invalid notification type!');
    local str = ('window.executeEvent(\'event.notify.initialize\', \'["%s", "%s", "%s", "%s"]\');'):format(type, title, text, time);
    local bs = raknetNewBitStream();
    raknetBitStreamWriteInt8(bs, 17);
    raknetBitStreamWriteInt32(bs, 0);
    raknetBitStreamWriteInt32(bs, #str);
    raknetBitStreamWriteString(bs, str);
    raknetEmulPacketReceiveBitStream(220, bs);
    raknetDeleteBitStream(bs);
end
Использование:
Lua:
local arizonaNotification = require('lib.arizonaNotification');

arizonaNotification('info', 'Заголовок', 'Текст', 1500);

-- или (сойдет если хочешь вызвать только 1 раз)
require('lib.arizonaNotification')('info', 'Заголовок', 'Текст', 1500);
Перезалил, теперь всё ок, спасибо за советы
 

MrCreepTon

وНеизвестный
Всефорумный модератор
2,127
4,713