Lua Прочее [ARZ] Money Separator by YarikVL

YarikVL

Известный
Автор темы
Проверенный
4,826
1,834
Версия SA-MP
  1. 0.3.7 (R1)
  2. 0.3.7-R3
Доброго времени суток)​
Решил написать разделение цен в трейде и в лавках. Именно не в диалогах, а в лавках ( под иконкой товара ) и в трейде. Чтобы проще было понять что это и как оно работает приложу скрины.
В трейде:
sa-mp-007.png


В лавке:
Grand Theft Auto  San Andreas Screenshot 2022.05.26 - 14.51.44.94.png

На АвтоБазаре:
Grand Theft Auto  San Andreas Screenshot 2023.02.25 - 20.59.50.17.png
Написал этот скрипт так как проще будет понимать цены в лавках ( а не стоять минуту и курсором считать большие суммы ). И ещё причиной стало то что мне во время покупки в лавке большего количества Видеокарт подкинули одну не за 15кк, а за 150кк ( деньги мне вернули ), с этим скриптом можно будет покупать быстрее и не бояться что ты купишь дорого.
На счет благодарностей: Спасибо @Yondime за подсказку, @chapo за помощь с работой с текстдравами и таблицей, @FSA. за тесты и скрины, @Vespan за готовый код))

Требование: moonloader ( если Вы играете с лаунчера - устанавливайте с помощью вкладки Моды ), samp events, удалить все скрипты которые разделяют цены ( в случае, если у вас будет багаться ), установить MoneySeparator_v4.1.lua ( из прикрепленных файлов в низу этой темы ) в папку moonloader.
Активация: /mscr ( откроется диалог с активациями функций скрипта )

1. На лаунчере не у всех может работать, могут лететь варнинги в чате и пропадут цены: 16.47.04.421.jpg
Решение точного не знаю, но некоторым помогало: переустановить эту библиотеку https://www.blast.hk/threads/14624/, установить moonloader из вкладки Моды, удалить MVD Helper ( mvd можно на время убрать из папки чтобы проверить решится ли проблема )
2. Если будут какие-то баги с разделением попробуйте изменить названия поставив этот знак:
! перед названием этого скрипта для увеличение приоритета этого скрипта.
Или букву zzz для уменьшение приоритета этого скрипта.
Если не получится - попробуйте удалить другие скрипты с разделением цен.
3. Так же как и у других разделителей цен - есть очень редкий баг с неправильным отображением запятых в диалогах, т.е. место 1,000,000$ отображается - 1000,000$ ну или как-то по другому. Пока что не знаю решения, как найду - пофикшу сразу. Если у вас часто возникает именно эта проблема - напишите в тему со скрином.
4. Если будут другие баги в скрипте - то напишите в тему.

Если у вас не работает мой скрипт - то приложите файл moonloader.log ( .log может быть не видно ) из папки moonloader и описывайте свою проблему.

MoneySeparator for CR: Версия в названии не указана, но это самая первая ( v1 ). Её устанавливать не советую. Так как фризит в лавках.

money_separator: Версия не указана в названии, но это v2. Теперь не будет лагать игра при открытии каких-то текстдравов. А так же тут встроен этот разделитель сумм. Автор основы: Royan_Millians и сделал: Vespan

MoneySeparator_v3: Пофиксил отображение запятых в трейде. Теперь всё должно работать отлично!
MoneySeparator_v4: Добавил диалог, добавил разделение денег на Автобазаре в табличках. СКАЧИВАЙТЕ версию новее чтобы разделялись цены в лавках и трейде.
MoneySeparator_v4.1: Фикс разделение цен в текстдравах ( в лавках, в трейде ), теперь везде где нужно разделить число в текстдраве - оно будет разделять ( но можете совсем отключить это в настройках /mscr )
Все прикрепленные файлы - не нужно скачивать! Качайте последнюю версию - MoneySeparator_v4 и требование описанные выше!
 

