Как работать с кириллицей в Lua?

dsdsgdsgdsgdsgdsgdsg

Новичок
Автор темы
8
0
Версия MoonLoader
.026-beta
Привет. Я делаю скриптик на lua для себя. И вот, мне нужно сравнить строку с шаблоном: "Don_Morenzo купил у вас Праздничное яйцо (пасха) (6 шт.), вы получили $288000 от продажи (комиссия 4 процент(а))". Я это делаю так:
Код:
function events.onServerMessage(clr, text)
  if text:find("%a купил у вас %a (&d шт.), вы получили $%d от продажи (комиссия 4 процент(а))") then
    sampAddChatMessage("Work", -1)
  end
end
Но вот оно не ищет так. Я так понял, это проблема с кодировкой, ведь когда я делал поиск с английскими символами, все работало. Может кто помочь разобраться в проблеме?
 
Решение
Без имени-1.png

Sidney31

Известный
1,124
385
😍
Скинь скрин строки в чате

Во-первых, нужно экранировать скобки.
text:find("%a купил у вас %a %(&d шт.%), вы получили $%d от продажи %(комиссия 4 процент%(а%)%)"%) then

Так же, может быть проблема из-за цвета. Если строка выглядит так, например: (после отправки ответа строка возвращается в дефолт цвет 🤐)
1651859838651.png

То нужно перед изменением цвета добавить {......} (шесть точек в скобках), это чтобы экранировать код цвета
text:find("%a купил у вас %a %(&d шт.%), {......}вы получили $%d от продажи %(комиссия 4 процент%(а%)%)"%)
 
Последнее редактирование:

dsdsgdsgdsgdsgdsgdsg

Новичок
Автор темы
8
0
😍
Скинь скрин строки в чате

Во-первых, нужно экранировать скобки.
text:find("%a купил у вас %a %(&d шт.%), вы получили $%d от продажи %(комиссия 4 процент%(а%)%)"%) then

Так же, может быть проблема из-за цвета. Если строка выглядит так, например:
Don_Morenzo купил у вас автомобиль (1 шт.), вы получили $300 от продажи (комиссия 4 процент(а))
То нужно перед изменением цвета добавить {......} (шесть точек в скобках), это чтобы экранировать код цвета
text:find("%a купил у вас %a %(&d шт.%), {......}вы получили $%d от продажи %(комиссия 4 процент%(а%)%)"%)
[13:43:17] Don_Morenzo купил у вас Праздничное яйцо (пасха) (6 шт.), вы получили $288000 от продажи (комиссия 4 процент(а))
Такая строчка. Без цвета.
 

dsdsgdsgdsgdsgdsgdsg

Новичок
Автор темы
8
0
[13:43:17] Don_Morenzo купил у вас Праздничное яйцо (пасха) (6 шт.), вы получили $288000 от продажи (комиссия 4 процент(а))
Такая строчка. Без цвета.
Также я пробовал сделать просто text:find("Объявление"). И это не работало. Я думаю это проблема с кириллицей.
 

HavenS

Участник
76
19
Привет. Я делаю скриптик на lua для себя. И вот, мне нужно сравнить строку с шаблоном: "Don_Morenzo купил у вас Праздничное яйцо (пасха) (6 шт.), вы получили $288000 от продажи (комиссия 4 процент(а))". Я это делаю так:
Код:
function events.onServerMessage(clr, text)
  if text:find("%a купил у вас %a (&d шт.), вы получили $%d от продажи (комиссия 4 процент(а))") then
    sampAddChatMessage("Work", -1)
  end
end
Но вот оно не ищет так. Я так понял, это проблема с кодировкой, ведь когда я делал поиск с английскими символами, все работало. Может кто помочь разобраться в проблеме?
Проверь стоит ли кодировка Windows-1251, если стоит то попробуй убрать цвет, если и это не помогло напиши мне в vk: haven_stick
 

dsdsgdsgdsgdsgdsgdsg

Новичок
Автор темы
8
0
а ты ж библиотеку подключил, да?
Какую библиотеку? Если ты про самп ивентс, то да.

Проверь стоит ли кодировка Windows-1251, если стоит то попробуй убрать цвет, если и это не помогло напиши мне в vk: haven_stick
А как проверить? Эта строчка без цвета.

Все равно не работает:
Код:
function events.onServerMessage(clr, text)
  if text:find("Семья") then
    sampAddChatMessage("Work", -1)
  end
end

Untitled2.png

Вот код:
Код:
local sampev = require("samp.events")
function sampev.onServerMessage(color, text)
    if text:find('Администратор') then
        sampAddChatMessage('yes', -1)
    elseif text:find('Family') then
      sampAddChatMessage('yes1', -1)
    end
end
То есть проблема в кодировке. Как ее исправить?
 

Вложения

  • Untitled.png
    Untitled.png
    632.7 KB · Просмотры: 28

HavenS

Участник
76
19
Последнее редактирование: