As many people working on this, I'm still very new at Lua, so I occasionally find some bugs. I update these files daily, so you can always get the most up-to-date version there.

Eventually, an addition to the launcher is planned that will maintain addons like it does plugins right now, but no idea when that's gonna go live. Until then, you could install the GitHub Windows client. It takes some getting used to, but it does the trick, and it can automatically synchronize your local files with the ones posted on the Lua addon repository. You can find the client here, if you're interested:
(again, no links for me) windows.github.com

One glitch I have noticed with windower 4, and also with 3.41 but it seems more common on 4, is that sometimes it starts only displaying the last line from the console when I press insert. It also affects infobar in that when I have a mob or nothing targetted the first 1/3 of the information isn't displayed and is just blank.

I posted an updated version of aoeBgone just now. It should use commas and generally work the way it's intended to now. Here's how it works:
* When it detects a "gains the effect of" line, it captures the line in front of it and all "gains" lines in the next 4 seconds
*After 4 seconds, it takes the first word from each "gains the effect of" line, combines them, and puts it out into your log.

So this:

Becomes this:

Edit: Something about the logic still seems to be wrong at least in some cases. It definitely eliminates spam, but it seems to be a little overzealous.

You could try just fixing your macros or spellcast commands or whatever you're using to put quotes around the spell name. That's what it's complaining about -- the command is improperly formatted

I'll try quotes around the spell, but if that doesn't work, you're saying I can't change the order plugins are loaded in? I'm ok with that, I'll just use Autoexec to reload itemizer after I log in if needed...

Okay, updated it again. I can't seem to break this one. It will put a 5 second lag on all your buffs, but the number is somewhat arbitrary. You can reduce it if you want, but you run the risk of missing people from the AoE abilities/spells. Also, currently it affects monster abilities as well. So Magma Hoplon's effect ("gains the effect of stoneskin") shows up on a 5 second time lag. In the future I should probably crossreference the stored names against your own party's names.

Screenshot of Night/Troub song spam:

If I'm really really fast and manage to cast two songs so that their buff descriptions overlap, it merges the player names that are hit. This is going to be an issue in Alliance situations, and I'll probably have to do some party vs. alliance screening of names.

within 60 seconds of eachother? I had to make a timer for perpetuance. Since when you use it -> cast a spell it wears before the chat text for the spell comes through. Thus, it was always giving the normal time. Anyway, This is fixed, thanks

also.... i noticed some... weird things with buffs and the ability to do some funny stuff with people running bTimers through chat >.> as well as some other things that you may not have found out yet..

new bTimers.lua -- i really do appologize for all the new versions so close together, but im fixing stuff as i find it out ><

Code:

