Lua Arizona HUD NewMoneySeparator v4! Кастомизация, Фиксы, MaterialText и стандартный худ!

pewpewpewpew

Известный
540
146
Вы купили Железная карта нац.банка у игрока * за $5 000 000 $500 000
почему то пишет двойную цену в чате
цена стоит 5.5кк (m 5 kk 500)

Вы купили Алмазный камень (928 шт.) у игрока * за VC$9,000,000 VC$280,000
заменяй в convert_money_tags

Lua:
local function convert_money_tags(text)
    if type(text) ~= "string" or text == "" then
        return text
    end

    text = text:gsub(":M:%s*(%d+)%s*:KK:%s*(%d+)%s*:K:%s*([%d%.,]+)", function(m, kk, k)
        return build_money(m, kk, k)
    end)

    text = text:gsub(":M:%s*(%d+)%s*:KK:%s*(%d+)", function(m, kk)
        return build_money(m, kk, nil)
    end)

    text = text:gsub(":M:%s*(%d+)%s*:K:%s*([%d%.,]+)", function(m, k)
        return build_money(m, nil, k)
    end)

    text = text:gsub(":KK:%s*(%d+)%s*:K:%s*([%d%.,]+)", function(kk, k)
        return build_money(nil, kk, k)
    end)

    text = text:gsub(":M:%s*(%d+)", function(m)
        return build_money(m, nil, nil)
    end)

    text = text:gsub(":KK:%s*(%d+)", function(kk)
        return build_money(nil, kk, nil)
    end)

    text = text:gsub(":KV:%s*([%d%.,]+)", function(kv)
        return build_vc_money(kv)
    end)

    text = text:gsub(":K:%s*([%d%.,]+)", function(k)
        return build_money(nil, nil, k)
    end)

    text = merge_split_money_chunks(text)

    return text
end


и добавь две хелп функции после build_vc_money

Lua:
local function parse_display_money(str)
    str = tostring(str or "")
    str = str:gsub("[%s%.,]", "")
    return tonumber(str) or 0
end

local function merge_split_money_chunks(text)
    if type(text) ~= "string" or text == "" then
        return text
    end

    local changed = true
    while changed do
        changed = false

        text = text:gsub("VC%$([%d%.,%s]+)%s+VC%$([%d%.,%s]+)", function(a, b)
            local x, y = parse_display_money(a), parse_display_money(b)
            if x > 0 and y > 0 then
                changed = true
                return "VC" .. format_money_styled(x + y)
            end
        end)

        text = text:gsub("%$([%d%.,%s]+)%s+%$([%d%.,%s]+)", function(a, b)
            local x, y = parse_display_money(a), parse_display_money(b)
            if x > 0 and y > 0 then
                changed = true
                return format_money_styled(x + y)
            end
        end)
    end

    return text
end
 
  • Нравится
Реакции: манул бахус

Trevor_

Известный
71
4
цены в лавках на вайсити
1776898779155.png
 

geige sculdone

Новичок
5
0
заменяй в convert_money_tags

Lua:
local function convert_money_tags(text)
    if type(text) ~= "string" or text == "" then
        return text
    end

    text = text:gsub(":M:%s*(%d+)%s*:KK:%s*(%d+)%s*:K:%s*([%d%.,]+)", function(m, kk, k)
        return build_money(m, kk, k)
    end)

    text = text:gsub(":M:%s*(%d+)%s*:KK:%s*(%d+)", function(m, kk)
        return build_money(m, kk, nil)
    end)

    text = text:gsub(":M:%s*(%d+)%s*:K:%s*([%d%.,]+)", function(m, k)
        return build_money(m, nil, k)
    end)

    text = text:gsub(":KK:%s*(%d+)%s*:K:%s*([%d%.,]+)", function(kk, k)
        return build_money(nil, kk, k)
    end)

    text = text:gsub(":M:%s*(%d+)", function(m)
        return build_money(m, nil, nil)
    end)

    text = text:gsub(":KK:%s*(%d+)", function(kk)
        return build_money(nil, kk, nil)
    end)

    text = text:gsub(":KV:%s*([%d%.,]+)", function(kv)
        return build_vc_money(kv)
    end)

    text = text:gsub(":K:%s*([%d%.,]+)", function(k)
        return build_money(nil, nil, k)
    end)

    text = merge_split_money_chunks(text)

    return text
end


и добавь две хелп функции после build_vc_money

Lua:
local function parse_display_money(str)
    str = tostring(str or "")
    str = str:gsub("[%s%.,]", "")
    return tonumber(str) or 0
end

