русские буквы текстдрав

Neil_

Известный
Автор темы
204
32
Версия MoonLoader
Другое
Как норм записывать в файл русские название музыки, получается какая то хуйня по типу этой
ARCHI - ‹o ўce ¦¬›kњe
Marlow - Mњћћњo® љopo™
HepўЁ - CaЇЁќ ѓopo™oќ Ќ
код
Lua:
local ev = require("lib.samp.events")

function main()
    repeat wait(0) until isSampAvailable()
    
    while true do
        wait(0)
    end
end

function ev.onShowTextDraw(id,data)
    if data.text:find('%d+%. (.+)') then
        local music = data.text:match('%d+%. (.+)')
        local music = music:gsub('_', ' ')
        file = io.open(getGameDirectory().."//moonloader//music.txt", "a")
        file:write(music..'\n')
        file:close()
    end
end
 

whyega52

Eblang головного мозга
Модератор
2,873
2,853
Возможно можно по-другому, но это тоже работает
Lua:
function cyrillic(text)
      local convtbl = {[230]=155,[231]=159,[247]=164,[234]=107,[250]=144,[251]=168,[254]=171,[253]=170,[255]=172,[224]=97,[240]=112,[241]=99,[226]=162,[228]=154,[225]=151,[227]=153,[248]=165,[243]=121,[184]=101,[235]=158,[238]=111,[245]=120,[233]=157,[242]=166,[239]=163,[244]=63,[237]=174,[229]=101,[246]=36,[236]=175,[232]=156,[249]=161,[252]=169,[215]=141,[202]=75,[204]=77,[220]=146,[221]=147,[222]=148,[192]=65,[193]=128,[209]=67,[194]=139,[195]=130,[197]=69,[206]=79,[213]=88,[168]=69,[223]=149,[207]=140,[203]=135,[201]=133,[199]=136,[196]=131,[208]=80,[200]=133,[198]=132,[210]=143,[211]=89,[216]=142,[212]=129,[214]=137,[205]=72,[217]=138,[218]=167,[219]=145}
      local result = {}
      for i = 1, #text do
          local c = text:byte(i)
          result[i] = string.char(convtbl[c] or c)
      end
      return table.concat(result)
end

https://www.blast.hk/threads/33537/ еще способ
 

zTechnology

Известный
1,094
485
Как норм записывать в файл русские название музыки, получается какая то хуйня по типу этой
ARCHI - ‹o ўce ¦¬›kњe
Marlow - Mњћћњo® љopo™
HepўЁ - CaЇЁќ ѓopo™oќ Ќ
код
Lua:
local ev = require("lib.samp.events")

function main()
    repeat wait(0) until isSampAvailable()
   
    while true do
        wait(0)
    end
end

function ev.onShowTextDraw(id,data)
    if data.text:find('%d+%. (.+)') then
        local music = data.text:match('%d+%. (.+)')
        local music = music:gsub('_', ' ')
        file = io.open(getGameDirectory().."//moonloader//music.txt", "a")
        file:write(music..'\n')
        file:close()
    end
end
кодировку на 1251
 

Neil_

Известный
Автор темы
204
32
Скинь код, как ты вставил функцию
Скинь код, как ты вставил функцию
Код:
local ev = require("lib.samp.events")

function main()
    repeat wait(0) until isSampAvailable()
    
    while true do
        wait(0)
    end
end

function ev.onShowTextDraw(id,data)
    if data.text:find('%d+%. (.+)') then
        local music = data.text:match('%d+%. (.+)')
        local music = music:gsub('_', ' ')
        file = io.open(getGameDirectory().."//moonloader//music.txt", "a")
        file:write(cyrillic(music)..'\n')
        file:close()
    end
end

function cyrillic(text)
    local convtbl = {[230]=155,[231]=159,[247]=164,[234]=107,[250]=144,[251]=168,[254]=171,[253]=170,[255]=172,[224]=97,[240]=112,[241]=99,[226]=162,[228]=154,[225]=151,[227]=153,[248]=165,[243]=121,[184]=101,[235]=158,[238]=111,[245]=120,[233]=157,[242]=166,[239]=163,[244]=63,[237]=174,[229]=101,[246]=36,[236]=175,[232]=156,[249]=161,[252]=169,[215]=141,[202]=75,[204]=77,[220]=146,[221]=147,[222]=148,[192]=65,[193]=128,[209]=67,[194]=139,[195]=130,[197]=69,[206]=79,[213]=88,[168]=69,[223]=149,[207]=140,[203]=135,[201]=133,[199]=136,[196]=131,[208]=80,[200]=133,[198]=132,[210]=143,[211]=89,[216]=142,[212]=129,[214]=137,[205]=72,[217]=138,[218]=167,[219]=145}
    local result = {}
    for i = 1, #text do
        local c = text:byte(i)
        result[i] = string.char(convtbl[c] or c)
    end
    return table.concat(result)
end