Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --------------------------------------------------------------------------------------------------
- -- Distributed under the Creative Commons Attribution-NonCommercial 4.0 International license --
- -- Version: (release) 1.0.0 --
- -- Original author: Kacper "MrTasty (aka Addon)" Stasiak --
- -- Special thanks to: Doomed_Space_Marine (useful functions) --
- -- robhol (useful functions) --
- --------------------------------------------------------------------------------------------------
- --Features
- local enableBlips = true
- local renderNorthBlip = false
- local alwaysRenderMap = false --true = always render map, false = only render when in interior world 0 (radar will stay, only the map will stop rendering)
- local alwaysRenderOxygen = false --true = always render oxygen, false = only when oxygen not full/local player in water
- local disableGTASAhealth = true --Disable GTASA's HUD health display
- local disableGTASAarmor = true --Disable GTASA's HUD armour display
- local disableGTASAoxygen = true --Disable GTASA's HUD oxygen display
- --Dimensions & Sizes
- local worldW, worldH = 2832, 2832 --map image dimensions - if map image changed, please edit appropriately
- local blip = 15 --Blip size, pixels relative to 1366x768 resolution
- ------------------------------------------------------------------------------------
- --Do not modify anything below unless you're absolutely sure of what you're doing.--
- ------------------------------------------------------------------------------------
- local sx, sy = guiGetScreenSize()
- local rt = dxCreateRenderTarget(290, 175)
- local xFactor, yFactor = sx/1366, sy/768
- local yFactor = xFactor --otherwise the radar looses it's 2:3 ratio.
- -- Useful functions --
- function findRotation(x1,y1,x2,y2) --Author: Doomed_Space_Marine & robhol
- local t = -math.deg(math.atan2(x2-x1,y2-y1))
- if t < 0 then t = t + 360 end;
- return t;
- end
- function getPointFromDistanceRotation(x, y, dist, angle) --Author: robhol
- local a = math.rad(90 - angle);
- local dx = math.cos(a) * dist;
- local dy = math.sin(a) * dist;
- return x+dx, y+dy;
- end
- function drawRadar()
- if getPedOccupiedVehicle(localPlayer) then
- setPlayerHudComponentVisible("radar", false)
- if disableGTASAhealth then setPlayerHudComponentVisible("health", false) end
- if disableGTASAarmor then setPlayerHudComponentVisible("armour", false) end
- if disableGTASAoxygen then setPlayerHudComponentVisible("breath", false) end
- if (not isPlayerMapVisible()) then
- local mW, mH = dxGetMaterialSize(rt)
- local x, y = getElementPosition(localPlayer)
- local X, Y = mW/2 -(x/(6000/worldW)), mH/2 +(y/(6000/worldH))
- local camX,camY,camZ = getElementRotation(getCamera())
- dxSetRenderTarget(rt, true)
- if alwaysRenderMap or getElementInterior(localPlayer) == 0 then
- dxDrawRectangle(0, 0, mW, mH, 0xFF7CA7D1) --render background
- dxDrawImage(X - worldW/2, mH/5 + (Y - worldH/2), worldW, worldH, "image/world.jpg", camZ, (x/(6000/worldW)), -(y/(6000/worldH)), tocolor(255, 255, 255, 255))
- end
- dxSetRenderTarget()
- dxDrawRectangle((9)*xFactor, sy-((220+3))*yFactor, (275)*xFactor, (165)*yFactor, tocolor(0, 0, 0, 150))
- dxDrawImage((09)*xFactor, sy-((220+3))*yFactor, (285-10)*xFactor, (165)*yFactor, rt, 0, 0, 0, tocolor(255, 255, 255, 150))
- local health = math.max(math.min(getElementHealth(localPlayer)/(0.232018558500192*getPedStat(localPlayer, 24) -32.018558511152), 1), 0)
- local armor = math.max(math.min(getPedArmor(localPlayer)/100, 1), 0)
- local oxygen = math.max(math.min(getPedOxygenLevel(localPlayer)/(1.5*getPedStat(localPlayer, 225) +1000), 1), 0)
- local r, g, b
- if health >= 0.25 then
- else
- end
- if alwaysRenderOxygen or (oxygen < 1 or isElementInWater(localPlayer)) then
- else
- end
- local rx, ry, rz = getElementRotation(localPlayer)
- local lB = (15)*xFactor
- local rB = (3+275)*xFactor
- local tB = sy-(230)*yFactor
- local bB = tB + (175)*yFactor
- local cX, cY = (rB+lB)/2, (tB+bB)/2 +(35)*yFactor
- local toLeft, toTop, toRight, toBottom = cX-lB, cY-tB, rB-cX, bB-cY
- for k, v in ipairs(getElementsByType("blip")) do
- local bx, by = getElementPosition(v)
- local actualDist = getDistanceBetweenPoints2D(x, y, bx, by)
- local maxDist = getBlipVisibleDistance(v)
- if actualDist <= maxDist and getElementDimension(v)==getElementDimension(localPlayer) and getElementInterior(v)==getElementInterior(localPlayer) then
- local dist = actualDist/(6000/((worldW+worldH)/2))
- local rot = findRotation(bx, by, x, y)-camZ
- local bpx, bpy = getPointFromDistanceRotation(cX, cY, math.min(dist, math.sqrt(toTop^2 + toRight^2)), rot)
- local bpx = math.max(lB, math.min(rB, bpx))
- local bpy = math.max(tB, math.min(bB, bpy))
- local bid = getElementData(v, "customIcon") or getBlipIcon(v)
- local _, _, _, bcA = getBlipColor(v)
- local bcR, bcG, bcB = 255, 255, 255
- if getBlipIcon(v) == 0 then
- bcR, bcG, bcB = getBlipColor(v)
- end
- local bS = getBlipSize(v)
- dxDrawImage(bpx -(blip*bS)*xFactor/2, bpy -(blip*bS)*yFactor/2, (blip*bS)*xFactor, (blip*bS)*yFactor, "image/blip/"..bid..".png", 0, 0, 0, tocolor(bcR, bcG, bcB, bcA))
- end
- end
- if renderNorthBlip then
- local rot = -camZ+180
- local bpx, bpy = getPointFromDistanceRotation(cX, cY, math.sqrt(toTop^2 + toRight^2), rot) --get position
- local bpx = math.max(lB, math.min(rB, bpx))
- local bpy = math.max(tB, math.min(bB, bpy)) --cap position to screen
- local dist = getDistanceBetweenPoints2D(cX, cY, bpx, bpy) --get distance to the capped position
- local bpx, bpy = getPointFromDistanceRotation(cX, cY, dist, rot) --re-calculate position based on new distance
- if bpx and bpy then --if position was obtained successfully
- local bpx = math.max(lB, math.min(rB, bpx))
- local bpy = math.max(tB, math.min(bB, bpy)) --cap position just in case
- dxDrawImage(bpx -(blip*2)/2, bpy -(blip*2)/2, blip*2, blip*2, "image/blip/4.png", 0, 0, 0) --draw north (4) blip
- local vida1 = math.floor(getElementHealth(getLocalPlayer()))
- local vida2 = getPedMaxHealth(getLocalPlayer())
- local colete = math.floor(getPedArmor(getLocalPlayer()))
- dxDrawRectangle(x*11, y*715, x*89, y*12, tocolor(255, 0, 0, 150), false)
- dxDrawRectangle(x*11, y*715, x*89/vida2*vida1, y*12, tocolor(255, 0, 0, 255), false)
- dxDrawRectangle(x*102, y*715, x*89, y*12, tocolor(89, 89, 89, 150), false)
- dxDrawRectangle(x*102, y*715, x*89/100*colete, y*12, tocolor(100, 100, 100, 255), false)
- end
- end
- dxDrawImage(cX -(blip*2)*xFactor/2, cY -(blip*2)*yFactor/2, (blip*2)*xFactor, (blip*2)*yFactor, "image/player.png", camZ-rz, 0, 0)
- end
- end
- end
- addEventHandler("onClientRender", root, drawRadar)
- addEventHandler("onClientResourceStop", resourceRoot, function()
- setPlayerHudComponentVisible("radar", false)
- if disableGTASAhealth then setPlayerHudComponentVisible("health", false) end
- if disableGTASAarmor then setPlayerHudComponentVisible("armour", false) end
- if disableGTASAoxygen then setPlayerHudComponentVisible("breath", false) end
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement