Gearswap Support Thread

Language: JP EN DE FR
New Items
2023-11-19
users online
Forum » Windower » Support » Gearswap Support Thread
Gearswap Support Thread
First Page 2 3 ... 49 50 51 ... 181 182 183
 Quetzalcoatl.Orestes
Offline
Server: Quetzalcoatl
Game: FFXI
user: Orestes78
Posts: 430
By Quetzalcoatl.Orestes 2015-01-21 00:24:37
Link | Quote | Reply
 
Yandaime said: »
Hello, I'm pretty new to gearswap and I barely understand how it works. I wanted to know how to set up Accuracy modes and tie them to ONE toggle.

Presently, I am using several swap files that are bound together by my F5-F8 keys. I would like to only use ONE file for the binds but I don't know how to bind OffenseMode and WeaponskillMode to ONE key.

Honestly, It seems a little silly to me that they would be separated in the first place but I'm sure there's a good reason for that.

I have tried:

send_command('bind f5 cycle OffenseMode')
send_command('bind f5 cycle WeaponskillMode')

but instead of cycling both modes, it only cycles WeaponskillMode, probably because its the more recent of the two commands..

I have also tried

send_command('bind f5 toggle OffenseMode and WeaponskillMode')

as well as

send_command('bind f5 toggle OffenseMode & WeaponskillMode')

but neither work :(

I'm certain there's a way to hit one button and change my entire Acc mode, not just my Melee or WS lol


This is probably the most simple question ever, please forgive me.
Thank you for your time xD

edit: I was on my phone when I first responded.

OffenseMode and WeaponskillMode are linked to one another, assuming both share the same modes.

For example:
Code
    state.OffenseMode:options('Normal', 'Mid', 'Acc')
    state.WeaponskillMode:options('Normal', 'Mid', 'Acc')

With this setup, you never have to bother toggling WeaponskillMode. It's done for you when you toggle OffenseMode.

For RNG, WeaponskillMode is linked to RangedMode just the same.

You can verify you're using the correct WS sets with //gs showswaps
[+]
 Ragnarok.Flippant
Offline
Server: Ragnarok
Game: FFXI
user: Enceladus
Posts: 658
By Ragnarok.Flippant 2015-01-21 09:13:41
Link | Quote | Reply
 
Lakshmi.Sulia said: »
So, I decided to attempt to use a premade gearswap from the shop thread on BG and plug in my gear for WAR. It has been throwing back an error when it doesn't equip my idle gear or switch to my TP gear on mobs after the first mob.

The error I'm getting is when I have Bravura equipped:
GearSwap: Lua runtime error: GearSwap/flow.lua:295:
GearSwap has detected an error in the user function status_change:
Sulia_WAR.lua:159: attempt to index field 'Bravura' (a nil value)

The error I get when I have another weapon equipped:
GearSwap: Lua runtime error: GearSwap/flow.lua:295:
GearSwap has detected an error in the user function status_change:
Sulia_WAR.lua:164: attempt to index field 'Razorfury' (a nil value)

Pastebin of the Lua with my gear input. I know it's kind of redundant with the gear in areas, but I'm really not used to GearSwap. Thank you for your help in advance.

Let's see how well I can explain this.

Pretty much should never set a table equal to another table because you could easily overlook the consequences and break the table structure. Basically, when you set table 1 = table 2, table 1 now points to the same location as table 2. That may seem obvious enough, but the not so obvious part is that you're "disowning" all of table 1's original children and they are lost forever at this point in the code because you no longer have a variable pointing to it. If that's still confusing, take these three tables:

sets.TP = {blah="blah"}
sets.TP.Bravura = {blah2="blah2"}
sets.TP.Bravura.Acc = {blah3="blah3"}

When you create sets.TP.Bravura, it creates a new key in the sets.TP table called "Bravura" and sets it equal to that table. Likewise, when you create sets.TP.Bravura.Acc, it creates a new key in the sets.TP.Bravura table called "Acc" and sets it equal to the third table. It's the same as saying:

sets.TP = {blah="blah", Bravura={blah2="blah2", Acc={blah3="blah3"}}}

When you set sets.TP.Bravura = sets.TP.Bravura.Acc, you are doing essentially the same thing as saying

sets.TP.Bravura = {blah3="blah3"}

pointing sets.TP.Bravura to the new table, and deleting the relationship to the old table. You're probably already aware that blah2 no longer exists because you can plainly see it's been "overwritten," but sets.TP.Bravura.Acc is gone too, because it was also a child of Bravura, even though it was written in a different manner. Your entire sets.TP table now looks like

sets.TP = {blah="blah", Bravura={blah3="blah3"}}

The next time you set sets.TP.Bravura = sets.TP.Bravura.Acc, it will set it to "nil" because the value does not exist. Now your table looks like

sets.TP = {blah="blah"}

The third time you run through it, you'll get the error you're seeing because it cannot find the index Bravura in order to look for the index Acc (you cannot index a nil value). You'd have to reload the file to reset everything.

Long story short, that's a horrible GearSwap file, get a new one; if you're not interested in learning and maintaining your own code, then you're best off using Mote's templates, even though they can seem more intimidating than the other options (he has good documentation, requires less maintenance from your end, and has built-in functions to handle most of the processing you would want to).
 Odin.Quixacotl
Offline
Server: Odin
Game: FFXI
user: Quixacotl
Posts: 170
By Odin.Quixacotl 2015-01-21 13:54:58
Link | Quote | Reply
 
Orestes said:
OffenseMode and WeaponskillMode are linked to one another, assuming both share the same modes.

For example:
Code
    state.OffenseMode:options('Normal', 'Mid', 'Acc')
    state.WeaponskillMode:options('Normal', 'Mid', 'Acc')

With this setup, you never have to bother toggling WeaponskillMode. It's done for you when you toggle OffenseMode.

For RNG, WeaponskillMode is linked to RangedMode just the same.

You can verify you're using the correct WS sets with //gs showswaps

Ummm... That's not correct. It seems Offensemode and Weaponskillmode are not normally tied together. If you set Offensemode to Acc and then press F12 which displays your current modes then you will get, "Melee:Acc, WS:Normal" which is the jist of Yandaime's complaint.

As good as Mote's system is for basic sets, when you are dealing with specialized sets ie. PDT, ACC, etc. this was one of the shortcomings with that system. It is nigh difficult for the typical gamer to edit and customize modes and keybinds to their own play-style.

However if you do,
Code
send_command('bind f5 gs c set OffenseMode Acc;gs c set WeaponskillMode Acc')

and press F5 then you will get, "Melee:Acc, WS:Acc".

With this method you can also combine Offensemode:Acc Weaponskillmode:Acc and Defensemode:PDT for endgame situations like Delve or Incursion. The number of custom custom-combinations is only limited to your imagination.
Code
send_command('bind f6 gs c set OffenseMode Acc;gs c set WeaponskillMode Acc;gs c set Defensemode PDT')
 Quetzalcoatl.Orestes
Offline
Server: Quetzalcoatl
Game: FFXI
user: Orestes78
Posts: 430
By Quetzalcoatl.Orestes 2015-01-21 16:27:56
Link | Quote | Reply
 
Odin.Quixacotl said: »
Orestes said:
OffenseMode and WeaponskillMode are linked to one another, assuming both share the same modes.

For example:
Code
    state.OffenseMode:options('Normal', 'Mid', 'Acc')
    state.WeaponskillMode:options('Normal', 'Mid', 'Acc')

With this setup, you never have to bother toggling WeaponskillMode. It's done for you when you toggle OffenseMode.

For RNG, WeaponskillMode is linked to RangedMode just the same.

You can verify you're using the correct WS sets with //gs showswaps

Ummm... That's not correct. It seems Offensemode and Weaponskillmode are not normally tied together. If you set Offensemode to Acc and then press F12 which displays your current modes then you will get, "Melee:Acc, WS:Normal" which is the jist of Yandaime's complaint.

As good as Mote's system is for basic sets, when you are dealing with specialized sets ie. PDT, ACC, etc. this was one of the shortcomings with that system. It is nigh difficult for the typical gamer to edit and customize modes and keybinds to their own play-style.

However if you do,
Code
send_command('bind f5 gs c set OffenseMode Acc;gs c set WeaponskillMode Acc')

and press F5 then you will get, "Melee:Acc, WS:Acc".

With this method you can also combine Offensemode:Acc Weaponskillmode:Acc and Defensemode:PDT for endgame situations like Delve or Incursion. The number of custom custom-combinations is only limited to your imagination.
Code
send_command('bind f6 gs c set OffenseMode Acc;gs c set WeaponskillMode Acc;gs c set Defensemode PDT')

Umm... Yes it is correct. They are tied together functionally. If you toggle OffenseMode's state to 'Acc' and WeaponskillMode also has a mode named 'Acc', it will be used for the following weaponskill. Mote's includes have always done this.

The distinction here is that you aren't actually toggling WeaponskillMode's state permanently, but the end result is the same. Hence there being no reason to toggle WeaponskillMode, unless you add a custom mode that differs from your regular offense sets.

Here's the source where this is handled in Mote-Include.lua.
Code
-- Function to handle the logic of selecting the proper weaponskill set.
function get_weaponskill_set(equipSet, spell, spellMap)
    
    -- Custom handling for weaponskills
    local ws_mode = state.WeaponskillMode.current
    
    if ws_mode == 'Normal' then
        -- If a particular weaponskill mode isn't specified, see if we have a weaponskill mode
        -- corresponding to the current offense mode. If so, use that.
        if spell.skill == 'Archery' or spell.skill == 'Marksmanship' then
            if state.RangedMode.current ~= 'Normal' and state.WeaponskillMode:contains(state.RangedMode.current) then
                ws_mode = state.RangedMode.current
            end
        else
            if state.OffenseMode.current ~= 'Normal' and state.WeaponskillMode:contains(state.OffenseMode.current) then
                ws_mode = state.OffenseMode.current
            end
        end
    end

    local custom_wsmode

    -- Allow the job file to specify a preferred weaponskill mode
    if get_custom_wsmode then
        custom_wsmode = get_custom_wsmode(spell, spellMap, ws_mode)
    end

    -- If the job file returned a weaponskill mode, use that.
    if custom_wsmode then
        ws_mode = custom_wsmode
    end

    if equipSet[ws_mode] then
        equipSet = equipSet[ws_mode]
        mote_vars.set_breadcrumbs:append(ws_mode)
    end

    return equipSet
end
 Odin.Quixacotl
Offline
Server: Odin
Game: FFXI
user: Quixacotl
Posts: 170
By Odin.Quixacotl 2015-01-21 17:58:18
Link | Quote | Reply
 
Code
if state.OffenseMode.current ~= 'Normal' and state.WeaponskillMode:contains(state.OffenseMode.current) then
    ws_mode = state.OffenseMode.current
end

Okay I now see where OffenseMode and WeaponskillMode are indeed tied together so my apologies. However the WeaponskillMode variable, "ws_mode" change to ACC doesn't show up when you ping your status via F12 so I couldn't tell for sure.

Nice detective work btw. :)
 Carbuncle.Bukadan
Offline
Server: Carbuncle
Game: FFXI
user: bukasmith
Posts: 280
By Carbuncle.Bukadan 2015-01-22 00:39:04
Link | Quote | Reply
 
windower4/addons/gearswap/equip_processing.lua 127 "id" id not defined by numbers.

my friend keeps getting that error whenever he casts a spell or does anything in gearswap, he even used my GS folder pasted over his and got the same issue. obv had him reload ect, any ideas?
 Cerberus.Conagh
Offline
Server: Cerberus
Game: FFXI
user: onagh
Posts: 3189
By Cerberus.Conagh 2015-01-22 02:24:35
Link | Quote | Reply
 
Carbuncle.Bukadan said: »
windower4/addons/gearswap/equip_processing.lua 127 "id" id not defined by numbers.

my friend keeps getting that error whenever he casts a spell or does anything in gearswap, he even used my GS folder pasted over his and got the same issue. obv had him reload ect, any ideas?

updates break luacore not gearswap, its sounds like his virus software isnt allowing luacore to update, try sending him alll of yuor lua stuff or disabling lolNorton or w.e Virus scanner he has for the update.

See if that helps
 Odin.Quixacotl
Offline
Server: Odin
Game: FFXI
user: Quixacotl
Posts: 170
By Odin.Quixacotl 2015-01-22 02:57:30
Link | Quote | Reply
 
Carbuncle.Bukadan said: »
windower4/addons/gearswap/equip_processing.lua 127 "id" id not defined by numbers.

my friend keeps getting that error whenever he casts a spell or does anything in gearswap, he even used my GS folder pasted over his and got the same issue. obv had him reload ect, any ideas?
It seems like your friend has a resources issue such as corrupted file. Unfortunately I have no idea how or where to download the most current res files short of re-installing Windower4. I tried renaming my res folder and then restarting Windower4 but it just uploaded an empty folder. If you can't get any answers here then you might try asking over at BG since Byrthnoth has been fielding help Qs recently and equip_processing is his area of expertise.
(edit) Conagh has a point. It could be his anti-virus preventing luacore from updating.
VIP
Offline
Posts: 111
By Iryoku 2015-01-22 05:52:39
Link | Quote | Reply
 
Resources are hosted at http://resources.windower.net/lua/
 Leviathan.Arcon
VIP
Offline
Server: Leviathan
Game: FFXI
user: Zaphor
Posts: 660
By Leviathan.Arcon 2015-01-22 08:28:01
Link | Quote | Reply
 
This is definitely a GearSwap issue, not a resource or library issue. It's an issue that has been fixed for a while, but for some reason updating is currently broken.
 Cerberus.Conagh
Offline
Server: Cerberus
Game: FFXI
user: onagh
Posts: 3189
By Cerberus.Conagh 2015-01-22 12:05:47
Link | Quote | Reply
 
Leviathan.Arcon said: »
This is definitely a GearSwap issue, not a resource or library issue. It's an issue that has been fixed for a while, but for some reason updating is currently broken.

Any chance you can post a link for a Gearswap file? Mine updates with 0 issues but I know lots of people with issues atm.
 Leviathan.Arcon
VIP
Offline
Server: Leviathan
Game: FFXI
user: Zaphor
Posts: 660
By Leviathan.Arcon 2015-01-22 13:38:41
Link | Quote | Reply
 
This file always contains the latest addons:
https://github.com/Windower/Lua/archive/4.1-dev.zip
Offline
Posts: 1
By Hisotaso 2015-01-23 18:09:24
Link | Quote | Reply
 
What's up peeps. I posted this over at the BG thread also but haven't had a response yet. I'm using Falkirk's Bst.lua from pastebin, the only modifications I've made are as follows:

I implemented the ability to cycle through jugs and equip during call beast and bestial loyalty, and a function to cast bestial loyalty if off of cd else call beast. All of this works fine, but when I attempt to use reward a jug is equipped in my ammo slot, not pet food. I also noticed that when I use my warp ring, during the casting a jug is equipped.

The relevant snippets are listed below.
Code
user_setup:

-- Set up Jug and keybind ctrl+f7
state.Jug = M{'Salubrious Broth','Dire Broth','Lucky Broth','Muddy Broth','Wispy Broth','Electrified Broth'}
            send_command('bind ^f7 gs c cycle Jug')

job_precast:

if spell.english == "Call Beast" or "Bestial Loyalty" then
					equip({ammo=state.Jug.current})
			end

function:

function job_self_command(command)
		if command[1] == 'callbeast' then
				if windower.ffxi.get_ability_recasts()[94] ~= nil and windower.ffxi.get_ability_recasts()[94] ~= 0 then
						if windower.ffxi.get_ability_recasts()[104] ~= nil and windower.ffxi.get_ability_recasts()[104] ~= 0 then
								add_to_chat(158,'Bestial Loyalty and Call Beast on CD!')
								return
						else 
								equip({ammo=state.Jug.current})
								windower.send_command('input /ja "Call Beast" <me>')
						end
				else
						equip({ammo=state.Jug.current})
						windower.send_command('input /ja "Bestial Loyalty" <me>')
				end
		end
end
Offline
Posts: 76
By maxdecphoenix 2015-01-23 19:30:22
Link | Quote | Reply
 
So basically the logic i'm trying to get is that instead of needing to manually cycle through idle sets (using prothescar's blu xlm which i've modified to suit my needs), for it to, if i'm not combat to automatically use my 'standard' idle gear (the set that includes latent refresh/regen, mov+ etc), but if i am in combat, use whichever set i've manually cycled through, PDT/MDT etc. I assumed in_combat would be the best choice.

When i switch from resting to idle, it applies the proper 'idle set' ("Standard").
When i cast an offensive spell, (and BGM changes to battle music)it applies the proper 'idle set', in that case, whichever i have set, PDT for time being.

And here's where i start to get issues, when I kill a mob, having not engaged, the battle music stops, but it just stays with w/e idle set i was in (PDT instead of standard). No biggie, i thought, status isn't actually changing, the status is still idle. If that's the case though, why is it working when i attack a mob, but not after it's dies. (unless of course, i force a status change by engaging something/ then disengaging, or just kneeling then standing up). So i think to myself, since the actual status isn't changing, maybe i should try replicate code in the aftercast() section. And here's where i noticed what seems to be not working, and why i'm surprised it even works at all, using a "print(player.in_combat) "debug" command in the aftercast() subroutine, i noticed player.in_combat was always false, never once did it return true. unless i engaged. Which according to the document tutorials, isn't exactly supposed to be the case.

