local inicfg = require 'inicfg'
local familyDialogId = 3115 -- ID диалога для сохранения ников
local firstDialogId = 3109 -- ID первого диалога
local hook_dlg = false -- Ждем ли диалог
local sampev = require 'samp.events' -- Подключаем библиотеку событий сампа
function main()
repeat wait(0) until isSampAvailable() -- Ждем подгрузки сампа
sampSendChat('/family') -- Пишем в чат /family
hook_dlg = true -- Начинаем ждать диалог
sampSendDialogResponse(firstDialogId, 1, 1, -1) -- Выбираем второй пункт (listitem 1, если 0 - 2)
while hook_dlg do
wait(100) -- Ждем 100 мс, чтобы не перегружать процессор
end
wait(-1) -- Основной цикл
end
function sampev.onShowDialog(id) -- Перехватываем показ диалога
if hook_dlg and id == firstDialogId then -- Если ждем и ID диалога равен 3109
wait(500) -- Ждем полсекунды, чтобы убедиться, что диалог открылся
-- sampSendDialogResponse(firstDialogId, 1, 1, -1) -- Выбираем второй пункт (listitem 1, если 0 - 2)
elseif id == familyDialogId then
-- Получаем текст диалога (если он доступен)
local dialogText = "" -- текст будет передан через событие
saveDialogText(dialogText) -- Сохраняем текст
hook_dlg = false -- Больше не ждем диалог
return false -- Отменяем показ этого диалога
end
end
-- основной конфиг
local mainIni = inicfg.load({
settings = {
title = "Default Title",
text_color = "0xAABBCC"
},
})
-- Функция для извлечения ников из текста
local function extractNicks(text)
local nicks = {}
-- Разделяем текст на строки
for line in text:gmatch("[^\r\n]+") do
-- Найти ник в начале строки
local nick = line:match("^(%S+)")
if nick then
table.insert(nicks, nick) -- Добавляем ник в таблицу
end
end
return table.concat(nicks, "\n") -- Возвращаем ника, соединенные с новой строки
end
-- Функция для сохранения текста диалогового окна
local function saveDialogText(text)
local extractedNicks = extractNicks(text) -- Извлекаем ники
local dialogData = {
dialog = {
text = extractedNicks
}
}
-- Сохраняем текст в файл
if inicfg.save(dialogData, "family.ini") then
print("Ники успешно сохранены.")
else
print("Ошибка при сохранении ников.")
end
end
require('lib.samp.events').onShowDialog = function(did, style, title, b1, b2, text)
if did == familyDialogId then
saveDialogText(text) -- Сохраняем текст
end
end