--[[
Copyright (c) 2013, Ricky Gall All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the organization nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
]]
require 'tablehelper'
require 'logger'
function event_load()
player = get_player()
buffs = T(get_player()['buffs'])
watchbuffs = {
Haste=180,
Refresh=150,
Protect=1800,
Shell=1800,
Regen=60,
Phalanx=180
} -- only adding a few so you can get the idea
createdTimers = T{}
buffExtension = T{
Perpetuance=2.5,
LightArts=1.8,
Rasa=2.28,
Composure=3
}
extendables = T { 'Regen','Refresh','Blink','Stoneskin','Aquaveil','Haste','Temper','Phalanx' }
extend = T{}
t = 0
end
function event_unload()
for u = 1, #createdTimers do
send_command('timers d "'..createdTimers[u]..'"')
end
end
function event_addon_command(arg1,arg2,arg3)
if arg1 == 'newtimer' then
createTimer(arg2,arg3)
end
end
function event_gain_status(id,name)
if id == 469 then
extend['Perpetuance'] = os.clock()
end
if id == 366 then
extend['Accession'] = os.clock()
end
createTimer(name)
end
function event_lose_status(id,name)
deleteTimer(1,name)
end
function createTimer(name,target)
if watchbuffs[name] ~= nil then
if target == nil then
target = 'Self'
elseif target:lower() == player['name']:lower() then
target = 'Self'
else
target = target
end
for u = 1, #createdTimers do
if createdTimers[u] == name..' ('..target..')' then
send_command('timers d "'..name..' ('..target..')"')
createdTimers:remove(u)
send_command('wait .1;lua c bTimers newtimer '..name..' '..target)
return
end
end
if extendables:contains(name) then
buffs = T(get_player()['buffs'])
timer = tonumber(watchbuffs[name]) - 5
if extend ~= nil then
e = os.clock()-60
if extend['Perpetuance'] ~= nil then
if e < extend['Perpetuance'] then
if target == 'self' then
t = t + 1
if math.even(t) then
extend['Perpetuance'] = nil
t = 0
end
else
extend['Perpetuance'] = nil
end
if name == 'Regen' then
timer = tonumber(watchbuffs[name]) * buffExtension['LightArts'] * buffExtension['Perpetuance'] - 5
else
timer = tonumber(watchbuffs[name]) * buffExtension['Perpetuance'] - 5
end
end
end
elseif buffs:contains(377) then
if name == 'Regen' then
if player['main_job_id'] == 20 then
timer = tonumber(watchbuffs[name]) * buffExtension['Rasa'] - 5
end
end
elseif buffs:contains(358) then
if name == 'Regen' then
if player['main_job_id'] == 20 then
timer = tonumber(watchbuffs[name]) * buffExtension['LightArts'] - 5
end
end
elseif buffs:contains(419) then
timer = tonumber(watchbuffs[name]) * buffExtension['Composure'] - 5
end
else
timer = tonumber(watchbuffs[name]) - 5
end
send_command('timers c "'..name..' ('..target..')" '..timer..' down '..name)
createdTimers[#createdTimers+1] = name..' ('..target..')'
end
end
function deleteTimer(mode,effect,target)
if mode == 1 then -- This mode is for when a buff drops off you (the gain buff triggers faster then the chat message
for u = 1, #createdTimers do
if createdTimers[u] == effect..' (Self)' then
send_command('timers d "'..effect..' (Self)"')
createdTimers:remove(u)
end
end
elseif mode == 2 then
for u = 1, #createdTimers do
if createdTimers[u] == effect..' ('..target..')' then
send_command('timers d "'..effect..' ('..target..')"')
createdTimers:remove(u)
end
end
else
return
end
end
function event_incoming_text(old,new,color)
if T{64,56,191}:contains(color) then
a,b,caster,caster_spell,target,target_effect = string.find(old,'(%w+) casts ([%w%s]+)..(%w+) gains the effect of (%w+).')
c,d,tWear,eWear = string.find(old,'(%w+)\'s (%w+) effect wears off.')
e,f,tar2,eff2 = string.find(old,'(%w+) gains the effect of (%w+).')
if a ~= nil then
if caster:lower() == player['name']:lower() then
createTimer(target_effect,target)
elseif target:lower() == player['name']:lower() then
createTimer(target_effect,target)
end
elseif c ~= nil then
deleteTimer(2,eWear,tWear)
elseif e ~= nil then
if tar2:lower() == player['name']:lower() then
createTimer(eff2,tar2)
end
end
end
return new, color -- must be here or crashes will ensue
end

Nitrous24, thanks for working on that concept. I think what you're writing is similar to my idea for Timers, as can be seen here:https://github.com/Windower/Issues/issues/53
Do you plan adding support for gear worn and merits etc to your script? In case of Perpetuance and Composure, there are few pieces of gear that further increase effect duration, for example (SCH AF3 hands, RDM full AF3 gear set).
Good job thus far anyways!

I'm feeling silly for asking but I really have no idea where to look and this is my first time working with Lua.

I'm adding the buffs for my own jobs to the bTimers.lua but for some reason it doesn't accept job abilities that have a space between them.
I've tried several things, including putting them within quotes, partial text, without the space, with underscore, I just can't get it to register them.

I'm feeling silly for asking but I really have no idea where to look and this is my first time working with Lua.

I'm adding the buffs for my own jobs to the bTimers.lua but for some reason it doesn't accept job abilities that have a space between them.
I've tried several things, including putting them within quotes, partial text, without the space, with underscore, I just can't get it to register them.

Help?

There is a nice post by Arcon explaining some things "LUA guide for programmers" http://forums.windower.net/topic/219...85#entry218985
As for syntax, etc, you cantry googling for it. LUA is quite ubiquitous and a lot of help is available online. I.e., my friend uses LUA scriptig to do anime subtitle effects for intro/outro songs.

Nitrous24, thanks for working on that concept. I think what you're writing is similar to my idea for Timers, as can be seen here:https://github.com/Windower/Issues/issues/53
Do you plan adding support for gear worn and merits etc to your script? In case of Perpetuance and Composure, there are few pieces of gear that further increase effect duration, for example (SCH AF3 hands, RDM full AF3 gear set).
Good job thus far anyways!

Not really in the cards. I mean at some point i can, but ihm is working on timers having yarnball function. If after that timers doesn't take into effect gear i will most certainly consider it.

Also:
New addon done. It's purpose is adding "blacklist" fuction to ffochat.http://goo.gl/ryIUm I cant put it in the windower repo myself but i've a pull request in

There is a nice post by Arcon explaining some things "LUA guide for programmers" http://forums.windower.net/topic/219...85#entry218985
As for syntax, etc, you cantry googling for it. LUA is quite ubiquitous and a lot of help is available online. I.e., my friend uses LUA scriptig to do anime subtitle effects for intro/outro songs.

Thanks for the advise, I've looked through both the guide and put have probably read through the entire official Lua community site.
Fore some reason I can't find it.

Taking my Monk for example:
I get Impetus, Focus, Dodge, etc. no problem.

Things like Perfect Counter, Hundred Fists, Formless Strikes, etc. no matter what I try I can't get it to work.
A few things I've tried with Perfect Counter as that is the fastest to try with:
Perfect Counter, Perfect%sCounter, Perfect'%s'Counter, PerfectCounter, Perfect_Counter, "Perfect Counter".
None of them work, with some I get the Lua to load but it doesn't register the buff, on others I get:
Program Files (x86)\Windower4\\addons\bTimers\bTimers.lua:linenu mber '}' insert random error code.

Thanks for the advise, I've looked through both the guide and put have probably read through the entire official Lua community site.
Fore some reason I can't find it.

Taking my Monk for example:
I get Impetus, Focus, Dodge, etc. no problem.

Things like Perfect Counter, Hundred Fists, Formless Strikes, etc. no matter what I try I can't get it to work.
A few things I've tried with Perfect Counter as that is the fastest to try with:
Perfect Counter, Perfect%sCounter, Perfect'%s'Counter, PerfectCounter, Perfect_Counter, "Perfect Counter".
None of them work, with some I get the Lua to load but it doesn't register the buff, on others I get:
Program Files (x86)\Windower4\\addons\bTimers\bTimers.lua:linenu mber '}' insert random error code.

Quick Edit: JA timers have no spell icons. Sometimes something weird happens with timers that blanks out the name of the timer. Have no fear the timer will still work. You just won't know what it is. It's not a 100% occurance though so if it happens don't worry.

Edit2: Please feel free to PM Me ideas on here or on guildwork. I will likely have no issues adding anything.

Windower 4 crashes upon startup now. It doesnt even make it to the gui. I retried 4 times to be sure it wasn't some random bug. I made a dump of the processes like i vaguely recall earlier but i figure 137mb is a bit larger than what im supposed to send. Gonna see if a windows update i didnt install yet changes things.

All company, product, system names and/or company logos and marks are the registered trademarks or trademarks of their respective owners. The copyrighted material on this site is used under the Fair Use or Parody purpose. If you are the copyright holder and believe your material has been used unfairly please contact one of the forum administrators. Seriously don't be an idiot and send your lawyers after us before even trying to contact us. Blue Gartr forums NEVER encouraged any kind of piracy.Digital Point modules: Sphinx-based search