Barebones Summoner Gearswap

Eorzea Time
 
 
 
Langues: JP EN FR DE
users online
Forum » FFXI » Jobs » Summoner » Barebones Summoner Gearswap
Barebones Summoner Gearswap
First Page 2 3 4 5
 Carbuncle.Kyawind
Offline
Serveur: Carbuncle
Game: FFXI
user: kyahaha
Posts: 49
By Carbuncle.Kyawind 2018-10-11 09:08:58
Link | Citer | R
 
is there a way to add elemental siphon into it so it can automatically do it?? just curious if it can turn into 1 macro button lol?
 Lakshmi.Elidyr
Offline
Serveur: Lakshmi
Game: FFXI
user: elii
Posts: 912
By Lakshmi.Elidyr 2018-10-11 10:34:10
Link | Citer | R
 
Specific to a certain file? Or just how can you do it?
 Lakshmi.Elidyr
Offline
Serveur: Lakshmi
Game: FFXI
user: elii
Posts: 912
By Lakshmi.Elidyr 2018-10-11 10:57:08
Link | Citer | R
 
Step 1: Make a keybind/Alias:
Code
send_command('bind @s gs c elemental_siphon')                          
send_command('alias siphon gs c elemental_siphon')


Step 2: Add the self command code:
Code
function self_command(command)    

if command == "elemental_siphon" then
    
        local mySpirit = DetermineMySpirit()
        
        if mySpirit ~= false then
        
            if pet.isvalid and player.mpp > 7 and (not buffactive['silence'] or not buffactive['amnesia']) then
                windower.send_command('pet "Release" <me>;wait 1;ma "' .. mySpirit .. '" <me>;wait 4;ja "Elemental Siphon" <me>')
                
            elseif player.mpp > 7 and (not buffactive['silence'] or not buffactive['amnesia']) then
                windower.send_command('ma "' .. mySpirit .. '" <me>;wait 4;ja "Elemental Siphon" <me>')
                
            end
            
        end
    
end


Step 3: Function to determine which spirit to use based on day:
Code
function DetermineMySpirit()
    
    local zone_info = windower.ffxi.get_info()
    
    if zone_info then
        local day = gearswap.res.days[zone_info['day']].en
        
        if day == "Darksday" then
            return "Dark Spirit"
        
        elseif day == "Lightsday" then
            return "Light Spirit"
            
        elseif day == "Lightningday" then
            return "Thunder Spirit"
            
        elseif day == "Iceday" then
            return "Ice Spirit"
            
        elseif day == "Windsday" then
            return "Air Spirit"
            
        elseif day == "Watersday" then
            return "Water Spirit"
            
        elseif day == "Earthsday" then
            return "Earth Spirit"
            
        elseif day == "Firesday" then
            return "Fire Spirit"
            
        end
        
    end
    
    return false
    
end


I didnt test, I can't verify it will work. I also don't know where you would put them in your files, but I think it should work maybe? Some one else may have something made already.

Works by pressing:
Code
Windows Key + S


or by typing:
Code
//siphon


EDIT: Fixed the 'then' error.
Function only makes determination on day, not weather.
 Carbuncle.Kyawind
Offline
Serveur: Carbuncle
Game: FFXI
user: kyahaha
Posts: 49
By Carbuncle.Kyawind 2018-10-11 12:09:59
Link | Citer | R
 
any specific place i need put this onto in the file?? i have it from the original thread link lua.

do i put it at the very end or anywhere in the middle??


(im a total clueless noob with this type of codes)
 Carbuncle.Kyawind
Offline
Serveur: Carbuncle
Game: FFXI
user: kyahaha
Posts: 49
By Carbuncle.Kyawind 2018-10-11 12:13:00
Link | Citer | R
 
Lakshmi.Elidyr said: »
Step 1: Make a keybind/Alias:
Code
send_command('bind @s gs c elemental_siphon')                          
send_command('alias siphon gs c elemental_siphon')


Step 2: Add the self command code:
Code
function self_command(command)    

if command == "elemental_siphon"
    
        local mySpirit = DetermineMySpirit()
        
        if mySpirit ~= false then
        
            if pet.isvalid and player.mpp > 7 and (not buffactive['silence'] or not buffactive['amnesia']) then
                windower.send_command('pet "Release" <me>;wait 1;ma "' .. mySpirit .. '" <me>;wait 4;ja "Elemental Siphon" <me>')
                
            elseif player.mpp > 7 and (not buffactive['silence'] or not buffactive['amnesia']) then
                windower.send_command('ma "' .. mySpirit .. '" <me>;wait 4;ja "Elemental Siphon" <me>')
                
            end
            
        end
    
end


Step 3: Function to determine which spirit to use based on day:
Code
function DetermineMySpirit()
    
    local zone_info = windower.ffxi.get_info()
    
    if zone_info then
        local day = gearswap.res.days[zone_info['day']].en
        
        if day == "Darksday" then
            return "Dark Spirit"
        
        elseif day == "Lightsday" then
            return "Light Spirit"
            
        elseif day == "Lightningday" then
            return "Thunder Spirit"
            
        elseif day == "Iceday" then
            return "Ice Spirit"
            
        elseif day == "Windsday" then
            return "Air Spirit"
            
        elseif day == "Watersday" then
            return "Water Spirit"
            
        elseif day == "Earthsday" then
            return "Earth Spirit"
            
        elseif day == "Firesday" then
            return "Fire Spirit"
            
        end
        
    end
    
    return false
    
end


I didnt test, I can't verify it will work. I also don't know where you would put them in your files, but I think it should work maybe? Some one else may have something made already.

Works by pressing:
Code
Windows Key + S


or by typing:
Code
//siphon


in step2 : Line5

that pops up in my console saying :

'then' expected near 'local'


no idea what that means...
 Asura.Pergatory
Offline
Serveur: Asura
Game: FFXI
user: Pergatory
Posts: 1383
By Asura.Pergatory 2018-10-11 18:02:15
Link | Citer | R
 
I believe you need to add a "then" to the end of that line:
Code
if command == "elemental_siphon" then


Also keep in mind that function doesn't appear to consider the weather, which sometimes affects your decision. So it won't be perfect but should be good most of the time.
 
Offline
Posts:
By 2018-10-11 18:43:45
 Undelete | Edit  | Link | Citer | R
 
Post deleted by User.
 Lakshmi.Elidyr
Offline
Serveur: Lakshmi
Game: FFXI
user: elii
Posts: 912
By Lakshmi.Elidyr 2018-10-11 19:40:42
Link | Citer | R
 
Asura.Pergatory said: »
I believe you need to add a "then" to the end of that line:
Code
if command == "elemental_siphon" then


Also keep in mind that function doesn't appear to consider the weather, which sometimes affects your decision. So it won't be perfect but should be good most of the time.

Yeah sorry, I forgot the then, and I didn't put any assumptions on weather, just the day.

Also I have no ideas about anything in the file, I was just attempting to help whoever asked, and give some ideas. Feel free to ignore me, I'm nobody! :D
 
Offline
Posts:
By 2018-10-11 19:55:46
 Undelete | Edit  | Link | Citer | R
 
Post deleted by User.
[+]
necroskull Necro Bump Detected! [35 days between previous and next post]
Offline
Posts: 761
By Elizabet 2018-11-15 10:54:19
Link | Citer | R
 
Carbuncle.Kyawind said: »
is there a way to add elemental siphon

It does already, summon dark spirit, it'll hijack it and summon instead the best spirit. Then just add delay aand command to siphon it, release etc... in your macro.

So you make a macro like:

/ma "Dark Spirit" <me>
/wait 3 (or w/e depending on FC)
/ja "Elemental Siphon <me>
/wait 1
/ja "Release" <me>

something like that.

snippet:
Code
    elseif spell.type == 'SummonerPact' then
     
        -- This chunk of code handles Elemental Siphon. It will look at the current day and weather and cancel the spell to summon
        -- the right elemental. Your elemental siphon macro should summon a Dark Spirit to trigger this check
         
        -- These use the included lists in global.lua to determine the right spirit to summon
             
        if spell.name == 'Dark Spirit' then
            if world.weather_element == 'Dark' then
             
                -- Dark Weather is active, lets the spell go ahead and equips summoning precast
                equip(sets.precast.summoning)
                 
            elseif world.weather_element ~= 'None' and spirit_conflict[world.day_element] ~= world.weather_element then
             
                -- It's not dark weather but there is some weather up, cancels dark and summons the right spirit
                cancel_spell()
                send_command('input /ma "%s" <me>':format(spirit_element[world.weather_element]))
                equip(sets.precast.summoning)
                 
            elseif world.day_element == 'Dark' then
             
                -- It's darksday so allow the dark spirit to go ahead and equip summoning
                equip(sets.precast.summoning)
                 
            else
             
                -- There is no weather up and it's not darksday, so summon the current day's spirit
                cancel_spell()              
                send_command('input /ma "%s" <me>':format(spirit_element[world.day_element]))
                equip(sets.precast.summoning)
                 
            end
        else
         
            -- We're not summoning Dark Spirit, so we don't want to Siphon, which means we're summoning an avatar
            equip(sets.precast.summoning)
             
        end
Offline
Posts: 761
By Elizabet 2018-11-15 10:57:28
Link | Citer | R
 
Olopher said: »
i am having an issue getting the precast for bp delay to work

