- 41
- 2
- Версия MoonLoader
- .026-beta
Есть такой скрипт:
В разделе автообъявления, когда ввожу текст на русском языке и включаю функцию, то в чат отправляются иероглифы, а не русский текст. Помогите исправить, буду благодарен.
main.lua:
-- ARZ-Helper.lua
-- Подключение необходимых библиотек
require("moonloader")
require("sampfuncs")
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8
local fa = require("fAwesome6")
local ffi = require("ffi")
-- Инициализация иконок
imgui.OnInitialize(function()
imgui.GetIO().IniFilename = nil
local config = imgui.ImFontConfig()
config.MergeMode = true
config.PixelSnapH = true
local iconRanges = imgui.new.ImWchar[3](fa.min_range, fa.max_range, 0)
imgui.GetIO().Fonts:AddFontFromMemoryCompressedBase85TTF(fa.get_font_data_base85("solid"), 14, config, iconRanges)
end)
-- Функции для отображения подсказок и центрированного текста
function imgui.TextQuestion(text)
imgui.TextDisabled("(?)")
if imgui.IsItemHovered() then
imgui.BeginTooltip()
imgui.PushTextWrapPos(450)
imgui.TextUnformatted(text)
imgui.PopTextWrapPos()
imgui.EndTooltip()
end
end
function imgui.CenterText(text)
imgui.SetCursorPosX(imgui.GetWindowWidth()/2 - imgui.CalcTextSize(u8(text)).x/2)
imgui.Text(u8(text))
end
-- Состояние окна и текущая вкладка
local WinState = imgui.new.bool()
local tab = 1
-- Переменные для автообъявлений
local autoAnnounceEnabled = imgui.new.bool(false) -- Флаг для включения автообъявлений
local announceText = imgui.new.char[256]() -- Текст для автообъявлений
-- Фоновый поток для отправки сообщений
lua_thread.create(function()
while true do
wait(5000) -- Интервал в миллисекундах между проверками
if autoAnnounceEnabled[0] then -- Проверка включения автообъявлений
local text = ffi.string(announceText) -- Преобразуем введенный текст в строку
if text ~= "" then -- Если текст не пустой
-- Преобразуем текст в строку в кодировке CP1251 для правильной передачи в SAMP
local cp1251Text = encoding.CP1251(text)
-- Отправка в обычный чат
sampSendChat("/c " .. cp1251Text)
wait(1000) -- Задержка в 1 секунду
-- Отправка в командный чат
sampSendChat("/b " .. cp1251Text)
wait(1000) -- Задержка в 1 секунду
-- Отправка в системный чат
sampSendChat(cp1251Text)
end
end
end
end)
-- Главная функция
function main()
while not isSampAvailable() do wait(100) end
sampAddChatMessage('[ARZ-Helper] Скрипт успешно запущен. Введите команду /test13.', 0xff0000)
sampRegisterChatCommand('test13', function()
WinState[0] = not WinState[0]
end)
while true do wait(0) end
end
-- Отрисовка окна
imgui.OnFrame(function() return WinState[0] end, function(player)
imgui.SetNextWindowPos(imgui.ImVec2(1000, 500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(1100, 250), imgui.Cond.Always)
imgui.Begin(fa('folder')..u8' [ARZ-Helper]: Помощь', WinState,
imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoCollapse)
-- Стили кнопок
local button_bg_color = imgui.ImVec4(0.2, 0.2, 0.2, 1.0)
local button_hover_color = imgui.ImVec4(0.3, 0.3, 0.3, 1.0)
local button_active_color = imgui.ImVec4(0.4, 0.4, 0.4, 1.0)
local function DrawTabButton(icon, label, tabIndex)
imgui.PushStyleColor(imgui.Col.Button, button_bg_color)
imgui.PushStyleColor(imgui.Col.ButtonHovered, button_hover_color)
imgui.PushStyleColor(imgui.Col.ButtonActive, button_active_color)
if imgui.Button(fa(icon).." "..u8(label), imgui.ImVec2(225, 30)) then
tab = tabIndex
end
imgui.PopStyleColor(3)
end
DrawTabButton("shield-alt", "Помощник для страховой компании", 1)
DrawTabButton("list", "Команды", 2)
DrawTabButton("info-circle", "О скрипте", 3)
DrawTabButton("bullhorn", "Автообъявление", 4)
-- Контент
imgui.SetCursorPos(imgui.ImVec2(240, 28))
if imgui.BeginChild('TabContent##'..tab, imgui.ImVec2(850, 160), true) then
if tab == 1 then
imgui.CenterText('Описание')
imgui.Separator()
imgui.TextColored(imgui.ImVec4(1.0, 0.647, 0.0, 1.0), u8'Оповещение:')
imgui.SameLine()
imgui.Text(u8'При наличии игрока на пикапах оформления страховок скрипт активирует уведомление и звонок колокольчика.')
imgui.Text(u8"Команда:")
imgui.SameLine()
imgui.TextColored(imgui.ImVec4(1.0, 0.647, 0.0, 1.0), u8'/ins')
elseif tab == 2 then
imgui.CenterText('Описание команд')
imgui.Separator()
-- Команда /findihouse
imgui.Text(u8"Сокращение команды /findihouse [ID]")
imgui.SameLine()
imgui.TextQuestion(u8'/fh [ID]')
imgui.Text(u8"Используйте эту команду для поиска дома по ID. Введите команду с ID, чтобы найти дом.")
-- Команда /findibiz
imgui.Text(u8"Сокращение команды /findibiz [ID]")
imgui.SameLine()
imgui.TextQuestion(u8'/fib [ID]')
imgui.Text(u8"Используйте эту команду для поиска бизнеса по ID. Введите команду с ID, чтобы найти бизнес.")
-- Команда /test12
imgui.Text(u8"Сокращение команды /test12")
imgui.SameLine()
imgui.TextQuestion(u8'/t12')
imgui.Text(u8"Используйте команду для тестирования функционала. Это демонстрация некоторых функций скрипта.")
elseif tab == 3 then
imgui.Text(u8"Разработчик скрипта: Timur//.")
imgui.Text(u8"Скрипт разработан персонально для ... .")
if imgui.Button(fa('user')..u8' Связь с автором скрипта') then
os.execute("start https://vk.com/id124779478")
end
elseif tab == 4 then
imgui.CenterText('Настройки автообъявлений') -- Заголовок
imgui.Separator() -- Разделитель
-- Чекбокс для включения автообъявлений
imgui.Checkbox(u8" Включить автообъявления", autoAnnounceEnabled)
-- Поле для ввода текста
imgui.InputText(u8"Сообщение для отправки", announceText, 255)
-- Проверка, если текст введен и автообъявление включено
if autoAnnounceEnabled[0] and ffi.string(announceText) ~= "" then
imgui.Text(u8"Текст будет отправлен в 3 чата при активации автообъявлений.")
else
imgui.Text(u8"Введите текст и активируйте автообъявления для отправки.")
end
end
end
end)