- 12
 
- 0
 
- Версия MoonLoader
 - .026-beta
 
Здравствуйте, многоуважаемые читатели этого поста и эксперты помогающие мне. Я хочу чтобы Вы как более опытные оценили мой код и указали на мои ошибки, как можно было бы переделать или другие варианты реализации моей идеи.
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
В данный момент на данной стадии разработки я с помощью TCG сделал систему выбора темы, но к тому же добавил сохранение вашего выбора, и поэтому хотел бы узнать ваше мнение. Может где говнокод надо убрать или плохие привычки. Приму любую критику, но опять же с аргументацией :) Заранее спасибо
			
			
			
				CODE:
			
		
		
		script_author('SunRays && BlastHk')
-------------------------------------------------------------------------------------------------------
require 'lib.moonloader'
local keys = require 'vkeys'
local imgui = require 'imgui'
local inicfg = require 'inicfg'
local sampev = require 'lib.samp.events'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
-------------------------------------------------------------------------------------------------------
local prefix = "{595959}| Help. | ==> {FFFFFF}";
local main_window = imgui.ImBool(false)
local secondary_window = imgui.ImBool(false)
local themes = import "RavenHelp/themes.lua"
-------------------------------------------------------------------------------------------------------
if not doesDirectoryExist("moonloader/Help") then
    sampAddChatMessage(prefix .."Инициализация создания директории скрипта[Папка: moonloader].", -1)
    createDirectory("moonloader/Help")
end
local mainini = inicfg.load({
    config =
    {
        theme = 1,
        style = 1
    }
}, 'RavenCFG.ini')
local status = inicfg.load(mainini, 'CFG.ini')
if not doesFileExist('CFG.ini') then
    inicfg.save(mainini, 'CFG.ini')
end
local savefile = 'CFG.ini'
-------------------------------------------------------------------------------------------------------
local theme = imgui.ImFloat(mainini.config.theme)
local style = imgui.ImFloat(mainini.config.style)
local checked_radio = imgui.ImInt(mainini.config.theme)
-------------------------------------------------------------------------------------------------------
 
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage(prefix .."Инициализация скрипта {1db00c}успешна{FFFFFF}.", -1)
    sampAddChatMessage(prefix .."Подсказка: Используйте F5 | //rhelp.", -1)
    _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
    nick = sampGetPlayerNickname(id)
    imgui.SwitchContext()
    themes.SwitchColorTheme(mainini.config.theme)
    sampRegisterChatCommand('/rhelp', function()
        main_window.v = not main_window.v
        imgui.Process = main_window.v
    end)
    while true do
        wait(0)
    end
end
function imgui.OnDrawFrame()
    if not main_window.v and not secondary_window.v then
        imgui.Process = false
    end
    local sw, sh = getScreenResolution()
    if main_window.v then
        imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(600, 250), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'Меню', main_window, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoBringToFrontOnFocus + imgui.WindowFlags.NoSavedSettings)
        
        if not menu then menu = 1 end
        imgui.BeginChild('#Menu', imgui.ImVec2(150, 215), true)
            if imgui.Button(u8'Настройки',imgui.ImVec2(134, 25)) then
                menu = 1
            end
            if imgui.Button(u8'Автор',imgui.ImVec2(134, 25)) then
                menu = 2
            end
        imgui.EndChild()
        imgui.SameLine()
        imgui.BeginChild('#Desktop', imgui.ImVec2(429, 215), true)
            if menu == 1 then
                for i, value in ipairs(themes.colorThemes) do
                    if imgui.RadioButton(value, checked_radio, i) then
                        themes.SwitchColorTheme(i)
                        mainini.config.theme = checked_radio.v
                        inicfg.save(mainini, savefile)
                    end
                end
            end
            if menu == 2 then
            end
        imgui.EndChild()
        imgui.End()
    end
    if secondary_window.v then
        imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(600, 400), imgui.Cond.FirstUseEver)
        imgui.Begin('-', secondary_window, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoBringToFrontOnFocus + imgui.WindowFlags.NoSavedSettings)
        imgui.End()
    end
    
end
	В данный момент на данной стадии разработки я с помощью TCG сделал систему выбора темы, но к тому же добавил сохранение вашего выбора, и поэтому хотел бы узнать ваше мнение. Может где говнокод надо убрать или плохие привычки. Приму любую критику, но опять же с аргументацией :) Заранее спасибо