не работает text:find/match/gmatch

copypaste_scripter

Известный
Автор темы
1,295
249
Версия MoonLoader
.026-beta
написал для себя выставку товаров потому что в скриптах нет функции сохранения продажи после перезахода, каждый раз выбрать надо что продавать. а палатку купить не могу (да и не факт что там есть такая функция).

короче все работает круто и как должно, просто цену не ставит который должен. на 407 линии код для выставки или вот в спойлер. ставит на все товары одно и ту же цену
уже 3ый день пытаюсь дописать и ничего не выходит, дайте хоть совет пожалуйста

Lua:
-- ставка цен (надо активировать команду для переменной - vistavka)
    if id == 3060 and vistavka then
        for t, p in pairs(mysell) do
            --lua_thread.create(function()
                if text:gmatch(t) and vistavka then
                    lua_thread.create(function()
                        wait(100)
                        sampSendDialogResponse(3060, 1, 0, p)
                    end)
                else--[[if not text:gmatch(t) and vistavka then]]
                    lua_thread.create(function()
                        wait(30)
                        sampSendDialogResponse(3060, 0, 0, false)
                    end)
                end
           -- end)
        end
    end

72-398 линии просто скипайте, это для перехода страниц

Lua:
-- библиотеки
require "lib.moonloader"
local sampev = require "lib.samp.events"
local keys = require "vkeys"

local mysell = {
    ["Метла"] = "1500999",
    ["Хотдог"] = "1400999",
    ["Монокль"] = "1300999"   
}

-- vars
local lavka_name = "Sell"
local lavka_color = 1
local lavka_type = 0
local vistavka = true
local sell_scan = false
local delay1 = 400
local delay2 = 1500
local delay3 = 1500
local delayx = 500

-- переменные
local lavka_colors = {"{E94E4E}", "{E94EC0}", "{B64EE9}", "{664EE9}", "{4E9EE9}", "{4ED7E9}", "{4EE9A4}", "{4EE960}", "{9EE94E}", "{D2E94E}", "{E9BD4E}", "{E9854E}", "{A63030}", "{303FA6}", "{30A641}", "{FFFFFF}"}
local page, lastpage = 0, 0
local tovar_kolvo = 0
local tovar_pages = 0
local vistavka_launch = false
local gonext = false

-- main
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(tonumber(delay2)) end

    --if not doesDirectoryExist(getWorkingDirectory().."/config/MyLavka") then createDirectory("moonloader\\config\\MyLavka") end
    --if not doesFileExist("moonloader/config/MyLavka/mylavka.ini") or not doesFileExist("moonloader/config/MyLavka/tovar_sell.ini") or not doesFileExist("moonloader/config/MyLavka/tovar_buy.ini") then inicfg.save(settings, "MyLavka\\mylavka") inicfg.save(tovar_sell, "MyLavka\\tovar_sell") inicfg.save(tovar_buy, "MyLavka\\tovar_buy") end

    -- проверить в чате перезапуски скрипта
    sampAddChatMessage("{80ff80}My Lavka", -1)

    -- добавление команд
    sampRegisterChatCommand("sellscan", function()
        sell_scan = not sell_scan
        sampAddChatMessage("{80ff80}Сканирование " .. tostring(sell_scan), -1)
    end)
    sampRegisterChatCommand("autoprice", function()
        vistavka = not vistavka
        sampAddChatMessage("{80ff80}Выставление " .. tostring(vistavka), -1)
    end)
    sampRegisterChatCommand("autosell", function()
        vistavka_launch = not vistavka_launch
        sampAddChatMessage("{80ff80}Выставление " .. tostring(vistavka_launch), -1)
    end)

    sampRegisterChatCommand("raz", function(tovar_kolvo1)
        lua_thread.create(function()
        tovar_kolvo = tonumber(tovar_kolvo1)
        tovar_pages = math.ceil(tonumber(tovar_kolvo) / 19)
        sampAddChatMessage("{80ff80}Выставить {ff00ff}" .. tovar_kolvo .. " {80ff80}товаров на {ff00ff}" .. tovar_pages .. "{80ff80} страниц.", -1)
        end)
    end)
    
    while true do
        wait(0)

        -- перейти на следующую страницу (надо активировать команду для переменной - vistavka)
        if not sampIsChatInputActive() and sampIsDialogActive(3050) and vistavka and isKeyJustPressed(VK_NUMPAD3) then
            sampSendDialogResponse(3050, 1, 20, false)
        end

        if vistavka and vistavka_launch then
            if tovar_kolvo < 20 then
                for i = 1, tonumber(tovar_kolvo) do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                vistavka_launch = false
            elseif 19 < tovar_kolvo and tovar_kolvo < 39 then
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, tonumber(tovar_kolvo)-19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                vistavka_launch = false
            elseif 38 < tovar_kolvo and tovar_kolvo < 58 then
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, tonumber(tovar_kolvo)-38 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                vistavka_launch = false
            elseif 57 < tovar_kolvo and tovar_kolvo < 77 then
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, tonumber(tovar_kolvo)-57 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                vistavka_launch = false
            elseif 76 < tovar_kolvo and tovar_kolvo < 96 then
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, tonumber(tovar_kolvo)-76 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                vistavka_launch = false
            elseif 95 < tovar_kolvo and tovar_kolvo < 115 then
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, tonumber(tovar_kolvo)-95 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                vistavka_launch = false
            elseif 114 < tovar_kolvo and tovar_kolvo < 134 then
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, tonumber(tovar_kolvo)-114 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                vistavka_launch = false
            elseif 133 < tovar_kolvo and tovar_kolvo < 153 then
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, 19 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(tonumber(delay1))
                for i = 1, tonumber(tovar_kolvo)-133 do
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(tonumber(delay1))
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(tonumber(delay2))
                end
                vistavka_launch = false
            end
        end

    end
