Turbe$Z Posted May 27, 2017 Share Posted May 27, 2017 (edited) i created a 'circle-hud' but it does not work well this is the problem: (when my Health = 14hp) and when my Health = 100hp the 100hp is fine, but the 14 hp not... i want something like that when my hp <100 how to fix this? Edited May 28, 2017 by Dutchman101 Fix topic title for section requirements Link to comment
pa3ck Posted May 27, 2017 Share Posted May 27, 2017 I think the problem is at line 129, after the loop, inside the if but right after a trigger. Link to comment
Turbe$Z Posted May 27, 2017 Author Share Posted May 27, 2017 6 minutes ago, pa3ck said: I think the problem is at line 129, after the loop, inside the if but right after a trigger. dxDrawImage(screenW * 0.9583, screenH * 0.0022, screenW * 0.0361, screenH * 0.0005*playerHealth, "egyedi/hp_full.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) this is the code Link to comment
pa3ck Posted May 27, 2017 Share Posted May 27, 2017 Yea, that's a bit better, but no, it's not dxDrawImage what you're looking for. You will need to use dxDrawImageSection Link to comment
Turbe$Z Posted May 27, 2017 Author Share Posted May 27, 2017 10 minutes ago, pa3ck said: Yea, that's a bit better, but no, it's not dxDrawImage what you're looking for. You will need to use dxDrawImageSection how can i make this to dxDrawImageSection? Link to comment
pa3ck Posted May 27, 2017 Share Posted May 27, 2017 (edited) Try to use the example first, that should get you started. You will need to set the "vsize" parameter depending on the player's health. You can easily calculate that like this: local health = getElementHealth(localPlayer) local myIconHeight = 120 --pixels local vSize = myIconHeight / 100 * health If you can't figure it out, come back with the code you tried (for the dxDrawImageSection). Edited May 27, 2017 by pa3ck Link to comment
Turbe$Z Posted May 27, 2017 Author Share Posted May 27, 2017 13 minutes ago, pa3ck said: Try to use the example first, that should get you started. You will need to set the "vsize" parameter depending on the player's health. You can easily calculate that like this: local health = getElementHealth(localPlayer) local myIconHeight = 120 --pixels local vSize = myIconHeight / 100 * health If you can't figure it out, come back with the code you tried (for the dxDrawImageSection). i tried with the example code, but does not work well too addEventHandler('onClientRender', root, function() local health = getElementHealth(localPlayer) local myIconHeight = 120 --pixels local vSize = myIconHeight / 100 * health dxDrawImageSection(400, 200, 64, 64, 0, 0, myIconHeight, vSize, 'egyedi/hp_full.png') dxDrawImage(400, 300, 128, 128, 'egyedi/hp_full.png') end) Link to comment
pa3ck Posted May 27, 2017 Share Posted May 27, 2017 local scrX, scrY = guiGetScreenSize() local hudS = {} hudS.bgX = scrX - 300 -- X position of background hudS.bgY = 20 -- Y position of background hudS.bgW = 128 -- background width (img size in pixels) hudS.bgH = 128 -- background height (img size in pixels) hudS.fX = scrX - 275 -- X position of fill hudS.fY = 51 -- Y position of fill hudS.fW = 78 -- fill width (img size in pixels) hudS.fH = 66 -- fill height (img size in pixels) addEventHandler("onClientResourceStart", resourceRoot, function() addEventHandler("onClientRender", root, function() dxDrawImage(hudS.bgX, hudS.bgY, hudS.bgW, hudS.bgH, "heart_bg.png") local currHeight = hudS.fH / 100 * getElementHealth(localPlayer) dxDrawImageSection(hudS.fX, hudS.fY, hudS.fW, currHeight, 0, 0, hudS.fW, currHeight, "heart_fill.png") end) end) https://i.imgur.com/z2qzSA8.png http://imgur.com/6gOIw5i Change the images and width/height, X/Y positions. 2 Link to comment
Turbe$Z Posted May 27, 2017 Author Share Posted May 27, 2017 14 minutes ago, pa3ck said: local scrX, scrY = guiGetScreenSize() local hudS = {} hudS.bgX = scrX - 300 -- X position of background hudS.bgY = 20 -- Y position of background hudS.bgW = 128 -- background width (img size in pixels) hudS.bgH = 128 -- background height (img size in pixels) hudS.fX = scrX - 275 -- X position of fill hudS.fY = 51 -- Y position of fill hudS.fW = 78 -- fill width (img size in pixels) hudS.fH = 66 -- fill height (img size in pixels) addEventHandler("onClientResourceStart", resourceRoot, function() addEventHandler("onClientRender", root, function() dxDrawImage(hudS.bgX, hudS.bgY, hudS.bgW, hudS.bgH, "heart_bg.png") local currHeight = hudS.fH / 100 * getElementHealth(localPlayer) dxDrawImageSection(hudS.fX, hudS.fY, hudS.fW, currHeight, 0, 0, hudS.fW, currHeight, "heart_fill.png") end) end) https://i.imgur.com/z2qzSA8.png http://imgur.com/6gOIw5i Change the images and width/height, X/Y positions. thanks and i can add oxygen, and armor? Link to comment
pa3ck Posted May 27, 2017 Share Posted May 27, 2017 Sure, if you follow the same structure of the code (setting the X/Y, width/height) correctly, you should be able to add more. The calculation for armor is the same, imageHeight / 100 * armor, but for the oxygen, the maximum value is 1000, so it will be imageHeight / 1000 * oxygenLevel 1 Link to comment
DNL291 Posted May 27, 2017 Share Posted May 27, 2017 I don't know if you have already tested it, but this code will leave your health bar inverted, compared to this one: 4 hours ago, Turbo777 said: You can try to fix it using this way (with @pa3ck's code): dxDrawImageSection( hudS.fX, hudS.fY + (hudS.fH - currHeight), hudS.fW, currHeight, 0, hudS.fH - currHeight, hudS.fW, currHeight, "heart_fill.png" ) Also, keep in mind that the health bar should get bugged if player's health is above 100%, so I recommend you to use this function: https://wiki.multitheftauto.com/wiki/GetPedMaxHealth You can do it for the oxygen as well (use getPedMaxOxygenLevel). Link to comment
Turbe$Z Posted May 28, 2017 Author Share Posted May 28, 2017 10 hours ago, pa3ck said: Sure, if you follow the same structure of the code (setting the X/Y, width/height) correctly, you should be able to add more. The calculation for armor is the same, imageHeight / 100 * armor, but for the oxygen, the maximum value is 1000, so it will be imageHeight / 1000 * oxygenLevel Sorry, but you can send me a 'long-shadow' image about oxygen? I can not find anywhere Link to comment
Turbe$Z Posted May 28, 2017 Author Share Posted May 28, 2017 12 hours ago, pa3ck said: Sure, if you follow the same structure of the code (setting the X/Y, width/height) correctly, you should be able to add more. The calculation for armor is the same, imageHeight / 100 * armor, but for the oxygen, the maximum value is 1000, so it will be imageHeight / 1000 * oxygenLevel What wrong with this? hudS.bgX = scrX - 60 -- X position of background hudS.bgY = 4 -- Y position of background hudS.bgW = 52 -- background width (img size in pixels) hudS.bgH = 52 -- background height (img size in pixels) hudS.fX = scrX - 275 -- X position of fill hudS.fY = 51 -- Y position of fill hudS.fW = 52 -- fill width (img size in pixels) hudS.fH = 52 -- fill height (img size in pixels) dxDrawImage(hudS.bgX-60, hudS.bgY, hudS.bgW, hudS.bgH, "shield_bg.png") local currHeight2 = 66 / 100 * getPedArmor ( getLocalPlayer() ) dxDrawImageSection(hudS.fX+163, hudS.fY-39, hudS.fW, currHeight2, 0, 0, hudS.fW+65, currHeight+195, "asda.png") and this is the problem: how to fix? 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