Вопросы по Lua скриптингу

Общая тема для вопросов по разработке скриптов на языке программирования Lua, в частности под MoonLoader.
  • Задавая вопрос, убедитесь, что его нет в списке частых вопросов и что на него ещё не отвечали (воспользуйтесь поиском).
  • Поищите ответ в теме посвященной разработке Lua скриптов в MoonLoader
  • Отвечая, убедитесь, что ваш ответ корректен.
  • Старайтесь как можно точнее выразить мысль, а если проблема связана с кодом, то обязательно прикрепите его к сообщению, используя блок [code=lua]здесь мог бы быть ваш код[/code].
  • Если вопрос связан с MoonLoader-ом первым делом желательно поискать решение на wiki.

Частые вопросы

Как научиться писать скрипты? С чего начать?
Информация - Гайд - Всё о Lua скриптинге для MoonLoader(https://blast.hk/threads/22707/)
Как вывести текст на русском? Вместо русского текста у меня какие-то каракули.
Изменить кодировку файла скрипта на Windows-1251. В Atom: комбинация клавиш Ctrl+Shift+U, в Notepad++: меню Кодировки -> Кодировки -> Кириллица -> Windows-1251.
Как получить транспорт, в котором сидит игрок?
Lua:
local veh = storeCarCharIsInNoSave(PLAYER_PED)
Как получить свой id или id другого игрока?
Lua:
local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED) -- получить свой ид
local _, id = sampGetPlayerIdByCharHandle(ped) -- получить ид другого игрока. ped - это хендл персонажа
Как проверить, что строка содержит какой-то текст?
Lua:
if string.find(str, 'текст', 1, true) then
-- строка str содержит "текст"
end
Как эмулировать нажатие игровой клавиши?
Lua:
local game_keys = require 'game.keys' -- где-нибудь в начале скрипта вне функции main

setGameKeyState(game_keys.player.FIREWEAPON, -1) -- будет сэмулировано нажатие клавиши атаки
Все иды клавиш находятся в файле moonloader/lib/game/keys.lua.
Подробнее о функции setGameKeyState здесь: lua - setgamekeystate | BlastHack — DEV_WIKI(https://www.blast.hk/wiki/lua:setgamekeystate)
Как получить id другого игрока, в которого целюсь я?
Lua:
local valid, ped = getCharPlayerIsTargeting(PLAYER_HANDLE) -- получить хендл персонажа, в которого целится игрок
if valid and doesCharExist(ped) then -- если цель есть и персонаж существует
  local result, id = sampGetPlayerIdByCharHandle(ped) -- получить samp-ид игрока по хендлу персонажа
  if result then -- проверить, прошло ли получение ида успешно
    -- здесь любые действия с полученным идом игрока
  end
end
Как зарегистрировать команду чата SAMP?
Lua:
-- До бесконечного цикла/задержки
sampRegisterChatCommand("mycommand", function (param)
     -- param будет содержать весь текст введенный после команды, чтобы разделить его на аргументы используйте string.match()
    sampAddChatMessage("MyCMD", -1)
end)
Крашит игру при вызове sampSendChat. Как это исправить?
Это происходит из-за бага в SAMPFUNCS, когда производится попытка отправки пакета определенными функциями изнутри события исходящих RPC и пакетов. Исправления для этого бага нет, но есть способ не провоцировать его. Вызов sampSendChat изнутри обработчика исходящих RPC/пакетов нужно обернуть в скриптовый поток с нулевой задержкой:
Lua:
function onSendRpc(id)
  -- крашит:
  -- sampSendChat('Send RPC: ' .. id)

  -- норм:
  lua_thread.create(function()
    wait(0)
    sampSendChat('Send RPC: ' .. id)
  end)
end
 
Последнее редактирование:

chapo

чопа сребдс // @moujeek
Модератор
8,861
11,547
почему скрипт запускается, но как бы и не запускается (команда не работает и т.д.)? Если вырезать строку с автообновлением то все работает
Lua:
function main()
    while not isSampAvailable() do wait(200) end
    autoupdate("https://raw.githubusercontent.com/GovnocodedByChapo/VisualAccessories/main/update.json", '{ff004d}['..thisScript().name..']: {ffffff}', "https://www.blast.hk/threads/85370/")
    while not sampIsLocalPlayerSpawned() do wait(0) end

    sampAddChatMessage(m_tag..'загружен! Автор: chapo', 0xFFff004d)
    
    --logger_playerId.v = select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))
    
    
    savedSkin = getCharModel(PLAYER_PED)
    
    for idx, tbl in ipairs(items_data) do table.sort(tbl, function(a,b)return a[1]<b[1]end) end   
    for i = 1, 6 do
        table.insert(items_data[i], 1, {u8'Нет', false})
    end

    --==[CHECK]==--
    firstPrintMessage = ''
  
    
  

    --print_text = '             '
    --for i = 1, 6 do
    --    curSelected = selected_slot[i]
    --    slot_color_tbl = selected_color[i]
    --    slotmax =  #items_data[i] + 1
    --    print_text = print_text..'\n'..'\t\tSlot: '..i..', selected: '..selected_slot[i]..', max: '..slotmax..', color: '..u8:decode(color_list_data[slot_color_tbl][1])
    --    --print()
    --    if selected_slot[i] > #items_data[i] + 1 then
    --        selected_slot[i] = selected_slot[i] - 1
    --        print(m_tag..'[selected > #table], slot '..i..' selected changed: from: '..selected_slot[i]..', to: '..selected_slot[i] - 1)
    --    end
    --end
    --print(m_tag..'loaded!'..print_text)
    

    

    --sampRegisterChatCommand('acsn', function() window.v = not window.v end)
    imgui.Process = false
    window.v = true  --show window
    logger.v = false
    --welcome.v = false
    if enabled.v then
        apply()
        applyWalkStyle(walkstyle_selected.v)
        applyFightStyle()
    end

    while true do
        wait(0)
        if logger.r or window.v then imgui.Process = true else imgui.Process = false end
        print('work')

        --RollerFix by Chapo (https://www.blast.hk/threads/80279/)
        if skin_rollerFix.v then rollerFix() end

        --NormalTurnFix by FYS (https://www.blast.hk/threads/41127/)
        if skin_NormalSkinsTurn.v then CPed = getCharPointer(PLAYER_PED); memory.write(CPed + 0x560, 1089470464, 4, 0) end
    end
end


function imgui.OnDrawFrame()
    resX, resY = getScreenResolution()
    if logger.v then
        imgui.SetNextWindowPos(imgui.ImVec2(250, 250), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowSize(imgui.ImVec2(400, 250), imgui.Cond.FirstUseEver)
        imgui.Begin('logger', logger, imgui.WindowFlags.NoResize)

        imgui.Text('Player ID: ')
        imgui.SameLine()
        imgui.InputInt('##log_pid', logger_playerId)

        imgui.Text('Slot 0:')
        imgui.SameLine()
        imgui.InputText('##llog_slot0', logger_slot0, imgui.InputTextFlags.ReadOnly)
        imgui.Text('Slot 1:')
        imgui.SameLine()
        imgui.InputText('##llog_slot1', logger_slot1, imgui.InputTextFlags.ReadOnly)
        imgui.Text('Slot 2:')
        imgui.SameLine()
        imgui.InputText('##llog_slot2', logger_slot2, imgui.InputTextFlags.ReadOnly)
        imgui.Text('Slot 3:')
        imgui.SameLine()
        imgui.InputText('##llog_slot3', logger_slot3, imgui.InputTextFlags.ReadOnly)
        imgui.Text('Slot 4:')
        imgui.SameLine()
        imgui.InputText('##llog_slot4', logger_slot4, imgui.InputTextFlags.ReadOnly)
        imgui.Text('Slot 5:')
        imgui.SameLine()
        imgui.InputText('##llog_slot5', logger_slot5, imgui.InputTextFlags.ReadOnly)

        --logger_buf

        imgui.End()
    end
    if window.v then
        sizeX, sizeY = 500, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2 - sizeX / 2, resY / 2 - sizeY / 2), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin(thisScript().name..' (v.'..thisScript().version..')', window, imgui.WindowFlags.NoResize)

        if imgui.Selector(selector_list, imgui.ImVec2(130, 30), menu_selected, selector_pos, 10) then search.v = '' end

        imgui.SetCursorPos(imgui.ImVec2(395, 30))
        if imgui.Button(u8'Снять все', imgui.ImVec2(92, 20)) then
            for i = 0, 6 do
                clear(i)
                selected_slot[i] = 1
                case_selected.v = 0
                glow.v = false
                mods_selected.v = 0
            end
        end

        if menu_selected.v < 7 then
            imgui.SetCursorPos(imgui.ImVec2(135, 30))
            imgui.Text(u8'Поиск: '); imgui.SameLine(); imgui.PushItemWidth(200) imgui.InputText('##search', search) imgui.PopItemWidth()
            imgui.SetCursorPos(imgui.ImVec2(135, 55))
            imgui.BeginChild('child_content', imgui.ImVec2(250, 235), true)

          
        
        else
            imgui.SetCursorPos(imgui.ImVec2(135, 30))
            imgui.BeginChild('child_content', imgui.ImVec2(250, 260), true)
        end

        

            --SEARCH
            

            if menu_selected.v < 7 then
                for i = 1, #items_data do
                    if menu_selected.v == i then
                        if string.len(search.v) == 0 then
                            for i2 = 1, #items_data[i] do
                                --imgui.Text(items_data[i][i2][1])
                                
                                if imgui.Selectable(items_data[i][i2][1], selected_slot[i] == i2) then
                                    selected_slot[i] = i2
                                    slot_color_tbl = selected_color[menu_selected.v]
                                    if mods_selected.v == 0 then slotApply(i - 1, items_data[i][i2], color_list_data[slot_color_tbl]) end
                                    save()
                                end
                            end
                        else
                            for i2 = 1, #items_data[i] do
                                il = string.rlower(u8:decode(items_data[i][i2][1]))
                                sl = string.rlower(u8:decode(search.v))
                                --Message('search  = '..sl, -1)
                                --sampAddChatMessage('il = '..il, -1)
                                
                                if il:find(sl) then
                                    --print(u8:decode(search.v)..' founded in '..u8:decode(items_data[i][i2][1]))
                                    --imgui.Text(items_data[i][i2][1])
                                    if imgui.Selectable(items_data[i][i2][1], selected_slot[i] == i2) then
                                        selected_slot[i] = i2
                                        slot_color_tbl = selected_color[menu_selected.v]
                                        if mods_selected.v == 0 then slotApply(i - 1, items_data[i][i2], color_list_data[slot_color_tbl]) end
                                        save()
                                    end
                                end
                            end
                        end
                    end
                end
            else
                imgui.PushItemWidth(145)
                imgui.Text(u8'Модификация: ');   imgui.SameLine(); imgui.SetCursorPosX(100); if imgui.Combo('###modslot', mods_selected, mods_list, #mods_list) then if mods_selected.v ~= 0 then save() applyModification(mods_items_data[mods_selected.v]) else save(); apply() end end
                imgui.Spacing(); imgui.Separator(); imgui.Spacing()
                imgui.Text(u8'Бронежилет: ');   imgui.SameLine(); imgui.SetCursorPosX(100) ; if imgui.Combo('##armour_type', armour_type, {u8'Обычный', u8'Улучшенный'}, 2) then save() end
                imgui.Text(u8'Кейс: ');         imgui.SameLine(); imgui.SetCursorPosX(100) ; if imgui.Combo('###moneycase', case_selected, case_items, #case_items) then if case_selected.v ~= 0 then save(); slotApply(7, case_items_data[case_selected.v], false) else save(); clear(7) end end
                imgui.Text(u8'Стиль ходьбы:');  imgui.SameLine(); imgui.SetCursorPosX(100) ; if imgui.Combo('##combo_walkstyle', walkstyle_selected, walkstyle_list, #walkstyle_list) then save(); applyWalkStyle(walkstyle_selected.v) end
                imgui.Text(u8'Стиль боя:');     imgui.SameLine(); imgui.SetCursorPosX(100) ; if imgui.Combo('##combo_fightstyle', fightstyle_selected, fight_list, #fight_list) then save(); applyFightStyle() end
                imgui.PopItemWidth()

                if imgui.Checkbox(u8'Аура', glow) then if glow.v then slotApply(6, glowEffect_data, false) else clear(6) end end

                imgui.Spacing(); imgui.Separator(); imgui.Spacing()

                if imgui.Checkbox(u8'Изменять скин', changeskin) then
                    if changeskin.v then
                        applyPlayerSkin(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)), skinid.v)
                    else
                        applyPlayerSkin(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)), savedSkin)
                    end
                    save()
                end
                imgui.Text(u8'Скин:');     imgui.SameLine(); imgui.SetCursorPosX(75) ;
                if imgui.InputInt('##skirdhngudtfjg', skinid) then
                    if skinid.v == -1 then skinid.v = 0 elseif skinid.v == 312 then skinid.v = 311 end

                    if changeskin.v then
                        applyPlayerSkin(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)), skinid.v)
                    else
                        applyPlayerSkin(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)), savedSkin)
                    end
                    save()
                end
                
                imgui.Checkbox('RollerFix', skin_rollerFix); imgui.SameLine(); imgui.TextQuestion(u8'Удаление разгона у 92 и 99 скинов (by Chapo)')
                imgui.SameLine()
                imgui.Checkbox('NormalSkinsTurn', skin_NormalSkinsTurn); imgui.SameLine(); imgui.TextQuestion(u8'Фикс резких поворотов у некоторых скинов. (by FYS)\nПосле отключения требуется перезаход в игру!')
            end
        

        imgui.EndChild()

        if menu_selected.v < 7 then
            imgui.SetCursorPos(imgui.ImVec2(395, 55))
            imgui.BeginChild('child_color', imgui.ImVec2(92, 235), true)
                for i = 1, #color_list_data do

                    if imgui.Selectable(color_list_data[i][1], selected_color[menu_selected.v] == i) then
                        selected_color[menu_selected.v] = i
                        slot_color_tbl = selected_color[menu_selected.v]

                        sad = selected_slot[menu_selected.v ]
                        slotminus = menu_selected.v
                        --sampAddChatMessage(u8:decode(items_data[menu_selected.v][sad][1]), -1)
                        --selected_color[menu_selected.v] = color_list_data[slot_color_tbl][1]
                        save()
                        if mods_selected.v == 0 then slotApply(menu_selected.v - 1, items_data[menu_selected.v][sad], color_list_data[slot_color_tbl]) end --slotApply(menu_selected.v - 1, items_data[menu_selected.v][sad], color_list_data[slot_color_tbl])
                    end
                end
            imgui.EndChild()
        elseif menu_selected.v == 7 then
            imgui.SetCursorPos(imgui.ImVec2(395, 57))
            if imgui.Button(u8'Discord сервер', imgui.ImVec2(92, 73)) then os.execute('explorer "https://discord.gg/mdRrvGBnE9"') end

            imgui.SetCursorPos(imgui.ImVec2(395, 135))
            if imgui.Button(u8'Выгрузить', imgui.ImVec2(92, 73)) then window.v = false; showCursor(false); thisScript():unload() end
            
            imgui.SetCursorPos(imgui.ImVec2(395, 213))
            if imgui.Button(u8'Перезагрузить', imgui.ImVec2(92, 73)) then window.v = false; showCursor(false); thisScript():reload() end

            if imgui.Button('get key', imgui.ImVec2(50, 75)) then
                sampAddChatMessage('preset key: '..generateKey(), -1)
                imgui.OpenPopup(u8'Пресет')
                key_window.v = true
                
            end
        elseif menu_selected.v == 8 then
            if imgui.BeginPopupModal(u8'Пресет', key_window, imgui.WindowFlags.NoResize) then

                imgui.Combo(u8'##preset_get_set', presetGetSetCombo, {u8'Мой пресет', u8'Выбрать пресет'}, 2)
                imgui.SetWindowSize(imgui.ImVec2(300, 150))
                if presetGetSetCombo.v == 0 then
                    imgui.Text(u8'Твой пресет: ')
                    imgui.SameLine()
                    imgui.SetCursorPosX(100)
                    getKeyInput.v = generateKey()
                    imgui.InputText('##get', getKeyInput, imgui.InputTextFlags.ReadOnly)
                else
                    if imgui.CollapsingHeader(u8'Сохраненные пресеты') then

                    end
                    imgui.Text(u8'Код пресета: ')
                    imgui.SameLine()
                    imgui.SetCursorPosX(100)
                    imgui.InputText('set', setKeyInput)
                    imgui.SetCursorPosX(5)
                    imgui.SetCursorPosY(100)
                    if imgui.Button(u8'Применить', imgui.ImVec2(215, 20)) then
                        
                        loadByKey(setKeyInput.v)
                        imgui.CloseCurrentPopup()
                        key_window.v = false
                    end
                end
                
                
                --local key_window = imgui.ImBool(false)
                --local getKeyInput = imgui.ImBuffer(256)
                --local setKeyInput = imgui.ImBuffer(256)
                imgui.SetCursorPosX(5)
                imgui.SetCursorPosY(125)
                if imgui.Button(u8'Закрыть', imgui.ImVec2(215, 20)) then
                    imgui.CloseCurrentPopup()
                    key_window.v = false
                end
                imgui.EndPopup()
            end
        end

        --==[ЕБАТЬ Я КОПИРАЙТОВ ПОНАВПИХАЛ]==--

        imgui.SetCursorPos(imgui.ImVec2(25, 265))
        imgui.Text(u8'Автор:')
        imgui.SameLine()
        imgui.TextColored(imgui.ImVec4(1, 0, 0.3, 1.00), 'Chapo')

        if imgui.IsItemClicked(0) then
            imgui.OpenPopup(u8'Автор: Chapo')
            --os.execute('explorer "https://vk.com/amid24"')
        end
        if imgui.IsItemHovered() then
            imgui.BeginTooltip()
                imgui.Text('CLICK HERE!')
            imgui.EndTooltip()
        end
        
        if imgui.BeginPopupModal(u8'Автор: Chapo', imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoScrollbar + imgui.WindowFlags.NoResize) then
            imgui.SetWindowSize(imgui.ImVec2(170, 100))
            imgui.SetCursorPosX(5)
            if imgui.Button('VK', imgui.ImVec2(50, 50)) then os.execute('explorer "https://vk.com/amid24"') end; imgui.SameLine()
            imgui.SetCursorPosX(60)
            if imgui.Button('BH', imgui.ImVec2(50, 50)) then os.execute('explorer "https://www.blast.hk/members/112329/"') end; imgui.SameLine()
            imgui.SetCursorPosX(115)
            if imgui.Button(u8'Тема', imgui.ImVec2(50, 50)) then os.execute('explorer "https://www.blast.hk/threads/85370/"') end; imgui.SetCursorPosX(5)
            if imgui.Button(u8'Закрыть', imgui.ImVec2(160, 20)) then imgui.CloseCurrentPopup() end
            imgui.EndPopup()
        end

        imgui.SetCursorPos(imgui.ImVec2(35, 280))
        imgui.Text(u8'Версия:')
        imgui.SameLine()
        imgui.TextColored(imgui.ImVec4(1, 0, 0.3, 1.00), thisScript().version)

        imgui.End()
    end

    if welcome.v then
        sizeX, sizeY = 315, 100
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2 - sizeX / 2, resY / 2 - sizeY / 2), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin(u8(thisScript().name..' - приветствие'), imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoCollapse)

        imgui.CenterTextColoredRGB('Добро пожаловать, выбери стиль интерфейса')

        imgui.SetCursorPos(imgui.ImVec2(5, 40))
        if imgui.Button(u8'Старый', imgui.ImVec2(150, 30)) then
            ini.desing.style = 1
            inicfg.save(ini, directIni)
        end
        imgui.SetCursorPos(imgui.ImVec2(160, 40))
        if imgui.Button(u8'Новый (рекомендуется)', imgui.ImVec2(150, 30)) then
            ini.desing.style = 2
            inicfg.save(ini, directIni)
        end

        imgui.CenterTextColoredRGB('Вы сможете изменить его в любой момент!')

        imgui.End()
    end
end

function generateKey()
    local key = ''
    --slots
    for i = 1, 7 do
        slotItem = tostring(selected_slot[i])
        if #slotItem == 1 then
            key = key..'0'..slotItem..';'
        else
            key = key..slotItem..';'
        end
    end
    --key = key..';'..skinid.v..';'..fightstyle_selected.v..';'..walkstyle_selected.v..';'..case_selected.v..';'..
    return key
end




--key:
--      slots;skin;fight;walk;case;glow;armour

function loadByKey(key)
    local loadByKeyArray = {}
    for i = 1, 7 do
        loadByKeyArray = split(key, ';')
    end
    for i = 1, #loadByKeyArray do
        
        print('slot '..i..' = '..loadByKeyArray[i])
        selected_slot[i] = loadByKeyArray[i]
        for i = 1, 6 do
            curSelected = selected_slot[i]
            slot_color_tbl = selected_color[i]
            slotApply(i - 1, items_data[i][curSelected], color_list_data[slot_color_tbl])
        end
    end
end

function split(str, delim, plain)
    local tokens, pos, plain = {}, 1, not (plain == false) --[[ delimiter is plain text by default ]]
    repeat
        local npos, epos = string.find(str, delim, pos, plain)
        table.insert(tokens, string.sub(str, pos, npos and npos - 1))
        pos = epos and epos + 1
    until not pos
    return tokens
end

--/----------==[SAMP EVENTS]==----------\--
function sampev.onSetPlayerPos(pos)
    if changeskin.v then
        if skinid.v then
            _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
            applyPlayerSkin(id, skinid.v)
        end
    end
    --if changeskin.v and getCharModel(PLAYER_PED) > 0 then applyPlayerSkin(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)), skinid.v) end
end

function sampev.onSetPlayerSkin(playerId, skinId)
    if playerId == select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)) then
        if changeskin.v then return false --[[applyPlayerSkin(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)), skinid.v)]] end
    end
end

function sampev.onSetPlayerAttachedObject(playerId, index, create, object)
    if enabled.v then
        if playerId == select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)) then
            if index >= 0 and index <= 7 then return false end
            if object.modelId == 19142 then return false end
        end

        if playerId == logger_playerId.v then
            --sampAddChatMessage('Object attached to '..sampGetPlayerNickname(logger_playerId.v)..' ['..logger_playerId.v..']!', -1)
            log_data = "{u8'name', "..object.modelId..", "..object.bone..', '..object.offset.x..', '..object.offset.y..', '..object.offset.z..', '..object.rotation.x..', '..object.rotation.y..', '..object.rotation.z..', '..object.scale.x..', '..object.scale.y..', '..object.scale.z..'}, --COL1: '..object.color1..', COL2: '..object.color2
            if index == 0 then logger_slot0.v = log_data end
            if index == 1 then logger_slot1.v = log_data end
            if index == 2 then logger_slot2.v = log_data end
            if index == 3 then logger_slot3.v = log_data end
            if index == 4 then logger_slot4.v = log_data end
            if index == 5 then logger_slot5.v = log_data end

        end
    end
end

function sampev.onSetPlayerArmour(armour)
    --sampAddChatMessage('armour : '..armour, -1)
    if armour > 0 then
        if armour_type.v == 0 then
            slotApply(5, armour_data[2], false)
        else
            slotApply(5, armour_data[1], false)
        end
    else
        clear(5)
        apply()
    end
end


--\-------------------------------------/--


--/----------==[APPLY]==----------\--
function apply()
    if mods_selected.v ~= 0 then
        applyModification(mods_items_data[mods_selected.v])
    else
        for i = 1, 6 do
            curSelected = selected_slot[i]
            slot_color_tbl = selected_color[i]
            slotApply(i - 1, items_data[i][curSelected], color_list_data[slot_color_tbl])
        end
    end

    applyFightStyle()

    if glow.v then slotApply(6, glowEffect_data, false) else clear(6) end
    if case_selected.v ~= 0 then slotApply(7, case_items_data[case_selected.v], false) else clear(7) end
    
    if changeskin.v and getCharModel(PLAYER_PED) ~= skinid.v  then applyPlayerSkin(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)), skinid.v) end
end

function slotApply(indexNumber, itemData, colorData)
    --mods_selected.v = 0
    if itemData ~= nil then
        if itemData[2] ~= false then
            local bs = raknetNewBitStream()
            raknetBitStreamWriteInt16(bs, select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) -- playerId
            raknetBitStreamWriteInt32(bs, indexNumber) -- index
            raknetBitStreamWriteBool(bs,  true) -- create
            raknetBitStreamWriteInt32(bs, itemData[2]) -- modelId
            raknetBitStreamWriteInt32(bs, itemData[3]) -- bone
            raknetBitStreamWriteFloat(bs, itemData[4]) -- offset x
            raknetBitStreamWriteFloat(bs, itemData[5]) -- offset y
            raknetBitStreamWriteFloat(bs, itemData[6]) -- offset z
            raknetBitStreamWriteFloat(bs, itemData[7]) -- rotation x
            raknetBitStreamWriteFloat(bs, itemData[8]) -- rotation y
            raknetBitStreamWriteFloat(bs, itemData[9])  -- rotation z
            raknetBitStreamWriteFloat(bs, itemData[10]) -- scale x
            raknetBitStreamWriteFloat(bs, itemData[11]) -- scale y
            raknetBitStreamWriteFloat(bs, itemData[12]) -- scale z

            if itemData[13] ~= false then
                raknetBitStreamWriteInt32(bs, itemData[13])
            else
                if colorData ~= false then
                    raknetBitStreamWriteInt32(bs, colorData[2])
                else
                    raknetBitStreamWriteInt32(bs, -1)
                end
            end

            if itemData[14] ~= false then
                raknetBitStreamWriteInt32(bs, itemData[14])
            else
                if colorData ~= false then
                    raknetBitStreamWriteInt32(bs, colorData[2])
                else
                    raknetBitStreamWriteInt32(bs, -1)
                end
            end


            raknetEmulRpcReceiveBitStream(113, bs)
            raknetDeleteBitStream(bs)
        else
            local bs = raknetNewBitStream()
            raknetBitStreamWriteInt16(bs, select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) -- playerId
            raknetBitStreamWriteInt32(bs, indexNumber) -- index
            raknetBitStreamWriteBool(bs, false) -- create
            raknetEmulRpcReceiveBitStream(113, bs)
            raknetDeleteBitStream(bs)
        end
    else
        print(m_tag..'error in slot '..indexNumber)
    end
end

function applyModification(modDataTable)
    if modDataTable ~= nil then
        --slot0_selected.v = 0
        --slot1_selected.v = 0
        --slot2_selected.v = 0
        --slot3_selected.v = 0
        --slot4_selected.v = 0
        --slot5_selected.v = 0
        --case_selected.v = 0
        for i = 0, 7 do clear(i) end
        for i = 1, table.getn(modDataTable) do
            local bs = raknetNewBitStream()
            raknetBitStreamWriteInt16(bs, select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) -- playerId
            raknetBitStreamWriteInt32(bs, modDataTable[i][2]) -- index
            raknetBitStreamWriteBool(bs,  true) -- create
            raknetBitStreamWriteInt32(bs, modDataTable[i][3]) -- modelId
            raknetBitStreamWriteInt32(bs, modDataTable[i][4]) -- bone
            raknetBitStreamWriteFloat(bs, modDataTable[i][5]) -- offset x
            raknetBitStreamWriteFloat(bs, modDataTable[i][6]) -- offset y
            raknetBitStreamWriteFloat(bs, modDataTable[i][7]) -- offset z
            raknetBitStreamWriteFloat(bs, modDataTable[i][8]) -- rotation x
            raknetBitStreamWriteFloat(bs, modDataTable[i][9]) -- rotation y
            raknetBitStreamWriteFloat(bs, modDataTable[i][10])  -- rotation z
            raknetBitStreamWriteFloat(bs, modDataTable[i][11]) -- scale x
            raknetBitStreamWriteFloat(bs, modDataTable[i][12]) -- scale y
            raknetBitStreamWriteFloat(bs, modDataTable[i][13]) -- scale z
            
            if modDataTable[i][14] ~= false then
                raknetBitStreamWriteInt32(bs, modDataTable[i][14])
            else
                raknetBitStreamWriteInt32(bs, -1)
            end
        
            if modDataTable[i][15] ~= false then
                
                raknetBitStreamWriteInt32(bs, modDataTable[i][15])
            else
                raknetBitStreamWriteInt32(bs, -1)
            end

            raknetEmulRpcReceiveBitStream(113, bs)
            raknetDeleteBitStream(bs)
        end
    else
        for i = 0, 5 do clear(i) end
    end
end

function applyPlayerSkin(id, skin)
    if getCharModel(PLAYER_PED) ~= id then
        local BS = raknetNewBitStream()
        raknetBitStreamWriteInt32(BS, id)
        raknetBitStreamWriteInt32(BS, skin)
        raknetEmulRpcReceiveBitStream(153, BS)
        raknetDeleteBitStream(BS)
    end
end

function applyFightStyle()
    bs = raknetNewBitStream()
    raknetBitStreamWriteInt16(bs, select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)))
    raknetBitStreamWriteInt8(bs, fightstyle_data[fightstyle_selected.v + 1][2])
    raknetEmulRpcReceiveBitStream(89, bs)
    raknetDeleteBitStream(bs)
end

function applyWalkStyle(id)
    setAnimGroupForChar(playerPed, walkstyle_data[id + 1])
end

function clear(indexNumber)
    local bs = raknetNewBitStream()
    raknetBitStreamWriteInt16(bs, select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) -- playerId
    raknetBitStreamWriteInt32(bs, indexNumber) -- index
    raknetBitStreamWriteBool(bs, false) -- create
    raknetEmulRpcReceiveBitStream(113, bs)
    raknetDeleteBitStream(bs)
end

--\-------------------------------/--


--/----------==[OTHER]==----------\--
function save()
    savedcolorstext = ''
    ini.slots.s1, ini.slots.s2, ini.slots.s3, ini.slots.s4, ini.slots.s5, ini.slots.s6, ini.slots.s7 = selected_slot[1], selected_slot[2], selected_slot[3], selected_slot[4], selected_slot[5], selected_slot[6], selected_slot[7]
    ini.colors.s1, ini.colors.s2, ini.colors.s3, ini.colors.s4, ini.colors.s5, ini.colors.s6, ini.colors.s7 = selected_color[1], selected_color[2], selected_color[3], selected_color[4], selected_color[5], selected_color[6], selected_color[7]
    
    for i = 1, 7 do
        savedcolorstext = savedcolorstext .. 'slot: '..i..': '..selected_color[i]..'\n'
    end
    print('colors saved: '..savedcolorstext)
    ini.other.walkstyle = walkstyle_selected.v
    ini.other.fightstyle = fightstyle_selected.v
    ini.slots.case = case_selected.v

    ini.skin.enabled = changeskin.v
    ini.skin.skinid = skinid.v

    ini.slots.glow = glow.v
    ini.other.armour = armour_type.v

    ini.slots.mods = mods_selected.v

    inicfg.save(ini, directIni)
end

function onScriptTerminate(s, q)
    if s == thisScript() then
        for i = 0, 7 do clear(i) end
    end
end

function rollerFix()
    if getCharModel(PLAYER_PED) == 92 or getCharModel(PLAYER_PED) == 99 then
        if isKeyDown(87) or isKeyDown(65) or isKeyDown(83) or isKeyDown(68) then
            setCharAnimSpeed(PLAYER_PED, 'skate_idle', 1000)
        end
    end
end
--\-------------------------------/--


--/----------==[ImGui Funcs]==----------\--
function imgui.Selector(labels, size, selected, pos, speed)
    local rBool = false
    if not speed then speed = 10 end
    if (pos.v < (selected.v * size.y)) then
        pos.v = pos.v + speed
    elseif (pos.v > (selected.v * size.y)) then
        pos.v = pos.v - speed
    end
    imgui.SetCursorPos(imgui.ImVec2(0.00, pos.v))
    local draw_list = imgui.GetWindowDrawList()
    local p = imgui.GetCursorScreenPos()
    local radius = size.y * 0.50
    draw_list:AddRectFilled(imgui.ImVec2(p.x-size.x/2, p.y), imgui.ImVec2(p.x + radius + 1 * (size.x - radius * 2.0), p.y + radius*2), imgui.GetColorU32(imgui.GetStyle().Colors[imgui.Col.ButtonActive]))
    draw_list:AddRectFilled(imgui.ImVec2(p.x-size.x/2, p.y), imgui.ImVec2(p.x + 5, p.y + size.y), imgui.GetColorU32(imgui.GetStyle().Colors[imgui.Col.Button]), 0)
    draw_list:AddCircleFilled(imgui.ImVec2(p.x + radius + 1 * (size.x - radius * 2.0), p.y + radius), radius, imgui.GetColorU32(imgui.GetColorU32(imgui.GetStyle().Colors[imgui.Col.ButtonActive])), radius/10*12)
    for i = 1, #labels do
        imgui.SetCursorPos(imgui.ImVec2(0, (i * size.y)))
        local p = imgui.GetCursorScreenPos()
        if imgui.InvisibleButton(labels[i], size) then selected.v = i rBool = true end
        if imgui.IsItemHovered() then
            draw_list:AddRectFilled(imgui.ImVec2(p.x-size.x/2, p.y), imgui.ImVec2(p.x + size.x, p.y + size.y), imgui.GetColorU32(imgui.ImVec4(0.58, 0.34, 0.46, 0.20)), radius/10*12)
        end
        imgui.SetCursorPos(imgui.ImVec2(20, (i * size.y + (size.y-imgui.CalcTextSize(labels[i]).y)/2)))
        imgui.Text(labels[i])
    end
    return rBool
end

function imgui.CenterTextColoredRGB(text)
    local width = imgui.GetWindowWidth()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local ImVec4 = imgui.ImVec4

    local explode_argb = function(argb)
        local a = bit.band(bit.rshift(argb, 24), 0xFF)
        local r = bit.band(bit.rshift(argb, 16), 0xFF)
        local g = bit.band(bit.rshift(argb, 8), 0xFF)
        local b = bit.band(argb, 0xFF)
        return a, r, g, b
    end

    local getcolor = function(color)
        if color:sub(1, 6):upper() == 'SSSSSS' then
            local r, g, b = colors[1].x, colors[1].y, colors[1].z
            local a = tonumber(color:sub(7, 8), 16) or colors[1].w * 255
            return ImVec4(r, g, b, a / 255)
        end
        local color = type(color) == 'string' and tonumber(color, 16) or color
        if type(color) ~= 'number' then return end
        local r, g, b, a = explode_argb(color)
        return imgui.ImColor(r, g, b, a):GetVec4()
    end

    local render_text = function(text_)
        for w in text_:gmatch('[^\r\n]+') do
            local textsize = w:gsub('{.-}', '')
            local text_width = imgui.CalcTextSize(u8(textsize))
            imgui.SetCursorPosX( width / 2 - text_width .x / 2 )
            local text, colors_, m = {}, {}, 1
            w = w:gsub('{(......)}', '{%1FF}')
            while w:find('{........}') do
                local n, k = w:find('{........}')
                local color = getcolor(w:sub(n + 1, k - 1))
                if color then
                    text[#text], text[#text + 1] = w:sub(m, n - 1), w:sub(k + 1, #w)
                    colors_[#colors_ + 1] = color
                    m = n
                end
                w = w:sub(1, n - 1) .. w:sub(k + 1, #w)
            end
            if text[0] then
                for i = 0, #text do
                    imgui.TextColored(colors_[i] or colors[1], u8(text[i]))
                    imgui.SameLine(nil, 0)
                end
                imgui.NewLine()
            else
                imgui.Text(u8(w))
            end
        end
    end
    render_text(text)
end

function imgui.TextQuestion(text)
    imgui.SameLine()
    imgui.TextDisabled('?')
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.PushTextWrapPos(450)
        imgui.TextUnformatted(text)
        imgui.PopTextWrapPos()
        imgui.EndTooltip()
    end
end
--\-------------------------------/--


--AUTOUPDATE BY qrlk (http://qrlk.me/samp)
function autoupdate(json_url, prefix, url)
    local dlstatus = require('moonloader').download_status
    local json = getWorkingDirectory() .. '\\'..thisScript().name..'-version.json'
    if doesFileExist(json) then os.remove(json) end
    downloadUrlToFile(json_url, json,
        function(id, status, p1, p2)
            if status == dlstatus.STATUSEX_ENDDOWNLOAD then
                if doesFileExist(json) then
                    local f = io.open(json, 'r')
                    if f then
                        local info = decodeJson(f:read('*a'))
                        updatelink = info.updateurl
                        updateversion = info.latest
                        f:close()
                        os.remove(json)
                        if updateversion ~= thisScript().version then
                            lua_thread.create(function(prefix)
                            local dlstatus = require('moonloader').download_status
                            local color = -1
                            sampAddChatMessage((m_tag..'Обнаружено обновление. Пытаюсь обновиться c '..thisScript().version..' на '..updateversion), color)
                            wait(250)
                            downloadUrlToFile(updatelink, thisScript().path,
                            function(id3, status1, p13, p23)
                      if status1 == dlstatus.STATUS_DOWNLOADINGDATA then
                        print(string.format('Загружено %d из %d.', p13, p23))
                      elseif status1 == dlstatus.STATUS_ENDDOWNLOADDATA then
                        print('Загрузка обновления завершена.')
                        sampAddChatMessage((prefix..'Обновление завершено!'), color)
                        goupdatestatus = true
                        slot0_selected.v = 0
                        slot1_selected.v = 0
                        slot2_selected.v = 0
                        slot3_selected.v = 0
                        slot4_selected.v = 0
                        slot5_selected.v = 0
                        case_selected.v = 0
                        save()
                        os.delete(getWorkingDirectory()..'\\config\\VisualAccessories_by_Chapo.ini')
                        print('Файл "'..getWorkingDirectory()..'\\config\\VisualAccessories_by_Chapo.ini" удалён, перезапуск скрипта...')
                        print('Если после обновления возникли ошибки - напишите автору: vk.com/amid24, или удалите файл "'..getWorkingDirectory()..'\\config\\VisualAccessories_by_Chapo.ini"')
                        print('Если после обновления возникли ошибки - напишите автору: vk.com/amid24, или удалите файл "'..getWorkingDirectory()..'\\config\\VisualAccessories_by_Chapo.ini"')
                        print('Если после обновления возникли ошибки - напишите автору: vk.com/amid24, или удалите файл "'..getWorkingDirectory()..'\\config\\VisualAccessories_by_Chapo.ini"')
                        print('Если после обновления возникли ошибки - напишите автору: vk.com/amid24, или удалите файл "'..getWorkingDirectory()..'\\config\\VisualAccessories_by_Chapo.ini"')
                        print('Если после обновления возникли ошибки - напишите автору: vk.com/amid24, или удалите файл "'..getWorkingDirectory()..'\\config\\VisualAccessories_by_Chapo.ini"')
                        print('Если после обновления возникли ошибки - напишите автору: vk.com/amid24, или удалите файл "'..getWorkingDirectory()..'\\config\\VisualAccessories_by_Chapo.ini"')
                        lua_thread.create(function() wait(500) thisScript():reload() end)
                      end
                      if status1 == dlstatus.STATUSEX_ENDDOWNLOAD then
                        if goupdatestatus == nil then
                          sampAddChatMessage((prefix..'Обновление прошло неудачно. Запускаю устаревшую версию..'), color)
                          update = false
                        end
                      end
                    end
                  )
                  end, prefix
                )
              else
                update = false
                print(m_tag..': Обновление не требуется.')
              end
            end
          else
            sampAddChatMessage(m_tag..'v'..thisScript().version..': Не могу проверить обновление. Смиритесь или проверьте самостоятельно на '..url, -1)
            update = false
          end
        end
      end
    )
    while update ~= false do wait(100) end
end
 

chapo

чопа сребдс // @moujeek
Модератор
8,861
11,547

Pashyka

Участник
220
17
почему скрипт запускается, но как бы и не запускается (команда не работает и т.д.)? Если вырезать строку с автообновлением то все работает
Lua:
function main()
    while not isSampAvailable() do wait(200) end
    autoupdate("https://raw.githubusercontent.com/GovnocodedByChapo/VisualAccessories/main/update.json", '{ff004d}['..thisScript().name..']: {ffffff}', "https://www.blast.hk/threads/85370/")
    while not sampIsLocalPlayerSpawned() do wait(0) end

    sampAddChatMessage(m_tag..'загружен! Автор: chapo', 0xFFff004d)
  
    --logger_playerId.v = select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))
  
  
    savedSkin = getCharModel(PLAYER_PED)
  
    for idx, tbl in ipairs(items_data) do table.sort(tbl, function(a,b)return a[1]<b[1]end) end 
    for i = 1, 6 do
        table.insert(items_data[i], 1, {u8'Нет', false})
    end

    --==[CHECK]==--
    firstPrintMessage = ''

  


    --print_text = '             '
    --for i = 1, 6 do
    --    curSelected = selected_slot[i]
    --    slot_color_tbl = selected_color[i]
    --    slotmax =  #items_data[i] + 1
    --    print_text = print_text..'\n'..'\t\tSlot: '..i..', selected: '..selected_slot[i]..', max: '..slotmax..', color: '..u8:decode(color_list_data[slot_color_tbl][1])
    --    --print()
    --    if selected_slot[i] > #items_data[i] + 1 then
    --        selected_slot[i] = selected_slot[i] - 1
    --        print(m_tag..'[selected > #table], slot '..i..' selected changed: from: '..selected_slot[i]..', to: '..selected_slot[i] - 1)
    --    end
    --end
    --print(m_tag..'loaded!'..print_text)
  

  

    --sampRegisterChatCommand('acsn', function() window.v = not window.v end)
    imgui.Process = false
    window.v = true  --show window
    logger.v = false
    --welcome.v = false
    if enabled.v then
        apply()
        applyWalkStyle(walkstyle_selected.v)
        applyFightStyle()
    end

    while true do
        wait(0)
        if logger.r or window.v then imgui.Process = true else imgui.Process = false end
        print('work')

        --RollerFix by Chapo (https://www.blast.hk/threads/80279/)
        if skin_rollerFix.v then rollerFix() end

        --NormalTurnFix by FYS (https://www.blast.hk/threads/41127/)
        if skin_NormalSkinsTurn.v then CPed = getCharPointer(PLAYER_PED); memory.write(CPed + 0x560, 1089470464, 4, 0) end
    end
end


function imgui.OnDrawFrame()
    resX, resY = getScreenResolution()
    if logger.v then
        imgui.SetNextWindowPos(imgui.ImVec2(250, 250), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowSize(imgui.ImVec2(400, 250), imgui.Cond.FirstUseEver)
        imgui.Begin('logger', logger, imgui.WindowFlags.NoResize)

        imgui.Text('Player ID: ')
        imgui.SameLine()
        imgui.InputInt('##log_pid', logger_playerId)

        imgui.Text('Slot 0:')
        imgui.SameLine()
        imgui.InputText('##llog_slot0', logger_slot0, imgui.InputTextFlags.ReadOnly)
        imgui.Text('Slot 1:')
        imgui.SameLine()
        imgui.InputText('##llog_slot1', logger_slot1, imgui.InputTextFlags.ReadOnly)
        imgui.Text('Slot 2:')
        imgui.SameLine()
        imgui.InputText('##llog_slot2', logger_slot2, imgui.InputTextFlags.ReadOnly)
        imgui.Text('Slot 3:')
        imgui.SameLine()
        imgui.InputText('##llog_slot3', logger_slot3, imgui.InputTextFlags.ReadOnly)
        imgui.Text('Slot 4:')
        imgui.SameLine()
        imgui.InputText('##llog_slot4', logger_slot4, imgui.InputTextFlags.ReadOnly)
        imgui.Text('Slot 5:')
        imgui.SameLine()
        imgui.InputText('##llog_slot5', logger_slot5, imgui.InputTextFlags.ReadOnly)

        --logger_buf

        imgui.End()
    end
    if window.v then
        sizeX, sizeY = 500, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2 - sizeX / 2, resY / 2 - sizeY / 2), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin(thisScript().name..' (v.'..thisScript().version..')', window, imgui.WindowFlags.NoResize)

        if imgui.Selector(selector_list, imgui.ImVec2(130, 30), menu_selected, selector_pos, 10) then search.v = '' end

        imgui.SetCursorPos(imgui.ImVec2(395, 30))
        if imgui.Button(u8'Снять все', imgui.ImVec2(92, 20)) then
            for i = 0, 6 do
                clear(i)
                selected_slot[i] = 1
                case_selected.v = 0
                glow.v = false
                mods_selected.v = 0
            end
        end

        if menu_selected.v < 7 then
            imgui.SetCursorPos(imgui.ImVec2(135, 30))
            imgui.Text(u8'Поиск: '); imgui.SameLine(); imgui.PushItemWidth(200) imgui.InputText('##search', search) imgui.PopItemWidth()
            imgui.SetCursorPos(imgui.ImVec2(135, 55))
            imgui.BeginChild('child_content', imgui.ImVec2(250, 235), true)

        
      
        else
            imgui.SetCursorPos(imgui.ImVec2(135, 30))
            imgui.BeginChild('child_content', imgui.ImVec2(250, 260), true)
        end

      

            --SEARCH
          

            if menu_selected.v < 7 then
                for i = 1, #items_data do
                    if menu_selected.v == i then
                        if string.len(search.v) == 0 then
                            for i2 = 1, #items_data[i] do
                                --imgui.Text(items_data[i][i2][1])
                              
                                if imgui.Selectable(items_data[i][i2][1], selected_slot[i] == i2) then
                                    selected_slot[i] = i2
                                    slot_color_tbl = selected_color[menu_selected.v]
                                    if mods_selected.v == 0 then slotApply(i - 1, items_data[i][i2], color_list_data[slot_color_tbl]) end
                                    save()
                                end
                            end
                        else
                            for i2 = 1, #items_data[i] do
                                il = string.rlower(u8:decode(items_data[i][i2][1]))
                                sl = string.rlower(u8:decode(search.v))
                                --Message('search  = '..sl, -1)
                                --sampAddChatMessage('il = '..il, -1)
                              
                                if il:find(sl) then
                                    --print(u8:decode(search.v)..' founded in '..u8:decode(items_data[i][i2][1]))
                                    --imgui.Text(items_data[i][i2][1])
                                    if imgui.Selectable(items_data[i][i2][1], selected_slot[i] == i2) then
                                        selected_slot[i] = i2
                                        slot_color_tbl = selected_color[menu_selected.v]
                                        if mods_selected.v == 0 then slotApply(i - 1, items_data[i][i2], color_list_data[slot_color_tbl]) end
                                        save()
                                    end
                                end
                            end
                        end
                    end
                end
            else
                imgui.PushItemWidth(145)
                imgui.Text(u8'Модификация: ');   imgui.SameLine(); imgui.SetCursorPosX(100); if imgui.Combo('###modslot', mods_selected, mods_list, #mods_list) then if mods_selected.v ~= 0 then save() applyModification(mods_items_data[mods_selected.v]) else save(); apply() end end
                imgui.Spacing(); imgui.Separator(); imgui.Spacing()
                imgui.Text(u8'Бронежилет: ');   imgui.SameLine(); imgui.SetCursorPosX(100) ; if imgui.Combo('##armour_type', armour_type, {u8'Обычный', u8'Улучшенный'}, 2) then save() end
                imgui.Text(u8'Кейс: ');         imgui.SameLine(); imgui.SetCursorPosX(100) ; if imgui.Combo('###moneycase', case_selected, case_items, #case_items) then if case_selected.v ~= 0 then save(); slotApply(7, case_items_data[case_selected.v], false) else save(); clear(7) end end
                imgui.Text(u8'Стиль ходьбы:');  imgui.SameLine(); imgui.SetCursorPosX(100) ; if imgui.Combo('##combo_walkstyle', walkstyle_selected, walkstyle_list, #walkstyle_list) then save(); applyWalkStyle(walkstyle_selected.v) end
                imgui.Text(u8'Стиль боя:');     imgui.SameLine(); imgui.SetCursorPosX(100) ; if imgui.Combo('##combo_fightstyle', fightstyle_selected, fight_list, #fight_list) then save(); applyFightStyle() end
                imgui.PopItemWidth()

                if imgui.Checkbox(u8'Аура', glow) then if glow.v then slotApply(6, glowEffect_data, false) else clear(6) end end

                imgui.Spacing(); imgui.Separator(); imgui.Spacing()

                if imgui.Checkbox(u8'Изменять скин', changeskin) then
                    if changeskin.v then
                        applyPlayerSkin(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)), skinid.v)
                    else
                        applyPlayerSkin(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)), savedSkin)
                    end
                    save()
                end
                imgui.Text(u8'Скин:');     imgui.SameLine(); imgui.SetCursorPosX(75) ;
                if imgui.InputInt('##skirdhngudtfjg', skinid) then
                    if skinid.v == -1 then skinid.v = 0 elseif skinid.v == 312 then skinid.v = 311 end

                    if changeskin.v then
                        applyPlayerSkin(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)), skinid.v)
                    else
                        applyPlayerSkin(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)), savedSkin)
                    end
                    save()
                end
              
                imgui.Checkbox('RollerFix', skin_rollerFix); imgui.SameLine(); imgui.TextQuestion(u8'Удаление разгона у 92 и 99 скинов (by Chapo)')
                imgui.SameLine()
                imgui.Checkbox('NormalSkinsTurn', skin_NormalSkinsTurn); imgui.SameLine(); imgui.TextQuestion(u8'Фикс резких поворотов у некоторых скинов. (by FYS)\nПосле отключения требуется перезаход в игру!')
            end
      

        imgui.EndChild()

        if menu_selected.v < 7 then
            imgui.SetCursorPos(imgui.ImVec2(395, 55))
            imgui.BeginChild('child_color', imgui.ImVec2(92, 235), true)
                for i = 1, #color_list_data do

                    if imgui.Selectable(color_list_data[i][1], selected_color[menu_selected.v] == i) then
                        selected_color[menu_selected.v] = i
                        slot_color_tbl = selected_color[menu_selected.v]

                        sad = selected_slot[menu_selected.v ]
                        slotminus = menu_selected.v
                        --sampAddChatMessage(u8:decode(items_data[menu_selected.v][sad][1]), -1)
                        --selected_color[menu_selected.v] = color_list_data[slot_color_tbl][1]
                        save()
                        if mods_selected.v == 0 then slotApply(menu_selected.v - 1, items_data[menu_selected.v][sad], color_list_data[slot_color_tbl]) end --slotApply(menu_selected.v - 1, items_data[menu_selected.v][sad], color_list_data[slot_color_tbl])
                    end
                end
            imgui.EndChild()
        elseif menu_selected.v == 7 then
            imgui.SetCursorPos(imgui.ImVec2(395, 57))
            if imgui.Button(u8'Discord сервер', imgui.ImVec2(92, 73)) then os.execute('explorer "https://discord.gg/mdRrvGBnE9"') end

            imgui.SetCursorPos(imgui.ImVec2(395, 135))
            if imgui.Button(u8'Выгрузить', imgui.ImVec2(92, 73)) then window.v = false; showCursor(false); thisScript():unload() end
          
            imgui.SetCursorPos(imgui.ImVec2(395, 213))
            if imgui.Button(u8'Перезагрузить', imgui.ImVec2(92, 73)) then window.v = false; showCursor(false); thisScript():reload() end

            if imgui.Button('get key', imgui.ImVec2(50, 75)) then
                sampAddChatMessage('preset key: '..generateKey(), -1)
                imgui.OpenPopup(u8'Пресет')
                key_window.v = true
              
            end
        elseif menu_selected.v == 8 then
            if imgui.BeginPopupModal(u8'Пресет', key_window, imgui.WindowFlags.NoResize) then

                imgui.Combo(u8'##preset_get_set', presetGetSetCombo, {u8'Мой пресет', u8'Выбрать пресет'}, 2)
                imgui.SetWindowSize(imgui.ImVec2(300, 150))
                if presetGetSetCombo.v == 0 then
                    imgui.Text(u8'Твой пресет: ')
                    imgui.SameLine()
                    imgui.SetCursorPosX(100)
                    getKeyInput.v = generateKey()
                    imgui.InputText('##get', getKeyInput, imgui.InputTextFlags.ReadOnly)
                else
                    if imgui.CollapsingHeader(u8'Сохраненные пресеты') then

                    end
                    imgui.Text(u8'Код пресета: ')
                    imgui.SameLine()
                    imgui.SetCursorPosX(100)
                    imgui.InputText('set', setKeyInput)
                    imgui.SetCursorPosX(5)
                    imgui.SetCursorPosY(100)
                    if imgui.Button(u8'Применить', imgui.ImVec2(215, 20)) then
                      
                        loadByKey(setKeyInput.v)
                        imgui.CloseCurrentPopup()
                        key_window.v = false
                    end
                end
              
              
                --local key_window = imgui.ImBool(false)
                --local getKeyInput = imgui.ImBuffer(256)
                --local setKeyInput = imgui.ImBuffer(256)
                imgui.SetCursorPosX(5)
                imgui.SetCursorPosY(125)
                if imgui.Button(u8'Закрыть', imgui.ImVec2(215, 20)) then
                    imgui.CloseCurrentPopup()
                    key_window.v = false
                end
                imgui.EndPopup()
            end
        end

        --==[ЕБАТЬ Я КОПИРАЙТОВ ПОНАВПИХАЛ]==--

        imgui.SetCursorPos(imgui.ImVec2(25, 265))
        imgui.Text(u8'Автор:')
        imgui.SameLine()
        imgui.TextColored(imgui.ImVec4(1, 0, 0.3, 1.00), 'Chapo')

        if imgui.IsItemClicked(0) then
            imgui.OpenPopup(u8'Автор: Chapo')
            --os.execute('explorer "https://vk.com/amid24"')
        end
        if imgui.IsItemHovered() then
            imgui.BeginTooltip()
                imgui.Text('CLICK HERE!')
            imgui.EndTooltip()
        end
      
        if imgui.BeginPopupModal(u8'Автор: Chapo', imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoScrollbar + imgui.WindowFlags.NoResize) then
            imgui.SetWindowSize(imgui.ImVec2(170, 100))
            imgui.SetCursorPosX(5)
            if imgui.Button('VK', imgui.ImVec2(50, 50)) then os.execute('explorer "https://vk.com/amid24"') end; imgui.SameLine()
            imgui.SetCursorPosX(60)
            if imgui.Button('BH', imgui.ImVec2(50, 50)) then os.execute('explorer "https://www.blast.hk/members/112329/"') end; imgui.SameLine()
            imgui.SetCursorPosX(115)
            if imgui.Button(u8'Тема', imgui.ImVec2(50, 50)) then os.execute('explorer "https://www.blast.hk/threads/85370/"') end; imgui.SetCursorPosX(5)
            if imgui.Button(u8'Закрыть', imgui.ImVec2(160, 20)) then imgui.CloseCurrentPopup() end
            imgui.EndPopup()
        end

        imgui.SetCursorPos(imgui.ImVec2(35, 280))
        imgui.Text(u8'Версия:')
        imgui.SameLine()
        imgui.TextColored(imgui.ImVec4(1, 0, 0.3, 1.00), thisScript().version)

        imgui.End()
    end

    if welcome.v then
        sizeX, sizeY = 315, 100
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2 - sizeX / 2, resY / 2 - sizeY / 2), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin(u8(thisScript().name..' - приветствие'), imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoCollapse)

        imgui.CenterTextColoredRGB('Добро пожаловать, выбери стиль интерфейса')

        imgui.SetCursorPos(imgui.ImVec2(5, 40))
        if imgui.Button(u8'Старый', imgui.ImVec2(150, 30)) then
            ini.desing.style = 1
            inicfg.save(ini, directIni)
        end
        imgui.SetCursorPos(imgui.ImVec2(160, 40))
        if imgui.Button(u8'Новый (рекомендуется)', imgui.ImVec2(150, 30)) then
            ini.desing.style = 2
            inicfg.save(ini, directIni)
        end

        imgui.CenterTextColoredRGB('Вы сможете изменить его в любой момент!')

        imgui.End()
    end
end

function generateKey()
    local key = ''
    --slots
    for i = 1, 7 do
        slotItem = tostring(selected_slot[i])
        if #slotItem == 1 then
            key = key..'0'..slotItem..';'
        else
            key = key..slotItem..';'
        end
    end
    --key = key..';'..skinid.v..';'..fightstyle_selected.v..';'..walkstyle_selected.v..';'..case_selected.v..';'..
    return key
end




--key:
--      slots;skin;fight;walk;case;glow;armour

function loadByKey(key)
    local loadByKeyArray = {}
    for i = 1, 7 do
        loadByKeyArray = split(key, ';')
    end
    for i = 1, #loadByKeyArray do
      
        print('slot '..i..' = '..loadByKeyArray[i])
        selected_slot[i] = loadByKeyArray[i]
        for i = 1, 6 do
            curSelected = selected_slot[i]
            slot_color_tbl = selected_color[i]
            slotApply(i - 1, items_data[i][curSelected], color_list_data[slot_color_tbl])
        end
    end
end

function split(str, delim, plain)
    local tokens, pos, plain = {}, 1, not (plain == false) --[[ delimiter is plain text by default ]]
    repeat
        local npos, epos = string.find(str, delim, pos, plain)
        table.insert(tokens, string.sub(str, pos, npos and npos - 1))
        pos = epos and epos + 1
    until not pos
    return tokens
end

--/----------==[SAMP EVENTS]==----------\--
function sampev.onSetPlayerPos(pos)
    if changeskin.v then
        if skinid.v then
            _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
            applyPlayerSkin(id, skinid.v)
        end
    end
    --if changeskin.v and getCharModel(PLAYER_PED) > 0 then applyPlayerSkin(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)), skinid.v) end
end

function sampev.onSetPlayerSkin(playerId, skinId)
    if playerId == select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)) then
        if changeskin.v then return false --[[applyPlayerSkin(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)), skinid.v)]] end
    end
end

function sampev.onSetPlayerAttachedObject(playerId, index, create, object)
    if enabled.v then
        if playerId == select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)) then
            if index >= 0 and index <= 7 then return false end
            if object.modelId == 19142 then return false end
        end

        if playerId == logger_playerId.v then
            --sampAddChatMessage('Object attached to '..sampGetPlayerNickname(logger_playerId.v)..' ['..logger_playerId.v..']!', -1)
            log_data = "{u8'name', "..object.modelId..", "..object.bone..', '..object.offset.x..', '..object.offset.y..', '..object.offset.z..', '..object.rotation.x..', '..object.rotation.y..', '..object.rotation.z..', '..object.scale.x..', '..object.scale.y..', '..object.scale.z..'}, --COL1: '..object.color1..', COL2: '..object.color2
            if index == 0 then logger_slot0.v = log_data end
            if index == 1 then logger_slot1.v = log_data end
            if index == 2 then logger_slot2.v = log_data end
            if index == 3 then logger_slot3.v = log_data end
            if index == 4 then logger_slot4.v = log_data end
            if index == 5 then logger_slot5.v = log_data end

        end
    end
end

function sampev.onSetPlayerArmour(armour)
    --sampAddChatMessage('armour : '..armour, -1)
    if armour > 0 then
        if armour_type.v == 0 then
            slotApply(5, armour_data[2], false)
        else
            slotApply(5, armour_data[1], false)
        end
    else
        clear(5)
        apply()
    end
end


--\-------------------------------------/--


--/----------==[APPLY]==----------\--
function apply()
    if mods_selected.v ~= 0 then
        applyModification(mods_items_data[mods_selected.v])
    else
        for i = 1, 6 do
            curSelected = selected_slot[i]
            slot_color_tbl = selected_color[i]
            slotApply(i - 1, items_data[i][curSelected], color_list_data[slot_color_tbl])
        end
    end

    applyFightStyle()

    if glow.v then slotApply(6, glowEffect_data, false) else clear(6) end
    if case_selected.v ~= 0 then slotApply(7, case_items_data[case_selected.v], false) else clear(7) end
  
    if changeskin.v and getCharModel(PLAYER_PED) ~= skinid.v  then applyPlayerSkin(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)), skinid.v) end
end

function slotApply(indexNumber, itemData, colorData)
    --mods_selected.v = 0
    if itemData ~= nil then
        if itemData[2] ~= false then
            local bs = raknetNewBitStream()
            raknetBitStreamWriteInt16(bs, select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) -- playerId
            raknetBitStreamWriteInt32(bs, indexNumber) -- index
            raknetBitStreamWriteBool(bs,  true) -- create
            raknetBitStreamWriteInt32(bs, itemData[2]) -- modelId
            raknetBitStreamWriteInt32(bs, itemData[3]) -- bone
            raknetBitStreamWriteFloat(bs, itemData[4]) -- offset x
            raknetBitStreamWriteFloat(bs, itemData[5]) -- offset y
            raknetBitStreamWriteFloat(bs, itemData[6]) -- offset z
            raknetBitStreamWriteFloat(bs, itemData[7]) -- rotation x
            raknetBitStreamWriteFloat(bs, itemData[8]) -- rotation y
            raknetBitStreamWriteFloat(bs, itemData[9])  -- rotation z
            raknetBitStreamWriteFloat(bs, itemData[10]) -- scale x
            raknetBitStreamWriteFloat(bs, itemData[11]) -- scale y
            raknetBitStreamWriteFloat(bs, itemData[12]) -- scale z

            if itemData[13] ~= false then
                raknetBitStreamWriteInt32(bs, itemData[13])
            else
                if colorData ~= false then
                    raknetBitStreamWriteInt32(bs, colorData[2])
                else
                    raknetBitStreamWriteInt32(bs, -1)
                end
            end

            if itemData[14] ~= false then
                raknetBitStreamWriteInt32(bs, itemData[14])
            else
                if colorData ~= false then
                    raknetBitStreamWriteInt32(bs, colorData[2])
                else
                    raknetBitStreamWriteInt32(bs, -1)
                end
            end


            raknetEmulRpcReceiveBitStream(113, bs)
            raknetDeleteBitStream(bs)
        else
            local bs = raknetNewBitStream()
            raknetBitStreamWriteInt16(bs, select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) -- playerId
            raknetBitStreamWriteInt32(bs, indexNumber) -- index
            raknetBitStreamWriteBool(bs, false) -- create
            raknetEmulRpcReceiveBitStream(113, bs)
            raknetDeleteBitStream(bs)
        end
    else
        print(m_tag..'error in slot '..indexNumber)
    end
end

function applyModification(modDataTable)
    if modDataTable ~= nil then
        --slot0_selected.v = 0
        --slot1_selected.v = 0
        --slot2_selected.v = 0
        --slot3_selected.v = 0
        --slot4_selected.v = 0
        --slot5_selected.v = 0
        --case_selected.v = 0
        for i = 0, 7 do clear(i) end
        for i = 1, table.getn(modDataTable) do
            local bs = raknetNewBitStream()
            raknetBitStreamWriteInt16(bs, select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) -- playerId
            raknetBitStreamWriteInt32(bs, modDataTable[i][2]) -- index
            raknetBitStreamWriteBool(bs,  true) -- create
            raknetBitStreamWriteInt32(bs, modDataTable[i][3]) -- modelId
            raknetBitStreamWriteInt32(bs, modDataTable[i][4]) -- bone
            raknetBitStreamWriteFloat(bs, modDataTable[i][5]) -- offset x
            raknetBitStreamWriteFloat(bs, modDataTable[i][6]) -- offset y
            raknetBitStreamWriteFloat(bs, modDataTable[i][7]) -- offset z
            raknetBitStreamWriteFloat(bs, modDataTable[i][8]) -- rotation x
            raknetBitStreamWriteFloat(bs, modDataTable[i][9]) -- rotation y
            raknetBitStreamWriteFloat(bs, modDataTable[i][10])  -- rotation z
            raknetBitStreamWriteFloat(bs, modDataTable[i][11]) -- scale x
            raknetBitStreamWriteFloat(bs, modDataTable[i][12]) -- scale y
            raknetBitStreamWriteFloat(bs, modDataTable[i][13]) -- scale z
          
            if modDataTable[i][14] ~= false then
                raknetBitStreamWriteInt32(bs, modDataTable[i][14])
            else
                raknetBitStreamWriteInt32(bs, -1)
            end
      
            if modDataTable[i][15] ~= false then
              
                raknetBitStreamWriteInt32(bs, modDataTable[i][15])
            else
                raknetBitStreamWriteInt32(bs, -1)
            end

            raknetEmulRpcReceiveBitStream(113, bs)
            raknetDeleteBitStream(bs)
        end
    else
        for i = 0, 5 do clear(i) end
    end
end

function applyPlayerSkin(id, skin)
    if getCharModel(PLAYER_PED) ~= id then
        local BS = raknetNewBitStream()
        raknetBitStreamWriteInt32(BS, id)
        raknetBitStreamWriteInt32(BS, skin)
        raknetEmulRpcReceiveBitStream(153, BS)
        raknetDeleteBitStream(BS)
    end
end

function applyFightStyle()
    bs = raknetNewBitStream()
    raknetBitStreamWriteInt16(bs, select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)))
    raknetBitStreamWriteInt8(bs, fightstyle_data[fightstyle_selected.v + 1][2])
    raknetEmulRpcReceiveBitStream(89, bs)
    raknetDeleteBitStream(bs)
end

function applyWalkStyle(id)
    setAnimGroupForChar(playerPed, walkstyle_data[id + 1])
end

function clear(indexNumber)
    local bs = raknetNewBitStream()
    raknetBitStreamWriteInt16(bs, select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) -- playerId
    raknetBitStreamWriteInt32(bs, indexNumber) -- index
    raknetBitStreamWriteBool(bs, false) -- create
    raknetEmulRpcReceiveBitStream(113, bs)
    raknetDeleteBitStream(bs)
end

--\-------------------------------/--


--/----------==[OTHER]==----------\--
function save()
    savedcolorstext = ''
    ini.slots.s1, ini.slots.s2, ini.slots.s3, ini.slots.s4, ini.slots.s5, ini.slots.s6, ini.slots.s7 = selected_slot[1], selected_slot[2], selected_slot[3], selected_slot[4], selected_slot[5], selected_slot[6], selected_slot[7]
    ini.colors.s1, ini.colors.s2, ini.colors.s3, ini.colors.s4, ini.colors.s5, ini.colors.s6, ini.colors.s7 = selected_color[1], selected_color[2], selected_color[3], selected_color[4], selected_color[5], selected_color[6], selected_color[7]
  
    for i = 1, 7 do
        savedcolorstext = savedcolorstext .. 'slot: '..i..': '..selected_color[i]..'\n'
    end
    print('colors saved: '..savedcolorstext)
    ini.other.walkstyle = walkstyle_selected.v
    ini.other.fightstyle = fightstyle_selected.v
    ini.slots.case = case_selected.v

    ini.skin.enabled = changeskin.v
    ini.skin.skinid = skinid.v

    ini.slots.glow = glow.v
    ini.other.armour = armour_type.v

    ini.slots.mods = mods_selected.v

    inicfg.save(ini, directIni)
end

function onScriptTerminate(s, q)
    if s == thisScript() then
        for i = 0, 7 do clear(i) end
    end
end

function rollerFix()
    if getCharModel(PLAYER_PED) == 92 or getCharModel(PLAYER_PED) == 99 then
        if isKeyDown(87) or isKeyDown(65) or isKeyDown(83) or isKeyDown(68) then
            setCharAnimSpeed(PLAYER_PED, 'skate_idle', 1000)
        end
    end
end
--\-------------------------------/--


