Trilogy Lua Форматирование цен Arizona Trilogy

MANFREDISSSS

Новичок
Автор темы
2
5
Версия SA-MP
  1. Другая
MoneyFormat
Данный скрипт создан на основе анализа открытых источников API, а также с использованием знаний в области нейросетей и стремлением помочь пользователям, играющим в Arizona Trilogy. Если вы обнаружили ошибку, располагаете предложениями по оптимизации или имеете идеи по улучшению функционала — просим оставить сообщение в соответствующей теме.
Обзор скрипта:
видос
Запуск:
Активация автоматический
(или CTRL + R)

Установка: закинуть файл в [Папка с игрой]\Game\Gameface\Binaries\Win64\TrilogyLoader

Функционал:
MoneyFormat — это скрипт, предназначенный для автоматической визуальной обработки денежных сумм.
Его основная задача — добавление разделителей (точек) в числа, что значительно улучшает восприятие больших цифр.
Вместо *1000000* вы увидите *1.000.000*, что позволяет мгновенно оценить баланс, не тратя время на подсчет нулей в уме.
Зависимости:
ArizonaAPI, Encoding, Windows.message (с MoonLoader) и еще
TrilogyLoader,
MoneyFormat открытый код:
-- Money Formatter для CEF окон Arizona (все валюты)
-- Автор: RAYMOND
require("ArizonaAPI")

print("=== MONEY FORMATTER (ALL CURRENCIES) ===")

if not executeUIBrowserJSCode then
    print("ERROR: CEF not found")
    return
end

executeUIBrowserJSCode([[
    function formatNumber(num) {
        return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
    }
 
    function formatMoneyText(node) {
        if (node.nodeType === 3) {
            var text = node.nodeValue;
            var newText = text;
         
            // AZ-Coins
            newText = newText.replace(/(\d+) AZ-Coins/g, function(match, num) {
                return formatNumber(num) + ' AZ-Coins';
            });
         
            // SA$ (доллары)
            newText = newText.replace(/\$ (\d+)/g, function(match, num) {
                return '$ ' + formatNumber(num);
            });
         
            // SA$ без пробела
            newText = newText.replace(/\$(\d+)/g, function(match, num) {
                return '$' + formatNumber(num);
            });
         
            // Цифры в квадратных скобках [1234567]
            newText = newText.replace(/\[(\d+)\]/g, function(match, num) {
                return '[' + formatNumber(num) + ']';
            });
         
            if (newText !== text) {
                node.nodeValue = newText;
            }
        } else {
            node.childNodes.forEach(formatMoneyText);
        }
    }
 
    formatMoneyText(document.body);
 
    new MutationObserver(m => m.forEach(m =>
        m.addedNodes.forEach(n => n.nodeType === 1 && formatMoneyText(n))
    )).observe(document.body, {childList: true, subtree: true});
]])

print("✅ Money Formatter activated!")
print("✅ AZ-Coins, $, и числа в скобках теперь с точками")
 

Вложения

  • moneyformat.lua
    1.9 KB · Просмотры: 2
Последнее редактирование:

MANFREDISSSS

Новичок
Автор темы
2
5
Исправленная версия, которая работает на автомате и не нужно перезагружать каждый раз CTRL + R чтобы скрипт работал

MoneyFormat открытый код V2:
-- Автоматически Money Formatter для CEF окон Arizona (все валюты)
-- Автор: RAYMOND
require("ArizonaAPI")

if not executeUIBrowserJSCode then return end

local lastApply = 0

local function applyMoneyFormat()
    local now = os.clock()
    -- Защита от слишком частого применения (раз в 2 секунды)
    if now - lastApply < 2.0 then return end
    lastApply = now
    
    executeUIBrowserJSCode([[
        function formatNumber(n){return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g,".")}
        function formatText(n){
            if(n.nodeType===3){
                let t=n.nodeValue;
                t=t.replace(/(\d+) AZ-Coins/g,(m,n)=>formatNumber(n)+' AZ-Coins')
                     .replace(/\$ (\d+)/g,(m,n)=>'$ '+formatNumber(n))
                     .replace(/\$(\d+)/g,(m,n)=>'$'+formatNumber(n))
                     .replace(/\[(\d+)\]/g,(m,n)=>'['+formatNumber(n)+']');
                if(t!==n.nodeValue) n.nodeValue=t;
            } else n.childNodes?.forEach(formatText);
        }
        if(document?.body){
            formatText(document.body);
            if(!window.mfObs){
                window.mfObs=new MutationObserver(()=>formatText(document.body));
                window.mfObs.observe(document.body,{childList:true,subtree:true});
            }
        }
    ]])
end

function main()
    applyMoneyFormat()
end

-- Срабатывает при любом открытии CEF окна
function onUIBrowserJSCodeExecute(szCode)
    if szCode then
        applyMoneyFormat()
    end
    return true
end

sampRegisterChatCommand("fmt", function()
    applyMoneyFormat()
    sampAddChatMessage("[MoneyFormat] Applied!", 0x4CAF50)
end)
 

Вложения

  • moneyformat.lua
    1.6 KB · Просмотры: 1