Проблема с авто вставкой айди диалога

Крейзи

Участник
Автор темы
34
4
Версия MoonLoader
.026-beta
Как взять айди диалога автоматом для любого сервера и вставить в функцию sampSendDialogResponse(int id, int button, int listitem, zstring input)
И еще если не сложно скажите что такое int button

Извините я додик которрий без рофла ранше писал на PHP, а в функцию sampSendDialogResponse(int id, int button, int listitem, zstring input)
Можно вставить както только айди диалога и номер елемента списка или нада всё писать?
 
Решение
Можешь сделать поиск по названию диалога или по тексту в нем, тогда ид подставится сам
int button - какая кнопка будет нажиматься в диалоге (0/1)
Lua:
local sampev = require('samp.events')
function sampev.onShowDialog(id, style, title, button1, button2, text)
    -- По названию
    if title:find('название диалога') then
        sampSendDialogResponse(id,1, номер пункта)
    end

    -- Или по тексту
    if text:find('текст в диалоге') then
        sampSendDialogResponse(id,1, номер пункта)
    end
end

kyrtion

Известный
661
242
Lua:
local loggedAccount = false

function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
  -- debug dialog in console
  title = title:gsub('{%x%x%x%x%x%x}', '')
  text = text:gsub('{%x%x%x%x%x%x}', ''):gsub('\t', '')
  local testFmt = string.format(
    '[DIALOG] ID[%d] STYLE[%d] TITLE[%s]\n%s',
    dialogId, style, title, text)
  print(testFmt)
  -- end debug

  -- например, тип чтобы автоматически авторизовался
  local myNickname = sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)))
  if not loggedAccount and dialogId == 1234 and style == 3 and title:find('Вход аккаунта') and text:find(myNickname) then
    -- sampSendDialogResponse(int id, int button, int listitem, zstring input)
    sampSendDialogResponse(dialogId, 1, -1, 'пароль-аккаунта')
    loggedAccount = true -- дабы не спамило, раз и всё
    return false
  end
end
 
  • Нравится
Реакции: Крейзи

painw

Известный
116
63
Можешь сделать поиск по названию диалога или по тексту в нем, тогда ид подставится сам
int button - какая кнопка будет нажиматься в диалоге (0/1)
Lua:
local sampev = require('samp.events')
function sampev.onShowDialog(id, style, title, button1, button2, text)
    -- По названию
    if title:find('название диалога') then
        sampSendDialogResponse(id,1, номер пункта)
    end

    -- Или по тексту
    if text:find('текст в диалоге') then
        sampSendDialogResponse(id,1, номер пункта)
    end
end
 
  • Нравится
Реакции: Крейзи

kyrtion

Известный
661
242
Можно вставить както только айди диалога и номер елемента списка или нада всё писать?
Lua:
-- для вывода каждый список в консоле
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
  local textNoHex = text:gsub('{%x%x%x%x%x%x}', '')

  for listitem, message in textNoHex:gmatch('[^\n]+') do
    print(string.format('%d = "%s"', listitem, message))
    -- например, я хочу искать фразу - "Настройки", то сделаем так:
    if message:find('Настройки') then
      sampSendDialogResponse(dialogId, 1, listitem - 1 --[[список начиная с 0, поэтому отнимаем -1]], message)
      return false
    end
  end
end

пж ставь лайк если помог)
 
Последнее редактирование:
  • Нравится
Реакции: Крейзи