все еще вожусь с числом из диалога

shizzard

Участник
Автор темы
150
7
Версия MoonLoader
.026-beta
1616330990428.png
Lua:
 function sampev.onShowDialog(dId,s,t,b1,b2,text)
    if dId == 0 then
        for line in text:gmatch("[^\n]+") do
               print(line)
                 if line:find(" - Полиция LS: .*") then
        money = line:match(" - Полиция LS: .*") -- a
        clear_money = money:gsub(' - Полиция LS: ' , ''):gsub('%.',''):gsub('%s','')  -- b
        print(clear_money)
        local int_money = tonumber(clear_money) -- c
        sampAddChatMessage(int_money,0xFFF000) -- c
    end
end
end
end
а нужно вырвать число, сделать из него число ( инт ) , потом уже операции сам буду делать
 
Решение
mini bugfix gusb-gsub , + title, не осуждаю за это, спасибо что помог но,
нужно получить в отдельные переменные эти числа, чтобы отнять их от Посмотреть вложение 90155
например
izlishek = money-10.500.000
if izlishek < 0 then
math.abs(izlishek)
else
print(izlishek)
надеюсь ты понял, прошу помоги
так же , где можно преисполниться в знаниях lua, кроме blast hack wikii
Код:
Мин.Юстиции: 10.500.000$
Автошкола: 8.000.000$
СМИ: 9.000.000$
Мин.Обороны: 11.500.000$
Правительство: 10.000.000$
Мин.Здрав.: 7.500.000$
ТСР: 8.500.000$
Центральный Банк: неограниченно
Страховая компания: 8.000.000$
так делай обычный string.match и получай числа

Hatiko

Известный
Проверенный
1,470
612
1. Не желательно использовать сравнение с ID диалога, т.к. они периодически меняются и могут быть одинаковыми. Лучше делать поиск по контексту диалога или титульника.
2. Для математических действий число типа string не обязательно конвертировать в целочисленное,т.к. при самой математической операции строка автоматически конвертируется в число.
3. При использовании match необходимо заключать в скобки объекты поиска, которые необходимо вытащить по шаблону. Иначе функция просто вернут всю строку.
4. Не забывай про hex теги цветов, типа {FFFFFF}, которые используются в диалогах. Я их ниже обозначил как {......}
Приблизительно такой такой код:
Lua:
function sampev.onShowDialog(dId,s,t,b1,b2,text)
    if t:find("Баланс Франкций") then
        for line in text:gmatch("[^\r\n]+") do
               print(line)
            if line:find("- [а-яА-Я%a%s]+: {......}[%d.]+") then
                local frac, money = line:match("- ([а-яА-Я%a%s]+): {......}([%d.]+)")
                money = money:gusb("%.", "")
                sampAddChatMessage(frac.."; money: "..money, 0xFFF000)
            end
        end
    end
end

И ещё, соблюдайте пожалуйста табуляцию. Она делает код не только красивым, но и читабельным. Иногда просто могут отказать в помощи, если не соблюдается табуляция в больших фрагментах кода.
 

shizzard

Участник
Автор темы
150
7
1. Не желательно использовать сравнение с ID диалога, т.к. они периодически меняются и могут быть одинаковыми. Лучше делать поиск по контексту диалога или титульника.
2. Для математических действий число типа string не обязательно конвертировать в целочисленное,т.к. при самой математической операции строка автоматически конвертируется в число.
3. При использовании match необходимо заключать в скобки объекты поиска, которые необходимо вытащить по шаблону. Иначе функция просто вернут всю строку.
4. Не забывай про hex теги цветов, типа {FFFFFF}, которые используются в диалогах. Я их ниже обозначил как {......}
Приблизительно такой такой код:
Lua:
function sampev.onShowDialog(dId,s,t,b1,b2,text)
    if t:find("Баланс Франкций") then
        for line in text:gmatch("[^\r\n]+") do
               print(line)
            if line:find("- [а-яА-Я%a%s]+: {......}[%d.]+") then
                local frac, money = line:match("- ([а-яА-Я%a%s]+): {......}([%d.]+)")
                money = money:gusb("%.", "")
                sampAddChatMessage(frac.."; money: "..money, 0xFFF000)
            end
        end
    end
end

И ещё, соблюдайте пожалуйста табуляцию. Она делает код не только красивым, но и читабельным. Иногда просто могут отказать в помощи, если не соблюдается табуляция в больших фрагментах кода.
mini bugfix gusb-gsub , + title, не осуждаю за это, спасибо что помог но,
нужно получить в отдельные переменные эти числа, чтобы отнять их от
1616334714683.png

например
izlishek = money-10.500.000
if izlishek < 0 then
math.abs(izlishek)
else
print(izlishek)
надеюсь ты понял, прошу помоги
так же , где можно преисполниться в знаниях lua, кроме blast hack wikii
Код:
Мин.Юстиции: 10.500.000$
Автошкола: 8.000.000$
СМИ: 9.000.000$
Мин.Обороны: 11.500.000$
Правительство: 10.000.000$
Мин.Здрав.: 7.500.000$
ТСР: 8.500.000$
Центральный Банк: неограниченно
Страховая компания: 8.000.000$
 

meowprd

Тот самый Котовский
Проверенный
1,280
712
mini bugfix gusb-gsub , + title, не осуждаю за это, спасибо что помог но,
нужно получить в отдельные переменные эти числа, чтобы отнять их от Посмотреть вложение 90155
например
izlishek = money-10.500.000
if izlishek < 0 then
math.abs(izlishek)
else
print(izlishek)
надеюсь ты понял, прошу помоги
так же , где можно преисполниться в знаниях lua, кроме blast hack wikii
Код:
Мин.Юстиции: 10.500.000$
Автошкола: 8.000.000$
СМИ: 9.000.000$
Мин.Обороны: 11.500.000$
Правительство: 10.000.000$
Мин.Здрав.: 7.500.000$
ТСР: 8.500.000$
Центральный Банк: неограниченно
Страховая компания: 8.000.000$
так делай обычный string.match и получай числа
 

shizzard

Участник
Автор темы
150
7
так делай обычный string.match и получай числа
?
Lua:
function sampev.onShowDialog(dId,s,t,b1,b2,text)
    if t:find("Информация") then
        for line in text:gmatch("[^\r\n]+") do
               print(line)
            if line:find("- [а-яА-Я%a%s]+: {......}[%d.]+") then
                local frac, money = line:match("- ([а-яА-Я%a%s]+): {......}([%d.]+)")
                money = money:gsub("%.", "")
                sampAddChatMessage(frac.."; money: "..money, 0xFFF000)
            end
        end
    end
end
 

Hatiko

Известный
Проверенный
1,470
612
Lua:
norms = {
    ["Полиция LS"] = 10500000,
    ["RCSD"] = 10500000,
    ["Radio LS"] = 9000000,
    ["Автошкола"] = 8000000
    -- И так далее. Названия из статы берутся. Можно дополнительно указывать корректное название для фраки
    -- присваивая каждой таблицу с нормой и другим названием.
}

function sampev.onShowDialog(dId,s,t,b1,b2,text)
    if t:find("Информация") then
        for line in text:gmatch("[^\r\n]+") do
               print(line)
            if line:find("- [а-яА-Я%a%s]+: {......}[%d.]+") then
                local frac, money = line:match("- ([а-яА-Я%a%s]+): {......}([%d.]+)")
                money = tonumber(money:gsub("%.", "")) -- А вот для сравнения нужно конвертировать
                if norms[frac] and norms[frac] > money then
                    local overage = norms[frac] - money
                    sampAddChatMessage("У организации "..frac.."превышена норма казны на "..overage, 0xFFF000)
                end
            end
        end
    end
end


так же , где можно преисполниться в знаниях lua, кроме blast hack wikii
Для написания скриптов достаточно базовых знаний языка. На вики только ты функции можешь посмотреть.
Для развития необходимо просто изучать чужие открытые скрипты, исследовать их принцип работы, что за что отвечает, самостоятельно экспериментировать и не заостряться на одной вещи, не знаешь как сделать, попробуй приблизительно другое сделать, и проблема раскроется. Ну и умение составлять алгоритмы, которые ты хочешь получить, то что тебе надо подтянуть, ибо ты задал вопрос и на него же ответил по сути сразу, грубо говоря, ты взял гвоздь и молоток, но не знал что с ними делать.