--/----------==[ImGui Funcs]==----------\--
function imgui.Selector(labels, size, selected, pos, speed)
    local rBool = false
    if not speed then speed = 10 end
    if (pos.v < (selected.v * size.y)) then
        pos.v = pos.v + speed
    elseif (pos.v > (selected.v * size.y)) then
        pos.v = pos.v - speed
    end
    imgui.SetCursorPos(imgui.ImVec2(0.00, pos.v))
    local draw_list = imgui.GetWindowDrawList()
    local p = imgui.GetCursorScreenPos()
    local radius = size.y * 0.50
    draw_list:AddRectFilled(imgui.ImVec2(p.x-size.x/2, p.y), imgui.ImVec2(p.x + radius + 1 * (size.x - radius * 2.0), p.y + radius*2), imgui.GetColorU32(imgui.GetStyle().Colors[imgui.Col.ButtonActive]))
    draw_list:AddRectFilled(imgui.ImVec2(p.x-size.x/2, p.y), imgui.ImVec2(p.x + 5, p.y + size.y), imgui.GetColorU32(imgui.GetStyle().Colors[imgui.Col.Button]), 0)
    draw_list:AddCircleFilled(imgui.ImVec2(p.x + radius + 1 * (size.x - radius * 2.0), p.y + radius), radius, imgui.GetColorU32(imgui.GetColorU32(imgui.GetStyle().Colors[imgui.Col.ButtonActive])), radius/10*12)
    for i = 1, #labels do
        imgui.SetCursorPos(imgui.ImVec2(0, (i * size.y)))
        local p = imgui.GetCursorScreenPos()
        if imgui.InvisibleButton(labels[i], size) then selected.v = i rBool = true end
        if imgui.IsItemHovered() then
            draw_list:AddRectFilled(imgui.ImVec2(p.x-size.x/2, p.y), imgui.ImVec2(p.x + size.x, p.y + size.y), imgui.GetColorU32(imgui.ImVec4(0.58, 0.34, 0.46, 0.20)), radius/10*12)
        end
        imgui.SetCursorPos(imgui.ImVec2(20, (i * size.y + (size.y-imgui.CalcTextSize(labels[i]).y)/2)))
        imgui.Text(labels[i])
    end
    return rBool
end

