GearSwap Question

Language: JP EN DE FR
2010-09-08
New Items
users online
Forum » FFXI » Jobs » Summoner » GearSwap Question
GearSwap Question
 
Offline
Posts:
By 2014-12-06 21:41:20
| Edit  | Link | Quote | Reply
 
Post deleted by User.
 Carbuncle.Bukadan
Offline
Server: Carbuncle
Game: FFXI
user: bukasmith
Posts: 280
By Carbuncle.Bukadan 2014-12-06 22:15:25
Link | Quote | Reply
 
download and load shortcuts addon from windower, it does the same thing
 
Offline
Posts:
By 2014-12-06 23:15:20
 Undelete | Edit  | Link | Quote | Reply
 
Post deleted by User.
 Asura.Teleniel
Offline
Server: Asura
Game: FFXI
user: Teleniel
Posts: 91
By Asura.Teleniel 2014-12-06 23:24:21
Link | Quote | Reply
 
The dirty way to do it is to fire alias commands with your macros, and re-assign the alias commands when you change jobs/avatar etc.
 Bismarck.Inference
Offline
Server: Bismarck
Game: FFXI
user: Inference
Posts: 417
By Bismarck.Inference 2014-12-06 23:36:46
Link | Quote | Reply
 
I don't believe Gearswap can pickup on a spell you don't have(please correct me if I'm wrong!), unlike spellcast where things like //poisoin5 were used.

However, within Gearswap there is pet.name('Titan','Shiva',etc). or pet.element('Fire','Thunder',etc). Obviously I'd recommend pet.name since a few share elements now.

If you're ok with using a macro and not really being type-out friendly, I'd just make custom commands under your user command function to handle desired BPs. Example:
Code
function self_command(command)
if command == 'Nuke2' then
  if pet.name == 'Titan' then
     send_command('stone2')
  elseif pet.name == 'Ifrit' then
     send_command('fire2')
....

There's a few more elegant ways to handle this, but this will work. You'd have to make a command for each of the sets you want(Nuke4, Buff1, etc) and define the inside of that command in a similar fashion so its a bit of writing. To execute the macro would be "/console gs c Nuke2", or whatever you set "command" equal to in place of Nuke2.

Second option would be canceling the spell and rechecking within the same subset of spells you'd want to replace it with. Example, you type //hastega, but have a different pet out:
Code
if spell.english == 'Hastega' and not pet.name == 'Garuda' then
   cancel_spell()
   if pet.name == 'Titan'
      send_command(whatever spell titan has you'd want to use if not hastega)
   elseif pet.name == 'Ifrit'
      send_command(same thing for Ifrit)
...


The downside of this is its one way unless you define every possible outcome. Say you had Leviathan out, and Hastega and Spring Water are in the same set of spells for you. So you defined it the way I did, meaning //hastega cancels with Leviathan out and replaces with Spring Water. //springwater would not cancel back to Hastega with Garuda out unless you wrote the whole thing out again with Spring Water as your base spell. Though there is a way to write that out pretty efficiently without backtracking, its more than I'd really care to type out right now. I'm assuming the first option will cover your needs.
 Bismarck.Snprphnx
Offline
Server: Bismarck
Game: FFXI
user: Snprphnx
Posts: 2707
By Bismarck.Snprphnx 2014-12-07 00:18:13
Link | Quote | Reply
 
The only way I think you can do this is using both Gearswap and windower .txt scripts. The in game macro would tell windower to execute a specific script, like //exec meritBP.txt (or whatever the actually in game command is, it's been a while since I used them). Then, the meritBP.txt file would say:
input /ja "Geocrush" <t>;
input /ja "Meteor Strike" <t>;
input /ja "Heavenly Strike" <t>;
Etc.

Then after hitting the macro, it should attempt and fail to use all of the BPs, until it it can use one corresponding to your current avatar. From there, Gearswap should take over and equip the correct precast midcast and aftercast sets.
 
Offline
Posts:
By 2014-12-07 09:11:16
 Undelete | Edit  | Link | Quote | Reply
 
Post deleted by User.
 Siren.Inuyushi
Offline
Server: Siren
Game: FFXI
user: Inuyushi
Posts: 507
By Siren.Inuyushi 2014-12-07 11:21:20
Link | Quote | Reply
 
Mote's SMN.lua already has code to perform the BP correlating to the correct avatar out if you want to use his code instead of coming up with your own method.
 Cerberus.Conagh
Offline
Server: Cerberus
Game: FFXI
user: onagh
Posts: 3189
By Cerberus.Conagh 2014-12-07 12:44:59
Link | Quote | Reply
 
Feel free to change the spells you want, but putting this into a Macro
Code
/console gs c HeavyMelee


will make GS check your Avatar Name and then perform the Avatar's pre defined Heavy Melee Type Spell as below~

You can do the same for wards etc just change the if command trigger from heavy Melee to w.e and all the avatars BPs and from <t> to <me>
Code
function self_command(command)
	if command == 'HeavyMelee' then
		if (windower.ffxi.get_ability_recasts() > 0) then
				if pet.name == 'Ifrit' then
				send_command('input /ja "Meteor Strike" <t>')
				elseif pet.name == 'Shiva' then
				send_command('input /ja "Heavenly Strike" <t>')
				elseif pet.name == 'Leviathan' then
				send_command('input /ja "Spinning Dive" <t>')
				elseif pet.name == 'Titan' then
				send_command('input /ja "Geocrush" <t>')
				elseif pet.name == 'Garuda' then
				send_command('input /ja "Predator Claws" <t>')
				elseif pet.name == 'Ramuh' then
				send_command('input /ja "Chaotic Strike" <t>')
				elseif pet.name == 'Carbuncle' then
				send_command('input /ja "Holy Mist" <t>')
				elseif pet.name == 'Diabolos' then
				send_command('input /ja "Night Terror" <t>')
				elseif pet.name == 'Fenrir' then
				send_command('input /ja "Eclipse Bite" <t>')
				elseif pet.name == 'Cait Sith' then
				send_command('input /ja "Level ? Holy" <t>')
				end
		else
		add_to_chat(159,'Blood Pact: Rage Timer not ready')
	end
end
 Ragnarok.Flippant
Offline
Server: Ragnarok
Game: FFXI
user: Enceladus
Posts: 660
By Ragnarok.Flippant 2014-12-07 23:10:15
Link | Quote | Reply
 
Cerberus.Conagh said: »
Feel free to change the spells you want, but putting this into a Macro
Code
/console gs c HeavyMelee


will make GS check your Avatar Name and then perform the Avatar's pre defined Heavy Melee Type Spell as below~

You can do the same for wards etc just change the if command trigger from heavy Melee to w.e and all the avatars BPs and from <t> to <me>
Code
function self_command(command)
	if command == 'HeavyMelee' then
		if (windower.ffxi.get_ability_recasts() > 0) then
				if pet.name == 'Ifrit' then
				send_command('input /ja "Meteor Strike" <t>')
				elseif pet.name == 'Shiva' then
				send_command('input /ja "Heavenly Strike" <t>')
				elseif pet.name == 'Leviathan' then
				send_command('input /ja "Spinning Dive" <t>')
				elseif pet.name == 'Titan' then
				send_command('input /ja "Geocrush" <t>')
				elseif pet.name == 'Garuda' then
				send_command('input /ja "Predator Claws" <t>')
				elseif pet.name == 'Ramuh' then
				send_command('input /ja "Chaotic Strike" <t>')
				elseif pet.name == 'Carbuncle' then
				send_command('input /ja "Holy Mist" <t>')
				elseif pet.name == 'Diabolos' then
				send_command('input /ja "Night Terror" <t>')
				elseif pet.name == 'Fenrir' then
				send_command('input /ja "Eclipse Bite" <t>')
				elseif pet.name == 'Cait Sith' then
				send_command('input /ja "Level ? Holy" <t>')
				end
		else
		add_to_chat(159,'Blood Pact: Rage Timer not ready')
	end
end

windower.ffxi.get_ability_recasts() returns a table; you have to extract the recast you're looking for specifically by using an index. Usually you'd use spell.recast_id, but since you aren't actually using a spell at the time, you have to look up the proper ID and use it: 173 for Rage, 174 for Ward.
 Cerberus.Conagh
Offline
Server: Cerberus
Game: FFXI
user: onagh
Posts: 3189
By Cerberus.Conagh 2014-12-08 00:20:03
Link | Quote | Reply
 
Ragnarok.Flippant said: »
Cerberus.Conagh said: »
Feel free to change the spells you want, but putting this into a Macro
Code
/console gs c HeavyMelee


will make GS check your Avatar Name and then perform the Avatar's pre defined Heavy Melee Type Spell as below~

You can do the same for wards etc just change the if command trigger from heavy Melee to w.e and all the avatars BPs and from <t> to <me>
Code
function self_command(command)
	if command == 'HeavyMelee' then
		if (windower.ffxi.get_ability_recasts() > 0) then
				if pet.name == 'Ifrit' then
				send_command('input /ja "Meteor Strike" <t>')
				elseif pet.name == 'Shiva' then
				send_command('input /ja "Heavenly Strike" <t>')
				elseif pet.name == 'Leviathan' then
				send_command('input /ja "Spinning Dive" <t>')
				elseif pet.name == 'Titan' then
				send_command('input /ja "Geocrush" <t>')
				elseif pet.name == 'Garuda' then
				send_command('input /ja "Predator Claws" <t>')
				elseif pet.name == 'Ramuh' then
				send_command('input /ja "Chaotic Strike" <t>')
				elseif pet.name == 'Carbuncle' then
				send_command('input /ja "Holy Mist" <t>')
				elseif pet.name == 'Diabolos' then
				send_command('input /ja "Night Terror" <t>')
				elseif pet.name == 'Fenrir' then
				send_command('input /ja "Eclipse Bite" <t>')
				elseif pet.name == 'Cait Sith' then
				send_command('input /ja "Level ? Holy" <t>')
				end
		else
		add_to_chat(159,'Blood Pact: Rage Timer not ready')
	end
end

windower.ffxi.get_ability_recasts() returns a table; you have to extract the recast you're looking for specifically by using an index. Usually you'd use spell.recast_id, but since you aren't actually using a spell at the time, you have to look up the proper ID and use it: 173 for Rage, 174 for Ward.
Code
 if (windower.ffxi.get_ability_recasts() [173] > 0) then


You'd put the code in the [] to make it check ~

I do that on WHM but I was too lazy to find the ID for Rage
 Gilgamesh.Leona
Offline
Server: Gilgamesh
Game: FFXI
user: leona
Posts: 5
By Gilgamesh.Leona 2014-12-10 15:01:55
Link | Quote | Reply
 
am i the only one for who the function pet_aftercast doesn't work anymore ? the function isn't even called when i activate debugmode
Log in to post.