Nodward_Nichrome Posted June 27, 2011 Share Posted June 27, 2011 Собственно вопрос заключается в следующем: с использованием данной функции хотел определить виден ли элемент на экране. Функция вроде как работает, но почему то видит элемент через объекты. Пример: Ник персонажа Cooper виден через стену здания: Вот собственно и сам персонаж Cooper, который был виден с помощью этой функции через стену: Исходник: ttext1 = dxText:create("Mike",-70,70,false) ttext1:font("tahoma") ttext1:scale(2) ttext1:type("border", 2, 0, 0, 0, 255) ttext1:color(5,97,250,200) ttext2 = dxText:create("Rachel",-70,70,false) ttext2:font("tahoma") ttext2:scale(2) ttext2:type("border", 2, 0, 0, 0, 255) ttext2:color(5,97,250,200) ttext3 = dxText:create("Will",-70,70,false) ttext3:font("tahoma") ttext3:scale(2) ttext3:type("border", 2, 0, 0, 0, 255) ttext3:color(5,97,250,200) ttext4 = dxText:create("Cooper",-70,70,false) ttext4:font("tahoma") ttext4:scale(2) ttext4:type("border", 2, 0, 0, 0, 255) ttext4:color(5,97,250,200) function NameTags () local peds = getElementsByType("ped") for id,p in ipairs(peds) do if (getElementData (p, "team") == "surv") then local mx,my,mz = getElementPosition(p) local sx,sy = getScreenFromWorldPosition ( mx, my, mz) if (getElementData (p, "zclass") == "nick") then if isElementOnScreen ( p ) then ttext1:position(sx,sy - 110,false) ttext1:visible(true) else ttext1:visible(false) end elseif (getElementData (p, "zclass") == "alice") then if isElementOnScreen ( p ) then ttext2:position(sx,sy - 110,false) ttext2:visible(true) else ttext2:visible(false) end elseif (getElementData (p, "zclass") == "will") then if isElementOnScreen ( p ) then ttext3:position(sx,sy - 110,false) ttext3:visible(true) else ttext3:visible(false) end elseif (getElementData (p, "zclass") == "coach") then if isElementOnScreen ( p ) then ttext4:position(sx,sy - 110,false) ttext4:visible(true) else ttext4:visible(false) end end end end end addEventHandler ( "onClientPreRender", getRootElement(), NameTags ) Есть ли возможность сделать так, чтобы через стены не было видно тэги персов? --- чтобы код подсвечивался как LUA, можно юзать ВВ код [cоde=lua][/cоde] Link to comment
MX_Master Posted June 28, 2011 Share Posted June 28, 2011 эта функция не проверяет видимость, она только проверяет находится ли элемент в пределах экрана. Поэтому элемент может находится в зоне экрана, но перекрываться другими объектами и быть не видим. Чтобы проверить еще и видимость объекта от камеры игрока до нужного элемента, нужно заюзать https://wiki.multitheftauto.com/wiki/IsLineOfSightClear. Она проверяет видимость и перекрываемость разными элементами, нужные типы элементов/объектов можно указать. Просто узнаешь позицию камеры и позицию, допустим головы другого игрока и подставляешь эти позиции в эту функцию. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now