vanilla-wow-addons – Rev 1
?pathlinks?
CT_PlayerSpells = { };
CT_ModVersion = 1.854;
CT_Mods = { };
CT_Options = { };
CT_MovableFrames = { };
CT_KeyBindings = { };
CT_MF_ShowFrames = nil;
CT_MASTERMOD_CPTITLE = CT_MASTERMOD_CPTITLE .. " v" .. CT_ModVersion;
function CT_GetPlayerSpells()
CT_PlayerSpells = { };
for i = 1, GetNumSpellTabs(), 1 do
local name, texture, offset, numSpells = GetSpellTabInfo(i);
for y = 1, numSpells, 1 do
local spellName, rankName = GetSpellName(offset+y, BOOKTYPE_SPELL);
local useless, useless, rank = string.find(rankName, "(%d+)");
if ( tonumber(rank) ) then
if ( not CT_PlayerSpells[spellName] or CT_PlayerSpells[spellName]["rank"] < tonumber(rank) ) then
CT_PlayerSpells[spellName] = { ["rank"] = tonumber(rank), ["tab"] = i, ["spell"] = y+offset };
end
end
end
end
end
function CT_AddMovable(frame, name, point, relpoint, relframe, xOffset, yOffset, lockfunc, resetfunc)
if ( not frame or not name or not point or not relpoint or not relframe or not xOffset or not yOffset ) then
return nil;
end
tinsert(CT_MovableFrames, {
["frame"] = frame,
["name"] = name,
["point"] = point,
["relpoint"] = relpoint,
["relframe"] = relframe,
["x"] = xOffset,
["y"] = yOffset,
["lockfunc"] = lockfunc,
["resetfunc"] = resetfunc
});
return 1;
end
function CT_ResetMovables()
for key, val in CT_MovableFrames do
getglobal(val["frame"]):ClearAllPoints();
getglobal(val["frame"]):SetPoint(val["point"], val["relframe"], val["relpoint"], val["x"], val["y"]);
if ( val["resetfunc"] ) then
val["resetfunc"]();
end
end
end
function CT_ResetFrameByName(name)
for key, val in CT_MovableFrames do
if ( val["frame"] == name ) then
getglobal(val["frame"]):ClearAllPoints();
getglobal(val["frame"]):SetPoint(val["point"], val["relframe"], val["relpoint"], val["x"], val["y"]);
if ( val["resetfunc"] ) then
val["resetfunc"]();
end
end
end
end
function CT_LockMovables(status)
CT_MF_ShowFrames = status;
for key, val in CT_MovableFrames do
if ( val["lockfunc"] ) then
val["lockfunc"](status);
end
end
end
function CT_Replace(text, search, replace)
if ( search == replace) then return text; end
local searchedtext = "";
local textleft = text;
while ( strfind ( textleft, search, 1) ) do
searchedtext = searchedtext .. strsub ( textleft, 1, strfind( textleft, search, 1)-1 ) .. replace;
textleft = strsub ( textleft, strfind( textleft, search, 1)+strlen(search) );
end
if ( strlen(textleft) > 0 ) then
searchedtext = searchedtext .. textleft;
end
return searchedtext;
end
function CT_Print(msg, r, g, b, frame)
if ( not r ) then r=1.0; end;
if ( not g ) then g=1.0; end;
if ( not b ) then b=1.0; end;
if ( frame ) then
frame:AddMessage(msg,r,g,b);
else
DEFAULT_CHAT_FRAME:AddMessage(msg, r, g, b);
end
end
function CT_RegisterMod(modName, modDescript, modType, modIcon, modTooltip, modStatus, modValue, modFunc, modInitFunction, modOrder, modOnDisplay)
local temp = { };
if ( modName and strlen(modName) > 0 ) then temp["modName"] = modName; else temp["modName"] = ""; end
if ( modDescript and strlen(modDescript) > 0 ) then temp["modDescript"] = modDescript; else temp["modDescript"] = ""; end
if ( modTooltip and strlen(modTooltip) > 0 ) then temp["modTooltip"] = modTooltip; else temp["modTooltip"] = ""; end
if ( modIcon and strlen(modIcon) > 0 ) then temp["modIcon"] = modIcon; else temp["modIcon"] = "Interface\\Icons\\INV_Misc_QuestionMark"; end
if ( modStatus ) then temp["modStatus"] = modStatus; else temp["modStatus"] = "off"; end
if ( modValue ) then temp["modValue"] = modValue; end
if ( modFunc ) then temp["modFunc"] = modFunc; end
if ( modInitFunction ) then temp["modInitFunc"] = modInitFunction; end
if ( modType ) then temp["modType"] = modType; else temp["modType"] = 1; end
if ( modOnDisplay ) then temp["modOnDisplay"] = modOnDisplay; end
if ( modOrder ) then
temp["modOrder"] = modOrder;
else
local usedNum = { };
local numInCategory = 0;
for key, val in CT_Mods do
if ( val["modType"] == temp["modType"] ) then
usedNum[val["modOrder"]] = 1;
end
end
local i = 1;
while ( usedNum[i] ) do
i = i + 1;
end
temp["modOrder"] = i;
end
CT_Mods[modName] = temp;
end
function CT_GetModStatus(modName)
if ( CT_Mods[modName] ) then
return CT_Mods[modName]["modStatus"];
end
end
function CT_SetModStatus(modName, status)
CT_Mods[modName]["modStatus"] = status;
CT_SaveInfoName(modName);
end
function CT_GetModValue(modName)
if ( CT_Mods[modName] ) then
return CT_Mods[modName]["modValue"];
end
end
function CT_SetModValue(modName, value)
CT_Mods[modName]["modValue"] = value;
CT_SaveInfoName(modName);
end
function CT_SaveInfoName(modName)
if ( not CT_Options[UnitName("player")] ) then
CT_Options[UnitName("player")] = { };
end
CT_Options[UnitName("player")][modName] = { };
for key, val in CT_Mods[modName] do
if ( key == "modStatus" or key == "modValue" or key == "hasBeenDisplayed" ) then
CT_Options[UnitName("player")][modName][key] = val;
end
end
end
function CT_Master_OnEvent(event)
if ( event == "VARIABLES_LOADED" ) then
if ( not CT_Options["version"] ) then
CT_Options = { };
CT_Options["version"] = CT_ModVersion;
CT_Print("<CTMod> " .. CT_MASTERMOD_FIRSTLOAD, 0.3, 1.0, 0.3);
else
CT_Options["version"] = CT_ModVersion;
if ( CT_Options[UnitName("player")] ) then
for key, val in CT_Options[UnitName("player")] do
if ( key ~= "version" ) then
if ( CT_Mods[key] ) then
for k, v in val do
CT_Mods[key][k] = v;
end
end
end
end
for key, val in CT_Mods do
if ( val["modInitFunc"] ) then
val["modInitFunc"](key);
end
end
end
end
--CT_SetKeyBindings(UnitName("player").."@"..GetCVar("realmName"));
CT_LockMovables(CT_MF_ShowFrames);
end
if ( event == "SPELLS_CHANGED" ) then
CT_GetPlayerSpells();
end
end
function CT_Master_UnregisterMod(name)
CT_Mods[name] = nil;
end
function CT_LinkFrameDrag(frame, drag, point, relative, x, y)
frame:ClearAllPoints();
frame:SetPoint(point, drag:GetName(), relative, x, y);
end
CT_oldToggleFramerate = ToggleFramerate;
function CT_newToggleFramerate()
if ( CTFramerate:IsVisible() ) then
CTFramerate:Hide();
else
CTFramerate:Show()
end
CT_Master_GlobalFrame.fpsTime = 0;
end
ToggleFramerate = CT_newToggleFramerate;
function CT_Master_GlobalFrame_OnUpdate(elapsed)
if ( CTFramerate:IsVisible() ) then
local timeLeft = this.fpsTime - elapsed
if ( timeLeft <= 0 ) then
this:SetScale(UIParent:GetScale());
this.fpsTime = FRAMERATE_FREQUENCY;
CTFramerateText:SetText(format("%.1f", GetFramerate()));
else
this.fpsTime = timeLeft;
end
end
end
SLASH_PRI1 = "/pri";
SlashCmdList["PRI"] = function(msg)
RunScript("CT_Print(" .. msg .. ")");
end
SLASH_CTUNLOCK1 = "/ctunlock";
SlashCmdList["CTUNLOCK"] = function(msg)
CT_Print("<CTMod> " .. CT_MASTERMOD_UNLOCKED, 1, 1, 0);
CT_LockMovables(1);
CT_SetModStatus(CT_MASTERMOD_MODNAME_UNLOCK, "on");
end
SLASH_CTUNLOCK1 = "/ctlock";
SlashCmdList["CTLOCK"] = function(msg)
CT_Print("<CTMod> " .. CT_MASTERMOD_LOCKED, 1, 1, 0);
CT_LockMovables(nil);
CT_SetModStatus(CT_MASTERMOD_MODNAME_UNLOCK, "off");
end
function CT_SetKeyBindings(name, force )
if ( CT_KeyBindings[name] and not force ) then
for k, v in CT_KeyBindings[name] do
SetBinding(v[1], v[2]);
end
else
CT_KeyBindings[name] = { };
for i = 1, GetNumBindings(), 1 do
CT_SaveKeyBinding(name, GetBinding(i));
end
end
end
function CT_SaveKeyBinding(name, command, ...)
for i = 1, arg.n, 1 do
tinsert(CT_KeyBindings[name], { arg[i], command });
end
end
CT_oldResetBindings = ResetBindings;
function CT_newResetBindings()
CT_oldResetBindings();
CT_SetKeyBindings(UnitName("player").."@"..GetCVar("realmName"), 1);
end
--ResetBindings = CT_newResetBindings;
CT_oldSaveBindings = SaveBindings;
function CT_newSaveBindings()
CT_oldSaveBindings();
CT_SetKeyBindings(UnitName("player").."@"..GetCVar("realmName"), 1);
end
--SaveBindings = CT_newSaveBindings;
CT_oldSetItemRef = SetItemRef;
function CT_newSetItemRef(link, text, button)
if ( strsub(link, 1, 6) == "player" ) then
local name = strsub(link, 8);
if ( name and (strlen(name) > 0) ) then
name = gsub(name, "([^%s]*)%s+([^%s]*)", "%2");
if ( IsControlKeyDown() ) then
for i = 1, GetNumRaidMembers(), 1 do
if ( UnitName("raid" .. i) == name ) then
TargetUnit("raid" .. i);
return;
end
end
for i = 1, GetNumPartyMembers(), 1 do
if ( UnitName("party" .. i) == name ) then
TargetUnit("party" .. i);
return;
end
end
TargetByName(name);
return;
end
end
end
CT_oldSetItemRef(link, text, button);
end
SetItemRef = CT_newSetItemRef;
BINDING_HEADER_CT_TARGETLAST = "Target Last Target";
BINDING_NAME_CT_TARGETLASTTARGET = "Target Last Target";
BINDING_NAME_CT_TARGETLASTTARGET = "Target Last Target";
Generated by GNU Enscript 1.6.5.90.