Can you elaborate what sort of issue you are having? It works for me and most people.
 
Offline
Posts:
By 2018-11-18 20:16:28
 Undelete | Edit  | Link | Citer | R
 
Post deleted by User.
 
Offline
Posts:
By 2018-11-18 21:05:35
 Undelete | Edit  | Link | Citer | R
 
Post deleted by User.
Offline
Posts: 761
By Elizabet 2018-11-19 00:36:09
Link | Citer | R
 
Ayamiragnarok said: »
never mind now it works. not sure why sometimes it doesn't swap.

Maybe you had apogee / conduit up?

There is a check in the LUA to not swap into BP delay when those are up to prevent BPing in delay set instead of dmg set when under those buffs where delay is irrelevant.

Edit: repo link changed: https://github.com/Tunaliz/Liz_Gearswaps
necroskull Necro Bump Detected! [218 days between previous and next post]
Offline
Posts: 56
By Mcdougall 2019-06-25 03:45:05
Link | Citer | R
 
Elizabet said: »
Carbuncle.Kyawind said: »
is there a way to add elemental siphon

It does already, summon dark spirit, it'll hijack it and summon instead the best spirit. Then just add delay aand command to siphon it, release etc... in your macro.

So you make a macro like:

/ma "Dark Spirit" <me>
/wait 3 (or w/e depending on FC)
/ja "Elemental Siphon <me>
/wait 1
/ja "Release" <me>

something like that.

I believe he is talking something like how kinematics handles siphoning.

All you have to do is gs c siphon.

It will automatically check the day and weather and summon the spirit just as this Lua does.

But it has a few extra that would be amazing to have in this Lua I just have no idea how to code or else I would try..

The really cool things it does if you have a pet out and use siphon it will automatically resummon the pet.

This is the code that handles it all..

Here is kinematics Lua if I missed something important for someone to help me out.
necroskull Necro Bump Detected! [47 days between previous and next post]
 Sylph.Excalin
Offline
Serveur: Sylph
Game: FFXI
user: Excalin
Posts: 90
By Sylph.Excalin 2019-08-11 15:17:35
Link | Citer | R
 
So another necro bump, but never saw the above resolved....how do I set it up to use //gs c siphon? been trying to dig through all this stuff and not sure where that gets set up to work.
 Asura.Elizabet
Offline
Serveur: Asura
Game: FFXI
user: Elizabet
Posts: 496
By Asura.Elizabet 2019-08-11 15:26:17
Link | Citer | R
 
There is no //gs c siphon in this lua.

It simply replaces dark spirit with whichever spirit will be most efficient.

Macro this:

Quote:
/ma "Dark Spirit" <me>
/wait 3 (or w/e depending on FC)
/ja "Elemental Siphon <me>
/wait 1
/ja "Release" <me>
 Sylph.Excalin
Offline
Serveur: Sylph
Game: FFXI
user: Excalin
Posts: 90
By Sylph.Excalin 2019-08-11 15:37:18
Link | Citer | R
 
Asura.Elizabet said: »
There is no //gs c siphon in this lua.

It simply replaces dark spirit with whichever spirit will be most efficient.

Macro this:

Quote:
/ma "Dark Spirit" <me>
/wait 3 (or w/e depending on FC)
/ja "Elemental Siphon <me>
/wait 1
/ja "Release" <me>

I am trying to figure out how to put it in there
 Asura.Elizabet
Offline
Serveur: Asura
Game: FFXI
user: Elizabet
Posts: 496
By Asura.Elizabet 2019-08-11 15:49:26
Link | Citer | R
 
just in game macro, not in the lua itself
 Sylph.Excalin
Offline
Serveur: Sylph
Game: FFXI
user: Excalin
Posts: 90
By Sylph.Excalin 2019-08-11 15:54:36
Link | Citer | R
 
Asura.Elizabet said: »
just in game macro, not in the lua itself

Yes, I understand that. I am not asking how to use your LUA, I am asking how to change your LUA to what I want to do with it.
 Sylph.Excalin
Offline
Serveur: Sylph
Game: FFXI
user: Excalin
Posts: 90
By Sylph.Excalin 2019-08-11 18:15:49
Link | Citer | R
 
So instead of adding a binding I decided to just add in a precast to Elemental Siphon:

So I can get the code to release the avatar, but I get the "Already has a pet". what am I doing wrong with the wait time?
Code
	elseif spell.name == 'Elemental Siphon' then
         
		cancel_spell()
		
		if pet.isvalid then
		
			send_command('pet "Release";wait 1.1;')
			releasedAvatar = pet.name

		end
		
		if world.weather_element ~= 'None' then
		send_command('input /ma "%s" <me>':format(spirit_element[world.weather_element]))
        equip(sets.precast.summoning)		
