Advertisement
Guest User

Untitled

a guest
Jun 21st, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1.  
  2.  
  3. removeEventHandler("onClientRender", root, Nametag:getSingleton().m_Draw, true, "high")
  4. function Nametag:draw()
  5. if DEBUG then ExecTimeRecorder:getSingleton():startRecording("3D/Nametag") end
  6. local cx,cy,cz = getCameraMatrix()
  7. local bRifleCheck = self:_weaponCheck()
  8. local lpX, lpY, lpZ = getElementPosition(localPlayer)
  9. for _, player in pairs(getElementsByType("player", root, true)) do
  10. if player ~= localPlayer then
  11. if DEBUG then ExecTimeRecorder:getSingleton():addIteration("3D/Nametag") end
  12. setPlayerNametagShowing(player, false)
  13. local pX, pY, pZ = getElementPosition(player)
  14. local phX, phY, phZ = player:getBonePosition(8)
  15. local bDistance = getDistanceBetweenPoints3D(cx,cy,cz, pX, pY, pZ)
  16. if bRifleCheck == player then bDistance = 10 end -- fix the distance if the localPlayer aims at the specific player
  17. if not localPlayer:isLoggedIn() then return false end
  18. if (bDistance <= maxDistance) or localPlayer:getPrivateSync("isSpecting") then
  19. local scx,scy = getScreenFromWorldPosition(pX, pY, pZ + 1.2)
  20. if scx and scy then
  21. local bLineOfSight = isLineOfSightClear(cx, cy, cz, phX, phY, phZ, true, false, false, true, false, false, false, localPlayer)
  22. if bLineOfSight or localPlayer:getPrivateSync("isSpecting") then
  23. local drawName = getPlayerName(player)
  24. local wanteds = player:getWanteds()
  25. local size = math.max(0.5, 1 - bDistance/maxDistance)*0.9
  26. local alpha = localPlayer:getPrivateSync("isSpecting") and 1 or math.min(1, 1 - (bDistance - maxDistance*0.5)/(maxDistance - maxDistance*0.5))
  27. local r,g,b = self:getColorFromHP(getElementHealth(player), getPedArmor(player))
  28. local textWidth = dxGetTextWidth(drawName, 1.5*size, Nametag.font)
  29. local fontHeight = dxGetFontHeight(1.5*size,Nametag.font)
  30.  
  31. if self:drawIcons(player, scx, scy, fontHeight, alpha) then
  32. scy = scy - fontHeight
  33. end
  34. if wanteds > 0 then
  35. dxDrawImage(scx - textWidth/2 - fontHeight*2, scy - fontHeight*1.1, fontHeight*2.2, fontHeight*2.2, "files/images/Nametag/wanted.png", 0, 0, 0, tocolor(200, 150, 0, 255*alpha))
  36. dxDrawText(wanteds, scx - textWidth/2 - fontHeight*2, scy - fontHeight*1.1, ( scx - textWidth/2 - fontHeight*2 )+ fontHeight*2.2, (scy - fontHeight*1.1)+ fontHeight*2.4, tocolor(0, 0, 0, 255*alpha), 1.5*size, Nametag.font, "center", "center")
  37. --dxDrawText(wanteds, scx - textWidth/2 - fontHeight, scy, nil, nil, tocolor(255, 255, 255, 255*alpha), 1.5*size, Nametag.font, "center", "center")
  38. scx = scx + fontHeight
  39. end
  40. if DEBUG then ExecTimeRecorder:getSingleton():addIteration("3D/Nametag", true) end
  41. dxDrawText(player:getName(), scx + 1,scy + 1, nil, nil, tocolor(0, 0, 0, 255*alpha), 2*size, Nametag.font, "center", "center")
  42. dxDrawText(player:getName(), scx,scy, nil, nil, tocolor(r, g, b, 255*alpha), 2*size, Nametag.font, "center", "center")
  43. end
  44. end
  45. end
  46. end
  47. end
  48. if DEBUG then ExecTimeRecorder:getSingleton():endRecording("3D/Nametag") end
  49. end
  50.  
  51. addEventHandler("onClientRender", root, Nametag:getSingleton().m_Draw, true, "high")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement