|
Gearswap Support Thread
By drakefs 2021-03-22 06:21:16
Leviathan.Celebrindal said: »Any suggestions of what I could study to see how others do such things? Again, not looking for an immediate fix, more of a long-term learning project, and thanks!
Gearinfo provides DW needed to delay cap
https://github.com/ArislanShiva/luas/blob/master/Arislan-THF.lua
starts at line 1020 for setting DW set (haste level)
Gearinfo does not work with BLU, so I stole borrowed some code to tally up my haste buffs and set the haste level by that. This code makes some assumptions due to the facts GS does not see a difference in Haste vs Haste II, cannot see if you are affected by Haste Samba from an outside source and has no idea which Marches are used.
https://github.com/DrakeFS/GearSwap/blob/master/BLU.lua
starts at line 832
The assumptions made are (this is based off of my average buff situations)
A second value could be added to the Haste Samba toggle to account for 10% but I really didn't see a point as I almost never have 10% Haste Samba am lazy.
You could also account for a DRG pet for DRG/NIN but that is very edge case.
Now this code could be adapted to tally up your attack buffs and set your PDL set level BUT I would not suggest this route, as whether or not you are attack capped purely depends on the mobs DEF, which changes. This would probably be case where you should manually decide on your PDL through a cycle state (ie. F9 in a motes lua).
サーバ: Leviathan
Game: FFXI
Posts: 3753
By Leviathan.Celebrindal 2021-03-22 11:31:14
This would probably be case where you should manually decide on your PDL through a cycle state (ie. F9 in a motes lua).
I dont' auto detect anythign with my luas. I like having control over all aspects of accuracy tiers, haste levels for DW, and the like. the ONLY thing I automate vs manually choose is usage of orpheus's sash.
I guess I've simply worded what I'm looking for poorly. I wasn't looking for the given examples that I've seen for years, and I'd hope someone asking for help checked them out first. I don't need to be linked to the DW cheat sheet and then some auto-detecting lua that I've honestly worked very hard to avoid. People's desire to help is appreciated- but very far off what I was hoping for.
I simply wanted to see examples of people's work and how they create multiple function cycling depending on the mode of damage.
VIP
サーバ: Fenrir
Game: FFXI
Posts: 758
By Fenrir.Niflheim 2021-03-22 12:41:38
So you can define a set of "mode" strings like this Code
TP_Array = {'TPnormal', 'TPacc', 'Hybrid', 'Turtle'}
TP_Index = 1
Then set up a command to cycle them like this: Code function self_command(command)
if command:lower() == 'cycle tp set' then
TP_Index = (TP_Index % #TP_Array) + 1
status_change(player.status)
add_to_chat(TP_Array[TP_Index]..' SET')
end
end
サーバ: Leviathan
Game: FFXI
Posts: 3753
By Leviathan.Celebrindal 2021-03-22 12:57:53
So you can define a set of "mode" strings like this Code
TP_Array = {'TPnormal', 'TPacc', 'Hybrid', 'Turtle'}
TP_Index = 1
Then set up a command to cycle them like this: Code function self_command(command)
if command:lower() == 'cycle tp set' then
TP_Index = (TP_Index % #TP_Array) + 1
status_change(player.status)
add_to_chat(TP_Array[TP_Index]..' SET')
end
end
That's pretty similar to what I'm doing now. Right now my "modes" are {LowACC,HighACC,Aftermath,Haste}, as the mode change affects my ranged, melee, and WSs all at once. But I'd prefer to have those 3 on unique arrays I can cycle through independently.
The current way I do things looks like this:
sets.Midshot.LowACC
sets.Midshot.HighACC
(etc)
sets.engaged.LowACC
sets.engaged.HighACC
(etc)
and such. I think first I'll need to create the arrays using unique modifiers, such as:
sets.Midshot.LowACC
sets.Midshot.HighACC
sets.engaged.LowHaste
sets.engaged.HighHaste
sets.precast.WS.Normal
sets.precast.WS.PDL
and then write commands to cycle each. I am familiar with how to do a basic keybind and cycle command, but its splitting them up among different actions vs just a general cycle that I'm unfamiliar with.
While I know many great people out there can and would gladly say "just send me your lua, I'll set it up", I'm really desiring seeing some examples of setups like this that don't require include files so I can learn a thing or two.
VIP
サーバ: Fenrir
Game: FFXI
Posts: 758
By Fenrir.Niflheim 2021-03-22 15:23:51
I helped a friend set up that kinda thing, I have a few copies of his files laying around, just need to check with him before I share them.
[+]
VIP
サーバ: Fenrir
Game: FFXI
Posts: 758
By Fenrir.Niflheim 2021-03-22 15:45:25
Ok got approval so here is a link to the gist for it: Sam Gearswap No Include, with modes
Not something i suggest for everyone but I can understand there are people who want to have the deep understanding of their tools.
Might have one more for his ranger that I can look for when I get home tonight.
[+]
By drakefs 2021-04-04 22:17:50
Leviathan.Celebrindal said: » But I'd prefer to have those 3 on unique arrays I can cycle through independently.
I dug through how mote appends modifiers to the meleeSet and basically you can use as many states and modifiers as you want.
Code function status_change(new, old)
if new == 'Engaged' then
equip(get_melee_set())
else equip(sets.idle)
end
end
Code function get_melee_set()
local meleeSet = sets.engaged
if not meleeSet then
return {}
end
if state.CombatForm.has_value and meleeSet[state.CombatForm.value] and state.CombatForm.value ~= 'none' then
meleeSet = meleeSet[state.CombatForm.value]
end
if state.CombatHaste.has_value and meleeSet[state.CombatHaste.value] then
meleeSet = meleeSet[state.CombatHaste.value]
end
return meleeSet
end
Using two states (this is still using Mote's Modes.lua and Mote-SelfCommands.lua for definition and cycling. However, you should be able to use the states you define in the function above, like TP_Array and TP_Index to change to the correct state)
Code state.CombatForm:options('none','DW','THand')
state.CombatHaste:options('Low','Mid','High','Max')
which ends up with me having define these sets
Code sets.engaged = {}
sets.engaged.DW = {}
sets.engaged.THand = {}
sets.engaged.Low = {left_ring="Pernicious Ring",}
sets.engaged.Mid = {left_ear="Steelflash Earring",}
sets.engaged.High = {head="Malignance Chapeau",}
sets.engaged.Max = {}
sets.engaged.DW.Low = {right_ring="Petrov Ring",}
sets.engaged.DW.Mid = {waist="Windbuffet Belt +1",}
sets.engaged.DW.High = {body="Malignance Tabard",}
sets.engaged.DW.Max = {}
sets.engaged.THand.Low = {right_ear="Bladeborn Earring",}
sets.engaged.THand.Mid = {neck="Mirage Stole +2",}
sets.engaged.THand.High = {ammo="Ginsen",}
sets.engaged.THand.Max = {}
The gear was me testing that it worked as expected.
Sylph.Ketsui
サーバ: Sylph
Game: FFXI
Posts: 91
By Sylph.Ketsui 2021-04-16 00:58:59
Is there a way of preventing the key bindings of F9-F12 completely?
This came to me as a surprise when I first tried gearswap, because F10 is somewhat important for targeting in FFXI itself.
Normally, I would begin every lua with
Code function user_setup()
send_command('unbind f9')
send_command('unbind f10')
send_command('unbind f11')
send_command('unbind f12')
end
But this does not always work, sometimes it keeps the keys bound anyway. Very annoying.
Bahamut.Kelg
サーバ: Bahamut
Game: FFXI
Posts: 58
By Bahamut.Kelg 2021-04-16 09:39:40
I'm trying to create a simple gear lock toggle for maxhp sets...
I wrote in a 'TankMode' cycle with Off/On options
Code state.TankMode = M{['description']='Tank Mode', 'Off', 'On'}
The intent is to prevent a few slots from swapping during all actions to keep MaxHp high
Code
function customize_base_set(baseSet)
if state.Tankmode.value == 'On' then
equip(sets.Tank)
disable('back', 'ear1', 'ear2','ring2')
else
enable('back', 'ear1', 'ear2','ring2')
end
end
What am I doing wrong here? I'm just trying to get my lua to equip "Sets.Tank" and then disable these gear slots when Tankmode is set to 'On' and enable when 'Off'.
Bahamut.Ayasha
サーバ: Bahamut
Game: FFXI
Posts: 96
By Bahamut.Ayasha 2021-04-16 10:23:58
Well, without testing this or knowing what the error is, or seeing the entirety of your code, you have an identifier named "TankMode" (with a capital 'M') in the first code snippet and "Tankmode" (with a lower-case 'm') in the second. Identifiers in Lua are case sensitive.
Bahamut.Kelg
サーバ: Bahamut
Game: FFXI
Posts: 58
By Bahamut.Kelg 2021-04-16 10:40:11
Fixed the lower case, but that's pretty much the whole code I have other than a cycle mode key.
I'm just not sure how to get it to lock in the slots when I have tank mode set to 'On'.
By drakefs 2021-04-16 12:04:23
I'm trying to create a simple gear lock toggle for maxhp sets... Code
function customize_base_set(baseSet)
What calls
?
Carbuncle.Ared
サーバ: Carbuncle
Game: FFXI
Posts: 15
By Carbuncle.Ared 2021-04-16 12:09:52
Is there a way of preventing the key bindings of F9-F12 completely?
This came to me as a surprise when I first tried gearswap, because F10 is somewhat important for targeting in FFXI itself.
Just a thought... Are you using Mote's library (or a derivative)? And are you calling including Mote's after this portion of code? If you are, then you're unbinding correctly, but then rebinding afterward.
By drakefs 2021-04-17 02:04:05
This came to me as a surprise when I first tried gearswap, because F10 is somewhat important for targeting in FFXI itself.
I thought F8 was the default target closest...
Sounds like you are using a Mote based lua and if so (if the lua has Code include('Mote-Include.lua') you are), then you may just need to setup a sidecar file called Code <charactername>-Global.lua and include the functions Code function global_on_load()
end
function global_on_unload()
end
this file will go in your data folder along with your other job luas Code ...\Windower\addons\GearSwap\data
If that does not work, the file you need to edit is Code ...\Windower\addons\GearSwap\libs\Mote-Globals.lua
You can comment out the binds but if an update is pushed out you may have to re-edit the file again.
Sylph.Ketsui
サーバ: Sylph
Game: FFXI
Posts: 91
By Sylph.Ketsui 2021-04-19 06:47:48
I thought F8 was the default target closest...
F8 = Target nearest hostile/attackable NPC, if none is in view, target nearest friendly NPC.
F10 = Target nearest friendly NPC, if none is in view, target nearest hostile/attackable NPC.
If you ever stand in front of the Reisenjima Goblin and there's a mob in view, use F10 to target the Gob. :)
If that does not work, the file you need to edit is Code ...\Windower\addons\GearSwap\libs\Mote-Globals.lua
You can comment out the binds but if an update is pushed out you may have to re-edit the file again.
Thanks, this is exactly what I was looking for. Begone, bindings! :D
サーバ: Asura
Game: FFXI
Posts: 71
By Asura.Cordyfox 2021-04-19 13:41:09
I'm struggling to create a toggle to cycle through equipping of weapons. I'm using Arislan's modifications of Mote's luas. Does anyone have any advice on even where to start with this? Nothing I've tried works.
By drakefs 2021-04-21 05:05:16
Which job lua?
Like in their RDM lua you would add the set name to Code state.WeaponSet = M{['description']='Weapon Set', 'CroceaDark', 'CroceaLight', 'Almace', 'Naegling', 'Tauret', 'Idle'}
and add a set to match Code sets.CroceaDark = {main="Crocea Mors", sub="Ternion Dagger +1"}
sets.CroceaLight = {main="Crocea Mors", sub="Daybreak"}
sets.Almace = {main="Almace", sub="Ternion Dagger +1"}
sets.Naegling = {main="Naegling", sub="Thibron"}
sets.Tauret = {main="Tauret", sub="Ternion Dagger +1"}
sets.Idle = {main="Daybreak", sub="Sacro Bulwark"}
It would look like this: Code state.WeaponSet = M{['description']='Weapon Set', 'CroceaDark', 'CroceaLight', 'Almace', 'Naegling', 'Tauret', 'Maxentius', 'Idle'} Code sets.CroceaDark = {main="Crocea Mors", sub="Ternion Dagger +1"}
sets.CroceaLight = {main="Crocea Mors", sub="Daybreak"}
sets.Almace = {main="Almace", sub="Ternion Dagger +1"}
sets.Naegling = {main="Naegling", sub="Thibron"}
sets.Tauret = {main="Tauret", sub="Ternion Dagger +1"}
sets.Maxentius = {main="Maxentius", sub="Thibron"}
sets.Idle = {main="Daybreak", sub="Sacro Bulwark"}
By Garretts 2021-04-21 14:11:35
How hard/complex would it be to create a rule in gear swap to provide some sort of functionality to alleviate duplicate earrings and rings? Occasionally on WHM or BLU or other various jobs, equipping duplicate rings/earrings (Mache, Chirich, Stikini, etc.) will hang up and leave me in the wrong piece.
(Using Selindrile's LUA's, if that matters)
This is by no means a major problem, mainly because as far as I can tell, It always equips what I need when I'm doing an action, but only gaff's when returning to Idle/Auto-attack engaged.
I thought of some sort of variable that it could flag if both ring1+ring2 (or left_ring+right_ring) had the same equipment piece, and then assign one of the rings/earrings directly to a slot, maybe with Item ID? Possibly detect the duplicate reference, scan your inventory for said items, and then assign individual item ID's directly to said slots.
I searched this thread, and the internet in general with : 'ffxi duplicate equip gearswap' in the search engine, but mostly i saw comments regarding priority swaps, which i understand, but I've tried that, and I don't think it works
By drakefs 2021-04-21 15:09:47
I think you can put dupes in another bag and then specify which bag to equip from to alleviate the issue.
Code left_ring={name="Varar Ring", bag="wardrobe2"},
right_ring={name="Varar Ring", bag="wardrobe3"},
サーバ: Asura
Game: FFXI
Posts: 71
By Asura.Cordyfox 2021-04-21 17:20:51
Which job lua?
Like in their RDM lua you would add the set name to Code state.WeaponSet = M{['description']='Weapon Set', 'CroceaDark', 'CroceaLight', 'Almace', 'Naegling', 'Tauret', 'Idle'}
and add a set to match Code sets.CroceaDark = {main="Crocea Mors", sub="Ternion Dagger +1"}
sets.CroceaLight = {main="Crocea Mors", sub="Daybreak"}
sets.Almace = {main="Almace", sub="Ternion Dagger +1"}
sets.Naegling = {main="Naegling", sub="Thibron"}
sets.Tauret = {main="Tauret", sub="Ternion Dagger +1"}
sets.Idle = {main="Daybreak", sub="Sacro Bulwark"}
It would look like this: Code state.WeaponSet = M{['description']='Weapon Set', 'CroceaDark', 'CroceaLight', 'Almace', 'Naegling', 'Tauret', 'Maxentius', 'Idle'} Code sets.CroceaDark = {main="Crocea Mors", sub="Ternion Dagger +1"}
sets.CroceaLight = {main="Crocea Mors", sub="Daybreak"}
sets.Almace = {main="Almace", sub="Ternion Dagger +1"}
sets.Naegling = {main="Naegling", sub="Thibron"}
sets.Tauret = {main="Tauret", sub="Ternion Dagger +1"}
sets.Maxentius = {main="Maxentius", sub="Thibron"}
sets.Idle = {main="Daybreak", sub="Sacro Bulwark"}
The toggle works. Nothing actually equips. This is the case for any job.
By drakefs 2021-04-21 18:21:20
The toggle works. Nothing actually equips. This is the case for any job.
I just made the changes myself to their RDM lua and it worked (changed the name to test.lua, commented out the includes for the geo\global binds and made the changes I suggested). Loaded on my BLU and the lua properly changed weapons (well it changed between Almace, Naegling and Maxentius). Do you have the weapon lock mode on? Otherwise, not sure why it isn't working for you unless you modified the function: Code function check_weaponset()
equip(sets[state.WeaponSet.current])
if player.sub_job ~= 'NIN' and player.sub_job ~= 'DNC' then
equip(sets.DefaultShield)
end
end
or how it is called.
I will note that Arislan has two customize_melee_set(meleeSet) functions: Code function customize_melee_set(meleeSet)
if state.EnspellMode.value == true then
meleeSet = set_combine(meleeSet, sets.engaged.Enspell)
end
if state.EnspellMode.value == true and player.hpp <= 75 and player.tp < 1000 then
meleeSet = set_combine(meleeSet, sets.engaged.Enspell.Fencer)
end
if state.TreasureMode.value == 'Fulltime' then
meleeSet = set_combine(meleeSet, sets.TreasureHunter)
end
check_weaponset()
return meleeSet
end
-- Modify the default melee set after it was constructed.
--[[function customize_melee_set(meleeSet)
return meleeSet
end]]
which I commented out the empty one after testing and retested to make sure it wasn't causing an issue.
サーバ: Asura
Game: FFXI
Posts: 71
By Asura.Cordyfox 2021-04-21 18:24:40
The toggle works. Nothing actually equips. This is the case for any job.
I just made the changes myself to their RDM lua and it worked (changed the name to test.lua, commented out the includes for the geo\global binds and made the changes I suggested). Loaded on my BLU and the lua properly changed weapons (well it changed between Almace, Naegling and Maxentius). Do you have the weapon lock mode on? Otherwise, not sure why it isn't working for you unless you modified the function: Code function check_weaponset()
equip(sets[state.WeaponSet.current])
if player.sub_job ~= 'NIN' and player.sub_job ~= 'DNC' then
equip(sets.DefaultShield)
end
end
or how it is called.
I will note that Arislan has two customize_melee_set(meleeSet) functions: Code function customize_melee_set(meleeSet)
if state.EnspellMode.value == true then
meleeSet = set_combine(meleeSet, sets.engaged.Enspell)
end
if state.EnspellMode.value == true and player.hpp <= 75 and player.tp < 1000 then
meleeSet = set_combine(meleeSet, sets.engaged.Enspell.Fencer)
end
if state.TreasureMode.value == 'Fulltime' then
meleeSet = set_combine(meleeSet, sets.TreasureHunter)
end
check_weaponset()
return meleeSet
end
-- Modify the default melee set after it was constructed.
--[[function customize_melee_set(meleeSet)
return meleeSet
end]]
which I commented out the empty one after testing and retested to make sure it wasn't causing an issue.
That's just it--weapon lock definitely isn't on, and I haven't changed any of the functions, just remapped the toggle.
By drakefs 2021-04-22 07:12:16
Have you tested it while meleeing?
I just commented out all the binds and used to cycle and it worked as it should.
サーバ: Asura
Game: FFXI
Posts: 79
By Asura.Iamarealgirl 2021-04-22 11:55:23
i'm having trouble with my thf.lua
i'm using arislan's lua.
i've used it before but my pc got wiped and i lost everything.
whats happening is i use the keybind to switch my TH gear in. the problem is somehow it's still switching in his gearset even though i changed everything to my gear. so i went through and completely removed everything he had in his TH sets and replaced everything with mine using export. now its not switch anything.
i copied the mote-treasurehunter file to make sure mine was up to date.
heres my set for treasure hunter in the lua: Code sets.TreasureHunter = {
range="Raider's Bmrng.",
head={ name="Herculean Helm", augments={'Pet: Accuracy+15 Pet: Rng. Acc.+15','Pet: DEX+7','"Treasure Hunter"+1',}},
body="Meg. Cuirie +2",
hands={ name="Plun. Armlets +1", augments={'Enhances "Perfect Dodge" effect',}},
legs="Meg. Chausses +2",
feet="Skulk. Poulaines",
neck="Erudit. Necklace",
waist="Chaac Belt",
left_ear="Suppanomimi",
right_ear="Eabani Earring",
left_ring="Gere Ring",
right_ring="Hetairoi Ring",
back={ name="Canny Cape", augments={'DEX+3','AGI+3','"Dual Wield"+2','Crit. hit damage +3%',}}}
also the only thing i changed was the TH set and i removed his herculean/reisinjima sets armor from the lua.
サーバ: Asura
Game: FFXI
Posts: 79
By Asura.Iamarealgirl 2021-04-22 11:58:33
just tried
//gs equip sets.TreasureHunter
and that worked
but using the ctrl + = keybind doesnt
サーバ: Asura
Game: FFXI
Posts: 79
By Asura.Iamarealgirl 2021-04-22 12:14:26
figured it out, wasnt equipping because of idleset. only equips when engaged. thanks to this community. if it wasnt for you guys theres no way in hell i wouldve been able to figure this out by myself
Hades.Ruuz
サーバ: Hades
Game: FFXI
Posts: 2
By Hades.Ruuz 2021-04-30 03:40:33
This problem is keeping me up into the middle of the night:
Why would aftercast(spell, act) start before the spell has finished casting? From watching equipviewer icons and showswaps, I seem to be equipping all the gear (precast>midcast>aftercast), but the midcast is already swapped out before the spell goes off.
I thought the aftercast function waits to swap until receiving notice of the spell going off. Why isn't it staying in midcast?
Hades.Ruuz
サーバ: Hades
Game: FFXI
Posts: 2
By Hades.Ruuz 2021-04-30 22:37:41
So yeah, dug deeper in the thread, seems FastFollow was the issue.
Just looking for someone to explain this addon a bit for me. It looks like it is an alternative to Spellcast.
Is it going to be replacing Spellcast? In which ways is it better or worse. I don't know any programming but I've slowly learned more and more about spellcast and the 'language' used in gearswap is confusing to me.
It says it uses packets so it potentially could be more detectable? but does that also eliminate any lag that spellcast may encounter?
I plan on redoing my PUP xml to include pet casting sets thanks to the new addon petschool. I'm just not sure if it's worth it to just wait until gearswap gets more popular or to go ahead and do it in spellcast.
If anyone could give me more info I'd greatly appreciate it.
|
|