Dzsozi (h03) Posted November 30, 2014 Share Posted November 30, 2014 Hello! I made a script that adds a little "bullet smoke" effect for the guns, I made it to fade away then remove the rendering. My only problem is that if I keep shooting then sometimes it's not visible, or it's just visible for a little time. How could I fix it? I used @Dealman's (Click) and the wiki's example and mixed it. local fadingAlpha = 200; -- Set this to the value where you want it to start fading from. local fadingAlphaFrom = fadingAlpha; local fadingDuration = 250; -- Set this for how long you want it to go from fully visible to not visible (255 -> 0). Milliseconds. local fadingInterval = 50; -- Set this for how often it should detract the increments. 50 ms minimum. Less = Smoother local timesToRun = (fadingDuration/fadingInterval); -- This is just to make the code below somewhat auto, so you don't have to change values everywhere. local fadeIncremental = (fadingAlphaFrom/timesToRun); -- This is just to make the code below somewhat auto, so you don't have to change values everywhere. function OnPlayerFire(w,a,aC,hX,hY,hZ,hE) --setTimer(function() local sx,sy,sz = getPedWeaponMuzzlePosition(source)-- get the WeaponMuzzlePosition of the Player who shot Position = {sx,sy,sz,hX,hY,hZ} -- save it in a table so we can use it later in 'onClientRender'function --removeEventHandler("onClientRender", root, onRender) addEventHandler("onClientRender",root,onRender) -- add the onClientRender-Event to the function onRender alphaHandler() setTimer(function() removeEventHandler("onClientRender", root, onRender) end, fadingDuration, 1); --end, 250, 0); end addEventHandler("onClientPlayerWeaponFire",root,OnPlayerFire); function onRender() if Position then -- check if there are Positions available local startX,startY,startZ,endX,endY,endZ = unpack(Position)-- unpack the Position table dxDrawLine3D( startX,startY,startZ,endX,endY,endZ,tocolor(150,150,150,fadingAlpha),0.75) -- draws the 3D line between start-Position and end-Position end -- end of if end function alphaHandler() fadingAlpha = 200; setTimer(function() fadingAlpha = fadingAlpha-fadeIncremental end, fadingInterval, timesToRun); end Thank you in advance! Link to comment
Dealman Posted November 30, 2014 Share Posted November 30, 2014 I would assume there are some issues with the timers, try to delay this one like this - see if it gets any better; setTimer(function() removeEventHandler("onClientRender", root, onRender) end, fadingDuration+50, 1); Link to comment
Dzsozi (h03) Posted November 30, 2014 Author Share Posted November 30, 2014 Thank you, it fixed the problem! Thank's again! 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