Auto RA

Language: JP EN DE FR
New Items
2018-04-04
105 users online
Forum » FFXI » Jobs » Ranger » Auto RA
Auto RA
 Fenrir.Snaps
Offline
Server: Fenrir
Game: FFXI
user: Mojopojo
Posts: 888
By Fenrir.Snaps 2017-09-22 19:17:23
Link | Quote | Reply
 
Shiva.Fendarin said: »
yeah just isnt working like that for me when i set //gs rh set "last stand" it gets to 1k and it stops shooting, then if i press shoot again it wil use the ws. would be awesome to be able to queue up ws's, it queues up my ja's just fine if i press midshot what is awesome, if u can help would be great ty

u can leave it on for ja's taint, i used food with it on 2 works just fine

edit: so just tested it again, so when u set //gs rh "last stand"
it gets to 1k still and didnt go off so i then used //gs rh set to cancel it then shoot and it still used last stand, so im guessing its in queue but not using it for what ever reason

Are you one shotting mobs? When you acquire a new target, it will do one initial shot regardless of what is in the queue. If you aren't, then try the following things.

1. Use Last Stand instead of last stand
2. Do

//gs rh print

After it gets stuck and post the output.

3. PM me your gearswap
 Fenrir.Snaps
Offline
Server: Fenrir
Game: FFXI
user: Mojopojo
Posts: 888
By Fenrir.Snaps 2017-09-22 19:24:15
Link | Quote | Reply
 
Leviathan.Celebrindal said: »
quick question for Snaps-

is it designed to "only work with a Mote-based lua" simply because you use a Mote-based lua and therefore during design you made it work for you, or are there function-dependent reasons? As a non-Mote user I am curious to at least experiment with an autoRA tool that is competitive, and Thorny is an Ashita user.

I am using some motes hooks to do this. It's possible without motes although it would be much less portable. Everybody would need to custom tailor it to their gearswap.


Taint said: »
Wouldn't auto RA and WS mess up JA usage?

Do you just toggle it off pop JAs then put it back up?

It will not conflict. It enqueues your ja/ws/ma/items and uses them at the nearest opportunity. You can early enqueu WS if you like and it knows to wait until you have TP. You can even use different WS this way when the auto feature is on as the auto ws is inserted only when you have 1000+ TP and there is nothing in the queue.
Offline
Posts: 237
By anik 2017-09-22 21:21:38
Link | Quote | Reply
 
Because EASY! THATS WHY! EASY PLEASE!!! ITS TOO HARD! MAKE IT EASY!
 Leviathan.Brotherhood
Offline
Server: Leviathan
Game: FFXI
user: bluecop81
Posts: 733
By Leviathan.Brotherhood 2017-09-22 21:46:49
Link | Quote | Reply
 
Sounds like a Virgin
[+]
 Bismarck.Cladbolg
Offline
Server: Bismarck
Game: FFXI
user: cladbolg
Posts: 44
By Bismarck.Cladbolg 2017-09-22 22:40:01
Link | Quote | Reply
 
Is there a command to que up JA and WS etc. Selecting then from the menu manually doesn't seem to be working for me. Thanks.
 Shiva.Fendarin
Offline
Server: Shiva
Game: FFXI
Posts: 65
By Shiva.Fendarin 2017-09-23 06:29:56
Link | Quote | Reply
 
I have my ja's macroed and they work just fine try that. Going to try what snap said now thanks for the reply guys
 Shiva.Fendarin
Offline
Server: Shiva
Game: FFXI
Posts: 65
By Shiva.Fendarin 2017-09-23 06:46:36
Link | Quote | Reply
 
when i use //gs rh print i get /rangeRanged 17969172.
tryed making it Last Stand still doesnt work @1k.

when ws is set to on i will autora till 1k then it stops working till i use /shoot again and it will then use last stand and then it just does the same

https://pastebin.com/uf5xbBm8

thats my gearswap
put rh on line 37
 Fenrir.Snaps
Offline
Server: Fenrir
Game: FFXI
user: Mojopojo
Posts: 888
By Fenrir.Snaps 2017-09-23 12:11:22
Link | Quote | Reply
 
Shiva.Fendarin said: »
when i use //gs rh print i get /rangeRanged 17969172.
tryed making it Last Stand still doesnt work @1k.

when ws is set to on i will autora till 1k then it stops working till i use /shoot again and it will then use last stand and then it just does the same

https://pastebin.com/uf5xbBm8

thats my gearswap
put rh on line 37

Alright. I tried using your gearswap and it actually worked. The next debugging step would be to zip your entire gearswap folder and post it somewhere. The motes hook I'm using is filter_precast. Some other extension or global rule may be conflicting with it. I also noticed that there is some auto ra stuff in your gearswap. If you have this enabled it will conflict.
 Quetzalcoatl.Commencal
Offline
Server: Quetzalcoatl
Game: FFXI
user: Scwall
Posts: 179
By Quetzalcoatl.Commencal 2017-09-23 12:14:55
Link | Quote | Reply
 
It won't load when I use it with Orestes lua or any others I've tried. Reinstalling didn't work either.

Lua runtime error: gearswap/flow.lua:341:
//addons/libs/xml.lua:387: "type" is not defined for numbers
[+]
 Asura.Selindrile
Offline
Server: Asura
Game: FFXI
Posts: 72
By Asura.Selindrile 2017-09-26 07:59:16
Link | Quote | Reply
 
Just wanted to say thanks for this Snaps, with some modifications I've gotten it to work with my gearswaps, and it's a muuuuuch better implementation than the very janky one I had.
 Leviathan.Celebrindal
Offline
Server: Leviathan
Game: FFXI
Posts: 1027
By Leviathan.Celebrindal 2017-09-26 15:50:33
Link | Quote | Reply
 
I had some Rangers on Leviathan reach out to me after this test with a few questions, so I figured I'd give out the answers as well here in case there were others with the same questions:

First though- all the techniques I've developed for my manual timing have come from just personal practice as well as tips primarily from Verda. I'm mostly passing on what advice he gave me.

1. I use Windower with Battlemod.
2. I use a personally developed lua that I have posted here before, non-Mote based.
3. I always have Skype running, and usually either YouTube or Netflix or HBO Now on a second monitor...I'm not dedicating my resources completely to FFXI, that's all I wanted to convey by saying this.

Now on to timing...

I position my camera so I can watch my toon "re-holster" my weapon, because that's the key moment in terms of shooting. The moment the weapon is put away, you can shoot again, so watching your HIP is the most important place. No, not very exciting, my friends, but it is very effective.

With the way that Rapid Shot works, randomly granting a fraction of delay reduction, you can't just get into a groove and stay in that groove- either you'll be late on a "good" Rapid Shot proc, or if you get into your groove on consecutive Rapid Shot procs, you'll be too early when you don't get a Rapid Shot proc. You have to do it based on visual queues.

Hope this is of some help to the Rangers that either prefer not to use an autoRA, or can't find one they like. Keep shootin!
[+]
 Shiva.Arislan
Online
Server: Shiva
Game: FFXI
user: Arislan
Posts: 526
By Shiva.Arislan 2017-09-26 16:01:05
Link | Quote | Reply
 
Binding your shoot macro to a single key press instead of the multi-key vanilla macro procedure also helps a lot with delay/carpal tunnel too:

Code
    send_command('bind numpad0 input /ra <t>')


Replace numpad0 with whatever key you want.

I chose that particular key since it's ergonomic for me, and I don't use that key for anything else.
[+]
 Bismarck.Cladbolg
Offline
Server: Bismarck
Game: FFXI
user: cladbolg
Posts: 44
By Bismarck.Cladbolg 2017-10-06 15:48:11
Link | Quote | Reply
 
My Job abilities arent queing for some reason?
Anyone have any ideas? Thanks
Online
Posts: 29108
By fonewear 2017-10-06 16:06:54
Link | Quote | Reply
 
15 years from now if the game is still online...SE will do an official auto ranged attack !
[+]
necroskull Necro Bump Detected! [32 days between previous and next post]
 Bismarck.Cladbolg
Offline
Server: Bismarck
Game: FFXI
user: cladbolg
Posts: 44
By Bismarck.Cladbolg 2017-11-07 20:56:09
Link | Quote | Reply
 
