Lua Addon Ideas |
||
Lua Addon Ideas
Offline
Posts: 3982
Has anyone made an addon that stops you throwing away items you specify from a list? Seeems like a really obvious addon to exist.
RadialArcana said: » Has anyone made an addon that stops you throwing away items you specify from a list? Seeems like a really obvious addon to exist. https://github.com/xurion/ffxi-drop-stop Ragnarok.Kenshi said: » RadialArcana said: » Has anyone made an addon that stops you throwing away items you specify from a list? Seeems like a really obvious addon to exist. https://github.com/xurion/ffxi-drop-stop Offline
Posts: 4
Hello everyone!
Is it possible to make an addon like Tataru helper(FF14) for FF11? It's a tool linked to google translate I believe, that autotranslate lines from the chat and show them in a chat box. I know sometimes the translation would be odd, but it can be very nice to have such an addon.
Necro Bump Detected!
[67 days between previous and next post]
Offline
Posts: 3982
Would it be possible to make an addon that displays maps for areas that blocks the display of maps? For instance Promivion and Dynamis, these areas have maps but the game just doesn't display them.
RadialArcana said: » Would it be possible to make an addon that displays maps for areas that blocks the display of maps? For instance Promivion and Dynamis, these areas have maps but the game just doesn't display them. Hopefully SE implements maps for Promivion now that the zone is becoming a regular part of game play, nevertheless, the idea of an addon to display maps for Dynamis D and prom areas is welcome. Offline
Posts: 3982
Sad thing is, the maps are in the game already.
The UI just refuses to show them. An addon that completely executes BCNM60 Up in Arms; buying orb, entering, defeating, repeat.
RadialArcana said: » Sad thing is, the maps are in the game already. The UI just refuses to show them. Bahamut.Balduran said: » RadialArcana said: » Would it be possible to make an addon that displays maps for areas that blocks the display of maps? For instance Promivion and Dynamis, these areas have maps but the game just doesn't display them. Hopefully SE implements maps for Promivion now that the zone is becoming a regular part of game play, nevertheless, the idea of an addon to display maps for Dynamis D and prom areas is welcome. RadialArcana said: » Would it be possible to make an addon that displays maps for areas that blocks the display of maps? For instance Promivion and Dynamis, these areas have maps but the game just doesn't display them. https://www.bg-wiki.com/ffxi/Teal_Memosphere https://www.bg-wiki.com/ffxi/Indigo_Memosphere https://www.bg-wiki.com/ffxi/White_Memosphere Looks like Square made that add-on about 14 or so years ago. You may have to shout cuz the items drop off NMs and the areas are level capped (30 for the crags, 50 for Vahzl) which can make farming the spheres difficult. Good Luck ^.^ How about an elemental weakness display for Ody fodder mobs?
Phoenix.Mikumaru said: » Looks like Square made that add-on about 14 or so years ago. You may have to shout cuz the items drop off NMs and the areas are level capped (30 for the crags, 50 for Vahzl) which can make farming the spheres difficult. Good Luck ^.^ Would it be difficult to combine the functionality of addons Mount Roulette and Set BGM? I'd love an addon that detects which mount I'm on, and plays a pre-chosen BGM to fit that mount. That way you can select alot of rarely-heard tunes (Eg: Airship via Tulfaire, Halloween theme via Spec. Chair, etc.) and choose them on demand via hopping on that specific mount, or just breaking up the monotony by doing the existing //mr and getting a random mount + Tune.
I wouldn't even begin to assume this is an easy thing to do, but both add-ons exist and it'd be an awesome thing for QoL. Thoughts? Wheres the besieged participation addon?
Asura.Dexprozius said: » Would it be difficult to combine the functionality of addons Mount Roulette and Set BGM? I'd love an addon that detects which mount I'm on, and plays a pre-chosen BGM to fit that mount. That way you can select alot of rarely-heard tunes (Eg: Airship via Tulfaire, Halloween theme via Spec. Chair, etc.) and choose them on demand via hopping on that specific mount, or just breaking up the monotony by doing the existing //mr and getting a random mount + Tune. I wouldn't even begin to assume this is an easy thing to do, but both add-ons exist and it'd be an awesome thing for QoL. Thoughts? https://www.ffxiah.com/forum/topic/52094/randommount-a-random-mount-selector-for-windower/2/#3541213 Asura.Wormfeeder said: » Nyarlko said: » So.. A couple lsmates and I are working on making an addon which simplifies/unifies BLM nukes to single commands. The basics: 1) Set element mode by direct command or cycling thru elements. 2) Addon command like.. "//nuke3" casts a T3 nuke of the current element. Will also have aoe versions like "//nukega2" which does the same for aoe nukes. The other guys working on this are professional programmers, but aren't too familiar with the LUA language, so we have that much running, but we've run into a snag. We'd like to include the functionality from a GS include that I made which handles spell degradation, (bumps your cast down a tier if the one you call for is on cooldown or you don't have enough MP to cast it,) but none of us are familiar enough w/ the language to easily convert GS code > addon code. Are there any good resources/documentation on how to do so? How much of GS syntax is tied directly to GS and is going to be difficult to replicate as a stand-alone addon? I know that we could just include the include file with instructions on how to use it, but this has become a learning experience for us and want to know how to do what we want to do. ^^ ------------------------------------------------------------------------------------------------------------------- -- Utility functions for changing spells and target types in an automatic manner. ------------------------------------------------------------------------------------------------------------------- local waltz_tp_cost = {['Curing Waltz'] = 200, ['Curing Waltz II'] = 350, ['Curing Waltz III'] = 500, ['Curing Waltz IV'] = 650, ['Curing Waltz V'] = 800} -- Utility function for automatically adjusting the waltz spell being used to match HP needs and TP limits. -- Handle spell changes before attempting any precast stuff. function refine_waltz(spell, action, spellMap, eventArgs) if spell.type ~= 'Waltz' then return end -- Don't modify anything for Healing Waltz or Divine Waltzes if spell.english == "Healing Waltz" or spell.english == "Divine Waltz" or spell.english == "Divine Waltz II" then return end local newWaltz = spell.english local waltzID local missingHP -- If curing ourself, get our exact missing HP if spell.target.type == "SELF" then missingHP = player.max_hp - player.hp -- If curing someone in our alliance, we can estimate their missing HP elseif spell.target.isallymember then local target = find_player_in_alliance(spell.target.name) local est_max_hp = target.hp / (target.hpp/100) missingHP = math.floor(est_max_hp - target.hp) end -- If we have an estimated missing HP value, we can adjust the preferred tier used. if missingHP ~= nil then if player.main_job == 'DNC' then if missingHP < 40 and spell.target.name == player.name then -- Not worth curing yourself for so little. -- Don't block when curing others to allow for waking them up. add_to_chat(122,'Full HP!') eventArgs.cancel = true return elseif missingHP < 200 then newWaltz = 'Curing Waltz' waltzID = 190 elseif missingHP < 600 then newWaltz = 'Curing Waltz II' waltzID = 191 elseif missingHP < 1100 then newWaltz = 'Curing Waltz III' waltzID = 192 elseif missingHP < 1500 then newWaltz = 'Curing Waltz IV' waltzID = 193 else newWaltz = 'Curing Waltz V' waltzID = 311 end elseif player.sub_job == 'DNC' then if missingHP < 40 and spell.target.name == player.name then -- Not worth curing yourself for so little. -- Don't block when curing others to allow for waking them up. add_to_chat(122,'Full HP!') eventArgs.cancel = true return elseif missingHP < 150 then newWaltz = 'Curing Waltz' waltzID = 190 elseif missingHP < 300 then newWaltz = 'Curing Waltz II' waltzID = 191 else newWaltz = 'Curing Waltz III' waltzID = 192 end else -- Not dnc main or sub; bail out return end end local tpCost = waltz_tp_cost[newWaltz] local downgrade -- Downgrade the spell to what we can afford if player.tp < tpCost and not buffactive.trance then --[[ Costs: Curing Waltz: 200 TP Curing Waltz II: 350 TP Curing Waltz III: 500 TP Curing Waltz IV: 650 TP Curing Waltz V: 800 TP Divine Waltz: 400 TP Divine Waltz II: 800 TP --]] if player.tp < 200 then add_to_chat(122, 'Insufficient TP ['..tostring(player.tp)..']. Cancelling.') eventArgs.cancel = true return elseif player.tp < 350 then newWaltz = 'Curing Waltz' elseif player.tp < 500 then newWaltz = 'Curing Waltz II' elseif player.tp < 650 then newWaltz = 'Curing Waltz III' elseif player.tp < 800 then newWaltz = 'Curing Waltz IV' end downgrade = 'Insufficient TP ['..tostring(player.tp)..']. Downgrading to '..newWaltz..'.' end if newWaltz ~= spell.english then send_command('@input /ja "'..newWaltz..'" '..tostring(spell.target.raw)) if downgrade then add_to_chat(122, downgrade) end eventArgs.cancel = true return end if missingHP and missingHP > 0 then add_to_chat(122,'Trying to cure '..tostring(missingHP)..' HP using '..newWaltz..'.') end end Asura.Wormfeeder said: » Nyarlko said: » So.. A couple lsmates and I are working on making an addon which simplifies/unifies BLM nukes to single commands. The basics: 1) Set element mode by direct command or cycling thru elements. 2) Addon command like.. "//nuke3" casts a T3 nuke of the current element. Will also have aoe versions like "//nukega2" which does the same for aoe nukes. The other guys working on this are professional programmers, but aren't too familiar with the LUA language, so we have that much running, but we've run into a snag. We'd like to include the functionality from a GS include that I made which handles spell degradation, (bumps your cast down a tier if the one you call for is on cooldown or you don't have enough MP to cast it,) but none of us are familiar enough w/ the language to easily convert GS code > addon code. Are there any good resources/documentation on how to do so? How much of GS syntax is tied directly to GS and is going to be difficult to replicate as a stand-alone addon? I know that we could just include the include file with instructions on how to use it, but this has become a learning experience for us and want to know how to do what we want to do. ^^ ------------------------------------------------------------------------------------------------------------------- -- Utility functions for changing spells and target types in an automatic manner. ------------------------------------------------------------------------------------------------------------------- local waltz_tp_cost = {['Curing Waltz'] = 200, ['Curing Waltz II'] = 350, ['Curing Waltz III'] = 500, ['Curing Waltz IV'] = 650, ['Curing Waltz V'] = 800} -- Utility function for automatically adjusting the waltz spell being used to match HP needs and TP limits. -- Handle spell changes before attempting any precast stuff. function refine_waltz(spell, action, spellMap, eventArgs) if spell.type ~= 'Waltz' then return end -- Don't modify anything for Healing Waltz or Divine Waltzes if spell.english == "Healing Waltz" or spell.english == "Divine Waltz" or spell.english == "Divine Waltz II" then return end local newWaltz = spell.english local waltzID local missingHP -- If curing ourself, get our exact missing HP if spell.target.type == "SELF" then missingHP = player.max_hp - player.hp -- If curing someone in our alliance, we can estimate their missing HP elseif spell.target.isallymember then local target = find_player_in_alliance(spell.target.name) local est_max_hp = target.hp / (target.hpp/100) missingHP = math.floor(est_max_hp - target.hp) end -- If we have an estimated missing HP value, we can adjust the preferred tier used. if missingHP ~= nil then if player.main_job == 'DNC' then if missingHP < 40 and spell.target.name == player.name then -- Not worth curing yourself for so little. -- Don't block when curing others to allow for waking them up. add_to_chat(122,'Full HP!') eventArgs.cancel = true return elseif missingHP < 200 then newWaltz = 'Curing Waltz' waltzID = 190 elseif missingHP < 600 then newWaltz = 'Curing Waltz II' waltzID = 191 elseif missingHP < 1100 then newWaltz = 'Curing Waltz III' waltzID = 192 elseif missingHP < 1500 then newWaltz = 'Curing Waltz IV' waltzID = 193 else newWaltz = 'Curing Waltz V' waltzID = 311 end elseif player.sub_job == 'DNC' then if missingHP < 40 and spell.target.name == player.name then -- Not worth curing yourself for so little. -- Don't block when curing others to allow for waking them up. add_to_chat(122,'Full HP!') eventArgs.cancel = true return elseif missingHP < 150 then newWaltz = 'Curing Waltz' waltzID = 190 elseif missingHP < 300 then newWaltz = 'Curing Waltz II' waltzID = 191 else newWaltz = 'Curing Waltz III' waltzID = 192 end else -- Not dnc main or sub; bail out return end end local tpCost = waltz_tp_cost[newWaltz] local downgrade -- Downgrade the spell to what we can afford if player.tp < tpCost and not buffactive.trance then --[[ Costs: Curing Waltz: 200 TP Curing Waltz II: 350 TP Curing Waltz III: 500 TP Curing Waltz IV: 650 TP Curing Waltz V: 800 TP Divine Waltz: 400 TP Divine Waltz II: 800 TP --]] if player.tp < 200 then add_to_chat(122, 'Insufficient TP ['..tostring(player.tp)..']. Cancelling.') eventArgs.cancel = true return elseif player.tp < 350 then newWaltz = 'Curing Waltz' elseif player.tp < 500 then newWaltz = 'Curing Waltz II' elseif player.tp < 650 then newWaltz = 'Curing Waltz III' elseif player.tp < 800 then newWaltz = 'Curing Waltz IV' end downgrade = 'Insufficient TP ['..tostring(player.tp)..']. Downgrading to '..newWaltz..'.' end if newWaltz ~= spell.english then send_command('@input /ja "'..newWaltz..'" '..tostring(spell.target.raw)) if downgrade then add_to_chat(122, downgrade) end eventArgs.cancel = true return end if missingHP and missingHP > 0 then add_to_chat(122,'Trying to cure '..tostring(missingHP)..' HP using '..newWaltz..'.') end end Does something exist or is it possible to do something like this for weaponskills based on whether aftermath is on? I want a WS command to check if mythic aftermath is up or not, and if it is, execute WS, otherwise cancel WS altogether until 300% TP and change WS to mythic WS. Beau said: » How do I make my farm bot keep AM3 up? Offline
Posts: 84
Bismarck.Xurion said: » Ragnarok.Kenshi said: » RadialArcana said: » Has anyone made an addon that stops you throwing away items you specify from a list? Seeems like a really obvious addon to exist. https://github.com/xurion/ffxi-drop-stop What's left unfinished? Seems to work well enough from experience. Maybe a command to return a list of items DropStop is protecting? P.S. Assuming both are loaded, would DropStop prevent items from being dropped by Treasury? Something that can give Signet/Sanction/Etc. in a single click, a la Sparks.
Offline
Posts: 1109
Valefor.Prothescar said: » Something that can give Signet/Sanction/Etc. in a single click, a la Sparks. New Add-on: Sir PopaLot : https://ffxiah.com/forum/topic/55597/new-add-on-sir-popalot/ Set up a hotkey for the command "pop" Rememeber to disable window animation in game as it works be emulating key pressed and not packets How about a way to see shouts outside of being in towns.
Bismarck.Xurion said: » Asura.Dexprozius said: » Would it be difficult to combine the functionality of addons Mount Roulette and Set BGM? I'd love an addon that detects which mount I'm on, and plays a pre-chosen BGM to fit that mount. That way you can select alot of rarely-heard tunes (Eg: Airship via Tulfaire, Halloween theme via Spec. Chair, etc.) and choose them on demand via hopping on that specific mount, or just breaking up the monotony by doing the existing //mr and getting a random mount + Tune. I wouldn't even begin to assume this is an easy thing to do, but both add-ons exist and it'd be an awesome thing for QoL. Thoughts? https://www.ffxiah.com/forum/topic/52094/randommount-a-random-mount-selector-for-windower/2/#3541213 Im not good with code, but I'm assuming the MountRoulette function is a simple randomizer and sends the mount command to the server after selection, via /raptor /tiger etc. It'd probably be a bit verbose, but could you then have a ton of If, then functions? If /tiger, then /setbgm 001 or whatever? Maybe I'm presuming its much simpler than it actually is. I was very dissatisfied with the mountmuzzle addon for its lack of options. Its main purpose seemed to be to simply replace or remove the standard mount tune. Univarsity said: » How about a way to see shouts outside of being in towns. Tathamet said: » Bismarck.Xurion said: » Ragnarok.Kenshi said: » RadialArcana said: » Has anyone made an addon that stops you throwing away items you specify from a list? Seeems like a really obvious addon to exist. https://github.com/xurion/ffxi-drop-stop What's left unfinished? Seems to work well enough from experience. Maybe a command to return a list of items DropStop is protecting? P.S. Assuming both are loaded, would DropStop prevent items from being dropped by Treasury? The addon could do with including things by default such as crafting shields, valuable mats that are used to obtain things like shields etc. Also no, I tested DropStop vs Treasury and Treasury seemed to "win" in a drop > nope > drop > nope > drop game of pingpong. I don't know if I'd want to "fix" that anyway - if you tell Treasury to explicitly drop something that's valuable, DropStop probably shouldn't prevent it. Asura.Dexprozius said: » Bismarck.Xurion said: » Asura.Dexprozius said: » Would it be difficult to combine the functionality of addons Mount Roulette and Set BGM? I'd love an addon that detects which mount I'm on, and plays a pre-chosen BGM to fit that mount. That way you can select alot of rarely-heard tunes (Eg: Airship via Tulfaire, Halloween theme via Spec. Chair, etc.) and choose them on demand via hopping on that specific mount, or just breaking up the monotony by doing the existing //mr and getting a random mount + Tune. I wouldn't even begin to assume this is an easy thing to do, but both add-ons exist and it'd be an awesome thing for QoL. Thoughts? https://www.ffxiah.com/forum/topic/52094/randommount-a-random-mount-selector-for-windower/2/#3541213 Im not good with code, but I'm assuming the MountRoulette function is a simple randomizer and sends the mount command to the server after selection, via /raptor /tiger etc. It'd probably be a bit verbose, but could you then have a ton of If, then functions? If /tiger, then /setbgm 001 or whatever? Maybe I'm presuming its much simpler than it actually is. I was very dissatisfied with the mountmuzzle addon for its lack of options. Its main purpose seemed to be to simply replace or remove the standard mount tune. Long story short, MR just generates a random number when you tell it to choose a mount, and then uses that number to select from a list of pre-determined mounts that are available to you. From what I've seen, the MountMuzzle addon does exactly what you said, and it was a very well received QoL not having to listen to that music anymore! The if...else condition logic you mention is something that would need to be maintained as new mounts were added. Instead, I feel like the MountMuzzle addon should be responsible for setting the music for specific mounts that the user can configure. I was wondering if there is an addon that you could run against your inventory to tell you what equip you could add to a storage slip to reclaim inventory space?
Asura.Bulbafett said: » I was wondering if there is an addon that you could run against your inventory to tell you what equip you could add to a storage slip to reclaim inventory space? Code require('luau') local slips = require('slips') local res = require ('resources').items local items = windower.ffxi.get_items() for _,container in pairs (slips.default_storages) do for _,item in ipairs (items[container]) do if (item.id > 0) then for slip_id,slip_table in pairs (slips.items) do for _,j in ipairs (slip_table) do if (j == item.id) then log ("%s:%s can be stored in %s":format(container:color(259), res[item.id].name:color(258), res[slip_id].name:color(240))) end end end end end end Something like dupe find that works ;;
PorterPacker does this using an export command.
Asura.Toralin said: » Luacode & pic |
||
All FFXI content and images © 2002-2024 SQUARE ENIX CO., LTD. FINAL
FANTASY is a registered trademark of Square Enix Co., Ltd.
|