Помогите с рендером линий

Fasmin

Участник
Автор темы
175
6
Версия MoonLoader
.026-beta
код:
require("lib.moonloader")

local centralGhetto = true

local pointPosition = {
    {2178.6481933594, -1762.5595703125, 13.546875}, -- point 1
    {2186.7194824219, -1762.4455566406, 13.378623008728},
    {2200.9331054688, -1762.5434570313, 13.1796875},
    {2213.2270507813, -1761.6545410156, 13.396740913391},
    {2224.6296386719, -1761.5754394531, 13.5625},
    {2231.1787109375, -1761.5389404297, 13.5625},
    {2237.4084472656, -1762.4219970703, 13.555346488953},
    {2245.7585449219, -1762.5042724609, 13.546875},
    {2255.7604980469, -1762.6437988281, 13.546875}, -- point 2
    {2255.8312988281, -1754.1318359375, 13.3828125},
    {2255.8217773438, -1746.5080566406, 13.546875},
    {2255.7065429688, -1737.6265869141, 13.546875},
    {2255.6672363281, -1727.3031005859, 13.546875},
    {2255.6394042969, -1717.3824462891, 17.6015625},
    {2255.6625976563, -1704.2639160156, 17.609237670898},
    {2255.6188964844, -1687.7490234375, 13.740411758423},
    {2255.908203125, -1684.3967285156, 20.515625},
    {2256.0380859375, -1676.9123535156, 20.515625},
    {2255.7309570313, -1669.7984619141, 21.03125},
    {2256.0600585938, -1657.2263183594, 15.259287834167},
    {2255.9528808594, -1653.2728271484, 15.47601509094}, -- point 3
    {2243.8913574219, -1652.9152832031, 15.287884712219},
    {2234.6157226563, -1652.8103027344, 15.296875},
    {2221.2531738281, -1652.6872558594, 15.230945587158},
    {2204.6433105469, -1652.7235107422, 15.292774200439},
    {2189.9794921875, -1653.1190185547, 15.215175628662},
    {2181.4113769531, -1653.3388671875, 15.235203742981},
    {2177.1818847656, -1652.7521972656, 15.070041656494}, -- point 4
    {2175.4118652344, -1669.4626464844, 14.992998123169},
    {2175.9602050781, -1682.50390625, 14.277885437012},
    {2175.3696289063, -1693.5480957031, 14.083312988281},
    {2175.6162109375, -1707.3587646484, 13.654362678528},
    {2175.8269042969, -1722.654296875, 13.527645111084},
    {2175.2915039063, -1745.8006591797, 13.546875},
    {2175.3474121094, -1753.7989501953, 13.375}
}

local CentralPosition = {
    {2202.7258300781, -1697.1068115234, 13.354644775391}
}

function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand("cg", function()
        centralGhetto = not centralGhetto
        printStringNow(centralGhetto and "Central Ghetto: ON" or "Central Ghetto: OFF", 1000)
    end)
    while true do wait(0)
        if centralGhetto then
            local x, y, z = getCharCoordinates(PLAYER_PED)
            if getDistanceBetweenCoords3d(x, y, z, CentralPosition[1][1], CentralPosition[1][2], CentralPosition[1][3]) <= 100.0 then
                for i in ipairs(pointPosition) do
                    local convertPointX, convertPointY = convert3DCoordsToScreen(pointPosition[i][1], pointPosition[i][2], pointPosition[i][3])
                    renderDrawLine(convertPointX, convertPointY, 3.0, 0xFFff004d)
                end
            end
        end
    end
end

Как то укоротить этот код нужно, чтобы не писать так:
local posX4, posY4 = convert3DCoordsToScreen(pointPosition[4][1], pointPosition[4][2], pointPosition[4][3])
renderDrawLine(posX1, posY1, posX2, posY2, 3.0, 0xFFff004d)

Но чет я не понимаю как это сделать (этот код не работает потому что скорее всего не создается своя переменная для каждой функции)
 
Последнее редактирование:
  • Эм
Реакции: Corenale

Masayuki

Участник
79
31
код:
require("lib.moonloader")

local centralGhetto = true