So this code only "works" because when i switch from kneeling, in_combat is false, because it's default is false. And it's only applying the correct idle set after i cast, because that's what aftercast subroutine is telling it to. It's not applying the "standard" idle set after i kill a mob because, if i don't engage, it's not counting as an actual status change. And if i put any of the "in_combat" code in aftercast, it still doesn't work because, i'm not engaged.

Any ideas on how to distict between "idle" and "in combat though not engaged"?, I'd have sworn i had this functionality in spellcast years ago.

Code
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]])
		if Idle_ind == 1 and world.area == 'Arrapago Remnants' or world.area == 'Silver Sea Remnants' then
			equip(sets.Utility.Salvage)
		end
		
	end
	
	if spell.type == 'Weaponskill' then
		send_command('@input /echo TP Return '..player.tp..' ----->')
	end
end

function status_change(new,old)
	print(player.status)
	print(player.in_combat)
	if new == 'Engaged' then
		equip(sets.TP[sets.TP.index[TP_ind]])
		disable("main","sub")
	elseif new == 'Resting' then
		equip(sets.Resting.Standard)
	else
		if player.in_combat == false then
			equip(sets.Idle.Standard)
		else
			equip(sets.Idle[sets.Idle.index[Idle_ind]])
		end 
		if WPN == 0 then enable("main","sub") end
		if Idle_ind == 1 and world.area == 'Arrapago Remnants' or world.area == 'Silver Sea Remnants' then
			equip(sets.Utility.Salvage)
		end
	end
end
 Odin.Quixacotl
Offline
Server: Odin
Game: FFXI
user: Quixacotl
Posts: 170
By Odin.Quixacotl 2015-01-23 23:55:45
Link | Quote | Reply
 
Hisotaso said: »
What's up peeps. I posted this over at the BG thread also but haven't had a response yet. I'm using Falkirk's Bst.lua from pastebin, the only modifications I've made are as follows:

I implemented the ability to cycle through jugs and equip during call beast and bestial loyalty, and a function to cast bestial loyalty if off of cd else call beast. All of this works fine, but when I attempt to use reward a jug is equipped in my ammo slot, not pet food. I also noticed that when I use my warp ring, during the casting a jug is equipped.
Actually I replied over at BG yesterday. But for the sake of anyone else's curiosity I'll repost here.

No matter what you do, this check will ALWAYS parse because the syntax is incorrect.
Code
if spell.english == "Call Beast" or "Bestial Loyalty" then
    equip({ammo=state.Jug.current})
end

The correct syntax should be:
Code
if spell.english == "Call Beast" or spell.english == "Bestial Loyalty" then
    equip({ammo=state.Jug.current})
end

Here's an example how I cycle Jugs (chopped version to avoid wall-o-text).
[+]
 Odin.Quixacotl
Offline
Server: Odin
Game: FFXI
user: Quixacotl
Posts: 170
By Odin.Quixacotl 2015-01-24 01:12:31
Link | Quote | Reply
 
maxdecphoenix said: »
So basically the logic i'm trying to get is that instead of needing to manually cycle through idle sets (using prothescar's blu xlm which i've modified to suit my needs), for it to, if i'm not combat to automatically use my 'standard' idle gear (the set that includes latent refresh/regen, mov+ etc), but if i am in combat, use whichever set i've manually cycled through, PDT/MDT etc. I assumed in_combat would be the best choice.

When i switch from resting to idle, it applies the proper 'idle set' ("Standard").
When i cast an offensive spell, (and BGM changes to battle music)it applies the proper 'idle set', in that case, whichever i have set, PDT for time being.

And here's where i start to get issues, when I kill a mob, having not engaged, the battle music stops, but it just stays with w/e idle set i was in (PDT instead of standard). No biggie, i thought, status isn't actually changing, the status is still idle. If that's the case though, why is it working when i attack a mob, but not after it's dies. (unless of course, i force a status change by engaging something/ then disengaging, or just kneeling then standing up). So i think to myself, since the actual status isn't changing, maybe i should try replicate code in the aftercast() section. And here's where i noticed what seems to be not working, and why i'm surprised it even works at all, using a "print(player.in_combat) "debug" command in the aftercast() subroutine, i noticed player.in_combat was always false, never once did it return true. unless i engaged. Which according to the document tutorials, isn't exactly supposed to be the case.

So this code only "works" because when i switch from kneeling, in_combat is false, because it's default is false. And it's only applying the correct idle set after i cast, because that's what aftercast subroutine is telling it to. It's not applying the "standard" idle set after i kill a mob because, if i don't engage, it's not counting as an actual status change. And if i put any of the "in_combat" code in aftercast, it still doesn't work because, i'm not engaged.

Any ideas on how to distict between "idle" and "in combat though not engaged"?, I'd have sworn i had this functionality in spellcast years ago.
Is this what you're looking for?
Code
function aftercast(spell, action)
	update_gear()
end

function status_change(new, old, action)
	update_gear()
end

function update_gear()
	if player.status == 'Engaged' then
		equip(sets.TP[sets.TP.index[TP_ind]])
	elseif player.status == 'Idle' then
		if player.in_combat then
			equip(sets.TP[sets.TP.index[TP_ind]])
		else
			equip(sets.idle)
		end
	else
		equip(sets.Resting)
	end
	if WPN == 0 then enable("main","sub") end
	if Idle_ind == 1 and world.area == 'Arrapago Remnants' or world.area == 'Silver Sea Remnants' then
		equip(sets.Utility.Salvage)
	end
end
 Asura.Psylo
Offline
Server: Asura
Game: FFXI
user: psylo
Posts: 446
By Asura.Psylo 2015-01-24 05:09:08
Link | Quote | Reply
 
I play both char on the same PC, can i have 2 gearswap files by char ? Because i dont have the same gear on each.
Something like whm_char1.lua etc ...

Thks in advance
:-)
Offline
Posts: 1012
By Yandaime 2015-01-24 05:16:49
Link | Quote | Reply
 
Ok, I have tried everything I can think of and I have confirmed that Mote's includes do indeed change me over to WS mode automatically. It seems that my problem is that the WS isn't registering the mode change for some reason. The Engaged modes and all rules are working perfectly but for some reason, WS isn't attempting to equip anything but the normal set and I can not figure out why.

To sum it up...
JA Swaps: Working
Precast Swaps: Working
Engaged Swaps: Working
WeaponSkill Swaps: Working but only swaps to the 'Normal' set and I for the life of me can't figure out why.

**Edit**
I *ALWAYS* check with showswaps, just fyi.
Code
 sets.precast.WS = {ammo="Tantra Tathlum",head="Uk'uxkaj Cap",neck="Asperity Necklace",
		ear1="Moonshade Earring",ear2="Brutal Earring",body="Qaaxo Harness",hands="Anchorite's Gloves +1",
		ring1="Epona's Ring",ring2="Ifrit Ring",back="Bleating Mantle",
		waist="Windbuffet Belt +1",legs="Manibozho Brais",
		feet={ name="Qaaxo Leggings", augments={'Attack+15','"Mag.Atk.Bns."+15','STR+12',}}}
		
	sets.precast.WS.SomeAcc = {ammo="Honed Tathlum",head="Whirlpool Mask",
		neck="Asperity Necklace",ear1="Moonshade Earring",ear2="Brutal Earring",
        body="Qaaxo Harness",hands="Hesychast's Gloves +1",
		ring1="Epona's Ring",ring2="Rajas Ring",back="Bleating Mantle",
		waist="Windbuffet Belt +1",legs="Manibozho Brais",
		feet={ name="Qaaxo Leggings", augments={'Attack+15','"Mag.Atk.Bns."+15','STR+12',}}}
		
	sets.precast.WS.Acc = {ammo="Honed Tathlum",head="Whirlpool Mask",
		neck=gear.ElementalGorget,ear1="Bladeborn Earring",ear2="Steelflash Earring",
        body="Mekosu. Harness",hands="Hesychast's Gloves +1",
		ring1="Epona's Ring",ring2="Rajas Ring",back="Anchoret's Mantle",
		waist="Caudata Belt",legs="Manibozho Brais",
		feet={ name="Qaaxo Leggings", augments={'Accuracy+15','STR+7','Phys. dmg. taken -3',}}}

    -- Specific weaponskill sets.
    
    -- legs={name="Quiahuiz Trousers", augments={'Phys. dmg. taken -2%','Magic dmg. taken -2%','STR+8'}}}
	sets.precast.WS["Victory Smite"] = set_combine(sets.precast.WS, {neck="Rancor Collar",back="Buquwik Cape",ring2="Ifrit Ring"})
	sets.precast.WS["Victory Smite"].SomeAcc = set_combine(sets.precast.WS, sets.precast.WS.SomeAcc, {neck="Rancor Collar",back="Buquwik Cape",ring2="Ifrit Ring"})
	sets.precast.WS["Victory Smite"].Acc = set_combine(sets.precast.WS, sets.precast.WS.Acc)


I have no idea why the rule's aren't working for WS swaps. I greatly appreciate the help. I'd really like to cut down to only needing one file per job lol
 Asura.Darvamos
VIP
Offline
Server: Asura
Game: FFXI
user: Demmis
Posts: 234
By Asura.Darvamos 2015-01-24 05:26:19
Link | Quote | Reply
 
Asura.Psylo said: »
I play both char on the same PC, can i have 2 gearswap files by char ? Because i dont have the same gear on each.
Something like whm_char1.lua etc ...

Thks in advance
:-)
MainName_JOB.lua
AltName_JOB.lua

Example:
Ted_WHM.lua
Mike_WHM.lua
 Asura.Psylo
Offline
Server: Asura
Game: FFXI
user: psylo
Posts: 446
By Asura.Psylo 2015-01-24 05:42:06
Link | Quote | Reply
 
Thks. :-)
Offline
Posts: 76
By maxdecphoenix 2015-01-24 06:19:17
Link | Quote | Reply
 
Odin.Quixacotl said: »
maxdecphoenix said: »
So basically the logic i'm trying to get is that instead of needing to manually cycle through idle sets (using prothescar's blu xlm which i've modified to suit my needs), for it to, if i'm not combat to automatically use my 'standard' idle gear (the set that includes latent refresh/regen, mov+ etc), but if i am in combat, use whichever set i've manually cycled through, PDT/MDT etc. I assumed in_combat would be the best choice.

When i switch from resting to idle, it applies the proper 'idle set' ("Standard").
When i cast an offensive spell, (and BGM changes to battle music)it applies the proper 'idle set', in that case, whichever i have set, PDT for time being.

And here's where i start to get issues, when I kill a mob, having not engaged, the battle music stops, but it just stays with w/e idle set i was in (PDT instead of standard). No biggie, i thought, status isn't actually changing, the status is still idle. If that's the case though, why is it working when i attack a mob, but not after it's dies. (unless of course, i force a status change by engaging something/ then disengaging, or just kneeling then standing up). So i think to myself, since the actual status isn't changing, maybe i should try replicate code in the aftercast() section. And here's where i noticed what seems to be not working, and why i'm surprised it even works at all, using a "print(player.in_combat) "debug" command in the aftercast() subroutine, i noticed player.in_combat was always false, never once did it return true. unless i engaged. Which according to the document tutorials, isn't exactly supposed to be the case.

So this code only "works" because when i switch from kneeling, in_combat is false, because it's default is false. And it's only applying the correct idle set after i cast, because that's what aftercast subroutine is telling it to. It's not applying the "standard" idle set after i kill a mob because, if i don't engage, it's not counting as an actual status change. And if i put any of the "in_combat" code in aftercast, it still doesn't work because, i'm not engaged.

Any ideas on how to distict between "idle" and "in combat though not engaged"?, I'd have sworn i had this functionality in spellcast years ago.
Is this what you're looking for?
Code
function aftercast(spell, action)
	update_gear()
end

function status_change(new, old, action)
	update_gear()
end

function update_gear()
	if player.status == 'Engaged' then
		equip(sets.TP[sets.TP.index[TP_ind]])
	elseif player.status == 'Idle' then
		if player.in_combat then
			equip(sets.TP[sets.TP.index[TP_ind]])
		else
			equip(sets.idle)
		end
	else
		equip(sets.Resting)
	end
	if WPN == 0 then enable("main","sub") end
	if Idle_ind == 1 and world.area == 'Arrapago Remnants' or world.area == 'Silver Sea Remnants' then
		equip(sets.Utility.Salvage)
	end
end
No, but thanks. This is essentially what i had before. The issue is that, for me, the in_combat() variable doesn't seem to be triggering as claimed. In the product documentations, it states 'boolean that indicates whether battle music is playing or not'. This has either been changed or it's now out-of-date, but either way it's wrong. In my experience trying to get this functionality it should read 'boolean that indicates whether battle music is or isn't playing with weapons drawn.' which i don't think was the intention of the variable. Thanks again, though. Back to the drawing board for me.

edit, this can be tested by putting print(player.in_combat) somewhere in either, or both, aftercast function or statuschange function. This will echo the value of in_combat() in the windower console. For me, it remains 'false' regardless if music is playing or not, unless of course i'm engaged.
 Odin.Quixacotl
Offline
Server: Odin
Game: FFXI
user: Quixacotl
Posts: 170
By Odin.Quixacotl 2015-01-25 00:19:06
Link | Quote | Reply
 
Yandaime said: »
Ok, I have tried everything I can think of and I have confirmed that Mote's includes do indeed change me over to WS mode automatically. It seems that my problem is that the WS isn't registering the mode change for some reason. The Engaged modes and all rules are working perfectly but for some reason, WS isn't attempting to equip anything but the normal set and I can not figure out why.

To sum it up...
JA Swaps: Working
Precast Swaps: Working
Engaged Swaps: Working
WeaponSkill Swaps: Working but only swaps to the 'Normal' set and I for the life of me can't figure out why.

**Edit**
I *ALWAYS* check with showswaps, just fyi.
Code
 sets.precast.WS = {ammo="Tantra Tathlum",head="Uk'uxkaj Cap",neck="Asperity Necklace",
		ear1="Moonshade Earring",ear2="Brutal Earring",body="Qaaxo Harness",hands="Anchorite's Gloves +1",
		ring1="Epona's Ring",ring2="Ifrit Ring",back="Bleating Mantle",
		waist="Windbuffet Belt +1",legs="Manibozho Brais",
		feet={ name="Qaaxo Leggings", augments={'Attack+15','"Mag.Atk.Bns."+15','STR+12',}}}
		
	sets.precast.WS.SomeAcc = {ammo="Honed Tathlum",head="Whirlpool Mask",
		neck="Asperity Necklace",ear1="Moonshade Earring",ear2="Brutal Earring",
        body="Qaaxo Harness",hands="Hesychast's Gloves +1",
		ring1="Epona's Ring",ring2="Rajas Ring",back="Bleating Mantle",
		waist="Windbuffet Belt +1",legs="Manibozho Brais",
		feet={ name="Qaaxo Leggings", augments={'Attack+15','"Mag.Atk.Bns."+15','STR+12',}}}
		
	sets.precast.WS.Acc = {ammo="Honed Tathlum",head="Whirlpool Mask",
		neck=gear.ElementalGorget,ear1="Bladeborn Earring",ear2="Steelflash Earring",
        body="Mekosu. Harness",hands="Hesychast's Gloves +1",
		ring1="Epona's Ring",ring2="Rajas Ring",back="Anchoret's Mantle",
		waist="Caudata Belt",legs="Manibozho Brais",
		feet={ name="Qaaxo Leggings", augments={'Accuracy+15','STR+7','Phys. dmg. taken -3',}}}

    -- Specific weaponskill sets.
    
    -- legs={name="Quiahuiz Trousers", augments={'Phys. dmg. taken -2%','Magic dmg. taken -2%','STR+8'}}}
	sets.precast.WS["Victory Smite"] = set_combine(sets.precast.WS, {neck="Rancor Collar",back="Buquwik Cape",ring2="Ifrit Ring"})
	sets.precast.WS["Victory Smite"].SomeAcc = set_combine(sets.precast.WS, sets.precast.WS.SomeAcc, {neck="Rancor Collar",back="Buquwik Cape",ring2="Ifrit Ring"})
	sets.precast.WS["Victory Smite"].Acc = set_combine(sets.precast.WS, sets.precast.WS.Acc)


I have no idea why the rule's aren't working for WS swaps. I greatly appreciate the help. I'd really like to cut down to only needing one file per job lol
If I understand you correctly, you're saying you can't equip WS gear although you can change WeaponskillMode. Have you modified the 'function user_setup()' block in any way? That seems strange because I just copy/pasted Mote's Mnk.lua without edits and it seems to equip my WS gear just fine no matter what mode I'm on.
 
Offline
Posts:
By 2015-01-25 04:07:01
 Undelete | Edit  | Link | Quote | Reply
 
Post deleted by User.
 Ragnarok.Flippant
Offline
Server: Ragnarok
Game: FFXI
user: Enceladus
Posts: 658
By Ragnarok.Flippant 2015-01-25 04:19:01
Link | Quote | Reply
 
Yes.
 Phoenix.Urteil
Offline
Server: Phoenix
Game: FFXI
user: Urteil89
By Phoenix.Urteil 2015-01-25 05:17:58
Link | Quote | Reply
 
I can't get the Foreshock sword to work in my gearswap.

