WoW:API GetCritChance: Difference between revisions

From AddOn Studio
Jump to navigation Jump to search
(Function to return critical hit chance)
 
No edit summary
Line 56: Line 56:
Much of this [[GetCritChance|GetCritChance()]] function was taken and (slightly) modified from [http://ui.worldofwar.net/ui.php?id=722 mercdev's Combat Info] ([http://www.curse-gaming.com/mod.php?addid=1208 alt]) for [[Titan_Panel|Titan Panel]]. Thanks to him.
Much of this [[GetCritChance|GetCritChance()]] function was taken and (slightly) modified from [http://ui.worldofwar.net/ui.php?id=722 mercdev's Combat Info] ([http://www.curse-gaming.com/mod.php?addid=1208 alt]) for [[Titan_Panel|Titan Panel]]. Thanks to him.


[[Category:HOWTOs]]
----
[[Category:API Functions]]
{{WoW API}}
[[Category:API Character Functions]]

Revision as of 04:50, 4 January 2006

Since there are functions incorporated in the WoW API to return parry, dodge and block chances but none to return critical hit chance, here is a GetCritChance() function that will do so.

GetCritChance()

Function code

 function GetCritChance()
   local critChance, iCritInfo, critNum;
   local id = 1;
   -- This may vary depending on WoW localizations.
   local atkName = "Attack";
   local attackSpell = GetSpellName(id,BOOKTYPE_SPELL);
   if (attackSpell ~= atkName) then
     name, texture, offset, numSpells = GetSpellTabInfo(1);
     for i=1, numSpells do
       if (GetSpellName(i,BOOKTYPE_SPELL) == atkName) then
         id = i;
       end
     end
   end
   GameTooltip:SetSpell(id, BOOKTYPE_SPELL);
   local spellName = GameTooltipTextLeft2:GetText();
   GameTooltip:Hide();
   iCritInfo = string.find(spellName, "%s");
   critNum = string.sub(spellName,0,(iCritInfo -2));
   critChance = math.ceil(critNum);
   return critChance;
 end

Returns

Player's critical hit chance, in percentage (without the % symbol).
Note: Sometimes, the percentage returned would include a lot of decimals, hence the usage of math.ceil()] here to round up the number to the nearest decimal.

Exemples

Simply call the function and display it, like this:

 -- Will display your critical hit chance in your default chat frame.
 DEFAULT_CHAT_FRAME:AddMessage("Your crit chance is: "..GetCritChance().."%");

You can also use this code for a more thorough display:

 -- Will send a "SAY" message (/s) with your crit, dodge, parry and block chances in percentage.
 SendChatMessage("My crit chance is: "..GetCritChance().."%","SAY");
 SendChatMessage(UnitName('player').."'s chances to...","SAY");
 SendChatMessage("Crit: "..GetCritChance().."%","SAY");
 SendChatMessage("Dodge: "..GetDodgeChance().."%","SAY");
 SendChatMessage("Parry: "..GetParryChance().."%","SAY");
 SendChatMessage("Block: "..GetBlockChance().."%","SAY");

How it works

This function simply loops through your spellbook (BOOKTYPE_SPELL) for your regular melee attack skill and then grabs the text from the skill's tooltip using GameTooltip functions (the tooltip of the regular melee attack is the only place where the crit chance is displayed).

Credits

Much of this GetCritChance() function was taken and (slightly) modified from mercdev's Combat Info (alt) for Titan Panel. Thanks to him.


Template:WoW API