local pointPosition = {
    {2178.6481933594, -1762.5595703125, 13.546875}, -- point 1
    {2186.7194824219, -1762.4455566406, 13.378623008728},
    {2200.9331054688, -1762.5434570313, 13.1796875},
    {2213.2270507813, -1761.6545410156, 13.396740913391},
    {2224.6296386719, -1761.5754394531, 13.5625},
    {2231.1787109375, -1761.5389404297, 13.5625},
    {2237.4084472656, -1762.4219970703, 13.555346488953},
    {2245.7585449219, -1762.5042724609, 13.546875},
    {2255.7604980469, -1762.6437988281, 13.546875}, -- point 2
    {2255.8312988281, -1754.1318359375, 13.3828125},
    {2255.8217773438, -1746.5080566406, 13.546875},
    {2255.7065429688, -1737.6265869141, 13.546875},
    {2255.6672363281, -1727.3031005859, 13.546875},
    {2255.6394042969, -1717.3824462891, 17.6015625},
    {2255.6625976563, -1704.2639160156, 17.609237670898},
    {2255.6188964844, -1687.7490234375, 13.740411758423},
    {2255.908203125, -1684.3967285156, 20.515625},
    {2256.0380859375, -1676.9123535156, 20.515625},
    {2255.7309570313, -1669.7984619141, 21.03125},
    {2256.0600585938, -1657.2263183594, 15.259287834167},
    {2255.9528808594, -1653.2728271484, 15.47601509094}, -- point 3
    {2243.8913574219, -1652.9152832031, 15.287884712219},
    {2234.6157226563, -1652.8103027344, 15.296875},
    {2221.2531738281, -1652.6872558594, 15.230945587158},
    {2204.6433105469, -1652.7235107422, 15.292774200439},
    {2189.9794921875, -1653.1190185547, 15.215175628662},
    {2181.4113769531, -1653.3388671875, 15.235203742981},
    {2177.1818847656, -1652.7521972656, 15.070041656494}, -- point 4
    {2175.4118652344, -1669.4626464844, 14.992998123169},
    {2175.9602050781, -1682.50390625, 14.277885437012},
    {2175.3696289063, -1693.5480957031, 14.083312988281},
    {2175.6162109375, -1707.3587646484, 13.654362678528},
    {2175.8269042969, -1722.654296875, 13.527645111084},
    {2175.2915039063, -1745.8006591797, 13.546875},
    {2175.3474121094, -1753.7989501953, 13.375}
}

local CentralPosition = {
    {2202.7258300781, -1697.1068115234, 13.354644775391}
}

function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand("cg", function()
        centralGhetto = not centralGhetto
        printStringNow(centralGhetto and "Central Ghetto: ON" or "Central Ghetto: OFF", 1000)
    end)
    while true do wait(0)
        if centralGhetto then
            local x, y, z = getCharCoordinates(PLAYER_PED)
            if getDistanceBetweenCoords3d(x, y, z, CentralPosition[1][1], CentralPosition[1][2], CentralPosition[1][3]) <= 100.0 then
                for i in ipairs(pointPosition) do
                    local convertPointX, convertPointY = convert3DCoordsToScreen(pointPosition[i][1], pointPosition[i][2], pointPosition[i][3])
                    renderDrawLine(convertPointX, convertPointY, 3.0, 0xFFff004d)
                end
            end
        end
    end
end

Как то укоротить этот код нужно, чтобы не писать так:
local posX4, posY4 = convert3DCoordsToScreen(pointPosition[4][1], pointPosition[4][2], pointPosition[4][3])
renderDrawLine(posX1, posY1, posX2, posY2, 3.0, 0xFFff004d)

Но чет я не понимаю как это сделать (этот код не работает потому что скорее всего не создается своя переменная для каждой функции)
for k, v in pairs(pointPosition) do
local convertPointX, convertPointY = convert3DCoordsToScreen(pointPosition[v][1], pointPosition[v][2], pointPosition[v][3])
renderDrawLine(convertPointX, convertPointY, 3.0, 0xFFff004d)
end
 
  • Bug
Реакции: Fasmin и Corenale