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

Общая тема для вопросов по разработке скриптов на языке программирования Lua, в частности под MoonLoader.
  • Задавая вопрос, убедитесь, что его нет в списке частых вопросов и что на него ещё не отвечали (воспользуйтесь поиском).
  • Поищите ответ в теме посвященной разработке Lua скриптов в MoonLoader
  • Отвечая, убедитесь, что ваш ответ корректен.
  • Старайтесь как можно точнее выразить мысль, а если проблема связана с кодом, то обязательно прикрепите его к сообщению, используя блок [code=lua]здесь мог бы быть ваш код[/code].
  • Если вопрос связан с MoonLoader-ом первым делом желательно поискать решение на wiki.

Частые вопросы

Как научиться писать скрипты? С чего начать?
Информация - Гайд - Всё о Lua скриптинге для MoonLoader(https://blast.hk/threads/22707/)
Как вывести текст на русском? Вместо русского текста у меня какие-то каракули.
Изменить кодировку файла скрипта на Windows-1251. В Atom: комбинация клавиш Ctrl+Shift+U, в Notepad++: меню Кодировки -> Кодировки -> Кириллица -> Windows-1251.
Как получить транспорт, в котором сидит игрок?
Lua:
local veh = storeCarCharIsInNoSave(PLAYER_PED)
Как получить свой id или id другого игрока?
Lua:
local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED) -- получить свой ид
local _, id = sampGetPlayerIdByCharHandle(ped) -- получить ид другого игрока. ped - это хендл персонажа
Как проверить, что строка содержит какой-то текст?
Lua:
if string.find(str, 'текст', 1, true) then
-- строка str содержит "текст"
end
Как эмулировать нажатие игровой клавиши?
Lua:
local game_keys = require 'game.keys' -- где-нибудь в начале скрипта вне функции main

