Ближайшее авто от чекпоинта

Карен

Участник
Автор темы
112
17
Версия MoonLoader
.026-beta
Здарова пацаны, ебусь с этим вопросом довольно долго, мне нужно найти ближайшее т.с от красного пикапа или чекпоинта хз как он там называется, крч нужен хендл самого ближйшего тс не от меня а от метки думаю вы поняли
1693489457141.png
 

whyega52

Гений, миллионер, плейбой, долбаеб
Модератор
2,798
2,659

Карен

Участник
Автор темы
112
17
если у тебя уже есть код для получения ближайшего тс от себя, то просто перенести в него координаты чекпоинта
Я не могу найти координаты метки, были бы они я все сделал бы
 

bulba$h

Активный
327
92
Я не могу найти координаты метки, были бы они я все сделал бы
Lua:
function SearchMarker(posX, posY, posZ, radius, isRace)
    local ret_posX = 0.0
    local ret_posY = 0.0
    local ret_posZ = 0.0
    local isFind = false

    for id = 0, 31 do
        local MarkerStruct = 0
        if isRace then MarkerStruct = 0xC7F168 + id * 56
        else MarkerStruct = 0xC7DD88 + id * 160 end
        local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false))
        local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false))
        local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false))

        if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then
            if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then
                ret_posX = MarkerPosX
                ret_posY = MarkerPosY
                ret_posZ = MarkerPosZ
                isFind = true
                radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ)
            end
        end
    end

    return isFind, ret_posX, ret_posY, ret_posZ
end

в самом коде:
local res, x, y, z = SearchMarker(posX, posY, posZ, 100.0, false)
if res then
— code
 

Карен

Участник
Автор темы
112
17
Lua:
function SearchMarker(posX, posY, posZ, radius, isRace)
    local ret_posX = 0.0
    local ret_posY = 0.0
    local ret_posZ = 0.0
    local isFind = false

    for id = 0, 31 do
        local MarkerStruct = 0
        if isRace then MarkerStruct = 0xC7F168 + id * 56
        else MarkerStruct = 0xC7DD88 + id * 160 end
        local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false))
        local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false))
        local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false))

        if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then
            if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then
                ret_posX = MarkerPosX
                ret_posY = MarkerPosY
                ret_posZ = MarkerPosZ
                isFind = true
                radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ)
            end
        end
    end

    return isFind, ret_posX, ret_posY, ret_posZ
end

в самом коде:
local res, x, y, z = SearchMarker(posX, posY, posZ, 100.0, false)
if res then
— code
там где в функции posX, posY, posZ нужно вписывать свои координаты?
 
  • Нравится
Реакции: MrRazrab

MrDorlik

Известный
957
385
там где в функции posX, posY, posZ нужно вписывать свои координаты?
хоть какие, функция находит маркер в заданном радиусе от posx posy posz, укажешь свои - будет искать в радиусе от тебя, ты код читал вообще?
 

Карен

Участник
Автор темы
112
17
хоть какие, функция находит маркер в заданном радиусе от posx posy posz, укажешь свои - будет искать в радиусе от тебя, ты код читал вообще?
Да я так и сделал, просто не работает
Находит самую дальнюю машину от чекпоинта
 

Карен

Участник
Автор темы
112
17
Lua:
function getClosestVehInCamera()
    local x, y, z = getCharCoordinates(PLAYER_PED)
    local pX, pY, pZ = SearchMarker(x, y, z, 100.0, false)
    local minDist = 999
    local veh
    for k, v in ipairs(getAllVehicles()) do
        local cX, cY, cZ  = getCarCoordinates(v)
        if isPointOnScreen(cX, cY, cZ, minDist) then
            if minDist <= getDistanceBetweenCoords3d(pX, pY, pZ, cX, cY, cZ) then
                minDist = getDistanceBetweenCoords3d(pX, pY, pZ, cX, cY, cZ)
                veh = v
            end
        end
    end
    return veh, minDist
end
 

MrDorlik

Известный
957
385
Lua:
function getClosestVehInCamera()
    local x, y, z = getCharCoordinates(PLAYER_PED)
    local pX, pY, pZ = SearchMarker(x, y, z, 100.0, false)
    local minDist = 999
    local veh
    for k, v in ipairs(getAllVehicles()) do
        local cX, cY, cZ  = getCarCoordinates(v)
        if isPointOnScreen(cX, cY, cZ, minDist) then
            if minDist <= getDistanceBetweenCoords3d(pX, pY, pZ, cX, cY, cZ) then
                minDist = getDistanceBetweenCoords3d(pX, pY, pZ, cX, cY, cZ)
                veh = v
            end
        end
    end
    return veh, minDist
end
знак сравнения в обратную сторону
 

Карен

Участник
Автор темы
112
17
Lua:
function getClosestVehInCamera()
    local x, y, z = getCharCoordinates(PLAYER_PED)
    local pX, pY, pZ = SearchMarker(x, y, z, 100.0, false)
    local minDist = 999
    local veh
    for k, v in ipairs(getAllVehicles()) do
        local cX, cY, cZ  = getCarCoordinates(v)
        if isPointOnScreen(cX, cY, cZ, minDist) then
            if minDist >= getDistanceBetweenCoords3d(pX, pY, pZ, cX, cY, cZ) then
                minDist = getDistanceBetweenCoords3d(pX, pY, pZ, cX, cY, cZ)
                veh = v
            end
        end
    end
    return veh, minDist
end
 

bulba$h

Активный
327
92
Lua:
function getClosestVehInCamera()
    local x, y, z = getCharCoordinates(PLAYER_PED)
    local pX, pY, pZ = SearchMarker(x, y, z, 100.0, false)
    local minDist = 999
    local veh
    for k, v in ipairs(getAllVehicles()) do
        local cX, cY, cZ  = getCarCoordinates(v)
        if isPointOnScreen(cX, cY, cZ, minDist) then
            if minDist >= getDistanceBetweenCoords3d(pX, pY, pZ, cX, cY, cZ) then
                minDist = getDistanceBetweenCoords3d(pX, pY, pZ, cX, cY, cZ)
                veh = v
            end
        end
    end
    return veh, minDist
end
=>
 

Карен

Участник
Автор темы
112
17
1693494611072.png

Lua:
function getClosestVehInCamera()
    local x, y, z = getCharCoordinates(PLAYER_PED)
    local pX, pY, pZ = SearchMarker(x, y, z, 100.0, false)
    local minDist = 999
    local veh
    for k, v in ipairs(getAllVehicles()) do
        local cX, cY, cZ  = getCarCoordinates(v)
        if isPointOnScreen(cX, cY, cZ, minDist) then
            if minDist => getDistanceBetweenCoords3d(pX, pY, pZ, cX, cY, cZ) then
                minDist = getDistanceBetweenCoords3d(pX, pY, pZ, cX, cY, cZ)
                veh = v
            end
        end
    end
    return veh, minDist
end
135 строка если че тут 9