Извиняюсь за дикий тупизм, но можно объяснить как:1. Событие onShowDialog(id, style, title, button1, button2, text) [samp events]
2. Взаимодействие с элементами диалога - sampSendDialogResponse(dialog_id, button, item, input)
3. Создание своего диалога sampShowDialog(dialog_id, title, text, button1, button2, dialog_style)
Первое что сразу приходит в голову
Искал очень плохо
function dialog()
lua_thread.create(function()
sampShowDialog(1, "Traffic-Stop Menu", "Взаимодействие при 10'55\nСмягчить меру пресечения\nНазначить Unit", "Открыть", "Закрыть", 2)
wait(1000)
if sampSendDialogResponse(1, 0, 0, "?") then
sampShowDialog(2, "Traffic-Stop Menu 10'55", "Начало 10'55\nОкончание 10'55\n10'57 V", "Выбрать", "Назад", 2)
else
print("Не сработало :(")
end
end)
end
while true do
wait(0)
local current_dialog = sampGetCurrentDialogId()
local result, button, list, input = sampHasDialogRespond(current_dialog)
if current_dialog == DIALOG_TEST then
if result and button == 1 and list ~= 0 then
sampSendChat(string.format("/re %i", players[list][1]))
end
end
end
ПримерИзвиняюсь за дикий тупизм, но можно объяснить как:
При выборе в диалоге нужного пункта и нажатии нужной кнопки происходило нужное действие?
Например:
1) При вводе /d - открывался диалог (реализовано)
2) При выборе например 1-ого пункта в диалоге с id1, открывался следующий диалог с id2, а затем при выборе какого либо пункта в 2ом диалоге, происходило любое действие...
Увы, не очень понял как это реализовать :(
Lua:function dialog() lua_thread.create(function() sampShowDialog(1, "Traffic-Stop Menu", "Взаимодействие при 10'55\nСмягчить меру пресечения\nНазначить Unit", "Открыть", "Закрыть", 2) wait(1000) if sampSendDialogResponse(1, 0, 0, "?") then sampShowDialog(2, "Traffic-Stop Menu 10'55", "Начало 10'55\nОкончание 10'55\n10'57 V", "Выбрать", "Назад", 2) else print("Не сработало :(") end end) end
sampSendDialogResponse(5, 1, 2, -1) -- айди диалога 5, выбираем 3 элемент в списке (3-1=2), нажимаем клавишу "ок" после выбора (это единица в коде), -1 - не вводит никакого текста (если хотим ввести текст -1 заменяем на текст)
он это не просилsampSendDialogResponse(5, 1, 2, -1)
local result, button, list, input = sampHasDialogRespond(dialog_id)
if result and button == 1 then -- если диалог активен и нажата кнопка "ок"
-- создание диалога
end
Ну, во-первых, стоит одеть очки и перечитать сообщение автора темы. Во-вторых, если уж ты решил, что здесь что-то указано "не в тему" - предложи свой вариант, а не набивай постыон это не просил
1. он не писал, что ему нужны серверные диалоги. он спросил, как при нажатии на созданный им диалог выполнить какое-то действие.Ну, во-первых, стоит одеть очки и перечитать сообщение автора темы. Во-вторых, если уж ты решил, что здесь что-то указано "не в тему" - предложи свой вариант, а не набивай посты
1. он не писал, что ему нужны серверные диалоги. он спросил, как при нажатии на созданный им диалог выполнить какое-то действие.
2. зачем, если DarkTX скинул решение
Если после нажатия на серверный диалог хочешь создавать свой диалог - нужно сделать чуть иначе
Lua:local result, button, list, input = sampHasDialogRespond(dialog_id) if result and button == 1 then -- если диалог активен и нажата кнопка "ок" -- создание диалога end
Ну, во-первых, стоит одеть очки и перечитать сообщение автора темы. Во-вторых, если уж ты решил, что здесь что-то указано "не в тему" - предложи свой вариант, а не набивай посты
А всё это возможно вставлять куда-либо ещё кроме main()? А то такими темпами мне main не хватит)Скидываю пример, дальше сам поймёшь. Это для диалогов, который ты сам создал. (для серверных диалогов - ответ выше).
В main():
Lua:while true do wait(0) local current_dialog = sampGetCurrentDialogId() local result, button, list, input = sampHasDialogRespond(current_dialog) if current_dialog == DIALOG_TEST then if result and button == 1 and list ~= 0 then sampSendChat(string.format("/re %i", players[list][1])) end end end
Объективно, набиваешь посты в данной теме только ты, так как ответ уже был дан, да и более не требовался.Во-вторых, если уж ты решил, что здесь что-то указано "не в тему" - предложи свой вариант, а не набивай посты
Можно создавать потоки и вставлять это туда, также используя там бесконечный цикл.А всё это возможно вставлять куда-либо ещё кроме main()? А то такими темпами мне main не хватит)
lua_theard.create(function()
while true do
wait(0)
-- любое действие
end
end)
Есть очень хорошее описание работы с диалогами от Фипа в сниппетахНе сорьтесь) Мне нужны действия с локальными диалогами) Сервер жмот и от него мало чего получить возможно(
Ты теперь будешь везде отвечать, где упоминаюсь я? Даже на стене удосужился ответитьОбъективно, набиваешь посты в данной теме только ты, так как ответ уже был дан, да и более не требовался.
А человек, которого ты обвиняешь, лишь сообщил тебе о том, что ответ более не требуется. Ничего необычного.
мб у тебя команды, ID диалогов одинаковые? проверьСорри за поднятие старой темы, но такой вопрос: есть два скрипта, в одном описан основной функционал, в другом дополнительный и дело в том, что в дополнительном при взаимодействии с диалогами и выборе listitem в нём не происходит ничего, но без основного скрипта всё работает идеально. То есть, допустим, мы имеем в папке и основной скрипт, и дополнительный, и если создать кмд в дополнительном, чтобы та просто открывала тебе диалог(клиентский) и при выборе любой строчки открывала ещё один диалог, то как раз новый диалог он просто не открывает и ничего не происходит, и так делается абсолютно с любым диалогом. Что можно предположить или сделать в этом случае? Никаких ошибок и нареканий в консоли сф на абсолютно все скрипты не наблюдал, даже после того, когда выбирал уже строчку в диалоге.