|
Gearswap Support Thread
Bismarck.Inference
サーバ: Bismarck
Game: FFXI
Posts: 417
By Bismarck.Inference 2014-07-11 22:34:08
Line 9 is called HPofReraise not HPtoReraise!
Phoenix.Yocuz
サーバ: Phoenix
Game: FFXI
Posts: 40
By Phoenix.Yocuz 2014-07-11 22:34:58
again ty inf u have helped a ton!!
サーバ: Asura
Game: FFXI
Posts: 363
By Asura.Vafruvant 2014-07-11 22:35:12
With regard to the point of using a fast cast set read the part in bold italics.
But it sounds like your function midcast has an issue. Wouldn't know how to help ya without seeing the code. I posted my code already, but here's another link if you want to take a look. I use all of Mote's includes to pre-define anything so I don't have to make 4000 line luas for each job.
http://pastebin.com/K1yBCFpH
Lakshmi.Zerowone
サーバ: Lakshmi
Game: FFXI
Posts: 6949
By Lakshmi.Zerowone 2014-07-11 23:51:39
Its got Motes rules so I would say Mote is best to reply.
In the function job_post_midcast ,which I assume is midcast with respect to Motes rules it appears to be just addressing divine caress. Usually you want to define all the actions that you want to have addressed etc. However, if it is not midcast then it looks like you don't have a midcast function.
サーバ: Asura
Game: FFXI
Posts: 363
By Asura.Vafruvant 2014-07-12 03:24:49
Its got Motes rules so I would say Mote is best to reply.
In the function job_post_midcast ,which I assume is midcast with respect to Motes rules it appears to be just addressing divine caress. Usually you want to define all the actions that you want to have addressed etc. However, if it is not midcast then it looks like you don't have a midcast function. In a situation like that, would I essentially just add something like... Code elseif spell.english:startswith['Cure'] then
equip(sets.midcast.Cure) ...that into function job_post_midcast?
That just seems redundant since it is putting on my midcast gear, just not my aftercast properly. I guess my big question is more of a "even though all three swaps are taking place, why is the aftercast activating before the spell completes" question. It's definitely putting my midcast gear on, so the midcast function is defined, somewhere. I don't really understand job_post_midcast and how it differs from normal midcast, (outside of obviously coming after midcast, before aftercast).
As I said, I just copied Mote's whm lua and gear tweaked it for my sets. I may have added/removed a set or two here or there, but I made sure they were removed from any further rules in the file and were unrelated to curing anyway.
By Santi 2014-07-12 05:34:47
Not sure if this is a Gearswap issue... Using Motenten NIN.lua etc, gear is changing to aftercast right before Utsusemi:Ichi finishes casting.
Just started doing this few mins ago :\
edit: seems like all ichi spells are leaving midcast gearsets an instant before spell finishes casting.
Lakshmi.Byrth
VIP
サーバ: Lakshmi
Game: FFXI
Posts: 6184
By Lakshmi.Byrth 2014-07-12 05:52:17
Do you spam them? Trying to cast multiple times will generate error messages that call the aftercast function and pass in the spell name with an "interrupted" flag flipped.
By Silverfox6868 2014-07-12 06:18:12
I have tried everything and my obis DO not swap plz help
http://pastebin.com/cCQWUf3f
Rules start at line 343
Lakshmi.Zerowone
サーバ: Lakshmi
Game: FFXI
Posts: 6949
By Lakshmi.Zerowone 2014-07-12 10:26:42
I'm on a phone so forgive me for not pulling up your code but:
your are using motes rules and you have two separate precast functions.
try copying the stuff you have under "function precast(spell)"
and put it under function job_precast(spell). Then you would want
to delete the function precast (spell) section.
Lakshmi.Zerowone
サーバ: Lakshmi
Game: FFXI
Posts: 6949
By Lakshmi.Zerowone 2014-07-12 10:40:36
Utsusemi Ichi is an interesting spell since generally speaking the server considers the spell cast at 51% on the clients side spell bar (barring fastcast conditions) I.e: Ichi won't get applied if Ni shadows do no get cancelled by 51% on the client side spell bar though the whole animation appears to complete at 80%.
I could be talking about something different than the issue at hand.
By Silverfox6868 2014-07-12 10:43:32
Did what you said zero and still nothing new lua
http://pastebin.com/yLvVet28
Lakshmi.Zerowone
サーバ: Lakshmi
Game: FFXI
Posts: 6949
By Lakshmi.Zerowone 2014-07-12 11:20:24
Really wish I was in front of a machine so I can test before making a suggestion.
try this example format it may not work though:
Code
if spell.english == "Wildfire" and (spell.element == world.weather_element or spell.element== world.day_element) then
equip(sets.precast.WS['Wildfire'],sets.Obi[spell.element])
else
equip(sets.precast.WS['Wildfire'])
end
Can also try ['spell.element']
also you have a new midcast section after the after cast rules. I recommend not simply copying and pasting the actual functions from my example file into your file since yours is obeying Motes rules defined in the includes. Just take the contents and place them into the correlating function areas in your swap file.
サーバ: Asura
Game: FFXI
Posts: 363
By Asura.Vafruvant 2014-07-12 12:06:40
Not sure if this is a Gearswap issue... Using Motenten NIN.lua etc, gear is changing to aftercast right before Utsusemi:Ichi finishes casting.
Just started doing this few mins ago :\
edit: seems like all ichi spells are leaving midcast gearsets an instant before spell finishes casting. That's the EXACT problem I am having with my Cures.
By Santi 2014-07-12 13:05:59
Utsusemi Ni is firing correctly, I'm getting 4+ icon.
But ever since yesterday, I cast Ichi and the midcast gear switches to aftercast right before the spell finishes.
So Ni gets cancelled, aftercast gear equips, then ichi finishes casting and I only have 3 shadows.
VIP
サーバ: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-07-12 13:51:31
Same problem, except you re-defined midcast as well. By redefining precast and midcast rather than using the job_* versions of those functions (or proper custom functions that you call from job_precast/job_midcast), you basically destroy the include's ability to function.
Of course all of that code is completely unnecessary anyway. The only thing needed to have the obi equipped for Leaden Salute is to use the gear.ElementalObi variable in the waist slot of your Leaden Salute gear set. Also, define gear.default.obi_waist to be the item you want equipped if the day/weather check fails.
The only minor bit of extra work you need to do is redefine the default based on the weaponskill, since you use different base items for Leaden Salute and Wildfire.
Code
sets.precast.WS['Leaden Salute'] = {ammo=gear.WSbullet,
head="Lanun Tricorne +1",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Crematio Earring",
body="Lanun Frac +1",hands="Thurandaut Gloves +1",ring1="Stormsoul Ring",ring2="Stormsoul Ring",
back="Gunslinger's Cape",waist=gear.ElementalObi,legs="Laksamana's Trews +1",feet="Lanun Bottes +1"}
sets.precast.WS['Wildfire'] = {ammo=gear.WSbullet,
head="Thaumas Hat",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Crematio Earring",
body="Lanun Frac +1",hands="Thurandaut +1",ring1="Acumen Ring",ring2="Stormsoul Ring",
back="Gunslinger's Cape",waist=gear.ElementalObi,legs="Shneddick +1",feet="Lanun Bottes +1"}
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
-- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
function job_precast(spell, action, spellMap, eventArgs)
-- Check that proper ammo is available if we're using ranged attacks or similar.
if spell.action_type == 'Ranged Attack' or spell.type == 'WeaponSkill' or spell.type == 'CorsairShot' then
do_bullet_checks(spell, spellMap, eventArgs)
end
-- Define proper defaults for weaponskills that use obis
if spell.english == 'Leaden Salute' then
gear.default.obi_waist = "Elanid Belt"
elseif spell.english == 'Wildfire' then
gear.default.obi_waist = "Aquiline Belt"
end
end
[+]
VIP
サーバ: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-07-12 14:16:54
@Vafruvant:
First problem:
Code
-- Initialization function for this job file.
function get_sets()
-- Load and initialize the include files.
include('Mote-Include.lua')
include('Mote-Globals.lua')
include('Mote-Mappings.lua')
include('Mote-SelfCommands.lua')
include('Mote-Utility.lua')
-- include('CureMod.lua')
end
The *only* function call in the get_sets() function should be to include Mote-Include. All of the rest is handled by Mote-Include itself. Adding extra includes here -probably- won't harm anything, but it's possible it might have screwed something up.
Should simply be:
Code
-- Initialization function for this job file.
function get_sets()
-- Load and initialize the include files.
include('Mote-Include.lua')
end
Zerowone said: In the function job_post_midcast ,which I assume is midcast with respect to Motes rules it appears to be just addressing divine caress. Usually you want to define all the actions that you want to have addressed etc. However, if it is not midcast then it looks like you don't have a midcast function.
The vast majority of all gear handling is done by default in the includes. Use of job_midcast and job_post_midcast is only to override the defaults in special cases. job_midcast is run before the defaults are constructed, and job_post_midcast is run after the defaults are constructed. Same for precast/aftercast/etc.
Divine Caress is simply a special case that modifies the default set if the buff is active. Since it's only modifying the default set, it needs to be run after the default set has already been selected, and so goes in the job_post_midcast function.
No modification is necessary to equip the standard Cure sets and such.
Vafruvant said: That just seems redundant since it is putting on my midcast gear, just not my aftercast properly. I guess my big question is more of a "even though all three swaps are taking place, why is the aftercast activating before the spell completes" question.
That's indeed the more complicated issue. I don't see any deviations from the default in your file that should lead to this issue, and the include can only ever call the aftercast functions when GearSwap notifies it that the aftercast event has occurred.
The only send_commands in the file are the ones for Solace/Light Arts, and those are only if you manually update, so it "shouldn't" be some random async call returning. However it might possibly be some duplicate function running due to you including all those includes twice. Can't really imagine how, but maybe possible.
For testing, I'd ask that you try putting the following debug messages in either new or existing functions:
Code
-- Return true if we handled the aftercast work. Otherwise it will fall back
-- to the general aftercast() code in Mote-Include.
function job_aftercast(spell, action, spellMap, eventArgs)
add_to_chat(123,'Aftercast called')
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
end
end
function job_handle_equipping_gear(playerStatus, eventArgs)
add_to_chat(123,'Handle Equipping Gear called')
end
Then see if Handle Equipping Gear is being called before Aftercast is called, and particularly if it's being called twice (once before, once after).
[+]
By Santi 2014-07-12 14:43:07
Fixed my issue. Was related to my time specific regen gear and how I had it coded in MoteUtility.
This is what I had in my Santi_nin.lua Code
function job_update(cmdParams, eventArgs)
update_time_based_gear()
end
function update_time_based_gear()
if classes.Daytime then
gear.AccAmmo.name = gear.DayAmmo
else
gear.AccAmmo.name = gear.NightAmmo
end
if classes.RegenTime then
gear.RegenEar.name = gear.DayEar
else
gear.RegenEar.name = gear.NightEar
end
if classes.DuskToDawn then
gear.MovementFeet.name = gear.NightFeet
else
gear.MovementFeet.name = gear.DayFeet
end
en
This is what was in moteutility, when I was editing it after update I didn't add local was_regentime = classes.RegenTime.
Code
function time_change(new_time, old_time)
local was_daytime = classes.Daytime
local was_regentime = classes.RegenTime
local was_dusktime = classes.DuskToDawn
if new_time >= 6*60 and new_time < 18*60 then
classes.Daytime = true
else
classes.Daytime = false
end
if new_time >= 8*60 and new_time < 18*60 then
classes.RegenTime = true
else
classes.RegenTime = false
end
if new_time >= 17*60 or new_time < 7*60 then
classes.DuskToDawn = true
else
classes.DuskToDawn = false
end
if was_daytime ~= classes.Daytime or was_regentime ~= classes.RegenTime or was_dusktime ~= classes.DuskToDawn then
if job_time_change then
job_time_change(new_time, old_time)
end
handle_update({'auto'})
end
end
By fractalvoid 2014-07-12 15:18:27
Having issues with this GS not equipping Geomancy + gear in midcast. I tried making a geomancy midcast set which didn't work and have now just made the base midcast set all the geomancy gear I'd like equipped but it's still not working correctly.
If anyone could help that'd be great. I've tried both showswaps and debugmode to no avail. Thanks in advance.
GS: http://pastebin.com/r1dRTU6r
Bismarck.Inference
サーバ: Bismarck
Game: FFXI
Posts: 417
By Bismarck.Inference 2014-07-12 15:30:26
Looks something like this :
Determines if it's Magic of any kind.
Checks if it's an Indi-Spell.
Only if it's not any Indi-Spell, eventually checks if its a Geomancy spell in general.
These checks should perform properly but you need sets.midcast.Indi and sets.midcast['Geomancy'], I see neither of these.
By Gunshin 2014-07-12 15:43:25
In the same boat as fractal, would you mind posting an example of the sets.midcast.Indi and sets.midcast['Geomancy'] so that I might edit it to work with my gear and make it easy on me? xD
By fractalvoid 2014-07-12 15:45:39
I see. I tried making a geomancy midcast set and it didn't work so I just tried putting it in the default mid cast set but didn't really think that would work. I'll try editing it now with your suggestions and see how it works. Thanks!
Also I took out the differentiation between indi and geo spells as there is really no need to. The only indi-specific gear needed is relic pants and those can be used in geo-specific spells without impacting anything
Bismarck.Inference
サーバ: Bismarck
Game: FFXI
Posts: 417
By Bismarck.Inference 2014-07-12 16:07:21
Unless you just took it out, it's still there and causing that main problem.
Code
elseif string.find(spell.english,'Indi')then
equipSet = equipSet.Indi
On lines 455/456. Even if you don't have that set defined, any Indi spell will still trigger the rule, since all other rules are defined as "elseif" or "else", once your Indi-spell hits this rule the code won't even bother checking for anything else. This could be your problem particularly if you've only been testing this with Indi spells.
You can just do sets.midcast['Geomancy'] and be fine, but you do need to remove the snippet I posted if you want it to work for everything.
Bismarck.Inference
サーバ: Bismarck
Game: FFXI
Posts: 417
By Bismarck.Inference 2014-07-12 16:11:55
In the same boat as fractal, would you mind posting an example of the sets.midcast.Indi and sets.midcast['Geomancy'] so that I might edit it to work with my gear and make it easy on me? xD
Its just whatever gear you want, under function get_sets() just type sets.midcast.Indi={gear for your Indi spells here} and sets.midcast['Geomancy']={gear for non-Indi, Geo spells here} in the same syntax as everything else is written.
It's a bit early for me but I'm assuming the actual midcast checks are stable and the Indi rule without Indi set is causing the problem(assuming you guys are running into your issues by testing with Indi spells)
VIP
サーバ: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-07-12 16:14:45
In the same boat as fractal, would you mind posting an example of the sets.midcast.Indi and sets.midcast['Geomancy'] so that I might edit it to work with my gear and make it easy on me? xD
If you want to know what gear to put in a set, go to the job forums. There's stickies in most of them, in gear threads in all of them.
By fractalvoid 2014-07-12 16:19:40
I took out that snippet you posted Inference, and it seems to work. It was working after I removed the differentiation between indi/geo spells and defined a midcast geomancy set (although I left it the same as the precast geomancy set - which I suppose I could alter... cause the gear simply needs to be on in midcast, not precast)
Took me a bit but I realized there's no need to differentiate indi and geo spells. Although relic pants effect indi spell duration, there's nothing really that would need to be on for geo spells in that leg slot so I removed that.
I really should have looked at this a bit longer (as Gunshin pointed out to me last night; I had a freakin necklace in my grip slot in that GS lololol) but figured I'd post here to get it smoothed out
サーバ: Asura
Game: FFXI
Posts: 363
By Asura.Vafruvant 2014-07-12 16:50:04
@Vafruvant:
First problem:
Code
-- Initialization function for this job file.
function get_sets()
-- Load and initialize the include files.
include('Mote-Include.lua')
include('Mote-Globals.lua')
include('Mote-Mappings.lua')
include('Mote-SelfCommands.lua')
include('Mote-Utility.lua')
-- include('CureMod.lua')
end
The *only* function call in the get_sets() function should be to include Mote-Include. All of the rest is handled by Mote-Include itself. Adding extra includes here -probably- won't harm anything, but it's possible it might have screwed something up.
Should simply be:
Code
-- Initialization function for this job file.
function get_sets()
-- Load and initialize the include files.
include('Mote-Include.lua')
end
Vafruvant said: That just seems redundant since it is putting on my midcast gear, just not my aftercast properly. I guess my big question is more of a "even though all three swaps are taking place, why is the aftercast activating before the spell completes" question.
That's indeed the more complicated issue. I don't see any deviations from the default in your file that should lead to this issue, and the include can only ever call the aftercast functions when GearSwap notifies it that the aftercast event has occurred.
The only send_commands in the file are the ones for Solace/Light Arts, and those are only if you manually update, so it "shouldn't" be some random async call returning. However it might possibly be some duplicate function running due to you including all those includes twice. Can't really imagine how, but maybe possible.
For testing, I'd ask that you try putting the following debug messages in either new or existing functions:
Code
-- Return true if we handled the aftercast work. Otherwise it will fall back
-- to the general aftercast() code in Mote-Include.
function job_aftercast(spell, action, spellMap, eventArgs)
add_to_chat(123,'Aftercast called')
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
end
end
function job_handle_equipping_gear(playerStatus, eventArgs)
add_to_chat(123,'Handle Equipping Gear called')
end
Then see if Handle Equipping Gear is being called before Aftercast is called, and particularly if it's being called twice (once before, once after). Removing the double included files seems to have worked, however...
This is a picture of my chat log with the fixes you mentioned in place, showswaps on and Battlemod.
It appears to be equipping the proper gear based on the amount cured, but the location of the spell in relation to the sets makes me wonder if something is still off.
Phoenix.Yocuz
サーバ: Phoenix
Game: FFXI
Posts: 40
By Phoenix.Yocuz 2014-07-12 17:23:44
so thanks to u guys last night i got my gearswap for pld working and i had my friend that made it make a rule to allow me to turn off my cure set when needed and it works great but i didnt anticipate needing to turn off the fast cast set >.<
i have tried to go about this my own but to no avail any advice?
Phoenix.Yocuz
サーバ: Phoenix
Game: FFXI
Posts: 40
By Phoenix.Yocuz 2014-07-12 17:36:56
i assumed i needed to make a trigger for spell.english but im not an expert at gearswap ; ;
at least that would have been my guess
Phoenix.Yocuz
サーバ: Phoenix
Game: FFXI
Posts: 40
By Phoenix.Yocuz 2014-07-12 17:48:55
http://pastebin.com/KBRzF8yB
the rule is on line 8 for my cure set
its defined at 514
like i stated i would love to be able to turn off fast cast in the same manner
VIP
サーバ: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-07-12 19:21:17
Quote: This is a picture of my chat log with the fixes you mentioned in place, showswaps on and Battlemod.
<snip>
It appears to be equipping the proper gear based on the amount cured, but the location of the spell in relation to the sets makes me wonder if something is still off.
Everything in that picture looks fine. Order of operations:
Enter command
GearSwap Precast -> construct precast set (displayed)
GearSwap Midcast -> construct midcast set (displayed)
GearSwap sends command and gear sets to server
Server acknowledges command, sends "starts casting" message
Server sends notice of completed command (cure has already taken place at this point)
GearSwap Aftercast -> construct aftercast set (displayed)
GearSwap sends aftercast set to server
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.
|
|