You can subscribe to this list here.
2006 |
Jan
(2) |
Feb
(5) |
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|
From: Espen M. <em...@st...> - 2006-04-04 21:24:06
|
I humbly submit this script extention (Extra Macro) to Paladin Assistant v3.0b This script has been a joy to write and use. (And it works) The script is bound to an action button macro "/pa PA:Cycle_SotC_J_SoC();" and works as follows: 1. First Click of ActionButton casts "Seal of the Crusader" which selects nearest target. 2. Second Click of ActionButton checks for "Seal of the Crusader" and Casts "Judgement". If target is out of range the script state is unchanged and will cast "Judgement" as soon as ActionButton is pressed within range. 3. Third Click of ActionButton casts "Seal of Command" (and resets script) Note: I find this very efficient to get max DPS out of Seal of Command. The script is very simple and uses the seal spell's own cast management and rangechecking. I hope someone else will find this interesting. Best Regards Espen Munthe ************************************ File: pa_seal.lua ************************************ --[[ pa_seal.lua Paladin Assistant Seal functions Revision 0.1 ]] --------------------------------------------------------------------------------- -- Cycle of Seal of the Crusader -> Judgement -> Seal of Command --------------------------------------------------------------------------------- ------------------------------------------------ -- Variable for Seal Cast combination ------------------------------------------------ PA.Cycles["Seal"] = {}; PA.Cycles.Seal["CYCLE_SOTC_J_SOC"] = 0; PA.buffKeys["SotC"] = {Icon="Spell_Holy_HolySmite", Tooltip=nil}; function PA:Cycle_SotC_J_SoC() if (PA.Cycles.Seal.CYCLE_SOTC_J_SOC == 0) then local haveSotC = PA:UnitHasBlessing("player", "SotC"); if (not haveSotC) then CastSpellByName("Seal of the Crusader"); end PA.Cycles.Seal.CYCLE_SOTC_J_SOC = 1; elseif (PA.Cycles.Seal.CYCLE_SOTC_J_SOC == 1) then if (PA:ActionInRange(20)) then CastSpellByName("Judgement"); PA.Cycles.Seal.CYCLE_SOTC_J_SOC = 2; end elseif (PA.Cycles.Seal.CYCLE_SOTC_J_SOC == 2) then CastSpellByName("Seal of Command"); PA.Cycles.Seal.CYCLE_SOTC_J_SOC = 0; end end |
From: Sam A. <ru...@nc...> - 2006-02-16 12:45:28
|
Nice addition! Also we are going to try something new for cyclebless soon in reguards to GBs. The new method may make the logic very simple. Update as soon as possible. Also note the alpha has a rez message issue. pa_spell:621. We will have this fixed asap. --Drowsey (Sam) ----- Original Message ----- From: "Ionut Anton" <ion...@ya...> To: <wow...@li...> Sent: Thursday, February 16, 2006 6:30 AM Subject: [Wow-pa-alpha] Idea for speeding action bar target checking > Hi.Zd(r)umpi here > > This file is modified with some lines added in : function > PA:ActionInRangeNonTarget(unit, maxRange) with canceling update of the > TargetFrame UI thus reducing lag (in my opinion at lest) - havent tested > it but it should work just fine. > > This is done by nilling the update of the TargetFrame. > > original code from Blizzard TargetFrame.lua : > > function TargetFrame_OnEvent(event) > UnitFrame_OnEvent(event); > > if ( event == "PLAYER_TARGET_CHANGED" ) then > TargetFrame_Update(); > > ... > > function TargetFrame_Update() > if ( UnitExists("target") ) then > this:Show(); > UnitFrame_Update(); > TargetFrame_CheckLevel(); > TargetFrame_CheckFaction(); > TargetFrame_CheckClassification(); > TargetFrame_CheckDead(); > TargetFrame_CheckDishonorableKill(); > if ( UnitIsPartyLeader("target") ) then > TargetLeaderIcon:Show(); > else > TargetLeaderIcon:Hide(); > end > TargetDebuffButton_Update(); > TargetPortrait:SetAlpha(1.0); > else > this:Hide(); > end > end > > Think this helps :) > > > -------------------------------------------------------------------------------- > --[[ > > pa_range.lua > Paladin Assistant > Range functions > Thanks to MapLibrary and BuffBot for some base > Revison 3.0 > > ]] > > -- Macros + Spells to look for for range checking > PA.ActionSearch = {}; > PA.ActionSearch[20] = PALAS_SPELL_LOH; > PA.ActionSearch[30] = > "BLESS/BoF/BoL/BoM/BoSAN/BoW/CURE/CYCLE/FREE/NEAR/"..PALAS_SPELL_PURIFY.."/"..PALAS_SPELL_CLEANSE.."/"..PALAS_BLESSINGOFMIGHT.."/"..PALAS_BLESSINGOFWISDOM.."/"..PALAS_BLESSINGOFKINGS.."/"..PALAS_BLESSINGOFLIGHT.."/"..PALAS_BLESSINGOFSANCTUARY.."/"..PALAS_BLESSINGOFFREEDOM; > PA.ActionSearch[40] = "HEAL/BEST/"..PALAS_SPELL_HL.."/"..PALAS_SPELL_FOL; > > -- Function hook for not refreshing TargetFrame, so reducing lag and > unwanted target swithch sound (Zdrumpi) > PA_TargetFrame_Update = nil; > > ---------------------------------------------------------------------------------- > -- Function reports if MapLibrary Support is enabled, and if the library > is ready, > -- and a status text string of both support and library status. > ---------------------------------------------------------------------------------- > function PA:MapLibrary(action) > > local mlsupport = {[false] = 'off',[true] = 'on'} > local mlstatus = {[0] = 'is not', [1] = 'is'} > > if (MapLibrary == nil) then > MapLibrary = {}; > MapLibrary.Ready = 0; > elseif (MapLibrary.Ready == nil) then > MapLibrary.Ready = 0; > end > > if (_MapLibrary == nil) then > _MapLibrary = false; > end > > if (not action) then action = 'STATUS' end > > if (action == 'TOGGLE') then > _MapLibrary = not _MapLibrary; > Paladin.Settings[pa_realm][pa_key].Switches.EnableMLS = _MapLibrary; > end > local txt = > format(PALAS_MSG_MAPLIBRARY,mlsupport[_MapLibrary],mlstatus[MapLibrary.Ready]); > > return(txt); > end > > > function PA:RangeToUnitInternal(unit) > local range, zonenum, contnum, px, py, tx, ty, dx, dy = 0, 0, 0, 0.0, 0.0, > 0.0, 0.0, 0.0, 0.0 > local yds_per_blk, blk_per_yds = 6.5,0.154; > > local ZoneRate = { > [1] = { > {id=1, rate=0.00182}, -- Ashenvale > {id=2, rate=0.00207}, -- Azshara > {id=3, rate=0.00160}, -- Darkshore > {id=4, rate=0.00992}, -- Darnassus > {id=5, rate=0.00234}, -- Desolace > {id=6, rate=0.00199}, -- Durotar > {id=7, rate=0.00200}, -- dustwallow marsh > {id=8, rate=0.00183}, -- felwood > {id=9, rate=0.00151}, -- feralas > {id=10, rate=0.00455}, -- Moonglade > {id=11, rate=0.00204}, -- Mulgore > {id=12, rate=0.00748}, -- Orgrimmar > {id=13, rate=0.00151}, -- Silithus > {id=14, rate=0.00215}, -- Stonetalon Mtns > {id=15, rate=0.00152}, -- Tanaris > {id=16, rate=0.00206}, -- Rut'theran village > {id=17, rate=0.00104}, -- The Barrens > {id=18, rate=0.00239}, -- Thousand Needles > {id=19, rate=0.01006}, -- Thunderbluff > {id=20, rate=0.00284}, -- Un'Goro Crater > {id=21, rate=0.00148}, -- Winterspring > {id=22, rate=0.0001}, > {id=23, rate=0.0001}, > {id=24, rate=0.0001}, > {id=25, rate=0.0001}, > }, > [2] = { > {id=1, rate=0.00210}, -- Alterac Mtns > {id=2, rate=0.00292}, -- Arathi Highlands > {id=3, rate=0.0042}, -- Bad Lands > {id=4, rate=0.00313}, -- Blasted Lands > {id=5, rate=0.00359}, -- Burning Steppes > {id=6, rate=0.00420}, -- Deadwind pass > {id=7, rate=0.00213}, -- Dun Morogh > {id=8, rate=0.00389}, -- Duskwood > {id=9, rate=0.00271}, -- Eastern Plaguelands > {id=10, rate=0.00302}, -- Elwynn Forest > {id=11, rate=0.00328}, -- Hillsbrad > {id=12, rate=0.01327}, -- Iron Forge > {id=13, rate=0.00381}, -- Loch Modan > {id=14, rate=0.00484}, -- Redridge Mnts > {id=15, rate=0.00471}, -- Searing Gorge > {id=16, rate=0.00250}, -- Silverpine Forrest > {id=17, rate=0.00781}, -- Stormwind > {id=18, rate=0.00165}, -- Stranglethorn Vale > {id=19, rate=0.00458}, -- Swamp of Sorrows > {id=20, rate=0.00273}, -- The Hinterlands > {id=21, rate=0.00232}, -- Tristfall Glades > {id=22, rate=0.01094}, -- Undercity > {id=23, rate=0.00244}, -- Western Plaguelands > {id=24, rate=0.00300}, -- Westfall > {id=25, rate=0.00254} -- Wetlands > } > }; > > > px, py = GetPlayerMapPosition("player"); > tx, ty = GetPlayerMapPosition(unit); > > px = px * 100; > py = py * 100; > > tx = tx * 100; > ty = ty * 100; > > zonenum = GetCurrentMapZone(); > contnum = GetCurrentMapContinent(); > > -- Instances return 0 > if (zonenum == 0) then > return -1; > end > > --only happens if you change the map! > if (px == 0) and (py == 0) then > PA:Message3("Core",5,"Range: Zone number was ", contnum, ' ', zonenum) > return -2; > end > > --player not in instance but target may be! > if (tx == 0) and (ty == 0) then > return -2 > end > > PA:Message3("Core",5,"Range: Zone: ", contnum, " ", zonenum) > > local baserate = ZoneRate[contnum][zonenum].rate * 100 > > if (baserate == nil) then > PA:Message3("Core",5,"Range: No data for Zone! ", contnume," ", zonenum) > return -2 > end > > > dx = px - tx; > dy = py - ty; > > -- coords are not square. adjust x by 2.25 > local range = sqrt((dx * dx * 2.25) + (dy * dy)) / baserate * yds_per_blk > return range > end > > > function PA:RangeToUnit(unit) > > if _MapLibrary and MapLibrary ~= nil then > > local distance = MapLibrary.UnitDistance("player", unit, 1) > > if distance ~= nil then > return distance > end > > if (UnitInParty(unit) or UnitInRaid(unit)) then > > if (MapLibrary.InBattleground()) then > return -1; > end > local pii = MapLibrary.InInstance(); > local tii = false > > x,y = GetPlayerMapPosition(unit) > > if (x == 0 and y == 0) then > tii = true > end > > if (pii and tii) then > return -1 > end > > return -2 > else > return -1 > end > else > return PA:RangeToUnitInternal(unit) > > end > end > > -------------------------- > -- Action Bar Range checks > -------------------------- > function PA:SearchActionBar() > if (_Paladin_is_Ready) then > PA.ActionId[20] = PA:FindActionSlot("20 yards", PA.ActionSearch[20]); > PA.ActionId[30] = PA:FindActionSlot("30 yards", PA.ActionSearch[30]); > PA.ActionId[40] = PA:FindActionSlot("40 yards", PA.ActionSearch[40]); > PA:InformActionRangeStatus(); > end > end > > function PA:InformActionRangeStatus() > if (Paladin.Settings[pa_realm][pa_key].Switches.UseActionRange.Heal==true > or Paladin.Settings[pa_realm][pa_key].Switches.UseActionRange.Bless==true > or Paladin.Settings[pa_realm][pa_key].Switches.UseActionRange.Cure==true > or Paladin.Settings[pa_realm][pa_key].Switches.UseActionRange.Free==true) > then > if (PA.ActionId[20]==nil and PA:PlayerHasSpell(PALAS_SPELL_LOH, > PA.Spells.loh.MaxRank)) then > PA:Message3("Core", 1, format(SPELL_RANGE, "20").." > ("..ACTIONBAR_LABEL..") "..ADDON_MISSING..". Add spell > "..PA.ActionSearch[20].." to any action bar."); > end > if (PA.ActionId[30]==nil) then > PA:Message3("Core", 1, format(SPELL_RANGE, "30").." > ("..ACTIONBAR_LABEL..") "..ADDON_MISSING..". Add one of these spells: > "..PA.ActionSearch[30].." to any action bar."); > end > if (PA.ActionId[40]==nil) then > PA:Message3("Core", 1, format(SPELL_RANGE, "40").." > ("..ACTIONBAR_LABEL..") "..ADDON_MISSING..". Add one of these spells: > "..PA.ActionSearch[40].." to any action bar."); > end > end > end > > function PA:CheckActionSlot(id, infoText, spellList) > if (id~=nil and HasAction(id)) then > local ActionText = GetActionText(id); > if (ActionText==nil) then > GameTooltipTextLeft1:SetText(nil); > GameTooltip:SetAction(id); > --PA:ShowText(" Left1 =", GameTooltipTextLeft1:GetText()); > local SlotName = GameTooltipTextLeft1:GetText(); > if (SlotName~=nil) then > local Start = string.find(spellList, SlotName); > --PA:ShowText(" Find =", Start); > if (Start~=nil) then > --PA:Message("Found spell in action Slot="..id.." for "..infoText.." > ("..SlotName..")"); > return true; > end > end > else > -- Macro > local _, _, Body = GetMacroInfo(GetMacroIndexByName(ActionText)); > local _, _, PaId = string.find(Body, "PA_ID=>(%w+)<"); > if (PaId~=nil) then > --PA:ShowText(" PaId =", PaId); > local Start = string.find(spellList, PaId); > --PA:ShowText(" Find =", Start); > if (Start~=nil) then > --PA:Message("Found macro in action Slot="..id.." for "..infoText.." > ("..ActionText..")"); > return true; > end > end > end > end > return false; > end > > function PA:FindActionSlot(infoText, spellList) > for Id = 1, 120 do > if (PA:CheckActionSlot(Id, infoText, spellList)) then > return Id; > end > end > return nil; > end > > function PA:ActionInRangeNonTarget(unit, maxRange) > -- Action bars only work on current target > -- Remember the old target and combat state to switch back when finished > range check > -- Combat switch is done via the PLAYER_LEAVE_COMBAT event > -- hooking TargetFrame_Update and making it nil removes the update of the > TargetFrame so removing sound and target updating in the UI, although > player has a new target for action checking (Zdrumpi) > if (PA.ActionId[maxRange]~=nil) then > PA_TargetFrame_Update = TargetFrame_Update; > TargetFrame_Update = nil; > PA:Message3("Core", 5, "Targeting "..unit.." for Action check"); > local InCombat = PA.InCombat; > PA:Message3("Core", 5, "Combat ="..tostring(InCombat)); > local OldTarget = UnitName("target"); > TargetUnit(unit); > local InRange = PA:ActionInRange(maxRange); > if (OldTarget==nil) then > ClearTarget(); > elseif (OldTarget~=UnitName("target")) then > TargetLastTarget(); > PA.ForceCombat = (InCombat and UnitCanAttack("player", "target")); > end > TargetFrame_Update = PA_TargetFrame_Update; > PA_TargetFrame_Update = nil; > return InRange; > end > return nil; > end > > ---------------------------------------- > -- Check for in range via action buttons > ---------------------------------------- > function PA:ActionInRange(maxRange) > local ActionId = PA.ActionId[maxRange]; > if (ActionId==nil) then > return nil; > end > if (IsActionInRange(ActionId)~=0) then > PA:Message3("Core", 5, "Action check "..maxRange.." yards, in-range"); > return true; > end > PA:Message3("Core", 5, "Action check "..maxRange.." yards, out-of-range"); > return false; > end > > function PA:ActionInRangeTarget(unit, maxRange) > if (UnitIsUnit("target", unit) and PA.ActionId[maxRange]~=nil) then > if (PA:ActionInRange(maxRange)) then > return true; > else > return false; > end > end > return nil; > end > |
From: Ionut A. <ion...@ya...> - 2006-02-16 11:31:40
|
Hi.Zd(r)umpi here This file is modified with some lines added in : function PA:ActionInRangeNonTarget(unit, maxRange) with canceling update of the TargetFrame UI thus reducing lag (in my opinion at lest) - havent tested it but it should work just fine. This is done by nilling the update of the TargetFrame. original code from Blizzard TargetFrame.lua : function TargetFrame_OnEvent(event) UnitFrame_OnEvent(event); if ( event == "PLAYER_TARGET_CHANGED" ) then TargetFrame_Update(); ... function TargetFrame_Update() if ( UnitExists("target") ) then this:Show(); UnitFrame_Update(); TargetFrame_CheckLevel(); TargetFrame_CheckFaction(); TargetFrame_CheckClassification(); TargetFrame_CheckDead(); TargetFrame_CheckDishonorableKill(); if ( UnitIsPartyLeader("target") ) then TargetLeaderIcon:Show(); else TargetLeaderIcon:Hide(); end TargetDebuffButton_Update(); TargetPortrait:SetAlpha(1.0); else this:Hide(); end end Think this helps :) |
From: Sam A. <ru...@nc...> - 2006-02-15 12:31:58
|
In C:\Work\Paladin: "C:\Program Files\TortoiseCVS\cvs.exe" "-q" "update" = "-d" "-P" "." CVSROOT=3D:ext:dr...@cv...:/cvsroot/wow-pa cvs.exe update: warning: unrecognized response `*** glibc detected *** = double free or corruption (!prev): 0x003be058 ***' from cvs server cvs.exe [update aborted]: end of file from server (consult above = messages if any) Error, CVS operation failed If anyone else is having issues. let me know. |
From: Sam A. <ru...@nc...> - 2006-02-14 12:57:51
|
This Build I was refering to is not under files, but the CVS source tree. Use anonymous access if you are not a developer. We need French help with the translations, so if anyone knows someone, send them my contact info please. -- Drowsey |
From: Sam A. <ru...@nc...> - 2006-02-14 12:38:57
|
The latest build on CVS is close to the next release. I ask that upgrade checks be done against this build. - Thanks Drowsey |
From: Sam A. <ru...@nc...> - 2006-01-31 00:01:02
|
Good Things to include in a report 1. Settings of PA. The = WTF\Account\Account_Name\SavedVariables\Paladin.lua will do for this. 2. What was your intention. 3. What was going on at the time. (BWL raid, 2nd Boss etc) 4 Debug Level of PAM set to "All Messages" for the Intended (Healing, = Blessing, etc) and Core. 5 What keys were pressed to cause the action. (alt+CycleBless, = CycleNear, Cure, KeyBind for AsComb, etc). 6 Screen shot with chat window enlarged to capture the most debug output = possible. It might also help us if you tried something another way. Say instead of = AsComb, try the AsBless, or Cure buttons seperate. Seems like a lot, but PA is very complex, and we need detail to figure = out what is going on. |
From: Sam A. <ru...@nc...> - 2006-01-30 23:56:41
|
Just sending out garbage, which should not happen very often if at all, = unless the code thats produced.... well forget that.. |