непонятная ошибка

Gat

Участник
Автор темы
52
6
Версия MoonLoader
.026-beta
ПРИВЕТ!

Lua:
local flag = false

while true do
    if isKeyJustPressed(VK_F3) then
                local flag = not flag
                if flag == true then
                    print('just recon включен')
                else
                    print('just recon выключен')
            end

            if flag then
                local IsCharExist, char = getNearCharToCenter(mainIni.settings.nearchardist)
                local isIdExist, nearId = sampGetPlayerIdByCharHandle(char)
                lineToNearPlayer()
                if IsCharExist and isIdExist and isKeyJustPressed(VK_MENU) then
                    sampSendChat('/re '.. nearId )
                end
            end  
end

function getNearCharToCenter(maxDist)
    local sx, sy = getScreenResolution()
    local midX, midY = sx / 2, sy / 2
    local t = {}
    for k, char in ipairs(getAllChars()) do
        if isCharOnScreen(char) then
            local x, y, z = getCharCoordinates(char)
            local myX, myY, myZ = getCharCoordinates(playerPed)
            local cX, cY = convert3DCoordsToScreen(x, y, z)
            local dist = getDistanceBetweenCoords2d(midX, midY, cX, cY)
            local distBtwCar = getDistanceBetweenCoords3d(x, y, z, myX, myY, myZ)
            if distBtwCar ~= nil and tonumber(maxDist) ~= nil then
                            if distBtwCar <= tonumber(maxDist) then
                                table.insert(t, {dist, char})
                            end
            end
        end
    end
    if #t > 0 then
            lua_thread.create(function()
                local minDist = t[1][1]
                for i = 1, #t do
                            if t[i][1] < minDist then
                                minDist = t[i][1]
                                nearestChar = t[i][2]
                            end
                end
                return true, nearestChar
            end)
    end
    return false
end

function lineToNearPlayer()
    local IsCharExist, char = getNearCharToCenter(mainIni.settings.nearchardist)
    local sx, sy = getScreenResolution()
    local midX, midY = sx / 2, sy / 2
  local x, y, z = getCharCoordinates(char)
  local cX, cY = convert3DCoordsToScreen(x, y, z)
    if IsCharExist then
        renderDrawLine(midX, midY, cX, cY, 3, color1)
    end
end

Есть такой вот код. Хочу, чтобы к ближайшему к центру игроку рисовалась линия, а при нажатии на альт заходил за ним в рекон ( /re id ). Но выдает такую ошибку:

opcode '00A0' call caused an unhandled exception
stack traceback:
[C]: in function 'getCharCoordinates'
...йшая сборка\GTA 130K BY DAPO SHOW\moonloader\helper.lua:311: in function 'lineToNearPlayer'
...йшая сборка\GTA 130K BY DAPO SHOW\moonloader\helper.lua:263: in function <...йшая сборка\GTA 130K BY DAPO SHOW\moonloader\helper.lua:76>
[ML] (error) zhelper.lua: Script died due to an error. (1A2B1A84)
Не могу разобраться в чем проблема.
 
Последнее редактирование:

_razor

t.me/sssecretway | ТГК: t.me/razor_code
Всефорумный модератор
1,948
3,211
ПРИВЕТ!

Lua:
local flag = false

while true do
    if isKeyJustPressed(VK_F3) then
                local flag = not flag
                if flag == true then
                    print('just recon включен')
                else
                    print('just recon выключен')
            end

            if flag then
                local IsCharExist, char = getNearCharToCenter(mainIni.settings.nearchardist)
                local isIdExist, nearId = sampGetPlayerIdByCharHandle(char)
                lineToNearPlayer()
                if IsCharExist and isIdExist and isKeyJustPressed(VK_MENU) then
                    sampSendChat('/re '.. nearId )
                end
            end 
end

function getNearCharToCenter(maxDist)
    local sx, sy = getScreenResolution()
    local midX, midY = sx / 2, sy / 2
    local t = {}
    for k, char in ipairs(getAllChars()) do
        if isCharOnScreen(char) then
            local x, y, z = getCharCoordinates(char)
            local myX, myY, myZ = getCharCoordinates(playerPed)
            local cX, cY = convert3DCoordsToScreen(x, y, z)
            local dist = getDistanceBetweenCoords2d(midX, midY, cX, cY)
            local distBtwCar = getDistanceBetweenCoords3d(x, y, z, myX, myY, myZ)
            if distBtwCar ~= nil and tonumber(maxDist) ~= nil then
                            if distBtwCar <= tonumber(maxDist) then
                                table.insert(t, {dist, char})
                            end
            end
        end
    end
    if #t > 0 then
            lua_thread.create(function()
                local minDist = t[1][1]
                for i = 1, #t do
                            if t[i][1] < minDist then
                                minDist = t[i][1]
                                nearestChar = t[i][2]
                            end
                end
                return true, nearestChar
            end)
    end
    return false
end

