Lua [ARZ] Emoji | Отправка эмодзи в чат

MTG MODS

Активный
Автор темы
147
104
Версия SA-MP
  1. 0.3.7-R3

Emoji
Думаю, не все знали, что на аризоне (с лаунчера) есть возможность использовать эмодзи/смайлики.
Так вот, с помощью данного скрипта вы сможете отправлять любой из 18 доступных эмодзи в любой чат!

image.png


После отправки эмодзи будут иметь такой вид в чате
1681776540529.png


Настройки эмодзи-меню: /emoji
image.png


Данный скрипт так-же есть в официальном лаунчере Аризоны, в разделе модов
1683897104725.png


Текущая актуальная версия на бластхаке: 1.2
Текущая актуальная
версия в лаунчере: 1.1 [!]

1.2 (Обновление от 11.03.2024)
- Добавлены настройки /emoji
- Добавлены новые эмодзи
- Переход на Mimgui
- Эмодзи меню отображается только при открытом чате, если включено в /emoji

1.1 (Обновление от 12.05.2023)

Что нового:

- Оптимизация кода
- При выборе эмодзи (клик по нему), если у вас не открыт чат, то скрипт автоматически откроет чат и вставит выбранный эмодзи
- Если скрипт запустили из обычной сборки, а не с лаунчера, то автоматически выгружается
- При отправке команды/сообщения в чат, менюшка с эмодзи закроется
- Для открытия меню эмодзи не обязательно чтоб был открытый чат

Зависимости:
MoonLoader 0.26
mimgui
fAwesome6_solid​
 

Вложения

  • Emoji.lua
    14.2 KB · Просмотры: 45
Последнее редактирование:

Vespan

loneliness
Проверенный
2,101
1,633
YOOO
Lua:
        if imgui.Button("\n"..fa.ICON_FA_THUMBS_UP.."\n") then
            sampSetChatInputText(sampGetChatInputText().." (+) ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_THUMBS_DOWN.."\n") then
            sampSetChatInputText(sampGetChatInputText().." (-) ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_SMILE.."\n") then
            sampSetChatInputText(sampGetChatInputText().." :) ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_FROWN.."\n") then
            sampSetChatInputText(sampGetChatInputText().." :( ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_GRIN_ALT.."\n") then
            sampSetChatInputText(sampGetChatInputText().." =) ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_GRIN_TONGUE.."\n") then
            sampSetChatInputText(sampGetChatInputText().." :p ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_GRIN_TONGUE_WINK.."\n") then
            sampSetChatInputText(sampGetChatInputText().." ;p ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_GRIN_SQUINT_TEARS.."\n") then
            sampSetChatInputText(sampGetChatInputText().." (rofl) ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_GRIN_SQUINT.."\n") then
            sampSetChatInputText(sampGetChatInputText().." XD ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_GRIMACE.."\n") then
            sampSetChatInputText(sampGetChatInputText().." (agr) ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_FLUSHED.."\n") then
            sampSetChatInputText(sampGetChatInputText().." O.o ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_TIRED.."\n") then
            sampSetChatInputText(sampGetChatInputText().." >.< ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_ANGRY.."\n") then
            sampSetChatInputText(sampGetChatInputText().." >:( ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_HEART.."\n") then
            sampSetChatInputText(sampGetChatInputText().." <3 ")   
        end
try this
Lua:
function imgui.OnDrawFrame()
    
    imgui_theme()
    
    if not emoji_window.v then
        imgui.Process = false
    end
    
    if emoji_window.v then
    
        imgui.SetNextWindowPos(imgui.ImVec2(ex/2, ey/2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(525, 110), imgui.Cond.FirstUseEver)
        imgui.Begin(u8("Emoji | Автор скрипта: MTG MODS | Версия: 1.0"),emoji_window, imgui.WindowFlags.NoCollapse)
        
        imgui.SetCursorPosY(25)

t = {
    [fa.ICON_FA_THUMBS_UP] = " (+) ",
    [fa.ICON_FA_THUMBS_DOWN] = " (-, ",
    [fa.ICON_FA_SMILE] = " :, ",
    [fa.ICON_FA_FROWN] = " :( ",
    [fa.ICON_FA_GRIN_ALT] = " =, ",
    [fa.ICON_FA_GRIN_TONGUE] = " :p ",
    [fa.ICON_FA_GRIN_TONGUE_WINK] = " ;p ",
    [fa.ICON_FA_GRIN_SQUINT_TEARS] = " (rofl, ",
    [fa.ICON_FA_GRIN_SQUINT] = " XD ",
    [fa.ICON_FA_GRIMACE] = " (agr, ",
    [fa.ICON_FA_FLUSHED] = " O.o ",
    [fa.ICON_FA_TIRED] = " >.< ",
    [fa.ICON_FA_ANGRY] = " >:( ",
    [fa.ICON_FA_HEART] = " <3 ",   
}
        for k,v in pairs(t) do
            if imgui.Button("\n"..k.."\n") then
                sampSetChatInputText(sampGetChatInputText().." "..v.." ")
            end
            imgui.SameLine()
        end
        imgui.Spacing()
        
        imgui.CenterText(u8"Для вставки эмодзи в чат, просто нажмите на жалaемый эмодзи.")
        imgui.CenterText(u8"Связь с автором (для оказания тех. поддержки): https://discord.gg/qBPEYjfNhv")
        
        imgui.End()
    end
end
 

ARMOR

kjor32 is legend
Модератор
4,851
6,078
YOOO
Lua:
        if imgui.Button("\n"..fa.ICON_FA_THUMBS_UP.."\n") then
            sampSetChatInputText(sampGetChatInputText().." (+) ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_THUMBS_DOWN.."\n") then
            sampSetChatInputText(sampGetChatInputText().." (-) ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_SMILE.."\n") then
            sampSetChatInputText(sampGetChatInputText().." :) ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_FROWN.."\n") then
            sampSetChatInputText(sampGetChatInputText().." :( ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_GRIN_ALT.."\n") then
            sampSetChatInputText(sampGetChatInputText().." =) ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_GRIN_TONGUE.."\n") then
            sampSetChatInputText(sampGetChatInputText().." :p ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_GRIN_TONGUE_WINK.."\n") then
            sampSetChatInputText(sampGetChatInputText().." ;p ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_GRIN_SQUINT_TEARS.."\n") then
            sampSetChatInputText(sampGetChatInputText().." (rofl) ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_GRIN_SQUINT.."\n") then
            sampSetChatInputText(sampGetChatInputText().." XD ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_GRIMACE.."\n") then
            sampSetChatInputText(sampGetChatInputText().." (agr) ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_FLUSHED.."\n") then
            sampSetChatInputText(sampGetChatInputText().." O.o ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_TIRED.."\n") then
            sampSetChatInputText(sampGetChatInputText().." >.< ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_ANGRY.."\n") then
            sampSetChatInputText(sampGetChatInputText().." >:( ")
        end
        imgui.SameLine()
        if imgui.Button("\n"..fa.ICON_FA_HEART.."\n") then
            sampSetChatInputText(sampGetChatInputText().." <3 ") 
        end
try this
Lua:
function imgui.OnDrawFrame()
  
    imgui_theme()
  
    if not emoji_window.v then
        imgui.Process = false
    end
  
    if emoji_window.v then
  
        imgui.SetNextWindowPos(imgui.ImVec2(ex/2, ey/2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(525, 110), imgui.Cond.FirstUseEver)
        imgui.Begin(u8("Emoji | Автор скрипта: MTG MODS | Версия: 1.0"),emoji_window, imgui.WindowFlags.NoCollapse)
      
        imgui.SetCursorPosY(25)

t = {
    [fa.ICON_FA_THUMBS_UP] = " (+) ",
    [fa.ICON_FA_THUMBS_DOWN] = " (-, ",
    [fa.ICON_FA_SMILE] = " :, ",
    [fa.ICON_FA_FROWN] = " :( ",
    [fa.ICON_FA_GRIN_ALT] = " =, ",
    [fa.ICON_FA_GRIN_TONGUE] = " :p ",
    [fa.ICON_FA_GRIN_TONGUE_WINK] = " ;p ",
    [fa.ICON_FA_GRIN_SQUINT_TEARS] = " (rofl, ",
    [fa.ICON_FA_GRIN_SQUINT] = " XD ",
    [fa.ICON_FA_GRIMACE] = " (agr, ",
    [fa.ICON_FA_FLUSHED] = " O.o ",
    [fa.ICON_FA_TIRED] = " >.< ",
    [fa.ICON_FA_ANGRY] = " >:( ",
    [fa.ICON_FA_HEART] = " <3 ", 
}
        for k,v in pairs(t) do
            if imgui.Button("\n"..k.."\n") then
                sampSetChatInputText(sampGetChatInputText().." "..v.." ")
            end
            imgui.SameLine()
        end
        imgui.Spacing()
      
        imgui.CenterText(u8"Для вставки эмодзи в чат, просто нажмите на жалaемый эмодзи.")
        imgui.CenterText(u8"Связь с автором (для оказания тех. поддержки): https://discord.gg/qBPEYjfNhv")
      
        imgui.End()
    end
end
Мэн, устанавливать стиль окну имгуи каждый кадр это не нормально.

Я кста думал что это скрипт для поддержки иконок на клиенте, а не просто как скрипт который их отправляет.
 
  • Нравится
Реакции: Vespan

Vespan

loneliness
Проверенный
2,101
1,633
Работает и мой вариант, зачем усложнять еще))
работает то работает но..
тебе больше нравится вот это
1681829441775.png

чем это?
1681829477608.png


вырти рот а то он в говне
лучше бы выучил (i)pairs, tables lua и нормально сделал как я сверху написал, это тебе ооочень сильно пригодится в будущих твоих скриптах

зачем усложнять еще))
если на аризоне было бы примерно 50 смайликов, ты бы подобное сделал как в своем коде?
не используя массив и pairs?
а точно, зачем же усложнять..
 
  • Нравится
  • Грустно
Реакции: MTG MODS и YarikVL

MTG MODS

Активный
Автор темы
147
104
Обновление от 28.04.2023, версия 1.1

Что нового:
- Оптимизация кода
- При выборе эмодзи (клик по нему), если у вас не открыт чат, то скрипт автоматически откроет чат и вставит выбранный эмодзи
- Если скрипт запустили из обычной сборки, а не с лаунчера, то автоматически выгружается
- При отправке команды/сообщения в чат, менюшка с эмодзи закроется
- Для открытия меню эмодзи не обязательно чтоб был открытый чат

Новая версия уже доступна для скачивания!
 
Последнее редактирование:

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,768
11,210
Обновление от 28.04.2023, версия 1.1

Что нового:
- Оптимизация кода
- При выборе эмодзи (клик по нему), если у вас не открыт чат, то скрипт автоматически откроет чат и вставит выбранный эмодзи
- Если скрипт запустили из обычной сборки, а не с лаунчера, то автоматически выгружается
- При отправке команды/сообщения в чат, менюшка с эмодзи закроется
- Для открытия меню эмодзи не обязательно чтоб был открытый чат

Новая версия уже доступна для скачивания!
в некоторых моментах код стал даже хуже. Итак, начнем.

1. проверка на лаунчер очень хуевая. Что будет если я нажму ctrl + r?
2. зачем хукать отправку команд и сообщений если можно просто проверять открыт ли чат?
Накидал тут за пару минуток:
1682701343605.png

Lua:
---@diagnostic disable:lowercase-global
local imgui = require('mimgui')
local faicons = require('fAwesome6')

local previewIndex, previewUpdate, list = 1, 0, {
    { text = '(+)', icon = 'THUMBS_UP' },
    { text = '(-)', icon = 'THUMBS_DOWN' },
    { text = ':)', icon = 'face_smile' },
    { text = ':(', icon = 'face_frown' },
    { text = '=)', icon = 'face_grin_wide' },
    { text = ':p', icon = 'face_grin_tongue' },
    { text = ';p', icon = 'face_grin_tongue_wink' },
    { text = '(rofl)', icon = 'face_grin_squint_tears' },
    { text = 'XD', icon = 'face_grin_squint' },
    { text = '(agr)', icon = 'face_grimace' },
    { text = 'O.o', icon = 'face_flushed' },
    { text = '>.<', icon = 'face_tired' },
    { text = '>:(', icon = 'face_angry' },
    { text = '<3', icon = 'heart' },
}

imgui.OnInitialize(function()
    --// STYLE
    imgui.GetStyle().PopupRounding = 5
    imgui.GetStyle().FrameRounding = 5

    --// ICONS FONT
    local config = imgui.ImFontConfig()
    config.MergeMode = true
    config.PixelSnapH = true
    local builder = imgui.ImFontGlyphRangesBuilder()
    for _, iconData in ipairs(list) do
        builder:AddText(faicons(iconData.icon))
    end
    defaultGlyphRanges1 = imgui.ImVector_ImWchar()
    builder:BuildRanges(defaultGlyphRanges1)
    imgui.GetIO().Fonts:AddFontFromMemoryCompressedBase85TTF(faicons.get_font_data_base85('solid'), 14, config, defaultGlyphRanges1[0].Data)
end)

imgui.OnFrame(
    function() return isSampAvailable() and sampIsChatInputActive() end,
    function(this)
        this.HideCursor = true
        
        local chatPos, cur = imgui.ImVec2(getChatInputPos()), imgui.ImVec2(getCursorPos())
        local icon = faicons(list[previewIndex].icon)
        local size = imgui.CalcTextSize(icon)
        local pos = imgui.ImVec2(chatPos.x + 800 - 45 - size.x / 2, chatPos.y + size.y / 2 + 3)
        
        --// Draw icon button
        imgui.GetBackgroundDrawList():AddText(pos, 0xFFffffff, icon)
        if imgui.IsMouseClicked(0) and not imgui.IsPopupOpen('icons') then
            if cur.x >= pos.x and cur.x <= pos.x + size.x and cur.y >= pos.y and cur.y <= pos.y + size.y then
                imgui.OpenPopup('icons')
            end
        end
        
        --// Draw popup
        imgui.SetNextWindowPos(imgui.ImVec2(pos.x + size.x, pos.y + 35), imgui.Cond.Always, imgui.ImVec2(0.5, 0))
        if imgui.BeginPopup('icons') then
            for index, data in ipairs(list) do
                if imgui.Button(faicons(data.icon), imgui.ImVec2(30, 30)) then
                    sampSetChatInputText(sampGetChatInputText()..data.text)
                end
                if index ~= 7 then
                    imgui.SameLine()
                end
            end
            imgui.EndPopup()
        end

        --// change icon preview icon
        if previewUpdate + 3 - os.clock() <= 0 then
            math.randomseed(math.random(1, 9999) * os.time())
            previewIndex = math.random(1, #list)
            previewUpdate = os.clock()
        end
    end
)

---@return number posX Position X
---@return number posY Position
function getChatInputPos()
    local ChatPtr = sampGetInputInfoPtr()
    local pizda = getStructElement(ChatPtr, 0x8, 4)
    local posX = getStructElement(pizda, 0x8, 4)
    local posY = getStructElement(pizda, 0xC, 4)
    return posX, posY + 3
end
 

MTG MODS

Активный
Автор темы
147
104
зачем хукать отправку команд и сообщений если можно просто проверять открыт ли чат?
так и было в первой версии, но так как я сделал авто-открытие чата при выборе эмодзи, то убрал

проверка на лаунчер очень хуевая. Что будет если я нажму ctrl + r?
проверка идет при подключении к серверу,а точнее при авторизации в ак, если не лаунчер то выгружать
просто перезагрузиться скрипт и будет работать
 

VRush

https://t.me/vrushscript
Проверенный
2,341
1,088
1682714343537.png

  • Улучшение и оптимизация кода
  • Упростил имгуи меню, теперь оно в одну строчку и сразу под инпутом чата
  • Убрал рекламу ДС сервера
  • Активация на кнопку убрана, теперь появляется вместе с инпутом чата
  • Более аккуратный дизайн
  • Круто все теперь крч
 

Вложения

  • Emoji.lua
    5.6 KB · Просмотры: 46

User851349

Новичок
16
4
Посмотреть вложение 199608
  • Улучшение и оптимизация кода
  • Упростил имгуи меню, теперь оно в одну строчку и сразу под инпутом чата
  • Убрал рекламу ДС сервера
  • Активация на кнопку убрана, теперь появляется вместе с инпутом чата
  • Более аккуратный дизайн
  • Круто все теперь крч
Сделать бы возможность изменять местоположение))
 

MTG MODS

Активный
Автор темы
147
104
Сделать бы возможность изменять местоположение))
Сделаю

1000013663.png


В новой версии будет:
- Переход с imgui на mimgui (хз зачем, но с ним у меня на 2 фпс больше)
- Переход на FA6 вместо FA5 (типо больше иконок новых, пригодится для новых эмодзи)
- Коректирование позиции
- Новые эмодзи (4 шт новых точно будет)
 

MTG MODS

Активный
Автор темы
147
104
11/03/2024 Обновление!

Версия 1.2

Что нового:
- Возможность кастомизации по вашим предпочтениям в настройках: /emoji
- Возможность изменять местоположение (автоматически сохраняется)
image.png



image.png

image.png

- Добавлены новые эмодзи
- Переход на Mimgui
- Эмодзи меню отображается только при открытом чате, если включено в /emoji
 
Последнее редактирование: