string.find()

Статус
В этой теме нельзя размещать новые ответы.

reversivecockblaster

Участник
Автор темы
23
2
Ребят, помогите то реально уже долго сижу и не понимаю с какого черта оно не видит слово в тексте. По идее оно должно найти в входящем сообщении ключ от массива Cap и вывести его значение в консоль и чат. Но на деле string.find просто выводит nil, вне зависимости от того есть ли там искомое слово или нет.

Сам код:
function smp.onServerMessage

    if AutoResponse.v then

        if text:sub(1, 6) == '[Radio' then

            for i,v in pairs(Cap) do

                if string.find(text, i) then

                    print(v)

                    sampSendChat(v)

                    return { color, text }

                end

            end

        end

    end
 
Решение
в ImGui у меня кириллица отображается корректно (это при utf-8)

В игре оно так отображается, в документе я переписал.
ImGUI поддерживает Unicode и поэтому отображает русские символы в UTF-8 кодировке, а SAMP не поддерживает Unicode и отображает русские символы в кодировке Windows-1251. Кодировка файла со скриптом должна быть установлена в значение CP1251, а русский текст в ImGUI кодироваться в UTF-8. Чтобы кодировать текст в UTF-8 используется библиотека encoding. Применяется она следующим образом:

Lua:
-- В начало скрипта
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8

-- Внутри ImGUI
imgui.Text(u8('Русский текст'))

reversivecockblaster

Участник
Автор темы
23
2
А SAMP Events вообще подключён?
а как я бы получал сообщение иначе? Говорю-же, все работает кроме этого string.find. Я вот подозреваю что это проблема с кодировкой, ибо такое только с кириллицей случается..
Пробовал выводить в чат без проверки, выходит еще одно чудо: "Ханой"
 
Последнее редактирование:

ufdhbi

Известный
Проверенный
1,455
861
а как я бы получал сообщение иначе? Говорю-же, все работает кроме этого string.find. Я вот подозреваю что это проблема с кодировкой, ибо такое только с кириллицей случается..
Пробовал выводить в чат без проверки, выходит еще одно чудо: "Ханой"
у тебя проблемы с кодировкой
 

Pakulichev

Software Developer & System Administrator
Друг
1,789
2,134
Однозначно, и как их решить? encoding подключен, дефолт выставлен на cp1251
кодировка:
local encoding = require 'encoding'
encoding.default = 'CP1251'
Это вообще не имеет никакого значения в данном случае. Кодировка самого файла должна быть WIN-1251.
 

reversivecockblaster

Участник
Автор темы
23
2
Это вообще не имеет никакого значения в данном случае. Кодировка самого файла должна быть WIN-1251.
Я пишу его в notepad++, там же выставил еще с самого начала на "Кодировать в UTF-8"
 
Статус
В этой теме нельзя размещать новые ответы.