Still not queing job abilities for me if anyone has any ideas :(

Using Celebrindal's lua
http://www.ffxiah.com/forum/topic/51506/update-rng-lua/

Thank you.
 Fenrir.Snaps
Offline
Server: Fenrir
Game: FFXI
user: Mojopojo
Posts: 888
By Fenrir.Snaps 2017-11-08 09:32:33
Link | Quote | Reply
 
You must use a motes based lua. That is not motes based.
 Asura.Cladbolg
Offline
Server: Asura
Game: FFXI
user: cladbolg
Posts: 2
By Asura.Cladbolg 2017-11-08 09:49:37
Link | Quote | Reply
 
Ah dang. Anyone mind sharing a up to date notes based lua?
Hopefully one that takes into account Flurry. Thank you.
 Fenrir.Snaps
Offline
Server: Fenrir
Game: FFXI
user: Mojopojo
Posts: 888
By Fenrir.Snaps 2017-11-08 11:10:16
Link | Quote | Reply
 
I haven't updated my RNG GS in a while, but this is what I use.

Code
require('rnghelper')

function get_sets()
    mote_include_version = 2
    include('Mote-Include.lua')
end

function job_setup()
    state.Buff.Barrage = buffactive.Barrage or false
    state.Buff.Flurry = buffactive.Flurry or false
    state.Buff['Unlimited Shot'] = buffactive['Unlimited Shot'] or false
    state.Utsusemi = 2
end

function user_setup()
    state.RangedMode:options('Normal', 'Acc')
    state.WeaponskillMode:options('Normal', 'Acc')
    state.OffenseMode:options('Normal', 'Acc')
    DefaultAmmo = {['Fail-Not'] = "Chrono Arrow", ['Annihilator'] = "Chrono Bullet", ['Fomalhaut'] = "Chrono Bullet"}
    U_Shot_Ammo = {['Fail-Not'] = "Chrono Arrow", ['Annihilator'] = "Chrono Bullet", ['Fomalhaut'] = "Chrono Bullet"}
end

function init_gear_sets()
    sets.idle = {
        head={ name="Herculean Helm", augments={'Accuracy+13','Damage taken-4%','Attack+1',}},
        body={ name="Herculean Vest", augments={'Damage taken-4%','Accuracy+10',}},
        hands={ name="Herculean Gloves", augments={'DEX+5','Attack+18','Damage taken-3%','Accuracy+13 Attack+13','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
        legs={ name="Herculean Trousers", augments={'Phys. dmg. taken -4%','DEX+6','Attack+11',}},
        feet={ name="Herculean Boots", augments={'Damage taken-4%','DEX+5','Accuracy+13','Attack+4',}},
        neck="Loricate Torque +1",
        waist="Flume Belt +1",
        right_ear="Genmei Earring",
        left_ear="Etiolation Earring",
        left_ring="Defending Ring",
        right_ring={ name="Dark Ring", augments={'Enemy crit. hit rate -2','Magic dmg. taken -3%','Phys. dmg. taken -6%',}},
        back="Agema Cape",
    }
    sets.engaged = {
        head="Dampening Tam",
        body="Adhemar Jacket +1",
        hands={ name="Floral Gauntlets", augments={'Rng.Acc.+15','Accuracy+15','"Triple Atk."+3','Magic dmg. taken -4%',}},
        legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
        feet={ name="Herculean Boots", augments={'Attack+24','"Triple Atk."+4','STR+1','Accuracy+13',}},
        neck="Iskur Gorget",
        waist="Windbuffet Belt +1",
        left_ear="Dedition Earring",
        right_ear="Telos Earring",
        left_ring="Epona's Ring",
        right_ring="Hetairoi Ring",
        back={ name="Belenus's Cape", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','"Store TP"+10',}},
    }
    sets.engaged.Acc={
        head="Dampening Tam",
        body="Adhemar Jacket +1",
        hands={ name="Floral Gauntlets", augments={'Rng.Acc.+15','Accuracy+15','"Triple Atk."+3','Magic dmg. taken -4%',}},
        legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
        feet={ name="Herculean Boots", augments={'Accuracy+25 Attack+25','"Triple Atk."+3','DEX+4',}},
        neck="Erudit. Necklace",
        waist="Windbuffet Belt +1",
        left_ear="Cessance Earring",
        right_ear="Telos Earring",
        left_ring="Epona's Ring",
        right_ring="Hetairoi Ring",
        back={ name="Belenus's Cape", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','"Store TP"+10',}},
    }
    sets.precast.RA = {
        head={ name="Taeon Chapeau", augments={'"Snapshot"+5','"Snapshot"+4',}},
        body="Amini Caban +1",
        hands={ name="Carmine Fin. Ga. +1", augments={'Rng.Atk.+20','"Mag.Atk.Bns."+12','"Store TP"+6',}},
        legs={ name="Adhemar Kecks", augments={'AGI+10','"Rapid Shot"+10','Enmity-5',}},
        feet="Meg. Jam. +1",
        waist="Impulse Belt",
        back={ name="Belenus's Cape", augments={'"Snapshot"+10',}},
    }
    sets.precast.RA.Flurry = set_combine(sets.precast.RA, {})
    sets.midcast.RA = {
        head={ name="Arcadian Beret +1", augments={'Enhances "Recycle" effect',}},
        body="Orion Jerkin +3",
        hands="Adhemar Wristbands +1",
        legs="Adhemar Kecks +1",
        feet={ name="Herculean Boots", augments={'Accuracy+1 Attack+1','"Store TP"+6','Quadruple Attack +2','Mag. Acc.+20 "Mag.Atk.Bns."+20',}},
        neck="Iskur Gorget",
        waist="Yemaya Belt",
        left_ear="Dedition Earring",
        right_ear="Telos Earring",
        left_ring="Rajas Ring",
        right_ring="Ilabrat Ring",
        back={ name="Belenus's Cape", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','"Store TP"+10',}},
    }
    sets.midcast.RA.Acc = set_combine(sets.midcast.RA, {
        left_ear="Enervating Earring",
        feet="Mummu Gamash. +1",
    })
    sets.precast.WS["Jishnu's Radiance"] = {
        head="Adhemar Bonnet +1",
        body="Meg. Cuirie +1",
        hands="Adhemar Wrist. +1",
        legs="Adhemar Kecks +1",
        feet="Thereoid Greaves",
        neck="Fotia Gorget",
        waist="Fotia Belt",
        left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +25',}},
        right_ear="Telos Earring",
        left_ring="Begrudging Ring",
        right_ring="Regal Ring",
        back={ name="Belenus's Cape", augments={'DEX+20','Rng.Acc.+20 Rng.Atk.+20','DEX+10','Crit.hit rate+10',}},
    }
    sets.precast.WS["Jishnu's Radiance"].Acc = set_combine(sets.precast.WS["Jishnu's Radiance"], {
        feet="Meg. Jam. +1",
    })
    sets.precast.WS = {
        head="Orion Beret +3",
        body={ name="Herculean Vest", augments={'Attack+13','Weapon skill damage +5%','AGI+8','Rng.Acc.+6',}},
        hands="Meg. Gloves +2",
        legs={ name="Herculean Trousers", augments={'Weapon skill damage +4%','AGI+10',}},
        feet={ name="Herculean Boots", augments={'Mag. Acc.+23','Rng.Acc.+13','Weapon skill damage +8%','Accuracy+10 Attack+10','Mag. Acc.+17 "Mag.Atk.Bns."+17',}},
        neck="Fotia Gorget",
        waist="Fotia Belt",
        left_ear="Ishvara Earring",
        right_ear="Sherida Earring",
        left_ring="Regal Ring",
        right_ring="Ilabrat Ring",
        back={ name="Belenus's Cape", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','AGI+10','Weapon skill damage +10%',}},
    }
    sets.precast.WS.Acc = set_combine(sets.precast.WS)
    sets.precast.WS.Wildfire = {
        head={ name="Herculean Helm", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','"Dbl.Atk."+2','INT+3','"Mag.Atk.Bns."+14',}},
        body={ name="Samnuha Coat", augments={'Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+5','"Dual Wield"+5',}},
        hands={ name="Herculean Gloves", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Weapon skill damage +4%',}},
        legs={ name="Herculean Trousers", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','"Store TP"+1','INT+9','"Mag.Atk.Bns."+13',}},
        feet={ name="Herculean Boots", augments={'Mag. Acc.+23','Rng.Acc.+13','Weapon skill damage +8%','Accuracy+10 Attack+10','Mag. Acc.+17 "Mag.Atk.Bns."+17',}},
        neck="Sanctity Necklace",
        waist="Svelt. Gouriz +1",
        left_ear="Friomisi Earring",
        right_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +25',}},
        left_ring="Weather. Ring",
        right_ring="Dingir Ring",
        back={ name="Belenus's Cape", augments={'AGI+20','Mag. Acc+20 /Mag. Dmg.+20','AGI+10','Weapon skill damage +10%',}},
    }
    sets.precast.WS.Trueflight = set_combine(sets.precast.WS.Wildfire, {
        right_ear="Moonshade Earring",
        left_ring = "Weather. Ring"
    })
    sets.buff.Barrage = {
        hands="Orion Bracers +3",
    }
    sets.precast.WS.Wildfire.Acc = set_combine(sets.precast.WS.Wildfire)
    sets.precast.WS.Trueflight.Acc = set_combine(sets.precast.WS.Trueflight)
    sets.precast.WS['Last Stand'] = set_combine(sets.precast.WS, {
        right_ear="Moonshade Earring",
    })
    sets.precast.WS['Last Stand'].Acc = set_combine(sets.precast.WS.LastStand)
    sets.precast.FC = {
        head={ name="Carmine Mask +1", augments={'Accuracy+20','Mag. Acc.+12','"Fast Cast"+4',}},
        body={ name="Taeon Tabard", augments={'Accuracy+15','"Fast Cast"+5','DEX+4',}},
        hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
        legs={ name="Herculean Trousers", augments={'Mag. Acc.+10','"Fast Cast"+5','MND+3','"Mag.Atk.Bns."+6',}},
        feet={ name="Carmine Greaves +1", augments={'HP+80','MP+80','Phys. dmg. taken -4',}},
        neck="Orunmila's Torque",
        waist="Goading Belt",
        left_ear="Etiolation Earring",
        right_ear="Loquac. Earring",
        left_ring="Weather. Ring",
        right_ring="Rahab Ring",
        back={ name="Belenus's Cape", augments={'"Fast Cast"+10',}},
    }
    sets.Kiting = { legs="Carmine Cuisses +1"}
    sets.precast.JA.Scavenge = { feet="Orion Socks +1"}
    sets.precast.JA.Shadowbind = { hands="Orion Bracers +3"}
    sets.precast.JA.Sharpshot = { legs="Orion Braccae +1"}
    sets.precast.JA['Bounty Shot'] = {
        head={ name="Herculean Helm", augments={'Haste+1','Crit.hit rate+4','"Treasure Hunter"+2','Mag. Acc.+1 "Mag.Atk.Bns."+1',}},
        hands={ name="Herculean Gloves", augments={'Mag. Acc.+16 "Mag.Atk.Bns."+16','Accuracy+2 Attack+2','"Treasure Hunter"+2',}},
    }
end

local utsusemi = {
    ["Utsusemi: Ichi"] = 1,
    ["Utsusemi: Ni"] = 2,
    ["Utsusemi: San"] = 3,
}

function job_precast(spell, action, spellMap, eventArgs)
    if spell.action_type == 'Ranged Attack' then
        state.CombatWeapon:set(player.equipment.range)
    end
    if spell.action_type == 'Ranged Attack' or (spell.type == 'WeaponSkill' and (spell.skill == 'Marksmanship' or spell.skill == 'Archery')) then
        check_ammo(spell, action, spellMap, eventArgs)
    end
end

function job_post_precast(spell, action, spellMap, eventArgs)
    if spell.action_type == 'Ranged Attack' and state.Buff.Flurry then
        equip(sets.precast.RA.Flurry)
    end
    if ((spell.name == 'Trueflight') or (spell.name == 'Wildfire')) and ((spell.element == world.weather_element) or (spell.element == world.day_element)) then
        equip({ waist="Hachirin-no-Obi"})
    end
end

function job_midcast(spell, action, spellMap, eventArgs)
    if spellMap == 'Utsusemi' then
        if state.Utsusemi > utsusemi[spell.name] 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
    end
end

function job_post_midcast(spell, action, spellMap, eventArgs)
    if spell.action_type == 'Ranged Attack' and state.Buff.Barrage then
        equip(sets.buff.Barrage)
    end
end

function job_aftercast(spell, action, spellMap, eventArgs)
    if (not spell.interrupted) and spellMap == 'Utsusemi' then
        state.Utsusemi = utsusemi[spell.name]
    end
end

function check_ammo(spell, action, spellMap, eventArgs)
    if state.Buff['Unlimited Shot'] then
        if player.equipment.ammo ~= U_Shot_Ammo[player.equipment.range] then
            if player.inventory[U_Shot_Ammo[player.equipment.range]] or player.wardrobe[U_Shot_Ammo[player.equipment.range]] then
                add_to_chat(122,"Unlimited Shot active. Using custom ammo.")
                equip({ammo=U_Shot_Ammo[player.equipment.range]})
            elseif player.inventory[DefaultAmmo[player.equipment.range]] or player.wardrobe[DefaultAmmo[player.equipment.range]] then
                add_to_chat(122,"Unlimited Shot active but no custom ammo available. Using default ammo.")
                equip({ammo=DefaultAmmo[player.equipment.range]})
            else
                add_to_chat(122,"Unlimited Shot active but unable to find any custom or default ammo.")
            end
        end
    else
        if player.equipment.ammo == U_Shot_Ammo[player.equipment.range] and player.equipment.ammo ~= DefaultAmmo[player.equipment.range] then
            if DefaultAmmo[player.equipment.range] then
                if player.inventory[DefaultAmmo[player.equipment.range]] then
                    add_to_chat(122,"Unlimited Shot not active. Using Default Ammo")
                    equip({ammo=DefaultAmmo[player.equipment.range]})
                else
                    add_to_chat(122,"Default ammo unavailable.  Removing Unlimited Shot ammo.")
                    equip({ammo=empty})
                end
            else
                add_to_chat(122,"Unable to determine default ammo for current weapon.  Removing Unlimited Shot ammo.")
                equip({ammo=empty})
            end
        elseif player.equipment.ammo == 'empty' then
            if DefaultAmmo[player.equipment.range] then
                if player.inventory[DefaultAmmo[player.equipment.range]] then
                    add_to_chat(122,"Using Default Ammo")
                    equip({ammo=DefaultAmmo[player.equipment.range]})
                else
                    add_to_chat(122,"Default ammo unavailable.  Leaving empty.")
                end
            else
                add_to_chat(122,"Unable to determine default ammo for current weapon.  Leaving empty.")
            end
        elseif player.inventory[player.equipment.ammo].count < 15 then
            add_to_chat(122,"Ammo '"..player.inventory[player.equipment.ammo].shortname.."' running low ("..player.inventory[player.equipment.ammo].count..")")
        end
    end
end

I added the Flurry code just now, so I don't actually have different sets and it doesn't take Flurry II vs Flurry I into account. Someone posted a method to use the action message packet or something to do this automatically. If I can find that I'll incorporate it or do it myself the next time I play RNG (probably not for a while.)
 Fenrir.Snaps
Offline
Server: Fenrir
Game: FFXI
user: Mojopojo
Posts: 888
By Fenrir.Snaps 2017-11-08 11:25:16
Link | Quote | Reply
 
Also having some double shot sets would be really great too, I just haven't revised my gear in a while.
 Lakshmi.Elidyr
Offline
Server: Lakshmi
Game: FFXI
user: elii
Posts: 382
By Lakshmi.Elidyr 2017-11-08 12:39:20
Link | Quote | Reply
 
Fenrir.Snaps said: »
I haven't updated my RNG GS in a while, but this is what I use.

I added the Flurry code just now, so I don't actually have different sets and it doesn't take Flurry II vs Flurry I into account. Someone posted a method to use the action message packet or something to do this automatically. If I can find that I'll incorporate it or do it myself the next time I play RNG (probably not for a while.)

I posted this slop, and it works. I just have no clue on the inner workings of motes. Would have to adjust to work.

Lakshmi.Elidyr said: »
Kept seeing this pop up in forums while I was working on my Rangers. Was curious if this would help anyone if it was added in to the LUA. Not 100% sure it will entirely work as planned.

-- create a global variable in get_sets or wherever the initial load takes place.
Code
_flurry = nil
p = require('packets') -- Added this because its how I use it in my files. Not sure how others use.


-- Put this at the end of gearswap file.
Code
windower.raw_register_event("incoming chunk", function(id, data)
    if id == 0x028 then
        local packet = p.parse('incoming', data)

        if packet["Category"] == 4 then
    
            if packet["Param"] == 845 and _flurry ~= 1 and _flurry ~= 2 then
                -- Set flurry status @ 1.
                _flurry = 1
                
            elseif packet["Param"] == 846 and _flurry ~= 2 then
                -- Set flurry status @ 2.
                _flurry = 2

            else
                -- Flurry was already active.
            end

        end

    end

end


Can now use global variable to check flurry status, and clear variable (_flurry = nil) when buff is lost. This is purely me just thinking. Sometimes having it plan for you causes more issues than you want.

Edit: Added buff clear for the sake of it.

Inside buff_change function.
Code
if gain then

else
        
    -- Handle logic when flurry buff is lost.
    if name == 'Flurry' then
        _flurry = nil
        print("Flurry status cleared.")
    end

end

Basically in my logic, looks like this.
Code
-- Handles all logic if Ranged Attack is used.
    elseif spell.name == 'Ranged' then
        
        if player.equipment.ammo == "empty" then
            equip(sets.Ammo)
            
            if _flurry  == nil then
                equip(sets.SnapshotMax)
                
            elseif _flurry  == 1 then
                equip(sets.SnapshotOne)
                
            elseif _flurry  == 2 then
                equip(sets.SnapshotTwo)
                
            end
        else
            equip(sets.SnapshotMax)
            
        end


Hope that helps.
[+]
 Bismarck.Cladbolg
Offline
Server: Bismarck
Game: FFXI
user: cladbolg
Posts: 44
By Bismarck.Cladbolg 2017-11-18 18:45:58
Link | Quote | Reply
 
I can't figure out exactly where to add these lines Elidyr to make it work. Do all of these go into my RNG lua? Thank you.
 Bismarck.Cladbolg
Offline
Server: Bismarck
Game: FFXI
user: cladbolg
Posts: 44
By Bismarck.Cladbolg 2017-11-18 19:04:51
Link | Quote | Reply
 
I'm trying to combine your Flurry functions and gear sets with Snaps lua if that helps lol.
necroskull Necro Bump Detected! [128 days between previous and next post]
Offline
Posts: 5
By Vishwambhari 2018-03-26 18:51:50
Link | Quote | Reply
 
Fenrir.Snaps said: »
The other option is to insert an action packet chunk on every outgoing UDP packet
First of all thank you a lot for sharing your work with us.
Is there any way anyone could mention how to do such a thing? As there are times when I wouldn't care about dt sets, and just want stuff dead asap.
Thanks!
 Ragnarok.Fcube
Offline
Server: Ragnarok
Game: FFXI
user: Fcube
Posts: 19
By Ragnarok.Fcube 2018-04-01 03:41:53
Link | Quote | Reply
 
Hi, tried using the rnghelper in my lua but got this error message, "attempt to index upvalue 'confdict_mt' (a nil value).

Appreciate any help.
necroskull Necro Bump Detected! [73 days between previous and next post]
Offline
Posts: 2
By deathangle 2018-06-13 10:47:16
Link | Quote | Reply
 
im new to GS/lua What do you mean add the line require('rnghelper") to your gear swaps.
Offline
Posts: 19
By schwarzi88 2018-06-13 16:12:43
Link | Quote | Reply
 
i used windower macro and just made a 9999 line script with reloading every 99 shots .... used it to skill up on worms in tunnels!
 Leviathan.Celebrindal
Offline
Server: Leviathan
Game: FFXI
Posts: 1027
By Leviathan.Celebrindal 2018-06-13 18:38:48
Link | Quote | Reply
 
schwarzi88 said: »
i used windower macro and just made a 9999 line script with reloading every 99 shots .... used it to skill up on worms in tunnels!

A true auto RA plugin accounts for variances created due to rapid shot procs. The way you're describing will shoot, but extremely inefficiently.

I've got to say as a windower user that the auto RA made for ashita is just great and I wish there was a true equivalent. Until there is I'll keep shooting manually and still coming damn close to a plugin.
[+]
 Asura.Zart
Offline
Server: Asura
Game: FFXI
user: zart
Posts: 126
By Asura.Zart 2018-06-13 18:42:30
Link | Quote | Reply
 
Code
echo --------------------------------------------------------------------
echo Skillupcore v2.5
echo Original code by <a href="mailto:Aikar@Windower.net">Aikar@Windower.net</a> (Retired)
echo (This is a modified version of the original)
echo --------------------------------------------------------------------
//
// Extra Files skillupexit.txt Note: This file is only needed if you want to 
// completely exit this Skillupcore.txt
//
// This script is not designed to be initialized in init.txt.
// It provides framework for you to use in creating skillup profiles.
//
// ALL Skillup profiles MUST be in this format:
// FIRST LINE: alias skillup_file exec <YOUR FILENAME HERE>
// example: alias skillup_file exec blah.txt
//
// CUSTOM AUTOEXEC EVENTS: 50201 through 50220 are reserved for your code as custom
// events. These will only need load once the first time your macro code is executed.
// You should only use skillup_cmd_once for these custom events.
//
// RUN ONCE COMMANDS: skillup_cmd_once and skillup_send_once. These function exactly like
// skillup_cmd and skillup_send but they only execute on the first loop cycle.
//
// Run Once Examples below. \/
// skillup_cmd_once ae registerq 50201 hpp_? input "Cure V" <me>
// skillup_cmd_once ae registerq 50210 tp_??? skillup_custom_wskill
// skillup_cmd_once skillup_wait5s
// skillup_send_once /echo it's time to play!
// skillup_send_once /ja "Composure" <me>
// skillup_send_once /ma "Refresh II" <me>
//
// AUTO RECAST EVENTS: These are 4 aliases that can be set to auto recast events
// skillup_event1, skillup_event2, skillup_event3, and skillup_event4
//
// here is an example of how to use custom events with the auto recast.
// Custom auto recast examples below \/
// skillup_cmd_once ae registerq 50201 gainbuff_composure alias skillup_event1 /;
// skillup_cmd_once ae registerq 50202 losebuff_composure alias skillup_event1 skillup_send /ja "Composure" <me>
// skillup_cmd_once ae registerq 50203 gainbuff_refresh alias skillup_event2 /;
// skillup_cmd_once ae registerq 50204 losebuff_refresh alias skillup_event2 skillup_send /ma "Refresh II" <me>
//
// CUSTOM EQUIPS: If you need to use custom commands before resting or before resuming
// you must create aliases for skillup_custom_lowmp, and skillup_custom_fullmp. These should
// be loaded after custom autoexec events and core once events but before your macro 
// code.
//
// Custom Examples below. \/
// alias skillup_custom_lowmp input /equip main "Dark Staff";input /equip body "Body Armor"
// alias skillup_custom_fullmp input /equip main "Light Staff";input /equip body "Body Armor"
//
// CUSTOM WEAPON SKILL: This can be loaded only after your first wait and only if you have 
// a custom autoexec event at the start of your macro code. Check the run once examples above.
// If you place this at the very start and have a regain effect you may lose TP if the 
// target isn't in range. The first wait allows delay time to get in range. By changing this
// in your code. You can also change it to swap auto weapon skills in the middle of the custom 
// code.
//
// Custom Weapon Skill (both lines) Example below. \/
// skillup_cmd_once skillup_wait5s
// alias skillup_custom_wskill skillup_send /ws "Fastblade"
//
// CODE (Everything in middle): 
// --1: prefix FFXI commands with skillup_send - use skillup_cmd for Windower commands.
// --   Normal Example: skillup_send /ma cure <me>
// --   Spellcast Example: skillup_cmd cure me
// --2: do NOT use wait or pause. you must use the pre provided commands,
// --   skillup_waiths (half second) through skillup_wait20s, and 30s/45s/1m provided.
// --3: plugin commands like 'cancel' are fine, just dont forget to use them with
// --   skillup_cmd and not by themselves!!!
// 
// END LINE: !skillup_run
// The ! before skillup_run is VERY IMPORTANT. If you forget to put this, your game
// will possibly crash. Do not forget it.
//
// --\/-- Skillupcore Alias Code - Do Not Modify --\/--
alias skillup_reload skillup_stop;pause 2;echo [Skillupcore Script Restarting];pause 0.5;exec skillupcore.txt
alias skillup_clear1 ae unregister 50101;ae unregister 50102;ae unregister 50103;ae unregister 50104;ae unregister 50105;ae unregister 50106;ae unregister 50107
alias skillup_clear2 ae unregister 50201;ae unregister 50202;ae unregister 50203;ae unregister 50204;ae unregister 50205;ae unregister 50206;ae unregister 50207;ae unregister 50208;ae unregister 50209;ae unregister 50210
alias skillup_clear3 ae unregister 50211;ae unregister 50212;ae unregister 50213;ae unregister 50214;ae unregister 50215;ae unregister 50216;ae unregister 50217;ae unregister 50218;ae unregister 50219;ae unregister 50220
alias skillup_init :;alias skillup_run skillup_once;alias skillup_exe skillup_file;alias skillup_send input;alias skillup_waiths pause 0.5;alias skillup_wait1s wait 1;alias skillup_custom_lowmp /;alias skillup_send_once skillup_send;alias skillup_cmd_once skillup_cmd;alias skillup_custom_fullmp /;alias skillup_custom_wskill /;alias skillup_cmd :\\;
alias skillup_once :;alias skillup_send_once /;alias skillup_cmd_once /;skillup_file
alias skillup_start skillup_pause;skillup_clear1;skillup_clear2;skillup_clear3;echo [Skillupcore Script Running in Normal Mode];input /heal off;pause 2;ae registerq 50101 (regex)mpp_[0-9](/regex) skillup_lowmp;ae registerq 50103 (regex)chat_(tell|emote|say)_.*$(/regex) skillup_chatstop;ae registerq 50104 status_idle skillup_resume;ae registerq 50106 (regex)status_(resting|dead|zoning)(/regex) skillup_resting;ae registerq 50107 time_*.* skillup_auto_events;skillup_init;exec
alias skillup_launch skillup_pause;skillup_clear1;skillup_clear2;skillup_clear3;echo [Skillupcore Script Running in Ignore Mode];input /heal off;pause 2;ae registerq 50101 (regex)mpp_[0-9](/regex) skillup_lowmp;ae registerq 50104 status_idle skillup_resume;ae registerq 50106 (regex)status_(resting|dead|zoning)(/regex) skillup_resting;ae registerq 50107 time_*.* skillup_auto_events;skillup_init;exec
alias skillup_engage skillup_pause;skillup_clear1;skillup_clear2;skillup_clear3;echo [Skillupcore Script Running in Combat Mode];ae registerq 50104 (regex)status_(idle|resting|dead|zoning)(/regex) skillup_asleep;ae registerq 50105 status_engaged skillup_wakeup;ae registerq 50107 time_*.* skillup_auto_events;skillup_init;alias skillup_file exec
alias skillup_pause :;alias skillup_waiths /;alias skillup_wait1s /;alias skillup_run /;alias skillup_send /;alias skillup_cmd /;alias skillup_send_once /;alias skillup_cmd_once /;alias skillup_event1 /;alias skillup_event2 /;alias skillup_event3 /;alias skillup_event4 /;
alias skillup_asleep ae unregister 50107;skillup_clear2;skillup_clear3;skillup_pause
alias skillup_wakeup ae registerq 50107 time_*.* skillup_auto_events;skillup_init;skillup_exe;
alias skillup_stop skillup_pause;skillup_clear1;skillup_clear2;skillup_clear3;pause 0.5;echo [Skillupcore Script Stopped]
alias skillup_resume skillup_pause;wait 1;skillup_custom_fullmp;ae registerq 50101 (regex)mpp_[0-9](/regex) skillup_lowmp;ae unregister 50102;ae unregister 50104;echo [Skillupcore Resume];input /heal off;pause 2;ae registerq 50104 status_idle skillup_resume;ae registerq 50107 time_*.* skillup_auto_events;skillup_init;skillup_exe;
alias skillup_resting skillup_custom_lowmp;ae registerq 50102 (regex)mpp_(100|9[5-9])(/regex) skillup_fullmp;ae unregister 50101;ae unregister 50107;skillup_pause;echo [Skillupcore Paused]
alias skillup_lowmp skillup_pause;input /heal on
alias skillup_fullmp skillup_init;input /heal off
alias skillup_auto_events skillup_event1;skillup_event2;skillup_event3;skillup_event4
alias skillup_waiths /;
alias skillup_wait1s /;
alias skillup_wait2s skillup_wait1s;skillup_wait1s;
alias skillup_wait3s skillup_wait2s;skillup_wait1s;
alias skillup_wait4s skillup_wait3s;skillup_wait1s;
alias skillup_wait5s skillup_wait4s;skillup_wait1s;
alias skillup_wait6s skillup_wait5s;skillup_wait1s;
alias skillup_wait7s skillup_wait6s;skillup_wait1s;
alias skillup_wait8s skillup_wait7s;skillup_wait1s;
alias skillup_wait9s skillup_wait8s;skillup_wait1s;
alias skillup_wait10s skillup_wait9s;skillup_wait1s;
alias skillup_wait11s skillup_wait10s;skillup_wait1s;
alias skillup_wait12s skillup_wait11s;skillup_wait1s;
alias skillup_wait13s skillup_wait12s;skillup_wait1s;
alias skillup_wait14s skillup_wait13s;skillup_wait1s;
alias skillup_wait15s skillup_wait14s;skillup_wait1s;
alias skillup_wait16s skillup_wait15s;skillup_wait1s;
alias skillup_wait17s skillup_wait16s;skillup_wait1s;
alias skillup_wait18s skillup_wait17s;skillup_wait1s;
alias skillup_wait19s skillup_wait18s;skillup_wait1s;
alias skillup_wait20s skillup_wait10s;skillup_wait10s;
alias skillup_wait30s skillup_wait15s;skillup_wait15s;
alias skillup_wait45s skillup_wait30s;skillup_wait15s;
alias skillup_wait1m skillup_wait30s;skillup_wait30s;
// --/\-- skillupore Alias Code - Do Not Modify --/\--
echo ---- Commands List ----
echo events (list all autoexec events)
echo orders (list all loaded aliases)
echo stop (stops, halts or pauses skillup)
echo restart (reloads this core file)
echo start <filename.txt> (for normal mode)
echo engage <filename.txt> (for combat mode)
echo launch <filename.txt> (same as start except ignores chat)
echo exitskillup (closes with full clear)
// ::---- Commands alias ----
alias restart skillup_reload
alias engage skillup_engage
alias launch skillup_launch
alias start skillup_start
alias stop skillup_stop
alias exitskillup skillup_pause;pause 2;exec exitskillup.txt
alias orders listaliases
alias events ae list echo;pause 2;input /echo ===== Done Listing Events =====


what i would use is this skill up core, generally its for automated skll ups with blue magic, geomancer magic, enhancing magic or healing magic..

1.]you have to have the auto exec plugin loaded for it to work
2.] then you would type //exec SKILLUPCORE.txt
3.] then type //skillup_start cureskillup.txt

3b.] make a cureskillup.txt in your scripts folder like so:
Code
alias skillup_file exec cureskillup.txt

skillup_send /ma "Refresh" <me>
skillup_wait8s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s
skillup_send /ma "Cure" <me>
skillup_wait6s

!skillup_run


the first line and the last line is most impotant

4.] and then whenever you want to stop you just type //stop

this is what i would use since i dont use luas, but i also dont play any ranged jobs.
 Leviathan.Celebrindal
Offline
Server: Leviathan
Game: FFXI
Posts: 1027
By Leviathan.Celebrindal 2018-06-13 19:50:55
Link | Quote | Reply
 
ok since people keep bringing up the same style "autoRA" scripting concept and calling it an autoRA-

for those of you who have made a giant file with alternating lines of "/ra <t>" and "wait <whatever>", you haven't made an autoRA plugin, or anything close to it.

I'll try to explain in terms of magic, since everyone seems to think this would work like a skillup script. Imagine a completely bonkers scenario on BLM where instead of bursting or casting your highest damage spell your best DPS option was to spam Thunder III. So you create one of these scripts of the style above with "/ma "Thunder III" <t>", "/wait 8" (the wait to account for both casting time and recast, and is completely made up). Now, imagine you just start this script and leave it, next to someone who's casting Thunder III every time its up. What happens when the script gets a quickmagic proc? Nothing, the script still does a /wait 8. What happens when the real player gets a quickmagic proc? They cast the next Thunder III about 7 seconds sooner than the script because they react to the lack of a recast penalty and instant casting.

Now imagine that quickmagic procced over 50% of the time.

That's what's going on with ranged attacks, with quickmagic being rapid shot. OH WAIT- but its not even that simple, because Rapid Shot can proc in fractions meaning that not every Rapid Shot proc is the same delay reduction.

Now do you see why a script bot built around the standard capped Snapshot and weapon delay parameters is complete garbage?
[+]
Log in to post.