Addon:Multiboxer (legacy)
From Dual-Boxing Wiki
This is the original version of Multiboxer written by user:jdraughn aka Floozy. The portal page for the community driven addon is here
The addon contained 3 files; readme.txt, Multiboxer.toc and Multiboxer.lua
Contents |
Code
readme.txt
[ Top ]
If you don't know what multiboxing is then this AddOn is NOT for you. If you want to read about MultiBoxing, check out [http://www.dual-boxing.com].
If you find any bugs or have any other feedback, please e-mail me at jdraughn at gmail.com (remove the spaces and change at to @).
Features:
1. Allows any person in the party to assign who the party leader is (as long as each account is using this addon).
2. Automatic following of party leader. Automatically refollows party leader when leaving combat (if toggled on).
3. Automatic swapping of action bars depending on if your assisting or playing the party leader.
4. Automatic accepting of resurrects, group invites and quest sharing.
5. This is a first release. As such it's not really configurable (unless you open up the code and change variables yourself). A GUI to change options is on the way depending on if the demand is there. As it stands right now I am pretty happy just putting /script MyFunctionNameHere() in my macros to run my addon. I will At the very least add slash commands soon.
Instructions for use:
Once this addon is properly installed, it runs automatically. All characters in the group must have this installed for it to function correctly.
THE TWO COMMANDS WHICH YOU HAVE TO USE TO OPERATE THIS ADDON ARE:
/script NewLeader("PartyMemberName")
Promotes chosen person to party leader (does not matter who in the party runs the command). Where PartyMember is the name of the person in your party who you want to be leader and who everyone else will follow and assist.
and
/script FollowLeader()
If for someone reason one or more persons in your party have stopped following the leader, running this (from any person in the group) will make them all begin following again.
IN ADDITION TO USING THE TWO COMMANDS LISTED ABOVE, YOU MUST ALSO CONFIGURE YOUR ACTION BARS AS DESCRIBED BELOW.
By default action bar 2 is used for assisting, example:
/assist party1
/cast Curse of Agony
or
/cast {target=party1} Renew
Everyone who is following party1 (The party leader) will use this bar. So by default, if you press 1 and it gets sent to all the WoW windows, everyone who is following party1 will execute the first button on action bar 2, while party1 will execute the first button on action bar 1.
When used with AutoHotkey, you can send a key to execute the ChangeLeader("PartyMember") function automatically whenever you swap WoW windows. The active window would then automatically become party leader meaning everyone in your group will automatically start following you, and since their action bar is swapped automatically too, they will automatically assist party1 (as long as you have configured their action bars appropriately.
A screenshot is almost worthless since this AddOn is so dynamic, and I am having a hard time trying to record a video of this in action since it's multiple directx windows. Fraps will only record one source at a time. Might try to use a normal video camera and just record my screen.
-----------------------------------------------------------------------------------------
My personal setup is a single computer running 5 World of Warcraft accounts simutaneously and I use AutoHotkey [http://www.autohotkey.com] to broadcast my keystrokes to all my WoW windows.
I am currently playing 1 Paladin and 4 Priests.
My computer's hardware consists of:
1. An Intel Q6600 processor (4 CPU's running at 2.4Ghz each).
2. 3 GB of ram (2 GB seemed to be enough when running 4 game windows, but the 5th pushed it over the edge and I experience extreme slowdowns until I added another Gigabyte of ram.
3. Windows Vista 32bit
4. GeForce 8800GTS 320MB.
With this setup I am able to get very playable framerates, even running in 1920x1080 in windowed mode maximized. By default however WoW will only run on the first two cores of your system, so if you have a quad core, make sure you change the affinity of your wow.exe's so they are using all 4 cores.
I use a program called process [http://www.beyondlogic.org/solutions/processutil/processutil.htm] in combination with AHK to automatically change the priority's of my wow windows whenever I swap screens so the foreground window gets it's cpu priority set to "High" while at the same time, any other wow windows get their priority set to "Below Normal".
Multiboxer.toc
[ Top ]
## Interface: 20200 ## Title: MultiBoxer ## Version: .01 ## Author: Floozy ## Notes: A Collection of Multiboxing utilties MultiBoxer.lua
Multiboxer.lua
[ Top ]
local AssistingBarID = 1
local MainBarID = 2
local AutomaticallyFollow = true
local AutomaticallyAcceptQuests = true
local AutomaticallyChangeLootingToFFA = true
function MultiBoxer_OnEvents()
if (event=="ADDON_LOADED") then -- load saved variables
-- load saved variables
elseif (event=="PLAYER_REGEN_ENABLED") then
if (AutomaticallyFollow==true) then
if (not UnitIsPartyLeader("player")) then
FollowLeader();
end
end
elseif (event=="PARTY_INVITE_REQUEST") then -- make sure the person inviting is on your "trusted" list.
-- for i = 1,getn(TrustedPlayers) do
-- if (string.lower(arg1)==string.lower(TrustedPlayers[i])) then
AcceptGroup();
StaticPopup1:Hide();
-- end
-- end
elseif (event=="PARTY_LEADER_CHANGED") then
if (UnitIsPartyLeader("player")) then -- if party leader changed, and your the leader, then lead (others will follow YOU now).
Lead();
end
elseif (event=="QUEST_DETAIL") then
AcceptQuest();
elseif (event=="QUEST_ACCEPT_CONFIRM") then -- ESCORT QUESTS
AcceptQuest();
elseif (event=="PLAYER_XP_UPDATE") then
SendAddonMessage("MultiBoxer", "ExpUpdated:- "..UnitName("player")..":- "..UnitXP("player")..":- "..UnitXPMax("player"), "PARTY");
elseif (event=="RESURRECT_REQUEST") then
AcceptResurrect();
elseif (event=="UNIT_COMBAT") then
SendAddonMessage("MultiBoxer", "TakingDamage:-", "PARTY");
elseif (event=="CHAT_MSG_ADDON") then
if (arg1=="MultiBoxer") then
local startPos, endPos, TheCommand, TheMessage = string.find( arg2, "(%w+)[%s%p]*(.*)");
if (TheCommand=="Followme") then
if (arg4~=UnitName("player")) then
FollowLeader();
end
elseif (TheCommand=="InfoMessage") then
if (arg4~=UnitName("player")) then
WhisperYourself(TheMessage); -- NEED A BETTER WAY TO MESSAGE OTHER THEN WHISPERING
end
elseif (TheCommand=="PromoteToLeader") then
if (UnitIsPartyLeader("player")) then -- if your leader, then pass leadership
PromoteToLeader(TheMessage);
end
elseif (TheCommand=="TakingDamage") then
if (not UnitIsPartyLeader("player")) then
-- AlertLeader(arg4.." IS TAKING DAMAGE!")
end
elseif (TheCommand=="FollowLeader") then
if (not UnitIsPartyLeader("player")) then
FollowUnit("party1");
ChangeActionBarPage(AssistingBarID);
end
end
end
end
end
function AlertLeader(TheMessage)
SendChatMessage(TheMessage, "WHISPER", GetDefaultLanguage("player"), UnitName("party1"));
end
function WhisperYourself(TheMessage)
SendChatMessage(TheMessage, "WHISPER", GetDefaultLanguage("player"), UnitName("player"));
end
function AddTrustedPlayer(TrustedPlayer)
tinsert(TrustedPlayers, TheMessage)
end
function RemoveTrustedPlayer(TrustedPlayer)
for i = 1,getn(TrustedPlayers) do
if (strlower(TrustedPlayers[i])==strlower(TheMessage)) then
SendChatMessage(tremove(TrustedPlayers, i).." was sucessfully removed from your TrustedPlayers list.");
end
end
end
function ListTrustedPlayers()
for i = 1,getn(TrustedPlayers) do
WhisperYourself(TrustedPlayers[i])
end
end
function Lead()
SendAddonMessage("MultiBoxer", "Followme:-", "PARTY");
ChangeActionBarPage(MainBarID);
end
function FollowLeader()
SendAddonMessage("MultiBoxer", "FollowLeader:-", "PARTY");
end
function NewLeader(PartyMember)
SendAddonMessage("MultiBoxer", "PromoteToLeader:-".." "..PartyMember, "PARTY");
end
local frame = CreateFrame("Frame");
frame:SetScript("OnEvent", MultiBoxer_OnEvents);
frame:RegisterEvent("PLAYER_REGEN_ENABLED");
frame:RegisterEvent("CHAT_MSG_ADDON");
frame:RegisterEvent("PARTY_INVITE_REQUEST");
frame:RegisterEvent("PARTY_LEADER_CHANGED");
frame:RegisterEvent("QUEST_DETAIL");
frame:RegisterEvent("QUEST_ACCEPT_CONFIRM");
frame:RegisterEvent("PLAYER_XP_UPDATE");
frame:RegisterEvent("RESURRECT_REQUEST");
frame:RegisterEvent("UNIT_COMBAT"); -- FIRES WHEN AN NPC OR PLAYER IS IN COMBAT AND TAKES DAMAGE
