Ближайший игрок

jeffrY.

Участник
Автор темы
40
9
Версия MoonLoader
.026-beta
Привет. Как можно узнать ид ближайшего к себе игрока? Если можно, скиньте пример кода. Буду очень признателен!
 
Решение
Если будет найден игрок ближайший, вернёт его ID, если нет, то nil значение.

Lua:
function getNearestID()
    local chars = getAllChars()
    local mx, my, mz = getCharCoordinates(PLAYER_PED)
    local nearId, dist = nil, 10000
    for i,v in ipairs(chars) do
        if doesCharExist(v) and v ~= PLAYER_PED then
            local vx, vy, vz = getCharCoordinates(v)
            local cDist = getDistanceBetweenCoords3d(mx, my, mz, vx, vy, vz)
            local r, id = sampGetPlayerIdByCharHandle(v)
            if r and cDist < dist then
                dist = cDist
                nearId = id
            end
        end
    end
    return nearId
end

Использование:

Lua:
local id = getNearestID()
if id then
     -- Действие с...

LLIKOJIbHUK

Потрачен
1,133
572
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

LLIKOJIbHUK

Потрачен
1,133
572
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

Hatiko

Известный
Проверенный
1,513
630
Если будет найден игрок ближайший, вернёт его ID, если нет, то nil значение.

Lua:
function getNearestID()
    local chars = getAllChars()
    local mx, my, mz = getCharCoordinates(PLAYER_PED)
    local nearId, dist = nil, 10000
    for i,v in ipairs(chars) do
        if doesCharExist(v) and v ~= PLAYER_PED then
            local vx, vy, vz = getCharCoordinates(v)
            local cDist = getDistanceBetweenCoords3d(mx, my, mz, vx, vy, vz)
            local r, id = sampGetPlayerIdByCharHandle(v)
            if r and cDist < dist then
                dist = cDist
                nearId = id
            end
        end
    end
    return nearId
end

Использование:

Lua:
local id = getNearestID()
if id then
     -- Действие с ближайшим игроком
else
    -- Ближайший игрок не найден
end