забрать текст

plohoy.

Известный
Автор темы
109
25
Версия MoonLoader
.026-beta
Вообщем из текста "Депозит в банке: $259740 (из них ушло.(тут ненужная хуйня)..)" нужно забрать число 259740 без знака $, но не нужно забирать все что идет после числа. Эти числа потом нужно будет использовать в дальнейшем
 
Решение
теперь вместо ошибки в консоль, в файл пишет "вы получили null$" вместо "вы получили 178510$"
Lua:
local s = require('samp.events')
local path = getGameDirectory()..'\\moonloader\\config\\txt.txt'
function s.onServerMessage(color, text)
    local money = string.match(text,'Депозит в банке: %$(%d+)')
    if money then
        sampAddChatMessage(money,-1)
        local f = io.open(path, 'w+')
        f:write('Ты получил '..money..' $'):close()
    end
end
Если все равно скажет null То значит что то ты делаешь не так :\

plohoy.

Известный
Автор темы
109
25
Это текст в чате, либо текст в диалоге?

Скинь фулл текст, это нужно, чтобы код работал идеально
Текст в чате, фулл текст: "Депозит в банке: $178510 (из них ушло в бюджет семьи: $1785)"
 

Rice.

Известный
Модератор
1,753
1,655
Lua:
local s = require('samp.events')
function s.onServerMessage(color, text)
    if text:find('^%s*Депозит в банке') then
        if text:find('из них ушло в бюджет семьи') then
            local money = text:match('^%s*Депозит в банке: $(.+) %(из')
            sampAddChatMessage(tostring(money), -1)
        else
            local money = text:match('^%s*Депозит в банке: $(.+)')
            sampAddChatMessage(tostring(money), -1)
        end
    end
end
 
Последнее редактирование:
  • Нравится
Реакции: plohoy.

qdIbp

Автор темы
Проверенный
1,450
1,190
Lua:
local s = require('samp.events')
function samp.onServerMessage(color, text)
    if text:find('^%s*Депозит в банке') then
        if text:find('из них ушло в бюджет семьи') then
            local money = text:match('^%s*Депозит в банке: $(.+) %(из')
            sampAddChatMessage(tostring(money), -1)
        else
            local money = text:match('^%s*Депозит в банке: $(.+)')
            sampAddChatMessage(tostring(money), -1)
        end
    end
end
Ты помойму перепутал переменные require и записи в функцию
 
  • Нравится
Реакции: Rice.

plohoy.

Известный
Автор темы
109
25
Lua:
local s = require('samp.events')
function s.onServerMessage(color, text)
    if text:find('^%s*Депозит в банке') then
        if text:find('из них ушло в бюджет семьи') then
            local money = text:match('^%s*Депозит в банке: $(.+) %(из')
            sampAddChatMessage(tostring(money), -1)
        else
            local money = text:match('^%s*Депозит в банке: $(.+)')
            sampAddChatMessage(tostring(money), -1)
        end
    end
end
не работает, ввожу и "Депозит в банке: $178510" и "Депозит в банке: $178510 (из них ушло в бюджет семьи: $1785)", а не выводит ничего
 

qdIbp

Автор темы
Проверенный
1,450
1,190
не работает, ввожу и "Депозит в банке: $178510" и "Депозит в банке: $178510 (из них ушло в бюджет семьи: $1785)", а не выводит ничего
Попробуй

Lua:
local s = require('samp.events')
function s.onServerMessage(color, text)
    local money = string.match(text,'%Lепозит в банке: $(%d+)')
    if money then
        sampAddChatMessage(money,-1)
    end
end
 
  • Нравится
Реакции: plohoy.

plohoy.

Известный
Автор темы
109
25
Попробуй

Lua:
local s = require('samp.events')
function s.onServerMessage(color, text)
    local money = string.match(text,'%Lепозит в банке: $(%d+)')
    if money then
        sampAddChatMessage(money,-1)
    end
end
почему если выводить в чат, то оно работает, а если в file:write, то пишет "attempt to concatenate global 'money' (a nil value)
stack traceback:" ?
 

qdIbp

Автор темы
Проверенный
1,450
1,190
Lua:
local s = require('samp.events')
local path = getGameDirectory()..'\\moonloader\\config\\txt.txt'
function s.onServerMessage(color, text)
    local money = string.match(text,'%Lепозит в банке: $(%d+)')
    if money then
        sampAddChatMessage(money,-1)
        local f = io.open(path, 'w+')
        f:write(encodeJson(tonumber(money))):close()
    end
end

Можешь без tonumber
 

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,652
2,550
Lua:
local s = require('samp.events')
local path = getGameDirectory()..'\\moonloader\\config\\txt.txt'
function s.onServerMessage(color, text)
    local money = string.match(text,'%Lепозит в банке: $(%d+)')
    if money then
        sampAddChatMessage(money,-1)
        local f = io.open(path, 'w+')
        f:write(encodeJson(tonumber(money))):close()
    end
end

Можешь без tonumber
Символ доллара нужно экранировать
 

plohoy.

Известный
Автор темы
109
25
Lua:
local s = require('samp.events')
local path = getGameDirectory()..'\\moonloader\\config\\txt.txt'
function s.onServerMessage(color, text)
    local money = string.match(text,'%Lепозит в банке: $(%d+)')
    if money then
        sampAddChatMessage(money,-1)
        local f = io.open(path, 'w+')
        f:write(encodeJson(tonumber(money))):close()
    end
end

Можешь без tonumber
теперь вместо ошибки в консоль, в файл пишет "вы получили null$" вместо "вы получили 178510$"
 

qdIbp

Автор темы
Проверенный
1,450
1,190
теперь вместо ошибки в консоль, в файл пишет "вы получили null$" вместо "вы получили 178510$"
Lua:
local s = require('samp.events')
local path = getGameDirectory()..'\\moonloader\\config\\txt.txt'
function s.onServerMessage(color, text)
    local money = string.match(text,'Депозит в банке: %$(%d+)')
    if money then
        sampAddChatMessage(money,-1)
        local f = io.open(path, 'w+')
        f:write('Ты получил '..money..' $'):close()
    end
end
Если все равно скажет null То значит что то ты делаешь не так :\
 
  • Нравится
Реакции: plohoy.

plohoy.

Известный
Автор темы
109
25
Lua:
local s = require('samp.events')
local path = getGameDirectory()..'\\moonloader\\config\\txt.txt'
function s.onServerMessage(color, text)
    local money = string.match(text,'Депозит в банке: %$(%d+)')
    if money then
        sampAddChatMessage(money,-1)
        local f = io.open(path, 'w+')
        f:write('Ты получил '..money..' $'):close()
    end
end
Если все равно скажет null То значит что то ты делаешь не так :\
заработало, спасибо
 
  • Эм
Реакции: qdIbp