Вопросы по Lua скриптингу

Parobax

Участник
72
12
Как взаимодействовать с локальными диалогами? Например, чтобы когда появлялось диалоговое окно (sampShowDialog), если нажать на первую кнопку, то -code, а если нажать на вторую кнопку, то -code.
 

rraggerr

проверенный какой-то
1,649
923
Как взаимодействовать с локальными диалогами? Например, чтобы когда появлялось диалоговое окно (sampShowDialog), если нажать на первую кнопку, то -code, а если нажать на вторую кнопку, то -code.
чекай мой fakepass
 

trefa

Типо модер
Модератор
1,350
562
кароче над осделать так что я в комбо боксе выбераю цифру 1, ввожу текст, потом меняю цифру на 2, опять ввожу текст, и они кароче типо каждый в своей ячейке запоминаются
типо таблицу с текстами сделать , чтобы я вводил етат текст в инпут текст, и выбирал номер текста через комбо
как такое сделат?
@imring ти должен шарить у тебя в шпоре похожее
Надеюсь я тебя правильно понял
Lua:
selected_item = imgui.ImInt(0)
tab = {
[1] = imgui.ImBuffer(256),
[1] = imgui.ImBuffer(256),
[1] = imgui.ImBuffer(256),
[1] = imgui.ImBuffer(256),
[1] = imgui.ImBuffer(256)
}
imgui.Combo(u8'##combo', selected_item, {'1', '2', '3', '4', '5'}, 5)
imgui.SameLine()
imgui.InputText("##search", tab[selected_item.v + 1][1])
 

Parobax

Участник
72
12
чекай мой fakepass
Да я не знаю Lua как таковой. Я хочу написать один скрипт полезный, и мало что понимаю. Понимаю там как написать какой-нибудь простой скрипт, а чисто основы программирования я не знаю, а зря, понимаю. Можешь мне тупо объяснить примерно?
 

rraggerr

проверенный какой-то
1,649
923
Да я не знаю Lua как таковой. Я хочу написать один скрипт полезный, и мало что понимаю. Понимаю там как написать какой-нибудь простой скрипт, а чисто основы программирования я не знаю, а зря, понимаю. Можешь мне тупо объяснить примерно?
там все тупо и написано, код просто открой и все понятно станет

Надеюсь я тебя правильно понял
Lua:
selected_item = imgui.ImInt(0)
tab = {
[1] = imgui.ImBuffer(256),
[1] = imgui.ImBuffer(256),
[1] = imgui.ImBuffer(256),
[1] = imgui.ImBuffer(256),
[1] = imgui.ImBuffer(256)
}
imgui.Combo(u8'##combo', selected_item, {'1', '2', '3', '4', '5'}, 5)
imgui.SameLine()
imgui.InputText("##search", tab[selected_item.v + 1][1])
чот у тебя по виду таблица кривая немног
 
Последнее редактирование модератором:

Parobax

Участник
72
12
там все тупо и написано, код просто открой и все понятно станет
Конечно для тебя понятно =) Ты этим не первый день занимаешься. Я там что-то понимаю, но суть понять не могу

Короче покажи мне, пожалуйста, на примере. Вот, например, открывается диалог
такого типа. Если я нажимаю на первый пункт, то открывается точно такой же диалог, в котором я выбираю второй пункт и в чате появляется оповещение "Всем привет". Если тебе не сложно, напиши тут такой код, с комментариями, пожалуйста.
 
Последнее редактирование модератором:

checkdasound

Проверенный
Проверенный
912
277
Конечно для тебя понятно :) Ты этим не первый день занимаешься. Я там что-то понимаю, но суть понять не могу

Короче покажи мне, пожалуйста, на примере. Вот, например, открывается диалог
такого типа. Если я нажимаю на первый пункт, то открывается точно такой же диалог, в котором я выбираю второй пункт и в чате появляется оповещение "Всем привет". Если тебе не сложно, напиши тут такой код, с комментариями, пожалуйста.
Lua:
function main() -- функция main
   while not isSampAvailable() do wait(100) end -- проверка на доступность сампа
   while true do -- бесконечный цикл
   wait(0) -- в бесконечном цикле нужно обязательно ставить задержку, в данном случае она нулевая
   punkt = string.format('Первый пункт\nВторой пункт\nТретий пункт') -- список пунктов, где \n - перенос на новую строку.
       if testCheat('DLG') then -- если ввести чит-код DLG, тогда:
           sampShowDialog(1337, 'Третий диалог', punkt, 'Выбрать', 'Закрыть', 2) -- показ диалога, где:
            -- 1337 - id диалога(ставь любой, он создан для использования в других функциях) | 'Третий диалог' - название | punkt - список пунктов | 'Выбрать' и 'Закрыть' -- кнопки |
            -- 2 - id стиля диалога: [http://wiki.sa-mp.com/wiki/Dialog_Styles_RU]
       end
       result, button, list, input = sampHasDialogRespond(1337) -- функция для работы с переменными диалога, проверка на существование диалога
       if result then -- если диалог существует, то:
           -- (в диалогах отсчет пунктов начинается с нуля, тоесть в данном случае list 0 - 'Первый пункт')
           if list  == 0 then -- если выбран первый пункт, то:
               sampAddChatMessage("Один", -1) -- Добавить сообщение, которое видно только тебе с текстом 'Один' и цветом - Белый (-1).
           end
           if list == 1 then -- если выбран второй пункт, то:
               sampAddChatMessage("Два", -1) -- Добавить сообщение, которое видно только тебе с текстом 'Два' и цветом - Белый (-1).
           end
           if list == 2 then -- если выбран третий пункт, то:
               sampAddChatMessage("Три", -1) -- Добавить сообщение, которое видно только тебе с текстом 'Три' и цветом - Белый (-1).
           end
       end
   end
end
 

Даня1213221

Новичок
103
0
как сделать подсказку в imgui около button (знак вопроса)
и как сделать, что бы две кнопки были на одной линии? (ImGui)
 

imring

lampo team
Друг
1,895
1,373
как сделать подсказку в imgui около button (знак вопроса)

Lua:
imgui                            = require 'imgui'
encoding                        = require 'encoding'
encoding.default                    = 'CP1251'
u8                            = encoding.UTF8

test_menu                        = imgui.ImBool(false)

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('example', function() test_menu.v = not test_menu.v end)
    while true do wait(0) imgui.Process = test_menu.v end
end

function imgui.OnDrawFrame()
    local x, y = getScreenResolution()
    if test_menu.v then
        imgui.SetNextWindowPos(imgui.ImVec2(x/2, y/2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(300, 200), imgui.Cond.FirstUseEver)
        imgui.Begin('Imgui '..imgui._VERSION)
        imgui.Text('Test text')
        imgui.SameLine(nil, 5)
        imgui.TextQuestion('Text Text Text Text Text Text..')
        imgui.End()
    end
end

function imgui.TextQuestion(text)
    imgui.TextDisabled('(?)')
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.PushTextWrapPos(450)
        imgui.TextUnformatted(text)
        imgui.PopTextWrapPos()
        imgui.EndTooltip()
    end
end