SA:MP sampShowDialog

Ancwork

Участник
Автор темы
76
10
Версия SA-MP
  1. Любая
Нужно что бы перед каждой командой появлялась табличка с вводом ID помогите пж :D

Lua:
function mvd()
    lua_thread.create(function() -- Создаем новый поток
    wait(100) -- Ждём 5 секунд
sampShowDialog(6405, "{006AFF}MVD Helper", "\n 1 [MVD] Представиться \n 2. [MVD] Взял документы \n 3. [MVD] Надеть наручники \n", "Закрыть", nil, 2)
    while sampIsDialogActive(6405) do wait(100) end
    local _, button, list, _ = sampHasDialogRespond(6405)
    if list == 0 then
    sampSendChat('Здравия желаю, Вас беспокоит '..ini.player.rang..' "'..ini.player.department..'" - '..ini.player.name..'.')
    wait(750)
    sampSendChat('/me отдал честь')
    wait(750)
    sampSendChat('/anim 1 7')
    wait(750)
    sampSendChat('/doc') - Команда которая должна получить ID
   wait(750)
    sampSendChat('/me достал из нагрудного кармана удостоверение и предъявил его')
    wait(750)
    sampSendChat('/anim 6 3')
    wait(750)
    sampSendChat('Будьте добры предъявить ваши документы.')
    wait(750)
    sampSendChat("/n /pass [id]")
     elseif list == 1 then
    sampSendChat('/me взял документы у человека напротив')
    wait(750)
    sampSendChat('/do Документы в руке.')
    wait(750)
    sampSendChat('/me осмотрел паспорт')
    wait(750)
    sampSendChat('/me закрыл документы')
    wait(750)
    sampSendChat('/do Документы закрыты.')
    wait(750)
    sampSendChat('/me вернул документы человеку напротив')
    wait(750)
    sampSendChat('/anim 6 3')
     elseif list == 2 then
    sampSendChat('/do Наручники в руке.')
    wait(700)
    sampSendChat('/me надел наручники на человека напротив')
     elseif list == 3 then
    sampSendChat('/me схватил задержанного за руки')
    wait(700)
    sampSendChat('/me заломал задержанного и повёл задержанного')
    wait(700)
    sampSendChat('/cuff') -Команда которая должна получить ID
 
Решение
Lua:
function mvd()
    lua_thread.create(function() -- Создаем новый поток
        wait(100) -- Ждём 5 секунд
        sampShowDialog(6405, "{006AFF}MVD Helper", "\n 1 [MVD] Представиться \n 2. [MVD] Взял документы \n 3. [MVD] Надеть наручники \n 4. [MVD] Вести за собой", "Закрыть", nil, 2)
        while sampIsDialogActive(6405) do wait(100) end
        local _, button, list, _ = sampHasDialogRespond(6405)
        if list == 0 then
            sampShowDialog(111, "заголовок", "введите ид", "кнопка 1", "кнопка 2", 1)
            while sampIsDialogActive(111) do wait(0) end
            local result, button, list, input = sampHasDialogRespond(111)
            if result then
                local id = tonumber(input)
                if id ~= nil then...

woodware

Потрачен
Проверенный
5,057
1,464
Lua:
if list == 0 then -- и для остальных результатов соответственно
    sampShowDialog(111, "заголовок", "введите ид", "кнопка 1", "кнопка 2", 1)
    while sampIsDialogActive(111) do wait(0) end
    local result, button, list, input = sampHasDialogRespond(111)
    if result then
        local id = tonumber(input)
        if id ~= nil then
            sampSendChat("/cuff " .. id)
            -- остальные действия
        end
    end
end
 

Ancwork

Участник
Автор темы
76
10
Lua:
if list == 0 then -- и для остальных результатов соответственно
    sampShowDialog(111, "заголовок", "введите ид", "кнопка 1", "кнопка 2", 1)
    while sampIsDialogActive(111) do wait(0) end
    local result, button, list, input = sampHasDialogRespond(111)
    if result then
        local id = tonumber(input)
        if id ~= nil then
            sampSendChat("/cuff " .. id)
            -- остальные действия
        end
    end
end
Допустим, что я сделал не так
Lua:
    sampShowDialog(111, "заголовок", "введите ид", "кнопка 1", "кнопка 2", 1)
    while sampIsDialogActive(111) do wait(0) end
    local result, button, list, input = sampHasDialogRespond(111)
    if result then
    local id = tonumber(input)
    if id ~= nil then
    sampSendChat('Здравия желаю, Вас беспокоит '..ini.player.rang..' "'..ini.player.department..'" - '..ini.player.name..'.')
    wait(750)
    sampSendChat('/me отдал честь')
    wait(750)
    sampSendChat('/anim 1 7')
    wait(750)
    sampSendChat('/me достал из нагрудного кармана удостоверение и предъявил его')
    wait(750)
    sampSendChat('/pass' ..id)
    wait(750)
    sampSendChat('/anim 6 3')
    wait(750)
    sampSendChat('Будьте добры предъявить ваши документы.')
    wait(750)
    sampSendChat("/n /pass [id]")
 

woodware

Потрачен
Проверенный
5,057
1,464
Допустим, что я сделал не так
Lua:
    sampShowDialog(111, "заголовок", "введите ид", "кнопка 1", "кнопка 2", 1)
    while sampIsDialogActive(111) do wait(0) end
    local result, button, list, input = sampHasDialogRespond(111)
    if result then
    local id = tonumber(input)
    if id ~= nil then
    sampSendChat('Здравия желаю, Вас беспокоит '..ini.player.rang..' "'..ini.player.department..'" - '..ini.player.name..'.')
    wait(750)
    sampSendChat('/me отдал честь')
    wait(750)
    sampSendChat('/anim 1 7')
    wait(750)
    sampSendChat('/me достал из нагрудного кармана удостоверение и предъявил его')
    wait(750)
    sampSendChat('/pass' ..id)
    wait(750)
    sampSendChat('/anim 6 3')
    wait(750)
    sampSendChat('Будьте добры предъявить ваши документы.')
    wait(750)
    sampSendChat("/n /pass [id]")
прикрепи полный код
 

Ancwork

Участник
Автор темы
76
10
прикрепи полный код
Lua:
function mvd()
    lua_thread.create(function() -- Создаем новый поток
    wait(100) -- Ждём 5 секунд
sampShowDialog(6405, "{006AFF}MVD Helper", "\n 1 [MVD] Представиться \n 2. [MVD] Взял документы \n 3. [MVD] Надеть наручники \n", "Закрыть", nil, 2)
    while sampIsDialogActive(6405) do wait(100) end
    local _, button, list, _ = sampHasDialogRespond(6405)
if list == 0 then -- и для остальных результатов соответственно
    sampShowDialog(111, "заголовок", "введите ид", "кнопка 1", "кнопка 2", 1)
    while sampIsDialogActive(111) do wait(0) end
    local result, button, list, input = sampHasDialogRespond(111)
    if result then
        local id = tonumber(input)
        if id ~= nil then
    sampSendChat('Здравия желаю, Вас беспокоит '..ini.player.rang..' "'..ini.player.department..'" - '..ini.player.name..'.')
    wait(750)
    sampSendChat('/me отдал честь')
    wait(750)
    sampSendChat('/anim 1 7')
    wait(750)
    sampSendChat('/me достал из нагрудного кармана удостоверение и предъявил его')
    wait(750)
    sampSendChat('/pass' ..id)
    wait(750)
    sampSendChat('/anim 6 3')
    wait(750)
    sampSendChat('Будьте добры предъявить ваши документы.')
    wait(750)
    sampSendChat("/n /pass [id]")
 elseif list == 1 then
sampSendChat('/me взял документы у человека напротив')
wait(750)
sampSendChat('/do Документы в руке.')
wait(750)
sampSendChat('/me осмотрел паспорт')
wait(750)
sampSendChat('/me закрыл документы')
wait(750)
sampSendChat('/do Документы закрыты.')
wait(750)
sampSendChat('/me вернул документы человеку напротив')
wait(750)
sampSendChat('/anim 6 3')
 elseif list == 2 then
sampSendChat('/do Наручники в руке.')
wait(700)
sampSendChat('/me надел наручники на человека напротив')
                end
            end
        end
    end)
end
 

woodware

Потрачен
Проверенный
5,057
1,464
Lua:
function mvd()
    lua_thread.create(function() -- Создаем новый поток
        wait(100) -- Ждём 5 секунд
        sampShowDialog(6405, "{006AFF}MVD Helper", "\n 1 [MVD] Представиться \n 2. [MVD] Взял документы \n 3. [MVD] Надеть наручники \n 4. [MVD] Вести за собой", "Закрыть", nil, 2)
        while sampIsDialogActive(6405) do wait(100) end
        local _, button, list, _ = sampHasDialogRespond(6405)
        if list == 0 then
            sampShowDialog(111, "заголовок", "введите ид", "кнопка 1", "кнопка 2", 1)
            while sampIsDialogActive(111) do wait(0) end
            local result, button, list, input = sampHasDialogRespond(111)
            if result then
                local id = tonumber(input)
                if id ~= nil then
                    sampSendChat('Здравия желаю, Вас беспокоит "" - .')
                    wait(750)
                    sampSendChat('/me отдал честь')
                    wait(750)
                    sampSendChat('/anim 1 7')
                     wait(750)
                    sampSendChat('/me достал из нагрудного кармана удостоверение и предъявил его')
                    wait(750)
                    sampSendChat('/pass ' .. id)
                    wait(750)
                    sampSendChat('/anim 6 3')
                    wait(750)
                    sampSendChat('Будьте добры предъявить ваши документы.')
                    wait(750)
                    sampSendChat("/n /pass [id]")
                end
            end
        end
        if list == 1 then
            sampSendChat('/me взял документы у человека напротив')
            wait(750)
            sampSendChat('/do Документы в руке.')
            wait(750)
            sampSendChat('/me осмотрел паспорт')
            wait(750)
            sampSendChat('/me закрыл документы')
            wait(750)
            sampSendChat('/do Документы закрыты.')
            wait(750)
            sampSendChat('/me вернул документы человеку напротив')
            wait(750)
            sampSendChat('/anim 6 3')
        end
        if list == 2 then
            sampShowDialog(111, "заголовок", "введите ид", "кнопка 1", "кнопка 2", 1)
            while sampIsDialogActive(111) do wait(0) end
            local result, button, list, input = sampHasDialogRespond(111)
            if result then
                local id = tonumber(input)
                if id ~= nil then
                    sampSendChat('/do Наручники в руке.')
                    wait(700)
                    sampSendChat('/me надел наручники на человека напротив')
                    wait(700)
                    sampSendChat('/cuff ' .. id)
                end
            end
        end
        if list == 3 then
            sampShowDialog(111, "заголовок", "введите ид", "кнопка 1", "кнопка 2", 1)
            while sampIsDialogActive(111) do wait(0) end
            local result, button, list, input = sampHasDialogRespond(111)
            if result then
                local id = tonumber(input)
                if id ~= nil then
                    sampSendChat('/me схватил задержанного за руки')
                    wait(700)
                    sampSendChat('/me заломал задержанного и повёл задержанного')
                    wait(700)
                    sampSendChat('/follow ' .. id)
                end
            end
        end
    end)
end
если я правильно понял твои намерения, это должен быть готовый код
 

Ancwork

Участник
Автор темы
76
10
Lua:
function mvd()
    lua_thread.create(function() -- Создаем новый поток
        wait(100) -- Ждём 5 секунд
        sampShowDialog(6405, "{006AFF}MVD Helper", "\n 1 [MVD] Представиться \n 2. [MVD] Взял документы \n 3. [MVD] Надеть наручники \n 4. [MVD] Вести за собой", "Закрыть", nil, 2)
        while sampIsDialogActive(6405) do wait(100) end
        local _, button, list, _ = sampHasDialogRespond(6405)
        if list == 0 then
            sampShowDialog(111, "заголовок", "введите ид", "кнопка 1", "кнопка 2", 1)
            while sampIsDialogActive(111) do wait(0) end
            local result, button, list, input = sampHasDialogRespond(111)
            if result then
                local id = tonumber(input)
                if id ~= nil then
                    sampSendChat('Здравия желаю, Вас беспокоит "" - .')
                    wait(750)
                    sampSendChat('/me отдал честь')
                    wait(750)
                    sampSendChat('/anim 1 7')
                     wait(750)
                    sampSendChat('/me достал из нагрудного кармана удостоверение и предъявил его')
                    wait(750)
                    sampSendChat('/pass ' .. id)
                    wait(750)
                    sampSendChat('/anim 6 3')
                    wait(750)
                    sampSendChat('Будьте добры предъявить ваши документы.')
                    wait(750)
                    sampSendChat("/n /pass [id]")
                end
            end
        end
        if list == 1 then
            sampSendChat('/me взял документы у человека напротив')
            wait(750)
            sampSendChat('/do Документы в руке.')
            wait(750)
            sampSendChat('/me осмотрел паспорт')
            wait(750)
            sampSendChat('/me закрыл документы')
            wait(750)
            sampSendChat('/do Документы закрыты.')
            wait(750)
            sampSendChat('/me вернул документы человеку напротив')
            wait(750)
            sampSendChat('/anim 6 3')
        end
        if list == 2 then
            sampShowDialog(111, "заголовок", "введите ид", "кнопка 1", "кнопка 2", 1)
            while sampIsDialogActive(111) do wait(0) end
            local result, button, list, input = sampHasDialogRespond(111)
            if result then
                local id = tonumber(input)
                if id ~= nil then
                    sampSendChat('/do Наручники в руке.')
                    wait(700)
                    sampSendChat('/me надел наручники на человека напротив')
                    wait(700)
                    sampSendChat('/cuff ' .. id)
                end
            end
        end
        if list == 3 then
            sampShowDialog(111, "заголовок", "введите ид", "кнопка 1", "кнопка 2", 1)
            while sampIsDialogActive(111) do wait(0) end
            local result, button, list, input = sampHasDialogRespond(111)
            if result then
                local id = tonumber(input)
                if id ~= nil then
                    sampSendChat('/me схватил задержанного за руки')
                    wait(700)
                    sampSendChat('/me заломал задержанного и повёл задержанного')
                    wait(700)
                    sampSendChat('/follow ' .. id)
                end
            end
        end
    end)
end
если я правильно понял твои намерения, это должен быть готовый код
Если я делаю как у тебя, он просто перестает отвечать на команду mvd, а если оставить так:

Lua:
    if list == 0 then -- и для остальных результатов соответственно

    sampShowDialog(100, "MVD Helper", "Введите ид", "Готово", nil, 1)
    while sampIsDialogActive(100) do wait(0) end
    local result, button, list, input = sampHasDialogRespond(100)
    if result then
    local id = tonumber(input)
    if id ~= nil then

    -- /doc
    sampSendChat('Здравия желаю, Вас беспокоит '..ini.player.rang..' "'..ini.player.department..'" - '..ini.player.name..'.')
    wait(750)
    sampSendChat('/me отдал честь')
    wait(750)
    sampSendChat('/anim 1 7')
    wait(750)
    sampSendChat('/me достал из нагрудного кармана удостоверение и предъявил его')
    wait(750)
    sampSendChat("/doc " .. id)
    wait(750)
    sampSendChat('/anim 6 3')
    wait(750)
    sampSendChat('Будьте добры предъявить ваши документы.')
    wait(750)
    sampSendChat("/n /pass [id]")
        
elseif list == 1 then -- и для остальных результатов соответственно
    sampSendChat('/me взял документы у человека напротив')
    wait(750)
    sampSendChat('/do Документы в руке.')
    wait(750)
    sampSendChat('/me осмотрел паспорт')
    wait(750)
    sampSendChat('/me закрыл документы')
    wait(750)
    sampSendChat('/do Документы закрыты.')
    wait(750)
    sampSendChat('/me вернул документы человеку напротив')
    wait(750)
    sampSendChat('/anim 6 3')
то он все нормально выполняет, но стоит мне добавить к следующей команде аргумент в ID он не работает
 

woodware

Потрачен
Проверенный
5,057
1,464
Если я делаю как у тебя, он просто перестает отвечать на команду mvd
тестил у себя, все работало, мб проблема не в этой функции
но стоит мне добавить к следующей команде аргумент в ID он не работает
измененный код в студию, желательно полный, а не вырезку
 

Ancwork

Участник
Автор темы
76
10
тестил у себя, все работало, мб проблема не в этой функции

измененный код в студию, желательно полный, а не вырезку
Все забей, нашел ошибку свою.
Еще такой вопрос, возможно через ALT+1 открывать данное меню, а не через команду?
 

woodware

Потрачен
Проверенный
5,057
1,464
Все забей, нашел ошибку свою.
Еще такой вопрос, возможно через ALT+1 открывать данное меню, а не через команду?
через мейн
Lua:
function main()
    repeat wait(0) until isSampAvailable()
    while true do
        wait(0)
        if isKeyDown(18) and isKeyJustPressed(49) then -- ALT + 1
            sampShowDialog(6405, "{006AFF}MVD Helper", "\n 1 [MVD] Представиться \n 2. [MVD] Взял документы \n 3. [MVD] Надеть наручники \n 4. [MVD] Вести за собой", "Закрыть", nil, 2)
            while sampIsDialogActive(6405) do wait(100) end
            local _, button, list, _ = sampHasDialogRespond(6405)
            if list == 0 then
                sampShowDialog(111, "заголовок", "введите ид", "кнопка 1", "кнопка 2", 1)
                while sampIsDialogActive(111) do wait(0) end
                local result, button, list, input = sampHasDialogRespond(111)
                if result then
                    local id = tonumber(input)
                    if id ~= nil then
                        sampSendChat('Здравия желаю, Вас беспокоит "" - .')
                        wait(750)
                        sampSendChat('/me отдал честь')
                        wait(750)
                        sampSendChat('/anim 1 7')
                        wait(750)
                        sampSendChat('/me достал из нагрудного кармана удостоверение и предъявил его')
                        wait(750)
                        sampSendChat('/pass ' .. id)
                        wait(750)
                        sampSendChat('/anim 6 3')
                        wait(750)
                        sampSendChat('Будьте добры предъявить ваши документы.')
                        wait(750)
                        sampSendChat("/n /pass [id]")
                    end
                end
            end
            if list == 1 then
                sampSendChat('/me взял документы у человека напротив')
                wait(750)
                sampSendChat('/do Документы в руке.')
                wait(750)
                sampSendChat('/me осмотрел паспорт')
                wait(750)
                sampSendChat('/me закрыл документы')
                wait(750)
                sampSendChat('/do Документы закрыты.')
                wait(750)
                sampSendChat('/me вернул документы человеку напротив')
                wait(750)
                sampSendChat('/anim 6 3')
            end
            if list == 2 then
                sampShowDialog(111, "заголовок", "введите ид", "кнопка 1", "кнопка 2", 1)
                while sampIsDialogActive(111) do wait(0) end
                local result, button, list, input = sampHasDialogRespond(111)
                if result then
                    local id = tonumber(input)
                    if id ~= nil then
                        sampSendChat('/do Наручники в руке.')
                        wait(700)
                        sampSendChat('/me надел наручники на человека напротив')
                        wait(700)
                        sampSendChat('/cuff ' .. id)
                    end
                end
            end
            if list == 3 then
                sampShowDialog(111, "заголовок", "введите ид", "кнопка 1", "кнопка 2", 1)
                while sampIsDialogActive(111) do wait(0) end
                local result, button, list, input = sampHasDialogRespond(111)
                if result then
                    local id = tonumber(input)
                    if id ~= nil then
                        sampSendChat('/me схватил задержанного за руки')
                        wait(700)
                        sampSendChat('/me заломал задержанного и повёл задержанного')
                        wait(700)
                        sampSendChat('/follow ' .. id)
                    end
                end
            end
        end
    end
end