Jump to content

script using too much cpu


xTravax

Recommended Posts

-- custom functions 
function dxDrawCircle( posX, posY, radius, width, angleAmount, startAngle, stopAngle, color, postGUI ) 
    if ( type( posX ) ~= "number" ) or ( type( posY ) ~= "number" ) then 
        return false 
    end 
  
    local function clamp( val, lower, upper ) 
        if ( lower > upper ) then lower, upper = upper, lower end 
        return math.max( lower, math.min( upper, val ) ) 
    end 
  
    radius = type( radius ) == "number" and radius or 50 
    width = type( width ) == "number" and width or 5 
    angleAmount = type( angleAmount ) == "number" and angleAmount or 1 
    startAngle = clamp( type( startAngle ) == "number" and startAngle or 0, 0, 360 ) 
    stopAngle = clamp( type( stopAngle ) == "number" and stopAngle or 360, 0, 360 ) 
    color = color or tocolor( 255, 255, 255, 200 ) 
    postGUI = type( postGUI ) == "boolean" and postGUI or false 
  
    if ( stopAngle < startAngle ) then 
        local tempAngle = stopAngle 
        stopAngle = startAngle 
        startAngle = tempAngle 
    end 
  
    for i = startAngle, stopAngle, angleAmount do 
        local startX = math.cos( math.rad( i ) ) * ( radius - width ) 
        local startY = math.sin( math.rad( i ) ) * ( radius - width ) 
        local endX = math.cos( math.rad( i ) ) * ( radius + width ) 
        local endY = math.sin( math.rad( i ) ) * ( radius + width ) 
  
        dxDrawLine( startX + posX, startY + posY, endX + posX, endY + posY, color, width, postGUI ) 
    end 
  
    return true 
end 
  
  
  
--using custom functions partial circle 
pHealth = 100 
  
 setTimer(function() 
 pHealth = getElementHealth(localPlayer) 
 outputChatBox(pHealth) 
 end,50,1) 
  
 function onDamage() 
pHealth = getElementHealth(source) 
end 
addEventHandler ( "onClientPlayerDamage", getLocalPlayer(),onDamage) 
  
    function healthHud( ) 
    if getElementData(localPlayer,"UI") == "hidden" then return end 
    --local circle = getElementHealth(localPlayer) 
  
  
  
         
  
        dxDrawCircle( 200, 200, 52, 5, 1, 0, pHealth*3.6,tocolor(0,0,0,255) ) 
        dxDrawCircle( 200, 200, 44, 1, 1, 0, pHealth*3.6,tocolor(0,0,0,255) ) 
        dxDrawCircle( 200, 200, 50, 5, 1, 0, pHealth*3.6,tocolor(255,0,0,255) ) 
  
    end 
addEventHandler( "onClientRender", root,healthHud) 
  
  
function onDeath() 
pHealth = 0 
removeEventHandler("onClientRender",root,healthHud) 
end 
addEventHandler("onClientPlayerWasted",getLocalPlayer(),onDeath) 
  
function onSpawn() 
addEventHandler("onClientRender",root,healthHud) 
pHealth = getElementHealth(source) 
end 
addEventHandler("onClientPlayerSpawn",getLocalPlayer(),onSpawn) 

so its just a basic simple health circled hud and perfomancebrowser is reporting that this script is using 20-30% of client(me) cpu and when looking at server

i have no idea why, no debugscript 3 errors.

is it problem in me or i have to optimize the script somehow?

Link to comment
-- custom functions 
function dxDrawCircle( posX, posY, radius, width, angleAmount, startAngle, stopAngle, color, postGUI ) 
    if ( type( posX ) ~= "number" ) or ( type( posY ) ~= "number" ) then 
        return false 
    end 
  
    local function clamp( val, lower, upper ) 
        if ( lower > upper ) then lower, upper = upper, lower end 
        return math.max( lower, math.min( upper, val ) ) 
    end 
  
    radius = type( radius ) == "number" and radius or 50 
    width = type( width ) == "number" and width or 5 
    angleAmount = type( angleAmount ) == "number" and angleAmount or 1 
    startAngle = clamp( type( startAngle ) == "number" and startAngle or 0, 0, 360 ) 
    stopAngle = clamp( type( stopAngle ) == "number" and stopAngle or 360, 0, 360 ) 
    color = color or tocolor( 255, 255, 255, 200 ) 
    postGUI = type( postGUI ) == "boolean" and postGUI or false 
  
    if ( stopAngle < startAngle ) then 
        local tempAngle = stopAngle 
        stopAngle = startAngle 
        startAngle = tempAngle 
    end 
  
    for i = startAngle, stopAngle, angleAmount do 
        local startX = math.cos( math.rad( i ) ) * ( radius - width ) 
        local startY = math.sin( math.rad( i ) ) * ( radius - width ) 
        local endX = math.cos( math.rad( i ) ) * ( radius + width ) 
        local endY = math.sin( math.rad( i ) ) * ( radius + width ) 
  
        dxDrawLine( startX + posX, startY + posY, endX + posX, endY + posY, color, width, postGUI ) 
    end 
  
    return true 