sets.TP["Foreshock sword"] = {gearssethere}





When engaged the gear won't switch. Is the syntax of the weapon name correct?



Changed the name of the item to exactly "Foreshock sword" in the resources folder and now it works.
 Sylph.Murex
Offline
Server: Sylph
Game: FFXI
Posts: 81
By Sylph.Murex 2015-01-27 16:27:44
Link | Quote | Reply
 
I have literaly spent days trying to figure out wtf is wrong with this gearswap with no damn luck and it's really pissin me off...

I sit idle in adoulin and cast utsu and it does the precast midcast and aftercast which shows in showswaps BUT then it changes into my normal engaged set a sec after the aftercast and doesn't show in showswaps I also have this problem in BC's where I need my acc ***and it swaps into normal gear and this has costed me quite a few times I hit f12 it updates my gear and puts me into what I should be in but wtf I need it to do it right the first time makes it difficult when i'm dualing bc's and cant keep hiting f12 after every damn cast.
Code
-------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job.  Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------

--[[
    Custom commands:

    gs c cycle treasuremode (set on ctrl-= by default): Cycles through the available treasure hunter modes.
    
    Treasure hunter modes:
        None - Will never equip TH gear
        Tag - Will equip TH gear sufficient for initial contact with a mob (either melee, ranged hit, or Aeolian Edge AOE)
        SATA - Will equip TH gear sufficient for initial contact with a mob, and when using SATA
        Fulltime - Will keep TH gear equipped fulltime

--]]

-- Initialization function for this job file.
function get_sets()
    mote_include_version = 2
    
    -- Load and initialize the include file.
    include('Mote-Include.lua')
end

-- Setup vars that are user-independent.  state.Buff vars initialized here will automatically be tracked.
function job_setup()
    state.Buff['Sneak Attack'] = buffactive['sneak attack'] or false
    state.Buff['Trick Attack'] = buffactive['trick attack'] or false
    state.Buff['Feint'] = buffactive['feint'] or false
    
    include('Mote-TreasureHunter')

    -- For th_action_check():
    -- JA IDs for actions that always have TH: Provoke, Animated Flourish
    info.default_ja_ids = S{35, 204}
    -- Unblinkable JA IDs for actions that always have TH: Quick/Box/Stutter Step, Desperate/Violent Flourish
    info.default_u_ja_ids = S{201, 202, 203, 205, 207}
end

-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------

-- Setup vars that are user-dependent.  Can override this function in a sidecar file.
function user_setup()
    state.OffenseMode:options('Normal', 'Acc', 'Mod')
    state.HybridMode:options('Normal', 'Evasion', 'PDT')
    state.RangedMode:options('Normal', 'Acc')
    state.WeaponskillMode:options('Normal', 'Acc', 'Mod')
    state.PhysicalDefenseMode:options('Evasion', 'PDT')


    gear.default.weaponskill_neck = "Asperity Necklace"
    gear.default.weaponskill_waist = "Caudata Belt"
    gear.AugQuiahuiz = {name="Quiahuiz Trousers", augments={'Haste+2','"Snapshot"+2','STR+8'}}

    -- Additional local binds
    send_command('bind ^` input /ja "Flee" <me>')
    send_command('bind ^= gs c cycle treasuremode')
    send_command('bind !- gs c cycle targetmode')

    select_default_macro_book()
end

-- Called when this job file is unloaded (eg: job change)
function user_unload()
    send_command('unbind ^`')
    send_command('unbind !-')
end