local function merge_split_money_chunks(text)
    if type(text) ~= "string" or text == "" then
        return text
    end

    local changed = true
    while changed do
        changed = false

        text = text:gsub("VC%$([%d%.,%s]+)%s+VC%$([%d%.,%s]+)", function(a, b)
            local x, y = parse_display_money(a), parse_display_money(b)
            if x > 0 and y > 0 then
                changed = true
                return "VC" .. format_money_styled(x + y)
            end
        end)

        text = text:gsub("%$([%d%.,%s]+)%s+%$([%d%.,%s]+)", function(a, b)
            local x, y = parse_display_money(a), parse_display_money(b)
            if x > 0 and y > 0 then
                changed = true
                return format_money_styled(x + y)
            end
        end)
    end

    return text
end
вставил, все равно краши ловлю:
 

Вложения

  • NewMoneySeparator_v3.lua
    50.8 KB · Просмотры: 7

Awardos123123s

Новичок
9
2
💰 Arizona Money Separator v4

Описание:
Скрипт приводит новый формат денег на Arizona RP в нормальный читаемый вид.

Теперь вместо:
:M: 18 :KK: 852 :K: 564.994

Ты будешь видеть:
$18.852.564.994

Убирает :М:, :KK:, :K: и делает удобный формат чисел.

Работает:
- Чат
- Диалоги
- TextDraw
- 3D Text
- MaterialText (текст на объектах)
- HUD (CEF и стандартный)
- Ввод денег в диалогах
- Трейд (обмен)

Пример:

До:
Наличные: :KK: 88 :K: 379.854 Банк: :M: 1 :KK: 323 :K: 108.081

После:
Наличные: $88.379.854 Банк: $1.323.108.081

Настройки:
Команда: /nms.menu

Можно настроить:
- Разделители (точка, пробел, запятая или убрать вообще)
- Префикс ($, или свой)
- Включение/выключение отдельных функций:
- чат
- диалоги
- текстдравы
- 3D текст
- CEF
- HUD

Дополнительно:
- /nms.reload - перезапуск скрипта
- /nms.unload - выгрузка скрипта
- /nms.inject - перезапуск CEF
- /nms.reset - сброс настроек

Посмотреть вложение 291159
Интерфейс настроек

Посмотреть вложение 290873Посмотреть вложение 290874
Работает с трейдом!

Посмотреть вложение 290875
Работает с диалогами!

Посмотреть вложение 290876
Работает на 3DText!

Посмотреть вложение 290877
Работает в HUD!

Посмотреть вложение 290878
Работает в CEF!

Посмотреть вложение 291163
Работает стандартный худ! (thx @БеzликиЙ)

Важно:
Требуемые библиотеки - dkjson, imgui, inicfg
Отдельное спасибо @БеzликиЙ за помощь в работе стандартного худа
апдей
💰 Arizona Money Separator v4

Описание:
Скрипт приводит новый формат денег на Arizona RP в нормальный читаемый вид.

Теперь вместо:
:M: 18 :KK: 852 :K: 564.994

Ты будешь видеть:
$18.852.564.994

Убирает :М:, :KK:, :K: и делает удобный формат чисел.

Работает:
- Чат
- Диалоги
- TextDraw
- 3D Text
- MaterialText (текст на объектах)
- HUD (CEF и стандартный)
- Ввод денег в диалогах
- Трейд (обмен)

Пример:

До:
Наличные: :KK: 88 :K: 379.854 Банк: :M: 1 :KK: 323 :K: 108.081

После:
Наличные: $88.379.854 Банк: $1.323.108.081

Настройки:
Команда: /nms.menu

Можно настроить:
- Разделители (точка, пробел, запятая или убрать вообще)
- Префикс ($, или свой)
- Включение/выключение отдельных функций:
- чат
- диалоги
- текстдравы
- 3D текст
- CEF
- HUD

Дополнительно:
- /nms.reload - перезапуск скрипта
- /nms.unload - выгрузка скрипта
- /nms.inject - перезапуск CEF
- /nms.reset - сброс настроек

Посмотреть вложение 291159
Интерфейс настроек

Посмотреть вложение 290873Посмотреть вложение 290874
Работает с трейдом!

Посмотреть вложение 290875
Работает с диалогами!

Посмотреть вложение 290876
Работает на 3DText!

Посмотреть вложение 290877
Работает в HUD!

Посмотреть вложение 290878
Работает в CEF!

Посмотреть вложение 291163
Работает стандартный худ! (thx @БеzликиЙ)

Важно:
Требуемые библиотеки - dkjson, imgui, inicfg
Отдельное спасибо @БеzликиЙ за помощь в работе стандартного худа
апдейт пж ):
 