end

-- sampev
function sampev.onShowDialog(id, style, title, button1, button2, text)  --  sampSendDialogResponse(int id, int button, int listitem, zstring input)

    -- ставка цен (надо активировать команду для переменной - vistavka)
    if id == 3060 and vistavka then
        for t, p in pairs(mysell) do
            --lua_thread.create(function()
                if text:gmatch(t) and vistavka then
                    lua_thread.create(function()
                        wait(100)
                        sampSendDialogResponse(3060, 1, 0, p)
                    end)
                else--[[if not text:gmatch(t) and vistavka then]]
                    lua_thread.create(function()
                        wait(30)
                        sampSendDialogResponse(3060, 0, 0, false)
                    end)
                end
           -- end)
        end
    end



    -- если надо указать количество в ручную
    --[[if id == 3060 and text:find("Введите количество и цену за один товар") and not vistavka then
        lua_thread.create(function()
            wait(tonumber(delay2))
            sampSetCurrentDialogEditboxText(",100")
        end)
    end ]]       
    
    
--[[
    -- сканирование предметов для продажи (надо активировать команду для переменной - sell_scan)
    if id == 3040 and text:find("Выставить товар на продажу") and sell_scan then
        sampSendDialogResponse(id, 1, 0, false)
        return false
    end

    -- сканирование предметов для продажи
    if id == 3050 and title:find("Страница %d%/%d") and sell_scan then
        page, lastpage = title:match("Страница (%d)%/(%d)")
        if page == lastpage then
            sell_scan = false
            sampSendDialogResponse(id, 0, 0, false)
        else
            sampSendDialogResponse(id, 1, 20, false)
            return false
        end
    end
]]
    -- аренда лавки
    if id == 3010 and text:find("Стоимость аренды лавки") then
        sampSendDialogResponse(id, 1, 0, false)
        return false
    end

    -- настройка лавки
    if id == 3030 and title:find("Выберете цвет") then
        sampSendDialogResponse(3030, 1, lavka_color, false)
        return false
    end
    if id == 3021 and title:find("Выберите тип вашей лавки") then
        sampSendDialogResponse(id, 1, lavka_type, false) --  0 продавать 1 покупать
        return false
    end
    if id == 3020 and text:find("Введите название вашей лавки") then
        sampSendDialogResponse(id, 1, 0, lavka_name)
        sampAddChatMessage("{80ff80}Название лавки: " .. lavka_colors[tonumber(lavka_color) + 1] .. lavka_name, -1)
        return false
    end

end
 
  • Эм
Реакции: Lance_Sterling
Решение
Главное чтоб заработало
1680390383725.png

сделал так и работает теперь

copypaste_scripter

Известный
Автор темы
1,295
249
У тебя в поиске стоит Text, а бегаешь по букве t
Lua:
local mysell = {
    ["Метла"] = "1500999",
    ["Хотдог"] = "1400999",
    ["Монокль"] = "1300999"
}
text = "Монокль"
for t, p in pairs(mysell) do
 if t:find(text) then
  print(p)
 end
end
т и п переменные для списка таблицы