-- Define sets and vars used by this job file.
function init_gear_sets()
    --------------------------------------
    -- Special sets (required by rules)
    --------------------------------------

    sets.TreasureHunter = {hands="Plunderer's Armlets +1", waist="Chaac Belt", feet="Raider's Poulaines +2"}
    sets.ExtraRegen = {head="Ocelomeh Headpiece +1"}
    sets.Kiting = {feet="Skadi's Jambeaux +1"}

	sets.buff['Sneak Attack'] = {
			head="Pill. Bonnet +1",
			neck="Moepapa Medal",
			ear1="Jupiter's Pearl",
			ear2="Jupiter's Pearl",
			body="Pill. Vest +1",
			hands="Raid. Armlets +2",
			ring1="Zilant Ring",
			ring2="Rajas Ring",
			back="Cavaros Mantle",
			waist="Artful Belt +1",
			legs="Pill. Culottes +1",
			feet="Plun. Poulaines +1"}

    sets.buff['Trick Attack'] = {
			head="Pill. Bonnet +1",
			neck="Moepapa Medal",
			ear1="Auster's Pearl",
			ear2="Auster's Pearl",
			body="Plunderer's Vest +1",
			hands="Pill. Armlets +1",
			ring1="Garuda Ring +1",
			ring2="Rajas Ring",
			back="Canny Cape",
			waist="Elanid Belt",
			legs="Pill. Culottes +1",
			feet="Plun. Poulaines +1"}

    -- Actions we want to use to tag TH.
    sets.precast.Step = sets.TreasureHunter
    sets.precast.Flourish1 = sets.TreasureHunter
    sets.precast.JA.Provoke = sets.TreasureHunter


    --------------------------------------
    -- Precast sets
    --------------------------------------

    -- Precast sets to enhance JAs
    sets.precast.JA['Collaborator'] = {head="Raider's Bonnet +2"}
    sets.precast.JA['Accomplice'] = {head="Raider's Bonnet +2"}
    sets.precast.JA['Flee'] = {feet="Pillager's Poulaines +1"}
    sets.precast.JA['Hide'] = {body="Pillager's Vest +1"}
    sets.precast.JA['Conspirator'] = {"Raider's Vest +2"} 
    sets.precast.JA['Steal'] = {head="Plunderer's Bonnet",hands="Pillager's Armlets +1",legs="Pillager's Culottes +1",feet="Pillager's Poulaines +1"}
    sets.precast.JA['Despoil'] = {legs="Raider's Culottes +2",feet="Raider's Poulaines +2"}
    sets.precast.JA['Perfect Dodge'] = {hands="Plunderer's Armlets +1"}
    sets.precast.JA['Feint'] = {"Plun. Culottes +1"}

    sets.precast.JA['Sneak Attack'] = sets.buff['Sneak Attack']
    sets.precast.JA['Trick Attack'] = sets.buff['Trick Attack']


    -- Waltz set (chr and vit)
    sets.precast.Waltz = {ammo="Sonia's Plectrum",
        head="Whirlpool Mask",
        body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Asklepian Ring",
        back="Iximulew Cape",waist="Caudata Belt",legs="Pillager's Culottes +1",feet="Plunderer's Poulaines +1"}

    -- Don't need any special gear for Healing Waltz.
    sets.precast.Waltz['Healing Waltz'] = {}


    -- Fast cast sets for spells
    sets.precast.FC = {
			head="Haruspex Hat +1",
			neck="Orunmila's Torque",
			ear1="Enchntr. Earring +1",
			ear2="Loquac. Earring",
			body="Dread Jupon",
			hands="Thaumas Gloves",
			ring1="Veneficium Ring",
			ring2="Prolix Ring",
			legs="Enif Cosciales"}

    sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})


    -- Ranged snapshot gear
    sets.precast.RA = {head="Aurore Beret",hands="Iuitl Wristbands",legs="Nahtirah Trousers",feet="Wurrukatte Boots"}


    -- Weaponskill sets

    -- Default set for any weaponskill that isn't any more specifically defined
	sets.precast.WS = {
			head="Uk'uxkaj Cap",
			neck="Shadow Gorget",
			ear1="Moonshade Earring",
			ear2="Jupiter's Pearl",
			body="Dread Jupon",
			hands="Pill. Armlets +1",
			ring1="Zilant Ring",
			ring2="Rajas Ring",
			back="Vespid Mantle",
			waist="Prosilio Belt +1",
			legs="Manibozho Brais",
			feet="Plun. Poulaines +1"}
			
    sets.precast.WS.Acc = set_combine(sets.precast.WS, {})

    -- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
    sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, {ring1="Stormsoul Ring",legs="Nahtirah Trousers"})
    sets.precast.WS['Exenterator'].Acc = set_combine(sets.precast.WS['Exenterator'], {ammo="Honed Tathlum", back="Letalis Mantle"})
    sets.precast.WS['Exenterator'].Mod = set_combine(sets.precast.WS['Exenterator'], {head="Felistris Mask",waist=gear.ElementalBelt})
    sets.precast.WS['Exenterator'].SA = set_combine(sets.precast.WS['Exenterator'].Mod, {ammo="Qirmiz Tathlum"})
    sets.precast.WS['Exenterator'].TA = set_combine(sets.precast.WS['Exenterator'].Mod, {ammo="Qirmiz Tathlum"})
    sets.precast.WS['Exenterator'].SATA = set_combine(sets.precast.WS['Exenterator'].Mod, {ammo="Qirmiz Tathlum"})

    sets.precast.WS['Dancing Edge'] = set_combine(sets.precast.WS, {})
    sets.precast.WS['Dancing Edge'].Acc = set_combine(sets.precast.WS['Dancing Edge'], {ammo="Honed Tathlum", back="Letalis Mantle"})
    sets.precast.WS['Dancing Edge'].Mod = set_combine(sets.precast.WS['Dancing Edge'], {waist=gear.ElementalBelt})
    sets.precast.WS['Dancing Edge'].SA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {ammo="Qirmiz Tathlum"})
    sets.precast.WS['Dancing Edge'].TA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {ammo="Qirmiz Tathlum"})
    sets.precast.WS['Dancing Edge'].SATA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {ammo="Qirmiz Tathlum"})

    sets.precast.WS['Evisceration'] = set_combine(sets.precast.WS, {ammo="Qirmiz Tathlum",
        head="Uk'uxkaj Cap",neck="Rancor Collar",ear1="Brutal Earring",ear2="Moonshade Earring"})
    sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {ammo="Honed Tathlum", back="Letalis Mantle"})
    sets.precast.WS['Evisceration'].Mod = set_combine(sets.precast.WS['Evisceration'], {back="Kayapa Cape",waist=gear.ElementalBelt})
    sets.precast.WS['Evisceration'].SA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
    sets.precast.WS['Evisceration'].TA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
    sets.precast.WS['Evisceration'].SATA = set_combine(sets.precast.WS['Evisceration'].Mod, {})

   sets.precast.WS["Rudra's Storm"] = set_combine(sets.precast.WS, {
			head="Uk'uxkaj Cap",
			neck="Shadow Gorget",
			ear1="Moonshade Earring",
			ear2="Jupiter's Pearl",
			body="Dread Jupon",
			hands="Pill. Armlets +1",
			ring1="Zilant Ring",
			ring2="Rajas Ring",
			back="Vespid Mantle",
			waist="Prosilio Belt +1",
			legs="Manibozho Brais",
			feet="Plun. Poulaines +1"})
	
    sets.precast.WS["Rudra's Storm"].Acc = set_combine(sets.precast.WS["Rudra's Storm"], {
			head="Uk'uxkaj Cap",
			neck="Shadow Gorget",
			ear1="Moonshade Earring",
			ear2="Jupiter's Pearl",
			body="Dread Jupon",
			hands="Pill. Armlets +1",
			ring1="Zilant Ring",
			ring2="Rajas Ring",
			back="Vespid Mantle",
			waist="Prosilio Belt +1",
			legs="Manibozho Brais",
			feet="Plun. Poulaines +1"})
	
    sets.precast.WS["Rudra's Storm"].Mod = set_combine(sets.precast.WS["Rudra's Storm"], {
			head="Uk'uxkaj Cap",
			neck="Shadow Gorget",
			ear1="Moonshade Earring",
			ear2="Jupiter's Pearl",
			body="Dread Jupon",
			hands="Pill. Armlets +1",
			ring1="Zilant Ring",
			ring2="Rajas Ring",
			back="Vespid Mantle",
			waist="Prosilio Belt +1",
			legs="Manibozho Brais",
			feet="Plun. Poulaines +1"})
	
    sets.precast.WS["Rudra's Storm"].SA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {
			head="Pill. Bonnet +1",
			neck="Shadow Gorget",
			ear1="Moonshade Earring",
			ear2="Jupiter's Pearl",
			body="Dread Jupon",
			hands="Pill. Armlets +1",
			ring1="Zilant Ring",
			ring2="Rajas Ring",
			back="Kayapa Cape",
			waist="Shadow Belt",
			legs="Pill. Culottes +1",
			feet="Plun. Poulaines +1"})
		
    sets.precast.WS["Rudra's Storm"].TA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {
			head="Pill. Bonnet +1",
			neck="Shadow Gorget",
			ear1="Moonshade Earring",
			ear2="Auster's Pearl",
			body="Dread Jupon",
			hands="Pill. Armlets +1",
			ring1="Garuda Ring +1",
			ring2="Rajas Ring",
			back="Vespid Mantle",
			waist="Shadow Belt",
			legs="Pill. Culottes +1",
			feet="Plun. Poulaines +1"})
		
    sets.precast.WS["Rudra's Storm"].SATA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {
			head="Uk'uxkaj Cap",
			neck="Shadow Gorget",
			ear1="Moonshade Earring",
			ear2="Jupiter's Pearl",
			body="Dread Jupon",
			hands="Pill. Armlets +1",
			ring1="Zilant Ring",
			ring2="Rajas Ring",
			back="Vespid Mantle",
			waist="Prosilio Belt +1",
			legs="Manibozho Brais",
			feet="Plun. Poulaines +1"})

    sets.precast.WS["Shark Bite"] = set_combine(sets.precast.WS, {head="Pillager's Bonnet +1",ear1="Brutal Earring",ear2="Moonshade Earring"})
    sets.precast.WS['Shark Bite'].Acc = set_combine(sets.precast.WS['Shark Bite'], {ammo="Honed Tathlum", back="Letalis Mantle"})
    sets.precast.WS['Shark Bite'].Mod = set_combine(sets.precast.WS['Shark Bite'], {back="Kayapa Cape",waist=gear.ElementalBelt})
    sets.precast.WS['Shark Bite'].SA = set_combine(sets.precast.WS['Shark Bite'].Mod, {ammo="Qirmiz Tathlum",
        body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
    sets.precast.WS['Shark Bite'].TA = set_combine(sets.precast.WS['Shark Bite'].Mod, {ammo="Qirmiz Tathlum",
        body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
    sets.precast.WS['Shark Bite'].SATA = set_combine(sets.precast.WS['Shark Bite'].Mod, {ammo="Qirmiz Tathlum",
        body="Pillager's Vest +1",legs="Pillager's Culottes +1"})

    sets.precast.WS['Mandalic Stab'] = set_combine(sets.precast.WS, {head="Pillager's Bonnet +1",ear1="Brutal Earring",ear2="Moonshade Earring"})
    sets.precast.WS['Mandalic Stab'].Acc = set_combine(sets.precast.WS['Mandalic Stab'], {ammo="Honed Tathlum", back="Letalis Mantle"})
    sets.precast.WS['Mandalic Stab'].Mod = set_combine(sets.precast.WS['Mandalic Stab'], {back="Kayapa Cape",waist=gear.ElementalBelt})
    sets.precast.WS['Mandalic Stab'].SA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {ammo="Qirmiz Tathlum",
        body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
    sets.precast.WS['Mandalic Stab'].TA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {ammo="Qirmiz Tathlum",
        body="Pillager's Vest +1",legs="Pillager's Culottes +1"})
    sets.precast.WS['Mandalic Stab'].SATA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {ammo="Qirmiz Tathlum",
        body="Pillager's Vest +1",legs="Pillager's Culottes +1"})

    sets.precast.WS['Aeolian Edge'] = {ammo="Jukukik Feather",
        head="Wayfarer Circlet",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Moonshade Earring",
        body="Wayfarer Robe",hands="Pillager's Armlets +1",ring1="Acumen Ring",ring2="Demon's Ring",
        back="Toro Cape",waist=gear.ElementalBelt,legs="Shneddick Tights +1",feet="Wayfarer Clogs"}

    sets.precast.WS['Aeolian Edge'].TH = set_combine(sets.precast.WS['Aeolian Edge'], sets.TreasureHunter)


    --------------------------------------
    -- Midcast sets
    --------------------------------------

    sets.midcast.FastRecast = {
			main="",
			sub="",
			range="",
			ammo="",
			head="Felistris Mask",
			neck="Orunmila's Torque",
			ear1="Enchntr. Earring +1",
			ear2="Loquac. Earring",
			body="Dread Jupon",
			hands="Thaumas Gloves",
			ring1="",
			ring2="Prolix Ring",
			back="Mujin Mantle",
			waist="Ninurta's Sssh",
			legs="Enif Cosciales",
			feet="Plun. Poulaines +1"}
			
	-- Specific spells 
	
     sets.midcast.Utsusemi = set_combine(sets.midcast.FastRecast)

    -- Ranged gear
    sets.midcast.RA = {
        head="Whirlpool Mask",neck="Ej Necklace",ear1="Clearview Earring",ear2="Volley Earring",
        body="Iuitl Vest",hands="Iuitl Wristbands",ring1="Beeline Ring",ring2="Hajduk Ring",
        back="Libeccio Mantle",waist="Aquiline Belt",legs="Nahtirah Trousers",feet="Iuitl Gaiters +1"}

    sets.midcast.RA.Acc = {
        head="Pillager's Bonnet +1",neck="Ej Necklace",ear1="Clearview Earring",ear2="Volley Earring",
        body="Iuitl Vest",hands="Buremte Gloves",ring1="Beeline Ring",ring2="Hajduk Ring",
        back="Libeccio Mantle",waist="Aquiline Belt",legs="Thurandaut Tights +1",feet="Pillager's Poulaines +1"}


    --------------------------------------
    -- Idle/resting/defense sets
    --------------------------------------

    -- Resting sets
    sets.resting = {
			head="Ocelomeh Headpiece +1",
			neck="Wiglen Gorget",
			ear1="Dawn Earring",
			ring1="Sheltered Ring",
			ring2="Paguroidea Ring",
			waist="Lycopodium Sash",}


    -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)

    sets.idle = {
			range="Raider's Boomerang",
			head="Ocelomeh Headpiece +1",
			neck="Wiglen Gorget",
			ear1="Dawn Earring",
			ear2="Hearty Earring",
			body="Plunderer's Vest +1",
			hands="Pill. Armlets +1",
			ring1="Sheltered Ring",
			ring2="Paguroidea Ring",
			back="Shadow Mantle",
			waist="Lycopodium Sash",
			legs="Pillager's Culottes +1",
			feet="Skadi's Jambeaux +1"}

    sets.idle.Town = {
			range="Raider's Boomerang",
			head="Ocelomeh Headpiece +1",
			neck="Wiglen Gorget",
			ear1="Dawn Earring",
			ear2="Hearty Earring",
			body="Plunderer's Vest +1",
			hands="Pill. Armlets +1",
			ring1="Sheltered Ring",
			ring2="Paguroidea Ring",
			back="Shadow Mantle",
			waist="Lycopodium Sash",
			legs="Pillager's Culottes +1",
			feet="Skadi's Jambeaux +1"}

    sets.idle.Weak = {
			range="Raider's Boomerang",
			head="Ocelomeh Headpiece +1",
			neck="Wiglen Gorget",
			ear1="Dawn Earring",
			ear2="Hearty Earring",
			body="Plunderer's Vest +1",
			hands="Pill. Armlets +1",
			ring1="Sheltered Ring",
			ring2="Paguroidea Ring",
			back="Shadow Mantle",
			waist="Lycopodium Sash",
			legs="Pillager's Culottes +1",
			feet="Skadi's Jambeaux +1"}


    -- Defense sets

    sets.defense.Evasion = {
        head="Pillager's Bonnet +1",neck="Ej Necklace",
        body="Qaaxo Harness",hands="Pillager's Armlets +1",ring1="Defending Ring",ring2="Beeline Ring",
        back="Canny Cape",waist="Flume Belt",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}

    sets.defense.PDT = {
			head="Lithelimb Cap",
			neck="Twilight Torque",
			ear1="Dudgeon Earring",
			ear2="Heartseeker Earring",
			body="Emet Harness +1",
			hands="Umuthi Gloves",
			ring1="Patricius Ring",
			ring2="Defending Ring",
			back="Mollusca Mantle",
			waist="Flume Belt +1",
			legs="Pill. Culottes +1",
			feet="Plun. Poulaines +1"}

    sets.defense.MDT = set_combine(sets.defense.PDT,{
			ear1="Sanare Earring",
			ear2="Merman's Earring",
			ring1="Succor Ring",
			ring2="Defending Ring",
			back="Engulfer Cape +1",
			waist="Flax Sash"})


    --------------------------------------
    -- Melee sets
    --------------------------------------

    -- Normal melee group
    sets.engaged = {
			main="", 
			sub="",
			range="Raider's Boomerang",
			head="Felistris Mask",
			neck="Asperity Necklace",
			ear1="Dudgeon Earring",
			ear2="Heartseeker Earring",
			body="Plunderer's Vest +1",
			hands="Pill. Armlets +1",
			ring1="Epona's Ring",
			ring2="Rajas Ring",
			back="Canny Cape",
			waist="Patentia Sash",
			legs="Pill. Culottes +1",
			feet="Plun. Poulaines +1"}
			
    sets.engaged.Acc = {
			main="", 
			sub="",
			range="Raider's Boomerang",
			head="Whirlpool Mask",
			neck="Ej Necklace +1",
			ear1="Dudgeon Earring",
			ear2="Heartseeker Earring",
			body="Mekosuchinae Harness",
			hands="Plun. Armlets +1",
			ring1="Mars's Ring",
			ring2="Rajas Ring",
			back="Canny Cape",
			waist="Olseni Belt",
			legs="Pill. Culottes +1",
			feet="Pill. Poulaines +1"}
        
    -- Mod set for trivial mobs (Skadi+1)
    sets.engaged.Mod = {ammo="Thew Bomblet",
        head="Felistris Mask",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
        body="Skadi's Cuirie +1",hands="Pillager's Armlets +1",ring1="Rajas Ring",ring2="Epona's Ring",
        back="Atheling Mantle",waist="Patentia Sash",legs=gear.AugQuiahuiz,feet="Plunderer's Poulaines +1"}

    -- Mod set for trivial mobs (Thaumas)
    sets.engaged.Mod2 = {ammo="Thew Bomblet",
        head="Felistris Mask",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
        body="Thaumas Coat",hands="Pillager's Armlets +1",ring1="Rajas Ring",ring2="Epona's Ring",
        back="Atheling Mantle",waist="Patentia Sash",legs="Pillager's Culottes +1",feet="Plunderer's Poulaines +1"}

    sets.engaged.Evasion = {ammo="Thew Bomblet",
        head="Felistris Mask",neck="Ej Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
        body="Qaaxo Harness",hands="Pillager's Armlets +1",ring1="Beeline Ring",ring2="Epona's Ring",
        back="Canny Cape",waist="Patentia Sash",legs="Kaabnax Trousers",feet="Qaaxo Leggings"}
    sets.engaged.Acc.Evasion = {ammo="Honed Tathlum",
        head="Whirlpool Mask",neck="Ej Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
        body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Beeline Ring",ring2="Epona's Ring",
        back="Canny Cape",waist="Hurch'lan Sash",legs="Kaabnax Trousers",feet="Qaaxo Leggings"}

    sets.engaged.PDT = {ammo="Thew Bomblet",
        head="Felistris Mask",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
        body="Iuitl Vest",hands="Pillager's Armlets +1",ring1="Defending Ring",ring2="Epona's Ring",
        back="Iximulew Cape",waist="Patentia Sash",legs="Iuitl Tights",feet="Qaaxo Leggings"}
    sets.engaged.Acc.PDT = {ammo="Honed Tathlum",
        head="Whirlpool Mask",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
        body="Iuitl Vest",hands="Pillager's Armlets +1",ring1="Defending Ring",ring2="Epona's Ring",
        back="Canny Cape",waist="Hurch'lan Sash",legs="Iuitl Tights",feet="Qaaxo Leggings"}

end


-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------

-- Run after the general precast() is done.
function job_post_precast(spell, action, spellMap, eventArgs)
    if spell.english == 'Aeolian Edge' and state.TreasureMode.value ~= 'None' then
        equip(sets.TreasureHunter)
    elseif spell.english=='Sneak Attack' or spell.english=='Trick Attack' or spell.type == 'WeaponSkill' then
        if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
            equip(sets.TreasureHunter)
        end
    end
end

-- Run after the general midcast() set is constructed.
function job_post_midcast(spell, action, spellMap, eventArgs)
    if state.TreasureMode.value ~= 'None' and spell.action_type == 'Ranged Attack' then
        equip(sets.TreasureHunter)
    end
end

-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
    -- Weaponskills wipe SATA/Feint.  Turn those state vars off before default gearing is attempted.
    if spell.type == 'WeaponSkill' and not spell.interrupted then
        state.Buff['Sneak Attack'] = false
        state.Buff['Trick Attack'] = false
        state.Buff['Feint'] = false
    end
end

-- Called after the default aftercast handling is complete.
function job_post_aftercast(spell, action, spellMap, eventArgs)
    -- If Feint is active, put that gear set on on top of regular gear.
    -- This includes overlaying SATA gear.
    check_buff('Feint', eventArgs)
end

-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------

-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
    if state.Buff[buff] ~= nil then
        if not midaction() then
            handle_equipping_gear(player.status)
        end
    end
end


-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------

function get_custom_wsmode(spell, spellMap, defaut_wsmode)
    local wsmode

    if state.Buff['Sneak Attack'] then
        wsmode = 'SA'
    end
    if state.Buff['Trick Attack'] then
        wsmode = (wsmode or '') .. 'TA'
    end

    return wsmode
end


-- Called any time we attempt to handle automatic gear equips (ie: engaged or idle gear).
function job_handle_equipping_gear(playerStatus, eventArgs)
    -- Check that ranged slot is locked, if necessary
    check_range_lock()

    -- Check for SATA when equipping gear.  If either is active, equip
    -- that gear specifically, and block equipping default gear.
    check_buff('Sneak Attack', eventArgs)
    check_buff('Trick Attack', eventArgs)
end


function customize_idle_set(idleSet)
    if player.hpp < 80 then
        idleSet = set_combine(idleSet, sets.ExtraRegen)
    end

    return idleSet
end


function customize_melee_set(meleeSet)
    if state.TreasureMode.value == 'Fulltime' then
        meleeSet = set_combine(meleeSet, sets.TreasureHunter)
    end

    return meleeSet
end


-- Called by the 'update' self-command.
function job_update(cmdParams, eventArgs)
    th_update(cmdParams, eventArgs)
end

-- Function to display the current relevant user state when doing an update.
-- Return true if display was handled, and you don't want the default info shown.
function display_current_job_state(eventArgs)
    local msg = 'Melee'
    
    if state.CombatForm.has_value then
        msg = msg .. ' (' .. state.CombatForm.value .. ')'
    end
    
    msg = msg .. ': '
    
    msg = msg .. state.OffenseMode.value
    if state.HybridMode.value ~= 'Normal' then
        msg = msg .. '/' .. state.HybridMode.value
    end
    msg = msg .. ', WS: ' .. state.WeaponskillMode.value
    
    if state.DefenseMode.value ~= 'None' then
        msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
    end
    
    if state.Kiting.value == true then
        msg = msg .. ', Kiting'
    end

    if state.PCTargetMode.value ~= 'default' then
        msg = msg .. ', Target PC: '..state.PCTargetMode.value
    end

    if state.SelectNPCTargets.value == true then
        msg = msg .. ', Target NPCs'
    end
    
    msg = msg .. ', TH: ' .. state.TreasureMode.value

    add_to_chat(122, msg)

    eventArgs.handled = true
end

-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------

-- State buff checks that will equip buff gear and mark the event as handled.
function check_buff(buff_name, eventArgs)
    if state.Buff[buff_name] then
        equip(sets.buff[buff_name] or {})
        if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
            equip(sets.TreasureHunter)
        end
        eventArgs.handled = true
    end
end


-- Check for various actions that we've specified in user code as being used with TH gear.
-- This will only ever be called if TreasureMode is not 'None'.
-- Category and Param are as specified in the action event packet.
function th_action_check(category, param)
    if category == 2 or -- any ranged attack
        --category == 4 or -- any magic action
        (category == 3 and param == 30) or -- Aeolian Edge
        (category == 6 and info.default_ja_ids:contains(param)) or -- Provoke, Animated Flourish
        (category == 14 and info.default_u_ja_ids:contains(param)) -- Quick/Box/Stutter Step, Desperate/Violent Flourish
        then return true
    end
end


-- Function to lock the ranged slot if we have a ranged weapon equipped.
function check_range_lock()
    if player.equipment.range ~= 'empty' then
        disable('range', 'ammo')
    else
        enable('range', 'ammo')
    end
end


-- Select default macro book on initial load or subjob change.

function select_default_macro_book()

    -- Default macro set/book
	
    if player.sub_job == 'DNC' then
        set_macro_page(1, 18)
    elseif player.sub_job == 'WAR' then
        set_macro_page(1, 18)
    elseif player.sub_job == 'NIN' then
        set_macro_page(1, 18)
    else
        set_macro_page(1, 18)
		
    end
end


 Odin.Quixacotl
Offline
Server: Odin
Game: FFXI
user: Quixacotl
Posts: 170
By Odin.Quixacotl 2015-01-27 17:35:37
Link | Quote | Reply
 
Sylph.Murex said: »
I have literaly spent days trying to figure out wtf is wrong with this gearswap with no damn luck and it's really pissin me off...

I sit idle in adoulin and cast utsu and it does the precast midcast and aftercast which shows in showswaps BUT then it changes into my normal engaged set a sec after the aftercast and doesn't show in showswaps I also have this problem in BC's where I need my acc ***and it swaps into normal gear and this has costed me quite a few times I hit f12 it updates my gear and puts me into what I should be in but wtf I need it to do it right the first time makes it difficult when i'm dualing bc's and cant keep hiting f12 after every damn cast.
Code
    -- Defense sets
 
    sets.defense.Evasion = {
        head="Pillager's Bonnet +1",neck="Ej Necklace",
        body="Qaaxo Harness",hands="Pillager's Armlets +1",ring1="Defending Ring",ring2="Beeline Ring",
        back="Canny Cape",waist="Flume Belt",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
 
    sets.defense.PDT = {
            head="Lithelimb Cap",
            neck="Twilight Torque",
            ear1="Dudgeon Earring",
            ear2="Heartseeker Earring",
            body="Emet Harness +1",
            hands="Umuthi Gloves",
            ring1="Patricius Ring",
            ring2="Defending Ring",
            back="Mollusca Mantle",
            waist="Flume Belt +1",
            legs="Pill. Culottes +1",
            feet="Plun. Poulaines +1"}
 
    sets.defense.MDT = set_combine(sets.defense.PDT,{
            ear1="Sanare Earring",
            ear2="Merman's Earring",
            ring1="Succor Ring",
            ring2="Defending Ring",
            back="Engulfer Cape +1",
            waist="Flax Sash"})
First question, have you modified the function job_setup() or function user_setup() blocks in any way?

If not then check and make sure that the Sets you have written in your script, especially the ACC and Defense Sets, contains gear that you actually have in inventory. Example: Your lua has sets.defense.PDT = {neck="Twilight Torque"} but you don't have it.

So now you WS.

At aftercast GS doesn't care whether you have a Twilight Torque or not. So it becomes a placeholder and you find yourself TP'ing in a Shadow Gorget.

Remember that Offense(ACC) and Defense (Evasion, PDT, MDT) sets are all handled Aftercast and if there's a placeholder in there then you'll find yourself TP'ing in Normal gear.

Sure it's time consuming adding only the gear that you have but it'll save you headaches like this in the future.
 Sylph.Murex
Offline
Server: Sylph
Game: FFXI
Posts: 81
By Sylph.Murex 2015-01-27 17:43:49
Link | Quote | Reply
 
Every piece of gear in my gearswap is on me. the only things I haven't changed is the crap you see jumbled up and not in 1 line per slot... I don't have a ej necklace only a Ej Necklace +1 but I don't ever set defense to evasion
 Sylph.Murex
Offline
Server: Sylph
Game: FFXI
Posts: 81
By Sylph.Murex 2015-01-27 17:52:33
Link | Quote | Reply
 
Quote:
First question, have you modified the function job_setup() or function user_setup() blocks in any way?

Quote:
function job_setup()
state.Buff['Sneak Attack'] = buffactive['sneak attack'] or false
state.Buff['Trick Attack'] = buffactive['trick attack'] or false
state.Buff['Feint'] = buffactive['feint'] or false

include('Mote-TreasureHunter')

-- For th_action_check():
-- JA IDs for actions that always have TH: Provoke, Animated Flourish
info.default_ja_ids = S{35, 204}
-- Unblinkable JA IDs for actions that always have TH: Quick/Box/Stutter Step, Desperate/Violent Flourish
info.default_u_ja_ids = S{201, 202, 203, 205, 207}
end

-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------

-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('Normal', 'Acc', 'Mod')
state.HybridMode:options('Normal', 'Evasion', 'PDT')
state.RangedMode:options('Normal', 'Acc')
state.WeaponskillMode:options('Normal', 'Acc', 'Mod')
state.PhysicalDefenseMode:options('Evasion', 'PDT')


gear.default.weaponskill_neck = "Asperity Necklace"
gear.default.weaponskill_waist = "Caudata Belt"
gear.AugQuiahuiz = {name="Quiahuiz Trousers", augments={'Haste+2','"Snapshot"+2','STR+8'}}

Quote:
So now you WS.

At aftercast GS doesn't care whether you have a Twilight Torque or not. So it becomes a placeholder and you find yourself TP'ing in a Shadow Gorget.

Quote:
I sit idle in adoulin and cast utsu and it does the precast midcast and aftercast which shows in showswaps BUT then it changes into my normal engaged set a sec after the aftercast and doesn't show in showswapsWHILE I AM IDLE or ENGAGED WITH TP SET TO ACC I also have this problem in BC's where I need my acc ***and it swaps into normal gear
 Sylph.Murex
Offline
Server: Sylph
Game: FFXI
Posts: 81
By Sylph.Murex 2015-01-27 17:59:40
Link | Quote | Reply
 
My problem is it equipping into my normal engaged set AFTER it equips my idle set while I am idle OR it equipping my normal engaged set while I am engaged and set to acc AFTER a cast. I do not have this problem with the dozens of other gearswaps I use for other jobs.
First Page 2 3 ... 49 50 51 ... 181 182 183
Log in to post.