setGameKeyState(game_keys.player.FIREWEAPON, -1) -- будет сэмулировано нажатие клавиши атаки
Все иды клавиш находятся в файле moonloader/lib/game/keys.lua.
Подробнее о функции setGameKeyState здесь: lua - setgamekeystate | BlastHack — DEV_WIKI(https://www.blast.hk/wiki/lua:setgamekeystate)
Как получить id другого игрока, в которого целюсь я?
Lua:
local valid, ped = getCharPlayerIsTargeting(PLAYER_HANDLE) -- получить хендл персонажа, в которого целится игрок
if valid and doesCharExist(ped) then -- если цель есть и персонаж существует
  local result, id = sampGetPlayerIdByCharHandle(ped) -- получить samp-ид игрока по хендлу персонажа
  if result then -- проверить, прошло ли получение ида успешно
    -- здесь любые действия с полученным идом игрока
  end
end
Как зарегистрировать команду чата SAMP?
Lua:
-- До бесконечного цикла/задержки
sampRegisterChatCommand("mycommand", function (param)
     -- param будет содержать весь текст введенный после команды, чтобы разделить его на аргументы используйте string.match()
    sampAddChatMessage("MyCMD", -1)
end)
Крашит игру при вызове sampSendChat. Как это исправить?
Это происходит из-за бага в SAMPFUNCS, когда производится попытка отправки пакета определенными функциями изнутри события исходящих RPC и пакетов. Исправления для этого бага нет, но есть способ не провоцировать его. Вызов sampSendChat изнутри обработчика исходящих RPC/пакетов нужно обернуть в скриптовый поток с нулевой задержкой:
Lua:
function onSendRpc(id)
  -- крашит:
  -- sampSendChat('Send RPC: ' .. id)

  -- норм:
  lua_thread.create(function()
    wait(0)
    sampSendChat('Send RPC: ' .. id)
  end)
end
 
Последнее редактирование:

darkjer

Активный
134
68
Дайте функцию бег по координатам
 

Vespan

Чешский луашер
Проверенный
2,115
1,681
Lua:
function BeginToPoint(x, y, z, radius, move_code, isSprint)
    repeat
        local posX, posY, posZ = GetCoordinates()
        SetAngle(x, y, z)
        MovePlayer(move_code, isSprint)
        local dist = getDistanceBetweenCoords3d(x, y, z, posX, posY, z)
        wait(0)
    until not enabled or dist < radius
end
а можно пример?
 

darkjer

Активный
134
68
Lua:
function BeginToPoint(x, y, z, radius, move_code, isSprint)
    repeat
        local posX, posY, posZ = GetCoordinates()
        SetAngle(x, y, z)
        MovePlayer(move_code, isSprint)
        local dist = getDistanceBetweenCoords3d(x, y, z, posX, posY, z)
        wait(0)
    until not enabled or dist < radius
end
а можно пример?
Да

code:
require 'moonloader'

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    sampRegisterChatCommand("runto", function()
        enabled = not enabled; sampAddChatMessage(enabled and 'on' or 'off', -1)
    end)
    while true do
        wait(0)
        if isPlayerPlaying(playerHandle) and enabled then
            BeginToPoint(-405.399994, 2201.020020, 42.450001, 1.000000, -255, false)
            enabled = false
        end
    end
end

function BeginToPoint(x, y, z, radius, move_code, isSprint)
    repeat
        local posX, posY, posZ = GetCoordinates()
        SetAngle(x, y, z)
        MovePlayer(move_code, isSprint)
        local dist = getDistanceBetweenCoords3d(x, y, z, posX, posY, z)
        wait(0)
    until not enabled or dist < radius
end

function MovePlayer(move_code, isSprint)
    setGameKeyState(1, move_code)
    --[[255 - обычный бег назад
       -255 - обычный бег вперед
      65535 - идти шагом вперед
     -65535 - идти шагом назад]]
    if isSprint then setGameKeyState(16, 255) end
end

function SetAngle(x, y, z)
    local posX, posY, posZ = GetCoordinates()
    local pX = x - posX
    local pY = y - posY
    local zAngle = getHeadingFromVector2d(pX, pY)

    if isCharInAnyCar(playerPed) then
        local car = storeCarCharIsInNoSave(playerPed)
        setCarHeading(car, zAngle)
    else
        setCharHeading(playerPed, zAngle)
    end

    restoreCameraJumpcut()
end

function GetCoordinates()
    if isCharInAnyCar(playerPed) then
        local car = storeCarCharIsInNoSave(playerPed)
        return getCarCoordinates(car)
    else
        return getCharCoordinates(playerPed)
    end
end
Но также можно юзать сниппет из этой темы - https://www.blast.hk/threads/37428/post-366765
Пример:

code:
require 'moonloader'

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    sampRegisterChatCommand("runto2", function()
        lua_thread.create(function()
            runToPoint(-405.399994, 2201.020020)
            sampAddChatMessage('running', -1)
        end)
    end)
    wait(-1)
end

function runToPoint(tox, toy)
    local x, y, z = getCharCoordinates(PLAYER_PED)
    local angle = getHeadingFromVector2d(tox - x, toy - y)
    local xAngle = math.random(-50, 50)/100
    setCameraPositionUnfixed(xAngle, math.rad(angle - 90))
    stopRun = false
    while getDistanceBetweenCoords2d(x, y, tox, toy) > 0.8 do
        setGameKeyState(1, -255)
        --setGameKeyState(16, 1)
        wait(1)
        x, y, z = getCharCoordinates(PLAYER_PED)
        angle = getHeadingFromVector2d(tox - x, toy - y)
        setCameraPositionUnfixed(xAngle, math.rad(angle - 90))
        if stopRun then
            stopRun = false
            break
        end
    end
end
 

enyag

Известный
345
12
что не так в скрипте? Почему он флудит?
Lua:
                function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
                    if dialogId == 654 then -- вставляешь нужный ид диалога
                        local count = 0 -- счётчик строк
                        if text:find('Редактируется') then -- если в диалоге существует слово "Редактируется"
                            for line in text:gmatch('[^\r\n]+') do -- парсим каждую строку
                                if line:find('Редактируется') then -- если в строке находим нужное нам слово, то "нажимаем" её
                                    sampSendDialogResponse(dialogId, -1, count, _)
                                    sampSendDialogResponse(685, 1, 0)
                                else -- если нет, продолжаем искать
                                    count = count + 1
                                end
                            end
                        else
                            sampAddChatMessage('Сейчас нет объявлений для редактирования!', -1)
                        end
                        return false
                    end
                end
 

CaJlaT

Овощ
Модератор
2,824
2,649
что не так в скрипте? Почему он флудит?
Lua:
                function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
                    if dialogId == 654 then -- вставляешь нужный ид диалога
                        local count = 0 -- счётчик строк
                        if text:find('Редактируется') then -- если в диалоге существует слово "Редактируется"
                            for line in text:gmatch('[^\r\n]+') do -- парсим каждую строку
                                if line:find('Редактируется') then -- если в строке находим нужное нам слово, то "нажимаем" её
                                    sampSendDialogResponse(dialogId, -1, count, _)
                                    sampSendDialogResponse(685, 1, 0)
                                else -- если нет, продолжаем искать
                                    count = count + 1
                                end
                            end
                        else
                            sampAddChatMessage('Сейчас нет объявлений для редактирования!', -1)
                        end
                        return false
                    end
                end
судя по табуляции ты создал эту функцю внутри другой, а так делать нельзя

Lua:
function main()
    wait(-1)
end
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
    if dialogId == 654 then -- вставляешь нужный ид диалога
        local count = 0 -- счётчик строк
        if text:find('Редактируется') then -- если в диалоге существует слово "Редактируется"
            for line in text:gmatch('[^\r\n]+') do -- парсим каждую строку
                if line:find('Редактируется') then -- если в строке находим нужное нам слово, то "нажимаем" её
                    sampSendDialogResponse(dialogId, -1, count, _)
                    sampSendDialogResponse(685, 1, 0)
                else -- если нет, продолжаем искать
                    count = count + 1
                end
            end
        else
            sampAddChatMessage('Сейчас нет объявлений для редактирования!', -1)
        end
        return false
    end
end
 

enyag

Известный
345
12
судя по табуляции ты создал эту функцю внутри другой, а так делать нельзя

Lua:
function main()
    wait(-1)
end
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
    if dialogId == 654 then -- вставляешь нужный ид диалога
        local count = 0 -- счётчик строк
        if text:find('Редактируется') then -- если в диалоге существует слово "Редактируется"
            for line in text:gmatch('[^\r\n]+') do -- парсим каждую строку
                if line:find('Редактируется') then -- если в строке находим нужное нам слово, то "нажимаем" её
                    sampSendDialogResponse(dialogId, -1, count, _)
                    sampSendDialogResponse(685, 1, 0)
                else -- если нет, продолжаем искать
                    count = count + 1
                end
            end
        else
            sampAddChatMessage('Сейчас нет объявлений для редактирования!', -1)
        end
        return false
    end
end
я не весь код скинул? вот весь
Lua:
script_name("Хелпер CNN")
script_author('enyag')

require('moonloader')
local sampev = require 'lib.samp.events'

local ystav1 = [[
{ffffff}Общее положение.
1.1. Устав является обязательным к соблюдению всеми сотрудниками CNN. За нарушение устава средств массовой информации сотрудник несёт наказание.
1.2. Незнание устава не освобождает от ответственности.
1.3. Сотрудники Cable News Network обязаны соблюдать субординацию, быть вежливыми, грамотными и адекватными.
1.4 Каждый сотрудник Cable News Network обязан соблюдать Уголовный и Административный кодекс штата.
1.5. Все сотрудники Cable News Network и в рабочее и в нерабочее время обязаны подчиняться руководящему составу.
1.6. Сотрудник Cable News Network обязан редактировать объявления независимо от времени суток.
1.7.Сотрудник Cable News Network не имеет право участвовать в мероприятиях Cable News Network.

Рабочий день.
2.1. Каждый сотрудник Cable News Network в рабоче время обязян соблюдать дресс-код.
2.2. Сотрудникам Cable News Network можно находиться в казино или на подработках, но при этом редактировать объявление.?
2.3. Сотрудникам Cable News Network запрещено распивать алкогольные напитки в рабочее время, а также курить в общественных местах.
• Будние дни: с 9:00 до 20:00. Обеденный перерыв: с 12:00 до 13:00.
• Выходные дни: с 10:00 до 19:00. Обеденный перерыв: с 12:00 до 13:00.
2.4. Если сотрудник не появляется на рабочем месте больше 5-ти дней, он будет уволен. [Исключение: оставил заявку на отпуск в новой теме ]


Служебный транспорт.
3.1. Запрещено использование служебного транспорта в личных целях.
3.2. Рабочий транспорт является собственностью Cable News Network.
3.3. Воздушный транспорт разрешено использовать с должности Кадровик [8], либо с разрешения руководящего состава.
3.4. Автомобили Bravura и Landstallker разрешено использовать для рабочих поездок с должности Начинающий Ведущий [3].
3.5. Запрещено оставлять рабочий транспорт в плохом техническом состоянии.
3.6. Запрещена парковка транспорта CNN с нарушением правил дорожного движения.
3.7. Разрешено парковать личный траспорт на парковке CNN, при условии, что он не будет мешать выезду других т/с, а также входу в офис.
3.8. Запрещено оставлять личные вертолёты на вертолётной площадке CNN.
3.9. Любой транспорт CNN разрешено брать с разрешения действующего Директора, или его заместителей.

Субординация.
4.1. Сотрудники Cable News Network должны соблюдать субординацию при общении с коллегами.
4.2. Сотрудникам Cable News Network запрещено выпрашивать должность.
4.3. Сотрудникам Cable News Network запрещено использовать нецензурную лексику ни зависимо в какой чат
4.4. Сотрудникам Cable News Network запрещено спорить с руководящим составом.

Правила пользования рацией.
5.1. При пользовании рацией, сотрудники обязаны быть вежливыми и соблюдать субординацию.
5.2. При пользовании радиоволнами сотрудникам запрещено:
• Покупать / продавать / обменивать что-либо.
• Нести берд (MG), говорить не по теме (Offtop)
• Повышать тон (Caps), оскороблять кого-либо, повторять одно и то же сообщение (Flood)
5.3. При общении, сотрудники обязаны придерживаться официально делового стиля.
5.4. Сотрудники Cable News Network обязаны ходить с включенной рабочей рацией.
5.5. Сотрудникам запрещено игнорировать сообщения.
5.6. Рация департамента(/d) разрешена с должности Водитель - оператор[2].
5.7. Редакторы/Глав.Редакторы должны использовать тег рации: (/r) [P] - [ГР].
]]

local ystav2 = [[
{FFFFFF}Собрание и повышение.
6.1. Для получения повышения сотрудник Cable News Network должен оставить отчёт.Если отчёта нету Директор в праве выдать сотруднику наказание от выговора вплоть до увальнения.
6.1.1. Повышение с должности Стажёр и Водитель-Оператор проходит вне собрания.
6.1.2. Повышение на другие должности проходит строго на собрании.
6.2. Директор может определить лучшего сотрудника недели и выдать ему двойную зарплату.
6.3. Если сотрудник имеет два и более выговоров, то он не может быть повышен, пока их не отработает.
6.4. Собрание проводится каждое воскресенье в 18.00.
6.4.1. На собрании обязаны присутствовать все сотрудники.
6.4.2. На собрании все сотрудники обязаны отключить телефон.


Эфиры.
7.1. Отныне, каждый сотрудник обязан записывать на видео каждый эфир.
7.2. Настоящий директор CNN в любой момент может попросить предоставить запись эфира.
7.3. Если у радио/телеведущего не окажется записи на руках, то директор в праве его уволить.
7.4. Если не будет записи / скриншота Эфира, сотрудник получит [2 выговора].
]]

local pro1 = [[
{FFFFFF}Пункт 1. Общие положения.
1.1. Каждый сотрудник обязан знать и соблюдать П.Р.О.
1.2. За несоблюдение П.Р.О. сотрудник будет наказан.
1.3. Стажёрам [1] разрешено редактировать объявления после сдачи экзамена.
1.4. Интервал между объявлениями 2 минуты.
1.5. Запрещено редактировать объявления, не занимая очередь.
1.6. Запрещено публиковать повторные объявления.
1.7. Если более 7-ми неотредактированных объявлений [/ad], разрешено публиковать с интервалом 1 минута.
1.8. Запрещено публиковать свои же объявления. (Допускается если в штате только 1 сотрудник).
1.9. Запрещено публиковать объявления сотрудников CNN без интервала, не занимая очередь.
1.10. После окончания рабочего дня (19.00 / 20.00) объявления публикуются по мере возможности с минимальным интервалом 1 минута.
1.11. Запрещено не указывать тему объявления.
1.12. Запрещено не указывать цену в объявлении. (исключение: Реклама)
1.13. Запрещено публиковать объявления за деньги.
1.13. Если в объявлении не указана цена, то следует писать:
1.13.1. При покупке: "Бюджет: свободный".
1.13.2. При продаже: "Цена: договорная".
1.14. Если в объявление указана цена в виде "1кк","250к", то следует писать "1.000.000$", "250.000$".
1.15. Запрещено публиковать объявления о продаже огнестрельного оружия и и его макетов.
1.16. Запрещено публиковать объявления о наборе в семью.
1.17. Запрещено публиковать объявления о наборе в банды/мафии (в любой форме).
1.18. Разрешено публиковать объявления о поиске игроков в кости/ спаринг партнёров и прочее.
1.19. Если объявление не соответствует П.Р.О, его следует удалить и обязательно указать причину*.
1.19.1. Если человек отправляет одно и то же объявление несколько раз, то в причине удаления указываем: "Данное объявление уже опубликовано".
1.19.2. Если подаваемое объявление находится в списке объявлений, которые запрещено подавать, указываем: "Не публикуем объявления такого типа".
1.19.3. Если объявление подано "криво"(например: тема: недвижимость, текст: недвижимость), указываем: "Некорректное объявление".
1.19.4. Если, например, при продаже автомобиля не указана марка, указываем причину: "Укажите марку".
1.19.5. Если, например, при продаже недвижимости не указано место, указываем причину: "Укажите местоположение".
1.20. Разрешено публиковать объявления об обмене. [New]
1.21. Разрешено публиковать объявления о продаже каркасных интерьеров.
1.22. Объявление сотрудников Cable News Network редактируются ВНЕ очереди.
1.23. Сотрудники Cable News Network должны подавать сразу отредактированные объявления для их публикации, в противном случае, объявление будет отказано.
1.24. Сотрудники Cable News Network отныне должны иметь доказательства нарушений какого либо пункта П.Р.О при удалении объявлений.
]]

local pro2 = [[
{FFFFFF}Пункт 2. Недвижимость.
2.1. Дома.
2.1.1. При публикации объявления о покупке/продаже дома, следует указывать местоположение/номер.
2.1.2. Если при покупке дома не указано местоположение, следует писать: "Куплю дом в любой точке штата".
2.1.3. Список местоположений:
        -г. Los Santos
        -г. San Fierro
        -г. Las Venturas
        -гора VineWood
        -Опасный район (Гетто)
        -д. Palomino Creek. (Деревня)

2.1.4. Пример объявления:
                Тема: Недвижимость
Текст: Продам дом на г.VineWood. Цена: 5.000.000$

2.1.4. Пример объявления о продаже каркаса:
                Тема: Недвижимость
Текст: Куплю обустроенный каркасный интерьер. Бюджет: свободный

2.2. Постройки.
2.2.1. При публикации объявлений о покупке/продаже постройки, необходимо указывать "возраст" постройки.
2.2.2. Типы построек:
        -Trailer - 3-х лет
        -Nice Barn - 8-ми лет
        -Forester - 10-ти лет
        -Desert Refuge - 15-ти лет
        -Deserted Bunker - 20-ти лет

2.2.3. Пример объявления:
                Тема: Недвижимость
Текст: Продам постройку 20-ти лет. Цена: 100.000$
]]

local pro3 = [[
{FFFFFF}Пункт 3. Транспорт.
- При публикации объявлений о покупке/продаже автомобилей/мотоциклов/авиатранспорта/лодок, необходимо указывать марку.
- Если при покупке транспорта не указана марка, следует писать: "Куплю автомобиль(мотоцикл) любой марки".
3.1. Авторынок.
3.1.1. При редактировании "автомобиль марки" сокращаем так : [ а/м ].
3.1.2. Если при продаже автомобиля указано, что имеется тюнинг, следует писать: "с полным тюнингом", "с элементами тюнинга".
3.1.4. Пример объявления:
                Тема: Авторынок.
Текст: Продам а/м Bullet с полным тюнингом. Цена: договорная

3.2.1. При редактировании "мотоцикл марки" сокращаем так : [ м/м ].
3.2.2. Если при продаже мотоцикла указано, что имеется тюнинг, следует писать: "с полным тюнингом", "с элементами тюнинга".
3.2.4. Пример объявления:
                Тема: Моторынок
Текст: Куплю м/м NRG-500. Бюджет: 400.000$

3.3. Авиарынок.
3.3.1. При редактировании "самолёт марки" сокращаем так : [ с/м ].
3.3.2. При редактировании "вертолёт марки" сокращаем так : [ в/м ].
                Тема: Авиарынок
Текст: Продам с/м Dodo. Цена: 1.000.000$

3.4. Гидрорынок.
3.4.1. При редактировании "лодка/катер марки" сокращаем так : [ л/м ], [к/м].
                Тема: Гидрорынок
Текст: Продам л/м Vortex. Цена: 500.000$
]]

local pro4 = [[
{FFFFFF}Пункт 4. Прочее.
4.1. Психотропные вещества.
4.1.1. При публикации объявлений о покупке/продаже наркотических веществ, следует указывать курс.
4.1.2. Если курс не указан, следует писать: "Курс: договорный".
4.1.3. Запрещено подавать объявления с прямым текстом о продаже/покупке наркотиков.
4.1.4. Следует заменять:
    -Кокаин - порошок Tide
    -LSD - таблетки от головной боли
    -Марихуана - сушёный укроп
    -Speede - таблетки от боли в животе
4.1.5. Пример объявления:
                Тема: Прочее
Текст: Куплю порошок Tide. Курс: 150$

4.2. Подарочное время.
4.2.1. При публикации объявлений о покупке/продаже подарочного времени, следует указывать курс.
4.2.2. Если курс не указан, следует писать: "Курс: договорный".
4.2.3. Пример объявления:
                Тема: Прочее
Текст: Куплю часы с гравировкой *Подарочное*. Курс: 15$

4.3. Документы на семью.
4.3.1. При публикации объявлений о покупке/продаже документов на семью, следует указывать бюджет/цену.
4.3.2. Если цена не указана, следует писать: "Цена: договорная".(Бюджет).
4.3.3. Пример объявления:
                Тема: Прочее
Текст: Продам документы на семью. Цена: 700.000$

4.4. Холодное оружие.
4.4.1. При публикации объявлений о покупке/продажи холодного оружия, следует указывать бюджет/цену.
4.4.2. Если цена не указана, следует писать: "Цена: договорная"(Бюджет).
4.4.3. Запрещено публиковать объявления с прямым текстом о покупке/продаже холодного оружия.
4.4.4. Запрещено публиковать объявления о покупке/продаже бензопилы.
4.4.5. Следует заменять:
    -Нож - кухонный нож
    -Бита - бейсбольная бита
    -Катана - сувенирная катана
    -Клюшка - клюшка для гольфа
    -Цветы - подарочный букет цветов
    -Лопата - лопата для огорода
4.4.5. Пример объявления:
                Тема: Прочее
Продам кухонный нож. Цена: 10.000.000$
]]

local pro5 = [[
{FFFFFF}4.5. Одежда.
4.5.1. При публикации объявлений о покупке/продажи одежды, следует указывать бюджет/цену.
4.5.2. Если цена не указана, следует писать: "Цена: договорная"(Бюджет).
4.5.3. Пример объявления.
                Тема: Прочеe
Продам одежду с биркой №76. Цена: 50.000$

4.6. Аксессуары
4.5.1. При публикации объявлений о покупке/продаже аксессуаров, следует указывать бюджет/цену.
4.5.2. Если цена не указана, следует писать: "Цена: договорная"(Бюджет).
4.5.3. Пример объявления:
                Тема: Прочее
Текст: Продам аксессуар *удочка на спину*. Цена: 1.000.000$

Пункт 5. Ломбард.
5.1. При публикации объявлений о покупке/продаже золотых слитков, следует указывать курс.
5.2. Если курс не указан, следует писать: "Курс: договорный".
5.3. Пример объявления:
                Тема: Ломбард
Текст: Куплю золотые слитки. Курс: 6.000$

Пункт 6. Знакомства.
6.1. При публикации объявлений о поиске друзей/девушек/парней, необходима графа: "О себе: ...".
6.2. Если в этой графе ничего не указано, следует писать: "О себе: при встрече/за чашечкой кофе".
6.3. При публикации объявлений о поиске серьёзных отношений, следует писать: "Ищу девушку/парня для с/о".
6.4. При публикации объявлений о поиске друзей со Skype, Discord и пр, следует писать: "с майкой Discord", "с майкой Skype"
6.5. Пример объявления:
                Тема: Знакомства
Текст: Ищу друга с майкой Discord. О себе: при встрече

6.6. Публикация объявлений о поиске игрока в кости разрешена в следующем виде:
                Тема: Знакомства
Текст: Ищу новые знакомства. О себе: люблю азартные игры

6.7. Публикация объявлений о поиске спаринг партнёров разрешена в следующем виде:
                Тема: Знакомства
Текст: Ищу новые знакомства. О себе: увлекаюсь боксом

Пункт 7. Предприятие.
7.1. При публикации объявлений о покупке/продаже бизнеса, необходимо указывать название предприятия, бюджет/цену.
7.2. Если при покупке название не указано, следует писать: "Куплю предприятие любого типа".
7.3. При продаже запрещено не указывать название предприятия.
7.4. Пример объявления:
                Тема: Предприятие
Текст: Продам предприятие 1-го класса. Цена: 30.000.000$
]]

local pro6 = [[
{FFFFFF}Пункт 8. Реклама.
8.1. При публикации объявлений рекламного типа, разрешено указывать местоположение.
8.2. Если местоположения не указано, следует писать: "В нашем штате...".
8.3. Если это реклама концерта/иного события, следует указывать время проведения.
8.4. Если это реклама предприятия, следует указывать его тип.
8.5. Пример объявления:
                Тема: Реклама
Текст: В г. Los Santos работает автосервис

Пункт 9. Услуги.
9.1. При публикации объявлений о предоставлении услуг, следует указать тип услуги, оплату за неё.
9.2. Если стоимость оплаты не указана, следует писать: "Оплата: договорная".
9.3. Запрещается публикация сомнительных услуг(заказное убийство, проституция).
9.4. Пример объявления:
                Тема: Услуги
Текст: Предоставляю услуги охранника. Оплата: договорная

Пункт 10. Обмены.
10.1 При публикации объявлений об обмене, необязательно указывать цену.
10.2 Если человек обменивается с доплатой, стоит указать: "Доплата: *сумма*".
10.3 Пример объявления:
                Тема: Обмен
Текст: Обменяю а/м Bullet на а/м Infernus
]]

local ppe = [[
{FFFFFF}Пункт 1. Общие положения.
1.1. Каждый сотрудник CNN обязан знать и соблюдать П.П.Э.
1.2. За не соблюдение правил сотрудник будет наказан.
1.3. Проводить эфир [/news] разрешается с должности Папарацци[3].
1.4. Интервал между эфирами 20 минут.
1.5. Эфир должен проводить один человек (Исключение: определённые рубрики, указанные в теме).
1.6. Эфир проводится на одну единую тему.
1.7. Проводить телеэфир [/channel] разрешается с должности Журналист[5].
1.8. Запрещено проводить два эфира подряд с одной и той же рубрикой.
1.9 Сотрудник обязан снимать / скриншотить ответы людей во время эфира.
1.10 Сотрудник Cable News Network не имеет права участвовать в мероприятия от Cable News Network.

Пункт 2. Проведение эфира.
2.1. Перед началом эфира необходимо:
2.1.1. Сообщить в рацию о том, что занимаете эфирную волну.
2.1.2. Сообщить время, на которое занимаете.
2.1.3. Сообщить тему эфира.
2.1.4. Подготовить студию.

2.2. В начале эфира необходимо:
2.2.1. Поприветствовать радиослушателей, представиться.
2.2.2. Сообщить рубрику, которую проводите.
2.2.3. Рассказать правила рубрики.
2.2.4. Сообщить о том, что требуются спонсоры (если призовой эфир).
?
2.3. В эфире запрещается:
2.3.1. Обманывать радиослушателей.
2.3.2. Употреблять нецензурную лексику.
2.3.3. Повышать тон [CAPS].
2.3.4. Многократно повторять одно и то же [flood].
2.3.5. Допускать ошибки.
2.3.5. Использовать биндеры или другие автоматизированные скрипты.

2.4. В конце эфира необходимо:
2.4.1. Сообщить победителя рубрики (если эфир призовой).
2.4.2. Сообщить о том, что заканчиваете эфир.
2.4.3. Сообщить, кто был в эфире.
2.4.3. Попрощаться с радиослушателями.

2.5. После окончания эфира необходимо:
2.5.1. Сообщить в рацию о том, что закончили эфир.
2.5.2. Выдать приз победителю (если призовой эфир).

Пункт 3. Рубрики.
3.1. Рубрики для проведения эфиров указаны в отдельной теме.
3.2. При проведении эфиров приветствуется индивидуальный подход каждого ведущего.
3.3. Новые рубрики необходимо предварительно обговаривать с Директором.

]]

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    sampRegisterChatCommand('cnh', mainm)

    while true do
        wait(0)

        local result, button, list, input = sampHasDialogRespond(5551)
        if result then
            if button == 1 and list == 0 then
                sampShowDialog(4142, "Устав, страница 1", ystav1, "Далее", "Закрыть", 0)
        end
            if button == 1 and list == 1 then
                sampShowDialog(4124, "П.Р.О", pro1, "Далее", "Закрыть", 0)
            end
            if button == 1 and list == 2 then
                sampShowDialog(5234, "П.П.Э", ppe, "Закрыть", "Закрыть", 0)
            end
            if button == 1 and list == 3 then
                function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
                    if dialogId == 654 then -- вставляешь нужный ид диалога
                        local count = 0 -- счётчик строк
                        if text:find('Редактируется') then -- если в диалоге существует слово "Редактируется"
                            for line in text:gmatch('[^\r\n]+') do -- парсим каждую строку
                                if line:find('Редактируется') then -- если в строке находим нужное нам слово, то "нажимаем" её
                                    sampSendDialogResponse(dialogId, -1, count, _)
                                    sampSendDialogResponse(685, 1, 0)
                                else -- если нет, продолжаем искать
                                    count = count + 1
                                end
                            end
                        else
                            sampAddChatMessage('Сейчас нет объявлений для редактирования!', -1)
                        end
                        return false
                    end
                end
            end
            if button == 1 and list == 4 then
                sampAddChatMessage("ку", -1)
            end
        end

        local result, button, list, input = sampHasDialogRespond(4142)
        if result then
            if button == 1 then
                sampShowDialog(4125, "Вторая страница устава.", ystav2, "Закрыть", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(4124)
        if result then
            if button == 1 then
                sampShowDialog(5134, "Вторая страница П.Р.О", pro2, "Далее", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(5134)
        if result then
            if button == 1 then
                sampShowDialog(5413, "Третья страница П.Р.О", pro3, "Далее", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(5413)
        if result then
            if button == 1 then
                sampShowDialog(5414, "Четвертая страница П.Р.О", pro4, "Далее", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(5414)
        if result then
            if button == 1 then
                sampShowDialog(5415, "Пятая страница П.Р.О", pro5, "Далее", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(5415)
        if result then
            if button == 1 then
                sampShowDialog(5416, "Шестая страница П.Р.О", pro6, "Закрыть", "Закрыть", 0)
            end
        end
    end
end

function mainm(arg)
    sampShowDialog(5551, "Helper CNN by ENYAG", "{FFD700}Устав\n{FFD700}П.Р.О\n{FFD700}П.П.Э\n{FFD700}Верстальщик объявлений\n{FFD700}Информация о скрипте", "Выбрать", "Закрыть", 2)
end
 

CaJlaT

Овощ
Модератор
2,824
2,649
я не весь код скинул? вот весь
Lua:
script_name("Хелпер CNN")
script_author('enyag')

require('moonloader')
local sampev = require 'lib.samp.events'

local ystav1 = [[
{ffffff}Общее положение.
1.1. Устав является обязательным к соблюдению всеми сотрудниками CNN. За нарушение устава средств массовой информации сотрудник несёт наказание.
1.2. Незнание устава не освобождает от ответственности.
1.3. Сотрудники Cable News Network обязаны соблюдать субординацию, быть вежливыми, грамотными и адекватными.
1.4 Каждый сотрудник Cable News Network обязан соблюдать Уголовный и Административный кодекс штата.
1.5. Все сотрудники Cable News Network и в рабочее и в нерабочее время обязаны подчиняться руководящему составу.
1.6. Сотрудник Cable News Network обязан редактировать объявления независимо от времени суток.
1.7.Сотрудник Cable News Network не имеет право участвовать в мероприятиях Cable News Network.

Рабочий день.
2.1. Каждый сотрудник Cable News Network в рабоче время обязян соблюдать дресс-код.
2.2. Сотрудникам Cable News Network можно находиться в казино или на подработках, но при этом редактировать объявление.?
2.3. Сотрудникам Cable News Network запрещено распивать алкогольные напитки в рабочее время, а также курить в общественных местах.
• Будние дни: с 9:00 до 20:00. Обеденный перерыв: с 12:00 до 13:00.
• Выходные дни: с 10:00 до 19:00. Обеденный перерыв: с 12:00 до 13:00.
2.4. Если сотрудник не появляется на рабочем месте больше 5-ти дней, он будет уволен. [Исключение: оставил заявку на отпуск в новой теме ]


Служебный транспорт.
3.1. Запрещено использование служебного транспорта в личных целях.
3.2. Рабочий транспорт является собственностью Cable News Network.
3.3. Воздушный транспорт разрешено использовать с должности Кадровик [8], либо с разрешения руководящего состава.
3.4. Автомобили Bravura и Landstallker разрешено использовать для рабочих поездок с должности Начинающий Ведущий [3].
3.5. Запрещено оставлять рабочий транспорт в плохом техническом состоянии.
3.6. Запрещена парковка транспорта CNN с нарушением правил дорожного движения.
3.7. Разрешено парковать личный траспорт на парковке CNN, при условии, что он не будет мешать выезду других т/с, а также входу в офис.
3.8. Запрещено оставлять личные вертолёты на вертолётной площадке CNN.
3.9. Любой транспорт CNN разрешено брать с разрешения действующего Директора, или его заместителей.

Субординация.
4.1. Сотрудники Cable News Network должны соблюдать субординацию при общении с коллегами.
4.2. Сотрудникам Cable News Network запрещено выпрашивать должность.
4.3. Сотрудникам Cable News Network запрещено использовать нецензурную лексику ни зависимо в какой чат
4.4. Сотрудникам Cable News Network запрещено спорить с руководящим составом.

Правила пользования рацией.
5.1. При пользовании рацией, сотрудники обязаны быть вежливыми и соблюдать субординацию.
5.2. При пользовании радиоволнами сотрудникам запрещено:
• Покупать / продавать / обменивать что-либо.
• Нести берд (MG), говорить не по теме (Offtop)
• Повышать тон (Caps), оскороблять кого-либо, повторять одно и то же сообщение (Flood)
5.3. При общении, сотрудники обязаны придерживаться официально делового стиля.
5.4. Сотрудники Cable News Network обязаны ходить с включенной рабочей рацией.
5.5. Сотрудникам запрещено игнорировать сообщения.
5.6. Рация департамента(/d) разрешена с должности Водитель - оператор[2].
5.7. Редакторы/Глав.Редакторы должны использовать тег рации: (/r) [P] - [ГР].
]]

local ystav2 = [[
{FFFFFF}Собрание и повышение.
6.1. Для получения повышения сотрудник Cable News Network должен оставить отчёт.Если отчёта нету Директор в праве выдать сотруднику наказание от выговора вплоть до увальнения.
6.1.1. Повышение с должности Стажёр и Водитель-Оператор проходит вне собрания.
6.1.2. Повышение на другие должности проходит строго на собрании.
6.2. Директор может определить лучшего сотрудника недели и выдать ему двойную зарплату.
6.3. Если сотрудник имеет два и более выговоров, то он не может быть повышен, пока их не отработает.
6.4. Собрание проводится каждое воскресенье в 18.00.
6.4.1. На собрании обязаны присутствовать все сотрудники.
6.4.2. На собрании все сотрудники обязаны отключить телефон.


Эфиры.
7.1. Отныне, каждый сотрудник обязан записывать на видео каждый эфир.
7.2. Настоящий директор CNN в любой момент может попросить предоставить запись эфира.
7.3. Если у радио/телеведущего не окажется записи на руках, то директор в праве его уволить.
7.4. Если не будет записи / скриншота Эфира, сотрудник получит [2 выговора].
]]

local pro1 = [[
{FFFFFF}Пункт 1. Общие положения.
1.1. Каждый сотрудник обязан знать и соблюдать П.Р.О.
1.2. За несоблюдение П.Р.О. сотрудник будет наказан.
1.3. Стажёрам [1] разрешено редактировать объявления после сдачи экзамена.
1.4. Интервал между объявлениями 2 минуты.
1.5. Запрещено редактировать объявления, не занимая очередь.
1.6. Запрещено публиковать повторные объявления.
1.7. Если более 7-ми неотредактированных объявлений [/ad], разрешено публиковать с интервалом 1 минута.
1.8. Запрещено публиковать свои же объявления. (Допускается если в штате только 1 сотрудник).
1.9. Запрещено публиковать объявления сотрудников CNN без интервала, не занимая очередь.
1.10. После окончания рабочего дня (19.00 / 20.00) объявления публикуются по мере возможности с минимальным интервалом 1 минута.
1.11. Запрещено не указывать тему объявления.
1.12. Запрещено не указывать цену в объявлении. (исключение: Реклама)
1.13. Запрещено публиковать объявления за деньги.
1.13. Если в объявлении не указана цена, то следует писать:
1.13.1. При покупке: "Бюджет: свободный".
1.13.2. При продаже: "Цена: договорная".
1.14. Если в объявление указана цена в виде "1кк","250к", то следует писать "1.000.000$", "250.000$".
1.15. Запрещено публиковать объявления о продаже огнестрельного оружия и и его макетов.
1.16. Запрещено публиковать объявления о наборе в семью.
1.17. Запрещено публиковать объявления о наборе в банды/мафии (в любой форме).
1.18. Разрешено публиковать объявления о поиске игроков в кости/ спаринг партнёров и прочее.
1.19. Если объявление не соответствует П.Р.О, его следует удалить и обязательно указать причину*.
1.19.1. Если человек отправляет одно и то же объявление несколько раз, то в причине удаления указываем: "Данное объявление уже опубликовано".
1.19.2. Если подаваемое объявление находится в списке объявлений, которые запрещено подавать, указываем: "Не публикуем объявления такого типа".
1.19.3. Если объявление подано "криво"(например: тема: недвижимость, текст: недвижимость), указываем: "Некорректное объявление".
1.19.4. Если, например, при продаже автомобиля не указана марка, указываем причину: "Укажите марку".
1.19.5. Если, например, при продаже недвижимости не указано место, указываем причину: "Укажите местоположение".
1.20. Разрешено публиковать объявления об обмене. [New]
1.21. Разрешено публиковать объявления о продаже каркасных интерьеров.
1.22. Объявление сотрудников Cable News Network редактируются ВНЕ очереди.
1.23. Сотрудники Cable News Network должны подавать сразу отредактированные объявления для их публикации, в противном случае, объявление будет отказано.
1.24. Сотрудники Cable News Network отныне должны иметь доказательства нарушений какого либо пункта П.Р.О при удалении объявлений.
]]

local pro2 = [[
{FFFFFF}Пункт 2. Недвижимость.
2.1. Дома.
2.1.1. При публикации объявления о покупке/продаже дома, следует указывать местоположение/номер.
2.1.2. Если при покупке дома не указано местоположение, следует писать: "Куплю дом в любой точке штата".
2.1.3. Список местоположений:
        -г. Los Santos
        -г. San Fierro
        -г. Las Venturas
        -гора VineWood
        -Опасный район (Гетто)
        -д. Palomino Creek. (Деревня)

2.1.4. Пример объявления:
                Тема: Недвижимость
Текст: Продам дом на г.VineWood. Цена: 5.000.000$

2.1.4. Пример объявления о продаже каркаса:
                Тема: Недвижимость
Текст: Куплю обустроенный каркасный интерьер. Бюджет: свободный

2.2. Постройки.
2.2.1. При публикации объявлений о покупке/продаже постройки, необходимо указывать "возраст" постройки.
2.2.2. Типы построек:
        -Trailer - 3-х лет
        -Nice Barn - 8-ми лет
        -Forester - 10-ти лет
        -Desert Refuge - 15-ти лет
        -Deserted Bunker - 20-ти лет

2.2.3. Пример объявления:
                Тема: Недвижимость
Текст: Продам постройку 20-ти лет. Цена: 100.000$
]]

local pro3 = [[
{FFFFFF}Пункт 3. Транспорт.
- При публикации объявлений о покупке/продаже автомобилей/мотоциклов/авиатранспорта/лодок, необходимо указывать марку.
- Если при покупке транспорта не указана марка, следует писать: "Куплю автомобиль(мотоцикл) любой марки".
3.1. Авторынок.
3.1.1. При редактировании "автомобиль марки" сокращаем так : [ а/м ].
3.1.2. Если при продаже автомобиля указано, что имеется тюнинг, следует писать: "с полным тюнингом", "с элементами тюнинга".
3.1.4. Пример объявления:
                Тема: Авторынок.
Текст: Продам а/м Bullet с полным тюнингом. Цена: договорная

3.2.1. При редактировании "мотоцикл марки" сокращаем так : [ м/м ].
3.2.2. Если при продаже мотоцикла указано, что имеется тюнинг, следует писать: "с полным тюнингом", "с элементами тюнинга".
3.2.4. Пример объявления:
                Тема: Моторынок
Текст: Куплю м/м NRG-500. Бюджет: 400.000$

3.3. Авиарынок.
3.3.1. При редактировании "самолёт марки" сокращаем так : [ с/м ].
3.3.2. При редактировании "вертолёт марки" сокращаем так : [ в/м ].
                Тема: Авиарынок
Текст: Продам с/м Dodo. Цена: 1.000.000$

3.4. Гидрорынок.
3.4.1. При редактировании "лодка/катер марки" сокращаем так : [ л/м ], [к/м].
                Тема: Гидрорынок
Текст: Продам л/м Vortex. Цена: 500.000$
]]

local pro4 = [[
{FFFFFF}Пункт 4. Прочее.
4.1. Психотропные вещества.
4.1.1. При публикации объявлений о покупке/продаже наркотических веществ, следует указывать курс.
4.1.2. Если курс не указан, следует писать: "Курс: договорный".
4.1.3. Запрещено подавать объявления с прямым текстом о продаже/покупке наркотиков.
4.1.4. Следует заменять:
    -Кокаин - порошок Tide
    -LSD - таблетки от головной боли
    -Марихуана - сушёный укроп
    -Speede - таблетки от боли в животе
4.1.5. Пример объявления:
                Тема: Прочее
Текст: Куплю порошок Tide. Курс: 150$

4.2. Подарочное время.
4.2.1. При публикации объявлений о покупке/продаже подарочного времени, следует указывать курс.
4.2.2. Если курс не указан, следует писать: "Курс: договорный".
4.2.3. Пример объявления:
                Тема: Прочее
Текст: Куплю часы с гравировкой *Подарочное*. Курс: 15$

4.3. Документы на семью.
4.3.1. При публикации объявлений о покупке/продаже документов на семью, следует указывать бюджет/цену.
4.3.2. Если цена не указана, следует писать: "Цена: договорная".(Бюджет).
4.3.3. Пример объявления:
                Тема: Прочее
Текст: Продам документы на семью. Цена: 700.000$

4.4. Холодное оружие.
4.4.1. При публикации объявлений о покупке/продажи холодного оружия, следует указывать бюджет/цену.
4.4.2. Если цена не указана, следует писать: "Цена: договорная"(Бюджет).
4.4.3. Запрещено публиковать объявления с прямым текстом о покупке/продаже холодного оружия.
4.4.4. Запрещено публиковать объявления о покупке/продаже бензопилы.
4.4.5. Следует заменять:
    -Нож - кухонный нож
    -Бита - бейсбольная бита
    -Катана - сувенирная катана
    -Клюшка - клюшка для гольфа
    -Цветы - подарочный букет цветов
    -Лопата - лопата для огорода
4.4.5. Пример объявления:
                Тема: Прочее
Продам кухонный нож. Цена: 10.000.000$
]]

local pro5 = [[
{FFFFFF}4.5. Одежда.
4.5.1. При публикации объявлений о покупке/продажи одежды, следует указывать бюджет/цену.
4.5.2. Если цена не указана, следует писать: "Цена: договорная"(Бюджет).
4.5.3. Пример объявления.
                Тема: Прочеe
Продам одежду с биркой №76. Цена: 50.000$

4.6. Аксессуары
4.5.1. При публикации объявлений о покупке/продаже аксессуаров, следует указывать бюджет/цену.
4.5.2. Если цена не указана, следует писать: "Цена: договорная"(Бюджет).
4.5.3. Пример объявления:
                Тема: Прочее
Текст: Продам аксессуар *удочка на спину*. Цена: 1.000.000$

Пункт 5. Ломбард.
5.1. При публикации объявлений о покупке/продаже золотых слитков, следует указывать курс.
5.2. Если курс не указан, следует писать: "Курс: договорный".
5.3. Пример объявления:
                Тема: Ломбард
Текст: Куплю золотые слитки. Курс: 6.000$

Пункт 6. Знакомства.
6.1. При публикации объявлений о поиске друзей/девушек/парней, необходима графа: "О себе: ...".
6.2. Если в этой графе ничего не указано, следует писать: "О себе: при встрече/за чашечкой кофе".
6.3. При публикации объявлений о поиске серьёзных отношений, следует писать: "Ищу девушку/парня для с/о".
6.4. При публикации объявлений о поиске друзей со Skype, Discord и пр, следует писать: "с майкой Discord", "с майкой Skype"
6.5. Пример объявления:
                Тема: Знакомства
Текст: Ищу друга с майкой Discord. О себе: при встрече

6.6. Публикация объявлений о поиске игрока в кости разрешена в следующем виде:
                Тема: Знакомства
Текст: Ищу новые знакомства. О себе: люблю азартные игры

6.7. Публикация объявлений о поиске спаринг партнёров разрешена в следующем виде:
                Тема: Знакомства
Текст: Ищу новые знакомства. О себе: увлекаюсь боксом

Пункт 7. Предприятие.
7.1. При публикации объявлений о покупке/продаже бизнеса, необходимо указывать название предприятия, бюджет/цену.
7.2. Если при покупке название не указано, следует писать: "Куплю предприятие любого типа".
7.3. При продаже запрещено не указывать название предприятия.
7.4. Пример объявления:
                Тема: Предприятие
Текст: Продам предприятие 1-го класса. Цена: 30.000.000$
]]

local pro6 = [[
{FFFFFF}Пункт 8. Реклама.
8.1. При публикации объявлений рекламного типа, разрешено указывать местоположение.
8.2. Если местоположения не указано, следует писать: "В нашем штате...".
8.3. Если это реклама концерта/иного события, следует указывать время проведения.
8.4. Если это реклама предприятия, следует указывать его тип.
8.5. Пример объявления:
                Тема: Реклама
Текст: В г. Los Santos работает автосервис

Пункт 9. Услуги.
9.1. При публикации объявлений о предоставлении услуг, следует указать тип услуги, оплату за неё.
9.2. Если стоимость оплаты не указана, следует писать: "Оплата: договорная".
9.3. Запрещается публикация сомнительных услуг(заказное убийство, проституция).
9.4. Пример объявления:
                Тема: Услуги
Текст: Предоставляю услуги охранника. Оплата: договорная

Пункт 10. Обмены.
10.1 При публикации объявлений об обмене, необязательно указывать цену.
10.2 Если человек обменивается с доплатой, стоит указать: "Доплата: *сумма*".
10.3 Пример объявления:
                Тема: Обмен
Текст: Обменяю а/м Bullet на а/м Infernus
]]

local ppe = [[
{FFFFFF}Пункт 1. Общие положения.
1.1. Каждый сотрудник CNN обязан знать и соблюдать П.П.Э.
1.2. За не соблюдение правил сотрудник будет наказан.
1.3. Проводить эфир [/news] разрешается с должности Папарацци[3].
1.4. Интервал между эфирами 20 минут.
1.5. Эфир должен проводить один человек (Исключение: определённые рубрики, указанные в теме).
1.6. Эфир проводится на одну единую тему.
1.7. Проводить телеэфир [/channel] разрешается с должности Журналист[5].
1.8. Запрещено проводить два эфира подряд с одной и той же рубрикой.
1.9 Сотрудник обязан снимать / скриншотить ответы людей во время эфира.
1.10 Сотрудник Cable News Network не имеет права участвовать в мероприятия от Cable News Network.

Пункт 2. Проведение эфира.
2.1. Перед началом эфира необходимо:
2.1.1. Сообщить в рацию о том, что занимаете эфирную волну.
2.1.2. Сообщить время, на которое занимаете.
2.1.3. Сообщить тему эфира.
2.1.4. Подготовить студию.

2.2. В начале эфира необходимо:
2.2.1. Поприветствовать радиослушателей, представиться.
2.2.2. Сообщить рубрику, которую проводите.
2.2.3. Рассказать правила рубрики.
2.2.4. Сообщить о том, что требуются спонсоры (если призовой эфир).
?
2.3. В эфире запрещается:
2.3.1. Обманывать радиослушателей.
2.3.2. Употреблять нецензурную лексику.
2.3.3. Повышать тон [CAPS].
2.3.4. Многократно повторять одно и то же [flood].
2.3.5. Допускать ошибки.
2.3.5. Использовать биндеры или другие автоматизированные скрипты.

2.4. В конце эфира необходимо:
2.4.1. Сообщить победителя рубрики (если эфир призовой).
2.4.2. Сообщить о том, что заканчиваете эфир.
2.4.3. Сообщить, кто был в эфире.
2.4.3. Попрощаться с радиослушателями.

2.5. После окончания эфира необходимо:
2.5.1. Сообщить в рацию о том, что закончили эфир.
2.5.2. Выдать приз победителю (если призовой эфир).

Пункт 3. Рубрики.
3.1. Рубрики для проведения эфиров указаны в отдельной теме.
3.2. При проведении эфиров приветствуется индивидуальный подход каждого ведущего.
3.3. Новые рубрики необходимо предварительно обговаривать с Директором.

]]

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    sampRegisterChatCommand('cnh', mainm)

    while true do
        wait(0)

        local result, button, list, input = sampHasDialogRespond(5551)
        if result then
            if button == 1 and list == 0 then
                sampShowDialog(4142, "Устав, страница 1", ystav1, "Далее", "Закрыть", 0)
        end
            if button == 1 and list == 1 then
                sampShowDialog(4124, "П.Р.О", pro1, "Далее", "Закрыть", 0)
            end
            if button == 1 and list == 2 then
                sampShowDialog(5234, "П.П.Э", ppe, "Закрыть", "Закрыть", 0)
            end
            if button == 1 and list == 3 then
                function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
                    if dialogId == 654 then -- вставляешь нужный ид диалога
                        local count = 0 -- счётчик строк
                        if text:find('Редактируется') then -- если в диалоге существует слово "Редактируется"
                            for line in text:gmatch('[^\r\n]+') do -- парсим каждую строку
                                if line:find('Редактируется') then -- если в строке находим нужное нам слово, то "нажимаем" её
                                    sampSendDialogResponse(dialogId, -1, count, _)
                                    sampSendDialogResponse(685, 1, 0)
                                else -- если нет, продолжаем искать
                                    count = count + 1
                                end
                            end
                        else
                            sampAddChatMessage('Сейчас нет объявлений для редактирования!', -1)
                        end
                        return false
                    end
                end
            end
            if button == 1 and list == 4 then
                sampAddChatMessage("ку", -1)
            end
        end

        local result, button, list, input = sampHasDialogRespond(4142)
        if result then
            if button == 1 then
                sampShowDialog(4125, "Вторая страница устава.", ystav2, "Закрыть", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(4124)
        if result then
            if button == 1 then
                sampShowDialog(5134, "Вторая страница П.Р.О", pro2, "Далее", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(5134)
        if result then
            if button == 1 then
                sampShowDialog(5413, "Третья страница П.Р.О", pro3, "Далее", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(5413)
        if result then
            if button == 1 then
                sampShowDialog(5414, "Четвертая страница П.Р.О", pro4, "Далее", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(5414)
        if result then
            if button == 1 then
                sampShowDialog(5415, "Пятая страница П.Р.О", pro5, "Далее", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(5415)
        if result then
            if button == 1 then
                sampShowDialog(5416, "Шестая страница П.Р.О", pro6, "Закрыть", "Закрыть", 0)
            end
        end
    end
end

function mainm(arg)
    sampShowDialog(5551, "Helper CNN by ENYAG", "{FFD700}Устав\n{FFD700}П.Р.О\n{FFD700}П.П.Э\n{FFD700}Верстальщик объявлений\n{FFD700}Информация о скрипте", "Выбрать", "Закрыть", 2)
end
оно и будет флудить, ты СОЗДАЁШЬ функцию в беск. цикле
Lua:
script_name("Хелпер CNN")
script_author('enyag')

require('moonloader')
local sampev = require 'lib.samp.events'

local ystav1 = [[
{ffffff}Общее положение.
1.1. Устав является обязательным к соблюдению всеми сотрудниками CNN. За нарушение устава средств массовой информации сотрудник несёт наказание.
1.2. Незнание устава не освобождает от ответственности.
1.3. Сотрудники Cable News Network обязаны соблюдать субординацию, быть вежливыми, грамотными и адекватными.
1.4 Каждый сотрудник Cable News Network обязан соблюдать Уголовный и Административный кодекс штата.
1.5. Все сотрудники Cable News Network и в рабочее и в нерабочее время обязаны подчиняться руководящему составу.
1.6. Сотрудник Cable News Network обязан редактировать объявления независимо от времени суток.
1.7.Сотрудник Cable News Network не имеет право участвовать в мероприятиях Cable News Network.

Рабочий день.
2.1. Каждый сотрудник Cable News Network в рабоче время обязян соблюдать дресс-код.
2.2. Сотрудникам Cable News Network можно находиться в казино или на подработках, но при этом редактировать объявление.?
2.3. Сотрудникам Cable News Network запрещено распивать алкогольные напитки в рабочее время, а также курить в общественных местах.
• Будние дни: с 9:00 до 20:00. Обеденный перерыв: с 12:00 до 13:00.
• Выходные дни: с 10:00 до 19:00. Обеденный перерыв: с 12:00 до 13:00.
2.4. Если сотрудник не появляется на рабочем месте больше 5-ти дней, он будет уволен. [Исключение: оставил заявку на отпуск в новой теме ]


Служебный транспорт.
3.1. Запрещено использование служебного транспорта в личных целях.
3.2. Рабочий транспорт является собственностью Cable News Network.
3.3. Воздушный транспорт разрешено использовать с должности Кадровик [8], либо с разрешения руководящего состава.
3.4. Автомобили Bravura и Landstallker разрешено использовать для рабочих поездок с должности Начинающий Ведущий [3].
3.5. Запрещено оставлять рабочий транспорт в плохом техническом состоянии.
3.6. Запрещена парковка транспорта CNN с нарушением правил дорожного движения.
3.7. Разрешено парковать личный траспорт на парковке CNN, при условии, что он не будет мешать выезду других т/с, а также входу в офис.
3.8. Запрещено оставлять личные вертолёты на вертолётной площадке CNN.
3.9. Любой транспорт CNN разрешено брать с разрешения действующего Директора, или его заместителей.

Субординация.
4.1. Сотрудники Cable News Network должны соблюдать субординацию при общении с коллегами.
4.2. Сотрудникам Cable News Network запрещено выпрашивать должность.
4.3. Сотрудникам Cable News Network запрещено использовать нецензурную лексику ни зависимо в какой чат
4.4. Сотрудникам Cable News Network запрещено спорить с руководящим составом.

Правила пользования рацией.
5.1. При пользовании рацией, сотрудники обязаны быть вежливыми и соблюдать субординацию.
5.2. При пользовании радиоволнами сотрудникам запрещено:
• Покупать / продавать / обменивать что-либо.
• Нести берд (MG), говорить не по теме (Offtop)
• Повышать тон (Caps), оскороблять кого-либо, повторять одно и то же сообщение (Flood)
5.3. При общении, сотрудники обязаны придерживаться официально делового стиля.
5.4. Сотрудники Cable News Network обязаны ходить с включенной рабочей рацией.
5.5. Сотрудникам запрещено игнорировать сообщения.
5.6. Рация департамента(/d) разрешена с должности Водитель - оператор[2].
5.7. Редакторы/Глав.Редакторы должны использовать тег рации: (/r) [P] - [ГР].
]]

local ystav2 = [[
{FFFFFF}Собрание и повышение.
6.1. Для получения повышения сотрудник Cable News Network должен оставить отчёт.Если отчёта нету Директор в праве выдать сотруднику наказание от выговора вплоть до увальнения.
6.1.1. Повышение с должности Стажёр и Водитель-Оператор проходит вне собрания.
6.1.2. Повышение на другие должности проходит строго на собрании.
6.2. Директор может определить лучшего сотрудника недели и выдать ему двойную зарплату.
6.3. Если сотрудник имеет два и более выговоров, то он не может быть повышен, пока их не отработает.
6.4. Собрание проводится каждое воскресенье в 18.00.
6.4.1. На собрании обязаны присутствовать все сотрудники.
6.4.2. На собрании все сотрудники обязаны отключить телефон.


Эфиры.
7.1. Отныне, каждый сотрудник обязан записывать на видео каждый эфир.
7.2. Настоящий директор CNN в любой момент может попросить предоставить запись эфира.
7.3. Если у радио/телеведущего не окажется записи на руках, то директор в праве его уволить.
7.4. Если не будет записи / скриншота Эфира, сотрудник получит [2 выговора].
]]

local pro1 = [[
{FFFFFF}Пункт 1. Общие положения.
1.1. Каждый сотрудник обязан знать и соблюдать П.Р.О.
1.2. За несоблюдение П.Р.О. сотрудник будет наказан.
1.3. Стажёрам [1] разрешено редактировать объявления после сдачи экзамена.
1.4. Интервал между объявлениями 2 минуты.
1.5. Запрещено редактировать объявления, не занимая очередь.
1.6. Запрещено публиковать повторные объявления.
1.7. Если более 7-ми неотредактированных объявлений [/ad], разрешено публиковать с интервалом 1 минута.
1.8. Запрещено публиковать свои же объявления. (Допускается если в штате только 1 сотрудник).
1.9. Запрещено публиковать объявления сотрудников CNN без интервала, не занимая очередь.
1.10. После окончания рабочего дня (19.00 / 20.00) объявления публикуются по мере возможности с минимальным интервалом 1 минута.
1.11. Запрещено не указывать тему объявления.
1.12. Запрещено не указывать цену в объявлении. (исключение: Реклама)
1.13. Запрещено публиковать объявления за деньги.
1.13. Если в объявлении не указана цена, то следует писать:
1.13.1. При покупке: "Бюджет: свободный".
1.13.2. При продаже: "Цена: договорная".
1.14. Если в объявление указана цена в виде "1кк","250к", то следует писать "1.000.000$", "250.000$".
1.15. Запрещено публиковать объявления о продаже огнестрельного оружия и и его макетов.
1.16. Запрещено публиковать объявления о наборе в семью.
1.17. Запрещено публиковать объявления о наборе в банды/мафии (в любой форме).
1.18. Разрешено публиковать объявления о поиске игроков в кости/ спаринг партнёров и прочее.
1.19. Если объявление не соответствует П.Р.О, его следует удалить и обязательно указать причину*.
1.19.1. Если человек отправляет одно и то же объявление несколько раз, то в причине удаления указываем: "Данное объявление уже опубликовано".
1.19.2. Если подаваемое объявление находится в списке объявлений, которые запрещено подавать, указываем: "Не публикуем объявления такого типа".
1.19.3. Если объявление подано "криво"(например: тема: недвижимость, текст: недвижимость), указываем: "Некорректное объявление".
1.19.4. Если, например, при продаже автомобиля не указана марка, указываем причину: "Укажите марку".
1.19.5. Если, например, при продаже недвижимости не указано место, указываем причину: "Укажите местоположение".
1.20. Разрешено публиковать объявления об обмене. [New]
1.21. Разрешено публиковать объявления о продаже каркасных интерьеров.
1.22. Объявление сотрудников Cable News Network редактируются ВНЕ очереди.
1.23. Сотрудники Cable News Network должны подавать сразу отредактированные объявления для их публикации, в противном случае, объявление будет отказано.
1.24. Сотрудники Cable News Network отныне должны иметь доказательства нарушений какого либо пункта П.Р.О при удалении объявлений.
]]

local pro2 = [[
{FFFFFF}Пункт 2. Недвижимость.
2.1. Дома.
2.1.1. При публикации объявления о покупке/продаже дома, следует указывать местоположение/номер.
2.1.2. Если при покупке дома не указано местоположение, следует писать: "Куплю дом в любой точке штата".
2.1.3. Список местоположений:
        -г. Los Santos
        -г. San Fierro
        -г. Las Venturas
        -гора VineWood
        -Опасный район (Гетто)
        -д. Palomino Creek. (Деревня)

2.1.4. Пример объявления:
                Тема: Недвижимость
Текст: Продам дом на г.VineWood. Цена: 5.000.000$

2.1.4. Пример объявления о продаже каркаса:
                Тема: Недвижимость
Текст: Куплю обустроенный каркасный интерьер. Бюджет: свободный

2.2. Постройки.
2.2.1. При публикации объявлений о покупке/продаже постройки, необходимо указывать "возраст" постройки.
2.2.2. Типы построек:
        -Trailer - 3-х лет
        -Nice Barn - 8-ми лет
        -Forester - 10-ти лет
        -Desert Refuge - 15-ти лет
        -Deserted Bunker - 20-ти лет

2.2.3. Пример объявления:
                Тема: Недвижимость
Текст: Продам постройку 20-ти лет. Цена: 100.000$
]]

local pro3 = [[
{FFFFFF}Пункт 3. Транспорт.
- При публикации объявлений о покупке/продаже автомобилей/мотоциклов/авиатранспорта/лодок, необходимо указывать марку.
- Если при покупке транспорта не указана марка, следует писать: "Куплю автомобиль(мотоцикл) любой марки".
3.1. Авторынок.
3.1.1. При редактировании "автомобиль марки" сокращаем так : [ а/м ].
3.1.2. Если при продаже автомобиля указано, что имеется тюнинг, следует писать: "с полным тюнингом", "с элементами тюнинга".
3.1.4. Пример объявления:
                Тема: Авторынок.
Текст: Продам а/м Bullet с полным тюнингом. Цена: договорная

3.2.1. При редактировании "мотоцикл марки" сокращаем так : [ м/м ].
3.2.2. Если при продаже мотоцикла указано, что имеется тюнинг, следует писать: "с полным тюнингом", "с элементами тюнинга".
3.2.4. Пример объявления:
                Тема: Моторынок
Текст: Куплю м/м NRG-500. Бюджет: 400.000$

3.3. Авиарынок.
3.3.1. При редактировании "самолёт марки" сокращаем так : [ с/м ].
3.3.2. При редактировании "вертолёт марки" сокращаем так : [ в/м ].
                Тема: Авиарынок
Текст: Продам с/м Dodo. Цена: 1.000.000$

3.4. Гидрорынок.
3.4.1. При редактировании "лодка/катер марки" сокращаем так : [ л/м ], [к/м].
                Тема: Гидрорынок
Текст: Продам л/м Vortex. Цена: 500.000$
]]

local pro4 = [[
{FFFFFF}Пункт 4. Прочее.
4.1. Психотропные вещества.
4.1.1. При публикации объявлений о покупке/продаже наркотических веществ, следует указывать курс.
4.1.2. Если курс не указан, следует писать: "Курс: договорный".
4.1.3. Запрещено подавать объявления с прямым текстом о продаже/покупке наркотиков.
4.1.4. Следует заменять:
    -Кокаин - порошок Tide
    -LSD - таблетки от головной боли
    -Марихуана - сушёный укроп
    -Speede - таблетки от боли в животе
4.1.5. Пример объявления:
                Тема: Прочее
Текст: Куплю порошок Tide. Курс: 150$

4.2. Подарочное время.
4.2.1. При публикации объявлений о покупке/продаже подарочного времени, следует указывать курс.
4.2.2. Если курс не указан, следует писать: "Курс: договорный".
4.2.3. Пример объявления:
                Тема: Прочее
Текст: Куплю часы с гравировкой *Подарочное*. Курс: 15$

4.3. Документы на семью.
4.3.1. При публикации объявлений о покупке/продаже документов на семью, следует указывать бюджет/цену.
4.3.2. Если цена не указана, следует писать: "Цена: договорная".(Бюджет).
4.3.3. Пример объявления:
                Тема: Прочее
Текст: Продам документы на семью. Цена: 700.000$

4.4. Холодное оружие.
4.4.1. При публикации объявлений о покупке/продажи холодного оружия, следует указывать бюджет/цену.
4.4.2. Если цена не указана, следует писать: "Цена: договорная"(Бюджет).
4.4.3. Запрещено публиковать объявления с прямым текстом о покупке/продаже холодного оружия.
4.4.4. Запрещено публиковать объявления о покупке/продаже бензопилы.
4.4.5. Следует заменять:
    -Нож - кухонный нож
    -Бита - бейсбольная бита
    -Катана - сувенирная катана
    -Клюшка - клюшка для гольфа
    -Цветы - подарочный букет цветов
    -Лопата - лопата для огорода
4.4.5. Пример объявления:
                Тема: Прочее
Продам кухонный нож. Цена: 10.000.000$
]]

local pro5 = [[
{FFFFFF}4.5. Одежда.
4.5.1. При публикации объявлений о покупке/продажи одежды, следует указывать бюджет/цену.
4.5.2. Если цена не указана, следует писать: "Цена: договорная"(Бюджет).
4.5.3. Пример объявления.
                Тема: Прочеe
Продам одежду с биркой №76. Цена: 50.000$

4.6. Аксессуары
4.5.1. При публикации объявлений о покупке/продаже аксессуаров, следует указывать бюджет/цену.
4.5.2. Если цена не указана, следует писать: "Цена: договорная"(Бюджет).
4.5.3. Пример объявления:
                Тема: Прочее
Текст: Продам аксессуар *удочка на спину*. Цена: 1.000.000$

Пункт 5. Ломбард.
5.1. При публикации объявлений о покупке/продаже золотых слитков, следует указывать курс.
5.2. Если курс не указан, следует писать: "Курс: договорный".
5.3. Пример объявления:
                Тема: Ломбард
Текст: Куплю золотые слитки. Курс: 6.000$

Пункт 6. Знакомства.
6.1. При публикации объявлений о поиске друзей/девушек/парней, необходима графа: "О себе: ...".
6.2. Если в этой графе ничего не указано, следует писать: "О себе: при встрече/за чашечкой кофе".
6.3. При публикации объявлений о поиске серьёзных отношений, следует писать: "Ищу девушку/парня для с/о".
6.4. При публикации объявлений о поиске друзей со Skype, Discord и пр, следует писать: "с майкой Discord", "с майкой Skype"
6.5. Пример объявления:
                Тема: Знакомства
Текст: Ищу друга с майкой Discord. О себе: при встрече

6.6. Публикация объявлений о поиске игрока в кости разрешена в следующем виде:
                Тема: Знакомства
Текст: Ищу новые знакомства. О себе: люблю азартные игры

6.7. Публикация объявлений о поиске спаринг партнёров разрешена в следующем виде:
                Тема: Знакомства
Текст: Ищу новые знакомства. О себе: увлекаюсь боксом

Пункт 7. Предприятие.
7.1. При публикации объявлений о покупке/продаже бизнеса, необходимо указывать название предприятия, бюджет/цену.
7.2. Если при покупке название не указано, следует писать: "Куплю предприятие любого типа".
7.3. При продаже запрещено не указывать название предприятия.
7.4. Пример объявления:
                Тема: Предприятие
Текст: Продам предприятие 1-го класса. Цена: 30.000.000$
]]

local pro6 = [[
{FFFFFF}Пункт 8. Реклама.
8.1. При публикации объявлений рекламного типа, разрешено указывать местоположение.
8.2. Если местоположения не указано, следует писать: "В нашем штате...".
8.3. Если это реклама концерта/иного события, следует указывать время проведения.
8.4. Если это реклама предприятия, следует указывать его тип.
8.5. Пример объявления:
                Тема: Реклама
Текст: В г. Los Santos работает автосервис

Пункт 9. Услуги.
9.1. При публикации объявлений о предоставлении услуг, следует указать тип услуги, оплату за неё.
9.2. Если стоимость оплаты не указана, следует писать: "Оплата: договорная".
9.3. Запрещается публикация сомнительных услуг(заказное убийство, проституция).
9.4. Пример объявления:
                Тема: Услуги
Текст: Предоставляю услуги охранника. Оплата: договорная

Пункт 10. Обмены.
10.1 При публикации объявлений об обмене, необязательно указывать цену.
10.2 Если человек обменивается с доплатой, стоит указать: "Доплата: *сумма*".
10.3 Пример объявления:
                Тема: Обмен
Текст: Обменяю а/м Bullet на а/м Infernus
]]

local ppe = [[
{FFFFFF}Пункт 1. Общие положения.
1.1. Каждый сотрудник CNN обязан знать и соблюдать П.П.Э.
1.2. За не соблюдение правил сотрудник будет наказан.
1.3. Проводить эфир [/news] разрешается с должности Папарацци[3].
1.4. Интервал между эфирами 20 минут.
1.5. Эфир должен проводить один человек (Исключение: определённые рубрики, указанные в теме).
1.6. Эфир проводится на одну единую тему.
1.7. Проводить телеэфир [/channel] разрешается с должности Журналист[5].
1.8. Запрещено проводить два эфира подряд с одной и той же рубрикой.
1.9 Сотрудник обязан снимать / скриншотить ответы людей во время эфира.
1.10 Сотрудник Cable News Network не имеет права участвовать в мероприятия от Cable News Network.

Пункт 2. Проведение эфира.
2.1. Перед началом эфира необходимо:
2.1.1. Сообщить в рацию о том, что занимаете эфирную волну.
2.1.2. Сообщить время, на которое занимаете.
2.1.3. Сообщить тему эфира.
2.1.4. Подготовить студию.

2.2. В начале эфира необходимо:
2.2.1. Поприветствовать радиослушателей, представиться.
2.2.2. Сообщить рубрику, которую проводите.
2.2.3. Рассказать правила рубрики.
2.2.4. Сообщить о том, что требуются спонсоры (если призовой эфир).
?
2.3. В эфире запрещается:
2.3.1. Обманывать радиослушателей.
2.3.2. Употреблять нецензурную лексику.
2.3.3. Повышать тон [CAPS].
2.3.4. Многократно повторять одно и то же [flood].
2.3.5. Допускать ошибки.
2.3.5. Использовать биндеры или другие автоматизированные скрипты.

2.4. В конце эфира необходимо:
2.4.1. Сообщить победителя рубрики (если эфир призовой).
2.4.2. Сообщить о том, что заканчиваете эфир.
2.4.3. Сообщить, кто был в эфире.
2.4.3. Попрощаться с радиослушателями.

2.5. После окончания эфира необходимо:
2.5.1. Сообщить в рацию о том, что закончили эфир.
2.5.2. Выдать приз победителю (если призовой эфир).

Пункт 3. Рубрики.
3.1. Рубрики для проведения эфиров указаны в отдельной теме.
3.2. При проведении эфиров приветствуется индивидуальный подход каждого ведущего.
3.3. Новые рубрики необходимо предварительно обговаривать с Директором.

]]

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    sampRegisterChatCommand('cnh', mainm)

    while true do
        wait(0)

        local result, button, list, input = sampHasDialogRespond(5551)
        if result then
            if button == 1 and list == 0 then
                sampShowDialog(4142, "Устав, страница 1", ystav1, "Далее", "Закрыть", 0)
        end
            if button == 1 and list == 1 then
                sampShowDialog(4124, "П.Р.О", pro1, "Далее", "Закрыть", 0)
            end
            if button == 1 and list == 2 then
                sampShowDialog(5234, "П.П.Э", ppe, "Закрыть", "Закрыть", 0)
            end
            if button == 1 and list == 3 then
                -- не знаю, что тут должно быть, но явно не создание функции
            end
            if button == 1 and list == 4 then
                sampAddChatMessage("ку", -1)
            end
        end

        local result, button, list, input = sampHasDialogRespond(4142)
        if result then
            if button == 1 then
                sampShowDialog(4125, "Вторая страница устава.", ystav2, "Закрыть", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(4124)
        if result then
            if button == 1 then
                sampShowDialog(5134, "Вторая страница П.Р.О", pro2, "Далее", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(5134)
        if result then
            if button == 1 then
                sampShowDialog(5413, "Третья страница П.Р.О", pro3, "Далее", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(5413)
        if result then
            if button == 1 then
                sampShowDialog(5414, "Четвертая страница П.Р.О", pro4, "Далее", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(5414)
        if result then
            if button == 1 then
                sampShowDialog(5415, "Пятая страница П.Р.О", pro5, "Далее", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(5415)
        if result then
            if button == 1 then
                sampShowDialog(5416, "Шестая страница П.Р.О", pro6, "Закрыть", "Закрыть", 0)
            end
        end
    end
end

function mainm(arg)
    sampShowDialog(5551, "Helper CNN by ENYAG", "{FFD700}Устав\n{FFD700}П.Р.О\n{FFD700}П.П.Э\n{FFD700}Верстальщик объявлений\n{FFD700}Информация о скрипте", "Выбрать", "Закрыть", 2)
end
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
    if dialogId == 654 then -- вставляешь нужный ид диалога
        local count = 0 -- счётчик строк
        if text:find('Редактируется') then -- если в диалоге существует слово "Редактируется"
            for line in text:gmatch('[^\r\n]+') do -- парсим каждую строку
                if line:find('Редактируется') then -- если в строке находим нужное нам слово, то "нажимаем" её
                    sampSendDialogResponse(dialogId, -1, count, _)
                    sampSendDialogResponse(685, 1, 0)
                else -- если нет, продолжаем искать
                    count = count + 1
                end
            end
        else
            sampAddChatMessage('Сейчас нет объявлений для редактирования!', -1)
        end
        return false
    end
end
 

Dima2280

Новичок
1
0
Такой вопросик, а как сделать coordmaster для сампа по чекпоинту, чтобы он еще и в низ опускался? Заранее спасибо за ответ!
 

enyag

Известный
345
12
оно и будет флудить, ты СОЗДАЁШЬ функцию в беск. цикле
Lua:
script_name("Хелпер CNN")
script_author('enyag')

require('moonloader')
local sampev = require 'lib.samp.events'

local ystav1 = [[
{ffffff}Общее положение.
1.1. Устав является обязательным к соблюдению всеми сотрудниками CNN. За нарушение устава средств массовой информации сотрудник несёт наказание.
1.2. Незнание устава не освобождает от ответственности.
1.3. Сотрудники Cable News Network обязаны соблюдать субординацию, быть вежливыми, грамотными и адекватными.
1.4 Каждый сотрудник Cable News Network обязан соблюдать Уголовный и Административный кодекс штата.
1.5. Все сотрудники Cable News Network и в рабочее и в нерабочее время обязаны подчиняться руководящему составу.
1.6. Сотрудник Cable News Network обязан редактировать объявления независимо от времени суток.
1.7.Сотрудник Cable News Network не имеет право участвовать в мероприятиях Cable News Network.

Рабочий день.
2.1. Каждый сотрудник Cable News Network в рабоче время обязян соблюдать дресс-код.
2.2. Сотрудникам Cable News Network можно находиться в казино или на подработках, но при этом редактировать объявление.?
2.3. Сотрудникам Cable News Network запрещено распивать алкогольные напитки в рабочее время, а также курить в общественных местах.
• Будние дни: с 9:00 до 20:00. Обеденный перерыв: с 12:00 до 13:00.
• Выходные дни: с 10:00 до 19:00. Обеденный перерыв: с 12:00 до 13:00.
2.4. Если сотрудник не появляется на рабочем месте больше 5-ти дней, он будет уволен. [Исключение: оставил заявку на отпуск в новой теме ]


Служебный транспорт.
3.1. Запрещено использование служебного транспорта в личных целях.
3.2. Рабочий транспорт является собственностью Cable News Network.
3.3. Воздушный транспорт разрешено использовать с должности Кадровик [8], либо с разрешения руководящего состава.
3.4. Автомобили Bravura и Landstallker разрешено использовать для рабочих поездок с должности Начинающий Ведущий [3].
3.5. Запрещено оставлять рабочий транспорт в плохом техническом состоянии.
3.6. Запрещена парковка транспорта CNN с нарушением правил дорожного движения.
3.7. Разрешено парковать личный траспорт на парковке CNN, при условии, что он не будет мешать выезду других т/с, а также входу в офис.
3.8. Запрещено оставлять личные вертолёты на вертолётной площадке CNN.
3.9. Любой транспорт CNN разрешено брать с разрешения действующего Директора, или его заместителей.

Субординация.
4.1. Сотрудники Cable News Network должны соблюдать субординацию при общении с коллегами.
4.2. Сотрудникам Cable News Network запрещено выпрашивать должность.
4.3. Сотрудникам Cable News Network запрещено использовать нецензурную лексику ни зависимо в какой чат
4.4. Сотрудникам Cable News Network запрещено спорить с руководящим составом.

Правила пользования рацией.
5.1. При пользовании рацией, сотрудники обязаны быть вежливыми и соблюдать субординацию.
5.2. При пользовании радиоволнами сотрудникам запрещено:
• Покупать / продавать / обменивать что-либо.
• Нести берд (MG), говорить не по теме (Offtop)
• Повышать тон (Caps), оскороблять кого-либо, повторять одно и то же сообщение (Flood)
5.3. При общении, сотрудники обязаны придерживаться официально делового стиля.
5.4. Сотрудники Cable News Network обязаны ходить с включенной рабочей рацией.
5.5. Сотрудникам запрещено игнорировать сообщения.
5.6. Рация департамента(/d) разрешена с должности Водитель - оператор[2].
5.7. Редакторы/Глав.Редакторы должны использовать тег рации: (/r) [P] - [ГР].
]]

local ystav2 = [[
{FFFFFF}Собрание и повышение.
6.1. Для получения повышения сотрудник Cable News Network должен оставить отчёт.Если отчёта нету Директор в праве выдать сотруднику наказание от выговора вплоть до увальнения.
6.1.1. Повышение с должности Стажёр и Водитель-Оператор проходит вне собрания.
6.1.2. Повышение на другие должности проходит строго на собрании.
6.2. Директор может определить лучшего сотрудника недели и выдать ему двойную зарплату.
6.3. Если сотрудник имеет два и более выговоров, то он не может быть повышен, пока их не отработает.
6.4. Собрание проводится каждое воскресенье в 18.00.
6.4.1. На собрании обязаны присутствовать все сотрудники.
6.4.2. На собрании все сотрудники обязаны отключить телефон.


Эфиры.
7.1. Отныне, каждый сотрудник обязан записывать на видео каждый эфир.
7.2. Настоящий директор CNN в любой момент может попросить предоставить запись эфира.
7.3. Если у радио/телеведущего не окажется записи на руках, то директор в праве его уволить.
7.4. Если не будет записи / скриншота Эфира, сотрудник получит [2 выговора].
]]

local pro1 = [[
{FFFFFF}Пункт 1. Общие положения.
1.1. Каждый сотрудник обязан знать и соблюдать П.Р.О.
1.2. За несоблюдение П.Р.О. сотрудник будет наказан.
1.3. Стажёрам [1] разрешено редактировать объявления после сдачи экзамена.
1.4. Интервал между объявлениями 2 минуты.
1.5. Запрещено редактировать объявления, не занимая очередь.
1.6. Запрещено публиковать повторные объявления.
1.7. Если более 7-ми неотредактированных объявлений [/ad], разрешено публиковать с интервалом 1 минута.
1.8. Запрещено публиковать свои же объявления. (Допускается если в штате только 1 сотрудник).
1.9. Запрещено публиковать объявления сотрудников CNN без интервала, не занимая очередь.
1.10. После окончания рабочего дня (19.00 / 20.00) объявления публикуются по мере возможности с минимальным интервалом 1 минута.
1.11. Запрещено не указывать тему объявления.
1.12. Запрещено не указывать цену в объявлении. (исключение: Реклама)
1.13. Запрещено публиковать объявления за деньги.
1.13. Если в объявлении не указана цена, то следует писать:
1.13.1. При покупке: "Бюджет: свободный".
1.13.2. При продаже: "Цена: договорная".
1.14. Если в объявление указана цена в виде "1кк","250к", то следует писать "1.000.000$", "250.000$".
1.15. Запрещено публиковать объявления о продаже огнестрельного оружия и и его макетов.
1.16. Запрещено публиковать объявления о наборе в семью.
1.17. Запрещено публиковать объявления о наборе в банды/мафии (в любой форме).
1.18. Разрешено публиковать объявления о поиске игроков в кости/ спаринг партнёров и прочее.
1.19. Если объявление не соответствует П.Р.О, его следует удалить и обязательно указать причину*.
1.19.1. Если человек отправляет одно и то же объявление несколько раз, то в причине удаления указываем: "Данное объявление уже опубликовано".
1.19.2. Если подаваемое объявление находится в списке объявлений, которые запрещено подавать, указываем: "Не публикуем объявления такого типа".
1.19.3. Если объявление подано "криво"(например: тема: недвижимость, текст: недвижимость), указываем: "Некорректное объявление".
1.19.4. Если, например, при продаже автомобиля не указана марка, указываем причину: "Укажите марку".
1.19.5. Если, например, при продаже недвижимости не указано место, указываем причину: "Укажите местоположение".
1.20. Разрешено публиковать объявления об обмене. [New]
1.21. Разрешено публиковать объявления о продаже каркасных интерьеров.
1.22. Объявление сотрудников Cable News Network редактируются ВНЕ очереди.
1.23. Сотрудники Cable News Network должны подавать сразу отредактированные объявления для их публикации, в противном случае, объявление будет отказано.
1.24. Сотрудники Cable News Network отныне должны иметь доказательства нарушений какого либо пункта П.Р.О при удалении объявлений.
]]

local pro2 = [[
{FFFFFF}Пункт 2. Недвижимость.
2.1. Дома.
2.1.1. При публикации объявления о покупке/продаже дома, следует указывать местоположение/номер.
2.1.2. Если при покупке дома не указано местоположение, следует писать: "Куплю дом в любой точке штата".
2.1.3. Список местоположений:
        -г. Los Santos
        -г. San Fierro
        -г. Las Venturas
        -гора VineWood
        -Опасный район (Гетто)
        -д. Palomino Creek. (Деревня)

2.1.4. Пример объявления:
                Тема: Недвижимость
Текст: Продам дом на г.VineWood. Цена: 5.000.000$

2.1.4. Пример объявления о продаже каркаса:
                Тема: Недвижимость
Текст: Куплю обустроенный каркасный интерьер. Бюджет: свободный

2.2. Постройки.
2.2.1. При публикации объявлений о покупке/продаже постройки, необходимо указывать "возраст" постройки.
2.2.2. Типы построек:
        -Trailer - 3-х лет
        -Nice Barn - 8-ми лет
        -Forester - 10-ти лет
        -Desert Refuge - 15-ти лет
        -Deserted Bunker - 20-ти лет

2.2.3. Пример объявления:
                Тема: Недвижимость
Текст: Продам постройку 20-ти лет. Цена: 100.000$
]]

local pro3 = [[
{FFFFFF}Пункт 3. Транспорт.
- При публикации объявлений о покупке/продаже автомобилей/мотоциклов/авиатранспорта/лодок, необходимо указывать марку.
- Если при покупке транспорта не указана марка, следует писать: "Куплю автомобиль(мотоцикл) любой марки".
3.1. Авторынок.
3.1.1. При редактировании "автомобиль марки" сокращаем так : [ а/м ].
3.1.2. Если при продаже автомобиля указано, что имеется тюнинг, следует писать: "с полным тюнингом", "с элементами тюнинга".
3.1.4. Пример объявления:
                Тема: Авторынок.
Текст: Продам а/м Bullet с полным тюнингом. Цена: договорная

3.2.1. При редактировании "мотоцикл марки" сокращаем так : [ м/м ].
3.2.2. Если при продаже мотоцикла указано, что имеется тюнинг, следует писать: "с полным тюнингом", "с элементами тюнинга".
3.2.4. Пример объявления:
                Тема: Моторынок
Текст: Куплю м/м NRG-500. Бюджет: 400.000$

3.3. Авиарынок.
3.3.1. При редактировании "самолёт марки" сокращаем так : [ с/м ].
3.3.2. При редактировании "вертолёт марки" сокращаем так : [ в/м ].
                Тема: Авиарынок
Текст: Продам с/м Dodo. Цена: 1.000.000$

3.4. Гидрорынок.
3.4.1. При редактировании "лодка/катер марки" сокращаем так : [ л/м ], [к/м].
                Тема: Гидрорынок
Текст: Продам л/м Vortex. Цена: 500.000$
]]

local pro4 = [[
{FFFFFF}Пункт 4. Прочее.
4.1. Психотропные вещества.
4.1.1. При публикации объявлений о покупке/продаже наркотических веществ, следует указывать курс.
4.1.2. Если курс не указан, следует писать: "Курс: договорный".
4.1.3. Запрещено подавать объявления с прямым текстом о продаже/покупке наркотиков.
4.1.4. Следует заменять:
    -Кокаин - порошок Tide
    -LSD - таблетки от головной боли
    -Марихуана - сушёный укроп
    -Speede - таблетки от боли в животе
4.1.5. Пример объявления:
                Тема: Прочее
Текст: Куплю порошок Tide. Курс: 150$

4.2. Подарочное время.
4.2.1. При публикации объявлений о покупке/продаже подарочного времени, следует указывать курс.
4.2.2. Если курс не указан, следует писать: "Курс: договорный".
4.2.3. Пример объявления:
                Тема: Прочее
Текст: Куплю часы с гравировкой *Подарочное*. Курс: 15$

4.3. Документы на семью.
4.3.1. При публикации объявлений о покупке/продаже документов на семью, следует указывать бюджет/цену.
4.3.2. Если цена не указана, следует писать: "Цена: договорная".(Бюджет).
4.3.3. Пример объявления:
                Тема: Прочее
Текст: Продам документы на семью. Цена: 700.000$

4.4. Холодное оружие.
4.4.1. При публикации объявлений о покупке/продажи холодного оружия, следует указывать бюджет/цену.
4.4.2. Если цена не указана, следует писать: "Цена: договорная"(Бюджет).
4.4.3. Запрещено публиковать объявления с прямым текстом о покупке/продаже холодного оружия.
4.4.4. Запрещено публиковать объявления о покупке/продаже бензопилы.
4.4.5. Следует заменять:
    -Нож - кухонный нож
    -Бита - бейсбольная бита
    -Катана - сувенирная катана
    -Клюшка - клюшка для гольфа
    -Цветы - подарочный букет цветов
    -Лопата - лопата для огорода
4.4.5. Пример объявления:
                Тема: Прочее
Продам кухонный нож. Цена: 10.000.000$
]]

local pro5 = [[
{FFFFFF}4.5. Одежда.
4.5.1. При публикации объявлений о покупке/продажи одежды, следует указывать бюджет/цену.
4.5.2. Если цена не указана, следует писать: "Цена: договорная"(Бюджет).
4.5.3. Пример объявления.
                Тема: Прочеe
Продам одежду с биркой №76. Цена: 50.000$

4.6. Аксессуары
4.5.1. При публикации объявлений о покупке/продаже аксессуаров, следует указывать бюджет/цену.
4.5.2. Если цена не указана, следует писать: "Цена: договорная"(Бюджет).
4.5.3. Пример объявления:
                Тема: Прочее
Текст: Продам аксессуар *удочка на спину*. Цена: 1.000.000$

Пункт 5. Ломбард.
5.1. При публикации объявлений о покупке/продаже золотых слитков, следует указывать курс.
5.2. Если курс не указан, следует писать: "Курс: договорный".
5.3. Пример объявления:
                Тема: Ломбард
Текст: Куплю золотые слитки. Курс: 6.000$

Пункт 6. Знакомства.
6.1. При публикации объявлений о поиске друзей/девушек/парней, необходима графа: "О себе: ...".
6.2. Если в этой графе ничего не указано, следует писать: "О себе: при встрече/за чашечкой кофе".
6.3. При публикации объявлений о поиске серьёзных отношений, следует писать: "Ищу девушку/парня для с/о".
6.4. При публикации объявлений о поиске друзей со Skype, Discord и пр, следует писать: "с майкой Discord", "с майкой Skype"
6.5. Пример объявления:
                Тема: Знакомства
Текст: Ищу друга с майкой Discord. О себе: при встрече

6.6. Публикация объявлений о поиске игрока в кости разрешена в следующем виде:
                Тема: Знакомства
Текст: Ищу новые знакомства. О себе: люблю азартные игры

6.7. Публикация объявлений о поиске спаринг партнёров разрешена в следующем виде:
                Тема: Знакомства
Текст: Ищу новые знакомства. О себе: увлекаюсь боксом

Пункт 7. Предприятие.
7.1. При публикации объявлений о покупке/продаже бизнеса, необходимо указывать название предприятия, бюджет/цену.
7.2. Если при покупке название не указано, следует писать: "Куплю предприятие любого типа".
7.3. При продаже запрещено не указывать название предприятия.
7.4. Пример объявления:
                Тема: Предприятие
Текст: Продам предприятие 1-го класса. Цена: 30.000.000$
]]

local pro6 = [[
{FFFFFF}Пункт 8. Реклама.
8.1. При публикации объявлений рекламного типа, разрешено указывать местоположение.
8.2. Если местоположения не указано, следует писать: "В нашем штате...".
8.3. Если это реклама концерта/иного события, следует указывать время проведения.
8.4. Если это реклама предприятия, следует указывать его тип.
8.5. Пример объявления:
                Тема: Реклама
Текст: В г. Los Santos работает автосервис

Пункт 9. Услуги.
9.1. При публикации объявлений о предоставлении услуг, следует указать тип услуги, оплату за неё.
9.2. Если стоимость оплаты не указана, следует писать: "Оплата: договорная".
9.3. Запрещается публикация сомнительных услуг(заказное убийство, проституция).
9.4. Пример объявления:
                Тема: Услуги
Текст: Предоставляю услуги охранника. Оплата: договорная

Пункт 10. Обмены.
10.1 При публикации объявлений об обмене, необязательно указывать цену.
10.2 Если человек обменивается с доплатой, стоит указать: "Доплата: *сумма*".
10.3 Пример объявления:
                Тема: Обмен
Текст: Обменяю а/м Bullet на а/м Infernus
]]

local ppe = [[
{FFFFFF}Пункт 1. Общие положения.
1.1. Каждый сотрудник CNN обязан знать и соблюдать П.П.Э.
1.2. За не соблюдение правил сотрудник будет наказан.
1.3. Проводить эфир [/news] разрешается с должности Папарацци[3].
1.4. Интервал между эфирами 20 минут.
1.5. Эфир должен проводить один человек (Исключение: определённые рубрики, указанные в теме).
1.6. Эфир проводится на одну единую тему.
1.7. Проводить телеэфир [/channel] разрешается с должности Журналист[5].
1.8. Запрещено проводить два эфира подряд с одной и той же рубрикой.
1.9 Сотрудник обязан снимать / скриншотить ответы людей во время эфира.
1.10 Сотрудник Cable News Network не имеет права участвовать в мероприятия от Cable News Network.

Пункт 2. Проведение эфира.
2.1. Перед началом эфира необходимо:
2.1.1. Сообщить в рацию о том, что занимаете эфирную волну.
2.1.2. Сообщить время, на которое занимаете.
2.1.3. Сообщить тему эфира.
2.1.4. Подготовить студию.

2.2. В начале эфира необходимо:
2.2.1. Поприветствовать радиослушателей, представиться.
2.2.2. Сообщить рубрику, которую проводите.
2.2.3. Рассказать правила рубрики.
2.2.4. Сообщить о том, что требуются спонсоры (если призовой эфир).
?
2.3. В эфире запрещается:
2.3.1. Обманывать радиослушателей.
2.3.2. Употреблять нецензурную лексику.
2.3.3. Повышать тон [CAPS].
2.3.4. Многократно повторять одно и то же [flood].
2.3.5. Допускать ошибки.
2.3.5. Использовать биндеры или другие автоматизированные скрипты.

2.4. В конце эфира необходимо:
2.4.1. Сообщить победителя рубрики (если эфир призовой).
2.4.2. Сообщить о том, что заканчиваете эфир.
2.4.3. Сообщить, кто был в эфире.
2.4.3. Попрощаться с радиослушателями.

2.5. После окончания эфира необходимо:
2.5.1. Сообщить в рацию о том, что закончили эфир.
2.5.2. Выдать приз победителю (если призовой эфир).

Пункт 3. Рубрики.
3.1. Рубрики для проведения эфиров указаны в отдельной теме.
3.2. При проведении эфиров приветствуется индивидуальный подход каждого ведущего.
3.3. Новые рубрики необходимо предварительно обговаривать с Директором.

]]

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    sampRegisterChatCommand('cnh', mainm)

    while true do
        wait(0)

        local result, button, list, input = sampHasDialogRespond(5551)
        if result then
            if button == 1 and list == 0 then
                sampShowDialog(4142, "Устав, страница 1", ystav1, "Далее", "Закрыть", 0)
        end
            if button == 1 and list == 1 then
                sampShowDialog(4124, "П.Р.О", pro1, "Далее", "Закрыть", 0)
            end
            if button == 1 and list == 2 then
                sampShowDialog(5234, "П.П.Э", ppe, "Закрыть", "Закрыть", 0)
            end
            if button == 1 and list == 3 then
                -- не знаю, что тут должно быть, но явно не создание функции
            end
            if button == 1 and list == 4 then
                sampAddChatMessage("ку", -1)
            end
        end

        local result, button, list, input = sampHasDialogRespond(4142)
        if result then
            if button == 1 then
                sampShowDialog(4125, "Вторая страница устава.", ystav2, "Закрыть", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(4124)
        if result then
            if button == 1 then
                sampShowDialog(5134, "Вторая страница П.Р.О", pro2, "Далее", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(5134)
        if result then
            if button == 1 then
                sampShowDialog(5413, "Третья страница П.Р.О", pro3, "Далее", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(5413)
        if result then
            if button == 1 then
                sampShowDialog(5414, "Четвертая страница П.Р.О", pro4, "Далее", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(5414)
        if result then
            if button == 1 then
                sampShowDialog(5415, "Пятая страница П.Р.О", pro5, "Далее", "Закрыть", 0)
            end
        end

        local result, button, list, input = sampHasDialogRespond(5415)
        if result then
            if button == 1 then
                sampShowDialog(5416, "Шестая страница П.Р.О", pro6, "Закрыть", "Закрыть", 0)
            end
        end
    end
end

function mainm(arg)
    sampShowDialog(5551, "Helper CNN by ENYAG", "{FFD700}Устав\n{FFD700}П.Р.О\n{FFD700}П.П.Э\n{FFD700}Верстальщик объявлений\n{FFD700}Информация о скрипте", "Выбрать", "Закрыть", 2)
end
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
    if dialogId == 654 then -- вставляешь нужный ид диалога
        local count = 0 -- счётчик строк
        if text:find('Редактируется') then -- если в диалоге существует слово "Редактируется"
            for line in text:gmatch('[^\r\n]+') do -- парсим каждую строку
                if line:find('Редактируется') then -- если в строке находим нужное нам слово, то "нажимаем" её
                    sampSendDialogResponse(dialogId, -1, count, _)
                    sampSendDialogResponse(685, 1, 0)
                else -- если нет, продолжаем искать
                    count = count + 1
                end
            end
        else
            sampAddChatMessage('Сейчас нет объявлений для редактирования!', -1)
        end
        return false
    end
end
local result, button, list, input = sampHasDialogRespond()
не работает вне бесконечного цикла