✖ Отклонено Лаунчер | OOC сообщения из чата в консоль SAMPFUNCS. Скрипт Lua.

  • Привет!
    Для полноценного и удобного использования всего форумного функционала рекомендуем зарегистрироваться на игровом сервере и форуме, после чего привязать игровой аккаунт к форумному.
Статус
В этой теме нельзя размещать новые ответы.

Sabbath_Massacre

Новый участник
24
9
3
1) Ваш NickName: Sabbath_Massacre

2) Подробное описание вашего предложения:
В меню есть прекрасная настройка, которая может отключать ненужные сообщения в чате.

Grand Theft Auto  San Andreas Screenshot 2025.01.08 - 03.31.02.97.png

Но к сожалению нет возможности убрать ООС сообщения из чата, которые выделяются скобками (( )).
Понятное дело там может быть информации об откате или объяснения в рации по поводу системных тонкостей мода, и как то сервером скрывать их было бы неразумно так как сообщениям сохраняться негде и скорее всего они бы удалялись бесследно.

Но есть одно прекрасное решение.
Есть луа скрипт, он запускается, но работает не так как надо. Его бы доделать, но я не понимаю этот эльфийский язык.
Его бы чуть чуть доработать под пирс и добавить в сборку лаунчера. По задумке он должен переносить все сообщения, которые выделяются (( )) из чата на экране в консоль SAMPFUNCS`a.

Код:
require 'lib.moonloader'
local e = require 'lib.samp.events'
local status = false
function main()
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('rp', function() status = not status printStringNow(status and 'RPChat ~g~ON' or 'RPChat ~r~OFF', 1000) end)
    sampRegisterChatCommand('cc', function() for i = 1, 99 do sampAddChatMessage('', -1) end end)
    wait(-1)
end
function e.onServerMessage(color, text)
    if status then
        sampfuncsLog(string.format('{%s}[%s] %s', tostring(bit.tohex(color)):sub(1, 6), os.date('%X'), text))
        if text:find('((', 1, true) or text:find('))', 1, true) or text:find('SMS:') then
            if tostring(bit.tohex(color)) ~= 'e75480ff' and tostring(bit.tohex(color)) ~= '6699ffaa' then
                addOneOffSound(0, 0, 0, 1138)
                return false
            end
        end
        if not isRolePlay(color, text) then return false end
     
        -- Обрати внимание на добавленный кусок кода.
        if text:find("достал из кармана телефон и отправил sms") or
           text:find("ДРУГОЙ ТЕКСТ")
        then
            return false
        end
    end
end
function isRolePlay(c, t)
    return tostring(bit.tohex(c)) == 'e75480ff'
    or tostring(bit.tohex(c)) == 'c2a2daff'
    or tostring(bit.tohex(c)) == '4dc9c9ff'
    or tostring(bit.tohex(c)) == 'BB6666FF'
    or t:find('сказал:', 1, true)
or t:find('крикнул:', 1, true)
or t:find('по телефону:', 1, true)
end
Код:
require('lib.moonloader')
local e = require('lib.samp.events')

local status = false

function main()
    while (not isSampAvailable()) do
        wait(100)
    end

    sampRegisterChatCommand('rp', function()
        status = not status
        printStringNow(status and 'RPChat ~g~ON' or 'RPChat ~r~OFF', 1000)
    end)

    sampRegisterChatCommand('cc', function()
        for i = 1, 99 do
            sampAddChatMessage('', -1)
        end
    end)
    wait(-1)
end

function e.onServerMessage(color, text)
    if status then
        sampfuncsLog(string.format('{%s}[%s] %s', tostring(bit.tohex(color)):sub(1, 6), os.date('%X'), text))
        if string.find(text, '%(%(', 1, true) or string.find(text, '%)%)', 1, true) or string.find(text, 'Ответ от администратора') then
            if tostring(bit.tohex(color)) ~= 'e75480ff' and tostring(bit.tohex(color)) ~= '6699ffaa' then
                addOneOffSound(0, 0, 0, 1138)
                return false
            end
        end
        return not(isRolePlay(color, text))
    end
end

local TalbeColor = {
    'e75480ff',
    'e6e6e6e6',
    '6e6e6e6e',
    '8c8c8c8c',
    'aaaaaaaa',
    '00c6ffff',
    'c8c8c8c8',
    'ffff00aa', -- мегафон
    'ff9945aa', -- микрофон
    'ffffccaa', -- /r
    'e6e6b8aa', -- /rr
}

function isRolePlay(c, t)
    for i = 1, #TalbeColor do
        if tostring(bit.tohex(c)) == TalbeColor[i] then
            return true
        end
    end
    return string.find(t,'[Телефон]', 1, true) or string.find(t, '[Дверь]', 1, true)
end

Сейчас этот скрипт переносит либо все сообщения из чата в консоль со звуковым сигналом, либо не те которые надо. /me он оставляет в чате.

Он должен работать следующим образом: Если в строчке чата появляется сообщение которые содержит эти скобочки (( )) то скрипт удаляет эту строчку и переносит в консоль SAMPFUNCS`a в нетронутом виде. Переносит он со звуковым сигналом который берётся из игры по id звука самой игры, то есть дополнительных звуковых файлов не нужно для работы скрипта.

