Помогите с mimgui луа

SamuelGoldie

Участник
Автор темы
72
7
Версия MoonLoader
.026-beta
Подскажите пожалуйста как исправить, создал чекбокс с функцией но при нажатии вкладки крашит гта
Код вкладки:

lua:
imgui.SameLine()
        if imgui.DegradeButton(u8'Настройки', imgui.ImVec2(85, 25)) then
            acn = 5
        end
Код чекбокса:

lua:
if acn == 5 then
        imgui.BeginChild('##5', imgui.ImVec2(785, 495), true)
            imgui.Checkbox(u8'ANIMINFO', checkboxone)
            if checkboxone[0] then
            end
        end
    end
)
Код функции в которую я пытаюсь запихнуть чекбокс:

lua:
SRCC('animlovec',function() st = not st sampAddChatMessage('AnimLovec '..(st and 'ON' or 'OFF'), -1) end)
    while true do
        wait(-1)
    end
end
function sampev.onApplyPlayerAnimation(playerId, animLib, animName, frameDelta, loop, lockX, lockY, freeze, time)
    if checkboxone[0] then
        local result, handle = sampGetCharHandleBySampPlayerId(playerId)
        if result and handle ~= PLAYER_PED then
            local mx, my, mz = getCharCoordinates(PLAYER_PED)
            local ox, oy, oz = getCharCoordinates(handle)
            local dist = getDistanceBetweenCoords3d(mx, my, mz, ox, oy, oz)
            if dist < 40 then
                sampAddChatMessage('Игрок: '..sampGetPlayerNickname(playerId)..' использует анимацию '..animName,-1)
            end
        end
    end
end
 
  • Ха-ха
Реакции: Sadow

MLycoris

Режим чтения
Проверенный
1,820
1,860
Вкладки лучше создавать следующим образом

Lua:
local sampev = require 'lib.samp.events'
local imgui = require 'mimgui'
local ffi = require 'ffi'

local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8

local new, str = imgui.new, ffi.string
local sizeX, sizeY = getScreenResolution()

local WinState, checkbox = new.bool(), new.bool()

imgui.OnFrame(function() return WinState[0] end,
    function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(245, 280), imgui.Cond.Always)
        imgui.Begin(u8'Основное', WinState, imgui.WindowFlags.NoResize)
        if imgui.BeginTabBar('Tabs') then
            if imgui.BeginTabItem(u8'Первая') then
                if imgui.BeginChild('Name', imgui.ImVec2(160, 60), true) then
                    imgui.Checkbox(u8'Статус ',checkbox)
                    imgui.EndChild()
                end
                imgui.EndTabItem()
            end
            if imgui.BeginTabItem(u8'Вторая') then
                if imgui.Button('Test') then
                    sampAddChatMessage('Вы нажали кнопку во второй вкладке',-1)
                end
                imgui.EndTabItem()
            end
            imgui.EndTabBar()
        end
        imgui.End()
    end
)

function main()
    sampRegisterChatCommand('cmd', function() WinState[0] = not WinState[0] end)
    wait(-1)
end
function sampev.onApplyPlayerAnimation(playerId, animLib, animName, frameDelta, loop, lockX, lockY, freeze, time)
    if checkbox[0] then
        local result, handle = sampGetCharHandleBySampPlayerId(playerId)
        if result and handle ~= PLAYER_PED then
            local mx, my, mz = getCharCoordinates(PLAYER_PED)
            local ox, oy, oz = getCharCoordinates(handle)
            local dist = getDistanceBetweenCoords3d(mx, my, mz, ox, oy, oz)
            if dist < 40 then
                sampAddChatMessage('Игрок: '..sampGetPlayerNickname(playerId)..' использует анимацию '..animName,-1)
            end
        end
    end
end