помогите сократить код

copypaste_scripter

Известный
Автор темы
1,218
223
Версия MoonLoader
.026-beta
Lua:
        if settings.main.vistavka and vistavka_launch then
            if tovar_kolvo <= 19 then
                for i = 1, tonumber(tovar_kolvo) do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100) 
                end
                vistavka_launch = false
            elseif 19 < tovar_kolvo and tovar_kolvo < 39 then
                for i = 1, 19 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100) 
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(30)
                for i = 1, tonumber(tovar_kolvo)-19 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100) 
                end
                vistavka_launch = false
            end
        end
 

why ega

РП игрок
Модератор
2,540
2,233
Lua:
        if settings.main.vistavka and vistavka_launch then
            if tovar_kolvo <= 19 then
                for i = 1, tonumber(tovar_kolvo) do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100)
                end
                vistavka_launch = false
            elseif 19 < tovar_kolvo and tovar_kolvo < 39 then
                for i = 1, 19 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100)
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(30)
                for i = 1, tonumber(tovar_kolvo)-19 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100)
                end
                vistavka_launch = false
            end
        end
первое, что приходит на ум - выделить повторяющийся код в функцию
Lua:
if settings.main.vistavka and vistavka_launch then
    if tovar_kolvo <= 19 then
        for i = 1, tonumber(tovar_kolvo) do
            foo(i)
        end
        vistavka_launch = false
    elseif 19 < tovar_kolvo and tovar_kolvo < 39 then
        for i = 1, 19 do
            foo(i)
        end
        sampSendDialogResponse(3050, 1, 20, false)
        wait(30)
        for i = 1, tonumber(tovar_kolvo)-19 do
            foo(i)
        end
        vistavka_launch = false
    end
end

function foo(i)
    lua_thread.create(function()
        wait(30)
        sampSendDialogResponse(3040, 1, 0, false)
        wait(0)
        sampSendDialogResponse(3050, 1, i-1, false)
        wait(100)
    end)
end
 
  • Нравится
Реакции: copypaste_scripter

copypaste_scripter

Известный
Автор темы
1,218
223
первое, что приходит на ум - выделить повторяющийся код в функцию
а что если дальше идут вот такие строки

Lua:
        if settings.main.vistavka and vistavka_launch then
            if tovar_kolvo <= 19 then
                for i = 1, tonumber(tovar_kolvo) do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100) 
                end
                vistavka_launch = false
            elseif 19 < tovar_kolvo and tovar_kolvo < 39 then
                for i = 1, 19 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100) 
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(30)
                for i = 1, tonumber(tovar_kolvo)-19 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100) 
                end
                vistavka_launch = false
            elseif 39 < tovar_kolvo and tovar_kolvo < 57 then
                for i = 1, 19 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100) 
                end
                sampSendDialogResponse(3050, 1, 20, false)
                for i = 1, 19 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100) 
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(30)
                for i = 1, tonumber(tovar_kolvo)-38 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100) 
                end
                vistavka_launch = false
            end
        end
 

why ega

РП игрок
Модератор
2,540
2,233
а что если дальше идут вот такие строки

Lua:
        if settings.main.vistavka and vistavka_launch then
            if tovar_kolvo <= 19 then
                for i = 1, tonumber(tovar_kolvo) do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100)
                end
                vistavka_launch = false
            elseif 19 < tovar_kolvo and tovar_kolvo < 39 then
                for i = 1, 19 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100)
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(30)
                for i = 1, tonumber(tovar_kolvo)-19 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100)
                end
                vistavka_launch = false
            elseif 39 < tovar_kolvo and tovar_kolvo < 57 then
                for i = 1, 19 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100)
                end
                sampSendDialogResponse(3050, 1, 20, false)
                for i = 1, 19 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100)
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(30)
                for i = 1, tonumber(tovar_kolvo)-38 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100)
                end
                vistavka_launch = false
            end
        end
везде, где есть
Lua:
wait(30)
sampSendDialogResponse(3040, 1, 0, false)
wait(0)
sampSendDialogResponse(3050, 1, i-1, false)
wait(100)
заменяешь на foo(i)
 
  • Нравится
Реакции: copypaste_scripter

Smeruxa

Известный
1,297
681
а что если дальше идут вот такие строки

Lua:
        if settings.main.vistavka and vistavka_launch then
            if tovar_kolvo <= 19 then
                for i = 1, tonumber(tovar_kolvo) do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100)
                end
                vistavka_launch = false
            elseif 19 < tovar_kolvo and tovar_kolvo < 39 then
                for i = 1, 19 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100)
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(30)
                for i = 1, tonumber(tovar_kolvo)-19 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100)
                end
                vistavka_launch = false
            elseif 39 < tovar_kolvo and tovar_kolvo < 57 then
                for i = 1, 19 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100)
                end
                sampSendDialogResponse(3050, 1, 20, false)
                for i = 1, 19 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100)
                end
                sampSendDialogResponse(3050, 1, 20, false)
                wait(30)
                for i = 1, tonumber(tovar_kolvo)-38 do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100)
                end
                vistavka_launch = false
            end
        end
Lua:
function did_dialog(from, to, boolean, i)
    if boolean then
        lua_thread.create(function()
            for i = from, to do
                wait(30)
                sampSendDialogResponse(3040, 1, 0, false)
                wait(0)
                sampSendDialogResponse(3050, 1, i - 1, false)
                wait(100)
            end
        end)
    end
end
пример

Lua:
if tovar_kolvo <= 19 then
                for i = 1, tonumber(tovar_kolvo) do
                    wait(30)
                    sampSendDialogResponse(3040, 1, 0, false)
                    wait(0)
                    sampSendDialogResponse(3050, 1, i-1, false)
                    wait(100)
                end
                vistavka_launch = false
           
-- в

did_dialog(1, tonumber(tovar_kolvo), tovar_kolvo <= 19, i)
 
  • Нравится
Реакции: copypaste_scripter

copypaste_scripter

Известный
Автор темы
1,218
223
Lua:
function did_dialog(from, to, boolean, i)
    if boolean then
        lua_thread.create(function()
            for i = from, to do
                wait(30)
                sampSendDialogResponse(3040, 1, 0, false)
                wait(0)
                sampSendDialogResponse(3050, 1, i - 1, false)
                wait(100)
            end
        end)
    end
end
проблема в том, что надо перейти на след странице после каждой 19 loop
 

copypaste_scripter

Известный
Автор темы
1,218
223
везде, где есть
Lua:
wait(30)
sampSendDialogResponse(3040, 1, 0, false)
wait(0)
sampSendDialogResponse(3050, 1, i-1, false)
wait(100)
заменяешь на foo(i)
ну да, я столько понял, просто думаю, что можно еще как то сократить

Lua:
if settings.main.vistavka and vistavka_launch then
    if tovar_kolvo <= 19 then
        for i = 1, tonumber(tovar_kolvo) do
            foo(i)
        end
        vistavka_launch = false
    elseif 19 < tovar_kolvo and tovar_kolvo < 39 then
        for i = 1, 19 do
            foo(i)
        end
        sampSendDialogResponse(3050, 1, 20, false)
        wait(30)
        for i = 1, tonumber(tovar_kolvo)-19 do
            foo(i)
        end
        vistavka_launch = false
    elseif 38 < tovar_kolvo and tovar_kolvo < 58 then
        for i = 1, 19 do
            foo(i)
        end
        sampSendDialogResponse(3050, 1, 20, false)
        for i = 1, 19 do
            foo(i)
        end
        sampSendDialogResponse(3050, 1, 20, false)
        wait(30)
        for i = 1, tonumber(tovar_kolvo)-38 do
            foo(i)
        end
        vistavka_launch = false
    elseif 57 < tovar_kolvo and tovar_kolvo < 77 then
        for i = 1, 19 do
            foo(i)
        end
        sampSendDialogResponse(3050, 1, 20, false)
        for i = 1, 19 do
            foo(i)
        end
        sampSendDialogResponse(3050, 1, 20, false)
        for i = 1, 19 do
            foo(i)
        end
        sampSendDialogResponse(3050, 1, 20, false)
        wait(30)
        for i = 1, tonumber(tovar_kolvo)-57 do
            foo(i)
        end
        vistavka_launch = false
    end
end

function foo(i)
    lua_thread.create(function()
        wait(30)
        sampSendDialogResponse(3040, 1, 0, false)
        wait(0)
        sampSendDialogResponse(3050, 1, i-1, false)
        wait(100)
    end)
end

это на 4-ом странице, а там еще 4 страниц надо добавить

добавь переменную next в ф-ю и если она true то next page
images


везде, где есть
Lua:
wait(30)
sampSendDialogResponse(3040, 1, 0, false)
wait(0)
sampSendDialogResponse(3050, 1, i-1, false)
wait(100)
заменяешь на foo(i)
хах, ты не заметил что тут
sampSendDialogResponse(3050, 1, i-1, false)
задается значение i
 
Последнее редактирование:
  • Эм
Реакции: Smeruxa

copypaste_scripter

Известный
Автор темы
1,218
223
Называть переменные транслитом это типо новый тренд такой?
переменные можно как угодно называть. тут скрипт который только для арз рп + для себя. не вижу смысла писать на англ
 

Lance_Sterling

Известный
798
278
переменные можно как угодно называть. тут скрипт который только для арз рп + для себя. не вижу смысла писать на англ
Я тоже, но как то блин хреново выглядит, транслитом это ж вообще 🐞