tygodym

Известный
86
16
thx реализуй еще для товаров в лавках
Посмотреть вложение 291988
Можешь добавить в конец скрипта. Вроде работает

Lua:
addEventHandler("onReceivePacket", function(id, bs)
    if id == 220 then
        raknetBitStreamIgnoreBits(bs, 8)
        local cefPacketID = raknetBitStreamReadInt8(bs)
        if cefPacketID == 17 then
            raknetBitStreamIgnoreBits(bs, 32)
            local length = raknetBitStreamReadInt16(bs)
            local encoded = raknetBitStreamReadInt8(bs)
            local cmd = (encoded ~= 0) and raknetBitStreamDecodeString(bs, length + encoded) or raknetBitStreamReadString(bs, length)
        
            local eventCall, dataCall = string.match(cmd, "window%.executeEvent%('([%w.]+)', `(.*)`%)")

            if eventCall == "event.inventory.playerInventory" and sampIsLocalPlayerSpawned() and sampGetGamestate() == 3 then -- Проверка на спавн нужна при инициализации цефа, т.к триггерится на собственный инвентарь
                local action = tonumber(dataCall:match('"action":(%d+)'))
                if action == 0 then

                    local modified = dataCall:gsub('"amount":(%d+),.-"text":"([^"]*)"', function(amount, oldText)
                        local newText = number_separator(amount)
                        return '"amount":' .. amount .. ',"text":"' .. newText .. '"'
                    end)

                    if modified then
                        local final = string.format(
                            "window.executeEvent('event.inventory.playerInventory', `%s`);",
                            modified
                        )
                        if connect_timer ~= nil and connect_timer - os.clock() <= -2 then -- Дополнительная проверка на таймер, так-как все равно может обойти проверку спавна сверху
                            evalanon(final)
                        elseif connect_timer == nil then
                            connect_timer = os.clock() -- Если нажали перезагрузку (CTRL + R), и сбросили connect_timer
                        end
                    end
                end
            end
        end
    end
end)

addEventHandler('onSendPacket', function(id, bs)
    lua_thread.create(function()
        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('onSvelteAppVersion') then -- Инициализация CEF
                    while not sampIsLocalPlayerSpawned() do wait(100) end
                    connect_timer = os.clock()
                end
            end
        end
    end)
end)

function evalanon(code)
    evalcef(("(() => {%s})()"):format(code))
end

function number_separator(n)
    local left, num, right = string.match(n,'^([^%d]*%d)(%d*)(.-)$')
    return left..(num:reverse():gsub('(%d%d%d)','%1.'):reverse())..right
end
 
Последнее редактирование:

pewpewpewpew

Известный
540
146
@geige sculdone @angelpain.

адаптировал скрипт и под вайс сити. в статистике теперь всё в старом добром виде, как это было до обновления.
так-же заменённо и в диалогах: банк, лавки, состояние счета в банке (при снятии вылазит в чат сообщение, см. скриншоты ниже), при обмене денег в банке на вайс сити, и ещё много других диалогов, которые мне лень сюда закидывать. заменённо всё, где есть определение ;M; :KK: :K: (самп) и ;MV; :KKV: :KV: (вайс сити).

так-же самые внимательные заметят то, что значок доллара заменён тоже (делал для себя, под серую сборку).



в самих лавках отображение не трогал (я об этом
291988
).


Снимок экрана 2026-04-27 015226.png
Снимок экрана 2026-04-27 020331.png
Снимок экрана 2026-04-27 015719.png
SA$
Снимок экрана 2026-04-27 015506.png

VC$
Снимок экрана 2026-04-27 014132.png

Снимок экрана 2026-04-27 015741.png
Снимок экрана 2026-04-27 015801.png
 

Вложения

  • oldmoneyseparator.lua
    15 KB · Просмотры: 64

Trevor_

Известный
71
4
@geige sculdone @angelpain.

адаптировал скрипт и под вайс сити. в статистике теперь всё в старом добром виде, как это было до обновления.
так-же заменённо и в диалогах: банк, лавки, состояние счета в банке (при снятии вылазит в чат сообщение, см. скриншоты ниже), при обмене денег в банке на вайс сити, и ещё много других диалогов, которые мне лень сюда закидывать. заменённо всё, где есть определение ;M; :KK: :K: (самп) и ;MV; :KKV: :KV: (вайс сити).

так-же самые внимательные заметят то, что значок доллара заменён тоже (делал для себя, под серую сборку).



в самих лавках отображение не трогал (я об этом
291988
).



как поставить точки за место запятых?