Переписывал Imgui код под mimgui, но есть ошибка

boy next door

Активный
Автор темы
271
27
Версия MoonLoader
.026-beta
Привет всем. Мой скрипт пишет мне, что есть ошибка в строчке:
Lua:
tools: C:\Games\gtasa\moonloader\[beta_X] tools.lua:3337: attempt to index a nil value
Lua:
            for i=1, 104 do
                local color = imgui.ColorConvertU32ToFloat4(zones[i].zcolor) -- 3337
                local pX, pY = ((zones[i].zstart.x-1659.256104)/k)+4, ((-1054.259277-zones[i].zend.y)/k)+44
                local wX, wY = ((zones[i].zend.x-zones[i].zstart.x)/k), ((zones[i].zend.y-zones[i].zstart.y)/k)
                if zones[i].zfrac == 9 then ballas = ballas+1
                elseif zones[i].zfrac == 10 then vagos = vagos+1
                elseif zones[i].zfrac == 12 then grove = grove+1
                elseif zones[i].zfrac == 14 then aztec = aztec+1
                elseif zones[i].zfrac == 15 then rifa = rifa+1 end
                imgui.SetCursorPos(imgui.ImVec2(pX, pY))
                imgui.PushStyleColor(imgui.Col.Text, imgui.ImVec4(0, 0, 0, 1))
                imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(color.w, color.z, color.y, color.x))
                imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(color.w, color.z, color.y, color.x-0.1))
                imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(color.w, color.z-0.2, color.y-0.2, color.x))
                imgui.PushStyleVar(imgui.StyleVar.FrameRounding, 0)
                if imgui.Button((i == 8 or i == 26 or i == 68 or i == 75 or i == 91) and (faicons(u8'HOUSE')..'##zonebutton'..i) or ('##zonebutton'..i), imgui.ImVec2(wX-1, wY-1)) then
                    curZone = i
                    local wpos = imgui.GetWindowPos()
                    imgui.SetNextWindowPos(imgui.ImVec2(wpos.x+pX+wX, wpos.y+pY))
                    imgui.OpenPopup('##zoneacts')
                end
                imgui.PopStyleVar()
                imgui.PopStyleColor(4)
            end

Помогите пожалуйста решить эту проблему, я уже не могу код переваривать.
 

boy next door

Активный
Автор темы
271
27
Скрипт теперь не крашит, да и отображает меню, но с одним но.. Нету отображения территорий.
1753952576539.png

Lua:
local ballas, vagos, grove, aztec, rifa = 0, 0, 0, 0, 0
            imgui.BeginChild('##zone_buttons', imgui.ImVec2(485, 459), true)
            local k = 2.7
            for i=1, 104 do
                if zones[i] and zones[i].zcolor then
                local z = zones[i].zcolor
                local a = bit.rshift(bit.band(z, 0xFF000000), 24) / 255
                local r = bit.rshift(bit.band(z, 0x00FF0000), 16) / 255
                local g = bit.rshift(bit.band(z, 0x0000FF00), 8) / 255
                local b = bit.band(z, 0x000000FF) / 255
                local color = imgui.ImVec4(r, g, b, a)

                local pX, pY = ((zones[i].zstart.x-1659.256104)/k)+4, ((-1054.259277-zones[i].zend.y)/k)+44
                local wX, wY = ((zones[i].zend.x-zones[i].zstart.x)/k), ((zones[i].zend.y-zones[i].zstart.y)/k)
                if zones[i].zfrac == 9 then ballas = ballas+1
                elseif zones[i].zfrac == 10 then vagos = vagos+1
                elseif zones[i].zfrac == 12 then grove = grove+1
                elseif zones[i].zfrac == 14 then aztec = aztec+1
                elseif zones[i].zfrac == 15 then rifa = rifa+1 end
                imgui.SetCursorPos(imgui.ImVec2(pX, pY))
                imgui.PushStyleColor(imgui.Col.Text, imgui.ImVec4(0, 0, 0, 1))
                imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(color.w, color.z, color.y, color.x))
                imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(color.w, color.z, color.y, color.x-0.1))
                imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(color.w, color.z-0.2, color.y-0.2, color.x))
                imgui.PushStyleVar(imgui.StyleVar.FrameRounding, 0)
                if imgui.Button((i == 8 or i == 26 or i == 68 or i == 75 or i == 91) and (faicons(u8'HOUSE')..'##zonebutton'..i) or ('##zonebutton'..i), imgui.ImVec2(wX-1, wY-1)) then
                    curZone = i
                    local wpos = imgui.GetWindowPos()
                    imgui.SetNextWindowPos(imgui.ImVec2(wpos.x+pX+wX, wpos.y+pY))
                    imgui.OpenPopup('##zoneacts')
                end
                imgui.PopStyleVar()
                imgui.PopStyleColor(4)
                end
            end
            if imgui.BeginPopup('##zoneacts') then
                local color = imgui.ColorConvertU32ToFloat4(zones[curZone].zcolor)
                imgui.Text(u8'Территория №'..curZone)
                if curZone == 8 or curZone == 26 or curZone == 68 or curZone == 75 or curZone == 91 then
                    imgui.SameLine()
                    imgui.TextDisabled(u8'(Респавн)')
                end
                imgui.Text(u8'Принадлежит:')
                imgui.SameLine()
                imgui.TextColored(imgui.ImVec4(color.w, color.z, color.y, color.x), fracNames[zones[curZone].zfrac][2])
                imgui.Text(u8' \nИзменить контроль над территорией:')
                imgui.HintOnInputText('##gzcolor_reason', gzcolor_reason, 245, u8'Причина', 2)

                color = imgui.ColorConvertU32ToFloat4(zones[68].zcolor)
                imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(color.w, color.z, color.y, color.x))
                imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(color.w, color.z, color.y, color.x-0.1))
                imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(color.w, color.z-0.2, color.y-0.2, color.x))
                if imgui.Button('Grove Street', imgui.ImVec2(120, 0)) then
                    if #(u8:decode(gzcolor_reason[0]):gsub(' ', '')) > 0 then
                        local pX, pY, pZ = getCharCoordinates(PLAYER_PED)
                        lua_thread.create(function()
                            setCharCoordinates(PLAYER_PED, zones[curZone].zcenter.x, zones[curZone].zcenter.y, 550)
                            wait(0)
                            local h = getCharHeightAboveGround(PLAYER_PED)
                            setCharCoordinates(PLAYER_PED, zones[curZone].zcenter.x, zones[curZone].zcenter.y, (550-h)+3)
                            wait(100)
                            sampSendChat('/gzcolor 15 '..u8:decode(gzcolor_reason[0]), -1)
                            wait(300)
                            setCharCoordinates(PLAYER_PED, pX, pY, pZ)
                        end)
                    else
                        toolsErrorText('Для продолжения укажите причину')
                    end
                end
                imgui.PopStyleColor(3)
                imgui.SameLine()
                color = imgui.ColorConvertU32ToFloat4(zones[26].zcolor)
                imgui.PushStyleColor(imgui.Col.Text, imgui.ImVec4(0, 0, 0, 1))
                imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(color.w, color.z, color.y, color.x))
                imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(color.w, color.z, color.y, color.x-0.1))
                imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(color.w, color.z-0.2, color.y-0.2, color.x))
                if imgui.Button('Los Santos Vagos', imgui.ImVec2(120, 0)) then
                    if #(u8:decode(gzcolor_reason[0]):gsub(' ', '')) > 0 then
                        local pX, pY, pZ = getCharCoordinates(PLAYER_PED)
                        lua_thread.create(function()
                            setCharCoordinates(PLAYER_PED, zones[curZone].zcenter.x, zones[curZone].zcenter.y, 550)
                            wait(0)
                            local h = getCharHeightAboveGround(PLAYER_PED)
                            setCharCoordinates(PLAYER_PED, zones[curZone].zcenter.x, zones[curZone].zcenter.y, (550-h)+3)
                            wait(100)
                            sampSendChat('/gzcolor 13 '..u8:decode(gzcolor_reason[0]), -1)
                            wait(300)
                            setCharCoordinates(PLAYER_PED, pX, pY, pZ)
                        end)
                    else sampAddChatMessage('[Admin helper]: {ffffff}Для продолжения укажите причину', 0xFF6600)
                    end
                end
                imgui.PopStyleColor(4)
                color = imgui.ColorConvertU32ToFloat4(zones[91].zcolor)
                imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(color.w, color.z, color.y, color.x))
                imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(color.w, color.z, color.y, color.x-0.1))
                imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(color.w, color.z-0.2, color.y-0.2, color.x))
                if imgui.Button('The Rifa', imgui.ImVec2(120, 0)) then
                    if #(u8:decode(gzcolor_reason[0]):gsub(' ', '')) > 0 then
                        local pX, pY, pZ = getCharCoordinates(PLAYER_PED)
                        lua_thread.create(function()
                            setCharCoordinates(PLAYER_PED, zones[curZone].zcenter.x, zones[curZone].zcenter.y, 550)
                            wait(0)
                            local h = getCharHeightAboveGround(PLAYER_PED)
                            setCharCoordinates(PLAYER_PED, zones[curZone].zcenter.x, zones[curZone].zcenter.y, (550-h)+3)
                            wait(100)
                            sampSendChat('/gzcolor 18 '..u8:decode(gzcolor_reason[0]), -1)
                            wait(300)
                            setCharCoordinates(PLAYER_PED, pX, pY, pZ)
                        end)
                    else sampAddChatMessage('[Admin helper]: {ffffff}Для продолжения укажите причину', 0xFF6600)
                    end
                end
                imgui.PopStyleColor(3)
                imgui.SameLine()
                color = imgui.ColorConvertU32ToFloat4(zones[8].zcolor)
                imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(color.w, color.z, color.y, color.x))
                imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(color.w, color.z, color.y, color.x-0.1))
                imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(color.w, color.z-0.2, color.y-0.2, color.x))
                if imgui.Button('The Ballas', imgui.ImVec2(120, 0)) then
                    if #(u8:decode(gzcolor_reason[0]):gsub(' ', '')) > 0 then
                        local pX, pY, pZ = getCharCoordinates(PLAYER_PED)
                        lua_thread.create(function()
                            setCharCoordinates(PLAYER_PED, zones[curZone].zcenter.x, zones[curZone].zcenter.y, 550)
                            wait(0)
                            local h = getCharHeightAboveGround(PLAYER_PED)
                            setCharCoordinates(PLAYER_PED, zones[curZone].zcenter.x, zones[curZone].zcenter.y, (550-h)+3)
                            wait(100)
                            sampSendChat('/gzcolor 12 '..u8:decode(gzcolor_reason[0]), -1)
                            wait(300)
                            setCharCoordinates(PLAYER_PED, pX, pY, pZ)
                        end)
                    else sampAddChatMessage('[Admin helper]: {ffffff}Для продолжения укажите причину', 0xFF6600)
                    end
                end
                imgui.PopStyleColor(3)
                color = imgui.ColorConvertU32ToFloat4(zones[75].zcolor)
                imgui.PushStyleColor(imgui.Col.Text, imgui.ImVec4(0, 0, 0, 1))
                imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(color.w, color.z, color.y, color.x))
                imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(color.w, color.z, color.y, color.x-0.1))
                imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(color.w, color.z-0.2, color.y-0.2, color.x))
                if imgui.Button('Varios Los Aztecas', imgui.ImVec2(245, 0)) then
                    if #(u8:decode(gzcolor_reason[0]):gsub(' ', '')) > 0 then
                        local pX, pY, pZ = getCharCoordinates(PLAYER_PED)
                        lua_thread.create(function()
                            setCharCoordinates(PLAYER_PED, zones[curZone].zcenter.x, zones[curZone].zcenter.y, 550)
                            wait(0)
                            local h = getCharHeightAboveGround(PLAYER_PED)
                            setCharCoordinates(PLAYER_PED, zones[curZone].zcenter.x, zones[curZone].zcenter.y, (550-h)+3)
                            wait(100)
                            sampSendChat('/gzcolor 17 '..u8:decode(gzcolor_reason[0]), -1)
                            wait(300)
                            setCharCoordinates(PLAYER_PED, pX, pY, pZ)
                        end)
                    else sampAddChatMessage('[Admin helper]: {ffffff}Для продолжения укажите причину', 0xFF6600)
                    end
                end
                imgui.PopStyleColor(3)
                imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(1, 1, 1, 1))
                imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(1, 1, 1, 0.9))
                imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(1, 0.8, 0.8, 1))
                if imgui.Button(u8'Телепортироваться', imgui.ImVec2(245, 0)) then
                    lua_thread.create(function()
                        setCharCoordinates(PLAYER_PED, zones[curZone].zcenter.x, zones[curZone].zcenter.y, 550)
                        wait(0)
                        local h = getCharHeightAboveGround(PLAYER_PED)
                        setCharCoordinates(PLAYER_PED, zones[curZone].zcenter.x, zones[curZone].zcenter.y, (550-h)+3)
                    end)
                end
                imgui.PopStyleColor(4)
                imgui.EndPopup()
            end
            imgui.EndChild()
            imgui.SameLine()
            imgui.BeginChild('##zone_progress', imgui.ImVec2(202, 459), true)
            imgui.PushFont(big_font)
            imgui.Text(u8'Рейтинг банд:')
            imgui.PopFont()
            imgui.Text('')
            
            if zones[i] and zones[i].zcolor then
                local z = zones[i].zcolor
                local a = bit.rshift(bit.band(z, 0xFF000000), 24) / 255
                local r = bit.rshift(bit.band(z, 0x00FF0000), 16) / 255
                local g = bit.rshift(bit.band(z, 0x0000FF00), 8) / 255
                local b = bit.band(z, 0x000000FF) / 255
                local color = imgui.ImVec4(r, g, b, a)
                
                imgui.TextColored(imgui.ImVec4(color.w, color.z, color.y, color.x), 'The Ballas:') imgui.SameLine() imgui.TextDisabled(tostring(ballas)..u8' территорий')
                imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(color.w, color.z, color.y, color.x))
                imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(color.w, color.z, color.y, color.x-0.7))
                imgui.BufferingBar(ballas/100, imgui.ImVec2(194, 13))
                imgui.PopStyleColor(2)
                color = imgui.ColorConvertU32ToFloat4(zones[26].zcolor)
                imgui.TextColored(imgui.ImVec4(color.w, color.z, color.y, color.x), 'Los Santos Vagos:') imgui.SameLine() imgui.TextDisabled(tostring(vagos)..u8' территорий')
                imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(color.w, color.z, color.y, color.x))
                imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(color.w, color.z, color.y, color.x-0.7))
                imgui.BufferingBar(vagos/100, imgui.ImVec2(194, 13))
                imgui.PopStyleColor(2)
                color = imgui.ColorConvertU32ToFloat4(zones[68].zcolor)
                imgui.TextColored(imgui.ImVec4(color.w, color.z, color.y, color.x), 'Grove Street:') imgui.SameLine() imgui.TextDisabled(tostring(grove)..u8' территорий')
                imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(color.w, color.z, color.y, color.x))
                imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(color.w, color.z, color.y, color.x-0.7))
                imgui.BufferingBar(grove/100, imgui.ImVec2(194, 13))
                imgui.PopStyleColor(2)
                color = imgui.ColorConvertU32ToFloat4(zones[75].zcolor)
                imgui.TextColored(imgui.ImVec4(color.w, color.z, color.y, color.x), 'Varios Los Aztecas:') imgui.SameLine() imgui.TextDisabled(tostring(aztec)..u8' территорий')
                imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(color.w, color.z, color.y, color.x))
                imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(color.w, color.z, color.y, color.x-0.7))
                imgui.BufferingBar(aztec/100, imgui.ImVec2(194, 13))
                imgui.PopStyleColor(2)
                color = imgui.ColorConvertU32ToFloat4(zones[91].zcolor)
                imgui.TextColored(imgui.ImVec4(color.w, color.z, color.y, color.x), 'The Rifa:') imgui.SameLine() imgui.TextDisabled(tostring(rifa)..u8' территорий')
                imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(color.w, color.z, color.y, color.x))
                imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(color.w, color.z, color.y, color.x-0.7))
                imgui.BufferingBar(rifa/100, imgui.ImVec2(194, 13))
                imgui.PopStyleColor(2)
            end
            imgui.EndChild()