Not sure why but it seems the Unbridled Learning spells arent triggering in GS at all. Is this a known issue?
Not sure why but it seems the Unbridled Learning spells arent triggering in GS at all. Is this a known issue?
I'm sure this has been asked before, but how do I go about using multiple different xaddi/qaaxo augments in gearswap? Struggling to figure it out. I see people mentioning that it wasn't working, then that it was fixed. I can't get GS to recognize them though.
Here's Mote's mnk that I'm using that I posted on my pastebin.
http://pastebin.com/7Q53di5c
in the job buff change did add
Not sure if this is what you want, but w/ this, when you enter a reive and gain the "buff" Reive Mark, it will(should) equip the neck and disable that slot, then when you exit/finish it will(should) enable it again.Code:if buff == 'Reive Mark' and gain then equip({neck="Arciela's Grace"}) send_command('@wait .5;gs disable neck') add_to_chat(100,'> > > >Joining a Reive Equipping Arciela\'s Grace, Locking Neck Slot') else send_command('gs enable neck') add_to_chat(100,'> > > >Leaving Reive, Unlocking Neck Slot') end
full lua http://pastebin.com/9inxzyG2
how do we use this??
windower.ffxi.get_ability_recasts()
could i do this
if windower.ffxi.get_ability_recasts([spell.name]) > 0 then
cancel_spell()
end
Go to Windower/res/abilities.lua (Windower/res/job_abilities.lua if you're on -dev) and find the ability you're interested in. Then check what recast_id it has. That's the number you need to index that function:
This would be for Steal, since Steal has recast_id 60:Code:if windower.ffxi.get_ability_recasts()[60] > 0 then cancel_spell() end
Code:[41] = {id=41,en="Steal",ja="ぬすむ",de="Stehlen",fr="Vol",element=2,icon_id=395,mp_cost=0,prefix="/jobability",range=2,recast_id=60,targets=32,tp_cost=0,type="JobAbility"},
You'll want to edit the customize_melee_set() and customize_idle_set() functions. Those functions are called at the end of constructing your nominal TP and idle sets, which is done after aftercast and status_change (two of the the three events that are likely to be of interest to you). Add the item when the conditions are met, and return the new set to be used.
You'll also need to modify job_buff_change() so that it calls for a gear update when you gain or lose the reive mark buff.
Code:function job_buff_change(buff, gain) if buff == 'Reive Mark' then handle_equipping_gear(player.status) end end function customize_melee_set(melee_set) if buffactive['reive mark'] then melee_set = set_combine(melee_set, {neck="Arciela's Grace"}) end return melee_set end function customize_idle_set(idle_set) if buffactive['reive mark'] then idle_set = set_combine(idle_set, {neck="Arciela's Grace"}) end return idle_set end
Bah, back to my drg stuff and my healing breath set isn't working. No matter what my HP is, it always returns with the cancel. I have 2236 HP in my HP set, and 1915 HP in my normal set. My old rule is slightly faulty because I just added up all the HP+ without considering my gear has HP+, but the rule should work regardless. Right now, here is the code for it:
obviously there's more after that snippet but essentially, it should be checking my HP (1915) and adding 557 (2672, so way off!) and then if it's at less than 50% of that (1336) it should let the spell go through. But at 3-400 HP for testing, it was still giving me the cancel. Any idea what's up?Code:function precast(spell) if spell.action_type == 'Magic' then if hbtriggers:contains(spell.name) then if (player.hp + 557) > ((player.max_hp + 557)/2) then send_command('@input /echo ----- Will not have Enough HP to Trigger Healing Breath, Canceling -----') cancel_spell() elseif (player.hp + 557) < ((player.max_hp + 557)/2) then equip(sets.precast.HP) end end
Full version: http://pastebin.com/ZLREaYKG
First thing I saw is the user_setup() function, which is a problem that Sechs has had multiple times now as well. I'm guessing that for some reason people assume that user_setup() is a real GearSwap function. It's not; it's entirely a user function, used in mine for user-specific setup as opposed to job-specific setup. The problem is, because it's a user-defined function, if you don't call it (which you have not), *nothing happens*. Anything within that function is completely invisible to the rest of the code.
Since you defined your healing breath spell triggers there, they simply don't exist to the rest of your code. The set of hbtriggers doesn't exist. When you try to check it later on, you're asking it to check a non-existent table reference. So of course you'll get an error.
If you want it to work, either call the user_setup() function from get_sets() (an actual GearSwap-called function), or just copy the table into the get_sets() function itself.
Part of the problem is probably that user_setup() sounds like a function that GearSwap might naturally call, whereas get_sets().. doesn't really invoke the same intuitiveness.
I don't think my snapshot set is being swapped in before a shot.
This is the precast logic for everything, and ranged attack is the second segment.
Does it look functional?Code:function precast(spell) if sets.precast[spell.english] then equip(sets.precast[spell.english]) elseif spell.type == 'WeaponSkill' then if spell.target.distance > 21.0 then add_to_chat(167,''..spell.target.name..' is too far can not use '..spell.name..'!!!. Cancelling WeaponSkill ') cancel_spell() return elseif spell.name == "Coronach" then equip(sets.Coronach[Coronach_Set_Names[Coronach_Index]]) elseif spell.name == "Last Stand" then equip(sets.LS[LS_Set_Names[LS_Index]]) elseif spell.name == "Namas Arrow" then equip(sets.NA[NA_Set_Names[NA_Index]]) elseif spell.name == "Jishnu's Radiance" then equip(sets.JR[JR_Set_Names[JR_Index]]) elseif spell.name == "Sidewinder" then equip(sets.SW[SW_Set_Names[SW_Index]]) elseif spell.name == "Wildfire" then equip(sets.WF[WF_Set_Names[WF_Index]]) end elseif spell.name == "Ranged" then equip(sets.precast.PreShot) if player.equipment.range == 'Eminent Bow' then equip(sets.precast.arrow) elseif player.equipment.range == 'Lionsquall' then equip(sets.precast.bullet) end elseif spell.type == "Ninjutsu" then if string.find(spell.english,'Utsusemi') then if buffactive['Copy Image (3)'] or buffactive['Copy Image (4)'] then cancel_spell() add_to_chat(167, spell.english .. ' Canceled: [3+ Images]') return else equip(sets.precast.Utsusemi) end else equip(sets.precast.FastCast) end elseif spell.english == 'Spectral Jig' and buffactive.Sneak then cast_delay(0.2) send_command('cancel Sneak') end end
As for how I tested whether it was working or not was I removed all headgear from my inventory except the snapshot piece, but I do not equip it. Then I try to ranged attack something, after the action is complete my head slot is still empty.
Edit the job_post_precast function as such:
Added lines are in bold.Code:-- Run after the general precast() is done. function job_post_precast(spell, action, spellMap, eventArgs) if spell.type:lower() == 'weaponskill' and not state.Defense.Active then if buffactive.impetus and (spell.english == "Ascetic's Fury" or spell.english == "Victory Smite") then equip({body="Tantra Cyclas +2"}) elseif buffactive.footwork and (spell.english == "Dragon's Kick" or spell.english == "Tornado Kick") then equip({feet="Anchorite's Gaiters +1"}) end elseif spell.english == 'Chakra' and world.day == 'Darksday' then equip({back="Shadow Mantle"}) end end
That code won't work. You disable the neck when you gain a Reive Mark, but you re-enable the neck on *every single other buff change*. Thus, the first time you hit Boost, or Box Step or whatever, the neck is re-enabled, and Arciela's is swapped out.
The problem is the test: if buff == 'Reive Mark' and gain then
Both of those have to be true in order to disable the neck slot. If *either* is false, it fails, and proceeds to the Else portion. Thus if the buff is anything except 'Reive Mark', the neck is enabled.
I've already given an answer for what I think is a better solution -- applying the neck when customizing the melee and idle sets, rather than disabling the slot. However if you did want to go this route, you first need to check if the buff is 'Reive Mark', and then check for gain/loss in a separate if/else block. IE:
Code:if buff == 'Reive Mark' then if gain then -- disable else -- enable end end
Your if/elseif block is poorly constructed (though not necessarily wrong - yet). I would first simplify it so that you're not doing two checks for exactly the same thing.
Then we have something interesting. Why would adding 557 to player.hp matter? You can't be changing your -current- hp before the healing breath is used. 557 appears to be the amount of -max- hp you're adding in your gear. So the condition appears to be logically unsound.Code:function precast(spell) if spell.action_type == 'Magic' then if hbtriggers:contains(spell.name) then if (player.hp + 557) < ((player.max_hp + 557)/2) then equip(sets.precast.HP) else send_command('@input /echo ----- Will not have Enough HP to Trigger Healing Breath, Canceling -----') cancel_spell() end end
I would guess that, to trigger the healing breath, the player's HP has to be less than 50% of their max HP. We also apparently know how much max HP is going to change before the breath is triggered, so we can offset our current max HP to predict whether we'd fall below that threshold. So the -actual- condition should be:
Also, depending on how you tested, you may not have the correct hp value. Add in an add_to_chat() command to output the player.hp and player.max_hp value at the point you're testing to make sure that the math you think you're testing is the math you're actually testing.Code:function precast(spell) if spell.action_type == 'Magic' then if hbtriggers:contains(spell.name) then if player.hp < ((player.max_hp + 557)/2) then equip(sets.precast.HP) else send_command('@input /echo ----- Will not have Enough HP to Trigger Healing Breath, Canceling -----') cancel_spell() end end
Mote did already point the issue, we were checking your current hp+500 with your max HP +500/2, the problem was that is the current hp alone is what we needed
so with numbers.. if you had your current HP 1000, and you max HP 1600, with equiped HP gear 2100, HB will trigger, but we were comparing (1000 + 500) with (1600 + 500)/2 and the condition will not meet lol...
either way here is the link w/ the fix - http://pastebin.com/Hr8BExjF
everything looks ok... too many elseif for my taste but that isnt the issue, post all the .lua to check the gearsets, maybe the problem is there.
BTW could add this line, and do a shot, if it add the text to chat, you function is ok and the problem is @ the gearsets.
Code:elseif spell.name == "Ranged" then send_command('@input /echo Preshot') equip(sets.precast.PreShot) if player.equipment.range == 'Eminent Bow' then equip(sets.precast.arrow) elseif player.equipment.range == 'Lionsquall' then equip(sets.precast.bullet) end
what i want to do is something like this at the top of my precast
Code:if not spell.name == "Ranged" then if spell.action_type == 'Ability' then if windower.ffxi.get_ability_recasts()[spell.recast_id] > 0 then cancel_spell() return end elseif spell.action_type == 'Magic' then if windower.ffxi.get_magic_recasts()[spell.recast_id] > 0 then cancel_spell() return end end end
Was wondering if someone can help me fix this problem. I use Bokura's Ranger.Lua : >> http://pastebin.com/P8EmY3w0
I am runnning dev version and also have put the abilities.lua in the res folder.
I am getting the following message in debug mode.
Unable to execute command. You do not have access to that abilitiy (Coranach)
I get the same for Barrage.
I get no swaps for those 2 abilitities, but pre and mid seems to work fine.
Also any idea when in debug mode why i might see Debug Mode (gear not equipped) on one of my ear pieces.
Thanks in advance.
Thanks! Works like a charm.
Also unrelated to mnk. I made a rng profile months ago and since the update I can now do a Weaponskill while standing idle and never engaging the mob. For ranger I love this, but I know it can't be correct. I have 3 LS people using my rng profile and can do the same thing, but I know a few others using GearSwap for RNG and using someone else profile and cannot do this. So was thinking it has to either be in my GS file or I need to log out for updates? I really like WS'ing while idle but outside of LS people, I may look suspicious.
Here's my rng file for reference if there's something in there causing it.
http://pastebin.com/tK6fKPZ2