Помогите удалить геймтекст

yufFKa

Известный
Автор темы
267
105
Версия SA-MP
  1. 0.3.7-R3
Помогите, пожалуйста. Хочу удалить вот этот геймтекст:

1:
function main()
    while not isSampAvailable() do wait(0) end
end

require('samp.events').onDisplayGameText = function(style, time, text)
    if text:find('Энергетический щит был') then   
    return false end
end

2:
local sampev = require("samp.events")

function sampev.onDisplayGameText()
    if text:find('энергетический щит был перезагружен') then
    return false end
end
 
Решение
че за хуйню вы про кодировки пишете? Кириллица в геймтекстах работает так же как и в текстдравах ТЫК. Выведи текст через print и просто скопируй его. Что бы избежать приколов скопируй его из moonloader.log, а не из консоли.
Выглядеть должно примерно так
1734862967112.png

kinamaster22

Известный
1,272
190
Помогите, пожалуйста. Хочу удалить вот этот геймтекст:

1:
function main()
    while not isSampAvailable() do wait(0) end
end

require('samp.events').onDisplayGameText = function(style, time, text)
    if text:find('Энергетический щит был') then  
    return false end
end

2:
local sampev = require("samp.events")

function sampev.onDisplayGameText()
    if text:find('энергетический щит был перезагружен') then
    return false end
end
С помощью этого узнай как точно пишется тот текст
Lua:
local sampev = require('lib.samp.events')

function sampev.onDisplayGameText(style, time, text)
    print(string.format("Найденный текст: '%s'", text))
    return true
end
А потом всё так же используй
Код:
local sampev = require('lib.samp.events')
function sampev.onDisplayGameText(style, time, text)
    if text:find('Текст') then
        return false
    end
end
Для переноса строки в тексте используй "~n~"
 

kinamaster22

Известный
1,272
190

yufFKa

Известный
Автор темы
267
105
Lua:
local sampev = require('lib.samp.events')
local encoding = require('encoding')
encoding.default = 'CP1251'
local u8 = encoding.UTF8

function sampev.onDisplayGameText(style, time, text)
    print(string.format("Найденный текст: '%s'", u8:decode(text)))
    return true
end

У тебя в скрипте установлена кодировка Windows 1251? Так в игре пишут на ANSI (это тоже самое и Windows 1251). А значит лучше писать скрипт в ANSI

Посмотреть вложение 260022
Стоит windows 1251
 

kinamaster22

Известный
1,272
190
На крайняк это попробуй, если не поможет, то жди ответа от более прошаренных людей
Код:
local sampev = require('lib.samp.events')
local encoding = require('encoding')
encoding.default = 'CP1251'
local u8 = encoding.UTF8

function sampev.onDisplayGameText(style, time, text)
    local decoded_text = u8:decode(text)
    print(string.format("Найденный текст: '%s'", decoded_text))
    return true
end

еще можно так попробовать
Lua:
local sampev = require('lib.samp.events')

function sampev.onDisplayGameText(style, time, text)
    local original_text = "Энергетический щит~n~был перезагружен!"
    if text:lower():find(original_text:lower()) then
        return false
    end
    return true
end
 
Последнее редактирование:

yufFKa

Известный
Автор темы
267
105
На крайняк это попробуй, если не поможет, то жди ответа от более прошаренных людей
Код:
local sampev = require('lib.samp.events')
local encoding = require('encoding')
encoding.default = 'CP1251'
local u8 = encoding.UTF8

function sampev.onDisplayGameText(style, time, text)
    local decoded_text = u8:decode(text)
    print(string.format("Найденный текст: '%s'", decoded_text))
    return true
end

еще можно так попробовать
Lua:
local sampev = require('lib.samp.events')

function sampev.onDisplayGameText(style, time, text)
    local original_text = "Энергетический щит~n~был перезагружен!"
    if text:lower():find(original_text:lower()) then
        return false
    end
    return true
end

Второй способ не помог
 

kyrtion

Известный
1,071
384
Lua:
local sampev = require('lib.samp.events')
local encoding = require('encoding')
encoding.default = 'CP1251'
local u8 = encoding.UTF8

function sampev.onDisplayGameText(style, time, text)
    local u8Text = u8(text)
    local u8DecodedText = u8:decode(text)
    print(text)
    print(u8Text)
    print(u8DecodedText)
end

И скинешь как там выглядит. Потому что там значение может быть по другому выглядит
 

yufFKa

Известный
Автор темы
267
105
Lua:
local sampev = require('lib.samp.events')
local encoding = require('encoding')
encoding.default = 'CP1251'
local u8 = encoding.UTF8

function sampev.onDisplayGameText(style, time, text)
    local u8Text = u8(text)
    local u8DecodedText = u8:decode(text)
    print(text)
    print(u8Text)
    print(u8DecodedText)
end

И скинешь как там выглядит. Потому что там значение может быть по другому выглядит
 

Gorskin

🖕
Проверенный
1,347
1,196
Попробуй так
Lua:
function decodeText(encodedText)
    local dictionary = {
        ['a'] = 'а',
        ['A'] = 'А',
        ['—'] = 'б',
        ['Ђ'] = 'Б',
        ['ў'] = 'в',
        ['‹'] = 'В',
        ['™'] = 'г',
        ['‚'] = 'Г',
        ['љ'] = 'д',
        ['ѓ'] = 'Д',
        ['e'] = 'е',
        ['E'] = 'Е',
        ['›'] = 'ж',
        ['„'] = 'Ж',
        ['џ'] = 'з',
        ['€'] = 'З',
        ['њ'] = 'и',
        ['…'] = 'И',
        ['ќ'] = 'й',
        ['k'] = 'к',
        ['K'] = 'К',
        ['ћ'] = 'л',
        ['‡'] = 'Л',
        ['Ї'] = 'м',
        ['M'] = 'М',
        ['®'] = 'н',
        ['H'] = 'Н',
        ['o'] = 'о',
        ['O'] = 'О',
        ['Ј'] = 'п',
        ['Њ'] = 'П',
        ['p'] = 'р',
        ['P'] = 'Р',
        ['c'] = 'с',
        ['C'] = 'С',
        ['¦'] = 'т',
        ['Џ'] = 'Т',
        ['y'] = 'у',
        ['Y'] = 'У',
        ['?'] = 'ф',
        ['Ѓ'] = 'Ф',
        ['x'] = 'х',
        ['X'] = 'Х',
        ['$'] = 'ц',
        ['‰'] = 'Ц',
        ['¤'] = 'ч',
        ['Ќ'] = 'Ч',
        ['Ґ'] = 'ш',
        ['Ћ'] = 'Ш',
        ['Ў'] = 'щ',
        ['Љ'] = 'Щ',
        ['©'] = 'ь',
        ['’'] = 'Ь',
        ['ђ'] = 'ъ',
        ['§'] = 'Ъ',
        ['Ё'] = 'ы',
        ['‘'] = 'Ы',
        ['Є'] = 'э',
        ['“'] = 'Э',
        ['«'] = 'ю',
        ['”'] = 'Ю',
        ['¬'] = 'я',
        ['•'] = 'Я'
    }

    local decodedText = ""
    local i = 1
    while i <= #encodedText do
        local char = encodedText:sub(i, i)

        -- Проверяем, существует ли текущий символ в словаре
        if dictionary[char] then
            decodedText = decodedText .. dictionary[char]
        else
            -- Если символ не найден в словаре, оставляем его без изменений
            decodedText = decodedText .. char
        end

        i = i + 1
    end

    return decodedText
end


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

function sampev.onDisplayGameText(style, time, text)
    print(decodeText(text))
end
 
  • Нравится
Реакции: kyrtion

yufFKa

Известный
Автор темы
267
105
Попробуй так
Lua:
function decodeText(encodedText)
    local dictionary = {
        ['a'] = 'а',
        ['A'] = 'А',
        ['—'] = 'б',
        ['Ђ'] = 'Б',
        ['ў'] = 'в',
        ['‹'] = 'В',
        ['™'] = 'г',
        ['‚'] = 'Г',
        ['љ'] = 'д',
        ['ѓ'] = 'Д',
        ['e'] = 'е',
        ['E'] = 'Е',
        ['›'] = 'ж',
        ['„'] = 'Ж',
        ['џ'] = 'з',
        ['€'] = 'З',
        ['њ'] = 'и',
        ['…'] = 'И',
        ['ќ'] = 'й',
        ['k'] = 'к',
        ['K'] = 'К',
        ['ћ'] = 'л',
        ['‡'] = 'Л',
        ['Ї'] = 'м',
        ['M'] = 'М',
        ['®'] = 'н',
        ['H'] = 'Н',
        ['o'] = 'о',
        ['O'] = 'О',
        ['Ј'] = 'п',
        ['Њ'] = 'П',
        ['p'] = 'р',
        ['P'] = 'Р',
        ['c'] = 'с',
        ['C'] = 'С',
        ['¦'] = 'т',
        ['Џ'] = 'Т',
        ['y'] = 'у',
        ['Y'] = 'У',
        ['?'] = 'ф',
        ['Ѓ'] = 'Ф',
        ['x'] = 'х',
        ['X'] = 'Х',
        ['$'] = 'ц',
        ['‰'] = 'Ц',
        ['¤'] = 'ч',
        ['Ќ'] = 'Ч',
        ['Ґ'] = 'ш',
        ['Ћ'] = 'Ш',
        ['Ў'] = 'щ',
        ['Љ'] = 'Щ',
        ['©'] = 'ь',
        ['’'] = 'Ь',
        ['ђ'] = 'ъ',
        ['§'] = 'Ъ',
        ['Ё'] = 'ы',
        ['‘'] = 'Ы',
        ['Є'] = 'э',
        ['“'] = 'Э',
        ['«'] = 'ю',
        ['”'] = 'Ю',
        ['¬'] = 'я',
        ['•'] = 'Я'
    }

    local decodedText = ""
    local i = 1
    while i <= #encodedText do
        local char = encodedText:sub(i, i)

        -- Проверяем, существует ли текущий символ в словаре
        if dictionary[char] then
            decodedText = decodedText .. dictionary[char]
        else
            -- Если символ не найден в словаре, оставляем его без изменений
            decodedText = decodedText .. char
        end

        i = i + 1
    end

    return decodedText
end


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

function sampev.onDisplayGameText(style, time, text)
    print(decodeText(text))
end

При копировании из консоли текст становится таким - ÝÍÅÐÃÅÒÈ×ÅÑÊÈÈ ÙÈÒ~n~ÁÛË ÏÅÐÅÇÀÃÐÓÆÅÍ!
 

yufFKa

Известный
Автор темы
267
105
Ну тут хз, проверь кодировку в редакторе.
В редакторе стоит windows 1251
Код:
local sampev = require('lib.samp.events')

function sampev.onDisplayGameText(style, time, text)
    if text == "ЭНЕРГЕТИЧЕСКИЙ ЩИТ~n~БЫЛ ПЕРЕЗАГРУЖЕН!" then
        return false
    end
    return true
end
Не помогло
 
  • Грустно
Реакции: kinamaster22