Post deleted by User.
Gearswap Support Thread |
||
Gearswap Support Thread
Awesome thank you for your help! I will mess with it when I can.
hobo said: » I have an issue with the obi rule on my corsair, probably something dumb as usual. Did I just make a simple mistake somewhere when I stole this? Thanks in advance for any help Code sets.Obi = {waist="Hachirin-no-Obi"} function job_post_precast(spell, action, spellMap, eventArgs) -- Equip obi if weather/day matches for WS/Quick Draw. if spell.type == 'WeaponSkill' or spell.type == 'CorsairShot' then if spell.english == 'Leaden Salute' and (world.weather_element == 'Dark' or world.day_element == 'Dark') then equip(sets.Obi) elseif spell.english == 'Wildfire' and (world.weather_element == 'Fire' or world.day_element == 'Fire') then equip(sets.Obi) elseif spell.type == 'CorsairShot' and (spell.element == world.weather_element or spell.element == world.day_element) then equip(sets.Obi) end end end Do you have a precast for your WS? Or is all you're equipping for leaden/wildfire the obi? This is mines: Code if (spell.name == "Leaden Salute" or spell.name == "Wildfire") and (spell.element == world.day_element or spell.element == world.weather_element) then equip({waist="Hachirin-no-Obi"}) end Asura.Patriclis said: » Squinookle said: » Hi! Ever since adding a new augment on my Ogma's Capes gearswap stopped equipping them. Can anyone help me find out why? New augments are added from the new ambuscade item Code { name="Ogma's cape", augments={'STR+20','Accuracy+20','Attack+20','"Dbl. Atk."+10','STR+10', 'Parrying rate +1%',}}, Give this a shot for the first cape. if you have 2 sources for a specific stat (in this case you have STR from thread and from dye) you have to put them separately. Equipping the gear and typing 'gs export' (no quotes) into the windower console is a good way to export an entire set of gear, including augments. The exported set will show up in windower/addons/gearswap/data/export. This will be a -very- important thing when you get to Oseem augments since he can put 1-30 attack on 'slot 1' and another 1-15 attack on 'slot 5' and there's no way to tell how much attack is from which slot other than using //gs export. I'm not sure what's wrong with the second cape since I've never used the eva/mag.eva augment (though i have my guesses) BUT just use gs export and it will solve your problem. Ragnarok.Lockfort said: » hobo said: » I have an issue with the obi rule on my corsair, probably something dumb as usual. Did I just make a simple mistake somewhere when I stole this? Thanks in advance for any help Code sets.Obi = {waist="Hachirin-no-Obi"} function job_post_precast(spell, action, spellMap, eventArgs) -- Equip obi if weather/day matches for WS/Quick Draw. if spell.type == 'WeaponSkill' or spell.type == 'CorsairShot' then if spell.english == 'Leaden Salute' and (world.weather_element == 'Dark' or world.day_element == 'Dark') then equip(sets.Obi) elseif spell.english == 'Wildfire' and (world.weather_element == 'Fire' or world.day_element == 'Fire') then equip(sets.Obi) elseif spell.type == 'CorsairShot' and (spell.element == world.weather_element or spell.element == world.day_element) then equip(sets.Obi) end end end Do you have a precast for your WS? Or is all you're equipping for leaden/wildfire the obi? This is mines: Code if (spell.name == "Leaden Salute" or spell.name == "Wildfire") and (spell.element == world.day_element or spell.element == world.weather_element) then equip({waist="Hachirin-no-Obi"}) end I have a precast for the ws, just didn't quote it. I might just have to change luas instead of fixing this mess This began appearing in my RUN lua after I set a few priorities. How do I fix this?
![]() Hello, I was wondering is it possible to have a lua change macro books based on the weapon you currently have equipped?
I see in the lua there's ways to set default macro books based on subjobs, is there a way to swap based on weapon (or weapon type), so when I change from GS to Scythe mid fight, it automatically changes the Macro book? (I have separate books for scythe and GS weapon skills) Thanks! Awesome! Thanks so much I'll be giving it a try tonight! Weirdly enough Alt + ` is already the key I binded to GS c C17 to swap weapons! hopefully I can build your code in so they work together in one key!
Trying the script the MACRO command doesn't seem to work, I had to delete the existing subjob default macro selection lines as that was clashing with it, and the lua loads with no errors. But whether I bind the MACRO command or type it in directly (//gs c MACRO), it doesn't seem to switch the macro books, even after I manually change the weapons. Any ideas what could be going wrong? (I have already changed the books and sets to my correct numbers)
Thanks in advance! Asura.Patriclis said: » Bismarck.Speedyjim said: » This began appearing in my RUN lua after I set a few priorities. How do I fix this? ![]() Nobody will be able to really help you since that error could refer to 1 of a billion places in your code. Try posting your lua (use code blocks, i.e surround the code with [ code ] [ /code ] (no spaces)) and a better description of -when- that error occurs. (ie. when you try changing into idle? when casting any spell? using a weaponskill?) Just posting a generic-*** error message gives us nothing to go on. Message appears when I do a validate check. I've noticed this since I set priority swaps in certain sets. I think it may be related to my aliases. Thank you for your time. The priority system works with lines of gear like your example above. It just for some reason bugs when there's an alias present. When I use /debugmode, it says that my "alias_piece_of_gear" didn't equip. There must be a different way to code it.
Looks like gearswap is only working for Utsusemi:San,When i cast Utsusemi: Ichi or Ni gearswap doesn't work, It won't change Precast and midcast gear. Any idea why is it working fine for San and not ichi/ni?
Here's my file: Code -- Initialization function for this job file. function get_sets() mote_include_version = 2 -- Load and initialize the include file. include('Mote-Include.lua') end -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked. function job_setup() state.Buff.Migawari = buffactive.migawari or false state.Buff.Doom = buffactive.doom or false state.Buff.Yonin = buffactive.Yonin or false state.Buff.Innin = buffactive.Innin or false state.Buff.Futae = buffactive.Futae or false determine_haste_group() end ------------------------------------------------------------------------------------------------------------------- -- User setup functions for this job. Recommend that these be overridden in a sidecar file. ------------------------------------------------------------------------------------------------------------------- -- Setup vars that are user-dependent. Can override this function in a sidecar file. function user_setup() state.OffenseMode:options('Normal', 'Acc') state.HybridMode:options('Normal', 'Evasion', 'PDT') state.WeaponskillMode:options('Normal', 'Acc', 'Mod') state.CastingMode:options('Normal', 'Resistant') state.PhysicalDefenseMode:options('PDT', 'Evasion') gear.MovementFeet = {name="Danzo Sune-ate"} gear.DayFeet = "Danzo Sune-ate" gear.NightFeet = "Ninja Kyahan" send_command('wait 6;input /lockstyleset 98') select_movement_feet() select_default_macro_book(1, 3) end -- Define sets and vars used by this job file. function init_gear_sets() -------------------------------------- -- Precast sets -------------------------------------- -- Precast sets to enhance JAs sets.precast.JA['Mijin Gakure'] = {legs="Mochizuki Hakama"} sets.precast.JA['Futae'] = {legs="Iga Tekko +2"} sets.precast.JA['Sange'] = {legs="Mochizuki Chainmail"} -- Waltz set (chr and vit) sets.precast.Waltz = {ammo="Sonia's Plectrum", head="Mummu bonnet +1",ear1="Genmei earring",ear2="Odnowa earring +1", body="Reiki osode",hands="Buremte Gloves",ring1="Spiral Ring", back="Iximulew Cape",waist="Caudata Belt",legs="Nahtirah Trousers",feet="Otronif Boots +1"} -- Uk'uxkaj Cap, Daihanshi Habaki -- Don't need any special gear for Healing Waltz. sets.precast.Waltz['Healing Waltz'] = {} -- Set for acc on steps, since Yonin drops acc a fair bit sets.precast.Step = { head="Ryuo somen",neck="Sanctity Necklace", body="Adhemar jacket",hands={ name="Herculean Gloves", augments={'Accuracy+24 Attack+24','Crit.hit rate+2','STR+9','Accuracy+8','Attack+15',}},ring1="Patricius Ring", back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},waist="Kentarch Belt +1",legs="Hizamaru hizayoroi +1",feet="Mummu gamashes +1"} sets.precast.Flourish1 = {waist="Chaac Belt"} -- Fast cast sets for spells sets.precast.FC = {ammo="Impatiens", head="Herculean helm",neck="Orunmila's torque",ear2="Loquacious Earring",ear1="Etiolation Earring", body="",hands="Leyline Gloves",ring1="Prolix Ring",ring2="Kishar ring", back="Swith Cape",waist="Witful Belt",legs="",feet=""} sets.precast.FC.Utsusemi = {ammo="Impatiens", head="Herculean helm",neck="Magoraga beads",ear2="Loquacious Earring",ear1="Etiolation Earring", body="Mochizuki Chainmail +1",hands="Leyline Gloves",ring1="Prolix Ring",ring2="Kishar ring", back="Swith Cape",waist="Witful Belt",legs="",feet=""} -- Snapshot for ranged sets.precast.RA = {hands="Adhemar wristbands",legs="Adhemar kecks",feet="Adhemar gamashes"} -- Weaponskill sets -- Default set for any weaponskill that isn't any more specifically defined sets.precast.WS = {ammo="Seething bomblet +1", head="Adhemar bonnet",neck="Fotia gorget",ear1="Ishvara Earring",ear2="Brutal Earring", body="Adhemar jacket",hands={ name="Herculean Gloves", augments={'Accuracy+24 Attack+24','Crit.hit rate+2','STR+9','Accuracy+8','Attack+15',}},ring1="Ilabrat Ring",ring2="Epona's Ring", back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},waist="Fotia belt",legs="Samnuha tights", feet={ name="Herculean Boots", augments={'Accuracy+21 Attack+21','"Triple Atk."+2','STR+5','Attack+13',}}} sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Seething bomblet +1",hands={ name="Herculean Gloves", augments={'Accuracy+24 Attack+24','Crit.hit rate+2','STR+9','Accuracy+8','Attack+15',}}, back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}}}) -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found. sets.precast.WS['Blade: Jin'] = {ammo="Seething bomblet +1", head="Adhemar bonnet",neck="Fotia gorget",ear1="Ishvara Earring",ear2="Brutal Earring", body="Abnoba kaftan",hands={ name="Herculean Gloves", augments={'Accuracy+24 Attack+24','Crit.hit rate+2','STR+9','Accuracy+8','Attack+15',}},ring1="Ilabrat Ring",ring2="Epona's Ring", back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},waist="Fotia belt",legs="Samnuha tights", feet={ name="Herculean Boots", augments={'Accuracy+21 Attack+21','"Triple Atk."+2','STR+5','Attack+13',}}} sets.precast.WS['Blade: Hi'] = {ammo="Seething bomblet +1", head="Adhemar bonnet",neck="Fotia gorget",ear1="Ishvara Earring",ear2="Brutal Earring", body="Abnoba kaftan",hands="Kobo kote",ring1="Ilabrat Ring",ring2="Epona's Ring", back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},waist="Fotia belt",legs="Samnuha tights", feet={ name="Herculean Boots", augments={'Accuracy+21 Attack+21','"Triple Atk."+2','STR+5','Attack+13',}}} sets.precast.WS['Blade: Shun'] = {ammo="Seething bomblet +1", head="Adhemar bonnet",neck="Fotia gorget",ear1="Ishvara Earring",ear2="Brutal Earring", body="Adhemar jacket",hands="Adhemar wristbands",ring1="Ilabrat Ring",ring2="Epona's Ring", back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},waist="Fotia belt",legs="Samnuha tights", feet={ name="Herculean Boots", augments={'Attack+29','Weapon skill damage +4%','DEX+10',}}} sets.precast.WS['Aeolian Edge'] = {ammo="Seething bomblet +1", head={ name="Herculean Helm", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','Crit. hit damage +1%','INT+10','Mag. Acc.+1','"Mag.Atk.Bns."+12',}},neck="Sanctity necklace",ear1="Friomisi Earring",ear2="Hecate's Earring", body={ name="Herculean Vest", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','Magic burst dmg.+3%','Mag. Acc.+14','"Mag.Atk.Bns."+12',}},hands={ name="Herculean Gloves", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Crit. hit damage +2%','"Mag.Atk.Bns."+11',}}, ring1="Acumen Ring",ring2="Dingir Ring",back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},waist="Eschan stone", legs={ name="Herculean Trousers", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','Phys. dmg. taken -1%','STR+5','Mag. Acc.+10','"Mag.Atk.Bns."+15',}}, feet={ name="Herculean Boots", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','"Fast Cast"+1','STR+9','Mag. Acc.+6','"Mag.Atk.Bns."+14',}}} -------------------------------------- -- Midcast sets -------------------------------------- sets.midcast.FastRecast = {ammo="Impatiens", head="Herculean helm",neck="Orunmila's torque",ear2="Loquacious Earring",ear1="Etiolation Earring", body="",hands="Leyline Gloves",ring1="Prolix Ring", back="Swith Cape",waist="Witful Belt",legs="Lengo Pants",feet="Amalric nails"} sets.midcast.Utsusemi = {ammo="Impatiens", head="Herculean helm",neck="Orunmila's torque",ear2="Loquacious Earring",ear1="Etiolation Earring", body="Mochizuki Chainmail +1",hands="Mochizuki tekko +1",ring1="Prolix Ring", back="Andartia's Mantle",waist="Witful Belt",legs="Lengo Pants",feet="Hattori Kyahan +1"} sets.midcast.ElementalNinjutsu = {ammo="Seething bomblet +1", head={ name="Herculean Helm", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','Crit. hit damage +1%','INT+10','Mag. Acc.+1','"Mag.Atk.Bns."+12',}},neck="Sanctity necklace",ear1="Friomisi Earring",ear2="Hecate's Earring", body={ name="Herculean Vest", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','Magic burst dmg.+3%','Mag. Acc.+14','"Mag.Atk.Bns."+12',}},hands="Mochizuki tekko +1", ring1="Acumen Ring",ring2="Dingir Ring",back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},waist="Eschan stone", legs={ name="Herculean Trousers", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','Phys. dmg. taken -1%','STR+5','Mag. Acc.+10','"Mag.Atk.Bns."+15',}}, feet={ name="Herculean Boots", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','"Fast Cast"+1','STR+9','Mag. Acc.+6','"Mag.Atk.Bns."+14',}}} sets.midcast.ElementalNinjutsu.Resistant = {ammo="Seething bomblet +1", head={ name="Herculean Helm", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','Crit. hit damage +1%','INT+10','Mag. Acc.+1','"Mag.Atk.Bns."+12',}},neck="Sanctity necklace",ear1="Friomisi Earring",ear2="Hecate's Earring", body={ name="Herculean Vest", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','Magic burst dmg.+3%','Mag. Acc.+14','"Mag.Atk.Bns."+12',}},hands="Mochizuki tekko +1", ring1="Acumen Ring",ring2="Dingir Ring",back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},waist="Eschan stone", legs={ name="Herculean Trousers", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','Phys. dmg. taken -1%','STR+5','Mag. Acc.+10','"Mag.Atk.Bns."+15',}}, feet={ name="Herculean Boots", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','"Fast Cast"+1','STR+9','Mag. Acc.+6','"Mag.Atk.Bns."+14',}}} sets.midcast.NinjutsuDebuff = {ammo="Seething bomblet +1", head={ name="Herculean Helm", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','Crit. hit damage +1%','INT+10','Mag. Acc.+1','"Mag.Atk.Bns."+12',}},neck="Sanctity necklace",ear1="Friomisi Earring",ear2="Hecate's Earring", body={ name="Herculean Vest", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','Magic burst dmg.+3%','Mag. Acc.+14','"Mag.Atk.Bns."+12',}},hands="Mochizuki tekko +1", ring1="Acumen Ring",ring2="Dingir Ring",back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},waist="Eschan stone", legs={ name="Herculean Trousers", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','Phys. dmg. taken -1%','STR+5','Mag. Acc.+10','"Mag.Atk.Bns."+15',}}, feet={ name="Herculean Boots", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','"Fast Cast"+1','STR+9','Mag. Acc.+6','"Mag.Atk.Bns."+14',}}} sets.midcast.NinjutsuBuff = {ammo="Impatiens", head="Herculean helm",neck="Orunmila's torque",ear2="Loquacious Earring",ear1="Etiolation Earring", body="Mochizuki Chainmail +1",hands="Mochizuki tekko +1",ring1="Prolix Ring", back="Andartia's Mantle",waist="Witful Belt",legs="Lengo Pants",feet="Hattori Kyahan +1"} sets.midcast.RA = { head="Felistris Mask",neck="Ej Necklace", body="Hachiya Chainmail +1",hands="Hachiya Tekko",ring1="Beeline Ring", back="Yokaze Mantle",legs="Nahtirah Trousers",feet="Qaaxo Leggings"} -- Hachiya Hakama/Thurandaut Tights +1 -------------------------------------- -- Idle/resting/defense/etc sets -------------------------------------- -- Resting sets sets.resting = {ammo="Togakushi shuriken", head={ name="Herculean Helm", augments={'Phys. dmg. taken -4%','Accuracy+14','Attack+11',}},neck="Loricate torque +1",ear1="Genmei Earring",ear2="Infused Earring", body="Hizamaru haramaki +1",hands={ name="Herculean Gloves", augments={'Phys. dmg. taken -4%','STR+8','Accuracy+4','Attack+5',}},ring1="Defending Ring",ring2="Patricius ring", back="Solemnity Cape",waist="Flume Belt",legs="Mummu kecks +1",feet={ name="Herculean Boots", augments={'Accuracy+2','Phys. dmg. taken -5%','Attack+11',}}} -- Idle sets sets.idle = {ammo="Togakushi shuriken", head={ name="Herculean Helm", augments={'Phys. dmg. taken -4%','Accuracy+14','Attack+11',}},neck="Loricate torque +1",ear1="Genmei Earring",ear2="Infused Earring", body="Hizamaru haramaki +1",hands={ name="Herculean Gloves", augments={'Phys. dmg. taken -4%','STR+8','Accuracy+4','Attack+5',}},ring1="Defending Ring",ring2="Patricius ring", back="Solemnity Cape",waist="Flume Belt",legs="Mummu kecks +1",feet=gear.MovementFeet} sets.idle.Town = {ammo="Togakushi shuriken", head={ name="Herculean Helm", augments={'Phys. dmg. taken -4%','Accuracy+14','Attack+11',}},neck="Loricate torque +1",ear1="Genmei Earring",ear2="Infused Earring", body="Councilor's garb",hands={ name="Herculean Gloves", augments={'Phys. dmg. taken -4%','STR+8','Accuracy+4','Attack+5',}},ring1="Defending Ring",ring2="Patricius ring", back="Solemnity Cape",waist="Flume Belt",legs="Mummu kecks +1",feet=gear.MovementFeet} sets.idle.Weak = {ammo="Togakushi shuriken", head={ name="Herculean Helm", augments={'Phys. dmg. taken -4%','Accuracy+14','Attack+11',}},neck="Loricate torque +1",ear1="Genmei Earring",ear2="Infused Earring", body="Hizamaru haramaki +1",hands={ name="Herculean Gloves", augments={'Phys. dmg. taken -4%','STR+8','Accuracy+4','Attack+5',}},ring1="Defending Ring",ring2="Patricius ring", back="Solemnity Cape",waist="Flume Belt",legs="Mummu kecks +1",feet=gear.MovementFeet} -- Defense sets sets.defense.Evasion = {ammo="Togakushi shuriken", head={ name="Herculean Helm", augments={'Phys. dmg. taken -4%','Accuracy+14','Attack+11',}},neck="Loricate torque +1",ear1="Genmei Earring",ear2="Infused Earring", body="Hizamaru haramaki +1",hands={ name="Herculean Gloves", augments={'Phys. dmg. taken -4%','STR+8','Accuracy+4','Attack+5',}},ring1="Defending Ring",ring2="Patricius ring", back="Solemnity Cape",waist="Flume Belt",legs="Mummu kecks +1",feet={ name="Herculean Boots", augments={'Accuracy+2','Phys. dmg. taken -5%','Attack+11',}}} sets.defense.PDT = {ammo="Togakushi shuriken", head={ name="Herculean Helm", augments={'Phys. dmg. taken -4%','Accuracy+14','Attack+11',}},neck="Loricate torque +1",ear1="Genmei Earring",ear2="Infused Earring", body="Hizamaru haramaki +1",hands={ name="Herculean Gloves", augments={'Phys. dmg. taken -4%','STR+8','Accuracy+4','Attack+5',}},ring1="Defending Ring",ring2="Patricius ring", back="Solemnity Cape",waist="Flume Belt",legs="Mummu kecks +1",feet={ name="Herculean Boots", augments={'Accuracy+2','Phys. dmg. taken -5%','Attack+11',}}} sets.defense.MDT = {ammo="Togakushi shuriken", head={ name="Herculean Helm", augments={'Phys. dmg. taken -4%','Accuracy+14','Attack+11',}},neck="Loricate torque +1",ear1="Genmei Earring",ear2="Infused Earring", body="Hizamaru haramaki +1",hands={ name="Herculean Gloves", augments={'Phys. dmg. taken -4%','STR+8','Accuracy+4','Attack+5',}},ring1="Defending Ring",ring2="Patricius ring", back="Solemnity Cape",waist="Flume Belt",legs="Mummu kecks +1",feet={ name="Herculean Boots", augments={'Accuracy+2','Phys. dmg. taken -5%','Attack+11',}}} sets.Kiting = {feet=gear.MovementFeet} -------------------------------------- -- Engaged sets -------------------------------------- -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous -- sets if more refined versions aren't defined. -- If you create a set with both offense and defense modes, the offense mode should be first. -- EG: sets.engaged.Dagger.Accuracy.Evasion -- Normal melee group sets.engaged = {ammo="Togakushi shuriken", head={ name="Herculean Helm", augments={'Attack+15','"Triple Atk."+4','Accuracy+11',}},neck="Clotharius torque",ear1="Suppanomimi",ear2="Cessance Earring", body="Adhemar jacket",hands="Adhemar wristbands",ring1="Ilabrat Ring",ring2="Epona's Ring", back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},waist="Kentarch belt +1",legs="Samnuha tights",feet={ name="Herculean Boots", augments={'Accuracy+21 Attack+21','"Triple Atk."+2','STR+5','Attack+13',}}} sets.engaged.Acc = {ammo="Togakushi shuriken", head={ name="Herculean Helm", augments={'Attack+15','"Triple Atk."+4','Accuracy+11',}},neck="Clotharius torque",ear1="Suppanomimi",ear2="Cessance Earring", body="Adhemar jacket",hands="Adhemar wristbands",ring1="Ilabrat Ring",ring2="Epona's Ring", back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},waist="Kentarch belt +1",legs="Samnuha tights",feet={ name="Herculean Boots", augments={'Accuracy+21 Attack+21','"Triple Atk."+2','STR+5','Attack+13',}}} sets.engaged.Evasion = {ammo="Togakushi shuriken", head={ name="Herculean Helm", augments={'Attack+15','"Triple Atk."+4','Accuracy+11',}},neck="Clotharius torque",ear1="Suppanomimi",ear2="Cessance Earring", body="Adhemar jacket",hands="Adhemar wristbands",ring1="Ilabrat Ring",ring2="Epona's Ring", back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},waist="Kentarch belt +1",legs="Samnuha tights",feet={ name="Herculean Boots", augments={'Accuracy+21 Attack+21','"Triple Atk."+2','STR+5','Attack+13',}}} sets.engaged.PDT = {ammo="Togakushi shuriken", head={ name="Herculean Helm", augments={'Phys. dmg. taken -4%','Accuracy+14','Attack+11',}},neck="Loricate torque +1",ear1="Suppanomimi",ear2="Cessance Earring", body="Emet harness +1",hands={ name="Herculean Gloves", augments={'Phys. dmg. taken -4%','STR+8','Accuracy+4','Attack+5',}},ring1="Defending ring",ring2="Patricius ring", back={ name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},waist="Kentarch belt +1",legs="Mummu kecks +1",feet={ name="Herculean Boots", augments={'Accuracy+2','Phys. dmg. taken -5%','Attack+11',}}} -------------------------------------- -- Custom buff sets -------------------------------------- sets.buff.Migawari = {body="Iga Ningi +2"} sets.buff.Doom = {ring2="Saida Ring"} sets.buff.Yonin = {} sets.buff.Innin = {} end ------------------------------------------------------------------------------------------------------------------- -- Job-specific hooks for standard casting events. ------------------------------------------------------------------------------------------------------------------- -- Run after the general midcast() is done. -- eventArgs is the same one used in job_midcast, in case information needs to be persisted. function job_post_midcast(spell, action, spellMap, eventArgs) if state.Buff.Doom then equip(sets.buff.Doom) end end -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done. function job_aftercast(spell, action, spellMap, eventArgs) if not spell.interrupted and spell.english == "Migawari: Ichi" then state.Buff.Migawari = true end end ------------------------------------------------------------------------------------------------------------------- -- Job-specific hooks for non-casting events. ------------------------------------------------------------------------------------------------------------------- -- Called when a player gains or loses a buff. -- buff == buff gained or lost -- gain == true if the buff was gained, false if it was lost. function job_buff_change(buff, gain) -- If we gain or lose any haste buffs, adjust which gear set we target. if S{'haste','march','embrava','haste samba'}:contains(buff:lower()) then determine_haste_group() handle_equipping_gear(player.status) elseif state.Buff[buff] ~= nil then handle_equipping_gear(player.status) end end function job_status_change(new_status, old_status) if new_status == 'Idle' then select_movement_feet() end end ------------------------------------------------------------------------------------------------------------------- -- User code that supplements standard library decisions. ------------------------------------------------------------------------------------------------------------------- -- Get custom spell maps function job_get_spell_map(spell, default_spell_map) if spell.skill == "Ninjutsu" then if not default_spell_map then if spell.target.type == 'SELF' then return 'NinjutsuBuff' else return 'NinjutsuDebuff' end end end end -- Modify the default idle set after it was constructed. function customize_idle_set(idleSet) if state.Buff.Migawari then idleSet = set_combine(idleSet, sets.buff.Migawari) end if state.Buff.Doom then idleSet = set_combine(idleSet, sets.buff.Doom) end return idleSet end -- Modify the default melee set after it was constructed. function customize_melee_set(meleeSet) if state.Buff.Migawari then meleeSet = set_combine(meleeSet, sets.buff.Migawari) end if state.Buff.Doom then meleeSet = set_combine(meleeSet, sets.buff.Doom) end return meleeSet end -- Called by the default 'update' self-command. function job_update(cmdParams, eventArgs) select_movement_feet() determine_haste_group() end ------------------------------------------------------------------------------------------------------------------- -- Utility functions specific to this job. ------------------------------------------------------------------------------------------------------------------- function determine_haste_group() -- We have three groups of DW in gear: Hachiya body/legs, Iga head + Patentia Sash, and DW earrings -- Standard gear set reaches near capped delay with just Haste (77%-78%, depending on HQs) -- For high haste, we want to be able to drop one of the 10% groups. -- Basic gear hits capped delay (roughly) with: -- 1 March + Haste -- 2 March -- Haste + Haste Samba -- 1 March + Haste Samba -- Embrava -- High haste buffs: -- 2x Marches + Haste Samba == 19% DW in gear -- 1x March + Haste + Haste Samba == 22% DW in gear -- Embrava + Haste or 1x March == 7% DW in gear -- For max haste (capped magic haste + 25% gear haste), we can drop all DW gear. -- Max haste buffs: -- Embrava + Haste+March or 2x March -- 2x Marches + Haste -- So we want four tiers: -- Normal DW -- 20% DW -- High Haste -- 7% DW (earrings) - Embrava Haste (specialized situation with embrava and haste, but no marches) -- 0 DW - Max Haste classes.CustomMeleeGroups:clear() if buffactive.embrava and (buffactive.march == 2 or (buffactive.march and buffactive.haste)) then classes.CustomMeleeGroups:append('MaxHaste') elseif buffactive.march == 2 and buffactive.haste then classes.CustomMeleeGroups:append('MaxHaste') elseif buffactive.embrava and (buffactive.haste or buffactive.march) then classes.CustomMeleeGroups:append('EmbravaHaste') elseif buffactive.march == 1 and buffactive.haste and buffactive['haste samba'] then classes.CustomMeleeGroups:append('HighHaste') elseif buffactive.march == 2 then classes.CustomMeleeGroups:append('HighHaste') end end function select_movement_feet() if world.time >= 17*60 or world.time < 7*60 then gear.MovementFeet.name = gear.NightFeet else gear.MovementFeet.name = gear.DayFeet end end -- Select default macro book on initial load or subjob change. function select_default_macro_book() -- Default macro set/book if player.sub_job == 'DNC' then set_macro_page(4, 3) elseif player.sub_job == 'THF' then set_macro_page(5, 3) else set_macro_page(1, 3) end end anybody have a code for gearswap to equip a specific set when you change zones? i want to be able to equip my refresh set after i zone because it doesn't always switch you to it when u zone from a fight or dynamis, etc.
Bahamut.Autobot said: » anybody have a code for gearswap to equip a specific set when you change zones? i want to be able to equip my refresh set after i zone because it doesn't always switch you to it when u zone from a fight or dynamis, etc. Code windower.register_event('zone change', function() --[[Code to trigger idle set activation here]] handle_equipping_gear(player.status) end) Sidiov said: » Bahamut.Autobot said: » anybody have a code for gearswap to equip a specific set when you change zones? i want to be able to equip my refresh set after i zone because it doesn't always switch you to it when u zone from a fight or dynamis, etc. Code windower.register_event('zone change', function() --[[Code to trigger idle set activation here]] handle_equipping_gear(player.status) end) Thank you but im getting an user event error. is there anything special i need to do with that code? i cant read the whole error, it runs off the screen. Bahamut.Autobot said: » Sidiov said: » Bahamut.Autobot said: » anybody have a code for gearswap to equip a specific set when you change zones? i want to be able to equip my refresh set after i zone because it doesn't always switch you to it when u zone from a fight or dynamis, etc. Code windower.register_event('zone change', function() --[[Code to trigger idle set activation here]] handle_equipping_gear(player.status) end) Thank you but im getting an user event error. is there anything special i need to do with that code? i cant read the whole error, it runs off the screen. I dont believe so, it does need to be outside any function. Can you do console_log 1 in the console then grab the full error from the console.log in the Windower directory? Sidiov said: » Bahamut.Autobot said: » Sidiov said: » Bahamut.Autobot said: » anybody have a code for gearswap to equip a specific set when you change zones? i want to be able to equip my refresh set after i zone because it doesn't always switch you to it when u zone from a fight or dynamis, etc. Code windower.register_event('zone change', function() --[[Code to trigger idle set activation here]] handle_equipping_gear(player.status) end) Thank you but im getting an user event error. is there anything special i need to do with that code? i cant read the whole error, it runs off the screen. I dont believe so, it does need to be outside any function. Can you do console_log 1 in the console then grab the full error from the console.log in the Windower directory? yup. I just pasted the code at the very end of the LUA. Gearswap:LUA runtime error: GearSwap/flow.lua:102: User Event Error: ...Windower4\/addons/gearswap/data/Autobotnuggs_BLU.lua:1840: attempt to call global 'handle_equipping_gear' (a nil value) Is it possible to specify the back from which an item is selected in lua? For those times when two of the same item are used (for instance 2 of the same ring), and one will not equip.
Bahamut.Autobot said: » Sidiov said: » Bahamut.Autobot said: » Sidiov said: » Bahamut.Autobot said: » anybody have a code for gearswap to equip a specific set when you change zones? i want to be able to equip my refresh set after i zone because it doesn't always switch you to it when u zone from a fight or dynamis, etc. Code windower.register_event('zone change', function() --[[Code to trigger idle set activation here]] handle_equipping_gear(player.status) end) Thank you but im getting an user event error. is there anything special i need to do with that code? i cant read the whole error, it runs off the screen. I dont believe so, it does need to be outside any function. Can you do console_log 1 in the console then grab the full error from the console.log in the Windower directory? yup. I just pasted the code at the very end of the LUA. Gearswap:LUA runtime error: GearSwap/flow.lua:102: User Event Error: ...Windower4\/addons/gearswap/data/Autobotnuggs_BLU.lua:1840: attempt to call global 'handle_equipping_gear' (a nil value) This might have been asked before, but I'm using original Skillup.lua to level skills and I get this error everytime I cast something
Skillup.lua:665: Attempt to index global 'action' (a nil value) Also after about 30 minutes or so it stops, typically after casting a summon. I can get it running again shortly after by releasing the summon. What might be wrong? Code --[[How to use: --this tool is set it and forget it you can leave it running for hours as long as se does not log you out it will keep running-- 1.)place "skillup.lua" in your normal gearswap folder(where all your job files are) 2.)then us "gs l skillup.lua" to load this skill up in to gearswap 3.) on lines 22 and 25 of this file you can put in you wind and string instruments to start Geomancy magic skillup use command "gs c startgeo" to start Healing magic skillup use command "gs c starthealing" to start Enhancing magic skillup use command "gs c startenhancing" to start Ninjutsu magic skillup use command "gs c startninjutsu" to start Singing magic skillup use command "gs c startsinging" to start Blue magic skillup use command "gs c startblue" to start Summoning magic skillup use command "gs c startsmn" to stop all skillups use command "gs c skillstop" to auto shutdown after skillup use command "gs c aftershutdown" to auto logoff after skillup use command "gs c afterlogoff" to just stop and stay logged on after skillup use command "gs c afterStop"(only needed if you use one of the above auto shutdown/logoff) much thanks to Arcon,Byrth,Mote,and anybody else i forgot for the help in making this]] require 'actions' function get_sets() skilluprun = false sets.brd = {} sets.brd.wind = { range="Linos"--put your wind instrument here } sets.brd.string = { range="Terpander"--put your string instrument here } skilluptype = {"Geomancy","Healing","Enhancing","Ninjutsu","Singing","Blue","Summoning"} skillupcount = 1 geospells = {"Indi-Acumen","Indi-AGI","Indi-Attunement","Indi-Barrier","Indi-CHR","Indi-DEX","Indi-Fade","Indi-Fend","Indi-Focus","Indi-Frailty","Indi-Fury","Indi-Gravity","Indi-Haste","Indi-INT","Indi-Languor","Indi-Malaise","Indi-MND","Indi-Paralysis","Indi-Poison","Indi-Precision","Indi-Refresh","Indi-Regen","Indi-Slip","Indi-Slow","Indi-STR","Indi-Torpor","Indi-Vex","Indi-VIT","Indi-Voidance","Indi-Wilt"} geocount = 1 healingspells = {"Blindna","Cura","Cura II","Cura III","Curaga","Curaga II","Curaga III","Curaga IV","Curaga V","Cure","Cure II","Cure III","Cure IV","Cure V","Cure VI","Cursna","Esuna","Paralyna","Poisona","Reraise","Reraise II","Reraise III","Silena","Stona","Viruna"} healingcount = 1 enhancespells = {"Adloquium","Animus Augeo","Animus Minuo","Aquaveil","Aurorastorm","Auspice","Baraera","Baraero","Baramnesia","Baramnesra","Barblind","Barblindra","Barblizzara","Barblizzard","Barfira","Barfire","Barparalyze","Barparalyzra","Barpetra","Barpetrify","Barpoison","Barpoisonra","Barsilence","Barsilencera","Barsleep","Barsleepra","Barstone","Barstonra","Barthunder","Barthundra","Barvira","Barvirus","Barwater","Barwatera","Blaze Spikes","Blink","Boost-AGI","Boost-CHR","Boost-DEX","Boost-INT","Boost-MND","Boost-STR","Boost-VIT","Crusade","Deodorize","Embrava","Enaero","Enaero II","Enblizzard","Enblizzard II","Enfire","Enfire II","Enstone","Enstone II","Enthunder","Enthunder II","Enwater","Enwater II","Erase","Escape","Firestorm","Foil","Gain-AGI","Gain-CHR","Gain-DEX","Gain-INT","Gain-MND","Gain-STR","Gain-VIT","Hailstorm","Haste","Ice Spikes","Invisible","Phalanx","Phalanx II","Protect","Protect II","Protect III","Protect IV","Protect V","Protectra","Protectra II","Protectra III","Protectra IV","Protectra V","Rainstorm","Refresh","Refresh II","Regen","Regen II","Regen III","Regen IV","Regen V","Reprisal","Sandstorm","Shell","Shell II","Shell III","Shell IV","Shell V","Shellra","Shellra II","Shellra III","Shellra IV","Shellra V","Shock Spikes","Sneak","Stoneskin","Temper","Thunderstorm","Voidstorm","Windstorm"} enhancecount = 1 ninspells = {"Gekka: Ichi","Kakka: Ichi","Migawari: Ichi","Monomi: Ichi","Myoshu: Ichi","Tonko: Ichi","Tonko: Ni","Utsusemi: Ichi","Utsusemi: Ni","Yain: Ichi","Yain: Ichi","Gekka: Ichi"} nincount = 1 nincant = {} nincantcount = 0 if player.main_job == "NIN" or player.sub_job == "NIN" then ninspellitem = S{ ["Doton: Ichi"] = "Makibishi", ["Doton: Ni"] = "Makibishi", ["Doton: San"] = "Makibishi", ["Huton: Ichi"] = "Kawahori-Ogi", ["Huton: Ni"] = "Kawahori-Ogi", ["Huton: San"] = "Kawahori-Ogi", ["Hyoton: Ichi"] = "Tsurara", ["Hyoton: Ni"] = "Tsurara", ["Hyoton: San"] = "Tsurara", ["Katon: Ichi"] = "Uchitake", ["Katon: Ni"] = "Uchitake", ["Katon: San"] = "Uchitake", ["Raiton: Ichi"] = "Hiraishin", ["Raiton: Ni"] = "Hiraishin", ["Raiton: San"] = "Hiraishin", ["Suiton: Ichi"] = "Mizu-Deppo", ["Suiton: Ni"] = "Mizu-Deppo", ["Suiton: San"] = "Mizu-Deppo", ["Kakka: Ichi"] = "Ryuno", ["Migawari: Ichi"] = "Mokujin", ["Monomi: Ichi"] = "Sanjaku-Tenugui", ["Myoshu: Ichi"] = "Kabenro", ["Tonko: Ichi"] = "Shinobi-Tabi", ["Tonko: Ni"] = "Shinobi-Tabi", ["Tonko: San"] = "Shinobi-Tabi", ["Utsusemi: Ichi"] = "Shihei", ["Utsusemi: Ni"] = "Shihei", ["Utsusemi: San"] = "Shihei", ["Aisha: Ichi"] = "Soshi", ["Dokumori: Ichi"] = "Kodoku", ["Dokumori: Ni"] = "Kodoku", ["Dokumori: San"] = "Kodoku", ["Hojo: Ichi"] = "Kaginawa", ["Hojo: Ni"] = "Kaginawa", ["Hojo: San"] = "Kaginawa", ["Jubaku: Ichi"] = "Jusatsu", ["Jubaku: Ni"] = "Jusatsu", ["Jubaku: San"] = "Jusatsu", ["Kurayami: Ichi"] = "Sairui-Ran", ["Kurayami: Ni"] = "Sairui-Ran", ["Kurayami: San"] = "Sairui-Ran", ["Yurin: Ichi"] = "Jinko", ["Gekka: Ichi"] = "Ranka", ["Yain: Ichi"] = "Furusumi", } ninplustool = S{ ["Makibishi"] = "Inoshishinofuda", ["Kawahori-Ogi"] = "Inoshishinofuda", ["Tsurara"] = "Inoshishinofuda", ["Uchitake"] = "Inoshishinofuda", ["Hiraishin"] = "Inoshishinofuda", ["Mizu-Deppo"] = "Inoshishinofuda", ["Ryuno"] = "Shikanofuda", ["Mokujin"] = "Shikanofuda", ["Sanjaku-Tenugui"] = "Shikanofuda", ["Kabenro"] = "Shikanofuda", ["Shinobi-Tabi"] = "Shikanofuda", ["Shihei"] = "Shikanofuda", ["Soshi"] = "Chonofuda", ["Kodoku"] = "Chonofuda", ["Kaginawa"] = "Chonofuda", ["Jusatsu"] = "Chonofuda", ["Sairui-Ran"] = "Chonofuda", ["Jinko"] = "Chonofuda", ["Ranka"] = "Ranka", ["Furusumi"] = "Furusumi", } nintoolbag = S{ ["Makibishi"] = "Toolbag (Maki)", ["Kawahori-Ogi"] = "Toolbag (Kawa)", ["Tsurara"] = "Toolbag (Tsura)", ["Uchitake"] = "Toolbag (Uchi)", ["Hiraishin"] = "Toolbag (Hira)", ["Mizu-Deppo"] = "Toolbag (Mizu)", ["Ryuno"] = "Toolbag (Ryuno)", ["Mokujin"] = "Toolbag (Moku)", ["Sanjaku-Tenugui"] = "Toolbag (Sanja)", ["Kabenro"] = "Toolbag (Kabenro)", ["Shinobi-Tabi"] = "Toolbag (Shino)", ["Shihei"] = "Toolbag (Shihei)", ["Soshi"] = "Toolbag (Soshi)", ["Kodoku"] = "Toolbag (Kodo)", ["Kaginawa"] = "Toolbag (Kagi)", ["Jusatsu"] = "Toolbag (Jusa)", ["Sairui-Ran"] = "Toolbag (Sai)", ["Jinko"] = "Toolbag (Jinko)", ["Inoshishinofuda"] = "Toolbag (Ino)", ["Shikanofuda"] = "Toolbag (Shika)", ["Chonofuda"] = "Toolbag (Cho)", ["Ranka"] = "Toolbag (Ranka)", ["Furusumi"] = "Toolbag (Furu)", } toolbagtoid = { ["Toolbag (Uchi)"] = 5308, ["Toolbag (Tsura)"] = 5309, ["Toolbag (Kawa)"] = 5310, ["Toolbag (Maki)"] = 5311, ["Toolbag (Hira)"] = 5312, ["Toolbag (Mizu)"] = 5313, ["Toolbag (Shihe)"] = 5314, ["Toolbag (Jusa)"] = 5315, ["Toolbag (Kagi)"] = 5316, ["Toolbag (Sai)"] = 5317, ["Toolbag (Kodo)"] = 5318, ["Toolbag (Shino)"] = 5319, ["Toolbag (Sanja)"] = 5417, ["Toolbag (Soshi)"] = 5734, ["Toolbg. (Kaben)"] = 5863, ["Toolbag (Jinko)"] = 5864, ["Toolbag (Ryuno)"] = 5865, ["Toolbag (Moku)"] = 5866, ["Toolbag (Ino)"] = 5867, ["Toolbag (Shika)"] = 5868, ["Toolbag (Cho)"] = 5869, ["Toolbag (Ranka)"] = 6265, ["Toolbag (Furu)"] = 6266, } tbid = 0 end songspells = {"Knight's Minne","Advancing March","Adventurer's Dirge","Archer's Prelude","Army's Paeon","Army's Paeon II","Army's Paeon III","Army's Paeon IV","Army's Paeon V","Army's Paeon VI","Bewitching Etude","Blade Madrigal","Chocobo Mazurka","Dark Carol","Dark Carol II","Dextrous Etude","Dragonfoe Mambo","Earth Carol","Earth Carol II","Enchanting Etude","Fire Carol","Fire Carol II","Foe Sirvente","Fowl Aubade","Goblin Gavotte","Goddess's Hymnus","Gold Capriccio","Herb Pastoral","Herculean Etude","Hunter's Prelude","Ice Carol","Ice Carol II","Knight's Minne II","Knight's Minne III","Knight's Minne IV","Knight's Minne V","Learned Etude","Light Carol","Light Carol II","Lightning Carol","Lightning Carol II","Logical Etude","Mage's Ballad","Mage's Ballad II","Mage's Ballad III","Puppet's Operetta","Quick Etude","Raptor Mazurka","Sage Etude","Scop's Operetta","Sentinel's Scherzo","Sheepfoe Mambo","Shining Fantasia","Sinewy Etude","Spirited Etude","Swift Etude","Sword Madrigal","Uncanny Etude","Valor Minuet","Valor Minuet II","Valor Minuet III","Valor Minuet IV","Valor Minuet V","Victory March","Vital Etude","Vivacious Etude","Warding Round","Water Carol","Water Carol II","Wind Carol","Wind Carol II"} songcount = 1 bluspells = {"Pollen","Wild Carrot","Refueling","Feather Barrier","Magic Fruit","Diamondhide","Warm-Up","Amplification","Triumphant Roar","Saline Coat","Reactor Cool","Plasma Charge","Plenilune Embrace","Regeneration","Animating Wail","Battery Charge","Magic Barrier","Fantod","Winds of Promy.","Barrier Tusk","White Wind","Harden Shell","O. Counterstance","Pyric Bulwark","Nat. Meditation","Carcharian Verve","Healing Breeze"} bluspellul = S{"Harden Shell","Thunderbolt","Absolute Terror","Gates of Hades","Tourbillion","Pyric Bulwark","Bilgestorm","Bloodrake","Droning Whirlwind","Carcharian Verve","Blistering Roar"} ulid = S{ ["Harden Shell"] = 737, ["Thunderbolt"] = 736, ["Absolute Terror"] = 738, ["Gates of Hades"] = 739, ["Tourbillion"] = 740, ["Pyric Bulwark"] = 741, ["Bilgestorm"] = 742, ["Bloodrake"] = 743, ["Droning Whirlwind"] = 744, ["Carcharian Verve"] = 745, ["Blistering Roar"] = 746, } blucount = 1 smnspells = {"Carbuncle","Cait Sith","Diabolos","Fenrir","Garuda","Ifrit","Leviathan","Ramuh","Shiva","Titan","Air Spirit","Dark Spirit","Earth Spirit","Fire Spirit","Ice Spirit","Light Spirit","Thunder Spirit","Water Spirit"} smncount = 1 sets.Idle = { main="Dark Staff", left_ear="Relaxing Earring", right_ear="Liminus Earring", } shutdown = false logoff = false healingcap = false enhancingcap = false summoningcap = false ninjutsucap = false singingcap = false stringcap = false windcap = false bluecap = false geomancycap = false handbellcap = false add_to_chat(123,"Skill Up Loaded") end function status_change(new,old) if new=='Idle' then equip(sets.Idle) if skilluptype[skillupcount] == "Geomancy" and skilluprun then send_command('wait 1.0;input /ma "'..geospells[geocount]..'" <me>') elseif skilluptype[skillupcount] == "Healing" and skilluprun then send_command('wait 1.0;input /ma "'..healingspells[healingcount]..'" <me>') elseif skilluptype[skillupcount] == "Enhancing" and skilluprun then send_command('wait 1.0;input /ma "'..enhancespells[enhancecount]..'" <me>') elseif skilluptype[skillupcount] == "Ninjutsu" and skilluprun then send_command('wait 1.0;input /ma "'..ninspells[nincount]..'" <me>') elseif skilluptype[skillupcount] == "Singing" and skilluprun then send_command('wait 1.0;input /ma "'..songspells[songcount]..'" <me>') elseif skilluptype[skillupcount] == "Blue" and skilluprun then send_command('wait 1.0;input /ma "'..bluspells[blucount]..'" <me>') elseif skilluptype[skillupcount] == "Summoning" and skilluprun then send_command('wait 1.0;input /ma "'..smnspells[smncount]..'" <me>') end end end function filtered_action(spell) if spell.type == "Geomancy" and skilluprun then cancel_spell() if geocount < 30 then geocount = geocount +1 else geocount = 1 end send_command('input /ma "'..geospells[geocount]..'" <me>') return elseif spell.skill == "Healing Magic" and skilluprun then cancel_spell() if healingcount < 25 then healingcount = healingcount +1 else healingcount = 1 end send_command('input /ma "'..healingspells[healingcount]..'" <me>') return elseif spell.skill == "Enhancing Magic" and skilluprun then cancel_spell() if enhancecount < 112 then enhancecount = enhancecount +1 else enhancecount = 1 end send_command('input /ma "'..enhancespells[enhancecount]..'" <me>') return elseif spell.skill == "Ninjutsu" and skilluprun then cancel_spell() nin_tool_check(spell) elseif spell.skill == "Singing" and skilluprun then cancel_spell() if songcount < 71 then songcount = songcount +1 else songcount = 1 end send_command('input /ma "'..songspells[songcount]..'" <me>') return elseif spell.skill == "Blue Magic" and skilluprun then cancel_spell() if blucount < 27 then blucount = blucount +1 else blucount = 1 end send_command('input /ma "'..bluspells[blucount]..'" <me>') return elseif spell.type == "SummonerPact" and skilluprun then cancel_spell() if smncount < 18 then smncount = smncount +1 else smncount = 1 end send_command('input /ma "'..smnspells[smncount]..'" <me>') return elseif spell.name == "Unbridled Learning" then cancel_spell() if blucount < 27 then blucount = blucount +1 else blucount = 1 end send_command('input /ma "'..bluspells[blucount]..'" <me>') return elseif spell.name == "Avatar's Favor" then cancel_spell() send_command('input /ja "Release" <me>') return end end function precast(spell) if spell then if spell.mp_cost > player.mp then cancel_spell() send_command('input /heal on') return end end if spell.type == "Geomancy" and skilluprun then if not windower.ffxi.get_spells()[spell.id] then cancel_spell() if geocount < 30 then geocount = geocount +1 else geocount = 1 end send_command('input /ma "'..geospells[geocount]..'" <me>') return elseif geocount < 30 then geocount = geocount +1 else geocount = 1 end elseif spell.skill == "Healing Magic" and skilluprun then if not windower.ffxi.get_spells()[spell.id] then cancel_spell() if healingcount < 25 then healingcount = healingcount +1 else healingcount = 1 end send_command('input /ma "'..healingspells[healingcount]..'" <me>') return elseif healingcount < 25 then healingcount = healingcount +1 else healingcount = 1 end elseif spell.skill == "Enhancing Magic" and skilluprun then if not windower.ffxi.get_spells()[spell.id] then cancel_spell() if enhancecount < 112 then enhancecount = enhancecount +1 else enhancecount = 1 end send_command('input /ma "'..enhancespells[enhancecount]..'" <me>') return elseif enhancecount < 112 then enhancecount = enhancecount +1 else enhancecount = 1 end elseif spell.skill == "Ninjutsu" and skilluprun then if not windower.ffxi.get_spells()[spell.id] then cancel_spell() if nincount < 12 then nincount = nincount +1 else nincount = 1 end send_command('input /ma "'..ninspells[nincount]..'" <me>') return elseif nincount < 12 then nincount = nincount +1 else nincount = 1 end elseif spell.skill == "Singing" and skilluprun then if not stringcap then equip(sets.brd.string) elseif not windcap then equip(sets.brd.wind) end if not windower.ffxi.get_spells()[spell.id] then cancel_spell() if songcount < 71 then songcount = songcount +1 else songcount = 1 end send_command('input /ma "'..songspells[songcount]..'" <me>') return elseif songcount < 71 then songcount = songcount +1 else songcount = 1 end elseif spell.skill == "Blue Magic" and skilluprun then if not windower.ffxi.get_spells()[spell.id] then cancel_spell() if blucount < 27 then blucount = blucount +1 else blucount = 1 end send_command('input /ma "'..bluspells[blucount]..'" <me>') return elseif blucount < 27 then blucount = blucount +1 else blucount = 1 end elseif spell.type == "SummonerPact" and skilluprun then if not windower.ffxi.get_spells()[spell.id] then cancel_spell() if smncount < 18 then smncount = smncount +1 else smncount = 1 end send_command('input /ma "'..smnspells[smncount]..'" <me>') return elseif smncount < 18 then smncount = smncount +1 else smncount = 1 end end if spell.name == "Avatar's Favor" then if (windower.ffxi.get_ability_recasts()[spell.recast_id] > 0) or buffactive["Avatar's Favor"] then cancel_spell() send_command('input /ja "Release" <me>') return end elseif spell.name == "Elemental Siphon" then if (windower.ffxi.get_ability_recasts()[spell.recast_id] > 0) or player.mpp > 75 then cancel_spell() send_command('input /ja "Release" <me>') return end elseif spell.name == "Unbridled Learning" then if bluspellul:contains(bluspells[blucount]) and not windower.ffxi.get_spells()[ulid[bluspells[blucount]]] then if not buffactive["Unbridled Learning"] then if (windower.ffxi.get_ability_recasts()[spell.recast_id] > 0) then cancel_spell() if blucount < 27 then blucount = blucount +1 else blucount = 1 end send_command('input /ma "'..bluspells[blucount]..'" <me>') return end end else cancel_spell() if blucount < 27 then blucount = blucount +1 else blucount = 1 end send_command('input /ma "'..bluspells[blucount]..'" <me>') return end end if spell.name == "Release" then if not pet.isvalid then cancel_spell() send_command('input /heal on') return end if (windower.ffxi.get_ability_recasts()[spell.recast_id] > 0) then cancel_spell() send_command('wait 2.0;input /ja "Release" <me>') return end end end function aftercast(spell) if skilluprun then if spell.type == "Geomancy" then if geomancycap and handbellcap then skilluprun = false shutdown_logoff() return end send_command('wait 3.0;input /ma "'..geospells[geocount]..'" <me>') elseif spell.skill == "Healing Magic" then if healingcap then skilluprun = false shutdown_logoff() return end send_command('wait 3.0;input /ma "'..healingspells[healingcount]..'" <me>') elseif spell.skill == "Enhancing Magic" then if enhancingcap then skilluprun = false shutdown_logoff() return end send_command('wait 3.0;input /ma "'..enhancespells[enhancecount]..'" <me>') elseif spell.skill == "Ninjutsu" then if ninjutsucap then skilluprun = false shutdown_logoff() return end send_command('wait 3.0;input /ma "'..ninspells[nincount]..'" <me>') elseif spell.skill == "Singing" then if singingcap and stringcap and windcap then skilluprun = false shutdown_logoff() return end send_command('wait 3.0;input /ma "'..songspells[songcount]..'" <me>') elseif spell.skill == "Blue Magic" then if bluecap then skilluprun = false shutdown_logoff() return end send_command('wait 3.5;input /ja "Unbridled Learning" <me>') elseif spell.type == "SummonerPact" then if summoningcap then skilluprun = false send_command('wait 6.0;input /ja "Release" <me>') return end if spell.name:contains('Spirit') then send_command('wait 6.0;input /ja "Elemental Siphon" <me>') else send_command('wait 6.0;input /ja "Avatar\'s Favor" <me>') end elseif spell.name == "Release" then send_command('wait 3.0;input /ma "'..smnspells[smncount]..'" <me>') elseif spell.name == "Avatar's Favor" then send_command('wait 3.0;input /ja "Release" <me>') elseif spell.name == "Elemental Siphon" then send_command('wait 3.0;input /ja "Release" <me>') elseif spell.name == "Unbridled Learning" then send_command('wait 1.0;input /ma "'..bluspells[blucount]..'" <me>') end elseif spell.type == "SummonerPact" then if summoningcap then skilluprun = false send_command('wait 3.0;input /ja "Release" <me>') return end if spell.name:contains('Spirit') then send_command('wait 6.0;input /ja "Elemental Siphon" <me>') else send_command('wait 6.0;input /ja "Avatar\'s Favor" <me>') end elseif spell.name == "Release" then if summoningcap then shutdown_logoff() return end if pet and pet.isvalid then send_command('wait 4.0;input /ja "Release" <me>') end elseif spell.name == "Avatar's Favor" then send_command('wait 3.0;input /ja "Release" <me>') end end function self_command(command) if command == "startgeo" then skilluprun = true skillupcount = 1 send_command('wait 1.0;input /ma "'..geospells[geocount]..'" <me>') add_to_chat(123,"Starting Geomancy Skill up") end if command == "starthealing" then skilluprun = true skillupcount = 2 send_command('wait 1.0;input /ma "'..healingspells[healingcount]..'" <me>') add_to_chat(123,"Starting Healing Skill up") end if command == "startenhancing" then skilluprun = true skillupcount = 3 send_command('wait 1.0;input /ma "'..enhancespells[enhancecount]..'" <me>') add_to_chat(123,"Starting Enhancing Skill up") end if command == "startninjutsu" then skilluprun = true skillupcount = 4 send_command('wait 1.0;input /ma "'..ninspells[nincount]..'" <me>') add_to_chat(123,"Starting Ninjutsu Skill up") end if command == "startsinging" then skilluprun = true skillupcount = 5 send_command('wait 1.0;input /ma "'..songspells[songcount]..'" <me>') add_to_chat(123,"Starting Singing Skill up") end if command == "startblue" then skilluprun = true skillupcount = 6 send_command('wait 1.0;input /ma "'..bluspells[blucount]..'" <me>') add_to_chat(123,"Starting Blue Magic Skill up") end if command == "startsmn" then skilluprun = true skillupcount = 7 send_command('wait 2.0;input /ma "'..smnspells[smncount]..'" <me>') add_to_chat(123,"Starting Summoning Skill up") end if command == "skillstop" then skilluprun = false add_to_chat(123,"Stopping Skill up") end if command == 'aftershutdown' then shutdown = true logoff = false add_to_chat(123, '----- Will Shutdown When Skillup Done -----') end if command == 'afterlogoff' then shutdown = false logoff = true add_to_chat(123, '----- Will Logoff When Skillup Done -----') end if command == 'afterStop' then shutdown = false logoff = false add_to_chat(123, '----- Will Stop When Skillup Done -----') end end function shutdown_logoff() add_to_chat(123,"Auto stop skillup") if logoff then send_command('wait 3.0;input /logoff') elseif shutdown then send_command('wait 3.0;input /shutdown') end end function nin_tool_check(spell) if spell.type == "Ninjutsu" then local tool = ninspellitem[spell.name] local stool = ninplustool[tool] local toolbag = nintoolbag[tool] local stoolbag = nintoolbag[stool] if not nincant:contains(spell.name)then if not (player.inventory == tool or player.inventory == stool) then cancel_spell() if player.inventory == toolbag then tbid = toolbagtoid[toolbag] send_command('input /item "'..toolbag..'" <me>') elseif player.inventory == stoolbag then tbid = toolbagtoid[stoolbag] send_command('input /item "'..stoolbag..'" <me>') else nincant:append(spell.name) nincantcount = nincantcount +1 end if nincount < 12 then nincount = nincount +1 else nincount = 1 end send_command('input /ma "'..ninspells[nincount]..'" <me>') return end elseif nincantcount < 12 then if nincount < 12 then nincount = nincount +1 else nincount = 1 end send_command('input /ma "'..ninspells[nincount]..'" <me>') return else skilluprun = false add_to_chat(123,"You Have No More Of The Tools Needed For Castin of NIN Spells\nStoping NIN Skillup") return end end end function event_action(act) action = Action(act) if action:get_category_string() == 'item_finish' then if action.raw.param == tbid and player.id == action.raw.actor_id then send_command('wait 1.0;input /ma "'..ninspells[nincount]..'" <me>') tbid = 0 end end end windower.raw_register_event('action', event_action) function skill_capped(id, data, modified, injected, blocked) if id == 0x062 then healingcap = data:unpack('q', 0xC4, 8) enhancingcap = data:unpack('q', 0xC6, 8) summoningcap = data:unpack('q', 0xCE, 8) ninjutsucap = data:unpack('q', 0xD0, 8) singingcap = data:unpack('q', 0xD2, 8) stringcap = data:unpack('q', 0xD4, 8) windcap = data:unpack('q', 0xD6, 8) bluecap = data:unpack('q', 0xD8, 8) geomancycap = data:unpack('q', 0xDA, 8) handbellcap = data:unpack('q', 0xDC, 8) end if id == 0x0DF then if data:unpack('I', 0x0D) == player.max_mp and skilluprun then windower.send_command('input /heal off') end end end windower.raw_register_event('incoming chunk', skill_capped) Line 665 is actually this part, it is not formatted correctly in the post.
function event_action(act) action = Action(act) if action:get_category_string() == 'item_finish' then if action.raw.param == tbid and player.id == action.raw.actor_id then send_command('wait 1.0;input /ma "'..ninspells[nincount]..'" <me>') tbid = 0 end end end |
||
All FFXI content and images © 2002-2025 SQUARE ENIX CO., LTD. FINAL
FANTASY is a registered trademark of Square Enix Co., Ltd.
|