маски lua

coderko61

Участник
Автор темы
55
0
помогите, горит жопа уже. написал рендер масок, он показывает маски не только на окружающих. но и на самом себе.

Lua:
font = renderCreateFont('Century Gothic', 12, 5)
function main()
while not isSampAvailable() do wait(0) end wait(1)
while true do
wait(0)
for _, v in pairs(getAllObjects()) do
local asd
if sampGetObjectSampIdByHandle(v) ~= -1 then
asd = sampGetObjectSampIdByHandle(v)
end
if isObjectOnScreen(v) then
local result, oX, oY, oZ = getObjectCoordinates(v)
local x1, y1 = convert3DCoordsToScreen(oX,oY,oZ)
local objmodel = getObjectModel(v)
local x2,y2,z2 = getCharCoordinates(PLAYER_PED)
local x10, y10 = convert3DCoordsToScreen(x2,y2,z2)
distance = string.format("%.0f", getDistanceBetweenCoords3d(oX,oY,oZ, x2, y2, z2))

local touchobj = isCharTouchingObject(PLAYER_PED, objmodel)

if touchobj then return break else
if objmodel == 18974 or objmodel == 19036 or objmodel == 19037 or objmodel == 19038 or objmodel == 19801 then renderFontDrawText(font,"{ff0000}В маске!\nДистанция: "..distance, x1, y1, -1) end
end

end
end
end
end
 

coderko61

Участник
Автор темы
55
0
Проверяй дистанцию между персонажем и маской, если меньше допустим 1м, то она не отрисуеться
проверял, я ранее сделал так

Lua:
if distance > 1 then
if objmodel == 18974 or objmodel == 19036 or objmodel == 19037 or objmodel == 19038 or objmodel == 19801 then renderFontDrawText(font,"{ff0000}В маске!\nДистанция: "..distance, x1, y1, -1) end
end

он выводит дистанцию всех объектов, не только - нужного мне. так не получится, наверное. мне посоветовали isCharTouchingObject. вышло. что вышло. одним словом, нечего
 

Rovi

Известный
68
22
проверял, я ранее сделал так

Lua:
if distance > 1 then
if objmodel == 18974 or objmodel == 19036 or objmodel == 19037 or objmodel == 19038 or objmodel == 19801 then renderFontDrawText(font,"{ff0000}В маске!\nДистанция: "..distance, x1, y1, -1) end
end

он выводит дистанцию всех объектов, не только - нужного мне. так не получится, наверное. мне посоветовали isCharTouchingObject. вышло. что вышло. одним словом, нечего
Потому что у тебя distance расположен не внутри проверки по модели объекта, по этому он выводил дистанцию каждого обьекта

Попробуй этот
Lua:
font = renderCreateFont('Century Gothic', 12, 5)
function main()
    while not isSampAvailable() do wait(0) end
    while true do wait(0)
        for _, v in pairs(getAllObjects()) do
            local asd
            if sampGetObjectSampIdByHandle(v) ~= -1 then
                asd = sampGetObjectSampIdByHandle(v)
            end
            if isObjectOnScreen(v) then
                local x2, y2, z2 = getCharCoordinates(PLAYER_PED)
                local x10, y10 = convert3DCoordsToScreen(x2, y2, z2)
                if objmodel == 18974 or objmodel == 19036 or objmodel == 19037 or objmodel == 19038 or objmodel == 19801 then
                    local result, oX, oY, oZ = getObjectCoordinates(v)
                    local x1, y1 = convert3DCoordsToScreen(oX, oY, oZ)
                    distance = string.format("%.0f", getDistanceBetweenCoords3d(oX, oY, oZ, x2, y2, z2))
                    if result and distance > 1 then
                        renderFontDrawText(font,"{ff0000}В маске!\nДистанция: "..distance, x1, y1, -1)
                    end
                end
            end
        end
    end
end
 

coderko61

Участник
Автор темы
55
0
Потому что у тебя distance расположен не внутри проверки по модели объекта, по этому он выводил дистанцию каждого обьекта

Попробуй этот
Lua:
font = renderCreateFont('Century Gothic', 12, 5)
function main()
    while not isSampAvailable() do wait(0) end
    while true do wait(0)
        for _, v in pairs(getAllObjects()) do
            local asd
            if sampGetObjectSampIdByHandle(v) ~= -1 then
                asd = sampGetObjectSampIdByHandle(v)
            end
            if isObjectOnScreen(v) then
                local x2, y2, z2 = getCharCoordinates(PLAYER_PED)
                local x10, y10 = convert3DCoordsToScreen(x2, y2, z2)
                if objmodel == 18974 or objmodel == 19036 or objmodel == 19037 or objmodel == 19038 or objmodel == 19801 then
                    local result, oX, oY, oZ = getObjectCoordinates(v)
                    local x1, y1 = convert3DCoordsToScreen(oX, oY, oZ)
                    distance = string.format("%.0f", getDistanceBetweenCoords3d(oX, oY, oZ, x2, y2, z2))
                    if result and distance > 1 then
                        renderFontDrawText(font,"{ff0000}В маске!\nДистанция: "..distance, x1, y1, -1)
                    end
                end
            end
        end
    end
end
нет, не работает, вообще никаких масок не показывает. может, тут нужен isCharTouchingObject? но у меня не вышло

А для чего именно нужен рендер масок?
неожиданностей что бы не было