function imgui.CenterTextColoredRGB(text)
    local width = imgui.GetWindowWidth()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local ImVec4 = imgui.ImVec4

    local explode_argb = function(argb)
        local a = bit.band(bit.rshift(argb, 24), 0xFF)
        local r = bit.band(bit.rshift(argb, 16), 0xFF)
        local g = bit.band(bit.rshift(argb, 8), 0xFF)
        local b = bit.band(argb, 0xFF)
        return a, r, g, b
    end

    local getcolor = function(color)
        if color:sub(1, 6):upper() == 'SSSSSS' then
            local r, g, b = colors[1].x, colors[1].y, colors[1].z
            local a = tonumber(color:sub(7, 8), 16) or colors[1].w * 255
            return ImVec4(r, g, b, a / 255)
        end
        local color = type(color) == 'string' and tonumber(color, 16) or color
        if type(color) ~= 'number' then return end
        local r, g, b, a = explode_argb(color)
        return imgui.ImColor(r, g, b, a):GetVec4()
    end

    local render_text = function(text_)
        for w in text_:gmatch('[^\r\n]+') do
            local textsize = w:gsub('{.-}', '')
            local text_width = imgui.CalcTextSize(u8(textsize))
            imgui.SetCursorPosX( width / 2 - text_width .x / 2 )
            local text, colors_, m = {}, {}, 1
            w = w:gsub('{(......)}', '{%1FF}')
            while w:find('{........}') do
                local n, k = w:find('{........}')
                local color = getcolor(w:sub(n + 1, k - 1))
                if color then
                    text[#text], text[#text + 1] = w:sub(m, n - 1), w:sub(k + 1, #w)
                    colors_[#colors_ + 1] = color
                    m = n
                end
                w = w:sub(1, n - 1) .. w:sub(k + 1, #w)
            end
            if text[0] then
                for i = 0, #text do
                    imgui.TextColored(colors_[i] or colors[1], u8(text[i]))
                    imgui.SameLine(nil, 0)
                end
                imgui.NewLine()
            else
                imgui.Text(u8(w))
            end
        end
    end
    render_text(text)
end

function imgui.TextQuestion(text)
    imgui.SameLine()
    imgui.TextDisabled('?')
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.PushTextWrapPos(450)
        imgui.TextUnformatted(text)
        imgui.PopTextWrapPos()
        imgui.EndTooltip()
    end
end
--\-------------------------------/--


--AUTOUPDATE BY qrlk (http://qrlk.me/samp)
function autoupdate(json_url, prefix, url)
    local dlstatus = require('moonloader').download_status
    local json = getWorkingDirectory() .. '\\'..thisScript().name..'-version.json'
    if doesFileExist(json) then os.remove(json) end
    downloadUrlToFile(json_url, json,
        function(id, status, p1, p2)
            if status == dlstatus.STATUSEX_ENDDOWNLOAD then
                if doesFileExist(json) then
                    local f = io.open(json, 'r')
                    if f then
                        local info = decodeJson(f:read('*a'))
                        updatelink = info.updateurl
                        updateversion = info.latest
                        f:close()
                        os.remove(json)
                        if updateversion ~= thisScript().version then
                            lua_thread.create(function(prefix)
                            local dlstatus = require('moonloader').download_status
                            local color = -1
                            sampAddChatMessage((m_tag..'Обнаружено обновление. Пытаюсь обновиться c '..thisScript().version..' на '..updateversion), color)
                            wait(250)
                            downloadUrlToFile(updatelink, thisScript().path,
                            function(id3, status1, p13, p23)
                      if status1 == dlstatus.STATUS_DOWNLOADINGDATA then
                        print(string.format('Загружено %d из %d.', p13, p23))
                      elseif status1 == dlstatus.STATUS_ENDDOWNLOADDATA then
                        print('Загрузка обновления завершена.')
                        sampAddChatMessage((prefix..'Обновление завершено!'), color)
                        goupdatestatus = true
                        slot0_selected.v = 0
                        slot1_selected.v = 0
                        slot2_selected.v = 0
                        slot3_selected.v = 0
                        slot4_selected.v = 0
                        slot5_selected.v = 0
                        case_selected.v = 0
                        save()
                        os.delete(getWorkingDirectory()..'\\config\\VisualAccessories_by_Chapo.ini')
                        print('Файл "'..getWorkingDirectory()..'\\config\\VisualAccessories_by_Chapo.ini" удалён, перезапуск скрипта...')
                        print('Если после обновления возникли ошибки - напишите автору: vk.com/amid24, или удалите файл "'..getWorkingDirectory()..'\\config\\VisualAccessories_by_Chapo.ini"')
                        print('Если после обновления возникли ошибки - напишите автору: vk.com/amid24, или удалите файл "'..getWorkingDirectory()..'\\config\\VisualAccessories_by_Chapo.ini"')
                        print('Если после обновления возникли ошибки - напишите автору: vk.com/amid24, или удалите файл "'..getWorkingDirectory()..'\\config\\VisualAccessories_by_Chapo.ini"')
                        print('Если после обновления возникли ошибки - напишите автору: vk.com/amid24, или удалите файл "'..getWorkingDirectory()..'\\config\\VisualAccessories_by_Chapo.ini"')
                        print('Если после обновления возникли ошибки - напишите автору: vk.com/amid24, или удалите файл "'..getWorkingDirectory()..'\\config\\VisualAccessories_by_Chapo.ini"')
                        print('Если после обновления возникли ошибки - напишите автору: vk.com/amid24, или удалите файл "'..getWorkingDirectory()..'\\config\\VisualAccessories_by_Chapo.ini"')
                        lua_thread.create(function() wait(500) thisScript():reload() end)
                      end
                      if status1 == dlstatus.STATUSEX_ENDDOWNLOAD then
                        if goupdatestatus == nil then
                          sampAddChatMessage((prefix..'Обновление прошло неудачно. Запускаю устаревшую версию..'), color)
                          update = false
                        end
                      end
                    end
                  )
                  end, prefix
                )
              else
                update = false
                print(m_tag..': Обновление не требуется.')
              end
            end
          else
            sampAddChatMessage(m_tag..'v'..thisScript().version..': Не могу проверить обновление. Смиритесь или проверьте самостоятельно на '..url, -1)
            update = false
          end
        end
      end
    )
    while update ~= false do wait(100) end
end


Эт весь код?
 

chapo

чопа сребдс // @moujeek
Модератор
8,861
11,547
нет, тут огран по символам, весь код не вместился. До этого идут переменные, массив из 190 строк и хук команды через самп.луа
Вот первая часть кода:

Lua:
script_name('VisualAccessories by chapo')
script_author('Chapo (vk.com/amid24)')
script_version(3.3)

local m_tag = '{ff004d}'..thisScript().name..' (v '..thisScript().version..'): {ffffff}'

local memory = require 'memory'
local imgui = require('imgui')
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local sampev = require 'lib.samp.events'
local inicfg = require 'inicfg'

local directIni = 'VisualAccessories_by_Chapo_v3.ini'
local ini = inicfg.load(inicfg.load({
    slots = {
        enabled = true,
        s1 = 1,
        s2 = 1,
        s3 = 1,
        s4 = 1,
        s5 = 1,
        s6 = 1,
        s7 = 1,
        case = 1,
        glow = false,
        mods = 0,
    },
    colors = {
        s1 = 1,
        s2 = 1,
        s3 = 1,
        s4 = 1,
        s5 = 1,
        s6 = 1,
        s7 = 1,
    },
    skin = {
        enabled = false,
        skinid = 49,
    },
    other = {
        fightstyle = 0,
        walkstyle = 0,
        armour = 1,
        rollerfix = true,
        normalturnfix = true
    },
}, directIni))
inicfg.save(ini, directIni)



--==[NON SAVEABLE]==--
local search = imgui.ImBuffer(256)
local welcome = imgui.ImBool(false)
local window = imgui.ImBool(false)

local menu_selected = imgui.ImInt(1)
local selector_pos = imgui.ImInt(0)

local selector_list = {
    u8'Голова',
    u8'Лицо',
    u8'Рука',
    u8'Грудь',
    u8'Плечо',
    u8'Спина',
    u8'Остальное',
    u8'Конфиги',
}

local enabled = imgui.ImBool(ini.slots.enabled)

--==[LOGGER]==--
local logger = imgui.ImBool(true)
local logger_playerId = imgui.ImInt(0)


local logger_slot0 = imgui.ImBuffer(256)
local logger_slot1 = imgui.ImBuffer(256)
local logger_slot2 = imgui.ImBuffer(256)
local logger_slot3 = imgui.ImBuffer(256)
local logger_slot4 = imgui.ImBuffer(256)
local logger_slot5 = imgui.ImBuffer(256)


--==[PlaceHolders]==--
local placeholder_int = imgui.ImInt(0)
local placeholder_bool = imgui.ImBool(true)
local placeholder_buffer = imgui.ImBuffer(256)

--==[DATA TABLES]==--
local items_data = {
    --slot 0 (голова)--{u8'Название', modelId, bone, offsetX, offsetY, offsetZ, rotationX, rotationY, rotationZ, scaleX, scaleY, scaleZ, customColor1, customColor2}
    {
        {u8'Рога', 19314, 2, 0.086998999118805, 0.0010000000474975, -0.0019990000873804, 0, 0, -83.199989318848, 0.70799899101257, 0.60199999809265, 0.31999999284744, false, false},
        {u8'Нимб из хуйни', 1602, 2, 0.27790001034737, 0.039900001138449, 0, -32.5, 76.900001525879, -73.5, 0.69300001859665, 0.65990000963211, 0.059900000691414, false, false},
        {u8'Нимб', 19197, 2, 0.20999899506569, 0, 0, 0, 84.499977111816, 0, 0.26599898934364, 0.27300000190735, 0, false, false},
        {u8'Белый цилиндр', 19487, 2, 0.08500000089407, 0.0059989998117089, -0.0039989999495447, 83.900001525879, 67.899978637695, 3.1999990940094, 1.078999042511, 0.96200001239777, 1, false, false},
        {u8'Черный цилиндр', 19352, 2, 0.10999900102615, -0.003000000026077, 0, -78.300010681152, 113.10001373291, -13.799969673157, 1.1149990558624, 1.097000002861, 1, false, false},
        {u8'Бургер', 19094, 2, 0.13699799776077, -0.00099900003988296, -0.0029990000184625, 0, 0, 0, 0.82999902963638, 0.82300001382828, 0.79399901628494, false, false},
        {u8'Боксерский шлем', 18952, 2, 0.088999003171921, 0.018999999389052, -0.0020000000949949, 0, 0, -6.2999992370605, 1.2780009508133, 1.1880029439926, 1.2549999952316, false, false},
        {u8'Шляпа фермера', 19553, 2, 0.15399999916553, -0.018998999148607, 0.0060000000521541, -5.4999980926514, -7.7999949455261, -32.600002288818, 1.1309989690781, 1.4560010433197, 1.2710009813309, false, false},
        {u8'Шляпа мага', 19528, 2, 0.1089999973774, -0.0019990000873804, -0.0020000000949949, 0, 0, -29.199979782104, 1, 1.5060019493103, 1.0719989538193, false, false},
        {u8'Каска строителя',18638, 2, 0.16400299966335, 0.016999000683427, -0.00099900003988296, 0, 0, -8.399974822998, 0.69499897956848, 0.9279950261116, 1.002995967865, false, false},
        {u8'Шлем (розовый)', 18979, 2, 0.072999000549316, 0.013000000268221, 0, 88.600006103516, 91.099998474121, 0, 1.1290010213852, 0.97299897670746, 1.0499999523163, false, false},
        {u8'Шлем (красный)', 18977, 2, 0.072999000549316, 0.013000000268221, 0, 88.600006103516, 91.099998474121, 0, 1.1290010213852, 0.97299897670746, 1.0499999523163, false, false},
        {u8'Шлем (белый)', 18978, 2, 0.072999000549316, 0.013000000268221, 0, 88.600006103516, 91.099998474121, 0, 1.1290010213852, 0.97299897670746, 1.0499999523163, false, false},
        {u8'Шлем (красно-белый)', 18645, 2, 0.072999000549316, 0.013000000268221, 0, 88.600006103516, 91.099998474121, 0, 1.1290010213852, 0.97299897670746, 1.0499999523163, false, false},
        
        {u8'Новогодняя шапка', 19064, 2, 0.12899999320507, 0.0089990003034472, -0.00099900003988296, 3.4000000953674, 87.10001373291, 88.299980163574, 1.1169979572296, 1.3200010061264, 1.0440000295639, false, false},
        {u8'Голова петуха', 19137, 2, 0.10299900174141, 0.013999000191689, 0.0029990000184625, 0, 0, 0, 1, 1.027999997139, 1.1619989871979, false, false},
        {u8'Полицейская фуражка', 19520, 2, 0.12200099974871, -0.015999000519514, 0.0040000001899898, -2, 0.29999798536301, -7.5999941825867, 0.8489990234375, 1.220999956131, 1.2530039548874, false, false},
        {u8'Тыква на голову', 19320, 2, 0.15699900686741, -0.0040000001899898, 0, 0, 89.799995422363, 0, 0.65600001811981, 0.6339989900589, 0.7239990234375, false, false},
        {u8'Шляпа полицейского', 19099, 2, 0.17599999904633, -0.0060000000521541, -0.0029990000184625, 0, 0, -11.100002288818, 1.0509999990463, 1.1280020475388, 1.1110010147095, false, false},
        {u8'Голова оленя', 1736, 2, 0.057900000363588, -0.018899999558926, -0.0168999992311, 83.799896240234, 18.699899673462, 95.699996948242, 0.97289997339249, 0.87300002574921, 0.61690002679825, 16777215, false},
        
        {u8'Голова быка (большая)', 6865, 2, 0.0019990000873804, 0.035000000149012, 0, -124.29997253418, 105.30003356934, -7.6000080108643, 0.13899900019169, 0.15500000119209, 0.1169999986887, false, false},
        {u8'Голова зомби', 2908, 2, 0.090998999774456, 0.06699900329113, -0.0040000001899898, 178.90003967285, 0, 99.700012207031, 1.7029980421066, 1.4359990358353, 1.7010010480881, false, false},
        {u8'Кепка (Police)', 18636, 2, 0.1410010010004, 0.043999999761581, -0.0049990001134574, 1.5999989509583, 92.800109863281, 82.199951171875, 1.0399980545044, 1.0860049724579, 0.83699798583984, false, false},
        {u8'Хотдог', 19346, 2, 0.16700500249863, -0.010999999940395, -0.0059989998117089, 95.699905395508, 68.800086975098, -104.89994049072, 2.339998960495, 0.96499902009964, 1.6360000371933, false, false},
        {u8'Золотая шапка', 1603, 2, 0.19100299477577, 0.021999999880791, 0.014999000355601, -4.3999991416931, 83.999992370605, 2.299998998642, 0.38400000333786, 0.50099802017212, 0.35999900102615, false, false},
        {u8'Шапка из печенья', 18782, 2, 0.16700099408627, -0.01799900084734, 0.0019990000873804, -91.000045776367, 116.79998016357, 163.00001525879, 0.020998999476433, 0.01799900084734, 0.054997999221087, false, false},
        
        {u8'Кепка развосчика пиццы', 19558, 2, 0.14499899744987, -0.0020000000949949, 0.00099900003988296, 0, 0, -30.400007247925, 1, 1.0230000019073, 1.0120010375977, false, false},
        {u8'Какая-то хуета', 2238, 2, 0.46000000834465, -0.1330000013113, 0.051899999380112, 65.400001525879, 67.099998474121, 21.39999961853, 1.1790000200272, 1.2158999443054, 0.85189998149872, false, false},
        {u8'Красный берет', 18925, 2, 0.13899800181389, 0.012000000104308, -0.0070009999908507, 0.19999800622463, -5.7000150680542, -8.8000183105469, 1.0740000009537, 1.0269989967346, 1.125, false, false},
        {u8'Красная шляпа', 18950, 2, 0.15199799835682, 0.012000000104308, 0.0019990000873804, 0, 0.6000030040741, -6.3999819755554, 1, 0.99099898338318, 1.0490000247955, false, false},
        {u8'Шлем SWAT (серый)', 19514, 2, 0.0979989990592, -0.0010000000474975, -0.00099900003988296, 0, 0, -3.4000000953674, 1.1440000534058, 1.0210000276566, 1.08800303936, false, false},
        {u8'Голова быка (маленькая)', 6865, 2, 0.12089999765158, -0.0078999996185303, 0.0068999999202788, -93.900001525879, 131.10000610352, -40.099998474121, 0.08389999717474, 0.078900001943111, 0.063900001347065, false, false},
        {u8'Голова CJ', 18963, 2, 0.10299900174141, 0.013999000191689, -0.0019990000873804, 87.299995422363, 81.200103759766, 0, 1.1790020465851, 1.1350150108337, 1.1570030450821, false, false},
    },

    --slot 1 (ебало)--{u8'Название', modelId, bone, offsetX, offsetY, offsetZ, rotationX, rotationY, rotationZ, scaleX, scaleY, scaleZ, customColor1, customColor2}
    {
        
        {u8'Маска демона', 11704, 2, 0.086000002920628, 0.1140009984374, -0.0060000000521541, 90.200019836426, 83.900115966797, 87, 0.28599798679352, 0.41400000452995, 0.37799799442291, false, false},
        
        {u8'ПНВ', 368, 2, 0, 0.10099899768829, -0.0039989999495447, 0, 0, -1.0999970436096, 1, 1, 0.98099899291992, false, false},
        {u8'Медицинская маска', 11736, 2, -0.017000000923872, 0.064000003039837, -0.0019990000873804, 0, 0, 11.199993133545, 0.26100000739098, 0.44699901342392, 2.6970009803772, false, false},
        {u8'Борода (белая)', 19517, 2, -0.010999999940395, 0.064000003039837, 0, 0, 0, -162.10018920898, 0.33300000429153, 0.60399901866913, 0.57099902629852, false, false},
        {u8'Уши бетмена', 1013, 2, 0.16490000486374, 0.0070000002160668, 0, 92.499900817871, 178.30000305176, -92.799896240234, 0.10490000247955, 0.78990000486374, 0.22800000011921, false, false},
        
        {u8'Усы (длинные)', 19351, 2, 0.025999000295997, 0.12199900299311, -0.00099900003988296, 0, 0, -79.300033569336, 1, 1, 1, false, false},
        {u8'Хоккейная маска', 19036, 2, 0.11299999803305, 0.026000000536442, -0.0069989999756217, -1.5999979972839, 91.100051879883, 92.199989318848, 1.1469999551773, 1.3199989795685, 1.1560000181198, false, false},
        --{u8'Название', 18978, 2, 0.061000000685453, 0, -0.003000000026077, -2.1998999118805, 86.699897766113, 92.199897766113, 1.2518999576569, 0.96200001239777, 1.7019000053406, false, false},
        {u8'Маска обезьяны', 13667, 2, 0.090899996459484, 0.14990000426769, -0.0038999998942018, 82.099998474121, 78.299896240234, 18.699899673462, 0.051899999380112, 0.025900000706315, 0.025900000706315, false, false},
        --{u8'я_name1', 19197, 2, 0.20999899506569, 0, 0, 0, 84.499977111816, 0, 0.26599898934364, 0.27300000190735, 0, false, false},
        {u8'Черная маска', 18978, 2, 0.061000000685453, 0, -0.003000000026077, -2.1998999118805, 86.699897766113, 92.199897766113, 1.2518999576569, 0.96200001239777, 1.7019000053406, 16777215, 0},
        --{u8'я_name3', 2810, 1, -0.43590000271797, 0.059000000357628, -0.078000001609325, 0, 53.599998474121, 174.40010070801, 0.55290001630783, 0.54089999198914, 0.52789998054504, false, false},
        --{u8'я_name4', 1240, 1, 0.25299799442291, 0.1089999973774, 0.0069989999756217, -86.099983215332, 118.50058746338, -92.999725341797, 0.3209989964962, 0.23899999260902, 0.2790000140667, false, false},
        --{u8'я_name5', 19336, 1, 0.35399898886681, -0.017000000923872, 0.18599900603294, 0, 86.599998474121, 0, 0.0089999996125698, 0.0089990003034472, 0.0089990003034472, false, false},
        --{u8'я_name6', 1276, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0.38999998569489, false, false},
        --{u8'я_name7', 339, 1, 0.28399899601936, -0.11000400036573, -0.21499900519848, 0.19999699294567, -53.899978637695, -8.8999910354614, 1, 1, 0.79699999094009, false, false},
    
    },

    --slot 2 (рука)--{u8'Название', modelId, bone, offsetX, offsetY, offsetZ, rotationX, rotationY, rotationZ, scaleX, scaleY, scaleZ, customColor1, customColor2}
    {
        {u8'Игрушка на Р/У', 364, 6, 0.078998997807503, 0.018999999389052, 0.0089990003034472, 0, -93.299949645996, 5.0000028610229, 1, 1, 1, false, false},
        {u8'Серый щит на руку', 1366, 14, 0.046900000423193, 0.016000000759959, -0.039900001138449, 17.200000762939, 175.99969482422, 114.30000305176, 2.7000000476837, 1.3128999471664, 0.038899999111891, false, false},
        {u8'Световой меч (оранжевый)', 1877, 14, 0.31290000677109, -0.58490002155304, -0.12890000641346, 105.40000152588, 0, 0, 0.086900003254414, 0.103900000453, 1.779000043869, false, false},
        {u8'Световой меч (фиолетовый)', 1882, 14, 0.31290000677109, -0.58490002155304, -0.12890000641346, 105.40000152588, 0, 0, 0.086900003254414, 0.103900000453, 1.779000043869, false, false},
        {u8'Световой меч (желтый)', 1878, 14, 0.31290000677109, -0.58490002155304, -0.12890000641346, 105.40000152588, 0, 0, 0.086900003254414, 0.103900000453, 1.779000043869, false, false},
        {u8'Световой меч (синий)', 1880, 14, 0.31290000677109, -0.58490002155304, -0.12890000641346, 105.40000152588, 0, 0, 0.086900003254414, 0.103900000453, 1.779000043869, false, false},
        {u8'Световой меч (зеленый)', 1879, 14, 0.31290000677109, -0.58490002155304, -0.12890000641346, 105.40000152588, 0, 0, 0.086900003254414, 0.103900000453, 1.779000043869, false, false},
        {u8'Световой меч (красный)', 1881, 14, 0.31290000677109, -0.58490002155304, -0.12890000641346, 105.40000152588, 0, 0, 0.086900003254414, 0.103900000453, 1.779000043869, false, false},
        {u8'Длинный топор', 3801, 13, 0.67589998245239, -0.80400002002716, 0.071900002658367, -90.199897766113, 65.899803161621, -5.7999000549316, 5.476900100708, 0.24590000510216, 0.44290000200272, false, false},
        {u8'Сумка с сердцами', 2805, 13, 0.62300002574921, 0.020899999886751, 0, -2.5999000072479, -93.999900817871, 109.69989776611, 1.0808999538422, 0.69489997625351, 0.36800000071526, false, false},
        {u8'СЕНО', 2901, 1, 0.10999999940395, 0.36000001430511, 0, 0, 90, 0, 1, 1, 1},
        {u8'Жезл ГАИшника', 1319, 13, 0.37200000882149, -0.23100000619888, 0.023000000044703, 76.300003051758, -3.0999000072479, -102.79989624023, 0.31290000677109, 0.29789999127388, 0.39590001106262, false, false},
        {u8'Бита', 2224, 14, 0.41290000081062, 0.17790000140667, -0.056000001728535, 94.199897766113, -4.2999000549316, 44.499900817871, 0.16089999675751, 0.1630000025034, 0.79000002145767, false, false},
        {u8'Знак радиации', 11700, 13, 1.9349000453949, -0.033900000154972, -0.064900003373623, 0, -86.699897766113, 93.499900817871, 0.72990000247955, 1, 0.7189000248909, false, 16777215}, --COL1: 0, COL2: 16777215
  
        {u8'Сигарета', 3044, 2, -0.054997999221087, 0.018999999389052, -0.0089990003034472, 169.49996948242, 0, 0, 1, 1, 1, false, false}
    },

    
    

    --slot 3 (грудь)
    {
        {u8'Доллар на грудь', 1274, 1, 0.12700000405312, 0.13500000536442, -0.0019990000873804, -88.600067138672, 106.29999542236, -95.799903869629, 0.23600000143051, 1.5169999599457, 0.21400000154972, false, false},
        {u8'Сердце на грудь (Б)', 1240, 1, 0.12290000170469, 0.15289999544621, -0.0040000001899898, 87.299896240234, 78.199897766113, -89.599899291992, 0.6370000243187, 0.86890000104904, 0.61000001430511, false, false},
        {u8'Сердце на грудь (М)', 1240, 1, 0.23999899625778, 0.10000000149012, 0.0049990001134574, -87.300003051758, 121.90032958984, -90.299980163574, 0.3209989964962, 0.60100001096725, 0.2790000140667, false, false},
        {u8'Фотоаппарат на грудь', 19623, 1, 0.20100000500679, 0.17199899256229, -0.0089990003034472, 79.79997253418, 60.200038909912, 97.800003051758, 0.61599898338318, 0.71599900722504, 0.59200000762939, false, false},
        {u8'Крест на грудь', 11712, 1, 0.2660000026226, 0.125, -0.0059989998117089, 87.900009155273, 60.300243377686, 0, 1.4189989566803, 0.56699997186661, 0.47299998998642, false, false},
        {u8'Лейка на бедро', 19621, 1, -0.093000002205372, 0.086998999118805, -0.19699999690056, 0, 69.999984741211, -145.90000915527, 0.658999979496, 0.7239990234375, 0.81299901008606, false, false},
        {u8'Стрелка на грудь', 19130, 1, 0.13600000739098, 0.13500000536442, -0.0168999992311, 79.199897766113, 66.299797058105, 6.9998998641968, 0.82889997959137, 0.49790000915527, 0.13600000739098, false, false},
        {u8'Кислородный баллон', 3801, 2, -0.078900001943111, 0.14589999616146, -0.063000001013279, 176.39999389648, -174.70010375977, -11.599900245667, 0.375, 0.37490001320839, 0.94190001487732, false, false},
        {u8'Респиратор', 19472, 2, -0.0070009999908507, 0.12899899482727, -0.00099900003988296, -2.9000000953674, 88.200019836426, 93.200096130371, 1.0439889431, 1.2140029668808, 1.0960010290146, false, false},
    },

    --slot 4 (плечо)
    {
        {u8'Попугай на плечо',19079, 1, 0.29200100898743, -0.054999001324177, 0.12799899280071, 0, -20.699991226196, 0.12, 0.53399902582169, 0.64999997615814, 0.64700001478195, false, false},
        {u8'Курица на плечо', 16776, 1, 0.30399999022484, -0.012999000027776, 0.14299899339676, 3.8000090122223, 79.100120544434, -179.59983825684, 0.0070000002160668, 0.0060000000521541, 0.0099980002269149, false, false},
        {u8'НЛО на плечо', 16778, 1, 0.13189999759197, 0.0020000000949949, 0.11200000345707, 0, 70.699996948242, 98.099899291992, 0.041000001132488, 0.037000000476837, 0.040899999439716, false, false},
        {u8'Шар на плечо (1)', 19332, 1, 0.35399898886681, -0.017000000923872, 0.18599900603294, 0, 86.599998474121, 0, 0.0089999996125698, 0.0089990003034472, 0.0089990003034472, false, false},
        {u8'Шар на плечо (2)', 19333, 1, 0.35399898886681, -0.017000000923872, 0.18599900603294, 0, 86.599998474121, 0, 0.0089999996125698, 0.0089990003034472, 0.0089990003034472, false, false},
        {u8'Шар на плечо (3)', 19334, 1, 0.35399898886681, -0.017000000923872, 0.18599900603294, 0, 86.599998474121, 0, 0.0089999996125698, 0.0089990003034472, 0.0089990003034472, false, false},
        {u8'Шар на плечо (4)', 19335, 1, 0.35399898886681, -0.017000000923872, 0.18599900603294, 0, 86.599998474121, 0, 0.0089999996125698, 0.0089990003034472, 0.0089990003034472, false, false},
        {u8'Шар на плечо (5)', 19336, 1, 0.35399898886681, -0.017000000923872, 0.18599900603294, 0, 86.599998474121, 0, 0.0089999996125698, 0.0089990003034472, 0.0089990003034472, false, false},
        {u8'Шар на плечо (6)', 19337, 1, 0.35399898886681, -0.017000000923872, 0.18599900603294, 0, 86.599998474121, 0, 0.0089999996125698, 0.0089990003034472, 0.0089990003034472, false, false},
        {u8'Шар на плечо (7)', 19338, 1, 0.35399898886681, -0.017000000923872, 0.18599900603294, 0, 86.599998474121, 0, 0.0089999996125698, 0.0089990003034472, 0.0089990003034472, false, false},
        {u8'Олень на плечо', 19315, 1, 0.21189999580383, 0.10000000149012, -0.1630000025034, 87.699897766113, 80.999900817871, 1.8998999595642, 1, 1, 1, false, false},
        {u8'Биг Смоук на плечо', 14467, 1, 0.45590001344681, 0.018899999558926, 0.17689999938011, 0, 85.39990234375, -178, 0.090899996459484, 0.10400000214577, 0.082900002598763, false, false},
        {u8'Елка на плечо (большая)', 19076, 16, 0.17790000140667, -0.014899999834597, 0, 2.7999000549316, -176.89990234375, 0, 0.046000000089407, 0.050000000745058, 0.041000001132488, false, false},
        {u8'Елка на плечо (маленькая)', 19076, 1, 0.30500799417496, -0.012000000104308, 0.15699900686741, 0, 88.400009155273, 0, 0.019999999552965, 0.025999000295997, 0.018999999389052, false, false},
        {u8'Повязка на шею (белая)', 19469, 1, 0.32799899578094, 0.082997001707554, -0.036997999995947, 0, 0, -2.4000079631805, 1.0299990177155, 1.7110040187836, 1.9260020256042, false, false},
        {u8'Мумия', 2810, 1, -0.43590000271797, 0.059000000357628, -0.078000001609325, 0, 53.599998474121, 174.40010070801, 0.55290001630783, 0.54089999198914, 0.52789998054504, false, false},

    },

    --slot 5 (спина)
    {   
        --{u8'ААА', 19517, 2, -0.010999999940395, 0.064000003039837, 0, 0, 0, -162.10018920898, 0.33300000429153, 0.60399901866913, 0.57099902629852},
        {u8'херня какая-то', 19469, 1, 0.33899798989296, 0.060997001826763, -0.035998001694679, 0, 0, -1.1000000085915e-05, 1.0299990177155, 1.6220010519028, 1.4810019731522, false, false},
        {u8'Лопата', 337, 1, -0.061999000608921, -0.179000005126, -0.082000002264977, -1.2000000476837, 59.700004577637, 97.69994354248, 1, 1, 1, false, false},
        {u8'Ларек (доллар)', 1212, 1, 0.12599900364876, -0.077999003231525, -0.0049999998882413, 90.499923706055, 0, -23.599962234497, 2.0409979820251, 2.689001083374, 1.4119999408722, false, false},
        {u8'Ларек (нарко)', 1575, 1, 0.061997998505831, -0.030999999493361, 0.002998000010848, 89.900100708008, 0, 0, 0.73000001907349, 0.73999798297882, 0.95300000905991, false, false},
        {u8'Ларек (яблоки)', 19636, 1, -0.093998000025749, -0.20499999821186, 0.0049999998882413, -0.30000001192093, 89.300079345703, -1.299998998642, 0.46299800276756, 0.20299799740314, 2.5520000457764, false, false},
        {u8'Мешок с мясом',2805, 1, 0.12799899280071, -0.1799979954958, 0.0089990003034472, 0, 74.400016784668, 0, 0.59399998188019, 0.63599902391434, 0.42799898982048, false, false},
        {u8'Дракон', 3528, 1, 0.045899998396635, -0.20990000665188, 0, 127.5, 93.800003051758, 137.09989929199, 0.090000003576279, 0.10989999771118, 0.10989999771118, false, false},
        {u8'Фонтан',19840, 1, -0.40090000629425, -0.25490000844002, 0.025000000372529, 94.699897766113, 59.499900817871, -96.999900817871, 0.054900001734495, 0.072899997234344, 0.12389999628067, false, false},
        {u8'Щит', 18637, 1, 0.077999003231525, -0.034999001771212, 0.12099999934435, 87.19994354248, -0.9, -73, 0.71499997377396, 0.78600001335144, 1.0479990243912, false, false},
        {u8'Катана', 339, 1, 0.30299898982048, -0.12000100314617, -0.21399900317192, 0.19999699294567, -53.899978637695, -5.4999890327454, 1, 1, 0.79699999094009, false, false},
        {u8'Меч', 19590, 1, 0.29499799013138, -0.11, 0.14299799501896, -1.0999330282211, 147.3000793457, 89.601707458496, 0.96199697256088, 0.95099902153015, 0.7239990234375, false, false},
        {u8'Миниган', 362, 1, 0.56000000238419, -0.15499900281429, 0.10700000077486, 0, 178.50004577637, 0, 0.84500002861023, 0.88599902391434, 0.84200000762939, false, false},
        {u8'Огнемет', 361, 1, 0.54399901628494, -0.15599900484085, -0.10300000011921, -177.3000793457, 176.40005493164, 0, 0.76800000667572, 0.7059999704361, 0.74899899959564, false, false},
        {u8'Бензопила', 341, 1, 0.47899800539017, -0.15499299764633, 0.13199900090694, 0, 174.4002532959, 0, 1, 1, 1, false, false},
        {u8'Палка', 19620, 1, 0, -0.11089999973774, 0.0059000002220273, 86.900001525879, 5.1999998092651, -33.700000762939, 1.8008999824524, 0.11100000143051, 0.20990000665188, false, false},
        {u8'Новогодние ранец', 19806, 1, -0.33889999985695, -0.13889999687672, -0.046000000089407, -162.89999389648, -88.099899291992, -81.199897766113, 0.50900000333786, 2.1559000015259, 1.335000038147, false, false},
        {u8'Кровавая накидка', 1603, 1, 0.3619000017643, -0.0080000003799796, 0, 0, 91.39990234375, 0, 1.2740000486374, 0.66689997911453, 1, false, false},
        {u8'Черепаха', 1609, 1, 0.12099900096655, -0.15099799633026, 0.0049990001134574, 90.900001525879, -1.1000020503998, -86.100006103516, 0.19799999892712, 0.19499999284744, 0.19300000369549, false, false},
        {u8'Девушка на спину', 7392, 1, 0.028899999335408, -0.12690000236034, -0.036899998784065, -92.299896240234, 95.599899291992, 0, 0.062899999320507, 0.047899998724461, 0.041900001466274, false, false},
        {u8'Рюкзак (мыло)', 19874, 1, 0.032000001519918, -0.079899996519089, -0.014000000432134, 84.39990234375, 5.0998997688293, 0, 3.4618999958038, 3.0659000873566, 4.6719999313354, false, false},
        {u8'Трость', 326, 1, 0.32299900054932, -0.13600200414658, -0.34299901127815, -9.1000032424927, -45.499980926514, 0, 1, 1, 1, false, false},
        {u8'Карамельный посох', 1228, 1, 0, -0.11490000039339, 0.014000000432134, 2.2000000476837, 33.599998474121, -89.199897766113, 1, 1.4428999423981, 0.22390000522137, false, false},
        {u8'Гитара (красная)', 19317, 1, 0.17599999904633, -0.10800000280142, -0.052999000996351, 4.1999940872192, 119.29999542236, -4.7000007629395, 0.68800002336502, 1, 0.69599997997284, false, false},
        {u8'Гитара (белая)', 19318, 1, 0.17599999904633, -0.10800000280142, -0.052999000996351, 4.1999940872192, 119.29999542236, -4.7000007629395, 0.68800002336502, 1, 0.69599997997284, false, false},
        {u8'Гитара (черная)', 19319, 1, 0.15000000596046, -0.1169990003109, -0.014999000355601, 4.1999940872192, 119.29999542236, -4.7000007629395, 0.68800002336502, 1, 0.69599997997284, false, false},
        {u8'Бита на спину',336, 1, -0.12599900364876, -0.14299799501896, -0.13099899888039, 0, 47.100002288818, 0, 1, 1, 1, false, false},
        {u8'Подарок на спину', 19057, 1, 0.10999999940395, -0.18699899315834, 0, 0, 85.89998626709, 0, 0.23999999463558, 0.18099999427795, 0.39899900555611, false, false},
        {u8'Крылья (1)',8492, 1, 0.054999001324177, -0.11100000143051, -0.0019990000873804, -91.699813842773, -96.099952697754, -109.60003662109, 0.057000000029802, 0.034000001847744, 0.090000003576279, false, false},
        {u8'Крылья (2)', 1177, 1, -0.10989999771118, -0.15500000119209, 0.4239000082016, -89.800003051758, -0.799899995327, 88.300003051758, 0.46889999508858, 1.8400000333786, 0.30790001153946, false, false},
        {u8'Вибратор #1', 322, 1, -0.0089999996125698, -0.18399800360203,  0.082999996840954, 0, 69.499992370605, 0, 1.6199990510941, 1.6379990577698, 2.549998998642, false, false},
        {u8'Бумбокс',2226, 1, 0.080999001860619, -0.2039940059185, -0.062999002635479, 0, 34.5, 0, 0.67599999904633, 0.783999979496, 0.7599989771843, false, false},
        {u8'Скейт',19878, 1, 0.10499999672174, -0.15600000321865, -0.010999999940395, -90.699935913086, -6.0000061988831, 158.2999420166, 0.68699997663498, 0.69799900054932, 1, false, false},
        {u8'Доска для серфа (1)', 2404, 1, 0.050999000668526, -0.10700000077486, -0.040998999029398, 3, 56.20002746582, -6.899995803833, 0.56399899721146, 0.88999897241592, 0.46999898552895, false, false},
        {u8'Доска для серфа (2)', 2405, 1, 0.050999000668526, -0.10700000077486, -0.040998999029398, 3, 56.20002746582, -6.899995803833, 0.56399899721146, 0.88999897241592, 0.46999898552895, false, false},
        {u8'Доска для серфа (3)', 2406, 1, 0.050999000668526, -0.10700000077486, -0.040998999029398, 3, 56.20002746582, -6.899995803833, 0.56399899721146, 0.88999897241592, 0.46999898552895, false, false},
        {u8'Колонка', 2102, 1, 0.043999001383781, -0.15599900484085, -0.076999001204967, 0, 31.199995040894, 0, 0.75400000810623, 0.76299899816513, 0.7119989991188, false, false},
        --{u8'Доска для серфа (3)', 2406, 1, 0.032999001443386, -0.13899999856949, -0.012999000027776, 3, 56.100028991699, 0.6000030040741, 0.56399899721146, 0.88999897241592, 0.46999898552895, false, false},
        {u8'Паук', 3272, 1, 0.082000002264977, -0.089900001883507, -0.008899999782443, -85.39990234375, 178.69999694824, -89.099998474121, 0.26300001144409, 0.24089999496937, 0.064000003039837, false, false},
        {u8'Рюкзак "бегемот"', 1371, 1, 0.14800000190735, -0.21690000593662, 0, 4.0998997688293, 88, 0, 0.44290000200272, 0.3740000128746, 0.41490000486374, false, false},
        {u8'Огнетушитель', 2690, 1, 0.076999001204967, -0.14599600434303, 0.0089999996125698, 0, 62.5, 0, 0.77300000190735, 0.64999997615814, 0.83499997854233, false, false},
        {u8'Метла', 2712, 1, 0.087999999523163, -0.16799999773502, 0.11999999731779, -13.400010108948, 103.39999389648, -1.0999989509583, 0.84299898147583, 1, 0.98299902677536, false, false},
        {u8'Бита с шипами', 2045, 1, 0.052999000996351, -0.10999900102615, -0.03999999910593, 5.4000000953674, -30.800043106079, -88.699951171875, 1, 1, 1, false, false},
        {u8'Воротник', 8492, 1, 0.48500001430511, -0.088899999856949, -0.033900000154972, 1.0999000072479, 87.799896240234, 164.49989318848, 0.073899999260902, 0.039900001138449, 0.086900003254414, false, false},
        {u8'Сердце', 7093, 1, 0, 0.46590000391006, -0.0658999979496, 0, 92.400001525879, -5.4998998641968, 0.11289999634027, 0.19990000128746, 0.1368999928236, 16777215, false},
        {u8'Банан блять', 19578, 1, -0.012900000438094, -0.18690000474453, 0, 0, 0, -24.39999961853, 1.9299000501633, 3.2000000476837, 4.9070000648499, false, false},
        {u8'Дельфин', 1607, 1, 0.12189999967813, -0.23989999294281, 0.008899999782443, 87.599998474121, 21.89999961853, -91.199996948242, 0.25090000033379, 0.14990000426769, 0.20600000023842, false, false},
        
        {u8'Коса', 2590, 1, -0.39700001478195, -0.13399900496006, 0.24899999797344, 0, -60.499992370605, 40.600009918213, 1.1560000181198, 1.2689989805222, 0.49399900436401, false, false},
        {u8'Рюкзак будущего', 3385, 1, 0.055900000035763, -0.074000000953674, 0, 91.999900817871, 0, 0, 0.78289997577667, 0.47200000286102, 4.2859001159668, false, false},
    },
}
local glowEffect_data = {u8'glowEffect', 1276, 1, 0, 0, 0, 0, 0, 0, 0.1, 0.1, 0.1}
local walkstyle_data = {'man', 'shuffle', 'oldman', 'gang1', 'gang2', 'oldfatman', 'fatman', 'jogger', 'drunkman', 'blindman', 'swat', 'woman', 'shopping', 'busywoman', 'sexywoman', 'pro', 'oldwoman', 'fatwoman', 'jogwoman', 'oldfatwoman'}
local walkstyle_list = {u8'(М) Обычная', u8'(М) шафл', u8'(М) Дед', u8'(М) Геттовец 1', u8'(М) Геттовец 2', u8'(М) Жирный дед', u8'(М) Жирный', u8'(Ж) Джоггер', u8'(М) Пьяный (ALT)', u8'(М) Слепой', u8'(V) SWAT a.k.a Ричи', u8'(Ж) Обычная', u8'(Ж) супермаркет (ALT)', u8'(Ж) Занятая пизда', u8'(Ж) Секси чикса', u8'(Ж) Про', u8'(Ж) Бабка', u8'(Ж) Жирная телка', u8'(Ж) Бег', u8'(Ж) Старая, жирная бабка'}--{'man', 'shuffle', 'oldman', 'gang1', 'gang2', 'oldfatman', 'fatman', 'jogger', 'drunkman', 'blindman', 'swat', 'woman', 'shopping', 'busywoman', 'sexywoman', 'pro', 'oldwoman', 'fatwoman', 'jogwoman', 'oldfatwoman'}



local color_list_data = {
    {u8'Стандартный', -1},
    {u8'Красный', -16776961},
    {u8'Зеленый', -16711936},
    {u8'Синий', -65536},
    {u8'Розовый', -65281},
    {u8'Оранжевый', -16744193},
    {u8'Бирюзовый', -256},
    {u8'Желтый', -16728065},
}
local fightstyle_data = {
    {u8'Стандарный', 4},
    {u8'Бокс', 5},
    {u8'Кунг-Фу', 6},
    {u8'Knee head', 7},
    {u8'Grabkick', 15},
    {u8'Elbows', 16},
}
local case_items_data = {
    {u8'Стандартный кейс', 1210, 5, 0.29999899864197, 0.099999003112316, 0, 0, -83, 0, 1, 1, 1},
    {u8'Сумка для ноутбука', 11745, 5, 0.266999989748, 0.026999000459909, 0.029999999329448, -2.5999989509583, -96.299926757813, 85.300010681152, 0.20799900591373, 1, 1.2519990205765},
    {u8'Красный кейс',19921, 5, 0.1140000000596, 0.040998999029398, -0.044998999685049, 93.100112915039, -12.099985122681, -75.89998626709, 0.87099999189377, 0.89899998903275, 0.60199898481369},
    {u8'Кейс для гитары', 18868, 13, 0.32800000905991, -0.15090000629425, 0.05290000140667, 0, 97, -11.799900054932, 1, 6.688000202179, 8.2649002075195},
    {u8'Чемодан', 19624, 5, 0.10800000280142, 0.023000000044703, 0.029999999329448, 0, -89.999992370605, 0, 1, 1, 1},
    {u8'Красная хуйня', 328, 13, 0.64700001478195, -0.060899998992682, -0.093900002539158, 57, -177.19999694824, 1.7999000549316, 3.1710000038147, 2.8480000495911, 2.8819000720978, false, false},
}






local mods_items_data = {
    --Dragon
    {
        {u8'Дракон'},
        {u8'mod_dragon_item_1', 0, 3528, 2, 0.064000003039837, 0.082999996840954, -0.034000001847744, 0, 81.399971008301, 80.599983215332, 0.078998997807503, 0.093998998403549, 0.090999998152256, false, false},
        {u8'mod_dragon_item_2', 1, 3528, 1, 0.15599900484085, -0.1870000064373, 0.29500100016594, -159.30004882813, 0, 0, 0.25, 0.0079990001395345, 0.16699899733067, false, false},
        {u8'mod_dragon_item_3', 2, 3528, 1, 0.15599900484085, -0.1870000064373, -0.34599900245667, -21.599996566772, 0, 0, 0.25, 0.0079990001395345, 0.16699899733067, false, false},
    },
    --Sonic
    {
        {u8'Соник'},
        {'mod_sonic_item_1', 0, 3100, 2, 0.068000003695488, 0.0020000000949949, 0.0040000001899898, 82.599998474121, 0.20000000298023, 99.499900817871, 3.5158998966217, 3.9498999118805, 4.0079002380371, false, false},
        {'mod_sonic_item_2', 1, 3100, 2, 0.11500000208616, -0.10189999639988, 0.0040000001899898, 80.199996948242, 147.60000610352, 99.499900817871, 2.8568999767303, 1.8839000463486, 4.0079002380371, false, false},
        {'mod_sonic_item_3', 2, 3100, 2, -0.019899999722838, -0.11389999836683, 0.0040000001899898, 84.599998474121, 128.80000305176, 99.499900817871, 2.275899887085, 1.4838999509811, 3.9309000968933, false, false},
        {'mod_sonic_item_4', 3, 19094, 2, 0.0098999999463558, 0.059000000357628, -0.003000000026077, 178.29989624023, 7.5998997688293, -85.599899291992, 0.97990000247955, 0.34589999914169, 0.57200002670288, false, false},
        {'mod_sonic_item_5', 4, 1254, 2, 0.063000001013279, 0.11689999699593, -0.037900000810623, -17.499900817871, 144.10000610352, -2.2000000476837, 0.36489999294281, 0.27090001106262, 0.47490000724792, false, false},
        {'mod_sonic_item_6', 5, 1254, 2, 0.056000001728535,  0.11389999836683, 0.037900000810623, 17.60000038147, 18.499900817871, 9.0999002456665, 0.36489999294281, 0.27090001106262, 0.47490000724792, false, false},
    },

    --grinch
    {
        {u8'Гринч'},
        {'mod_grinch_item_1', 0, 19576, 2, 0.15389999747276, 0.008899999782443, 0.0080000003799796, 0, -89.299896240234, 176.60000610352, 2.4858999252319, 2.7650001049042, 3.7630000114441, false, false},
        {'mod_grinch_item_2', 1, 19570, 2, 0.20100000500679, 0.1009000018239, 0.030899999663234, -89.399803161621, 13.5, 7.8998999595642, 0.26489999890327, 0.49790000915527, 0.061900001019239, false, false},
        {'mod_grinch_item_3', 2, 19570, 2, 0.20290000736713,  0.096900001168251, -0.016000000759959, -103.5, 14.399900436401, -11.800000190735, 0.26800000667572, 0.51389998197556, 0.061900001019239, false, false},
        {'mod_grinch_item_4', 3, 19576, 2, 0.099899999797344, 0.035900000482798, 0.0049000000581145, 79.599998474121, -144.2998046875, -85.499900817871, 3.5090000629425,  3.0060000419617, 2.914999961853, false, false},
        {'mod_grinch_item_5', 4, 19078, 2,  0.29690000414848, 0, 0.0049000000581145, 176.39999389648, -176.19990539551, -51.799900054932, 0.5048999786377, 0.55290001630783, 0.55900001525879, false, false},
        {'mod_grinch_item_6', 5, 19576, 1, 0.040899999439716,  0.0098999999463558, -0.010900000110269, 13.900099754333, -91.999702453613, -160.69979858398, 5.0939002037048, 4.4000000953674, 7.5529999732971, false, false},
        {'mod_grinch_item_7', 6, 2788, 1, 0.31090000271797, 0.030899999663234, -0.024900000542402, 84.799896240234, -88.199996948242, -89.5, 0.58600002527237, 0.54900002479553, 1.7079000473022, false, false},
    },

    --angel
    {
        {u8'Ангел'},
        {'mod_angel_item_1', 0, 8492, 1, 0.094999000430107, -0.11100000143051, -0.0029990000184625, -90.699783325195, -96.099952697754, -109.60003662109, 0.057000000029802, 0.034000001847744, 0.090000003576279, false, false},
        {'mod_angel_item_2', 1, 2992, 2, 0.24600000679493, 0, 0, 0, -92.700004577637, 0, 1.3659980297089, 1.3940000534058, 1, false, false},
        {'mod_angel_item_3', 2, 2992, 2, 0.24600000679493, 0, 0.012000000104308, 0, 88.599998474121, 0, 1.3659989833832, 1.3940000534058, 1, false, false},
    },

    --
    {
        {u8'Диджей (какой блять диджей?)'},
        {'mod_dj_item_1', 0, 2805, 2, 0.041900001466274, -0.0020000000949949, 0.0078999996185303, -5.1999001502991, -97.400001525879, 0, 0.41490000486374, 0.63190001249313, 0.2369000017643, false, false},
        {'mod_dj_item_2', 1, 19319, 2, 0.063900001347065, 0.11100000143051, 0.043000001460314, 101.5, -62.099998474121, 78.599899291992, 0.10689999908209, 0.958899974823, 0.05290000140667, false, false},
        {'mod_dj_item_3', 2, 19319, 2, 0.068899996578693, 0.11500000208616, -0.036899998784065, 117.80000305176, -49.200000762939, 87.89990234375, 0.063900001347065, 0.93589997291565, 0.064900003373623, false, false},
        {'mod_dj_item_4', 3, 1133, 13, 0.35789999365807, -0.23700000345707, 0.037900000810623, 163.60000610352, -15.199899673462, -170.39999389648, 2.4828999042511, 0.49189999699593, 0.11289999634027, false, false},
        {'mod_dj_item_5', 4, 19583, 13, 0.35690000653267, -0.018899999558926, -0.028000000864267, -17, -168.59989929199, 6.8998999595642, 1.25100004673, 1.2279000282288, 0.97000002861023, false, false},
    },

    {
        {u8'Призрак'},
        {'mod_ghost_1', 0, 19200, 1, -0.16290000081062, 0.013899999670684, -0.12489999830723, -99.800003051758, -178.10000610352, -173.69990539551, 5.4299001693726, 2.2039000988007, 2.3589000701904, false, false},
        {'mod_ghost_2', 1, 19200, 1, -0.19390000402927, -0.0049000000581145, 0.10400000214577,  94.099899291992, -178.10000610352, -173.69990539551, 5.7838997840881, 2.4639000892639, 2.5678999423981, false, false},
        {'mod_ghost_3', 2, 19200, 1, 0.082000002264977, -0.0010000000474975, 0, -4.4000000953674, 176.49989318848, 176.60000610352, 5.7838997840881, 1.5938999652863, 2.1278998851776, false, false},
        {'mod_ghost_4', 3, 11741, 1, 0.46189999580383, 0.17890000343323, -0.046900000423193, 79.199897766113, 0, -59.799900054932, 0.24789999425411, 0.4869000017643, 1, false, false},
        {'mod_ghost_5', 4, 11741, 1, 0.46189999580383, 0.17890000343323, 0.060899998992682, 95.799896240234, -5.9998998641968, -117.69999694824, 0.24789999425411, 0.4869000017643, 1, false, false},
    },

    --праздник
    {
        {u8'"Праздник"'},
        {u8'mod_prazdnik_0', 0, 19135, 2, 0.23190000653267, -0.013899999670684, 0.070000000298023, 10.099900245667, -119.09989929199, -6.9998998641968, 0.2790000140667, 0.299899995327, 0.32690000534058, -16776961, -16776961},
        {u8'mod_prazdnik_1', 1, 19087, 14, 0.36000001430511, 0, 0.020899999886751, -59, 75.699897766113, -84.89990234375, 0.080899998545647, 0.046000000089407, 0.4699000120163, false, false},
        {u8'mod_prazdnik_2', 2, 19063, 14, -0.93000000715256, -0.27000001072884, -0.13889999687672, -60.299999237061, 78.89990234375, 165.89990234375, 0.28290000557899, 0.26890000700951, 0.36500000953674, -16776961, -16776961},
        {u8'mod_prazdnik_3', 3, 19054, 13, 0.27200001478195, -0.039000000804663, -0.057900000363588, 0, 0, 0, 0.20700000226498, 0.28600001335144, 0.094899997115135, false, false},
        {u8'mod_prazdnik_4', 4, 19087, 14, 0.36000001430511, 0, 0.020899999886751, 1.7999000549316, 75.699897766113, -84.89990234375, 0.080899998545647, 0.046000000089407, 0.39700001478195, false , false},
        {u8'mod_prazdnik_5', 5, 19063, 14, -0.73189997673035, 0.010900000110269, -0.24690000712872, 0.099899999797344, 78.89990234375, 165.89990234375, 0.30790001153946, 0.29390001296997, 0.40290001034737, -16711681, -16711681},
    }
}
local armour_data = {
    {u8'upgraded', 19515, 1, 0.020998999476433, 0.059999000281096, -0.0010000000474975, -2, -2.4000010490417, -0.60000902414322, 1.1809990406036, 1.2650059461594, 1.180999994278, false, false},
    {u8'default', 19142, 1, 0.012999000027776, 0.0489990003407, 0.0039989999495447, 0, -3.4000020027161, -4.1000018119812, 1.1510020494461, 1.1470010280609, 1.1350040435791, false, false},
}

--==[SKIN]==--
local changeskin = imgui.ImBool(ini.skin.enabled)
local skinid = imgui.ImInt(ini.skin.skinid)
local savedSkin = 0
local skin_rollerFix = imgui.ImBool(ini.other.rollerfix)
local skin_NormalSkinsTurn = imgui.ImBool(ini.other.normalturnfix)

--==[SLOTS]==--
local glow = imgui.ImBool(ini.slots.glow)
local armour_type = imgui.ImInt(ini.other.armour)

local selected_slot = {ini.slots.s1, ini.slots.s2, ini.slots.s3, ini.slots.s4, ini.slots.s5, ini.slots.s6, ini.slots.s7}
local selected_color = {ini.colors.s1, ini.colors.s2, ini.colors.s3, ini.colors.s4, ini.colors.s5, ini.colors.s6, ini.colors.s7}

local walkstyle_selected = imgui.ImInt(ini.other.walkstyle)
local fightstyle_selected = imgui.ImInt(ini.other.fightstyle); local fight_list = {}

local case_selected = imgui.ImInt(ini.slots.case); local case_items = {u8'Нет'}
local mods_selected = imgui.ImInt(ini.slots.mods); local mods_list = {u8'Нет'}

for i = 1, #fightstyle_data do table.insert(fight_list, #fight_list + 1, fightstyle_data[i][1]) end
for i = 1, #case_items_data do table.insert(case_items, #case_items + 1, case_items_data[i][1]) end
for i = 1, #mods_items_data do table.insert(mods_list, #mods_list + 1, mods_items_data[i][1][1]) end

local russian_characters = {
    [168] = 'Ё', [184] = 'ё', [192] = 'А', [193] = 'Б', [194] = 'В', [195] = 'Г', [196] = 'Д', [197] = 'Е', [198] = 'Ж', [199] = 'З', [200] = 'И', [201] = 'Й', [202] = 'К', [203] = 'Л', [204] = 'М', [205] = 'Н', [206] = 'О', [207] = 'П', [208] = 'Р', [209] = 'С', [210] = 'Т', [211] = 'У', [212] = 'Ф', [213] = 'Х', [214] = 'Ц', [215] = 'Ч', [216] = 'Ш', [217] = 'Щ', [218] = 'Ъ', [219] = 'Ы', [220] = 'Ь', [221] = 'Э', [222] = 'Ю', [223] = 'Я', [224] = 'а', [225] = 'б', [226] = 'в', [227] = 'г', [228] = 'д', [229] = 'е', [230] = 'ж', [231] = 'з', [232] = 'и', [233] = 'й', [234] = 'к', [235] = 'л', [236] = 'м', [237] = 'н', [238] = 'о', [239] = 'п', [240] = 'р', [241] = 'с', [242] = 'т', [243] = 'у', [244] = 'ф', [245] = 'х', [246] = 'ц', [247] = 'ч', [248] = 'ш', [249] = 'щ', [250] = 'ъ', [251] = 'ы', [252] = 'ь', [253] = 'э', [254] = 'ю', [255] = 'я',
}
function string.rlower(s)
    s = s:lower()
    local strlen = s:len()
    if strlen == 0 then return s end
    s = s:lower()
    local output = ''
    for i = 1, strlen do
        local ch = s:byte(i)
        if ch >= 192 and ch <= 223 then -- upper russian characters
            output = output .. russian_characters[ch + 32]
        elseif ch == 168 then -- Ё
            output = output .. russian_characters[184]
        else
            output = output .. string.char(ch)
        end
    end
    return output
end

local key_window = imgui.ImBool(false)
local getKeyInput = imgui.ImBuffer(256)
local setKeyInput = imgui.ImBuffer(256)
local presetGetSetCombo = imgui.ImInt(0)

function sampev.onSendCommand(cmd)
    if cmd:lower() == '/acs' then
        window.v = not window.v
        return false

    elseif cmd:lower() == '/acslg' then
        logger.v = not logger.v
        return false
    end
end
 

Pashyka

Участник
220
17
нет, тут огран по символам, весь код не вместился. До этого идут переменные, массив из 190 строк и хук команды через самп.луа
Вот первая часть кода:

Lua:
script_name('VisualAccessories by chapo')
script_author('Chapo (vk.com/amid24)')
script_version(3.3)

local m_tag = '{ff004d}'..thisScript().name..' (v '..thisScript().version..'): {ffffff}'

local memory = require 'memory'
local imgui = require('imgui')
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local sampev = require 'lib.samp.events'
local inicfg = require 'inicfg'

local directIni = 'VisualAccessories_by_Chapo_v3.ini'
local ini = inicfg.load(inicfg.load({
    slots = {
        enabled = true,
        s1 = 1,
        s2 = 1,
        s3 = 1,
        s4 = 1,
        s5 = 1,
        s6 = 1,
        s7 = 1,
        case = 1,
        glow = false,
        mods = 0,
    },
    colors = {
        s1 = 1,
        s2 = 1,
        s3 = 1,
        s4 = 1,
        s5 = 1,
        s6 = 1,
        s7 = 1,
    },
    skin = {
        enabled = false,
        skinid = 49,
    },
    other = {
        fightstyle = 0,
        walkstyle = 0,
        armour = 1,
        rollerfix = true,
        normalturnfix = true
    },
}, directIni))
inicfg.save(ini, directIni)



--==[NON SAVEABLE]==--
local search = imgui.ImBuffer(256)
local welcome = imgui.ImBool(false)
local window = imgui.ImBool(false)

local menu_selected = imgui.ImInt(1)
local selector_pos = imgui.ImInt(0)

local selector_list = {
    u8'Голова',
    u8'Лицо',
    u8'Рука',
    u8'Грудь',
    u8'Плечо',
    u8'Спина',
    u8'Остальное',
    u8'Конфиги',
}

local enabled = imgui.ImBool(ini.slots.enabled)

--==[LOGGER]==--
local logger = imgui.ImBool(true)
local logger_playerId = imgui.ImInt(0)


local logger_slot0 = imgui.ImBuffer(256)
local logger_slot1 = imgui.ImBuffer(256)
local logger_slot2 = imgui.ImBuffer(256)
local logger_slot3 = imgui.ImBuffer(256)
local logger_slot4 = imgui.ImBuffer(256)
local logger_slot5 = imgui.ImBuffer(256)


--==[PlaceHolders]==--
local placeholder_int = imgui.ImInt(0)
local placeholder_bool = imgui.ImBool(true)
local placeholder_buffer = imgui.ImBuffer(256)

--==[DATA TABLES]==--
local items_data = {
    --slot 0 (голова)--{u8'Название', modelId, bone, offsetX, offsetY, offsetZ, rotationX, rotationY, rotationZ, scaleX, scaleY, scaleZ, customColor1, customColor2}
    {
        {u8'Рога', 19314, 2, 0.086998999118805, 0.0010000000474975, -0.0019990000873804, 0, 0, -83.199989318848, 0.70799899101257, 0.60199999809265, 0.31999999284744, false, false},
        {u8'Нимб из хуйни', 1602, 2, 0.27790001034737, 0.039900001138449, 0, -32.5, 76.900001525879, -73.5, 0.69300001859665, 0.65990000963211, 0.059900000691414, false, false},
        {u8'Нимб', 19197, 2, 0.20999899506569, 0, 0, 0, 84.499977111816, 0, 0.26599898934364, 0.27300000190735, 0, false, false},
        {u8'Белый цилиндр', 19487, 2, 0.08500000089407, 0.0059989998117089, -0.0039989999495447, 83.900001525879, 67.899978637695, 3.1999990940094, 1.078999042511, 0.96200001239777, 1, false, false},
        {u8'Черный цилиндр', 19352, 2, 0.10999900102615, -0.003000000026077, 0, -78.300010681152, 113.10001373291, -13.799969673157, 1.1149990558624, 1.097000002861, 1, false, false},
        {u8'Бургер', 19094, 2, 0.13699799776077, -0.00099900003988296, -0.0029990000184625, 0, 0, 0, 0.82999902963638, 0.82300001382828, 0.79399901628494, false, false},
        {u8'Боксерский шлем', 18952, 2, 0.088999003171921, 0.018999999389052, -0.0020000000949949, 0, 0, -6.2999992370605, 1.2780009508133, 1.1880029439926, 1.2549999952316, false, false},
        {u8'Шляпа фермера', 19553, 2, 0.15399999916553, -0.018998999148607, 0.0060000000521541, -5.4999980926514, -7.7999949455261, -32.600002288818, 1.1309989690781, 1.4560010433197, 1.2710009813309, false, false},
        {u8'Шляпа мага', 19528, 2, 0.1089999973774, -0.0019990000873804, -0.0020000000949949, 0, 0, -29.199979782104, 1, 1.5060019493103, 1.0719989538193, false, false},
        {u8'Каска строителя',18638, 2, 0.16400299966335, 0.016999000683427, -0.00099900003988296, 0, 0, -8.399974822998, 0.69499897956848, 0.9279950261116, 1.002995967865, false, false},
        {u8'Шлем (розовый)', 18979, 2, 0.072999000549316, 0.013000000268221, 0, 88.600006103516, 91.099998474121, 0, 1.1290010213852, 0.97299897670746, 1.0499999523163, false, false},
        {u8'Шлем (красный)', 18977, 2, 0.072999000549316, 0.013000000268221, 0, 88.600006103516, 91.099998474121, 0, 1.1290010213852, 0.97299897670746, 1.0499999523163, false, false},
        {u8'Шлем (белый)', 18978, 2, 0.072999000549316, 0.013000000268221, 0, 88.600006103516, 91.099998474121, 0, 1.1290010213852, 0.97299897670746, 1.0499999523163, false, false},
        {u8'Шлем (красно-белый)', 18645, 2, 0.072999000549316, 0.013000000268221, 0, 88.600006103516, 91.099998474121, 0, 1.1290010213852, 0.97299897670746, 1.0499999523163, false, false},
      
        {u8'Новогодняя шапка', 19064, 2, 0.12899999320507, 0.0089990003034472, -0.00099900003988296, 3.4000000953674, 87.10001373291, 88.299980163574, 1.1169979572296, 1.3200010061264, 1.0440000295639, false, false},
        {u8'Голова петуха', 19137, 2, 0.10299900174141, 0.013999000191689, 0.0029990000184625, 0, 0, 0, 1, 1.027999997139, 1.1619989871979, false, false},
        {u8'Полицейская фуражка', 19520, 2, 0.12200099974871, -0.015999000519514, 0.0040000001899898, -2, 0.29999798536301, -7.5999941825867, 0.8489990234375, 1.220999956131, 1.2530039548874, false, false},
        {u8'Тыква на голову', 19320, 2, 0.15699900686741, -0.0040000001899898, 0, 0, 89.799995422363, 0, 0.65600001811981, 0.6339989900589, 0.7239990234375, false, false},
        {u8'Шляпа полицейского', 19099, 2, 0.17599999904633, -0.0060000000521541, -0.0029990000184625, 0, 0, -11.100002288818, 1.0509999990463, 1.1280020475388, 1.1110010147095, false, false},
        {u8'Голова оленя', 1736, 2, 0.057900000363588, -0.018899999558926, -0.0168999992311, 83.799896240234, 18.699899673462, 95.699996948242, 0.97289997339249, 0.87300002574921, 0.61690002679825, 16777215, false},
      
        {u8'Голова быка (большая)', 6865, 2, 0.0019990000873804, 0.035000000149012, 0, -124.29997253418, 105.30003356934, -7.6000080108643, 0.13899900019169, 0.15500000119209, 0.1169999986887, false, false},
        {u8'Голова зомби', 2908, 2, 0.090998999774456, 0.06699900329113, -0.0040000001899898, 178.90003967285, 0, 99.700012207031, 1.7029980421066, 1.4359990358353, 1.7010010480881, false, false},
        {u8'Кепка (Police)', 18636, 2, 0.1410010010004, 0.043999999761581, -0.0049990001134574, 1.5999989509583, 92.800109863281, 82.199951171875, 1.0399980545044, 1.0860049724579, 0.83699798583984, false, false},
        {u8'Хотдог', 19346, 2, 0.16700500249863, -0.010999999940395, -0.0059989998117089, 95.699905395508, 68.800086975098, -104.89994049072, 2.339998960495, 0.96499902009964, 1.6360000371933, false, false},
        {u8'Золотая шапка', 1603, 2, 0.19100299477577, 0.021999999880791, 0.014999000355601, -4.3999991416931, 83.999992370605, 2.299998998642, 0.38400000333786, 0.50099802017212, 0.35999900102615, false, false},
        {u8'Шапка из печенья', 18782, 2, 0.16700099408627, -0.01799900084734, 0.0019990000873804, -91.000045776367, 116.79998016357, 163.00001525879, 0.020998999476433, 0.01799900084734, 0.054997999221087, false, false},
      
        {u8'Кепка развосчика пиццы', 19558, 2, 0.14499899744987, -0.0020000000949949, 0.00099900003988296, 0, 0, -30.400007247925, 1, 1.0230000019073, 1.0120010375977, false, false},
        {u8'Какая-то хуета', 2238, 2, 0.46000000834465, -0.1330000013113, 0.051899999380112, 65.400001525879, 67.099998474121, 21.39999961853, 1.1790000200272, 1.2158999443054, 0.85189998149872, false, false},
        {u8'Красный берет', 18925, 2, 0.13899800181389, 0.012000000104308, -0.0070009999908507, 0.19999800622463, -5.7000150680542, -8.8000183105469, 1.0740000009537, 1.0269989967346, 1.125, false, false},
        {u8'Красная шляпа', 18950, 2, 0.15199799835682, 0.012000000104308, 0.0019990000873804, 0, 0.6000030040741, -6.3999819755554, 1, 0.99099898338318, 1.0490000247955, false, false},
        {u8'Шлем SWAT (серый)', 19514, 2, 0.0979989990592, -0.0010000000474975, -0.00099900003988296, 0, 0, -3.4000000953674, 1.1440000534058, 1.0210000276566, 1.08800303936, false, false},
        {u8'Голова быка (маленькая)', 6865, 2, 0.12089999765158, -0.0078999996185303, 0.0068999999202788, -93.900001525879, 131.10000610352, -40.099998474121, 0.08389999717474, 0.078900001943111, 0.063900001347065, false, false},
        {u8'Голова CJ', 18963, 2, 0.10299900174141, 0.013999000191689, -0.0019990000873804, 87.299995422363, 81.200103759766, 0, 1.1790020465851, 1.1350150108337, 1.1570030450821, false, false},
    },

    --slot 1 (ебало)--{u8'Название', modelId, bone, offsetX, offsetY, offsetZ, rotationX, rotationY, rotationZ, scaleX, scaleY, scaleZ, customColor1, customColor2}
    {
      
        {u8'Маска демона', 11704, 2, 0.086000002920628, 0.1140009984374, -0.0060000000521541, 90.200019836426, 83.900115966797, 87, 0.28599798679352, 0.41400000452995, 0.37799799442291, false, false},
      
        {u8'ПНВ', 368, 2, 0, 0.10099899768829, -0.0039989999495447, 0, 0, -1.0999970436096, 1, 1, 0.98099899291992, false, false},
        {u8'Медицинская маска', 11736, 2, -0.017000000923872, 0.064000003039837, -0.0019990000873804, 0, 0, 11.199993133545, 0.26100000739098, 0.44699901342392, 2.6970009803772, false, false},
        {u8'Борода (белая)', 19517, 2, -0.010999999940395, 0.064000003039837, 0, 0, 0, -162.10018920898, 0.33300000429153, 0.60399901866913, 0.57099902629852, false, false},
        {u8'Уши бетмена', 1013, 2, 0.16490000486374, 0.0070000002160668, 0, 92.499900817871, 178.30000305176, -92.799896240234, 0.10490000247955, 0.78990000486374, 0.22800000011921, false, false},
      
        {u8'Усы (длинные)', 19351, 2, 0.025999000295997, 0.12199900299311, -0.00099900003988296, 0, 0, -79.300033569336, 1, 1, 1, false, false},
        {u8'Хоккейная маска', 19036, 2, 0.11299999803305, 0.026000000536442, -0.0069989999756217, -1.5999979972839, 91.100051879883, 92.199989318848, 1.1469999551773, 1.3199989795685, 1.1560000181198, false, false},
        --{u8'Название', 18978, 2, 0.061000000685453, 0, -0.003000000026077, -2.1998999118805, 86.699897766113, 92.199897766113, 1.2518999576569, 0.96200001239777, 1.7019000053406, false, false},
        {u8'Маска обезьяны', 13667, 2, 0.090899996459484, 0.14990000426769, -0.0038999998942018, 82.099998474121, 78.299896240234, 18.699899673462, 0.051899999380112, 0.025900000706315, 0.025900000706315, false, false},
        --{u8'я_name1', 19197, 2, 0.20999899506569, 0, 0, 0, 84.499977111816, 0, 0.26599898934364, 0.27300000190735, 0, false, false},
        {u8'Черная маска', 18978, 2, 0.061000000685453, 0, -0.003000000026077, -2.1998999118805, 86.699897766113, 92.199897766113, 1.2518999576569, 0.96200001239777, 1.7019000053406, 16777215, 0},
        --{u8'я_name3', 2810, 1, -0.43590000271797, 0.059000000357628, -0.078000001609325, 0, 53.599998474121, 174.40010070801, 0.55290001630783, 0.54089999198914, 0.52789998054504, false, false},
        --{u8'я_name4', 1240, 1, 0.25299799442291, 0.1089999973774, 0.0069989999756217, -86.099983215332, 118.50058746338, -92.999725341797, 0.3209989964962, 0.23899999260902, 0.2790000140667, false, false},
        --{u8'я_name5', 19336, 1, 0.35399898886681, -0.017000000923872, 0.18599900603294, 0, 86.599998474121, 0, 0.0089999996125698, 0.0089990003034472, 0.0089990003034472, false, false},
        --{u8'я_name6', 1276, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0.38999998569489, false, false},
        --{u8'я_name7', 339, 1, 0.28399899601936, -0.11000400036573, -0.21499900519848, 0.19999699294567, -53.899978637695, -8.8999910354614, 1, 1, 0.79699999094009, false, false},
  
    },

    --slot 2 (рука)--{u8'Название', modelId, bone, offsetX, offsetY, offsetZ, rotationX, rotationY, rotationZ, scaleX, scaleY, scaleZ, customColor1, customColor2}
    {
        {u8'Игрушка на Р/У', 364, 6, 0.078998997807503, 0.018999999389052, 0.0089990003034472, 0, -93.299949645996, 5.0000028610229, 1, 1, 1, false, false},
        {u8'Серый щит на руку', 1366, 14, 0.046900000423193, 0.016000000759959, -0.039900001138449, 17.200000762939, 175.99969482422, 114.30000305176, 2.7000000476837, 1.3128999471664, 0.038899999111891, false, false},
        {u8'Световой меч (оранжевый)', 1877, 14, 0.31290000677109, -0.58490002155304, -0.12890000641346, 105.40000152588, 0, 0, 0.086900003254414, 0.103900000453, 1.779000043869, false, false},
        {u8'Световой меч (фиолетовый)', 1882, 14, 0.31290000677109, -0.58490002155304, -0.12890000641346, 105.40000152588, 0, 0, 0.086900003254414, 0.103900000453, 1.779000043869, false, false},
        {u8'Световой меч (желтый)', 1878, 14, 0.31290000677109, -0.58490002155304, -0.12890000641346, 105.40000152588, 0, 0, 0.086900003254414, 0.103900000453, 1.779000043869, false, false},
        {u8'Световой меч (синий)', 1880, 14, 0.31290000677109, -0.58490002155304, -0.12890000641346, 105.40000152588, 0, 0, 0.086900003254414, 0.103900000453, 1.779000043869, false, false},
        {u8'Световой меч (зеленый)', 1879, 14, 0.31290000677109, -0.58490002155304, -0.12890000641346, 105.40000152588, 0, 0, 0.086900003254414, 0.103900000453, 1.779000043869, false, false},
        {u8'Световой меч (красный)', 1881, 14, 0.31290000677109, -0.58490002155304, -0.12890000641346, 105.40000152588, 0, 0, 0.086900003254414, 0.103900000453, 1.779000043869, false, false},
        {u8'Длинный топор', 3801, 13, 0.67589998245239, -0.80400002002716, 0.071900002658367, -90.199897766113, 65.899803161621, -5.7999000549316, 5.476900100708, 0.24590000510216, 0.44290000200272, false, false},
        {u8'Сумка с сердцами', 2805, 13, 0.62300002574921, 0.020899999886751, 0, -2.5999000072479, -93.999900817871, 109.69989776611, 1.0808999538422, 0.69489997625351, 0.36800000071526, false, false},
        {u8'СЕНО', 2901, 1, 0.10999999940395, 0.36000001430511, 0, 0, 90, 0, 1, 1, 1},
        {u8'Жезл ГАИшника', 1319, 13, 0.37200000882149, -0.23100000619888, 0.023000000044703, 76.300003051758, -3.0999000072479, -102.79989624023, 0.31290000677109, 0.29789999127388, 0.39590001106262, false, false},
        {u8'Бита', 2224, 14, 0.41290000081062, 0.17790000140667, -0.056000001728535, 94.199897766113, -4.2999000549316, 44.499900817871, 0.16089999675751, 0.1630000025034, 0.79000002145767, false, false},
        {u8'Знак радиации', 11700, 13, 1.9349000453949, -0.033900000154972, -0.064900003373623, 0, -86.699897766113, 93.499900817871, 0.72990000247955, 1, 0.7189000248909, false, 16777215}, --COL1: 0, COL2: 16777215

        {u8'Сигарета', 3044, 2, -0.054997999221087, 0.018999999389052, -0.0089990003034472, 169.49996948242, 0, 0, 1, 1, 1, false, false}
    },

  
  

    --slot 3 (грудь)
    {
        {u8'Доллар на грудь', 1274, 1, 0.12700000405312, 0.13500000536442, -0.0019990000873804, -88.600067138672, 106.29999542236, -95.799903869629, 0.23600000143051, 1.5169999599457, 0.21400000154972, false, false},
        {u8'Сердце на грудь (Б)', 1240, 1, 0.12290000170469, 0.15289999544621, -0.0040000001899898, 87.299896240234, 78.199897766113, -89.599899291992, 0.6370000243187, 0.86890000104904, 0.61000001430511, false, false},
        {u8'Сердце на грудь (М)', 1240, 1, 0.23999899625778, 0.10000000149012, 0.0049990001134574, -87.300003051758, 121.90032958984, -90.299980163574, 0.3209989964962, 0.60100001096725, 0.2790000140667, false, false},
        {u8'Фотоаппарат на грудь', 19623, 1, 0.20100000500679, 0.17199899256229, -0.0089990003034472, 79.79997253418, 60.200038909912, 97.800003051758, 0.61599898338318, 0.71599900722504, 0.59200000762939, false, false},
        {u8'Крест на грудь', 11712, 1, 0.2660000026226, 0.125, -0.0059989998117089, 87.900009155273, 60.300243377686, 0, 1.4189989566803, 0.56699997186661, 0.47299998998642, false, false},
        {u8'Лейка на бедро', 19621, 1, -0.093000002205372, 0.086998999118805, -0.19699999690056, 0, 69.999984741211, -145.90000915527, 0.658999979496, 0.7239990234375, 0.81299901008606, false, false},
        {u8'Стрелка на грудь', 19130, 1, 0.13600000739098, 0.13500000536442, -0.0168999992311, 79.199897766113, 66.299797058105, 6.9998998641968, 0.82889997959137, 0.49790000915527, 0.13600000739098, false, false},
        {u8'Кислородный баллон', 3801, 2, -0.078900001943111, 0.14589999616146, -0.063000001013279, 176.39999389648, -174.70010375977, -11.599900245667, 0.375, 0.37490001320839, 0.94190001487732, false, false},
        {u8'Респиратор', 19472, 2, -0.0070009999908507, 0.12899899482727, -0.00099900003988296, -2.9000000953674, 88.200019836426, 93.200096130371, 1.0439889431, 1.2140029668808, 1.0960010290146, false, false},
    },

    --slot 4 (плечо)
    {
        {u8'Попугай на плечо',19079, 1, 0.29200100898743, -0.054999001324177, 0.12799899280071, 0, -20.699991226196, 0.12, 0.53399902582169, 0.64999997615814, 0.64700001478195, false, false},
        {u8'Курица на плечо', 16776, 1, 0.30399999022484, -0.012999000027776, 0.14299899339676, 3.8000090122223, 79.100120544434, -179.59983825684, 0.0070000002160668, 0.0060000000521541, 0.0099980002269149, false, false},
        {u8'НЛО на плечо', 16778, 1, 0.13189999759197, 0.0020000000949949, 0.11200000345707, 0, 70.699996948242, 98.099899291992, 0.041000001132488, 0.037000000476837, 0.040899999439716, false, false},
        {u8'Шар на плечо (1)', 19332, 1, 0.35399898886681, -0.017000000923872, 0.18599900603294, 0, 86.599998474121, 0, 0.0089999996125698, 0.0089990003034472, 0.0089990003034472, false, false},
        {u8'Шар на плечо (2)', 19333, 1, 0.35399898886681, -0.017000000923872, 0.18599900603294, 0, 86.599998474121, 0, 0.0089999996125698, 0.0089990003034472, 0.0089990003034472, false, false},
        {u8'Шар на плечо (3)', 19334, 1, 0.35399898886681, -0.017000000923872, 0.18599900603294, 0, 86.599998474121, 0, 0.0089999996125698, 0.0089990003034472, 0.0089990003034472, false, false},
        {u8'Шар на плечо (4)', 19335, 1, 0.35399898886681, -0.017000000923872, 0.18599900603294, 0, 86.599998474121, 0, 0.0089999996125698, 0.0089990003034472, 0.0089990003034472, false, false},
        {u8'Шар на плечо (5)', 19336, 1, 0.35399898886681, -0.017000000923872, 0.18599900603294, 0, 86.599998474121, 0, 0.0089999996125698, 0.0089990003034472, 0.0089990003034472, false, false},
        {u8'Шар на плечо (6)', 19337, 1, 0.35399898886681, -0.017000000923872, 0.18599900603294, 0, 86.599998474121, 0, 0.0089999996125698, 0.0089990003034472, 0.0089990003034472, false, false},
        {u8'Шар на плечо (7)', 19338, 1, 0.35399898886681, -0.017000000923872, 0.18599900603294, 0, 86.599998474121, 0, 0.0089999996125698, 0.0089990003034472, 0.0089990003034472, false, false},
        {u8'Олень на плечо', 19315, 1, 0.21189999580383, 0.10000000149012, -0.1630000025034, 87.699897766113, 80.999900817871, 1.8998999595642, 1, 1, 1, false, false},
        {u8'Биг Смоук на плечо', 14467, 1, 0.45590001344681, 0.018899999558926, 0.17689999938011, 0, 85.39990234375, -178, 0.090899996459484, 0.10400000214577, 0.082900002598763, false, false},
        {u8'Елка на плечо (большая)', 19076, 16, 0.17790000140667, -0.014899999834597, 0, 2.7999000549316, -176.89990234375, 0, 0.046000000089407, 0.050000000745058, 0.041000001132488, false, false},
        {u8'Елка на плечо (маленькая)', 19076, 1, 0.30500799417496, -0.012000000104308, 0.15699900686741, 0, 88.400009155273, 0, 0.019999999552965, 0.025999000295997, 0.018999999389052, false, false},
        {u8'Повязка на шею (белая)', 19469, 1, 0.32799899578094, 0.082997001707554, -0.036997999995947, 0, 0, -2.4000079631805, 1.0299990177155, 1.7110040187836, 1.9260020256042, false, false},
        {u8'Мумия', 2810, 1, -0.43590000271797, 0.059000000357628, -0.078000001609325, 0, 53.599998474121, 174.40010070801, 0.55290001630783, 0.54089999198914, 0.52789998054504, false, false},

    },

    --slot 5 (спина)
    { 
        --{u8'ААА', 19517, 2, -0.010999999940395, 0.064000003039837, 0, 0, 0, -162.10018920898, 0.33300000429153, 0.60399901866913, 0.57099902629852},
        {u8'херня какая-то', 19469, 1, 0.33899798989296, 0.060997001826763, -0.035998001694679, 0, 0, -1.1000000085915e-05, 1.0299990177155, 1.6220010519028, 1.4810019731522, false, false},
        {u8'Лопата', 337, 1, -0.061999000608921, -0.179000005126, -0.082000002264977, -1.2000000476837, 59.700004577637, 97.69994354248, 1, 1, 1, false, false},
        {u8'Ларек (доллар)', 1212, 1, 0.12599900364876, -0.077999003231525, -0.0049999998882413, 90.499923706055, 0, -23.599962234497, 2.0409979820251, 2.689001083374, 1.4119999408722, false, false},
        {u8'Ларек (нарко)', 1575, 1, 0.061997998505831, -0.030999999493361, 0.002998000010848, 89.900100708008, 0, 0, 0.73000001907349, 0.73999798297882, 0.95300000905991, false, false},
        {u8'Ларек (яблоки)', 19636, 1, -0.093998000025749, -0.20499999821186, 0.0049999998882413, -0.30000001192093, 89.300079345703, -1.299998998642, 0.46299800276756, 0.20299799740314, 2.5520000457764, false, false},
        {u8'Мешок с мясом',2805, 1, 0.12799899280071, -0.1799979954958, 0.0089990003034472, 0, 74.400016784668, 0, 0.59399998188019, 0.63599902391434, 0.42799898982048, false, false},
        {u8'Дракон', 3528, 1, 0.045899998396635, -0.20990000665188, 0, 127.5, 93.800003051758, 137.09989929199, 0.090000003576279, 0.10989999771118, 0.10989999771118, false, false},
        {u8'Фонтан',19840, 1, -0.40090000629425, -0.25490000844002, 0.025000000372529, 94.699897766113, 59.499900817871, -96.999900817871, 0.054900001734495, 0.072899997234344, 0.12389999628067, false, false},
        {u8'Щит', 18637, 1, 0.077999003231525, -0.034999001771212, 0.12099999934435, 87.19994354248, -0.9, -73, 0.71499997377396, 0.78600001335144, 1.0479990243912, false, false},
        {u8'Катана', 339, 1, 0.30299898982048, -0.12000100314617, -0.21399900317192, 0.19999699294567, -53.899978637695, -5.4999890327454, 1, 1, 0.79699999094009, false, false},
        {u8'Меч', 19590, 1, 0.29499799013138, -0.11, 0.14299799501896, -1.0999330282211, 147.3000793457, 89.601707458496, 0.96199697256088, 0.95099902153015, 0.7239990234375, false, false},
        {u8'Миниган', 362, 1, 0.56000000238419, -0.15499900281429, 0.10700000077486, 0, 178.50004577637, 0, 0.84500002861023, 0.88599902391434, 0.84200000762939, false, false},
        {u8'Огнемет', 361, 1, 0.54399901628494, -0.15599900484085, -0.10300000011921, -177.3000793457, 176.40005493164, 0, 0.76800000667572, 0.7059999704361, 0.74899899959564, false, false},
        {u8'Бензопила', 341, 1, 0.47899800539017, -0.15499299764633, 0.13199900090694, 0, 174.4002532959, 0, 1, 1, 1, false, false},
        {u8'Палка', 19620, 1, 0, -0.11089999973774, 0.0059000002220273, 86.900001525879, 5.1999998092651, -33.700000762939, 1.8008999824524, 0.11100000143051, 0.20990000665188, false, false},
        {u8'Новогодние ранец', 19806, 1, -0.33889999985695, -0.13889999687672, -0.046000000089407, -162.89999389648, -88.099899291992, -81.199897766113, 0.50900000333786, 2.1559000015259, 1.335000038147, false, false},
        {u8'Кровавая накидка', 1603, 1, 0.3619000017643, -0.0080000003799796, 0, 0, 91.39990234375, 0, 1.2740000486374, 0.66689997911453, 1, false, false},
        {u8'Черепаха', 1609, 1, 0.12099900096655, -0.15099799633026, 0.0049990001134574, 90.900001525879, -1.1000020503998, -86.100006103516, 0.19799999892712, 0.19499999284744, 0.19300000369549, false, false},
        {u8'Девушка на спину', 7392, 1, 0.028899999335408, -0.12690000236034, -0.036899998784065, -92.299896240234, 95.599899291992, 0, 0.062899999320507, 0.047899998724461, 0.041900001466274, false, false},
        {u8'Рюкзак (мыло)', 19874, 1, 0.032000001519918, -0.079899996519089, -0.014000000432134, 84.39990234375, 5.0998997688293, 0, 3.4618999958038, 3.0659000873566, 4.6719999313354, false, false},
        {u8'Трость', 326, 1, 0.32299900054932, -0.13600200414658, -0.34299901127815, -9.1000032424927, -45.499980926514, 0, 1, 1, 1, false, false},
        {u8'Карамельный посох', 1228, 1, 0, -0.11490000039339, 0.014000000432134, 2.2000000476837, 33.599998474121, -89.199897766113, 1, 1.4428999423981, 0.22390000522137, false, false},
        {u8'Гитара (красная)', 19317, 1, 0.17599999904633, -0.10800000280142, -0.052999000996351, 4.1999940872192, 119.29999542236, -4.7000007629395, 0.68800002336502, 1, 0.69599997997284, false, false},
        {u8'Гитара (белая)', 19318, 1, 0.17599999904633, -0.10800000280142, -0.052999000996351, 4.1999940872192, 119.29999542236, -4.7000007629395, 0.68800002336502, 1, 0.69599997997284, false, false},
        {u8'Гитара (черная)', 19319, 1, 0.15000000596046, -0.1169990003109, -0.014999000355601, 4.1999940872192, 119.29999542236, -4.7000007629395, 0.68800002336502, 1, 0.69599997997284, false, false},
        {u8'Бита на спину',336, 1, -0.12599900364876, -0.14299799501896, -0.13099899888039, 0, 47.100002288818, 0, 1, 1, 1, false, false},
        {u8'Подарок на спину', 19057, 1, 0.10999999940395, -0.18699899315834, 0, 0, 85.89998626709, 0, 0.23999999463558, 0.18099999427795, 0.39899900555611, false, false},
        {u8'Крылья (1)',8492, 1, 0.054999001324177, -0.11100000143051, -0.0019990000873804, -91.699813842773, -96.099952697754, -109.60003662109, 0.057000000029802, 0.034000001847744, 0.090000003576279, false, false},
        {u8'Крылья (2)', 1177, 1, -0.10989999771118, -0.15500000119209, 0.4239000082016, -89.800003051758, -0.799899995327, 88.300003051758, 0.46889999508858, 1.8400000333786, 0.30790001153946, false, false},
        {u8'Вибратор #1', 322, 1, -0.0089999996125698, -0.18399800360203,  0.082999996840954, 0, 69.499992370605, 0, 1.6199990510941, 1.6379990577698, 2.549998998642, false, false},
        {u8'Бумбокс',2226, 1, 0.080999001860619, -0.2039940059185, -0.062999002635479, 0, 34.5, 0, 0.67599999904633, 0.783999979496, 0.7599989771843, false, false},
        {u8'Скейт',19878, 1, 0.10499999672174, -0.15600000321865, -0.010999999940395, -90.699935913086, -6.0000061988831, 158.2999420166, 0.68699997663498, 0.69799900054932, 1, false, false},
        {u8'Доска для серфа (1)', 2404, 1, 0.050999000668526, -0.10700000077486, -0.040998999029398, 3, 56.20002746582, -6.899995803833, 0.56399899721146, 0.88999897241592, 0.46999898552895, false, false},
        {u8'Доска для серфа (2)', 2405, 1, 0.050999000668526, -0.10700000077486, -0.040998999029398, 3, 56.20002746582, -6.899995803833, 0.56399899721146, 0.88999897241592, 0.46999898552895, false, false},
        {u8'Доска для серфа (3)', 2406, 1, 0.050999000668526, -0.10700000077486, -0.040998999029398, 3, 56.20002746582, -6.899995803833, 0.56399899721146, 0.88999897241592, 0.46999898552895, false, false},
        {u8'Колонка', 2102, 1, 0.043999001383781, -0.15599900484085, -0.076999001204967, 0, 31.199995040894, 0, 0.75400000810623, 0.76299899816513, 0.7119989991188, false, false},
        --{u8'Доска для серфа (3)', 2406, 1, 0.032999001443386, -0.13899999856949, -0.012999000027776, 3, 56.100028991699, 0.6000030040741, 0.56399899721146, 0.88999897241592, 0.46999898552895, false, false},
        {u8'Паук', 3272, 1, 0.082000002264977, -0.089900001883507, -0.008899999782443, -85.39990234375, 178.69999694824, -89.099998474121, 0.26300001144409, 0.24089999496937, 0.064000003039837, false, false},
        {u8'Рюкзак "бегемот"', 1371, 1, 0.14800000190735, -0.21690000593662, 0, 4.0998997688293, 88, 0, 0.44290000200272, 0.3740000128746, 0.41490000486374, false, false},
        {u8'Огнетушитель', 2690, 1, 0.076999001204967, -0.14599600434303, 0.0089999996125698, 0, 62.5, 0, 0.77300000190735, 0.64999997615814, 0.83499997854233, false, false},
        {u8'Метла', 2712, 1, 0.087999999523163, -0.16799999773502, 0.11999999731779, -13.400010108948, 103.39999389648, -1.0999989509583, 0.84299898147583, 1, 0.98299902677536, false, false},
        {u8'Бита с шипами', 2045, 1, 0.052999000996351, -0.10999900102615, -0.03999999910593, 5.4000000953674, -30.800043106079, -88.699951171875, 1, 1, 1, false, false},
        {u8'Воротник', 8492, 1, 0.48500001430511, -0.088899999856949, -0.033900000154972, 1.0999000072479, 87.799896240234, 164.49989318848, 0.073899999260902, 0.039900001138449, 0.086900003254414, false, false},
        {u8'Сердце', 7093, 1, 0, 0.46590000391006, -0.0658999979496, 0, 92.400001525879, -5.4998998641968, 0.11289999634027, 0.19990000128746, 0.1368999928236, 16777215, false},
        {u8'Банан блять', 19578, 1, -0.012900000438094, -0.18690000474453, 0, 0, 0, -24.39999961853, 1.9299000501633, 3.2000000476837, 4.9070000648499, false, false},
        {u8'Дельфин', 1607, 1, 0.12189999967813, -0.23989999294281, 0.008899999782443, 87.599998474121, 21.89999961853, -91.199996948242, 0.25090000033379, 0.14990000426769, 0.20600000023842, false, false},
      
        {u8'Коса', 2590, 1, -0.39700001478195, -0.13399900496006, 0.24899999797344, 0, -60.499992370605, 40.600009918213, 1.1560000181198, 1.2689989805222, 0.49399900436401, false, false},
        {u8'Рюкзак будущего', 3385, 1, 0.055900000035763, -0.074000000953674, 0, 91.999900817871, 0, 0, 0.78289997577667, 0.47200000286102, 4.2859001159668, false, false},
    },
}
local glowEffect_data = {u8'glowEffect', 1276, 1, 0, 0, 0, 0, 0, 0, 0.1, 0.1, 0.1}
local walkstyle_data = {'man', 'shuffle', 'oldman', 'gang1', 'gang2', 'oldfatman', 'fatman', 'jogger', 'drunkman', 'blindman', 'swat', 'woman', 'shopping', 'busywoman', 'sexywoman', 'pro', 'oldwoman', 'fatwoman', 'jogwoman', 'oldfatwoman'}
local walkstyle_list = {u8'(М) Обычная', u8'(М) шафл', u8'(М) Дед', u8'(М) Геттовец 1', u8'(М) Геттовец 2', u8'(М) Жирный дед', u8'(М) Жирный', u8'(Ж) Джоггер', u8'(М) Пьяный (ALT)', u8'(М) Слепой', u8'(V) SWAT a.k.a Ричи', u8'(Ж) Обычная', u8'(Ж) супермаркет (ALT)', u8'(Ж) Занятая пизда', u8'(Ж) Секси чикса', u8'(Ж) Про', u8'(Ж) Бабка', u8'(Ж) Жирная телка', u8'(Ж) Бег', u8'(Ж) Старая, жирная бабка'}--{'man', 'shuffle', 'oldman', 'gang1', 'gang2', 'oldfatman', 'fatman', 'jogger', 'drunkman', 'blindman', 'swat', 'woman', 'shopping', 'busywoman', 'sexywoman', 'pro', 'oldwoman', 'fatwoman', 'jogwoman', 'oldfatwoman'}



local color_list_data = {
    {u8'Стандартный', -1},
    {u8'Красный', -16776961},
    {u8'Зеленый', -16711936},
    {u8'Синий', -65536},
    {u8'Розовый', -65281},
    {u8'Оранжевый', -16744193},
    {u8'Бирюзовый', -256},
    {u8'Желтый', -16728065},
}
local fightstyle_data = {
    {u8'Стандарный', 4},
    {u8'Бокс', 5},
    {u8'Кунг-Фу', 6},
    {u8'Knee head', 7},
    {u8'Grabkick', 15},
    {u8'Elbows', 16},
}
local case_items_data = {
    {u8'Стандартный кейс', 1210, 5, 0.29999899864197, 0.099999003112316, 0, 0, -83, 0, 1, 1, 1},
    {u8'Сумка для ноутбука', 11745, 5, 0.266999989748, 0.026999000459909, 0.029999999329448, -2.5999989509583, -96.299926757813, 85.300010681152, 0.20799900591373, 1, 1.2519990205765},
    {u8'Красный кейс',19921, 5, 0.1140000000596, 0.040998999029398, -0.044998999685049, 93.100112915039, -12.099985122681, -75.89998626709, 0.87099999189377, 0.89899998903275, 0.60199898481369},
    {u8'Кейс для гитары', 18868, 13, 0.32800000905991, -0.15090000629425, 0.05290000140667, 0, 97, -11.799900054932, 1, 6.688000202179, 8.2649002075195},
    {u8'Чемодан', 19624, 5, 0.10800000280142, 0.023000000044703, 0.029999999329448, 0, -89.999992370605, 0, 1, 1, 1},
    {u8'Красная хуйня', 328, 13, 0.64700001478195, -0.060899998992682, -0.093900002539158, 57, -177.19999694824, 1.7999000549316, 3.1710000038147, 2.8480000495911, 2.8819000720978, false, false},
}






local mods_items_data = {
    --Dragon
    {
        {u8'Дракон'},
        {u8'mod_dragon_item_1', 0, 3528, 2, 0.064000003039837, 0.082999996840954, -0.034000001847744, 0, 81.399971008301, 80.599983215332, 0.078998997807503, 0.093998998403549, 0.090999998152256, false, false},
        {u8'mod_dragon_item_2', 1, 3528, 1, 0.15599900484085, -0.1870000064373, 0.29500100016594, -159.30004882813, 0, 0, 0.25, 0.0079990001395345, 0.16699899733067, false, false},
        {u8'mod_dragon_item_3', 2, 3528, 1, 0.15599900484085, -0.1870000064373, -0.34599900245667, -21.599996566772, 0, 0, 0.25, 0.0079990001395345, 0.16699899733067, false, false},
    },
    --Sonic
    {
        {u8'Соник'},
        {'mod_sonic_item_1', 0, 3100, 2, 0.068000003695488, 0.0020000000949949, 0.0040000001899898, 82.599998474121, 0.20000000298023, 99.499900817871, 3.5158998966217, 3.9498999118805, 4.0079002380371, false, false},
        {'mod_sonic_item_2', 1, 3100, 2, 0.11500000208616, -0.10189999639988, 0.0040000001899898, 80.199996948242, 147.60000610352, 99.499900817871, 2.8568999767303, 1.8839000463486, 4.0079002380371, false, false},
        {'mod_sonic_item_3', 2, 3100, 2, -0.019899999722838, -0.11389999836683, 0.0040000001899898, 84.599998474121, 128.80000305176, 99.499900817871, 2.275899887085, 1.4838999509811, 3.9309000968933, false, false},
        {'mod_sonic_item_4', 3, 19094, 2, 0.0098999999463558, 0.059000000357628, -0.003000000026077, 178.29989624023, 7.5998997688293, -85.599899291992, 0.97990000247955, 0.34589999914169, 0.57200002670288, false, false},
        {'mod_sonic_item_5', 4, 1254, 2, 0.063000001013279, 0.11689999699593, -0.037900000810623, -17.499900817871, 144.10000610352, -2.2000000476837, 0.36489999294281, 0.27090001106262, 0.47490000724792, false, false},
        {'mod_sonic_item_6', 5, 1254, 2, 0.056000001728535,  0.11389999836683, 0.037900000810623, 17.60000038147, 18.499900817871, 9.0999002456665, 0.36489999294281, 0.27090001106262, 0.47490000724792, false, false},
    },

    --grinch
    {
        {u8'Гринч'},
        {'mod_grinch_item_1', 0, 19576, 2, 0.15389999747276, 0.008899999782443, 0.0080000003799796, 0, -89.299896240234, 176.60000610352, 2.4858999252319, 2.7650001049042, 3.7630000114441, false, false},
        {'mod_grinch_item_2', 1, 19570, 2, 0.20100000500679, 0.1009000018239, 0.030899999663234, -89.399803161621, 13.5, 7.8998999595642, 0.26489999890327, 0.49790000915527, 0.061900001019239, false, false},
        {'mod_grinch_item_3', 2, 19570, 2, 0.20290000736713,  0.096900001168251, -0.016000000759959, -103.5, 14.399900436401, -11.800000190735, 0.26800000667572, 0.51389998197556, 0.061900001019239, false, false},
        {'mod_grinch_item_4', 3, 19576, 2, 0.099899999797344, 0.035900000482798, 0.0049000000581145, 79.599998474121, -144.2998046875, -85.499900817871, 3.5090000629425,  3.0060000419617, 2.914999961853, false, false},
        {'mod_grinch_item_5', 4, 19078, 2,  0.29690000414848, 0, 0.0049000000581145, 176.39999389648, -176.19990539551, -51.799900054932, 0.5048999786377, 0.55290001630783, 0.55900001525879, false, false},
        {'mod_grinch_item_6', 5, 19576, 1, 0.040899999439716,  0.0098999999463558, -0.010900000110269, 13.900099754333, -91.999702453613, -160.69979858398, 5.0939002037048, 4.4000000953674, 7.5529999732971, false, false},
        {'mod_grinch_item_7', 6, 2788, 1, 0.31090000271797, 0.030899999663234, -0.024900000542402, 84.799896240234, -88.199996948242, -89.5, 0.58600002527237, 0.54900002479553, 1.7079000473022, false, false},
    },

    --angel
    {
        {u8'Ангел'},
        {'mod_angel_item_1', 0, 8492, 1, 0.094999000430107, -0.11100000143051, -0.0029990000184625, -90.699783325195, -96.099952697754, -109.60003662109, 0.057000000029802, 0.034000001847744, 0.090000003576279, false, false},
        {'mod_angel_item_2', 1, 2992, 2, 0.24600000679493, 0, 0, 0, -92.700004577637, 0, 1.3659980297089, 1.3940000534058, 1, false, false},
        {'mod_angel_item_3', 2, 2992, 2, 0.24600000679493, 0, 0.012000000104308, 0, 88.599998474121, 0, 1.3659989833832, 1.3940000534058, 1, false, false},
    },

    --
    {
        {u8'Диджей (какой блять диджей?)'},
        {'mod_dj_item_1', 0, 2805, 2, 0.041900001466274, -0.0020000000949949, 0.0078999996185303, -5.1999001502991, -97.400001525879, 0, 0.41490000486374, 0.63190001249313, 0.2369000017643, false, false},
        {'mod_dj_item_2', 1, 19319, 2, 0.063900001347065, 0.11100000143051, 0.043000001460314, 101.5, -62.099998474121, 78.599899291992, 0.10689999908209, 0.958899974823, 0.05290000140667, false, false},
        {'mod_dj_item_3', 2, 19319, 2, 0.068899996578693, 0.11500000208616, -0.036899998784065, 117.80000305176, -49.200000762939, 87.89990234375, 0.063900001347065, 0.93589997291565, 0.064900003373623, false, false},
        {'mod_dj_item_4', 3, 1133, 13, 0.35789999365807, -0.23700000345707, 0.037900000810623, 163.60000610352, -15.199899673462, -170.39999389648, 2.4828999042511, 0.49189999699593, 0.11289999634027, false, false},
        {'mod_dj_item_5', 4, 19583, 13, 0.35690000653267, -0.018899999558926, -0.028000000864267, -17, -168.59989929199, 6.8998999595642, 1.25100004673, 1.2279000282288, 0.97000002861023, false, false},
    },

    {
        {u8'Призрак'},
        {'mod_ghost_1', 0, 19200, 1, -0.16290000081062, 0.013899999670684, -0.12489999830723, -99.800003051758, -178.10000610352, -173.69990539551, 5.4299001693726, 2.2039000988007, 2.3589000701904, false, false},
        {'mod_ghost_2', 1, 19200, 1, -0.19390000402927, -0.0049000000581145, 0.10400000214577,  94.099899291992, -178.10000610352, -173.69990539551, 5.7838997840881, 2.4639000892639, 2.5678999423981, false, false},
        {'mod_ghost_3', 2, 19200, 1, 0.082000002264977, -0.0010000000474975, 0, -4.4000000953674, 176.49989318848, 176.60000610352, 5.7838997840881, 1.5938999652863, 2.1278998851776, false, false},
        {'mod_ghost_4', 3, 11741, 1, 0.46189999580383, 0.17890000343323, -0.046900000423193, 79.199897766113, 0, -59.799900054932, 0.24789999425411, 0.4869000017643, 1, false, false},
        {'mod_ghost_5', 4, 11741, 1, 0.46189999580383, 0.17890000343323, 0.060899998992682, 95.799896240234, -5.9998998641968, -117.69999694824, 0.24789999425411, 0.4869000017643, 1, false, false},
    },

    --праздник
    {
        {u8'"Праздник"'},
        {u8'mod_prazdnik_0', 0, 19135, 2, 0.23190000653267, -0.013899999670684, 0.070000000298023, 10.099900245667, -119.09989929199, -6.9998998641968, 0.2790000140667, 0.299899995327, 0.32690000534058, -16776961, -16776961},
        {u8'mod_prazdnik_1', 1, 19087, 14, 0.36000001430511, 0, 0.020899999886751, -59, 75.699897766113, -84.89990234375, 0.080899998545647, 0.046000000089407, 0.4699000120163, false, false},
        {u8'mod_prazdnik_2', 2, 19063, 14, -0.93000000715256, -0.27000001072884, -0.13889999687672, -60.299999237061, 78.89990234375, 165.89990234375, 0.28290000557899, 0.26890000700951, 0.36500000953674, -16776961, -16776961},
        {u8'mod_prazdnik_3', 3, 19054, 13, 0.27200001478195, -0.039000000804663, -0.057900000363588, 0, 0, 0, 0.20700000226498, 0.28600001335144, 0.094899997115135, false, false},
        {u8'mod_prazdnik_4', 4, 19087, 14, 0.36000001430511, 0, 0.020899999886751, 1.7999000549316, 75.699897766113, -84.89990234375, 0.080899998545647, 0.046000000089407, 0.39700001478195, false , false},
        {u8'mod_prazdnik_5', 5, 19063, 14, -0.73189997673035, 0.010900000110269, -0.24690000712872, 0.099899999797344, 78.89990234375, 165.89990234375, 0.30790001153946, 0.29390001296997, 0.40290001034737, -16711681, -16711681},
    }
}
local armour_data = {
    {u8'upgraded', 19515, 1, 0.020998999476433, 0.059999000281096, -0.0010000000474975, -2, -2.4000010490417, -0.60000902414322, 1.1809990406036, 1.2650059461594, 1.180999994278, false, false},
    {u8'default', 19142, 1, 0.012999000027776, 0.0489990003407, 0.0039989999495447, 0, -3.4000020027161, -4.1000018119812, 1.1510020494461, 1.1470010280609, 1.1350040435791, false, false},
}

--==[SKIN]==--
local changeskin = imgui.ImBool(ini.skin.enabled)
local skinid = imgui.ImInt(ini.skin.skinid)
local savedSkin = 0
local skin_rollerFix = imgui.ImBool(ini.other.rollerfix)
local skin_NormalSkinsTurn = imgui.ImBool(ini.other.normalturnfix)

--==[SLOTS]==--
local glow = imgui.ImBool(ini.slots.glow)
local armour_type = imgui.ImInt(ini.other.armour)

local selected_slot = {ini.slots.s1, ini.slots.s2, ini.slots.s3, ini.slots.s4, ini.slots.s5, ini.slots.s6, ini.slots.s7}
local selected_color = {ini.colors.s1, ini.colors.s2, ini.colors.s3, ini.colors.s4, ini.colors.s5, ini.colors.s6, ini.colors.s7}

local walkstyle_selected = imgui.ImInt(ini.other.walkstyle)
local fightstyle_selected = imgui.ImInt(ini.other.fightstyle); local fight_list = {}

local case_selected = imgui.ImInt(ini.slots.case); local case_items = {u8'Нет'}
local mods_selected = imgui.ImInt(ini.slots.mods); local mods_list = {u8'Нет'}

for i = 1, #fightstyle_data do table.insert(fight_list, #fight_list + 1, fightstyle_data[i][1]) end
for i = 1, #case_items_data do table.insert(case_items, #case_items + 1, case_items_data[i][1]) end
for i = 1, #mods_items_data do table.insert(mods_list, #mods_list + 1, mods_items_data[i][1][1]) end

local russian_characters = {
    [168] = 'Ё', [184] = 'ё', [192] = 'А', [193] = 'Б', [194] = 'В', [195] = 'Г', [196] = 'Д', [197] = 'Е', [198] = 'Ж', [199] = 'З', [200] = 'И', [201] = 'Й', [202] = 'К', [203] = 'Л', [204] = 'М', [205] = 'Н', [206] = 'О', [207] = 'П', [208] = 'Р', [209] = 'С', [210] = 'Т', [211] = 'У', [212] = 'Ф', [213] = 'Х', [214] = 'Ц', [215] = 'Ч', [216] = 'Ш', [217] = 'Щ', [218] = 'Ъ', [219] = 'Ы', [220] = 'Ь', [221] = 'Э', [222] = 'Ю', [223] = 'Я', [224] = 'а', [225] = 'б', [226] = 'в', [227] = 'г', [228] = 'д', [229] = 'е', [230] = 'ж', [231] = 'з', [232] = 'и', [233] = 'й', [234] = 'к', [235] = 'л', [236] = 'м', [237] = 'н', [238] = 'о', [239] = 'п', [240] = 'р', [241] = 'с', [242] = 'т', [243] = 'у', [244] = 'ф', [245] = 'х', [246] = 'ц', [247] = 'ч', [248] = 'ш', [249] = 'щ', [250] = 'ъ', [251] = 'ы', [252] = 'ь', [253] = 'э', [254] = 'ю', [255] = 'я',
}
function string.rlower(s)
    s = s:lower()
    local strlen = s:len()
    if strlen == 0 then return s end
    s = s:lower()
    local output = ''
    for i = 1, strlen do
        local ch = s:byte(i)
        if ch >= 192 and ch <= 223 then -- upper russian characters
            output = output .. russian_characters[ch + 32]
        elseif ch == 168 then -- Ё
            output = output .. russian_characters[184]
        else
            output = output .. string.char(ch)
        end
    end
    return output
end

local key_window = imgui.ImBool(false)
local getKeyInput = imgui.ImBuffer(256)
local setKeyInput = imgui.ImBuffer(256)
local presetGetSetCombo = imgui.ImInt(0)

function sampev.onSendCommand(cmd)
    if cmd:lower() == '/acs' then
        window.v = not window.v
        return false

    elseif cmd:lower() == '/acslg' then
        logger.v = not logger.v
        return false
    end
end
Скрипт вроде запускается, но флуд в консоль пиздец

1626445423257.png

1626445521776.png
 

chapo

чопа сребдс // @moujeek
Модератор
8,861
11,547
Так?
if sampIsLocalPlayerSpawned() then
sampAddChatMessage("Персонаж заспавнился", -1)
end
вставь это в начало скрипта (там где проверяешь загружен ли самп)
Lua:
while not sampIsLocalPlayerSpawned() do wait(O) end
Библиотеки все стоят? Прост я хуй знает
да, все
 

Pashyka

Участник
220
17
И если поставить в while true то оно вечно пишет типа что перс заспавнился а мне нужно чтоб зашел один ращ написало и все


Lua:
repeat
    wait(0)
until sampIsLocalPlayerSpawned()
lua_thread.create(function()
    wait(3000)
    sampSendChat('/stats')
end)

Сюда пишут только за помощью, а не чтобы код за тебя писали
вставь это в начало скрипта (там где проверяешь загружен ли самп)
Lua:
while not sampIsLocalPlayerSpawned() do wait(O) end

да, все

А как вообще он не открывается, типо скрипт вылетает, или же cmd тупо не робит?
 
  • Нравится
Реакции: deleted-user-443489

Pashyka

Участник
220
17
добавляется в чат сообщение о том что скрипт загружен и все, даже в консоль не спамит, но если убрать строку с автообновой то все норм

Lua:
autoupdate("https://raw.githubusercontent.com/GovnocodedByChapo/VisualAccessories/main/update.json", "{ff004d}["..thisScript().name.."]: {ffffff}", "https://www.blast.hk/threads/85370/")

Конечно это тупо) Но ты не пробовал ковычки менять с одинарных на двойные?
 

Pashyka

Участник
220
17
у меня нет антистиллера, а брандмауэр оффнут

Я даже уже хз, варики кончились, у меня все проверяет збс, типо у меня мун хз какой стоит даже, так как все скачивал admin tools для аризоны, мунлоадер мб другой версии надо, идеально сам по себе скрипт работает
у меня нет антистиллера, а брандмауэр оффнут

Попробуй сделать костылями, как я, скопируй сборку всю, если не лаунчер, далее установи на эту скопированную сборку админ туллс и проверь, хер знает, мб и поможет, типо там не ток мун и сф и клео грузит.
Прост если дело не в коде, то значит что-то отсутствует
 
Последнее редактирование: