SA:MP Lua Arizona New-Style-Inventory

elyrin

Активный
Автор темы
128
87
Версия SA-MP
  1. 0.3.7 (R1)
  2. 0.3.7-R2
  3. 0.3.7-R3
  4. 0.3.7-R4
  5. 0.3.7-R5
  6. Любая
  7. Другая
Спустя много времени не пригляделся мне CEF-инвентарь на Аризоне, потому что я не люблю градиенты в дизайнах
И я решил сделать статичную настройку нового чёрного инвентаря, на который будет намного приятнее смотреть

Если так говорить, то по сути это замена стилю старого чёрного инвентаря на TextDraw, который перенесён под CEF-инвентарь

Как выглядит инвентарь со скриптом:

Снимок экрана 2026-04-19 153428.png


Без:
Снимок экрана 2026-04-19 153630.png


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

Если будут баги, вопросы или предложения по улучшению - писать в тему
 

Вложения

  • New-Style-Inventory.lua
    2.9 KB · Просмотры: 114
Последнее редактирование:

elyrin

Активный
Автор темы
128
87
Обновил скрипт. Изменения:

Добавил однотонную покраску для вкладки "Охранники"
 

Вложения

  • New-Style-Inventory.lua
    3.6 KB · Просмотры: 44

Deps

Известный
295
232
Lua:
function main()
    ...
    while true do wait(0)
        if state then
            evalanon([[
                ...

💀
 

tygodym

Известный
86
16
бембембем:
addEventHandler('onSendPacket', function(id, bs, priority, reliability, orderingChannel)
    if id == 220 then
        local id = raknetBitStreamReadInt8(bs)
        local packettype = raknetBitStreamReadInt8(bs)
        local strlen = raknetBitStreamReadInt16(bs)
        local text = raknetBitStreamReadString(bs, strlen)
        if packettype ~= 0 and packettype ~= 1 and #text > 2 then
            if text:find('onActiveViewChanged|Inventory') then
                if state then
                    evalanon([[
                        const inventory_main = document.querySelector(".inventory-main");
                        const inventory_buttons = document.querySelectorAll(".inventory-button");
                        const inventory_header = document.querySelectorAll(".inventory-window__header");

                        const character_tab_navigation_item = document.querySelectorAll(".character__tab-navigation-item");
                        const character_main_menu_buttons = document.querySelector(".character-main__loadout-buttons");
                        const character_main_loadout = document.querySelector(".character-main__loadout");

                        inventory_main.style.background = "#131516";
                        inventory_header.forEach(el => {
                            el.style.background = "#131516";
                        });
                        inventory_buttons.forEach(el => {
                            el.style.background = "#202020";
                            el.style.color = "#F8F4FF";
                        });

                        character_main_menu_buttons.style.background = "#131516";
                        character_main_loadout.style.background = "#131516";
                        character_tab_navigation_item.forEach(el => {
                            el.style.background = "#131516";
                        });
                    ]])
                end
            end
        end
    end
end)
Зачем запускать так evalanon, если можно просто по пакетам
 

elyrin

Активный
Автор темы
128
87
бембембем:
addEventHandler('onSendPacket', function(id, bs, priority, reliability, orderingChannel)
    if id == 220 then
        local id = raknetBitStreamReadInt8(bs)
        local packettype = raknetBitStreamReadInt8(bs)
        local strlen = raknetBitStreamReadInt16(bs)
        local text = raknetBitStreamReadString(bs, strlen)
        if packettype ~= 0 and packettype ~= 1 and #text > 2 then
            if text:find('onActiveViewChanged|Inventory') then
                if state then
                    evalanon([[
                        const inventory_main = document.querySelector(".inventory-main");
                        const inventory_buttons = document.querySelectorAll(".inventory-button");
                        const inventory_header = document.querySelectorAll(".inventory-window__header");

                        const character_tab_navigation_item = document.querySelectorAll(".character__tab-navigation-item");
                        const character_main_menu_buttons = document.querySelector(".character-main__loadout-buttons");
                        const character_main_loadout = document.querySelector(".character-main__loadout");

                        inventory_main.style.background = "#131516";
                        inventory_header.forEach(el => {
                            el.style.background = "#131516";
                        });
                        inventory_buttons.forEach(el => {
                            el.style.background = "#202020";
                            el.style.color = "#F8F4FF";
                        });

                        character_main_menu_buttons.style.background = "#131516";
                        character_main_loadout.style.background = "#131516";
                        character_tab_navigation_item.forEach(el => {
                            el.style.background = "#131516";
                        });
                    ]])
                end
            end
        end
    end
end)
Зачем запускать так evalanon, если можно просто по пакетам
Ну кстати, да, чуть-чуть не подумал об этом