end 
  
  
  
--using custom functions partial circle 
pHealth = 100 
  
 setTimer(function() 
 pHealth = getElementHealth(localPlayer) 
 outputChatBox(pHealth) 
 end,50,1) 
  
 function onDamage() 
pHealth = getElementHealth(source) 
end 
addEventHandler ( "onClientPlayerDamage", getLocalPlayer(),onDamage) 
  
    function healthHud( ) 
    if getElementData(localPlayer,"UI") == "hidden" then return end 
    --local circle = getElementHealth(localPlayer) 
  
  
  
         
  
        dxDrawCircle( 200, 200, 52, 5, 1, 0, pHealth*3.6,tocolor(0,0,0,255) ) 
        dxDrawCircle( 200, 200, 44, 1, 1, 0, pHealth*3.6,tocolor(0,0,0,255) ) 
        dxDrawCircle( 200, 200, 50, 5, 1, 0, pHealth*3.6,tocolor(255,0,0,255) ) 
  
    end 
addEventHandler( "onClientRender", root,healthHud) 
  
  
function onDeath() 
pHealth = 0 
removeEventHandler("onClientRender",root,healthHud) 
end 
addEventHandler("onClientPlayerWasted",getLocalPlayer(),onDeath) 
  
function onSpawn() 
addEventHandler("onClientRender",root,healthHud) 
pHealth = getElementHealth(source) 
end 
addEventHandler("onClientPlayerSpawn",getLocalPlayer(),onSpawn) 

so its just a basic simple health circled hud and perfomancebrowser is reporting that this script is using 20-30% of client(me) cpu and when looking at server

i have no idea why, no debugscript 3 errors.

is it problem in me or i have to optimize the script somehow?

I have not found errors but dxDrawLine uses much cpu.

Link to comment
That's because dxDrawLine function is used several times.

You have other alternatives to create that circle.

not because dxDrawCircle will only work with Rendering

dxDrawCircle make a loop with lines every frame rendering, DNL291 are right and that's why lag.

Link to comment
  • Moderators
loops? will do with that dxDraw Cycle disappear,we're talking about rendering.

That will draw many dx-lines on every render, is that what should be causing the problem with the performance.

You can edit that code and see by yourself how many dx-lines are being drawn on every render.

Link to comment

if i use images, it would be hard to make it(smooth) and also it wouldn't be smooth as i have no idea how would i do that unfortunately.

drawing rectangles.. not sure how would i do that

and saml1er,code can work faster but cpu usage wont change a bit(tested)

how does race gamemode draw its blue speedometer bar though?(i know, by images yes but i meant how does it draw images next to each other so perfectly..)

race gamemode itself doesn't consume much cpu and it does same thing im doing except its not in a circle

Link to comment
if i use images, it would be hard to make it(smooth) and also it wouldn't be smooth as i have no idea how would i do that unfortunately.

drawing rectangles.. not sure how would i do that

and saml1er,code can work faster but cpu usage wont change a bit(tested)

how does race gamemode draw its blue speedometer bar though?(i know, by images yes but i meant how does it draw images next to each other so perfectly..)

race gamemode itself doesn't consume much cpu and it does same thing im doing except its not in a circle

local loop,pHealth,screeW,screeY = 100,0,guiGetScreenSize() local dxDrawHealth = function() 
 pHealth = getElementHealth(localPlayer) 
 if getElementHealth(localPlayer) > 0 then 
  for count = 1, loop do 
  if count < pHealth then color = tocolor(255, 0, 0, 255) else color = tocolor(0, 0, 0, 255) end 
    dxDrawImage(screeW / 2 - 200, screeY * 0.200 - 64, 80, 80, "PJYtOH.png", 360 / loop * (count - 1), 0, 0, color) 
  end 
  for count = pHealth - 3, pHealth do 
    if count > 0 then 
    color = tocolor(255, 0, 0, 255) 
      dxDrawImage(screeW / 2 - 200, screeY * 0.200 - 64, 80, 80, "PJYtOH.png", 360 / loop * count, 0, 0, color) 
    end 
   end 
  end 
end 
addEventHandler("onClientRender",root, dxDrawHealth) 

PJYtOH.png download img

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...