function lineToNearPlayer()
    local IsCharExist, char = getNearCharToCenter(mainIni.settings.nearchardist)
    local sx, sy = getScreenResolution()
    local midX, midY = sx / 2, sy / 2
  local x, y, z = getCharCoordinates(char)
  local cX, cY = convert3DCoordsToScreen(x, y, z)
    if IsCharExist then
        renderDrawLine(midX, midY, cX, cY, 3, color1)
    end
end

Есть такой вот код. Хочу, чтобы к ближайшему к центру игроку рисовалась линия, а при нажатии на альт заходил за ним в рекон ( /re id ). Но выдает такую ошибку:


Не могу разобраться в чем проблема.
Lua:
function lineToNearPlayer()
    local IsCharExist, char = getNearCharToCenter(mainIni.settings.nearchardist)
    local sx, sy = getScreenResolution()
    local midX, midY = sx / 2, sy / 2
    if IsCharExist then
          local x, y, z = getCharCoordinates(char)
          local cX, cY = convert3DCoordsToScreen(x, y, z)
        renderDrawLine(midX, midY, cX, cY, 3, color1)
    end
end
 

Gat

Участник
Автор темы
52
6
Lua:
function lineToNearPlayer()
    local IsCharExist, char = getNearCharToCenter(mainIni.settings.nearchardist)
    local sx, sy = getScreenResolution()
    local midX, midY = sx / 2, sy / 2
    if IsCharExist then
          local x, y, z = getCharCoordinates(char)
          local cX, cY = convert3DCoordsToScreen(x, y, z)
        renderDrawLine(midX, midY, cX, cY, 3, color1)
    end
end
ошибки больше нет, но линия к игроку не рисуется почему-то. С чем это может быть связано?
 

_razor

t.me/sssecretway | ТГК: t.me/razor_code
Всефорумный модератор
1,948
3,211

Gat

Участник
Автор темы
52
6
Lua:
while true do
    wait(0)
    lineToNearPlayer()
end

А вообще, что функция getNearCharToCenter правильно работает?
Lua:
function lineToNearPlayer()
    local IsCharExist, char = getNearCharToCenter(100)
    local sx, sy = getScreenResolution()
    local midX, midY = sx / 2, sy / 2
        lua_thread.create(function()
                    while IsCharExist do
                        local x, y, z = getCharCoordinates(char)
              local cX, cY = convert3DCoordsToScreen(x, y, z)
                        renderDrawLine(midX, midY, cx, cy, 3, 0xffbfff00)
                    end
                end)
end

function getNearCharToCenter(maxDist)
    local sx, sy = getScreenResolution()
    local midX, midY = sx / 2, sy / 2
    local t = {}
    for k, char in ipairs(getAllChars()) do
        if isCharOnScreen(char) then
            local x, y, z = getCharCoordinates(char)
            local myX, myY, myZ = getCharCoordinates(playerPed)
            local cX, cY = convert3DCoordsToScreen(x, y, z)
            local dist = getDistanceBetweenCoords2d(midX, midY, cX, cY)
            local distBtwChar = getDistanceBetweenCoords3d(x, y, z, myX, myY, myZ)
            if distBtwChar ~= nil and tonumber(maxDist) ~= nil then
                            if distBtwChar <= tonumber(maxDist) then
                                table.insert(t, {dist, char})
                            end
            end
        end
     end
    if #t > 0 then
            lua_thread.create(function()
                local minDist = t[1][1]
                for i = 1, #t do
                            if t[i][1] < minDist then
                                minDist = t[i][1]
                                nearestChar = t[i][2]
                            end
                end
                return true, nearestChar
            end)
    end
    return false
end

while true do
        if isKeyJustPressed(VK_F3) then
                flag = not flag
                if flag == true then
                    print("just recon on")
                else
                    print("just recon off")
            end

            if flag then
                local IsCharExist, char = getNearCharToCenter(100)
                local isIdExist, nearId = sampGetPlayerIdByCharHandle(char)
                local sx, sy = getScreenResolution()
                local midX, midY = sx / 2, sy / 2
                if IsCharExist then
                            local x, y, z = getCharCoordinates(char)
                            local cX, cY = convert3DCoordsToScreen(x, y, z)
                        renderDrawLine(midX, midY, cx, cy, 3, 0xffbfff00)
                        if isIdExist and isKeyJustPressed(VK_MENU) then
                            sampSendChat('/re '.. nearId )
                        end
                end
            end 
end

-- По идее должно происходить следующее: клавиша F3 - переключатель/флаг.
-- Если флаг == true, тогда рисуется линия к игроку, который ближе всех к центру экрана.
-- При нажатии на кнопку альт, должно писаться "/re [id игрока, к которому идет линия]"
-- По идее должно происходить следующее: клавиша F3 - переключатель/флаг.
-- Если флаг == true, тогда рисуется линия к игроку, который ближе всех к центру экрана.
-- При нажатии на кнопку альт, должно писаться "/re [id игрока, к которому идет линия]"
Пробовал саму функцию вставлять, а пробовал в самом цикле все расписать.
но почему-то этого не наблюдается и как реализовать не пойму