Нажатие пункта в диалог окне. Рандомно меняется позиция пункта вверх и вниз.

-MaDnEsS-

Известный
Автор темы
195
39
Версия MoonLoader
.026-beta
Привет, у меня такое дело, в диалоге в рандомном месте появляется пункт "Частный самолет", можно как то сделать чтобы именно его выбирало?
Я как понимаю, надо задействовать строчку
sampSendDialogResponse(id, 1, 10, nil)

Я уже написал код рабочий, но только вот он выбирает первый пункт. А нужный пункт постоянно сдвигается, как сделать?

Код:
local sampev = require 'lib.samp.events'

function sampev.onShowDialog(id, style, title, button1, button2, text)
    if title:find("Выберите самолет") and text:find("Частный самолет") then
        sampSendDialogResponse(id, 1, 0, nil)
    end
end
 

-MaDnEsS-

Известный
Автор темы
195
39
Lua:
local sampev = require 'lib.samp.events'

function sampev.onShowDialog(id, style, title, button1, button2, text)
    if title:find("Выберите самолет") then
        sampSendDialogResponse(id, 1, 0, "Частный самолет")
    end
end
Нет, не выбрало нужного, выбрал первый пункт. вместо "Частный самолёт"
 

sdfy

Известный
346
228
 
  • Нравится
Реакции: YarikVL
D

deleted-user-139653

Гость
Нет, не выбрало нужного, выбрал первый пункт. вместо "Частный самолёт"
Забыл поставить nil в 3-ем пункте sampSendDialogResponse, хотя это мало что значит, могу ошибаться.
А также задержку, чтобы прогрузился диалог
Lua:
local sampev = require("samp.events")

function sampev.onShowDialog(id, style, title, button1, button2, text)
    if title:find("Выберите самолет") then
        lua_thread.create(function()
            wait(200)
            sampSendDialogResponse(id, 1, nil, "Частный самолет")
            wait(200)
            sampCloseCurrentDialogWithButton(0)
        end)
    end
end

 
Последнее редактирование модератором:
  • Нравится
Реакции: chromiusj

-MaDnEsS-

Известный
Автор темы
195
39
Забыл поставить nil в 3-ем пункте sampSendDialogResponse, хотя это мало что значит, могу ошибаться.
А также задержку, чтобы прогрузился диалог
И еще, ваши реакции "Эм" меня бесят.
Lua:
local sampev = require("samp.events")

function sampev.onShowDialog(id, style, title, button1, button2, text)
    if title:find("Выберите самолет") then
        lua_thread.create(function()
            wait(200)
            sampSendDialogResponse(id, 1, nil, "Частный самолет")
            wait(200)
            sampCloseCurrentDialogWithButton(0)
        end)
    end
end

В окне видно что пункт выбрал нужный, но активировал другой пункт, мне нужен был Частный самолёт". А взял шамалл...

Забыл поставить nil в 3-ем пункте sampSendDialogResponse, хотя это мало что значит, могу ошибаться.
А также задержку, чтобы прогрузился диалог
Lua:
local sampev = require("samp.events")

function sampev.onShowDialog(id, style, title, button1, button2, text)
    if title:find("Выберите самолет") then
        lua_thread.create(function()
            wait(200)
            sampSendDialogResponse(id, 1, nil, "Частный самолет")
            wait(200)
            sampCloseCurrentDialogWithButton(0)
        end)
    end
end

Я нашёл на просторах БХ такой код, он выбирает нужный, но не активирует пункт автоматически тут.

Код:
local sampev = require 'lib.samp.events'

function sampUseListboxItemByText(did,text, plain)
    if not sampIsDialogActive() then return -1 end
    plain = not (plain == false)
    for i = 0, sampGetListboxItemsCount() - 1 do
        if sampGetListboxItemText(i):find(text, 1, plain) then
            sampSendDialogResponse(did,1, i,nil)
            return i
        end
    end
    return -1
end

function on.onShowDialog(dId, style, title, b1, b2, text)
    if dId == 1421 then
        local index = sampUseListboxItemByText(dId,'Частный самолет')
        local index = sampUseListboxItemByText(dId,'%Частный самолет.-%a+', false)
    end
 
  • Грустно
Реакции: deleted-user-139653

sdfy

Известный
346
228
Попробуй. Если что добавь задержку
Lua:
require('lib.samp.events').onShowDialog = function(dialogId, style, title, button1, button2, text)
    if dialogId == 1421 then
        sampSendDialogResponse(dialogId, 1, sampGetListboxItemByText("Частный самолет"))
    end
end

function sampGetListboxItemByText(text, plain)
    if not sampIsDialogActive() then return -1 end
    plain = not (plain == false)
    for i = 0, sampGetListboxItemsCount() - 1 do
        if sampGetListboxItemText(i):find(text, 1, plain) then
            return i
        end
    end
    return -1
end
 
  • Bug
Реакции: Hinаta

FixZer

Активный
139
43
Привет, у меня такое дело, в диалоге в рандомном месте появляется пункт "Частный самолет", можно как то сделать чтобы именно его выбирало?
Я как понимаю, надо задействовать строчку
sampSendDialogResponse(id, 1, 10, nil)

Я уже написал код рабочий, но только вот он выбирает первый пункт. А нужный пункт постоянно сдвигается, как сделать?

Код:
local sampev = require 'lib.samp.events'

function sampev.onShowDialog(id, style, title, button1, button2, text)
    if title:find("Выберите самолет") and text:find("Частный самолет") then
        sampSendDialogResponse(id, 1, 0, nil)
    end
end

Добрый вечер, вот это точно должно работать. Рад был помочь.

Тест 0.1:
require "lib.moonloader"
local sampev = require 'lib.samp.events'

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

    while true do
      wait(0)
    
    end
end

function sampev.onShowDialog(id, style, title, button1, button2, text)
    if id == 1421 then
        list = sampGetListboxItemsCount() - 1
        sampSendDialogResponse(id, 1, list, 0)
        sampAddChatMessage("Частный самолёт успешно был выбран!", -1)
    end
end