|
Gearswap Support Thread
Serveur: Asura
Game: FFXI
Posts: 487
By Asura.Beatsbytaru 2016-01-11 16:34:49
What's the best way to differentiate two reforged cursed items? Had issues with this over two different apogee crown +1's.
Bismarck.Speedyjim
Serveur: Bismarck
Game: FFXI
Posts: 516
By Bismarck.Speedyjim 2016-01-11 16:42:53
was wondering if the blu thing where, its not recognizing buffs as active or non active, seems to think i am eternally in chain affinity and also there seems to be a problem with diffusion where its not equipping my Lulaza charuqs. Anyone else still having this problem? Seems to go away if I reload the lua but instantly resurface when i CA again. A few of us are experiencing this, here and on BLU forums. Can also hit F12 to "fix" it.
Bismarck.Dunigs
Serveur: Bismarck
Game: FFXI
Posts: 83
By Bismarck.Dunigs 2016-01-11 16:44:35
Asura.Beatsbytaru said: »What's the best way to differentiate two reforged cursed items? Had issues with this over two different apogee crown +1's.
Equip one of them > //gs export equip lua > Equip second one > //gs export equip lua.
Alternatively have both in your inventory and //gs export inventory lua.
Go to /addons/GearSwap/data/export
Should see them defined by augments, which you can then either directly copy paste into your sets, or define as a variable in your file and use that instead i.e. :
Code
drain_legs={ name="Merlinic Shalwar", augments={'"Mag.Atk.Bns."+18','"Drain" and "Aspir" potency +10','CHR+3','Mag. Acc.+4',}},}
sets.midcast["Dark Magic"] = {
legs = drain_legs,
}
[+]
Serveur: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2016-01-11 16:49:39
Asura.Beatsbytaru said: »What's the best way to differentiate two reforged cursed items? Had issues with this over two different apogee crown +1's.
It's the same method as all augmented gear.
Export them and use the appropriate augments for the corresponding sets.
For example:
body={ name="Rawhide Vest", augments={'DEX+10','STR+7','INT+7',}}
Command is:
//gs export
File can be found in:
Windower4>Addons>Gearswap>Data>Export
Bismarck.Speedyjim
Serveur: Bismarck
Game: FFXI
Posts: 516
By Bismarck.Speedyjim 2016-01-11 16:52:12
Asura.Beatsbytaru said: »What's the best way to differentiate two reforged cursed items? Had issues with this over two different apogee crown +1's. Use the command //gs export inv lua with your Apogee stuff in your inventory.
Go to the gearswap/data/export folder and open the newly created lua.
Find your apogee stuff and copy everything past the slot= part.
In your SMN lua under functions user_setup (or globals file, under the define_global_sets part), create an alias for that piece using this template: gear.name_me_whatever.
Paste the line you copied earlier next to this new alias.
Find your set and enter the alias instead of the piece of gears name. Ex.:head=gear.whatever_you_named
There are no quotation marks around the alias, unlike when entering a piece of gear.
Examples of how the aliases look like are as follows, taken from my globals file.
Quote: Code gear.merl_head_MB = {name="Merlinic Hood", augments={'Mag. Acc.+23 "Mag.Atk.Bns."+23','Magic burst mdg.+4%','"Mag.Atk.Bns."+15'}}
gear.merl_head_FC = {name="Merlinic Hood", augments={'Mag. Acc.+9','"Fast Cast"+5','MND+8','"Mag.Atk.Bns."+3'}}
gear.merl_feet_MB = {name="Merlinic Crackows", augments={'Mag. Acc.+23','Magic burst mdg.+11%'}}
gear.merl_feet_MAB = {name="Merlinic Crackows", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','"Fast Cast"+1','INT+8','Mag. Acc.+4','"Mag.Atk.Bns."+13'}}
Serveur: Asura
Game: FFXI
Posts: 487
By Asura.Beatsbytaru 2016-01-11 17:28:39
Ah yeah that did the trick . Thanks, forgot all about that!
Serveur: Asura
Game: FFXI
Posts: 487
By Asura.Beatsbytaru 2016-01-11 17:30:59
Asura.Beatsbytaru said: »What's the best way to differentiate two reforged cursed items? Had issues with this over two different apogee crown +1's.
It's the same method as all augmented gear.
Export them and use the appropriate augments for the corresponding sets.
For example:
body={ name="Rawhide Vest", augments={'DEX+10','STR+7','INT+7',}}
Command is:
//gs export
File can be found in:
Windower4>Addons>Gearswap>Data>Export Not sure why, but that's how I formatted it and gearswap wasn't liking it.
Cerberus.Jeffil
Serveur: Cerberus
Game: FFXI
Posts: 90
By Cerberus.Jeffil 2016-01-14 07:40:37
Let's say I want to use Balrahn's Ring as an idle piece only while doing salvage, assault, or nyzul isle. Are there already existing luas that demonstrate how to do this?
Carbuncle.Akivatoo
Serveur: Carbuncle
Game: FFXI
Posts: 263
By Carbuncle.Akivatoo 2016-01-16 06:13:21
Hi everyone,
i'm still looking for fix this two fonction.
-first fonction is for equip different cure set depend on target (self or other) Code ]function precast(spell,action)
if spell.english:startswith('Cure') and spell.target.name == player.name then
equip(sets.midcast.Cure.Self)
end
end Code sets.midcast.Cure =
{
ammo="Impatiens",
head="Rev. Coronet +1",
body={ name="Jumalik Mail", augments={'HP+50','Attack+15','Enmity+9','"Refresh"+2',}},
hands="Macabre Gaunt. +1",
legs={ name="Founder's Hose", augments={'MND+7','Mag. Acc.+10','Attack+10',}},
feet={ name="Odyssean Greaves", augments={'Potency of "Cure" effect received+6%','MND+2','Mag. Acc.+8','"Mag.Atk.Bns."+3',}},
neck="Incanter's Torque",
waist="Hachirin-no-obi",
left_ear="Nourish. Earring +1",
right_ear="Mendi. Earring",
left_ring="Vocane Ring",
right_ring="Evanescence Ring",
back="Solemnity Cape",
}
sets.midcast.Cure.Self = set_combine(sets.midcast.Cure, {waist="Gishdubar Sash", right_ear="Oneiros Earring", neck="Phalaina Locket"}) -Second fonction allow me to do only cure4 macro (cast 3 if 4 is in recast and 2 if 4 and 3 are on recast)
i don't see what is wrong
Code
function refine_various_spells(spell, action, spellMap, eventArgs)
cures = S{'Cure II','Cure III','Cure IV'}
if not cures:contains(spell.english) then
return
end
local newSpell = spell.english
local spell_recasts = windower.ffxi.get_spell_recasts()
local cancelling = 'All '..spell.english..' spells are on cooldown. Cancelling spell casting.'
if spell_recasts[spell.recast_id] > 0 then
if cures:contains(spell.english) then
if spell.english == 'Cure' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Cure IV' then
newSpell = 'Cure III'
elseif spell.english == 'Cure III' then
newSpell = 'Cure II'
end
end
end
if newSpell ~= spell.english then
send_command('@input /ma "'..newSpell..'" '..tostring(spell.target.raw))
eventArgs.cancel = true
return
end
end
btw i give this fonction very usefull for BLM to save macro space (this one work) Code -------------------------------------Aspir,Sleep/ga Nuke's refine rules (thanks Asura.Vafruvant for this code)-----------------------------------
function refine_various_spells(spell, action, spellMap, eventArgs)
aspirs = S{'Aspir','Aspir II','Aspir III'}
sleeps = S{'Sleep','Sleep II'}
sleepgas = S{'Sleepga','Sleepga II'}
nukes = S{'Fire', 'Blizzard', 'Aero', 'Stone', 'Thunder', 'Water',
'Fire II', 'Blizzard II', 'Aero II', 'Stone II', 'Thunder II', 'Water II',
'Fire III', 'Blizzard III', 'Aero III', 'Stone III', 'Thunder III', 'Water III',
'Fire IV', 'Blizzard IV', 'Aero IV', 'Stone IV', 'Thunder IV', 'Water IV',
'Fire V', 'Blizzard V', 'Aero V', 'Stone V', 'Thunder V', 'Water V',
'Fire VI', 'Blizzard VI', 'Aero VI', 'Stone VI', 'Thunder VI', 'Water VI',
'Firaga', 'Blizzaga', 'Aeroga', 'Stonega', 'Thundaga', 'Waterga',
'Firaga II', 'Blizzaga II', 'Aeroga II', 'Stonega II', 'Thundaga II', 'Waterga II',
'Firaga III', 'Blizzaga III', 'Aeroga III', 'Stonega III', 'Thundaga III', 'Waterga III',
'Firaja', 'Blizzaja', 'Aeroja', 'Stoneja', 'Thundaja', 'Waterja',
}
if not sleepgas:contains(spell.english) and not sleeps:contains(spell.english) and not aspirs:contains(spell.english) and not nukes:contains(spell.english)then
return
end
local newSpell = spell.english
local spell_recasts = windower.ffxi.get_spell_recasts()
local cancelling = 'All '..spell.english..' spells are on cooldown. Cancelling spell casting.'
if spell_recasts[spell.recast_id] > 0 then
if aspirs:contains(spell.english) then
if spell.english == 'Aspir' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Aspir II' then
newSpell = 'Aspir'
elseif spell.english == 'Aspir III' then
newSpell = 'Aspir II'
end
elseif sleeps:contains(spell.english) then
if spell.english == 'Sleep' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Sleep II' then
newSpell = 'Sleep'
end
elseif sleepgas:contains(spell.english) then
if spell.english == 'Sleepga II' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Sleepga' then
newSpell = 'Sleepga II'
end
elseif nukes:contains(spell.english) then
if spell.english == 'Fire' then
eventArgs.cancel = true
return
elseif spell.english == 'Fire VI' then
newSpell = 'Fire V'
elseif spell.english == 'Fire IV' then
newSpell = 'Fire III'
elseif spell.english == 'Fire II' then
newSpell = 'Fire'
elseif spell.english == 'Firaja' then
newSpell = 'Firaga III'
elseif spell.english == 'Firaga II' then
newSpell = 'Firaga'
end
if spell.english == 'Blizzard' then
eventArgs.cancel = true
return
elseif spell.english == 'Blizzard VI' then
newSpell = 'Blizzard V'
elseif spell.english == 'Blizzard IV' then
newSpell = 'Blizzard III'
elseif spell.english == 'Blizzard II' then
newSpell = 'Blizzard'
elseif spell.english == 'Blizzaja' then
newSpell = 'Blizzaga III'
elseif spell.english == 'Blizzaga II' then
newSpell = 'Blizzaga'
end
if spell.english == 'Aero' then
eventArgs.cancel = true
return
elseif spell.english == 'Aero VI' then
newSpell = 'Aero V'
elseif spell.english == 'Aero IV' then
newSpell = 'Aero III'
elseif spell.english == 'Aero II' then
newSpell = 'Aero'
elseif spell.english == 'Aeroja' then
newSpell = 'Aeroga III'
elseif spell.english == 'Aeroga II' then
newSpell = 'Aeroga'
end
if spell.english == 'Stone' then
eventArgs.cancel = true
return
elseif spell.english == 'Stone VI' then
newSpell = 'Stone V'
elseif spell.english == 'Stone IV' then
newSpell = 'Stone III'
elseif spell.english == 'Stone II' then
newSpell = 'Stone'
elseif spell.english == 'Stoneja' then
newSpell = 'Stonega III'
elseif spell.english == 'Stonega II' then
newSpell = 'Stonega'
end
if spell.english == 'Thunder' then
eventArgs.cancel = true
return
elseif spell.english == 'Thunder VI' then
newSpell = 'Thunder V'
elseif spell.english == 'Thunder IV' then
newSpell = 'Thunder III'
elseif spell.english == 'Thunder II' then
newSpell = 'Thunder'
elseif spell.english == 'Thundaja' then
newSpell = 'Thundaga III'
elseif spell.english == 'Thundaga II' then
newSpell = 'Thundaga'
end
if spell.english == 'Water' then
eventArgs.cancel = true
return
elseif spell.english == 'Water VI' then
newSpell = 'Water V'
elseif spell.english == 'Water IV' then
newSpell = 'Water III'
elseif spell.english == 'Water II' then
newSpell = 'Water'
elseif spell.english == 'Waterja' then
newSpell = 'Waterga III'
elseif spell.english == 'Waterga II' then
newSpell = 'Waterga'
end
end
end
if newSpell ~= spell.english then
send_command('@input /ma "'..newSpell..'" '..tostring(spell.target.raw))
eventArgs.cancel = true
return
end
end
Can you help me ?
By Feanorsof 2016-01-16 14:56:00
Hello,
Would someone be able to take a look at this RNG lua? It's mostly pieces i've taken from various examples. however I cannot get Velocity shot to autocast when engaged. I get the error "attempt to index global 'recasts' (a nil value)"
Also is it usual to have ws gear as pre-cast in gearswap?
Thanks!
function get_sets()
-- windower.send_command('input /macro book 18; wait .1; input /macro set 1; input /echo [ Job Changed to RNG ]')
-- windower.send_command('@bind f10 input /range <t>')
-- windower.send_command('input /blockhelp on')
-- Start defining actual gear sets to be used below --
-- Miscellaneous sets
sets.misc = {}
sets.misc.DT = {}
sets.misc.DT.None = {}
sets.misc.DT.Active = {
head="Arcadian Beret +1",
neck="Sylvan scarf",
ear1="Vulcan's Pearl",
ear2="Volley earring",
body="Amini Caban",
hands="Amini Glovelettes",
ring1="Longshot Ring",
ring2="Ifrit Ring",
back="Lutian Cape",
waist="Scout's Belt",
legs="Amini brague",
feet="Amini bottillons"}
sets.misc.Barrage = {
head="Arcadian Beret +1",
neck="Peacock Charm",
ear1="Vulcan's Pearl",
ear2="Volley Earring",
body="Amini Caban",
hands="Alruna's Gloves +1",
ring1="Hajduk Ring +1",
ring2="Longshot Ring",
back="Lutian Cape",
waist="Scout's Belt",
legs="Mirador trousers +1",
feet="Amini bottillons"}
sets.misc.Movement = {
feet="Fajin boots"}
sets.misc.Utsusemi = {
neck="Magoraga Beads"}
-- Precast sets --
sets.precast = {}
sets.precast.JA = {}
sets.precast.JA['Bounty Shot'] = {
hands="Syl. Glvltte. +2"}
sets.precast.JA.Camouflage = {
body="Orion Jerkin"}
sets.precast.JA['Eagle Eye Shot'] = {
head="Arcadian Beret +1",
-- AF+1 > Uk'uxkaj Cap (wkr)
ear1="Vulcan's Pearl",
ear2="Vulcan's Pearl",
neck="Rancor Collar",
back="Buquwik Cape",
hands="Amini Glovelettes",
ring1="Ifrit Ring",
ring2="Ifrit Ring",
legs="Amini Brague",
feet="Amini Bottillons" }
-- Thereoid Greaves Ru'an escha, Orion socks
sets.precast.JA.Scavenge = {
feet="Orion Socks +1"}
sets.precast.JA.Shadowbind = {
hands="Orion Bracers +1"}
sets.precast.JA.Sharpshot = {
legs="Orion Braccae +1"}
sets.precast.PreShot = {
head="Amini Gapette", -- 7
body="Amini Caban", -- 7
hands="Alruna's Gloves +1", --8
-- Skirmish Yorcia Weald (u) Iuitl wristbands
back="Lutian Cape", -- 2
-- Ring = Haverton SoA
legs="Mirador trousers +1",
-- Adhemar from escha +9 or Nahtirah trousers from Delve Muyingwa 170k plasm
waist="Impulse Belt", -- 2
-- feet="Wurrukatte Boots" -- 3 or Taeon
}
sets.precast.PreShot.Overkill = set_combine(sets.precast.PreShot, {
head="Orion Beret +1",
hands="Arc. Bracers +1",
legs="Entois Trousers"})
sets.precast.WS = {}
sets.precast.WS['Jishnu\'s Radiance'] = {
head="Uk'uxkaj Cap", neck="Light Gorget", lear="Vulcan's Pearl", rear="Vulcan's Pearl",
body="Kyujutsugi", hands="Arc. Bracers +1", lring="Rajas Ring", rring="Pyrosoul Ring",
back="Buquwik Cape", waist="Light Belt", legs="Manibozho Brais", feet="Arcadian Socks +1"}
sets.precast.WS['Namas Arrow'] = {
head="Orion Beret +1", neck="Light Gorget", lear="Vulcan's Pearl", rear="Vulcan's Pearl",
body="Kyujutsugi", hands="Arc. Bracers +1", lring="Rajas Ring", rring="Pyrosoul Ring",
back="Buquwik Cape", waist="Light Belt", legs="Nahtirah Trousers", feet="Arcadian Socks +1"}
sets.precast.WS['Last Stand'] = {
head="Arcadian Beret +1",
neck="Fotia gorget",
ear1="Vulcan's Pearl",
ear2="Vulcan's Pearl",
body="Amini Caban",
hands="Amini Glovelettes",
ring1="Garuda Ring +1",
ring2="Ifrit Ring",
back="Lutian Cape",
waist="Fotia belt",
legs="Amini Brague",
feet="Amini Bottillons"
--Thereoid Greaves
}
sets.precast.WS['Coronach'] = {
head="Arcadian Beret +1",
-- AF+1 > Uk'uxkaj Cap (wkr)
ear1="Vulcan's Pearl",
ear2="Vulcan's Pearl",
neck="Fotia Gorget",
back="Buquwik Cape",
hands="Amini Glovelettes",
ring1="Ifrit Ring",
ring2="Ifrit Ring",
legs="Amini Brague",
feet="Amini Bottillons"
--Thereoid Greaves
}
sets.precast.FastCast = {
head="Haruspex Hat +1", neck="Orunmila's Torque", lear="Loquac. Earring",
body="Mirke Wardecors", hands="Thaumas Gloves", lring="Prolix Ring"}
-- Midcast sets (none needed in this file) --
sets.midcast = {}
-- Aftercast sets labeled to show either TP or idle --
sets.TP = {}
sets.TP.Normal = {
head="Arcadian Beret +1",
neck="Sylvan scarf",
ear1="Vulcan's Pearl",
ear2="Volley earring",
body="Amini Caban",
hands="Amini Glovelettes",
ring1="Longshot Ring",
ring2="Ifrit Ring",
back="Lutian Cape",
waist="Scout's Belt",
legs="Amini brague",
feet="Amini bottillons"}
sets.TP.Accuracy = set_combine(sets.TP.Normal, {
ring2="Hajduk Ring +1"
})
sets.idle = set_combine(sets.misc.DT.Active, {
head="Arcadian Beret +1",
neck="Sylvan scarf",
ear1="Vulcan's Pearl",
ear2="Volley earring",
body="Amini Caban",
hands="Amini Glovelettes",
ring1="Longshot Ring",
ring2="Ifrit Ring",
back="Lutian Cape",
waist="Scout's Belt",
legs="Amini brague",
feet="Amini bottillons"})
sets.TP.Capacity = set_combine(sets.TP.Capacity, {
back="Aptitude mantle +1"
})
IdleMode = 'DT'
DTMode = 'None'
TPMode = 'Normal'
ShadowType = 'None'
end
function self_command(str)
-- Use an in game macro "/con gs c DTMode" to toggle Damage Taken set
if str == 'DTMode' then
if DTMode == 'None' then
DTMode = 'Active'
else
DTMode = 'None'
end
windower.add_to_chat(8,'Damage taken set to: '..DTMode)
gear_modes()
-- Use an in game macro "/con gs c TPMode" to cycle through Normal and Accuracy sets
elseif str == 'TPMode' then
if TPMode == 'Normal' then
TPMode = 'Accuracy'
else
TPMode = 'Normal'
end
windower.add_to_chat(8,'Engaged melee set mode: '..TPMode)
gear_modes()
end
end
-- User created bridge for built in aftercast and status_change functions,
-- also self_command references listed above to help handle mode changes for situation needs
function gear_modes()
-- Sequential gear sets used to easier allow for changing player needs
if player.status == 'Engaged' then
equip(sets.TP[TPMode], sets.misc.DT[DTMode])
else
equip(sets.idle, sets.misc.DT[DTMode], sets.misc.Movement)
end
end
-- Used to disable slots for items such as Reraise Earring among other things
function slot_disabling()
if player.equipment.left_ear == 'Reraise Earring' then
disable('left_ear')
windower.add_to_chat(8,'Reraise Earring equiped on left ear')
elseif player.equipment.right_ear == 'Reraise Earring' then
disable('right_ear')
windower.add_to_chat(8,'Reraise Earring equiped on right ear')
else
enable('left_ear','right_ear')
end
end
function slot_disabling()
if player.equipment.back == 'Aptitude mantle +1' then
disable('back')
windower.add_to_chat(8,'Aptitude mantle equipped')
else
enable('back')
end
end
----------- Start of ----------
------ built in functions -----
function status_change(new,old)
if T{'Idle','Engaged'}:contains(new) then
if player.status == 'Engaged' then
-- Gear info each time you Engage, useful if using DressUp or BlinkMeNot
windower.add_to_chat(8,player.name..': Melee = '..TPMode..' | Damage Taken = '..DTMode)
-- Automatically activate Velocity Shot when engaging
if not buffactive['Velocity Shot'] and recasts[129] < 1 then
send_command('input /ja "Velocity Shot" <me>')
cast_delay(1)
end
end
gear_modes()
slot_disabling()
end
end
function precast(spell,arg)
slot_disabling()
if (spell.name == 'Jishnu\'s Radiance' or spell.name == 'Namas Arrow') and not buffactive.Berserk and not buffactive.Amnesia and not buffactive.Obliviscence and not buffactive.Paralysis and player.sub_job == 'WAR' and windower.ffxi.get_ability_recasts()[1] < 1 then
windower.send_command('berserk; wait 1; warcry; wait 1; '..spell.name..' '..spell.target.raw)
cancel_spell()
return
end
if spell.name == 'Ranged' then
equip(sets.precast.PreShot)
if buffactive.Overkill then
equip(sets.precast.PreShot.Overkill)
end
end
-- Generic equip command for all Job Abilities and Weaponskills
if sets.precast.JA[spell.name] then
equip(sets.precast.JA[spell.name])
elseif sets.precast.WS[spell.name] then
equip(sets.precast.WS[spell.name])
end
-- Magic spell gear handling(Precast)
if spell.skill == 'Ninjutsu' then
equip(sets.precast.FastCast)
if spell.name == "Utsusemi: Ichi" then
equip(sets.misc.Utsusemi)
end
end
-- Special handling to remove Dancer sub job Sneak effect
if spell.name == 'Spectral Jig' and buffactive.Sneak then
windower.ffxi.cancel_buff(71)
cast_delay(0.3)
end
end
function midcast(spell,arg)
if spell.name == 'Ranged' then
equip(sets.TP[TPMode])
if buffactive.Barrage then
equip(sets.misc.Barrage)
end
end
-- Gear change to Damage Taken set when in midcast of Utsusemi
-- Special handling to remove Utsusemi, Sneak, and Stoneskin effects if they are active
if windower.wc_match(spell.name,'Utsusemi*') then
equip(sets.misc.DT.Active)
if spell.name == 'Utsusemi: Ichi' and ShadowType == 'Ni' then
if buffactive['Copy Image'] then
windower.ffxi.cancel_buff(66)
elseif buffactive['Copy Image (2)'] then
windower.ffxi.cancel_buff(444)
elseif buffactive['Copy Image (3)'] then
windower.ffxi.cancel_buff(445)
elseif buffactive['Copy Image (4+)'] then
windower.ffxi.cancel_buff(446)
end
end
elseif (spell.name == 'Monomi: Ichi' or spell.name == 'Sneak') and buffactive.Sneak and spell.target.type == 'SELF' then
windower.ffxi.cancel_buff(71)
end
end
function aftercast(spell,arg)
gear_modes()
-- Changes shadow type variable to allow cancel Copy Image if last cast was Utsusemi: Ni
if spell and spell.name == 'Utsusemi: Ni' then
ShadowType = 'Ni'
elseif spell and spell.name == 'Utsusemi: Ichi' then
ShadowType = 'Ichi'
end
end
Bismarck.Dunigs
Serveur: Bismarck
Game: FFXI
Posts: 83
By Bismarck.Dunigs 2016-01-16 15:26:33
Hello,
Would someone be able to take a look at this RNG lua? It's mostly pieces i've taken from various examples. however I cannot get Velocity shot to autocast when engaged. I get the error "attempt to index global 'recasts' (a nil value)"
Also is it usual to have ws gear as pre-cast in gearswap?
Thanks!
Change
To Code
windower.ffxi.get_ability_recasts()[129] < 1
Assuming you did your homework and 129 is actually velocity shot.
And yes, WS gear is done in precast.
Bismarck.Dunigs
Serveur: Bismarck
Game: FFXI
Posts: 83
By Bismarck.Dunigs 2016-01-16 15:45:46
Let's say I want to use Balrahn's Ring as an idle piece only while doing salvage, assault, or nyzul isle. Are there already existing luas that demonstrate how to do this?
I prefer using IDs because I'd probably misspell something in a longer list so:
Code
salvage_assault_nyzul = S{73,74,75,76,55,56,63,66,69,77}
function aftercast(spell,action)
--Your normal stuff here
if salvage_assault_nyzul:contains(world.zone_id) then
equip(set_combine(yourIdleSet,{right_ring = "Balrahn's Ring"}))
end
end
IDs in that table should cover 4 remnants, ilrusi, lebros, training grounds, periqa, sanctum, and nyzul. Alternatively you could spell each one out i.e.:
Code
salvage_assault_nyzul = S{"Lebros Cavern","Mamool Ja Training Grounds"...etc}
Then use the line Code
if salvage_assault_nyzul:contains(world.zone) then
do stuff
end
[+]
By Feanorsof 2016-01-16 16:16:34
Thanks Dunigs. I'm guessing 129 is the recast time in seconds?
Would something like this work to allow me to have dupes of gear with different augments?
TaeonHands = {}
TaeonHands.TA = {name="Taeon Gloves", augments={'DEX+6','Accuracy+17 Attack+17','"Triple Atk."+2'}}
TaeonHands.Snap = {name="Taeon Gloves", augments={'"Snapshot"+5', 'Attack+22','"Snapshot"+3'}}
Asura.Cair
VIP
Serveur: Asura
Game: FFXI
Posts: 246
By Asura.Cair 2016-01-16 16:28:09
Yes, that's the general idea.
By Feanorsof 2016-01-17 19:10:21
any idea why this doesn't work? It doesn't seem to disable back slot
Thanks!
-- Used to disable slots for items such as Reraise Earring among other things
function slot_disabling()
if player.equipment.back == 'Aptitude Mantle +1' then
disable('back')
windower.add_to_chat(8,'CP Time!')
elseif player.equipment.right_ear == 'Reraise Earring' then
disable('right_ear')
windower.add_to_chat(8,'Reraise Earring equiped on right ear')
else
enable('back','right_ear')
end
end
Serveur: Fenrir
Game: FFXI
Posts: 354
By Fenrir.Divinian 2016-01-17 19:27:48
any idea why this doesn't work? It doesn't seem to disable back slot
Thanks!
-- Used to disable slots for items such as Reraise Earring among other things
function slot_disabling()
if player.equipment.back == 'Aptitude Mantle +1' then
disable('back')
windower.add_to_chat(8,'CP Time!')
elseif player.equipment.right_ear == 'Reraise Earring' then
disable('right_ear')
windower.add_to_chat(8,'Reraise Earring equiped on right ear')
else
enable('back','right_ear')
end
end
I've never disabled slots in that way, so I can't speak to why its not working, but if you don't figure it out, you can always try what I use:
In sets I have:
Code sets.misc.CP=
{back={ name="Mecisto. Mantle", augments={'Cap. Point+38%','INT+1','DEF+6',}}}
In self-command functions I have:
Code if command == 'CP' then
equip(sets.misc.CP)
send_command('@wait .5;gs disable back')
end
if command == 'NoCP' then
enable('back')
end
I just make one macro for me and my mules that says:
/console gs c CP
/console send twaddle gs c CP
etc.
And another macro for for the command to re-enable the slot. Works every time.
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-01-17 20:05:15
any idea why this doesn't work? It doesn't seem to disable back slot
Thanks!
-- Used to disable slots for items such as Reraise Earring among other things
function slot_disabling()
if player.equipment.back == 'Aptitude Mantle +1' then
disable('back')
windower.add_to_chat(8,'CP Time!')
elseif player.equipment.right_ear == 'Reraise Earring' then
disable('right_ear')
windower.add_to_chat(8,'Reraise Earring equiped on right ear')
else
enable('back','right_ear')
end
end
It should work, my question would be where and when are you actually calling this function? The logic is also flawed, because if you equip your mantle and earring, only the back will ever be locked. If you equip your earring, then later equip your back, then actually use the earring, your earring slot will never be re-enabled until you take both your back and earring off.
Personally, I'm not a fan of enable/disable, because I don't have a way of printing a box to my screen to remind me I have a slot in such circumstance (and I've got a horrible memory). I write a rule in my gearswap to maintain the equipment, as long as it is manually equipped. Then you can manually unequip it at any time and the slot will return to normal.
I create a table of gear names (can put wherever else you declare variables) Code --For locking gear you equip manually, like enchanted items
lock_gear = S{"Vocation Ring","Capacity Ring","Warp Crudgel","Warp Ring","Mecisto. Mantle"}
Create a helper function to locate any of these pieces and what slot they are in (goes outside of any function, like at the end of your file) Code -- Takes a table of items, checks if they are equipped, and returns a table of slot and name of equipped gear
function check_equip(tbl)
local return_table = {}
for key,v in pairs(tbl) do
if table.contains(player.equipment,key) then
s,e = table.find(player.equipment,key)
return_table = set_combine(return_table,{[s]=e})
end
end
return return_table
end
and then call this function right before I equip my equipSet, Code equipSet = set_combine(equipSet, check_equip(lock_gear))
Shiva.Hiep
Serveur: Shiva
Game: FFXI
Posts: 669
By Shiva.Hiep 2016-01-18 09:49:23
Is there a way to equip a certain piece of gear during night time? I'm using a PDT set that currently caps at 50% using Umbra Cape w/o the night time bonus. I want my Hippomene Socks +1 to swap in during night time.
Shiva.Hiep
Serveur: Shiva
Game: FFXI
Posts: 669
By Shiva.Hiep 2016-01-18 17:37:17
Nvm I figured it out.
Cerberus.Jeffil
Serveur: Cerberus
Game: FFXI
Posts: 90
By Cerberus.Jeffil 2016-01-18 17:46:12
if salvage_assault_nyzul:contains(world.zone_id) then
equip(set_combine(yourIdleSet,{right_ring = "Balrahn's Ring"}))
end Let's say I want to use Balrahn's Ring as an idle piece only while doing salvage, assault, or nyzul isle. Are there already existing luas that demonstrate how to do this?
I prefer using IDs because I'd probably misspell something in a longer list so:
Code
salvage_assault_nyzul = S{73,74,75,76,55,56,63,66,69,77}
function aftercast(spell,action)
--Your normal stuff here
if salvage_assault_nyzul:contains(world.zone_id) then
equip(set_combine(yourIdleSet,{right_ring = "Balrahn's Ring"}))
end
end
IDs in that table should cover 4 remnants, ilrusi, lebros, training grounds, periqa, sanctum, and nyzul. Alternatively you could spell each one out i.e.:
Code
salvage_assault_nyzul = S{"Lebros Cavern","Mamool Ja Training Grounds"...etc}
Then use the line Code
if salvage_assault_nyzul:contains(world.zone) then
do stuff
end
Thanks so much! I will try this now and see if it works.
Leviathan.Frotaut
Serveur: Leviathan
Game: FFXI
Posts: 281
By Leviathan.Frotaut 2016-01-18 17:51:26
posted this in for dummies thread but this might be a more proper spot.
how do i fit Norifusa +1 into gearswap sets?
When i Write it like:
sets.TP.Norifusa +1 = {whatever gear }
i get in game error of:
'=' expected near '+'
what am i doing wrong?
Bismarck.Dunigs
Serveur: Bismarck
Game: FFXI
Posts: 83
By Bismarck.Dunigs 2016-01-18 18:00:04
Leviathan.Frotaut said: »posted this in for dummies thread but this might be a more proper spot.
how do i fit Norifusa +1 into gearswap sets?
When i Write it like:
sets.TP.Norifusa +1 = {whatever gear }
i get in game error of:
'=' expected near '+'
what am i doing wrong?
Table indices with a space need to be quoted: Code
sets.TP['Norifusa +1'] = {whatever gear}
Bismarck.Speedyjim
Serveur: Bismarck
Game: FFXI
Posts: 516
By Bismarck.Speedyjim 2016-01-18 18:08:21
Carbuncle.Akivatoo said: »Hi everyone,
i'm still looking for fix this two fonction.
-first fonction is for equip different cure set depend on target (self or other) Code ]function precast(spell,action)
if spell.english:startswith('Cure') and spell.target.name == player.name then
equip(sets.midcast.Cure.Self)
end
end Code sets.midcast.Cure =
{
ammo="Impatiens",
head="Rev. Coronet +1",
body={ name="Jumalik Mail", augments={'HP+50','Attack+15','Enmity+9','"Refresh"+2',}},
hands="Macabre Gaunt. +1",
legs={ name="Founder's Hose", augments={'MND+7','Mag. Acc.+10','Attack+10',}},
feet={ name="Odyssean Greaves", augments={'Potency of "Cure" effect received+6%','MND+2','Mag. Acc.+8','"Mag.Atk.Bns."+3',}},
neck="Incanter's Torque",
waist="Hachirin-no-obi",
left_ear="Nourish. Earring +1",
right_ear="Mendi. Earring",
left_ring="Vocane Ring",
right_ring="Evanescence Ring",
back="Solemnity Cape",
}
sets.midcast.Cure.Self = set_combine(sets.midcast.Cure, {waist="Gishdubar Sash", right_ear="Oneiros Earring", neck="Phalaina Locket"}) -Second fonction allow me to do only cure4 macro (cast 3 if 4 is in recast and 2 if 4 and 3 are on recast)
i don't see what is wrong
Code
function refine_various_spells(spell, action, spellMap, eventArgs)
cures = S{'Cure II','Cure III','Cure IV'}
if not cures:contains(spell.english) then
return
end
local newSpell = spell.english
local spell_recasts = windower.ffxi.get_spell_recasts()
local cancelling = 'All '..spell.english..' spells are on cooldown. Cancelling spell casting.'
if spell_recasts[spell.recast_id] > 0 then
if cures:contains(spell.english) then
if spell.english == 'Cure' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Cure IV' then
newSpell = 'Cure III'
elseif spell.english == 'Cure III' then
newSpell = 'Cure II'
end
end
end
if newSpell ~= spell.english then
send_command('@input /ma "'..newSpell..'" '..tostring(spell.target.raw))
eventArgs.cancel = true
return
end
end
btw i give this fonction very usefull for BLM to save macro space (this one work) Code -------------------------------------Aspir,Sleep/ga Nuke's refine rules (thanks Asura.Vafruvant for this code)-----------------------------------
function refine_various_spells(spell, action, spellMap, eventArgs)
aspirs = S{'Aspir','Aspir II','Aspir III'}
sleeps = S{'Sleep','Sleep II'}
sleepgas = S{'Sleepga','Sleepga II'}
nukes = S{'Fire', 'Blizzard', 'Aero', 'Stone', 'Thunder', 'Water',
'Fire II', 'Blizzard II', 'Aero II', 'Stone II', 'Thunder II', 'Water II',
'Fire III', 'Blizzard III', 'Aero III', 'Stone III', 'Thunder III', 'Water III',
'Fire IV', 'Blizzard IV', 'Aero IV', 'Stone IV', 'Thunder IV', 'Water IV',
'Fire V', 'Blizzard V', 'Aero V', 'Stone V', 'Thunder V', 'Water V',
'Fire VI', 'Blizzard VI', 'Aero VI', 'Stone VI', 'Thunder VI', 'Water VI',
'Firaga', 'Blizzaga', 'Aeroga', 'Stonega', 'Thundaga', 'Waterga',
'Firaga II', 'Blizzaga II', 'Aeroga II', 'Stonega II', 'Thundaga II', 'Waterga II',
'Firaga III', 'Blizzaga III', 'Aeroga III', 'Stonega III', 'Thundaga III', 'Waterga III',
'Firaja', 'Blizzaja', 'Aeroja', 'Stoneja', 'Thundaja', 'Waterja',
}
if not sleepgas:contains(spell.english) and not sleeps:contains(spell.english) and not aspirs:contains(spell.english) and not nukes:contains(spell.english)then
return
end
local newSpell = spell.english
local spell_recasts = windower.ffxi.get_spell_recasts()
local cancelling = 'All '..spell.english..' spells are on cooldown. Cancelling spell casting.'
if spell_recasts[spell.recast_id] > 0 then
if aspirs:contains(spell.english) then
if spell.english == 'Aspir' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Aspir II' then
newSpell = 'Aspir'
elseif spell.english == 'Aspir III' then
newSpell = 'Aspir II'
end
elseif sleeps:contains(spell.english) then
if spell.english == 'Sleep' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Sleep II' then
newSpell = 'Sleep'
end
elseif sleepgas:contains(spell.english) then
if spell.english == 'Sleepga II' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Sleepga' then
newSpell = 'Sleepga II'
end
elseif nukes:contains(spell.english) then
if spell.english == 'Fire' then
eventArgs.cancel = true
return
elseif spell.english == 'Fire VI' then
newSpell = 'Fire V'
elseif spell.english == 'Fire IV' then
newSpell = 'Fire III'
elseif spell.english == 'Fire II' then
newSpell = 'Fire'
elseif spell.english == 'Firaja' then
newSpell = 'Firaga III'
elseif spell.english == 'Firaga II' then
newSpell = 'Firaga'
end
if spell.english == 'Blizzard' then
eventArgs.cancel = true
return
elseif spell.english == 'Blizzard VI' then
newSpell = 'Blizzard V'
elseif spell.english == 'Blizzard IV' then
newSpell = 'Blizzard III'
elseif spell.english == 'Blizzard II' then
newSpell = 'Blizzard'
elseif spell.english == 'Blizzaja' then
newSpell = 'Blizzaga III'
elseif spell.english == 'Blizzaga II' then
newSpell = 'Blizzaga'
end
if spell.english == 'Aero' then
eventArgs.cancel = true
return
elseif spell.english == 'Aero VI' then
newSpell = 'Aero V'
elseif spell.english == 'Aero IV' then
newSpell = 'Aero III'
elseif spell.english == 'Aero II' then
newSpell = 'Aero'
elseif spell.english == 'Aeroja' then
newSpell = 'Aeroga III'
elseif spell.english == 'Aeroga II' then
newSpell = 'Aeroga'
end
if spell.english == 'Stone' then
eventArgs.cancel = true
return
elseif spell.english == 'Stone VI' then
newSpell = 'Stone V'
elseif spell.english == 'Stone IV' then
newSpell = 'Stone III'
elseif spell.english == 'Stone II' then
newSpell = 'Stone'
elseif spell.english == 'Stoneja' then
newSpell = 'Stonega III'
elseif spell.english == 'Stonega II' then
newSpell = 'Stonega'
end
if spell.english == 'Thunder' then
eventArgs.cancel = true
return
elseif spell.english == 'Thunder VI' then
newSpell = 'Thunder V'
elseif spell.english == 'Thunder IV' then
newSpell = 'Thunder III'
elseif spell.english == 'Thunder II' then
newSpell = 'Thunder'
elseif spell.english == 'Thundaja' then
newSpell = 'Thundaga III'
elseif spell.english == 'Thundaga II' then
newSpell = 'Thundaga'
end
if spell.english == 'Water' then
eventArgs.cancel = true
return
elseif spell.english == 'Water VI' then
newSpell = 'Water V'
elseif spell.english == 'Water IV' then
newSpell = 'Water III'
elseif spell.english == 'Water II' then
newSpell = 'Water'
elseif spell.english == 'Waterja' then
newSpell = 'Waterga III'
elseif spell.english == 'Waterga II' then
newSpell = 'Waterga'
end
end
end
if newSpell ~= spell.english then
send_command('@input /ma "'..newSpell..'" '..tostring(spell.target.raw))
eventArgs.cancel = true
return
end
end
Can you help me ? If it helps, this is how my healing set is written in my BLU lua.
Code if spellMap == 'Healing' and spell.target.type == 'SELF' and sets.self_healing then
equip(sets.self_healing)
end Code sets.self_healing = {ring1="Kunaji Ring",ring2="Asklepian Ring",waist="Gishdubar Sash"}
Leviathan.Frotaut
Serveur: Leviathan
Game: FFXI
Posts: 281
By Leviathan.Frotaut 2016-01-18 18:09:28
working as intended ty so much.
Carbuncle.Akivatoo
Serveur: Carbuncle
Game: FFXI
Posts: 263
By Carbuncle.Akivatoo 2016-01-19 04:40:56
Bismarck.Speedyjim said: »Carbuncle.Akivatoo said: »Hi everyone,
i'm still looking for fix this two fonction.
-first fonction is for equip different cure set depend on target (self or other) Code ]function precast(spell,action)
if spell.english:startswith('Cure') and spell.target.name == player.name then
equip(sets.midcast.Cure.Self)
end
end Code sets.midcast.Cure =
{
ammo="Impatiens",
head="Rev. Coronet +1",
body={ name="Jumalik Mail", augments={'HP+50','Attack+15','Enmity+9','"Refresh"+2',}},
hands="Macabre Gaunt. +1",
legs={ name="Founder's Hose", augments={'MND+7','Mag. Acc.+10','Attack+10',}},
feet={ name="Odyssean Greaves", augments={'Potency of "Cure" effect received+6%','MND+2','Mag. Acc.+8','"Mag.Atk.Bns."+3',}},
neck="Incanter's Torque",
waist="Hachirin-no-obi",
left_ear="Nourish. Earring +1",
right_ear="Mendi. Earring",
left_ring="Vocane Ring",
right_ring="Evanescence Ring",
back="Solemnity Cape",
}
sets.midcast.Cure.Self = set_combine(sets.midcast.Cure, {waist="Gishdubar Sash", right_ear="Oneiros Earring", neck="Phalaina Locket"}) -Second fonction allow me to do only cure4 macro (cast 3 if 4 is in recast and 2 if 4 and 3 are on recast)
i don't see what is wrong
Code
function refine_various_spells(spell, action, spellMap, eventArgs)
cures = S{'Cure II','Cure III','Cure IV'}
if not cures:contains(spell.english) then
return
end
local newSpell = spell.english
local spell_recasts = windower.ffxi.get_spell_recasts()
local cancelling = 'All '..spell.english..' spells are on cooldown. Cancelling spell casting.'
if spell_recasts[spell.recast_id] > 0 then
if cures:contains(spell.english) then
if spell.english == 'Cure' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Cure IV' then
newSpell = 'Cure III'
elseif spell.english == 'Cure III' then
newSpell = 'Cure II'
end
end
end
if newSpell ~= spell.english then
send_command('@input /ma "'..newSpell..'" '..tostring(spell.target.raw))
eventArgs.cancel = true
return
end
end
btw i give this fonction very usefull for BLM to save macro space (this one work) Code -------------------------------------Aspir,Sleep/ga Nuke's refine rules (thanks Asura.Vafruvant for this code)-----------------------------------
function refine_various_spells(spell, action, spellMap, eventArgs)
aspirs = S{'Aspir','Aspir II','Aspir III'}
sleeps = S{'Sleep','Sleep II'}
sleepgas = S{'Sleepga','Sleepga II'}
nukes = S{'Fire', 'Blizzard', 'Aero', 'Stone', 'Thunder', 'Water',
'Fire II', 'Blizzard II', 'Aero II', 'Stone II', 'Thunder II', 'Water II',
'Fire III', 'Blizzard III', 'Aero III', 'Stone III', 'Thunder III', 'Water III',
'Fire IV', 'Blizzard IV', 'Aero IV', 'Stone IV', 'Thunder IV', 'Water IV',
'Fire V', 'Blizzard V', 'Aero V', 'Stone V', 'Thunder V', 'Water V',
'Fire VI', 'Blizzard VI', 'Aero VI', 'Stone VI', 'Thunder VI', 'Water VI',
'Firaga', 'Blizzaga', 'Aeroga', 'Stonega', 'Thundaga', 'Waterga',
'Firaga II', 'Blizzaga II', 'Aeroga II', 'Stonega II', 'Thundaga II', 'Waterga II',
'Firaga III', 'Blizzaga III', 'Aeroga III', 'Stonega III', 'Thundaga III', 'Waterga III',
'Firaja', 'Blizzaja', 'Aeroja', 'Stoneja', 'Thundaja', 'Waterja',
}
if not sleepgas:contains(spell.english) and not sleeps:contains(spell.english) and not aspirs:contains(spell.english) and not nukes:contains(spell.english)then
return
end
local newSpell = spell.english
local spell_recasts = windower.ffxi.get_spell_recasts()
local cancelling = 'All '..spell.english..' spells are on cooldown. Cancelling spell casting.'
if spell_recasts[spell.recast_id] > 0 then
if aspirs:contains(spell.english) then
if spell.english == 'Aspir' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Aspir II' then
newSpell = 'Aspir'
elseif spell.english == 'Aspir III' then
newSpell = 'Aspir II'
end
elseif sleeps:contains(spell.english) then
if spell.english == 'Sleep' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Sleep II' then
newSpell = 'Sleep'
end
elseif sleepgas:contains(spell.english) then
if spell.english == 'Sleepga II' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Sleepga' then
newSpell = 'Sleepga II'
end
elseif nukes:contains(spell.english) then
if spell.english == 'Fire' then
eventArgs.cancel = true
return
elseif spell.english == 'Fire VI' then
newSpell = 'Fire V'
elseif spell.english == 'Fire IV' then
newSpell = 'Fire III'
elseif spell.english == 'Fire II' then
newSpell = 'Fire'
elseif spell.english == 'Firaja' then
newSpell = 'Firaga III'
elseif spell.english == 'Firaga II' then
newSpell = 'Firaga'
end
if spell.english == 'Blizzard' then
eventArgs.cancel = true
return
elseif spell.english == 'Blizzard VI' then
newSpell = 'Blizzard V'
elseif spell.english == 'Blizzard IV' then
newSpell = 'Blizzard III'
elseif spell.english == 'Blizzard II' then
newSpell = 'Blizzard'
elseif spell.english == 'Blizzaja' then
newSpell = 'Blizzaga III'
elseif spell.english == 'Blizzaga II' then
newSpell = 'Blizzaga'
end
if spell.english == 'Aero' then
eventArgs.cancel = true
return
elseif spell.english == 'Aero VI' then
newSpell = 'Aero V'
elseif spell.english == 'Aero IV' then
newSpell = 'Aero III'
elseif spell.english == 'Aero II' then
newSpell = 'Aero'
elseif spell.english == 'Aeroja' then
newSpell = 'Aeroga III'
elseif spell.english == 'Aeroga II' then
newSpell = 'Aeroga'
end
if spell.english == 'Stone' then
eventArgs.cancel = true
return
elseif spell.english == 'Stone VI' then
newSpell = 'Stone V'
elseif spell.english == 'Stone IV' then
newSpell = 'Stone III'
elseif spell.english == 'Stone II' then
newSpell = 'Stone'
elseif spell.english == 'Stoneja' then
newSpell = 'Stonega III'
elseif spell.english == 'Stonega II' then
newSpell = 'Stonega'
end
if spell.english == 'Thunder' then
eventArgs.cancel = true
return
elseif spell.english == 'Thunder VI' then
newSpell = 'Thunder V'
elseif spell.english == 'Thunder IV' then
newSpell = 'Thunder III'
elseif spell.english == 'Thunder II' then
newSpell = 'Thunder'
elseif spell.english == 'Thundaja' then
newSpell = 'Thundaga III'
elseif spell.english == 'Thundaga II' then
newSpell = 'Thundaga'
end
if spell.english == 'Water' then
eventArgs.cancel = true
return
elseif spell.english == 'Water VI' then
newSpell = 'Water V'
elseif spell.english == 'Water IV' then
newSpell = 'Water III'
elseif spell.english == 'Water II' then
newSpell = 'Water'
elseif spell.english == 'Waterja' then
newSpell = 'Waterga III'
elseif spell.english == 'Waterga II' then
newSpell = 'Waterga'
end
end
end
if newSpell ~= spell.english then
send_command('@input /ma "'..newSpell..'" '..tostring(spell.target.raw))
eventArgs.cancel = true
return
end
end
Can you help me ? If it helps, this is how my healing set is written in my BLU lua.
Code if spellMap == 'Healing' and spell.target.type == 'SELF' and sets.self_healing then
equip(sets.self_healing)
end Code sets.self_healing = {ring1="Kunaji Ring",ring2="Asklepian Ring",waist="Gishdubar Sash"} thx for hellp, i'm gonna try it asap
Serveur: Shiva
Game: FFXI
Posts: 54
By Shiva.Nokturnall 2016-01-19 18:56:50
Anyone know why this auto-presto (DNC ability) function doesn't work?
function auto_presto(spell)
if spell.type == 'Step' then
local allRecasts = windower.ffxi.get_ability_recasts()
local prestoCooldown = allRecasts[236]
local under5FMs = not buffactive['Finishing Move 5'] and not buffactive['Finishing Move (6+)']
if prestoCooldown < 1 and under5FMs then
cast_delay(1.1)
send_command('input /ja "Presto" <me>')
end
end
end
Carbuncle.Akivatoo
Serveur: Carbuncle
Game: FFXI
Posts: 263
By Carbuncle.Akivatoo 2016-01-20 09:54:41
Carbuncle.Akivatoo said: »Bismarck.Speedyjim said: »Carbuncle.Akivatoo said: »Hi everyone,
i'm still looking for fix this two fonction.
-first fonction is for equip different cure set depend on target (self or other) Code ]function precast(spell,action)
if spell.english:startswith('Cure') and spell.target.name == player.name then
equip(sets.midcast.Cure.Self)
end
end Code sets.midcast.Cure =
{
ammo="Impatiens",
head="Rev. Coronet +1",
body={ name="Jumalik Mail", augments={'HP+50','Attack+15','Enmity+9','"Refresh"+2',}},
hands="Macabre Gaunt. +1",
legs={ name="Founder's Hose", augments={'MND+7','Mag. Acc.+10','Attack+10',}},
feet={ name="Odyssean Greaves", augments={'Potency of "Cure" effect received+6%','MND+2','Mag. Acc.+8','"Mag.Atk.Bns."+3',}},
neck="Incanter's Torque",
waist="Hachirin-no-obi",
left_ear="Nourish. Earring +1",
right_ear="Mendi. Earring",
left_ring="Vocane Ring",
right_ring="Evanescence Ring",
back="Solemnity Cape",
}
sets.midcast.Cure.Self = set_combine(sets.midcast.Cure, {waist="Gishdubar Sash", right_ear="Oneiros Earring", neck="Phalaina Locket"}) -Second fonction allow me to do only cure4 macro (cast 3 if 4 is in recast and 2 if 4 and 3 are on recast)
i don't see what is wrong
Code
function refine_various_spells(spell, action, spellMap, eventArgs)
cures = S{'Cure II','Cure III','Cure IV'}
if not cures:contains(spell.english) then
return
end
local newSpell = spell.english
local spell_recasts = windower.ffxi.get_spell_recasts()
local cancelling = 'All '..spell.english..' spells are on cooldown. Cancelling spell casting.'
if spell_recasts[spell.recast_id] > 0 then
if cures:contains(spell.english) then
if spell.english == 'Cure' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Cure IV' then
newSpell = 'Cure III'
elseif spell.english == 'Cure III' then
newSpell = 'Cure II'
end
end
end
if newSpell ~= spell.english then
send_command('@input /ma "'..newSpell..'" '..tostring(spell.target.raw))
eventArgs.cancel = true
return
end
end
btw i give this fonction very usefull for BLM to save macro space (this one work) Code -------------------------------------Aspir,Sleep/ga Nuke's refine rules (thanks Asura.Vafruvant for this code)-----------------------------------
function refine_various_spells(spell, action, spellMap, eventArgs)
aspirs = S{'Aspir','Aspir II','Aspir III'}
sleeps = S{'Sleep','Sleep II'}
sleepgas = S{'Sleepga','Sleepga II'}
nukes = S{'Fire', 'Blizzard', 'Aero', 'Stone', 'Thunder', 'Water',
'Fire II', 'Blizzard II', 'Aero II', 'Stone II', 'Thunder II', 'Water II',
'Fire III', 'Blizzard III', 'Aero III', 'Stone III', 'Thunder III', 'Water III',
'Fire IV', 'Blizzard IV', 'Aero IV', 'Stone IV', 'Thunder IV', 'Water IV',
'Fire V', 'Blizzard V', 'Aero V', 'Stone V', 'Thunder V', 'Water V',
'Fire VI', 'Blizzard VI', 'Aero VI', 'Stone VI', 'Thunder VI', 'Water VI',
'Firaga', 'Blizzaga', 'Aeroga', 'Stonega', 'Thundaga', 'Waterga',
'Firaga II', 'Blizzaga II', 'Aeroga II', 'Stonega II', 'Thundaga II', 'Waterga II',
'Firaga III', 'Blizzaga III', 'Aeroga III', 'Stonega III', 'Thundaga III', 'Waterga III',
'Firaja', 'Blizzaja', 'Aeroja', 'Stoneja', 'Thundaja', 'Waterja',
}
if not sleepgas:contains(spell.english) and not sleeps:contains(spell.english) and not aspirs:contains(spell.english) and not nukes:contains(spell.english)then
return
end
local newSpell = spell.english
local spell_recasts = windower.ffxi.get_spell_recasts()
local cancelling = 'All '..spell.english..' spells are on cooldown. Cancelling spell casting.'
if spell_recasts[spell.recast_id] > 0 then
if aspirs:contains(spell.english) then
if spell.english == 'Aspir' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Aspir II' then
newSpell = 'Aspir'
elseif spell.english == 'Aspir III' then
newSpell = 'Aspir II'
end
elseif sleeps:contains(spell.english) then
if spell.english == 'Sleep' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Sleep II' then
newSpell = 'Sleep'
end
elseif sleepgas:contains(spell.english) then
if spell.english == 'Sleepga II' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Sleepga' then
newSpell = 'Sleepga II'
end
elseif nukes:contains(spell.english) then
if spell.english == 'Fire' then
eventArgs.cancel = true
return
elseif spell.english == 'Fire VI' then
newSpell = 'Fire V'
elseif spell.english == 'Fire IV' then
newSpell = 'Fire III'
elseif spell.english == 'Fire II' then
newSpell = 'Fire'
elseif spell.english == 'Firaja' then
newSpell = 'Firaga III'
elseif spell.english == 'Firaga II' then
newSpell = 'Firaga'
end
if spell.english == 'Blizzard' then
eventArgs.cancel = true
return
elseif spell.english == 'Blizzard VI' then
newSpell = 'Blizzard V'
elseif spell.english == 'Blizzard IV' then
newSpell = 'Blizzard III'
elseif spell.english == 'Blizzard II' then
newSpell = 'Blizzard'
elseif spell.english == 'Blizzaja' then
newSpell = 'Blizzaga III'
elseif spell.english == 'Blizzaga II' then
newSpell = 'Blizzaga'
end
if spell.english == 'Aero' then
eventArgs.cancel = true
return
elseif spell.english == 'Aero VI' then
newSpell = 'Aero V'
elseif spell.english == 'Aero IV' then
newSpell = 'Aero III'
elseif spell.english == 'Aero II' then
newSpell = 'Aero'
elseif spell.english == 'Aeroja' then
newSpell = 'Aeroga III'
elseif spell.english == 'Aeroga II' then
newSpell = 'Aeroga'
end
if spell.english == 'Stone' then
eventArgs.cancel = true
return
elseif spell.english == 'Stone VI' then
newSpell = 'Stone V'
elseif spell.english == 'Stone IV' then
newSpell = 'Stone III'
elseif spell.english == 'Stone II' then
newSpell = 'Stone'
elseif spell.english == 'Stoneja' then
newSpell = 'Stonega III'
elseif spell.english == 'Stonega II' then
newSpell = 'Stonega'
end
if spell.english == 'Thunder' then
eventArgs.cancel = true
return
elseif spell.english == 'Thunder VI' then
newSpell = 'Thunder V'
elseif spell.english == 'Thunder IV' then
newSpell = 'Thunder III'
elseif spell.english == 'Thunder II' then
newSpell = 'Thunder'
elseif spell.english == 'Thundaja' then
newSpell = 'Thundaga III'
elseif spell.english == 'Thundaga II' then
newSpell = 'Thundaga'
end
if spell.english == 'Water' then
eventArgs.cancel = true
return
elseif spell.english == 'Water VI' then
newSpell = 'Water V'
elseif spell.english == 'Water IV' then
newSpell = 'Water III'
elseif spell.english == 'Water II' then
newSpell = 'Water'
elseif spell.english == 'Waterja' then
newSpell = 'Waterga III'
elseif spell.english == 'Waterga II' then
newSpell = 'Waterga'
end
end
end
if newSpell ~= spell.english then
send_command('@input /ma "'..newSpell..'" '..tostring(spell.target.raw))
eventArgs.cancel = true
return
end
end
Can you help me ? If it helps, this is how my healing set is written in my BLU lua.
Code if spellMap == 'Healing' and spell.target.type == 'SELF' and sets.self_healing then
equip(sets.self_healing)
end Code sets.self_healing = {ring1="Kunaji Ring",ring2="Asklepian Ring",waist="Gishdubar Sash"} thx for hellp, i'm gonna try it asap
ok that didn't work ><
Leviathan.Stamos
Serveur: Leviathan
Game: FFXI
Posts: 1239
By Leviathan.Stamos 2016-01-20 23:59:06
Pastebin
Having issues with the Deathaspir set. The rest is working fine, but it still casts in regular aspir set
Bismarck.Speedyjim
Serveur: Bismarck
Game: FFXI
Posts: 516
By Bismarck.Speedyjim 2016-01-21 00:10:42
Pastebin
Having issues with the Deathaspir set. The rest is working fine, but it still casts in regular aspir set I suspect your sets.Midcast.deathaspir is incorrect. Though someone told me naming an array the same as the spell causes issues, you could try naming the set instead sets.Midcast.Death.Aspir
Someone more knowledgeable can chime in if that doesn't work.
Bismarck.Dunigs
Serveur: Bismarck
Game: FFXI
Posts: 83
By Bismarck.Dunigs 2016-01-21 10:21:26
Pastebin
Having issues with the Deathaspir set. The rest is working fine, but it still casts in regular aspir set
On phone so forgive me if this is wrong, but it looks like you're overwriting the aspir rule at the very end. Your logic for handling death aspir is tied up in a large else if tree...which you then close. Then near the end you say "if sets.midcast [spell.english]'..so it sees sets.midcast.Aspir and goes with that since that statement came later chronologically.
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.
|
|