Вложения

  • MoneySeparator for CR.lua
    2.7 KB · Просмотры: 2,062
  • money_separator.lua
    2 KB · Просмотры: 1,506
  • MoneySeparator_v3.lua
    2.4 KB · Просмотры: 1,956
  • MoneySeparator_v4.lua
    4.4 KB · Просмотры: 2,646
  • MoneySeparator_v4.1.lua
    4.7 KB · Просмотры: 658
Последнее редактирование:

markiz.desead

Потрачен
580
462
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А тут 2 скрипта в одном или только на лавках работает? Было б круто 2 в 1
 

Vespan

.
Проверенный
2,111
1,620
1653576374774.png

.
1653576378241.png

определись

а разница есть :
Lua:
script_author("Royan_Millans")
require 'lib.moonloader'
local sampevcheck, sampev = pcall(require, "lib.samp.events")

function main()
    if sampevcheck == false then
        sampAddChatMessage("[Money Separator] Îòñóòñâóòåò áèáëèîòåêà SAMP LUA.", -1)
        sampAddChatMessage("[Money Separator] Ñêðèïò íå ìîæåò ïðîäîëæèòü ðàáîòó.", -1)
        thisScript():unload()
    end
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do
        wait(0)
    end
    wait(-1)
end

function comma_value(n)
    local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$')
    return left..(num:reverse():gsub('(%d%d%d)','%1,'):reverse())..right
end

function separator(text)
    if text:find("$") then
        for S in string.gmatch(text, "%$%d+") do
            local replace = comma_value(S)
            text = string.gsub(text, S, replace)
        end
        for S in string.gmatch(text, "%d+%$") do
            S = string.sub(S, 0, #S-1)
            local replace = comma_value(S)
            text = string.gsub(text, S, replace)
        end
    end
    return text
end
if sampevcheck then

    function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
        text = separator(text)
        title = separator(title)
        return {dialogId, style, title, button1, button2, text}
    end

    function sampev.onServerMessage(color, text)
        text = separator(text)
        return {color, text}
    end

    function sampev.onCreate3DText(id, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, text)
        text = separator(text)
        return {id, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, text}
    end

    function sampev.onDisplayGameText(style,time,text)
        text = separator(text)
        return {style,time,text}
    end

    function sampev.onShowTextDraw(id, data)
        data.text = separator(data.text)
        return {id,data}
    end
    
end
?
 
  • Ха-ха
Реакции: YarikVL

YarikVL

Известный
Автор темы
Проверенный
4,826
1,834
Пришлось)))
а разница есть :
Lua:
script_author("Royan_Millans")
require 'lib.moonloader'
local sampevcheck, sampev = pcall(require, "lib.samp.events")

function main()
    if sampevcheck == false then
        sampAddChatMessage("[Money Separator] Îòñóòñâóòåò áèáëèîòåêà SAMP LUA.", -1)
        sampAddChatMessage("[Money Separator] Ñêðèïò íå ìîæåò ïðîäîëæèòü ðàáîòó.", -1)
        thisScript():unload()
    end
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do
        wait(0)
    end
    wait(-1)
end

function comma_value(n)
    local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$')
    return left..(num:reverse():gsub('(%d%d%d)','%1,'):reverse())..right
end

function separator(text)
    if text:find("$") then
        for S in string.gmatch(text, "%$%d+") do
            local replace = comma_value(S)
            text = string.gsub(text, S, replace)
        end
        for S in string.gmatch(text, "%d+%$") do
            S = string.sub(S, 0, #S-1)
            local replace = comma_value(S)
            text = string.gsub(text, S, replace)
        end
    end
    return text
end
if sampevcheck then

    function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
        text = separator(text)
        title = separator(title)
        return {dialogId, style, title, button1, button2, text}
    end

    function sampev.onServerMessage(color, text)
        text = separator(text)
        return {color, text}
    end

    function sampev.onCreate3DText(id, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, text)
        text = separator(text)
        return {id, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, text}
    end

    function sampev.onDisplayGameText(style,time,text)
        text = separator(text)
        return {style,time,text}
    end

    function sampev.onShowTextDraw(id, data)
        data.text = separator(data.text)
        return {id,data}
    end
   
end
?
Не хотел изучать скрипт другого автора ( не много, но всё же ), проще было сделать свой. Ну и не додумался дописать его скрипт))
 

