Нежели кого то критиковать, напиши свой код и потом хвастайся какой ты "топ" кодер
Я не хвастаюсь, сообщение было отправлено с целью того, чтобы автор понимал, что скрипт нужно дорабатывать)
Перед отправкой я начал переписывать некоторые участки кода, однако пришлось менять достаточно много и я забил. Да и сам тс написал о том, что это его первая работа только после моего сообщения. Разумеется, я бы не стал критиковать, если бы знал это изначально.
Автору:
1. Не нужно делать бессмысленные проверки, когда работаешь с булевыми переменными
-- Исходник
if main_window_state.v == false then
-- ...
end
-- Лучше так
if not main_window_state.v then
-- ...
end
2. Добавлена функция для обработки команды, но самой команды нет
3. Не нужно подключать библиотеки и модули, которые не используешь: moonloader, requests, samp.events, encoding, vkeys, ты создаёшь лишние зависимости
4. Зачем тебе это, если не используешь? Я понимаю, что ты только учишься, но мог бы позаботиться о том, чтобы убрать всё лишнее перед публикацией
local active = true
local text_buffer = imgui.ImBuffer(256)
local tables
--
ip = sampGetCurrentServerAddress(PLAYER_PED)
Hours = (os.date("%H", os.time()))
Minuts = (os.date("%M", os.time()))
Seconds = (os.date("%S", os.time()))
5. Зачем это в main'e? Лишнее, ничего не делает, ты позаботился об этом в imgui.OnDrawFrame()
imgui.ShowCursor = false
imgui.SetMouseCursor(-1)
6. Соблюдай табуляцию и отступы, чтобы упростить чтение кода
7. ctrl + c, ctrl + v - хуёвая практика. Если у тебя изменяется единственная строка в коде, не нужно из-за одной проверки создавать два идентичных куска кода. Никогда не копируй и не вставляй код, избегай использование похожих частей кода, выделяй для этого отдельные методы
(Речь про весь imgui.OnDrawFrame())
8. Не нужно делать всё глобальными переменными, дописывай local, если использование переменной требуется только в определенной части кода
9. id, nickname можно получить один раз в main'e, лишняя работа
10. Следуй каким-нибудь стандартам оформления кода. Например, при обозначении переменных и функций
11.
-- Исходник
(os.date("%H",os.time())..':'..os.date("%M",os.time())..':'..os.date("%S",os.time()))
(os.date("%d",os.time())..'/'..os.date("%m",os.time())..'/'..os.date("%Y",os.time()))
-- Можно так
os.date("%H:%M:%S")
os.date("%d/%m/%Y")
12. Что за window? У тебя этого в коде нет, вижу только main_window_state, но даже это не используется
imgui.Begin("INFOBAR | Coded by NNC.", window, imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoResize + imgui.WindowFlags.AlwaysAutoResize + imgui.WindowFlags.ShowBorders)
13. Вместо конкатенации строк можно использовать string.format()
14. Зачем ты округляешь координаты, скорость и фпс? Ты искажаешь истинные значения. Воспользуйся п.13