After several rough months my Paladin finally earned Crusader title and the Argent Charger! A lot of people probably think this is old news and lame but for me it is a milestone. It is the first time I have pushed through and actually did it. I HATE the Argent dailies with a passion This was my last major goal before the release of Cataclysm. Now to decide which character I want to take into the expansion. It’s a pretty rough decision when you have ten 80′s (soon to be eleven). Click the images for the full size!
Lua For the Win!
I recently have randomly become quite interested in Lua. The reasoning is due to the fact that I interact with two things on a daily basis that are configured and/or scripted in Lua: World of Warcraft and the Awesome window manager. I have had a blast over the weekend learning the basics of the languages and WoW addons. You can find the entire first edition of a very nice guide to learning Lua on their website. In addition, I found the resources at www.wowprogramming.com to be quite helpful.
The first mod I wrote was called Celistine, and was written to monitor my wife in game It allowed her to whisper me for auto-invites to a group, monitors her range and informs me if she is far, and spams her with whispers if my health gets lower than 25%.
After that, I decided to modify an example I found in the book I am reading (World of Warcraft Programming) and create a simple frame that displays DPS and other facts as I am in combat. I decided to call it Deeps See below for the screenshots, code, and feel free to try it out yourself.
-- Set up some local variables to track time and damage local start_time = 0 local end_time = 0 local total_time = 0 local total_damage = 0 local average_dps = 0 local in_combat = false function CombatTracker_OnLoad(frame) frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") frame:RegisterEvent("PLAYER_REGEN_ENABLED") frame:RegisterEvent("PLAYER_REGEN_DISABLED") frame:RegisterForClicks("RightButtonUp") frame:RegisterForDrag("LeftButton") end function CombatTracker_OnEvent(frame, event, ...) if event == "PLAYER_REGEN_ENABLED" then -- This event is called when the player exits combat end_time = GetTime() total_time = end_time - start_time average_dps = total_damage / total_time CombatTracker_UpdateText() CombatTracker_ReportDPS() in_combat = false elseif event == "PLAYER_REGEN_DISABLED" then -- This event is called when we enter combat -- Reset the damage total and start the timer CombatTrackerFrameText:SetText("In Combat!") total_damage = 0 start_time = GetTime() in_combat = true elseif event == "COMBAT_LOG_EVENT_UNFILTERED" and in_combat then local timestamp,log_event,source_guid,source_name,source_flags, dest_guid, dest_name, dest_flags, spell_id, spell_name, spell_school, amount = ... if string.match(log_event, "_DAMAGE") then if source_name == UnitName("player") or source_name == UnitName("pet") then --ChatFrame1:AddMessage(source_name .. " is doing teh hurt!") if amount ~= nil then total_damage = total_damage + amount end_time = GetTime() total_time = end_time - start_time average_dps = total_damage / total_time CombatTracker_UpdateText() end end end end end function CombatTracker_UpdateText() local status = string.format("%ds | %d dmg | %.2f dps", total_time, total_damage, average_dps) CombatTrackerFrameText:SetText(status) end function CombatTracker_ReportDPS() local msgformat = "Dished out %d damage in %d seconds (%.2f dps)." local msg = string.format(msgformat, total_damage, total_time, average_dps) if GetNumPartyMembers() > 0 then SendChatMessage(msg, "PARTY") else ChatFrame1:AddMessage(msg) end end
The picture says it all!
Wine and Ubuntu have really come a long way. These days it is very easy to get World of Warcraft to smoothly run in Linux. I felt the need to write this guide for two reasons: one as a mark of my triumphant achievement, and two as a helpful guide for those looking to do the same. This walk through assumes the following.
Warning: This configuration worked great for my hardware. Other hardware configurations may need additional tweaking.
1. Before you start you must verify that your graphics card had DRI enabled.
glxinfo | grep rendering
If it returns “Yes” then you are all set. If it returns no I am not sure if you should continue with this guide.
2. Install Wine via apt
sudo apt-get install wine1.2
3. Download the Visual C++ Patch From Microsoft at www.microsoft.com/downloads/en/confirmation.aspx?familyId=200b2fd9-ae1a-4a14-984d-389c36f85647&displayLang=en.
Follow the prompts to install it and it will close when it has finished. This patch is needed to successfully download patches at a certain point for WoW to run.
4. Install World of Warcraft. There are several means available to do this. You can install from the CDs/DVDs you bought or if you are like me you will need to download the entire installation from Blizzard. I had to download the downloader at https://www.worldofwarcraft.com/account/download_wow.html. For other methods of installation see the sources at the end of this article.
Choose Wrath of The Lich King when it prompts and keep going through the wizards. The downloader will eventually begin and you will have several hours (depending on your connection) to wait while it finishes.
5. Once the installation is complete, you will most likely want to edit the configuration to start WoW in OpenGL mode.
vim /home/username/.wine/Program\ Files/World\ of\ Warcraft/WTF/Config.wtf
Press the i key on your keyboard to go into insert mode. Add the following line to the bottom of the file.
SET gxAPI “OpenGL”
Press escape, type :wq, and press enter to save and exit the file.
6. Wine currently has permission issues with the World of Warcraft folder. If you ever notice WoW not starting after the launcher loads it is probably because the permissions somehow got screwed up on the folder. I have chosen to completely bypass the loader and I have also written a launcher script to make sure that WoW loads every time. Execute the following commands to start WoW for the first time.
chmod 755 /home/username/.wine/drive_c/Program\ Files/World\ of\ Warcraft/ wine "C:\Program Files\World of Warcraft\WoW.exe"
After some patience World of Warcraft will successfully load up. Get your initial video / audio configuration out of the way before the next step.
7. The endless loop: Login and it will force you to download a patch. You will have to complete this step approximately 5 or 6 times until all the patches have downloaded.
8. After all the of the patches have downloaded you should be good to go! Install all mods to /home/username/.wine/drive_c/Program\ Files/World\ of\ Warcraft/Interface/AddOns/. Keep in mind that by default in Gnome that your keyboard is configured to automatically repeat keys when held down by default. This will make your mounts and characters running seem strange. You can disable this temporarily by going to System -> Preferences -> Keyboard and unchecking “Key presses repeat…”
I hope this quick guide has helped you get World of Warcraft installed and running beautifully in Ubuntu. If you have additional issues with your installation and need help please see the following sources for additional assistance.
This was the fastest 78-80 grind ever (5.5 hours of casual leveling). This one is going to be a feral druid tank! I like tanking with my face (link).