|
Gearswap Support Thread
Fenrir.Dibble
Server: Fenrir
Game: FFXI
Posts: 141
By Fenrir.Dibble 2017-04-28 08:40:48
They are not exactly the same thing. However, they result in the same thing happening.
T and S are function calls that both initialize different tables (T will look something like {[1] = 'Idle', [2] = 'Resting'}, where S will look something like {['Warp'] = true, ['Warp II'] = true}) with member function contains that check if the value exists in a table in different ways.
The S{} approach should be faster technically, but in practice it probably won't matter too much. Basically, yeah.
I got a very detailed reply from Byrth on github (below).
I understand you can also use slightly different methods depending on which function is used as a constructor but I think that usage mainly falls outside GearSwap.
I don't 100% follow Byrth's explanation, though. If anyone could give an example of why you might use S instead of T or L (and vica versa) I'd really appreciate it.
Quote: T and S are both "constructors" for the tables and sets libraries that Arcon wrote (windower/addons/libs/tables.lua and windower/addons/libs/sets.lua). There is, additionally, a Lists option that is used sometimes (windower/addons/libs/lists.lua)
In Lua, these two statements are functionally identical:
T{'Idle','Resting'} vs T({'Idle','Resting'}
print'hi' vs print('hi')
So your examples are calling functions T() and S() (and L() for the lists library) that construct and return a customized Lua table with added methods (like :contains()).
T() is designed to be used when you want a mapping of specified Key to Value
S() is designed to be used when you want to quickly check whether a given value is a member of the set. In this case, the key is the relevant quantity (like 'Warp') and the value is simply true.
L() is designed to be used when you want to organize n Values and don't care about the keys but do care about the order. The keys are, then, 1 to n.
These constructors are used for conceptual simplicity rather than efficiency. I'm not sure they're much more computationally efficient than manually making tables as I describe above, but modern hardware is going to make any minor inefficiencies they introduce nearly undetectable in most situations.
By Aeyela 2017-04-28 17:47:13
Is there a way of getting Gearswap to see if a recast is available? I'm trying to prevent accidental usage of certain abilities if a related and required buff isn't available.
Found the answer buried in the Windower archive. For anyone else who wants to know, it's windower.ffxi.get_ability_recasts()[#] > 0 (if it's bigger than 0, the ability isn't ready), with # being the ID of the ability.
Ragnarok.Fabiano
Server: Ragnarok
Game: FFXI
Posts: 154
By Ragnarok.Fabiano 2017-04-29 08:43:54
any idea why win + X toggles dont work anymore since the latest update . its always opening hotkey menues for me
Server: Shiva
Game: FFXI
Posts: 1052
By Shiva.Arislan 2017-04-29 08:53:29
Something definitely happened with Winkey. Some combinations still work, others ignore binds and fall back to default windows behaviors.
Server: Shiva
Game: FFXI
Posts: 1052
By Shiva.Arislan 2017-04-29 19:08:53
Ok, got a bit desperate and just disabled all native windows win-key shortcuts and that made all my gearswap winkey binds work again.
How to Disable the Built-In “Windows Key” Shortcuts
[+]
Asura.Sechs
Server: Asura
Game: FFXI
Posts: 10086
By Asura.Sechs 2017-04-30 16:28:37
Getting multiples of these lines today when using the GS Validate command
GearSwap: name contains a "name" element but is not a valid slot.
What does it mean? o.o
Server: Leviathan
Game: FFXI
Posts: 3753
By Leviathan.Celebrindal 2017-05-01 15:41:48
I'm having some issues with some updates I've made to my Ranger lua. I'll explain-
I'm trying to create separate preshot sets depending on my weapon, as I just made a Gastraphetes (which, for those unfamiliar with the weapon, possesses +10 snapshot). Meaning, I need to have different sets for when I use Fomalhaut,etc. My midshot sets have always worked with the syntax "sets.Midshot.<weaponname>.<acclevel>". I attempted this same syntax for preshot, "sets.Preshot.<weaponname>.<flurrylevel>" with no success. The lua itself shows no errors when I load, but with showswaps enabled now NO PRESHOT sets are equipping. I've included the full lua for anyone able to help!
https://pastebin.com/XUQaKhKf
Server: Leviathan
Game: FFXI
Posts: 3753
By Leviathan.Celebrindal 2017-05-01 17:41:59
found a good solution. If any RNGs interested, here is the new version of my RNG lua that will recognize specific weapons equipped, presence of Flurry, and a toggle for Flurry/Flurry2 sets, as well as all the usual things. I've just found these two Ranged attack specific hooks to be invaluable.
Ranger LUA
Bahamut.Odaru
Server: Bahamut
Game: FFXI
By Bahamut.Odaru 2017-05-02 00:46:42
My gs wasn't swapping into Hachirin-no-Obi properly atfer I configured it, so a friend helped me rewrite the following, which seemed to work for a time. Code if Fire:contains(spell.name)
or Earth:contains(spell.name)
or Wind:contains(spell.name)
or Water:contains(spell.name)
or Thunder:contains(spell.name)
or Ice:contains(spell.name)
then equip(sets.Nuke.NoResist)
if spell.element == world.weather_element
or spell.element == world.day_element
then equip(sets.Obi[spell.element])
else
equip({waist="Refoccilation stone"})
end
end
Now it isn't working again and I can't for the life of me figure it out. halp
EDIT: It sort of works, I guess... It's properly switching when I have Hailstorm, but not Thunderstorm. I don't get it. ._.
Shiva.Spynx
Server: Shiva
Game: FFXI
Posts: 371
By Shiva.Spynx 2017-05-02 10:22:39
It's probably not finding the sets.Obi['Lightning'] if it's failing to swap thunder but working with ice. I'd just do something like this:
Code
if (spell.element == world.day_element or spell.element == world.weather_element) then
equip({waist="Hachirin-no-Obi"})
else
equip({waist="Refoccilation stone"})
end
You should also change all the single element OR checks to an elemental magic on:
Code
if spell.skill == 'Elemental Magic' then
equip(sets.Nuke.NoResist)
end
Bahamut.Odaru
Server: Bahamut
Game: FFXI
By Bahamut.Odaru 2017-05-02 16:52:04
It's probably not finding the sets.Obi['Lightning'] if it's failing to swap thunder but working with ice. I'd just do something like this:
Code
if (spell.element == world.day_element or spell.element == world.weather_element) then
equip({waist="Hachirin-no-Obi"})
else
equip({waist="Refoccilation stone"})
end
You should also change all the single element OR checks to an elemental magic on:
Code
if spell.skill == 'Elemental Magic' then
equip(sets.Nuke.NoResist)
end
Thank you for your response, I will try to resolve the issue when I get home this evening.
Shiva.Hiep
Server: Shiva
Game: FFXI
Posts: 669
By Shiva.Hiep 2017-05-03 15:18:11
Code function init_gear_sets()
sets.midcast.CureWeather = set_combine(sets.midcast.Cure, {
main="Chatoyant Staff",
waist="Hachirin-no-Obi",
--etc
})
sets.midcast.CureSelf = set_combine(sets.midcast.Cure,
hands="Buremte Gloves", -- (13)
neck="Phalaina Locket", -- 4(4)
ring2="Asklepian Ring", -- (3)
waist="Gishdubar Sash", -- (10)
--etc
})
end Code function job_post_midcast(spell, action, spellMap, eventArgs)
if spellMap == 'Cure' and spell.target.type == 'SELF' then
equip(sets.midcast.CureSelf)
end
end
Code function job_get_spell_map(spell, default_spell_map)
if spell.action_type == 'Magic' then
if default_spell_map == 'Cure' or default_spell_map == 'Curaga' then
if (world.weather_element == 'Light' or world.day_element == 'Light') then
return 'CureWeather'
end
end
end
end
Sorry for such the late response, I haven't been on to test this. Does this account for my 4 cure sets, as in curing others, self-cure, curing others with light weather, and self-cure with weather? I should have been more specific in my other post ): I have a self-cure with light weather that's more than just weather obi and twilight cape. The coding you gave me works perfectly for my BLM and GEO, but it's my SCH that uses the 4 different sets .-.
By Boshi 2017-05-07 11:22:07
Hi,
I'm trying to find a way to designate different Dual Wield TP sets for my Corsair lua based on what subjob I have
function update_combat_form()
-- Check for H2H or single-wielding
if player.equipment.sub == "Nusku Shield" or player.equipment.sub == 'empty' then
state.CombatForm:reset()
else
state.CombatForm:set('DW')
end
end
function customize_melee_set(meleeSet)
if player.sub_job == 'DNC' then
classes.CustomMeleeGroups:append('DNC')
end
return meleeSet
end
~~
with this I have it setup so that:
sets.engaged.Accvalue = single wield sets
sets.engaged.DW.Hastevalue.Accvalue = normal dw sets based on haste value
sets.engaged.DW.DNC.Hastevalue.Accvalue = what I was hoping would be my dw sets based on haste for dnc, but it still revers to the one's without .DNC in them
Server: Asura
Game: FFXI
Posts: 2666
By Asura.Ladyofhonor 2017-05-08 05:12:54
So what's the best way to get the same ring to equip in both slots? Best I've seen just says to have ring1 at the start of a gearset and ring2 at the end, is that the best that can be done?
Server: Siren
Game: FFXI
Posts: 26
By Siren.Firedevil 2017-05-08 11:45:27
I'm finally trying to set up Gear Swap, and I am a complete Lua noob with, but I've read the guides, etc. I set mine up using the one in the Beast Within for BLU (Oraen's BLU Lua). I keep getting an error (I can't read the whole error on my screen, if there's a way to do that I could use the help with that as well!).
Anyway the error says: Firedevil_BLU.lua: 239: '}' expected (to close '{'at line 233) near 'ne.......
Can't read the rest. I can't figure out why I need a } in that location. Below is that portion of my lua:
Code 228 sets.ChantDuCygne = {}
229
230 sets.ChantDuCygne.index = {'Attack','Accuracy','HighAcc'}
231 ChantDuCygne_ind = 1
232
233 sets.ChantDuCygne.Attack = {ammo="Jukukik Feather",
234 head={ name="Herculean Helm", augments={'Accuracy+15 Attack+15','"Triple Atk."+4','Rng. Acc.+11'}},
235 body={ name="Herculean Vest", augments={'DEX+2','Accuracy+14','Rng. Acc.+20','"Triple Atk."+4'}},
236 hands={ name="Adhemar wristbands", augments={'DEX+10','AGI+10','Accuracy+15'}},
237 legs="Samnuha Tights",
238 feet={ name="Herculean Boots", augments={'Accuracy+9','Attack+8','"Triple Atk."+4','DEX+10',}}
239 neck="Fotia Gorget",
240 waist="Fotia Belt",
241 left_ear="Brutal Earring",
242 right_ear="Moonshade Earring",
243 left_ring="Epona's Ring",
244 right_ring="Begrudging Ring",
245 back={ name="Rosmerta's cape", augments={'Accuracy+30','Attack+20','"Store TP"+10','DEX+20',}},
246 }
Anyone able to help me troubleshoot this? I shouldn't need a { at line 239, right? My } at 246 should be closing out this string. I figure it may be related to an error inserting augments, but I can't figure out where. Thanks in advance!
Note: I inserted the line numbers here for clarity!
Asura.Truece
Server: Asura
Game: FFXI
Posts: 44
By Asura.Truece 2017-05-08 12:06:13
In line 238, move the very last comma outside the double braces (like lines 234 and 235)?
You may need to leave the comma inside the curly braces and just add one outside (like the augmented gear a few lines down).
[+]
Server: Siren
Game: FFXI
Posts: 26
By Siren.Firedevil 2017-05-08 12:12:34
That's why a 2nd pair of eyes is always a good idea. I've looked at this for 2 days and didn't notice that. Thanks for the help!!
Bismarck.Xurion
Server: Bismarck
Game: FFXI
Posts: 694
By Bismarck.Xurion 2017-05-08 12:31:11
That's why a 2nd pair of eyes is always a good idea. I've looked at this for 2 days and didn't notice that. Thanks for the help!!
FYI in the past when I've been in the same "I can't see wtf is wrong with this script!" status, I've found it helpful to run the code in: https://www.lua.org/cgi-bin/demo
If you copypasta your lua, it says:
Quote: input:11: '}' expected (to close '{' at line 4) near 'neck'
Line 4 is the beginning of the object, but the helpful part here is the "near 'neck'" information. 9 times out of 10, this points you at the line that follows the line where the issue is.
Server: Asura
Game: FFXI
Posts: 1326
By Asura.Azagarth 2017-05-10 00:09:03
I am trying to make a better doomed part in my lua. It works as is but obviously I end up in the second equip() set and never in the initial set with blenmot's, and I am unsure how to add a wait between that. Can you do that in lua? Code if buff == "doom" then
if gain then
equip({legs="Shabti Cuisses +1", ring1="Blenmot's Ring", ring2="Blenmot's Ring", waist="Gishdubar Sash"})
send_command('@input /p Doomed please cursna.')
send_command('@input /item "Holy Water" <me>')
send_command('@wait 2.5;input /echo Doomed received on')
[HERE IS WHERE I ASSUME I NEED SOMETHING SO THERE IS A WAIT BETWEEN SWAPPING TO SET]
equip(sets.buff.Doom)
disable('ring1','ring2','waist','legs')
else
enable('ring1','ring2','waist','legs')
handle_equipping_gear(player.status)
end
end
also does lua have some type of while loop? So i can just have this part keep going while doom is on, aka spam holy waters until doom is off, and while on cooldown be in cursna+ rings instead of holywater+?
Server: Asura
Game: FFXI
Posts: 1326
By Asura.Azagarth 2017-05-10 14:16:01
still cant figure it out.. any help?
Sylph.Mozhat
Server: Sylph
Game: FFXI
Posts: 58
By Sylph.Mozhat 2017-05-14 12:25:35
EquipShield toggle is on (Win+F10 or Win+F11),
not working.
Asura.Byrne
By Asura.Byrne 2017-05-14 15:10:12
I am trying to make a better doomed part in my lua. It works as is but obviously I end up in the second equip() set and never in the initial set with blenmot's, and I am unsure how to add a wait between that. Can you do that in lua?
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if buff == "doom" then
if gain then
equip({legs="Shabti Cuisses +1", ring1="Blenmot's Ring", ring2="Blenmot's Ring", waist="Gishdubar Sash"})
send_command('@input /p Doomed please cursna.')
send_command('@input /item "Holy Water" <me>')
send_command('@wait 2.5;input /echo Doomed received on')
[HERE IS WHERE I ASSUME I NEED SOMETHING SO THERE IS A WAIT BETWEEN SWAPPING TO SET]
equip(sets.buff.Doom)
disable('ring1','ring2','waist','legs')
else
enable('ring1','ring2','waist','legs')
handle_equipping_gear(player.status)
end
end
also does lua have some type of while loop? So i can just have this part keep going while doom is on, aka spam holy waters until doom is off, and while on cooldown be in cursna+ rings instead of holywater+?
I think this can be done with the use of states. You'd simply define a state.Doom at the top of the lua, just like most people do when they make different states that they toggle into, except you'd obviously have the toggle triggered by buffactive['doom'] and gain / not gain rather than being triggered by pressing an F-key.
You could change it to where the engaged and idle sets while in that state are your Cursna+ gear, and make a precast set for "Holy Water" and "Hallowed Water" that equip the water+ gear. (though I'll have to wait until I get home to dig through the Motenten globals if I want to find what the midcast set for item use is, but I'm pretty sure there is one.
Asura.Byrne
By Asura.Byrne 2017-05-14 15:15:15
Asura.Ladyofhonor said: »So what's the best way to get the same ring to equip in both slots? Best I've seen just says to have ring1 at the start of a gearset and ring2 at the end, is that the best that can be done?
I'm not entirely sure what you mean by this, would you mind clarifying?
Do you mean equipping two of the same ring name, or equipping the exact same ring to two different slots?
Asura.Byrne
By Asura.Byrne 2017-05-14 15:24:16
It's probably not finding the sets.Obi['Lightning'] if it's failing to swap thunder but working with ice. I'd just do something like this:
Code
if (spell.element == world.day_element or spell.element == world.weather_element) then
equip({waist="Hachirin-no-Obi"})
else
equip({waist="Refoccilation stone"})
end
You should also change all the single element OR checks to an elemental magic on:
Code
if spell.skill == 'Elemental Magic' then
equip(sets.Nuke.NoResist)
end
Thank you for your response, I will try to resolve the issue when I get home this evening.
I'd be cautious about making your weather argument so straightforward, it can lead to you casting enhancing magic and other spells that don't benefit from the weather in the wrong waist.
I'd recommend something along the lines of Code
if (spell.skill == 'Elemental Magic' or spell.skill == 'Healing Magic') and (spell.element == world.day_element or spell.element == world.weather_element) then
equip({waist="Hachirin-no-Obi"})
else
equip({waist="Refoccilation stone"})
end
By RebornedHero 2017-05-28 11:54:53
I keep getting this same issue whenever I try casting spells or doing a weapon skill.
The majority of my actions, both weapon skills and spells keep equipping the same gearset. It appears to be the set I use for Nuking. I first noticed the issue when I wasn't equipping my weapon skill sets anymore. However going in and out of Idle/TP sets do work. I can manually type in //gs equip "set" and it will equip the the proper set based on whatever I am testing. I just can't figure out how to get gearswap to automatically equip the set based on the action I am doing. Is this a common problem?
I am pretty new to gearswap so not everything in my LUA is setup in terms of gear. Still need to go through and change a bunch of the individual sets.
Any help is appreciated.
Code function get_sets()
send_command('bind f9 gs c toggle TP set')
send_command('bind f10 gs c toggle Idle set')
send_command('bind f11 gs c toggle CDC set')
send_command('bind f12 gs c toggle Req set')
send_command('bind !f12 gs c toggle Rea set')
function file_unload()
send_command('unbind ^f9')
send_command('unbind ^f10')
send_command('unbind ^f11')
send_command('unbind ^f12')
send_command('unbind !f9')
send_command('unbind !f10')
send_command('unbind !f11')
send_command('unbind !f12')
send_command('unbind f9')
send_command('unbind f10')
send_command('unbind f11')
send_command('unbind f12')
end
--Idle Sets--
sets.Idle = {}
sets.Idle.index = {'Standard','DT'}
Idle_ind = 1
sets.Idle.Standard = {ammo="Ginsen",
head="Rawhide Mask",neck="Twilight torque", ear1="Brutal earring", ear2="Suppanomimi",
body="Assimilator's Jubbah +1",hands="Serpentes cuffs",ring1="Rajas ring",ring2="Sheltered ring",
back="Grounded mantle",waist="Windbuffet belt +1",legs="Crimson cuisses",feet="Serpentes sabots"}
sets.Idle.DT = {ammo="Ginsen",
head="Iuitl headgear +1",neck="Twilight torque", ear1="Ethereal earring", ear2="Heartseeker earring",
body="Luhlaza jubbah +1",hands="Umuthi gloves",
ring1="Dark ring",
ring2="Dark ring",
back="Mollusca mantle",waist="Flume belt",legs="Blood cuisses",feet="Iuitl gaiters"}
--TP Sets--
sets.TP = {}
sets.TP.index = {'Standard', 'Solo', 'Safe', 'AccuracyLite', 'AccuracyFull', 'AccuracyExtreme', 'DT', 'DTAccuracy'}
--1=Standard, 2=Solo, 4=AccuracyLite, 5=AccuracyFull, 6=DT, 7=DTAccuracy--
TP_ind = 1
sets.TP.Standard = {ammo="Vanir Battery",
head="Taeon chapeau",neck="Lissome necklace", ear1="Brutal earring", ear2="Suppanomimi",
body="Rawhide Vest",hands="Taeon Gloves",ring1="Epona's ring",ring2="Rajas ring",
back="Grounded Mantle",waist="Windbuffet Belt +1",legs="Taeon Tights",feet="Taeon Boots"}
sets.TP.Solo = {ammo="Ginsen",
head="Iuitl headgear +1",neck="Asperity necklace", ear1="Dudgeon earring", ear2="Heartseeker earring",
body="Luhlaza jubbah +1",hands="Qaaxo mitaines",ring1="Epona's ring",ring2="Rajas ring",
back="Atheling mantle",waist="Shetal Stone",legs="Iuitl Tights +1",feet="Qaaxo leggings"}
sets.TP.AccuracyLite = {ammo="Ginsen",
head="Iuitl headgear +1",neck="Asperity necklace", ear1="Dudgeon earring", ear2="Heartseeker earring",
body="Qaaxo harness",hands="Qaaxo mitaines",ring1="Epona's ring",ring2="Rajas ring",
back="Letalis mantle",waist="Shetal Stone",legs="Iuitl Tights +1",feet="Qaaxo leggings"}
sets.TP.AccuracyFull = {ammo="Honed tathlum",
head="Whirlpool mask",neck="Asperity necklace", ear1="Dudgeon earring", ear2="Heartseeker earring",
body="Luhlaza jubbah +1",hands="Buremte gloves",ring1="Epona's ring",ring2="Rajas ring",
back="Letalis mantle",waist="Shetal Stone",legs="Manibozho brais",feet="Assim. charuqs +1"}
sets.TP.DT = {ammo="Ginsen",
head="Iuitl headgear +1",neck="Twilight torque", ear1="Dudgeon earring", ear2="Heartseeker earring",
body="Luhlaza jubbah +1",hands="Buremte gloves",ring1="Dark ring",ring2="Dark ring",
back="Mollusca mantle",waist="Twilight belt",legs="Iuitl Tights +1",feet="Iuitl gaiters"}
sets.TP.DTAccuracy = {ammo="Honed Tathlum",
head="Iuitl headgear +1",neck="Twilight torque", ear1="Dudgeon earring", ear2="Heartseeker earring",
body="Luhlaza jubbah +1",hands="Buremte gloves",ring1="Dark ring",ring2="Dark ring",
back="Mollusca mantle",waist="Hurch'lan sash",legs="Iuitl Tights +1",feet="Iuitl gaiters"}
--Weaponskill Sets--
sets.WS = {}
sets.Requiescat = {}
sets.Requiescat.index = {'Attack','Accuracy'}
Requiescat_ind = 1
sets.Requiescat.Attack = {ammo="Mantis Eye",
head="Jhakri Coronal",neck="Soil gorget",ear1="Brutal earring",ear2="Lifestorm earring",
body="Jhakri Robe",hands="Jhakri cuffs",ring1="Epona's ring",ring2="Jhakri Ring",
back="Cornflower Cape",waist="Soil belt",legs="Jhakri Slops",feet="Luhlaza Charuqs"}
sets.Requiescat.Accuracy = {ammo="Honed tathlum",
head="Whirlpool mask",neck="Soil gorget",ear1="Brutal earring",ear2="Moonshade earring",
body="Luhlaza jubbah +1",hands="Qaaxo mitaines",ring1="Epona's ring",ring2="Levia. ring",
back="Letalis mantle",waist="Soil belt",legs="Quiahuiz trousers",feet="Assim. charuqs +1"}
sets.ChantDuCygne = {}
sets.ChantDuCygne.index = {'Attack','Accuracy'}
ChantDuCygne_ind = 1
sets.ChantDuCygne.Attack = {ammo="Cheruski Needle",
head="Taeon Chapeau",neck="Light gorget",ear1="Mache Earring earring",ear2="Mache earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Epona's ring",ring2="Rajas ring",
back="Grounded mantle",waist="Light belt",legs="Taeon Tights",feet="Jhakri Pigaches"}
sets.ChantDuCygne.Accuracy = {ammo="Mantis Eye",
head="Taeon Chapeau",neck="Light gorget",ear1="Mache Earring",ear2="Mache earring",
body="Ayanmo Corazza",hands="Rawhide Gloves",ring1="Epona's ring",ring2="Rajas ring",
back="Grounded mantle",waist="Light belt",legs="Taeon Tights",feet="Jhakri Pigaches"}
sets.WS.SanguineBlade = {}
sets.WS.SanguineBlade = {ammo="Erlene's notebook",
head="Hagondes hat",neck="Eddy necklace",ear1="Hecate's earring",ear2="Friomisi earring",
body="Hagondes Coat +1",hands="Hagondes cuffs",ring1="Archon ring",ring2="Acumen ring",
back="Cornflower cape",waist="Aswang sash",legs="Hagondes Pants +1",feet="Hagondes sabots"}
sets.WS.CircleBlade = {}
sets.WS.CircleBlade = {ammo="Cheruski needle",
head="Uk'uxkaj cap",neck="Soil Gorget",ear1="Moonshade earring",ear2="Brutal earring",
body="Assim. jubbah +1",hands="Luh. bazubands +1",ring1="Epona's ring",ring2="Pyrosoul ring",
back="Atheling mantle",waist="Soil belt",legs="Quiahuiz trousers",feet="Luhlaza charuqs +1",
back="Atheling mantle",waist="Soil belt",legs="Quiahuiz trousers",feet="Luhlaza charuqs +1"}
sets.WS.Expiacion = {}
sets.WS.Expiacion = {ammo="Cheruski needle",
head="Uk'uxkaj cap",neck="Soil Gorget",ear1="Moonshade earring",ear2="Brutal earring",
body="Assim. jubbah +1",hands="Luh. bazubands +1",ring1="Epona's ring",ring2="Pyrosoul ring",
back="Atheling mantle",waist="Soil belt",legs="Quiahuiz trousers",feet="Luhlaza charuqs +1"}
sets.Realmrazer = {}
sets.Realmrazer.index = {'Attack','Accuracy'}
Realmrazer_ind = 1
sets.Realmrazer.Attack = {ammo="Cheruski needle",
head="Whirlpool mask",neck="Flame gorget",ear1="Bladeborn earring",ear2="Steelflash Earring",
body="Luhlaza jubbah +1",hands="Luh. Bazubands +1",ring1="Levia. ring",ring2="Aquasoul ring",
back="Atheling mantle",waist="Light belt",legs="Quiahuiz trousers",feet="Luhlaza charuqs +1"}
sets.Realmrazer.Accuracy = {ammo="Honed tathlum",
head="Whirlpool mask",neck="Flame gorget",ear1="Bladeborn earring",ear2="Steelflash earring",
body="Luhlaza jubbah +1",hands="Luh. Bazubands +1",ring1="Levia. ring",ring2="Aquasoul ring",
back="Letalis mantle",waist="Light belt",legs="Quiahuiz trousers",feet="Assim. charuqs +1"}
sets.WS.FlashNova = {}
sets.WS.FlashNova = {ammo="Erlene's notebook",
head="Hagondes hat",neck="Eddy necklace",ear1="Hecate's earring",ear2="Friomisi earring",
body="Hagondes Coat +1",hands="Hagondes cuffs",ring1="Spiral ring",ring2="Acumen ring",
back="Cornflower cape",waist="Aswang sash",legs="Hagondes Pants +1",feet="Hagondes sabots"}
--Blue Magic Sets--
sets.BlueMagic = {}
sets.BlueMagic.STR = {ammo="Mavi tathlum",
head="Jhakri Coronal",neck="Tjukurrpa Medal",ear1="Flame pearl",ear2="Tati Earring",
body="Jhakri Robe",hands="Ayanmo Manopolas",ring1="Ifrit ring",ring2="Ifrit ring",
back="Cornflower cape",waist="Prosilio Belt",legs="Jhakri Slops",feet="Jhakri Pigaches"}
sets.BlueMagic.STRDEX = {ammo="Cheruski needle",
head="Jhakri Coronal",neck="Tjukurrpa Medal",ear1="Mache Earring",ear2="Mache Earring",
body="Ayanmo Corazza",hands="Rawhide Gloves",ring1="Rajas ring",ring2="Ifrit ring",
back="Cornflower cape",waist="Prosilio Belt",legs="Jhakri Slops",feet="Jhakri Pigaches"}
sets.BlueMagic.STRVIT = {ammo="Mavi tathlum",
head="Jhakri Coronal",neck="Tjukurrpa Medal",ear1="Flame pearl",ear2="Tati Earring",
body="Ayanmo Corazza",hands="Ayanmo Manopolas",ring1="Ifrit ring",ring2="Ifrit ring",
back="Cornflower cape",waist="Prosilio Belt",legs="Jhakri Slops",feet="Taeon Boots"}
sets.BlueMagic.STRMND = {ammo="Mavi tathlum",
head="Luh. Keffiyeh +1",neck="Ire torque +1",ear1="Flame pearl",ear2="Flame pearl",
body="Assim. jubbah +1",hands="Umuthi gloves",ring1="Vulcan's ring",ring2="Levia. ring",
back="Cornflower cape",waist="Chaac belt",legs="Quiahuiz trousers",feet="Luhlaza charuqs +1"}
sets.BlueMagic.AGI = {ammo="Mavi tathlum",
head="Luh. Keffiyeh +1",neck="Ire torque +1",ear1="Flame pearl",ear2="Flame pearl",
body="Assim. jubbah +1",hands="Iuitl wristbands",ring1="Breezesoul ring",ring2="Auster's ring",
back="Cornflower cape",waist="Pipilaka belt",legs="Quiahuiz trousers",feet="Luhlaza charuqs +1"}
sets.BlueMagic.INT = {ammo="Dosis Tathlum",
head="Jhakri Coronal",neck="Stoicheion medal",ear1="Hecate's earring",ear2="Friomisi earring",
body="Jhakri Robe",hands="Jhakri cuffs",ring1="Shiva ring",ring2="Shiva ring",
back="Cornflower cape",waist="Aswang sash",legs="Jhakri Slops",feet="Jhakri Pigaches"}
sets.BlueMagic.Cures = {ammo="Mavi Tathlum",
head="Jhakri Coronal",neck="Phalaina Locket",ear1="Medicant's earring",ear2="Loquacious earring",
body="Jhakri Robe",hands="Telchine Gloves",ring1="Solemn ring",ring2="Sirona's ring",
back="Tempered Cape",waist="Ovate Rope",legs="Crimson Cuisses",feet="Jhakri Pigaches"}
sets.BlueMagic.SelfCures = {ammo="Mavi Tathlum",
head="Jhakri Coronal",neck="Phalaina Locket",ear1="Medicant's earring",ear2="Loquacious earring",
body="Jhakri Robe",hands="Telchine Gloves",ring1="Solemn ring",ring2="Sirona's ring",
back="Tempered Cape",waist="Ovate Rope",legs="Crimson Cuisses",feet="Jhakri Pigaches"}
sets.BlueMagic.Stun = {ammo="Mavi tathlum",
head="Assim. keffiyeh",neck="Eddy necklace",ear1="Loquac. earring",
body="Assim. jubbah +1",hands="Mv. bazubands +2",ring1="Prolix ring",ring2="Sangoma ring",
back="Cornflower cape",waist="Twilight belt",legs="Mavi tayt +2",feet="Luhlaza charuqs +1"}
sets.BlueMagic.HeavyStrike = {ammo="Honed tathlum",
head="Whirlpool mask",neck="Ire torque +1",ear1="Flame pearl",ear2="Heartseeker earring",
body="Assim. jubbah +1",hands="Umuthi gloves",ring1="Pyrosoul ring",ring2="Rajas ring",
back="Cornflower cape",waist="Dynamic belt +1",legs="Manibozho brais",feet="Assim. charuqs +1"}
sets.BlueMagic.ChargedWhisker = {ammo="Dosis Tathlum",
head="Jhakri Coronal",neck="Stoicheion medal",ear1="Hecate's earring",ear2="Friomisi earring",
body="Jhakri Robe",hands="Jhakri cuffs",ring1="Shiva ring",ring2="Shiva ring",
back="Cornflower cape",waist="Aswang sash",legs="Jhakri Slops",feet="Jhakri Pigaches"}
sets.BlueMagic.WhiteWind = {ammo="Mavi tathlum",
head="Luh. Keffiyeh +1",neck="Cuamiz collar",ear1="Upsurge Earring",ear2="Cassie earring",
body="Aetosaur jerkin",hands="Weath. cuffs +1",ring1="Bomb queen ring",ring2="Meridian ring",
back="Oretania's cape",waist="Gold mog. belt",legs="Desultor tassets",feet="Llwyd's clogs"}
sets.BlueMagic.MagicAccuracy = {ammo="Mavi Tathlum",
head="Assim. keffiyeh",neck="Eddy necklace",ear1="Psystorm earring",ear2="Lifestorm earring",
body="Assim. jubbah +1",hands="Hagondes cuffs",ring1="Mediator's ring",ring2="Sangoma ring",
back="Cornflower cape",waist="Ovate rope",legs="Mavi tayt +2",feet="Luhlaza charuqs +1"}
sets.BlueMagic.Skill = {ammo="Mavi tathlum",
head="Luh. Keffiyeh +1",neck="Jeweled collar",ear1="Loquac. earring",
body="Assim. jubbah +1",hands="Ayao's gages",ring1="Prolix ring",
back="Cornflower cape",waist="Twilight belt",legs="Mavi tayt +2",feet="Luhlaza charuqs +1"}
sets.BlueMagic.SkillRecast = {ammo="Mavi tathlum",
head="Luh. Keffiyeh +1",neck="Jeweled collar",ear1="Loquac. earring",
body="Assim. jubbah +1",hands="Mv. Bazubands +2",ring1="Prolix ring",
back="Swith cape",waist="Twilight belt",legs="Mavi tayt +2",feet="Luhlaza charuqs +1"}
--Utility Sets--
sets.Utility = {}
sets.Utility.Stoneskin = {head="Haruspex hat",neck="Stone Gorget",ear1="Loquac. earring",ear2="Earthcry earring",
body="Assim. jubbah +1",hands="Stone Mufflers",ring1="Prolix ring",
back="Swith cape",waist="Siegel sash",legs="Haven hose",feet="Iuitl gaiters"}
sets.Utility.Phalanx = {head="Haruspex hat",neck="Colossus's torque",ear1="Loquac. earring",ear2="Augment. earring",
body="Assim. jubbah +1",hands="Ayao's gages",ring1="Prolix ring",
back="Swith cape",waist="Pythia sash +1",legs="Portent pants",feet="Iuitl gaiters"}
sets.Utility.Steps = {ammo="Honed tathlum",
head="Whirlpool mask",ear2="Heartseeker earring",
body="Thaumas coat",hands="Umuthi gloves",
back="Letalis cape",waist="Chaac belt",legs="Manibozho brais",feet="Manibozho boots"}
sets.Utility.PDT = {head="Whirlpool mask",neck="Twilight torque",ear1="Ethereal earring",
body="Iuitl vest",hands="Umuthi gloves",ring1="Dark ring",ring2="Dark ring",
back="Mollusca mantle",waist="Flume belt",legs="Iuitl Tights +1",feet="Iuitl gaiters"}
sets.Utility.MDT = {head="Whirlpool mask",neck="Twilight torque",
body="Assim. jubbah +1",hands="Umuthi gloves",ring1="Dark ring",ring2="Dark ring",
back="Mollusca mantle",legs="Quiahuiz trousers",feet="Luhlaza charuqs +1"}
--Job Ability Sets--
sets.JA = {}
sets.JA.ChainAffinity = {feet="Assim. charuqs +1"}
sets.JA.BurstAffinity = {feet="Mavi Basmak +2"}
sets.JA.Efflux = {legs="Mavi tayt +2"}
sets.JA.AzureLore = {hands="Luh. bazubands +1"}
sets.JA.Diffusion = {feet="Luhlaza Charuqs"}
--Precast Sets--
sets.precast = {}
sets.precast.FC = {}
sets.precast.FC.Standard = {head="Jhakri Coronal",neck="Jeweled collar", ear1="Loquac. Earring",
body="Taeon Tabard",hands="Jhakri Cuffs",ring1="Weatherspoon Ring",ring2="Jhakri Ring",
back="Cornflower Cape",waist="Aswang Sash",legs="Jhakri Slops",feet="Jhakri Pigaches"}
sets.precast.FC.Blue = {head="Jhakri Coronal",neck="Jeweled collar", ear1="Loquac. Earring",
body="Taeon Tabard",hands="Jhakri Cuffs",ring1="Weatherspoon Ring",ring2="Jhakri Ring",
back="Cornflower Cape",waist="Aswang Sash",legs="Jhakri Slops",feet="Jhakri Pigaches"}
end
function precast(spell)
if spell.action_type == 'Magic' then
equip(sets.precast.FC.Standard)
if spell.skill == 'Blue Magic' then
equip(sets.precast.FC.Blue)
end
end
if spell.english == 'Azure Lore' then
equip(sets.JA.AzureLore)
end
if spell.english == 'Requiescat' or spell.english == 'Savage Blade' then
equip(sets.Requiescat[sets.Requiescat.index[Requiescat_ind]])
end
if spell.english == 'Chant du Cygne' then
equip(sets.ChantDuCygne[sets.ChantDuCygne.index[ChantDuCygne_ind]])
end
if spell.english == 'Circle Blade' then
equip(sets.WS.CircleBlade)
end
if spell.english == 'Expiacion' then
equip(sets.WS.Expiacion)
end
if spell.english == 'Sanguine Blade' then
equip(sets.WS.SanguineBlade)
end
if spell.english == 'Box Step' then
equip(sets.Utility.Steps)
end
if spell.english == 'Realmrazer' then
equip(sets.Realmrazer[sets.Realmrazer.index[Realmrazer_ind]])
end
if spell.english == 'Flash Nova' then
equip(sets.WS.FlashNova)
end
end
function midcast(spell,act)
if spell.english == 'Vertical Cleave' or spell.english == 'Death Scissors' or spell.english == 'Empty Thrash' or spell.english == 'Dimensional Death' or spell.english == 'Quadrastrike' or spell.english == 'Bloodrake' then
equip(sets.BlueMagic.STR)
if buffactive['Chain Affinity'] then
equip(sets.JA.ChainAffinity)
end
if buffactive['Efflux'] then
equip(sets.JA.Efflux)
end
end
if spell.english == 'Disseverment' or spell.english == 'Hysteric Barrage' or spell.english == 'Frenetic Rip' or spell.english == 'Seedspray' or spell.english == 'Vanity Dive' or spell.english == 'Goblin Rush' or spell.english == 'Paralyzing Triad' or spell.english == 'Thrashing Assault' then
equip(sets.BlueMagic.STRDEX)
if buffactive['Chain Affinity'] then
equip(sets.JA.ChainAffinity)
end
if buffactive['Efflux'] then
equip(sets.JA.Efflux)
end
end
if spell.english == 'Quad. Continuum' or spell.english == 'Delta Thrust' or spell.english == 'Cannonball' or spell.english == 'Glutinous Dart' then
equip(sets.BlueMagic.STRVIT)
if buffactive['Chain Affinity'] then
equip(sets.JA.ChainAffinity)
end
if buffactive['Efflux'] then
equip(sets.JA.Efflux)
end
end
if spell.english == 'Whirl of Rage' then
equip(sets.BlueMagic.STRMND)
if buffactive['Chain Affinity'] then
equip(sets.JA.ChainAffinity)
end
if buffactive['Efflux'] then
equip(sets.JA.Efflux)
end
end
if spell.english == 'Benthic Typhoon' or spell.english == 'Final Sting' or spell.english == 'Spiral Spin' then
equip(sets.BlueMagic.AGI)
if buffactive['Chain Affinity'] then
equip(sets.JA.ChainAffinity)
end
if buffactive['Efflux'] then
equip(sets.JA.Efflux)
end
end
if spell.english == 'Gates of Hades' or spell.english == 'Leafstorm' or spell.english == 'Firespit' or spell.english == 'Acrid Stream' or spell.english == 'Regurgitation' or spell.english == 'Corrosive Ooze' or spell.english == 'Thermal Pulse' or spell.english == 'Magic Hammer' or spell.english == 'Evryone. Grudge' or spell.english == 'Water Bomb' or spell.english == 'Dark Orb' or spell.english == 'Thunderbolt' or spell.english == 'Tem. Upheaval' or spell.english == 'Embalming Earth' or spell.english == 'Foul Waters' or spell.english == 'Rending Deluge' or spell.english == 'Droning Whirlwind' or spell.english == 'Subduction' then
equip(sets.BlueMagic.INT)
if buffactive['Burst Affinity'] then
equip(sets.JA.BurstAffinity)
end
end
if spell.english == 'Magic Fruit' or spell.english == 'Plenilune Embrace' or spell.english == 'Wild Carrot' or spell.english == 'Pollen' or spell.english == 'Cure III' or spell.english == 'Cure IV' then
equip(sets.BlueMagic.Cures)
if spell.target.name == player.name and string.find(spell.english, 'Magic Fruit') or string.find(spell.english, 'Plenilune Embrace') or string.find(spell.english, 'Wild Carrot') or string.find(spell.english, 'Cure III') or string.find(spell.english, 'Cure IV') then
equip(sets.BlueMagic.SelfCures)
end
end
if spell.english == 'White Wind' then
equip(sets.BlueMagic.WhiteWind)
end
if spell.english == 'Head Butt' or spell.english == 'Sudden Lunge' or spell.english == 'Blitzstrahl' then
equip(sets.BlueMagic.Stun)
end
if spell.english == 'Heavy Strike' then
equip(sets.BlueMagic.HeavyStrike)
end
if spell.english == 'Charged Whisker' or spell.english then
equip(sets.BlueMagic.ChargedWhisker)
if buffactive['Burst Affinity'] then
equip(sets.JA.BurstAffinity)
end
end
if spell.english == 'Frightful Roar' or spell.english == 'Infrasonics' or spell.english == 'Barbed Crescent' or spell.english == 'Tourbillion' or spell.english == 'Cimicine Discharge' or spell.english == 'Sub-zero smash' or spell.english == 'Filamented Hold' or spell.english == 'Mind Blast' or spell.english == 'Sandspin' or spell.english == 'Hecatomb Wave' or spell.english == 'Cold Wave' or spell.english == 'Terror Touch' then
equip(sets.BlueMagic.MagicAccuracy)
end
if spell.english == 'MP Drainkiss' or spell.english == 'Digest' or spell.english == 'Blood Saber' or spell.english == 'Blood Drain' or spell.english == 'Osmosis' or spell.english == 'Occultation' or spell.english == 'Magic Barrier' or spell.english == 'Diamondhide' or spell.english == 'Metallic Body' or spell.english == 'Retinal Glare' then
equip(sets.BlueMagic.SkillRecast)
if buffactive['Diffusion'] then
equip(sets.JA.Diffusion)
end
end
if spell.english == 'Cocoon' or spell.english == 'Harden Shell' or spell.english == 'Animating Wail' or spell.english == 'Battery Charge' or spell.english == 'Nat. Meditation' or spell.english == 'Carcharian Verve' or spell.english == 'O. Counterstance' or spell.english == 'Barrier Tusk' or spell.english == 'Saline Coat' or spell.english == 'Regeneration' or spell.english == 'Erratic Flutter' then
if buffactive['Diffusion'] then
equip(sets.JA.Diffusion)
end
end
end
function aftercast(spell)
if player.status == 'Engaged' then
equip(sets.TP[sets.TP.index[TP_ind]])
else
equip(sets.Idle[sets.Idle.index[Idle_ind]])
end
if spell.action_type == 'Weaponskill' then
add_to_chat(158,'TP Return: ['..tostring(player.tp)..']')
end
end
function status_change(new,old)
if new == 'Engaged' then
equip(sets.TP[sets.TP.index[TP_ind]])
else
equip(sets.Idle[sets.Idle.index[Idle_ind]])
end
end
function self_command(command)
if command == 'toggle TP set' then
TP_ind = TP_ind +1
if TP_ind > #sets.TP.index then TP_ind = 1 end
send_command('@input /echo <----- TP Set changed to '..sets.TP.index[TP_ind]..' ----->')
equip(sets.TP[sets.TP.index[TP_ind]])
elseif command == 'toggle Idle set' then
Idle_ind = Idle_ind +1
if Idle_ind > #sets.Idle.index then Idle_ind = 1 end
send_command('@input /echo <----- Idle Set changed to '..sets.Idle.index[Idle_ind]..' ----->')
equip(sets.Idle[sets.Idle.index[Idle_ind]])
elseif command == 'toggle Req set' then
Requiescat_ind = Requiescat_ind +1
if Requiescat_ind > #sets.Requiescat.index then Requiescat_ind = 1 end
send_command('@input /echo <----- Requiescat Set changed to '..sets.Requiescat.index[Requiescat_ind]..' ----->')
elseif command == 'toggle CDC set' then
ChantDuCygne_ind = ChantDuCygne_ind +1
if ChantDuCygne_ind > #sets.ChantDuCygne.index then ChantDuCygne_ind = 1 end
send_command('@input /echo <----- Chant du Cygne Set changed to '..sets.ChantDuCygne.index[ChantDuCygne_ind]..' ----->')
elseif command == 'toggle Rea set' then
Realmrazer_ind = Realmrazer_ind +1
if Realmrazer_ind > #sets.Realmrazer.index then Realmrazer_ind = 1 end
send_command('@input /echo <----- Realmrazer Set changed to '..sets.Realmrazer.index[Realmrazer_ind]..' ----->')
elseif command == 'equip TP set' then
equip(sets.TP[sets.TP.index[TP_ind]])
elseif command == 'equip Idle set' then
equip(sets.Idle[sets.Idle.index[Idle_ind]])
end
end
Asura.Byrne
By Asura.Byrne 2017-05-28 13:28:17
I keep getting this same issue whenever I try casting spells or doing a weapon skill.
The majority of my actions, both weapon skills and spells keep equipping the same gearset. It appears to be the set I use for Nuking. I first noticed the issue when I wasn't equipping my weapon skill sets anymore. However going in and out of Idle/TP sets do work. I can manually type in //gs equip "set" and it will equip the the proper set based on whatever I am testing. I just can't figure out how to get gearswap to automatically equip the set based on the action I am doing. Is this a common problem?
I am pretty new to gearswap so not everything in my LUA is setup in terms of gear. Still need to go through and change a bunch of the individual sets.
Any help is appreciated.
What I would do is make sure all of your WS sets have gear in them, including the ones that are not part of the index. Sure, by default it should be equipping sets.ChantDuCygne.Attack but it might not, so you may just copy what you would normally have as the first set in the set index and copy that gearset into the default, non-index set that comes before it. It's the part where the code just says:
Code sets.ChantDuCygne = {}
sets.ChantDuCygne.index = {'Attack','Accuracy'}
ChantDuCygne_ind = 1
sets.ChantDuCygne.Attack = {ammo="Cheruski Needle",
head="Taeon Chapeau",neck="Light gorget",ear1="Mache Earring earring",ear2="Mache earring",
body="Rawhide Vest",hands="Rawhide Gloves",ring1="Epona's ring",ring2="Rajas ring",
back="Grounded mantle",waist="Light belt",legs="Taeon Tights",feet="Jhakri Pigaches"}
sets.ChantDuCygne.Accuracy = {ammo="Mantis Eye",
head="Taeon Chapeau",neck="Light gorget",ear1="Mache Earring",ear2="Mache earring",
body="Ayanmo Corazza",hands="Rawhide Gloves",ring1="Epona's ring",ring2="Rajas ring",
back="Grounded mantle",waist="Light belt",legs="Taeon Tights",feet="Jhakri Pigaches"}
If the problem still persists, make sure the lua being loaded by gearswap is in fact the one that you are editing, I've known people to move a lua to their desktop and edit it, and bang their head against a wall for a good 10 minutes trying to figure out why " none of their changes were saving"
Also I highly HIGHLY recommend reformatting this lua to be more readable, or if it's all the same to you, I can just give you mine.
Fenrir.Caiir
VIP
Server: Fenrir
Game: FFXI
Posts: 199
By Fenrir.Caiir 2017-05-28 14:42:53
That looks like it took a lot of time to write and I feel bad for you because.. yikes
I also highly recommend formatting everything in a readable manner. Additionally, your logic is so long with the if chains that it makes it incredibly difficult to follow or debug.
It's almost always better to borrow from other people's GS or use a premade entirely, and modifying from that unless you're familiar with Lua.
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.
|
|