What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal

Is there a better wait to control how much CPU is being used?

Status
Not open for further replies.

JoeBobJr

Member
Joined
Oct 25, 2014
Messages
151
Reaction score
0
When I use a while loop to check buffs its using a lot of cpu with this while loop. Is there something I am doing wrong or a better way to do this so my cpu isn't getting maxed out?

Code:
public void PluginRun()
       {         
           while (true)
           {
               if (isAlive() && !isMounted())
               {
                if (skillCooldown("Refreshment") == 0 && buffTime("Refreshment (Rank 4)") <= 2)
                // Casting "Refreshment"
                {
                    UseSkill("Refreshment", true);
                    Log("Used: Refreshment");
                }
                if  (skillCooldown("Toughen") == 0 && buffTime("Toughened (Rank 3)") <= 2)
                // Casting "Toughen"
                {
                    UseSkill("Toughen", true);
                    Log("Used: Toughen");
                }
                if (buffTime("Magic Defense Boost") <= 2)
                // Casting "Purge"
                {
                    UseSkill("Purge", true);
                    Log("Used: Purge");
               }
           }

       }
 
you're missing:
Code:
while (me.isCasting || me.isGlobalCooldown)
{
Thread.Sleep(50);
}
 
Rewritten it should look similar to this:

Code:
        public void UseSkillAndWait(string skillName, bool selfTarget = false)
        {
            while (me.isCasting || me.isGlobalCooldown)
            {
                Thread.Sleep(50);
            }   
            
            if (!UseSkill(skillName, false, selfTarget))
            {
                while (me.isCasting || me.isGlobalCooldown)
                {
                    Thread.Sleep(50);
                }
            }
        }


public void PluginRun()
       {         
           while (true)
           {
               if (isAlive() && !isMounted())
               {
                if (skillCooldown("Refreshment") == 0 && buffTime("Refreshment (Rank 4)") <= 2)
                // Casting "Refreshment"
                {
                    UseSkillAndWait("Refreshment", true);
                    Log("Used: Refreshment");
                }
                if  (skillCooldown("Toughen") == 0 && buffTime("Toughened (Rank 3)") <= 2)
                // Casting "Toughen"
                {
                    UseSkillAndWait("Toughen", true);
                    Log("Used: Toughen");
                }
                if (buffTime("Magic Defense Boost") <= 2)
                // Casting "Purge"
                {
                    UseSkillAndWait("Purge", true);
                    Log("Used: Purge");
               }
           }

       }

Alternative:
Code:
public void PluginRun()
       {         
           while (true)
           {
               if (isAlive() && !isMounted())
               {
                if(buffTime("Refreshment (Rank 4)") <= 2 || buffTime("Toughened (Rank 3)") <= 2 || buffTime("Magic Defense Boost") <= 2)
                 {
                 if (skillCooldown("Refreshment") == 0 && buffTime("Refreshment (Rank 4)") <= 2)
                 // Casting "Refreshment"
                 {
                     UseSkill("Refreshment", true);
                     Log("Used: Refreshment");
                 }
                 if  (skillCooldown("Toughen") == 0 && buffTime("Toughened (Rank 3)") <= 2)
                 // Casting "Toughen"
                 {
                     UseSkill("Toughen", true);
                     Log("Used: Toughen");
                 }
                 if (buffTime("Magic Defense Boost") <= 2)
                 // Casting "Purge"
                 {
                     UseSkill("Purge", true);
                     Log("Used: Purge");
                 }
               }
               else
                 Thread.Sleep(50);
          }
        }
 
Last edited:
Rewritten it should look similar to this:

Code:
        public void UseSkillAndWait(string skillName, bool selfTarget = false)
        {
            while (me.isCasting || me.isGlobalCooldown)
            {
                Thread.Sleep(50);
            }   
            
            if (!UseSkill(skillName, false, selfTarget))
            {
                while (me.isCasting || me.isGlobalCooldown)
                {
                    Thread.Sleep(50);
                }
            }
        }


public void PluginRun()
       {         
           while (true)
           {
               if (isAlive() && !isMounted())
               {
                if (skillCooldown("Refreshment") == 0 && buffTime("Refreshment (Rank 4)") <= 2)
                // Casting "Refreshment"
                {
                    UseSkillAndWait("Refreshment", true);
                    Log("Used: Refreshment");
                }
                if  (skillCooldown("Toughen") == 0 && buffTime("Toughened (Rank 3)") <= 2)
                // Casting "Toughen"
                {
                    UseSkillAndWait("Toughen", true);
                    Log("Used: Toughen");
                }
                if (buffTime("Magic Defense Boost") <= 2)
                // Casting "Purge"
                {
                    UseSkillAndWait("Purge", true);
                    Log("Used: Purge");
               }
           }

       }

Alternative:
Code:
public void PluginRun()
       {         
           while (true)
           {
               if (isAlive() && !isMounted())
               {
                if(buffTime("Refreshment (Rank 4)") <= 2 || buffTime("Toughened (Rank 3)") <= 2 || buffTime("Magic Defense Boost") <= 2)
                 {
                 if (skillCooldown("Refreshment") == 0 && buffTime("Refreshment (Rank 4)") <= 2)
                 // Casting "Refreshment"
                 {
                     UseSkill("Refreshment", true);
                     Log("Used: Refreshment");
                 }
                 if  (skillCooldown("Toughen") == 0 && buffTime("Toughened (Rank 3)") <= 2)
                 // Casting "Toughen"
                 {
                     UseSkill("Toughen", true);
                     Log("Used: Toughen");
                 }
                 if (buffTime("Magic Defense Boost") <= 2)
                 // Casting "Purge"
                 {
                     UseSkill("Purge", true);
                     Log("Used: Purge");
                 }
               }
               else
                 Thread.Sleep(50);
          }
        }

Both of those seem to be doing about the same thing. When I have two clients running my 4 cores stay around 60% cpu useage even while running Questing plugin. As soon as I start the Buff plugin all cpus go up to 100% and bounce between 95% and 100% cpu. As soon as I stop the plugin back down to 60% so for some reason this tiny plugin is using 40% cpu from all 4 cores that's way too much. It makes the clients have a lot of cpu lag and sometimes they crash out.
 
Status
Not open for further replies.
Back
Top