Перенос строк

Gomes

Новичок
Автор темы
5
1
Версия MoonLoader
Другое
Есть скриптик который переносит сообщение на следующую строку если количество символов превышает заданное количество. Но в этом скрипте есть небольшая загвоздка, скрипт отправляет перенесенное сообщение мгновенно и у всеми известного сервера система "Не Флуди" эти сообщения удаляет. Хотелось бы узнать как добавить задержку между отправкой. Сам скрипт: upload
Код:
Lua:
script_name("extraMessages")
script_version_number("0.3.1")
script_description("Divides one long message into two short messages. Upgrade Advance-RP SMS system")
script_author("AppleThe")

local sampev = require 'lib.samp.events'
commands = {"f", "r", "t", "n", "w", "s"}
bi = false

function sampev.onSendCommand(msg)
    if bi then bi = false; return end
    local cmd, msg = msg:match("/(%S*) (.*)")
    if msg == nil then return end
    -- cmd = cmd:lower()

    --Рация, радио, ООС чат, шепот, крик (с поддержкой переноса ООС-скобок)
    for i, v in ipairs(commands) do if cmd == v then
        local length = msg:len()
        if msg:sub(1, 2) == "((" then
            msg = string.gsub(msg:sub(4), "%)%)", "")
            if length > 80 then divide(msg, "/" .. cmd .. " (( ", " ))"); return false end
        else
            if length > 80 then divide(msg, "/" .. cmd .. " ", ""); return false end
        end
    end end

    --РП команды
    if cmd == "me" or cmd == "do" then
        local length = msg:len()
        if length > 75 then divide(msg, "/" .. cmd .. " ", "", "ext"); return false end
    end

    --SMS
    if cmd == "sms" then
        local msg = "{}" .. msg
        local number, _msg = msg:match("{}(%d+) (.*)")
        local msg = msg:sub(3)
        if _msg == nil then -- если номер не указан, ищется ближайшее полученное/отправленное сообщение
            for i = 1, 99 do                     -- номер берется из него
                local test = sampGetChatString(i):match("SMS: .* | .*: (.*)")
                if test ~= nil then number = string.match(test, ".* %[.*%.(%d+)%]") end
            end
        else msg = _msg end
        if number == nil then return end
        local length = msg:len()

        -- long SMS
        if length > 66 then divide(msg, "/sms " .. number .. " ", "", "sms"); return false end

        -- short SMS
        if length < 66 then bi = true; sampSendChat("/sms " .. number .. " " .. msg); return false end
    end
end

function sampev.onServerMessage(color, text)
    if color == -65281 and text:find(" %| Получатель: ") then
        return {bit.tobit(0xFFCC00FF), text}
    end
end

function sampev.onSendChat(msg) -- IC чат
    if bi then bi = false; return end
    local length = msg:len()
    if length > 90 then
        divide(msg, "", "")
        return false
    end
end

function divide(msg, beginning, ending, doing) -- разделение сообщения msg на два
    if doing == "sms" then limit = 57 else limit = 72 end
   
    -- -- -- ВЕРСИЯ С ПРИОРИТЕТОМ ТЕКСТА ДЛЯ ПЕРВОГО СООБЩЕНИЯ (ХУЕТА) -- -- --
    -- local one, two = string.match(msg:sub(limit), "(%S*) (.*)")
    -- if one == nil then one = "" end
    -- local one, two = msg:sub(1, limit - 1) .. one .. "...", "..." .. two
   
    -- ВЕРСИЯ С ПРИОРИТЕТОМ ТЕКСТА ДЛЯ ВТОРОГО СООБЩЕНИЯ (ЗБС НО НЕ РАБОТАЕТ) --
    -- local one, two = string.match(msg:sub(1, msg:len() - limit), "(.*) (.*)")
    -- if two == nil then two = "" end
    -- local one, two = one .. "...", "..." .. two .. msg:sub(msg:len() - limit + 1, msg:len())
   
    -- ВЕРСИЯ С ПРИОРИТЕТОМ ТЕКСТА ДЛЯ ВТОРОГО СООБЩЕНИЯ (ПОКА ЧТО РАБОТАЕТ) --
    local one, two = string.match(msg:sub(1, limit), "(.*) (.*)")
    if two == nil then two = "" end
    local one, two = one .. "...", "..." .. two .. msg:sub(limit + 1, msg:len())

    bi = true; sampSendChat(beginning .. one .. ending)
    if doing == "ext" then
        beginning = "/do "
        if two:sub(-1) ~= "." then two = two .. "." end
    end
    bi = true; sampSendChat(beginning .. two .. ending)
end

function main()
  if not isCleoLoaded() or not isSampfuncsLoaded() or not isSampLoaded() then return end
  while not isSampAvailable() do wait(100) end
    if not sampGetCurrentServerName():find("Advance RolePlay") then return end
    wait(-1)
end
https://www.upload.ee/files/13163266/ExtraMessages.lua.html
 
  • Нравится
Реакции: w99zzl1

w99zzl1

Участник
40
3
Есть скриптик который переносит сообщение на следующую строку если количество символов превышает заданное количество. Но в этом скрипте есть небольшая загвоздка, скрипт отправляет перенесенное сообщение мгновенно и у всеми известного сервера система "Не Флуди" эти сообщения удаляет. Хотелось бы узнать как добавить задержку между отправкой. Сам скрипт: upload
Код:
Lua:
script_name("extraMessages")
script_version_number("0.3.1")
script_description("Divides one long message into two short messages. Upgrade Advance-RP SMS system")
script_author("AppleThe")

local sampev = require 'lib.samp.events'
commands = {"f", "r", "t", "n", "w", "s"}
bi = false

function sampev.onSendCommand(msg)
    if bi then bi = false; return end
    local cmd, msg = msg:match("/(%S*) (.*)")
    if msg == nil then return end
    -- cmd = cmd:lower()

    --Рация, радио, ООС чат, шепот, крик (с поддержкой переноса ООС-скобок)
    for i, v in ipairs(commands) do if cmd == v then
        local length = msg:len()
        if msg:sub(1, 2) == "((" then
            msg = string.gsub(msg:sub(4), "%)%)", "")
            if length > 80 then divide(msg, "/" .. cmd .. " (( ", " ))"); return false end
        else
            if length > 80 then divide(msg, "/" .. cmd .. " ", ""); return false end
        end
    end end

    --РП команды
    if cmd == "me" or cmd == "do" then
        local length = msg:len()
        if length > 75 then divide(msg, "/" .. cmd .. " ", "", "ext"); return false end
    end

    --SMS
    if cmd == "sms" then
        local msg = "{}" .. msg
        local number, _msg = msg:match("{}(%d+) (.*)")
        local msg = msg:sub(3)
        if _msg == nil then -- если номер не указан, ищется ближайшее полученное/отправленное сообщение
            for i = 1, 99 do                     -- номер берется из него
                local test = sampGetChatString(i):match("SMS: .* | .*: (.*)")
                if test ~= nil then number = string.match(test, ".* %[.*%.(%d+)%]") end
            end
        else msg = _msg end
        if number == nil then return end
        local length = msg:len()

        -- long SMS
        if length > 66 then divide(msg, "/sms " .. number .. " ", "", "sms"); return false end

        -- short SMS
        if length < 66 then bi = true; sampSendChat("/sms " .. number .. " " .. msg); return false end
    end
end

function sampev.onServerMessage(color, text)
    if color == -65281 and text:find(" %| Получатель: ") then
        return {bit.tobit(0xFFCC00FF), text}
    end
end

function sampev.onSendChat(msg) -- IC чат
    if bi then bi = false; return end
    local length = msg:len()
    if length > 90 then
        divide(msg, "", "")
        return false
    end
end

function divide(msg, beginning, ending, doing) -- разделение сообщения msg на два
    if doing == "sms" then limit = 57 else limit = 72 end
  
    -- -- -- ВЕРСИЯ С ПРИОРИТЕТОМ ТЕКСТА ДЛЯ ПЕРВОГО СООБЩЕНИЯ (ХУЕТА) -- -- --
    -- local one, two = string.match(msg:sub(limit), "(%S*) (.*)")
    -- if one == nil then one = "" end
    -- local one, two = msg:sub(1, limit - 1) .. one .. "...", "..." .. two
  
    -- ВЕРСИЯ С ПРИОРИТЕТОМ ТЕКСТА ДЛЯ ВТОРОГО СООБЩЕНИЯ (ЗБС НО НЕ РАБОТАЕТ) --
    -- local one, two = string.match(msg:sub(1, msg:len() - limit), "(.*) (.*)")
    -- if two == nil then two = "" end
    -- local one, two = one .. "...", "..." .. two .. msg:sub(msg:len() - limit + 1, msg:len())
  
    -- ВЕРСИЯ С ПРИОРИТЕТОМ ТЕКСТА ДЛЯ ВТОРОГО СООБЩЕНИЯ (ПОКА ЧТО РАБОТАЕТ) --
    local one, two = string.match(msg:sub(1, limit), "(.*) (.*)")
    if two == nil then two = "" end
    local one, two = one .. "...", "..." .. two .. msg:sub(limit + 1, msg:len())

    bi = true; sampSendChat(beginning .. one .. ending)
    if doing == "ext" then
        beginning = "/do "
        if two:sub(-1) ~= "." then two = two .. "." end
    end
    bi = true; sampSendChat(beginning .. two .. ending)
end

function main()
  if not isCleoLoaded() or not isSampfuncsLoaded() or not isSampLoaded() then return end
  while not isSampAvailable() do wait(100) end
    if not sampGetCurrentServerName():find("Advance RolePlay") then return end
    wait(-1)
end
https://www.upload.ee/files/13163266/ExtraMessages.lua.html
Бро, очень годно! Работает на ура! Ты лучший! Но есть просьба. на самп Advance добавили новую команду, /re это быстро отпраить репорт, не заходя в меню и не выбирать связь с адм. и я такой что могу в /re дифирамбы писать, дабы понятно описать проблему/вопрос/жалобу. А ещё в начале я всегда пишу "Добрый день" или "Здравствуйте" и т.д. поэтому очень часто мне приходится самому переносить строки, как этот скрипт с /f /r и т.д. Поэтому буду благодарен если сделаешь и такой скрипт, а точнее скинешь код) Заранее спасибо!!