--		send_Command('wait 4;ja "Elemental Siphon" <me>')			
		
		else
        -- There is no weather up, summon the current day's spirit		
		send_command('input /ma "%s" <me>':format(spirit_element[world.day_element]))
        equip(sets.precast.summoning)
--		send_Command('wait 4;ja "Elemental Siphon" <me>')	
		
	end
 Asura.Elizabet
Offline
Serveur: Asura
Game: FFXI
user: Elizabet
Posts: 496
By Asura.Elizabet 2019-08-11 18:32:38
Link | Citer | R
 
Oh, well since you posted in this thread I thought it was with the lua itself. But your question is just generic gearswap stuff.

I think the pet release is wrongly put and doesn't work but silently fails cause gearswaps does the thing but the game doesnt do anything with it.

send_command('pet "Release";wait 1.1;')

think you wanna put:

send_command('input /pet "Release";wait 1.1;')
 Sylph.Excalin
Offline
Serveur: Sylph
Game: FFXI
user: Excalin
Posts: 90
By Sylph.Excalin 2019-08-11 18:39:50
Link | Citer | R
 
Asura.Elizabet said: »
Oh, well since you posted in this thread I thought it was with the lua itself. But your question is just generic gearswap stuff.

I think the pet release is wrongly put and doesn't work but silently fails cause gearswaps does the thing but the game doesnt do anything with it.

send_command('pet "Release";wait 1.1;')

think you wanna put:

send_command('input /pet "Release";wait 1.1;')

Didn't fix it.

It will release the current pet just fine, but it runs into the "Already have" or "cant cast" message.

If I have nothing out, it summons the correct elemental.

I just can't get it to move through the chain correctly

P.S. posting in this thread because I am working with this lua specifically, but I may move to the main thread soon.
 Asura.Pergatory
Offline
Serveur: Asura
Game: FFXI
user: Pergatory
Posts: 1383
By Asura.Pergatory 2019-08-12 10:10:51
Link | Citer | R
 
I think the problem is that the "wait" does nothing at the end of the statement.

send_command('input /pet "Release";wait 1.1;')

send_command('input /ma "%s" <me>':format(spirit_element[world.weather_element]))

These are two separate lines. The wait is for anything that comes after it on the same line.

I'd suggest constructing one long console statement, then send it all at once.

Edit: Or do it like you have in your comments, put the wait at the start of the line.
 Asura.Elizabet
Offline
Serveur: Asura
Game: FFXI
user: Elizabet
Posts: 496
By Asura.Elizabet 2019-08-12 12:26:31
Link | Citer | R
 
Try this instead of the snippet you posted

Also, now that I am looking at it not hella tired, I noticed your above code snippet was using siphon in your fast cast set. So I fixed that in the code below.

sets.precast.summoning is fast cast for summoning pet, it combines from sets.precast.casting, but is sepperate so you can put in Bayaami body for SIRD.

sets.avatar.skill is the set for max Summoning Magic Skill.
Code
    elseif spell.name == 'Elemental Siphon' then
          
        cancel_spell()
         
        if pet.isvalid then
			if world.weather_element ~= 'None' then
				releasedAvatar = pet.name
				send_command('/pet "Release" <me>')
				equip(sets.precast.summoning)
				send_command('wait 1.1;/ma "%s" <me>':format(spirit_element[world.weather_element])))
			else -- There is no weather up, summon the current day's spirit 
				releasedAvatar = pet.name
				send_command('/pet "Release" <me>')
				equip(sets.precast.summoning)
				send_command('wait 1.1;/ma "%s" <me>':format(spirit_element[world.day_element])))
			end
        else -- No pet was up
			if world.weather_element ~= 'None' then
				equip(sets.precast.summoning)
				send_command('input /ma "%s" <me>':format(spirit_element[world.weather_element]))
			else -- There is no weather up, summon the current day's spirit 
				equip(sets.precast.summoning)
				send_command('input /ma "%s" <me>':format(spirit_element[world.day_element]))
			end
		end
        
		equip(sets.avatar.skill)
		send_Command('wait 4;/ja "Elemental Siphon" <me>') 
         
    end
necroskull Necro Bump Detected! [98 days between previous and next post]
Offline
Posts: 42703
By Jetackuu 2019-11-18 12:10:44
Link | Citer | R
 
So since the git doesn't have the file is there anywhere this is posted with a lot of the updates that were mentioned?
necroskull Necro Bump Detected! [978 days between previous and next post]
 Asura.Shakyamuni
Offline
Serveur: Asura
Game: FFXI
Posts: 3
By Asura.Shakyamuni 2022-07-23 17:33:55
Link | Citer | R
 
I was trying to find your smn.lua and it is not listed in your github gearswap.