Помощь с диалогами. Взаимодействие

KRATEIN

Новичок
Автор темы
17
0
Хотел сделать бомж скрипт, но не знаю как сделать диалог. Типо открыл коммандой его, и есть 3 пункта. тип 1 2 и 3. Если нажал на каждый пункт что то пишет в чат. Как такое сделать? заранее спасибо!
 
Последнее редактирование модератором:

AnWu

Известный
Всефорумный модератор
4,777
5,400
Lua:
-- показываем диалог с ID 100
while sampIsDialogActive() and sampGetCurrentDialogID() == 100 do
wait(0)
local result, button, list, text = sampHasDialogResponse(100)
if result then
-- your code
end
end
даже не показал куда это нужно вставить, или как использовать. Он это в глобальную область скинет и будет жаловаться что не работает
 

ImPasha

Software Developer & System Administrator
Друг
1,788
2,142
даже не показал куда это нужно вставить, или как использовать. Он это в глобальную область скинет и будет жаловаться что не работает
С телефона такое себе писать большой код, сам понимаешь. Обстоятельства такие, что долгое время не могу подойти к компьютеру.

@Steven Robs, после того, как ты показал диалог, тебе нужно в бесконечном цикле, который ты создал в main, проверять ответ диалога. Для примера прикинем, что ты показал диалог с ID 528 - от этого числа и будем отталкиваться. Везде, где видишь его в моём коде - заменяй на свой ID диалога.
Lua:
if sampIsDialogActive() and sampGetCurrentDialogID() == 528 then
  local result, button, list, inputtext = sampHasDialogResponse(528)
  if result then -- если диалог получил ответ от пользователя, то...
    if button == 0 then
      print('Пользователь закрыл ваш диалог клавишей ESC')
    else
      if list == 0 then -- первая строка списка, начинаются с нуля!
        -- любое действие здесь
      elseif list == 1 then -- второй пункт списка, так как начинаем с нуля - он первый
        -- любое действие здесь
      elseif list == 2 then
        -- если нужно использовать wait, то лучше создать поток
        lua_thread.create(function()
          -- поток выполняется отдельно от бесконечного цикла
          -- здесь может быть любое действие
          return -- нужно, чтобы корректно завершить поток
        end)
      end
    end
  end
end
 
  • Нравится
Реакции: AnWu