PQR (2.0.0) Release Notes
NOTE: 2.0.0 will NOT work with any older versions of WoW such as 3.3.5. This functionality will be added at a later point in time once I am sure there are no bugs left in the current version. You can continue using the old version until this has been updated.
Download here: PQR2.zip
I wanted to take this time to HIGHLY RECOMMEND that profile developers make a thread on the Bot Maps and Profiles forum and then link to their post on the Wiki. You can still post here on this thread, this would just help make things a bit more searchable.
NOTE THAT SOME OR ALL OF THE LINKS ON THE WIKI MIGHT BE OUT OF DATE, USE THE LATEST VERSION OF THE PROFILE THAT YOU ALREADY HAVE!
Death Knight Rotations
Druid Rotations
Hunter Rotations
Mage Rotations
Paladin Rotations
Priest Rotations
Rogue Rotations
Shaman Rotations
Warlock Rotations
Warrior Rotations
PQR (v2.0.0) is mainly a rewrite of PQR to improve efficency. As such, there aren't many new user features however things should run internally much better and as such use less memory.
I have switched from the .NET Framework 4.0 client profile to the full framework. If you are having issues try installing: Download: Microsoft .NET Framework 4 (Web Installer) - Microsoft Download Center - Download Details
IMPORTANT: If you had a profile that used "Perform Before" or "Perform After" this code will no longer function. See my notes below for the reason why I decided to remove them and for a fairly trivial way to reimplement any lost functionality.
[NEW] Folder layout has been improved. There is now an Offsets folder as well as folders for individual classes.
[NEW] Monk class support.
[NEW] Interrupt profile support.
[NEW] Anti-AFK while the PQR program is running. This can be disabled on the settings page.
[NEW] Ability editor has had an overhaul. New improved syntax highlighter. Can now be resized/maximized.
[NEW] Multiple debug levels to make using Debug Mode easier.
None - Default level. No debug data written to chat.
Profile - ONLY "Profile" debug commands are written to chat. This should allow profile developers to use PQR_DebugP("Text") or PQR_Debug("Text here!", "Profile") to help test their profiles.
Basic - Basic workflow of the rotation is written to chat, as well as some other basic information. Also includes Profile data.
Advanced - All debug information is written to chat.
The following is for profile writers:
New Global Variables:
PQR_RotationStarted - a flag set to true when a rotation has started. This can be used to run code that should only be run once per rotation.
PQR_InterruptStarted - a flag set to true when an interrupt profile has started. Similiar to PQR_RotationStarted.
PQR_SpellAvailableTime - Default value is 0.05 (50ms.) If a spell has less than 50ms left on it's cooldown it will be considered available. This can be changed.
Updated Global Functions:
PQR_WriteToChat(text[, suffix]) - Will write to chat: <PQR[ suffix]> text.
PQR_Debug(text[, debugLevel) - Valid debug levels are: none (empty string/nil), "Profile", "Basic," and "Advanced." PQR sends no messages using the "Profile" mode, so you can use this to help in debugging your profiles.
PQR_DebugP(text) - Same as using PQR_Debug(text, "Profile")
New Global Functions:
PQR_DelayRotation(seconds) - Delays the currently running profile for X seconds (default 1).
Code:
Example: This can be called from an interrupt profile to allow for the use of abilities that are on GCD such as a Stun.
PQR_AddToSpellDelayList(spell, item, seconds) - Delays the currently running profile for X seconds (default 1) when a player attempts and fails to use a spell or item. Resumes on sucessful cast.
Code:
Example: A player is spamming Divine Shield but it is on GCD, so the bot is preventing the player from doing it. Using an ability that uses PQR_RotationStarted flag, the profile writer can add:
"PQR_AddToSpellDelayList(642, 0, 1) --Divine Shield"
The profile will pause for 1 second after a failed attempt to use Divine Shield, so the player can slightly spam the key, and automatically resume the profile once the cast has been done sucessfully or X seconds have passed.
It also works for potions:
PQR_AddToSpellDelayList(79634, 58146, 1) --Golem's Strength (Potion) (spellID, itemID, delay)
PQR_IsOnInterruptList(spellName) - Is an ability on either the PQR interrupt list or profile created list (PQR_AddInterrupt). Returns true/false.
PQR_AddInterrupt(spellName) - Adds a spell to the interrupt list, you should use PQR_InterruptStarted flag to only add once.
PQR_IsInterruptAll() - Is "Interrupt All Spells" checked? Returns true/false.
--
Reason for removal of "Perform After" and "Perform Before"
Perform After/Before was clunky, and did not do anything that you couldn't do in an ability before. There was no simple way of editing the ability and just seeing "oh this is doing something before and after" without going into the tabs for each. If someone used an ability as a template they might never know they also have possibly bad before/after code there. Or if they just copied/pasted an ability to another they might not know they are missing code.
It should be trivial to fix the affected abilities, just do this where you would 'return true':
If spell ID is not 0 and only using "Perform Before"
Code:
--PERFORM BEFORE CODE HERE
return true
If spell ID is not 0 and using "Perform After" OR If spell ID is 0:
You must change the spell ID to 0.
Code:
local spellAvailable = PQR_SpellAvailable(SpellID)
if spellAvailable then
--PERFORM BEFORE CODE HERE
CastSpellByID(SpellID, Target)
--PERFORM AFTER CODE HERE
return true
end
Oh, you made it to the end of the post. If things work well for you please +rep me as thanks.
If you have any issues please post details on how to replicate the issue from a clean install. Many thanks.