Grand Theft Auto  San Andreas Screenshot 2025.01.08 - 03.29.39.12.png

Включается и выключается он командой /rpchat. Так же в нём есть очистка чата, её лучше бы вырезать от туда, да она и так не работает в нём.

Grand Theft Auto  San Andreas Screenshot 2025.01.08 - 03.30.46.93.pngGrand Theft Auto  San Andreas Screenshot 2025.01.08 - 03.30.49.65.png

3) Чем ваше предложение поможет проекту или игрокам:
- Меньше ООС сообщений в чате, в рации.
- Можно играть только по IC информации, не отвлекаясь на ООС сообщения.

4) Примеры и концепты для реализации идеи:
1. Скрипт включается и выключается командой /rpchat
2. Если в чат приходит сообщение которое содержит в себе скобочки (( )), то оно удаляется из чата со звуковым сигналом.
4. Удалённая из чата строка переносится в консоль SAMPFUNCS`a.
5. Добавить исключение на слова, что бы ОСС сообщения об откате оставались в основном чате:
- (( Откат ))
- (( ОТКАТ ))
- (( откат ))
- (( ! ))
 
Последнее редактирование:
  • Мне нравится
Реакции: Arthur Morgan
1) Ваш NickName: Sabbath_Massacre

2) Подробное описание вашего предложения:
В меню есть прекрасная настройка, которая может отключать ненужные сообщения в чате.

Посмотреть вложение 21653

Но к сожалению нет возможности убрать ООС сообщения из чата, которые выделяются скобками (( )).
Понятное дело там может быть информации об откате или объяснения в рации по поводу системных тонкостей мода, и как то сервером скрывать их было бы неразумно так как сообщениям сохраняться негде и скорее всего они бы удалялись бесследно.

Но есть одно прекрасное решение.
Есть луа скрипт, он запускается, но работает не так как надо. Его бы доделать, но я не понимаю этот эльфийский язык.
Его бы чуть чуть доработать под пирс и добавить в сборку лаунчера. По задумке он должен переносить все сообщения, которые выделяются (( )) из чата на экране в консоль SAMPFUNCS`a.

Код:
require 'lib.moonloader'
local e = require 'lib.samp.events'
local status = false
function main()
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('rp', function() status = not status printStringNow(status and 'RPChat ~g~ON' or 'RPChat ~r~OFF', 1000) end)
    sampRegisterChatCommand('cc', function() for i = 1, 99 do sampAddChatMessage('', -1) end end)
    wait(-1)
end
function e.onServerMessage(color, text)
    if status then
        sampfuncsLog(string.format('{%s}[%s] %s', tostring(bit.tohex(color)):sub(1, 6), os.date('%X'), text))
        if text:find('((', 1, true) or text:find('))', 1, true) or text:find('SMS:') then
            if tostring(bit.tohex(color)) ~= 'e75480ff' and tostring(bit.tohex(color)) ~= '6699ffaa' then
                addOneOffSound(0, 0, 0, 1138)
                return false
            end
        end
        if not isRolePlay(color, text) then return false end
   
        -- Обрати внимание на добавленный кусок кода.
        if text:find("достал из кармана телефон и отправил sms") or
           text:find("ДРУГОЙ ТЕКСТ")
        then
            return false
        end
    end
end
function isRolePlay(c, t)
    return tostring(bit.tohex(c)) == 'e75480ff'
    or tostring(bit.tohex(c)) == 'c2a2daff'
    or tostring(bit.tohex(c)) == '4dc9c9ff'
    or tostring(bit.tohex(c)) == 'BB6666FF'
    or t:find('сказал:', 1, true)
or t:find('крикнул:', 1, true)
or t:find('по телефону:', 1, true)
end
Код:
require('lib.moonloader')
local e = require('lib.samp.events')

local status = false

function main()
    while (not isSampAvailable()) do
        wait(100)
    end

    sampRegisterChatCommand('rp', function()
        status = not status
        printStringNow(status and 'RPChat ~g~ON' or 'RPChat ~r~OFF', 1000)
    end)

    sampRegisterChatCommand('cc', function()
        for i = 1, 99 do
            sampAddChatMessage('', -1)
        end
    end)
    wait(-1)
end

function e.onServerMessage(color, text)
    if status then
        sampfuncsLog(string.format('{%s}[%s] %s', tostring(bit.tohex(color)):sub(1, 6), os.date('%X'), text))
        if string.find(text, '%(%(', 1, true) or string.find(text, '%)%)', 1, true) or string.find(text, 'Ответ от администратора') then
            if tostring(bit.tohex(color)) ~= 'e75480ff' and tostring(bit.tohex(color)) ~= '6699ffaa' then
                addOneOffSound(0, 0, 0, 1138)
                return false
            end
        end
        return not(isRolePlay(color, text))
    end
end

local TalbeColor = {
    'e75480ff',
    'e6e6e6e6',
    '6e6e6e6e',
    '8c8c8c8c',
    'aaaaaaaa',
    '00c6ffff',
    'c8c8c8c8',
    'ffff00aa', -- мегафон
    'ff9945aa', -- микрофон
    'ffffccaa', -- /r
    'e6e6b8aa', -- /rr
}

function isRolePlay(c, t)
    for i = 1, #TalbeColor do
        if tostring(bit.tohex(c)) == TalbeColor[i] then
            return true
        end
    end
    return string.find(t,'[Телефон]', 1, true) or string.find(t, '[Дверь]', 1, true)
end

Сейчас этот скрипт переносит либо все сообщения из чата в консоль со звуковым сигналом, либо не те которые надо. /me он оставляет в чате.

Он должен работать следующим образом: Если в строчке чата появляется сообщение которые содержит эти скобочки (( )) то скрипт удаляет эту строчку и переносит в консоль SAMPFUNCS`a в нетронутом виде. Переносит он со звуковым сигналом который берётся из игры по id звука самой игры, то есть дополнительных звуковых файлов не нужно для работы скрипта.

Посмотреть вложение 21655

Включается и выключается он командой /rpchat. Так же в нём есть очистка чата, её лучше бы вырезать от туда, да она и так не работает в нём.

Посмотреть вложение 21656Посмотреть вложение 21657

3) Чем ваше предложение поможет проекту или игрокам:
- Меньше ООС сообщений в чате, в рации.
- Можно играть только по IC информации, не отвлекаясь на ООС сообщения.

4) Примеры и концепты для реализации идеи:
1. Скрипт включается и выключается командой /rpchat
2. Если в чат приходит сообщение которое содержит в себе скобочки (( )), то оно удаляется из чата со звуковым сигналом.
4. Удалённая из чата строка переносится в консоль SAMPFUNCS`a.
5. Добавить исключение на слова, что бы ОСС сообщения об откате оставались в основном чате:
- (( Откат ))
- (( ОТКАТ ))
- (( откат ))
- (( ! ))
Держи скрипт , подредачил его , все работает по заказу выводит /b в Ё
Команда по умолчанию
ССылка на диск - код открыт https://disk.yandex.ru/d/RVw4IZU8A51V5A
 
Последнее редактирование:
  • Влюблён
Реакции: Sabbath_Massacre
Держи скрипт , подредачил его , все работает по заказу выводит /b в Ё
Команда по умолчанию
ССылка на диск - код открыт https://disk.yandex.ru/d/RVw4IZU8A51V5A
Работает шикарно, как швейцарские часы!)))) Спасибо огромное, теперь играть намного приятнее стало)))
3й файл использую тот что потяжелее, остальные не установлены.
 
Последнее редактирование:
Отредактированный скрипт предоставлен игроком выше, вы можете его использовать на свой страх и риск, не наблюдаю надобности добавлять подобный скрипт в лаунчер, вы можете самостоятельно модифицировать и редактировать сборку лаунчера, для этого отключите автоочистку в настройках и установите необходимые скрипты и плагины.
 
Статус
В этой теме нельзя размещать новые ответы.