SummerSouL

Известный
85
39
Скрипт ништяк, всё чётко, проверил на сборке, работает.
Пните, пожалуйста, когда сделают на лаунчер. Будет вообще огонь.
 
  • Нравится
Реакции: YarikVL

YarikVL

Известный
Автор темы
Проверенный
4,826
1,834
А тут 2 скрипта в одном или только на лавках работает? Было б круто 2 в 1
Было бы два отдельных скрипта то в теме был и второй....
Две функции в одном скрипте.

скрипт не рабочий или что? Не понял твоего коммента.
Шутки короче, скрипт работает. Ток на лаунчере не работает
 
  • Влюблен
Реакции: markiz.desead

b1coo

Участник
56
16
хз как, но на лаунчере у меня все норм, никаких варнингов
 

Вложения

  • Grand Theft Auto  San Andreas Screenshot 2022.05.30 - 21.06.37.66 (2).png
    Grand Theft Auto San Andreas Screenshot 2022.05.30 - 21.06.37.66 (2).png
    32.4 KB · Просмотры: 360
  • Нравится
Реакции: YarikVL

YarikVL

Известный
Автор темы
Проверенный
4,826
1,834
хз как, но на лаунчере у меня все норм, никаких варнингов
Короче послушал Vespan и сделал как он предложил. Работает без фризов и крашей. Как только тестану ( или @FSA. тестанёт ) на лаунчере - выложу эту новую версию.
 
  • Влюблен
Реакции: Улиточка

YarikVL

Известный
Автор темы
Проверенный
4,826
1,834
Доброго времени суток)
Решил написать разделение цен в трейде и в лавках. Именно не в диалогах, а в лавках ( под иконкой товара ) и в трейде. Чтобы проще было понять что это и как оно работает приложу скрины.
Написал этот скрипт так как проще будет понимать цены в лавках ( а не стоять минуту и курсором считать большие суммы ). И ещё причиной стало то что мне во время покупки в лавке большего количества Видеокарт подкинули одну не за 15кк, а за 150кк ( деньги мне вернули ), с этим скриптом можно будет покупать быстрее и не бояться что ты купишь дорого.
На счет благодарностей: Спасибо @Yondime за подсказку, @chapo за помощь с работой с текстдравами и таблицей, @FSA. за тесты и скрины, @Vespan за готовый код)).

Требование: moonloader, samp events, удалить все скрипты которые разделяют цены ( просто иногда может багаться ), не лаунчер ( у кого-то может работать, тестите сами у себя )
Активация: /mscr ( Команда включает или отключает функцию разделение цен в текстдравах, проще говоря в трейде или лавках, по умолчанию всё включено )

1. На лаунчере не у всех работает, могут лететь варнинги в чате и пропадут цены: Посмотреть вложение 149682
2. Если будут какие-то баги с разделением попробуйте изменить названия поставив этот знак: ! перед названием этого скрипта или букву zzz ( любое сходство с реальностью не правда ). Если не получится - попробуйте удалить другие скрипты с разделением цен.
3. Если будут другие баги в скрипте - то напишите в тему.

Если у вас не работает мой скрипт - то приложите файл moonloader.log ( .log может быть не видно ) из папки moonloader.

Теперь не будет лагать игра при открытии каких-то текстдравов. А так же тут встроен этот разделитель сумм. Автор основы: Royan_Millians и сделал: Vespan
Новая версия: money_separator.lua старую удаляйте, при переносе в папку moonloader подтверждайте замену ( если не говорит об замене то просто перекидываете в папку moonloader ). В скрипте дописал несколько строчек ( у Vespan`а скопировал и вставил ), начальный скрипт вот.
 
  • Нравится
Реакции: SummerSouL