- 75
- 16
Привет, вообщем, проблема в том, что когда я пишу в имгуи менюшке в InputText текст по русски, потом перезапускаю скрипт (CTRL+R) то текст меняется в каракули, ставил u8 в начале - не помагает, пробовал чёт химичить, тоже не помагает, помогите мне пожалуйста, вот код с отрезками которые нужны:
Должно быть:
происходит:
происходит:
Lua:
require 'moonloader'
local ffi = require 'ffi'
require "lib.sampfuncs"
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local new, str = imgui.new, ffi.string
local keys = require 'vkeys'
local bNotf, notf = pcall(import, "imgui_notf.lua")
local main_window_state = imgui.ImBool(false)
local text_buffer = imgui.ImBuffer(256)
local inputField = imgui.ImBuffer(256)
local inicfg = require 'inicfg'
local directIni = "moonloader\\pdhelperManstikosUA.ini"
local mainIni = inicfg.load(nil, directIni)
--local stateIni = inicfg.save(main.Ini, directIni)
local tab = 1 -- в этой переменной будет хранится номер открытой вкладки
local data =
{ -- задаем значения для data.** на случай, если потребуется создать файл конфига
config =
{
rusname = u8"Имя Фамилия",
rang = u8"Ранг"
}
}
local mainIni = inicfg.load(data, 'moonloader\\pdhelperManstikosUA.ini') -- загружаем конфиг
if mainIni == nil then -- проверяем, все ли в порядке. Если нет - создаем конфиг из заданных значений, иначе - загружаем
print('Не найден файл конфига, создаю.')
if inicfg.save(mainIni, 'moonloader\\pdhelperManstikosUA.ini') then
print('Файл был с настройками был создан, ошибок нет.')
mainIni = inicfg.load(nil, 'moonloader\\pdhelperManstikosUA.ini')
end
end
local rusname = imgui.ImBuffer(256)
local rang = imgui.ImBuffer(256)
rusname.v = mainIni.config.rusname
rang.v = mainIni.config.rang
Lua:
function imgui.OnDrawFrame()
imgui.SetNextWindowPos(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(500, 300), imgui.Cond.Always)
imgui.Begin(u8'Пример', WinState, imgui.WindowFlags.NoResize)
for numberTab,nameTab in pairs({'Основное','Настройки','Инфа'}) do -- создаём и парсим таблицу с названиями будущих вкладок
if imgui.Button(u8(nameTab), imgui.ImVec2(100,50)) then -- 2ым аргументом настраивается размер кнопок (подробнее в гайде по мимгуи)
tab = numberTab -- меняем значение переменной tab на номер нажатой кнопки
end
end
imgui.SetCursorPos(imgui.ImVec2(120, 28)) -- [Для декора] Устанавливаем позицию для чайлда ниже
if imgui.BeginChild('Name##'..tab, imgui.ImVec2(300, 250), true) then -- [Для декора] Создаём чайлд в который поместим содержимое
-- == [Основное] Содержимое вкладок == --
if tab == 1 then -- если значение tab == 1
-- == Содержимое вкладки №1
imgui.Text(u8'Открыта первая вкладка "Основное"')
imgui.Text(u8"Ваш ник (RUS): ")
if imgui.InputText(u8'', rusname) then
mainIni.config.rusname = u8:decode(rusname.v)
end
imgui.Text(u8"Ваша должность: ")
if imgui.InputText(u8' ', rang) then
mainIni.config.rang = u8:decode(rang.v)
end
if imgui.Button(u8"Сохранить", imgui.ImVec2(100, 20)) then
mainIni.config.rusname = u8:decode(rusname.v)
mainIni.config.rang = u8:decode(rang.v)
sampAddChatMessage("{FFFFFF}Вы успешно изменили ник на:{00BFFF} " .. u8:decode(rusname.v), -1)
sampAddChatMessage("{FFFFFF}Ваш ранг:{00BFFF} " .. u8:decode(rang.v), -1)
if inicfg.save(mainIni, directIni) then
sampAddChatMessage("Сохранено! 2", -1)
end
end
if imgui.Button(u8'Кнопка') then
sampAddChatMessage('Вы нажали кнопку во вкладке номер '..tab, -1)
end
elseif tab == 2 then -- если значение tab == 2
-- == Содержимое вкладки №2
imgui.Text(u8'Открыта первая вкладка "Настройки"')
if imgui.Button(u8'Кнопка') then
sampAddChatMessage('Вы нажали кнопку во вкладке номер '..tab, -1)
end
elseif tab == 3 then -- если значение tab == 3
-- == Содержимое вкладки №3
imgui.Text(u8'Открыта первая вкладка "Инфа"')
imgui.Text(u8"Команда /pas - показывает паспорт (/pas ID)")
imgui.Text(u8"Команда /lics - показывает лицензии(/lics ID)")
imgui.Text(u8"Команда /medka - отыгрывает рп для мед.карты(передавать нужно вручную)")
imgui.Text(u8"Команда /udost - отыгрывает рп для удостоверения(передавать нужно вручную)")
imgui.Text(u8"Команда /cuff - надеть на игрока наручники, есть отыгровка(/cuff ID)")
imgui.Text(u8"Команда /gotome - потащить игрока за собой, есть отыгровка(/gotome ID)")
imgui.Text(u8"Команда /cput - посадить игрока в машину, есть отыгровка(/cput ID)")
imgui.Text(u8"Команда /bodycam - включает отыгровку фрапса")
imgui.Text(u8"Команда /ticket - отыгровка рп для штарафа + выписка штрафа(/ticket ID)")
imgui.Text(u8"Команда /frisk - отыгровка рп для обыска + обыск(/frisk ID)")
imgui.Text(u8"Команда /arrest - отыгровка ареста + арест(/arrest ID)")
imgui.Text(u8"Команда /uncuff - снять наручники + отыгровка(/uncuff ID)")
imgui.Text(u8"Команда /su - выдать розыск + отыгровка(/su ID)")
imgui.Text(u8"Команда /clear - очистить розыск + отыгровка(/clear ID)")
imgui.Text(u8"Команда /doki - запросить документы(/doki ID)")
imgui.Text(u8"Команда /meg - просьба остановить машину в мегафон(/meg)")
imgui.Text(u8"Команда /setpaswrld - установить пароль для быстрого захода")
imgui.Text(u8"Команда /chatclear - визуально очистить чат")
imgui.Text(u8"Команда /ecspertiza - отыгровка рп экспертизы")
imgui.Text(u8"Команда /drug количество - употребить наркотики с рп")
imgui.Text(u8"Зажать клавишу L.ALT - сирена+стробоскопы")
imgui.Text(u8"Команда /statistiko - вывести статистику персонажа")
if imgui.Button(u8'Кнопка') then
sampAddChatMessage('Вы нажали кнопку во вкладке номер '..tab, -1)
end
end
-- == [Основное] Содержимое вкладок закончилось == --
imgui.EndChild()
end
imgui.End()
end