Item Search
     
BG-Wiki Search
+ Reply to Thread
Page 6 of 286 FirstFirst ... 4 5 6 7 8 16 56 ... LastLast
Results 101 to 120 of 5715

Thread: Gearswap Help Thread!     submit to reddit submit to twitter submit to tumblr

  1. #101
    BG Content
    Join Date
    Jul 2007
    Posts
    15,881
    BG Level
    9
    FFXI Server
    Lakshmi
    Blog Entries
    1

    This is an error in split. It'll be fixed later today and I'm just going to start using the library version of the split function.

  2. #102
    Smells like Onions
    Join Date
    Dec 2013
    Posts
    1
    BG Level
    0
    FFXI Server
    Lakshmi

    Is anyone working on or currently has a ranger or corsair gearswap script they'd be willing to share?

  3. #103
    BG Content
    Join Date
    Jul 2007
    Posts
    15,881
    BG Level
    9
    FFXI Server
    Lakshmi
    Blog Entries
    1

    v0.800 GearSwap will probably go live later today. It features:
    * The addition of a "pretarget" function. This function will be called when there is a valid spell in the outgoing text buffer and will be passed the current spell/abil tables. This is the only function where change_target() will be valid now. In the event of an <st*> target, there will be no information in the spell.target table beyond spell.target.raw. Otherwise, all functions valid in pretarget are valid here. This is the solution to <st*> targs.
    * "precast" will now be the time right before sending the outgoing action packet. This is where cast_delay and verify_equip() will be implemented.
    * "buff_change" used to pass a string as its second argument that was either "gain" or "loss." I received several comments that this was confusing. Now it will be buff_change(<buff name>,<gain>). If <gain> is true, then you gained the buff. If it's false, you lost the buff. Keep in mind that buff_change only fires when your buff line changes. It will not fire if you overwrite a Minuet on yourself, for instance.
    * Various internal changes that hopefully no one will notice.
    * I exposed another library or two to the user environment. If you weren't already looking for these then you probably won't care about them.
    * Updated documentation of course.


    I've noticed that Bokwus/Manibozho/etc. "Path" augmented gear is not handled by the augment parser. Sorry. They use a different format than everything else. I'll see what I can do.

  4. #104
    Chram
    Join Date
    Sep 2007
    Posts
    2,527
    BG Level
    7
    FFXI Server
    Fenrir

    Updated my lua files to be compatible with 0.8, along with a ton of bug fixes and improvements. Very close to release-worthy. For now, still in test phase, however I've been actively using them instead of spellcast and haven't had any real show-stoppers.

  5. #105
    BG Content
    Join Date
    Jul 2007
    Posts
    15,881
    BG Level
    9
    FFXI Server
    Lakshmi
    Blog Entries
    1

    One more major change to GearSwap is incoming. Thorny, Motenten, Arcon, Cair, Iryoku, and everyone else on #lua that I've forgotten deserve a lot of credit for these adjustments. It's going to be a big QoL boost for all GearSwap users.

    This might require minor adjustment by users, but the API should be generally unchanged. I will, however, be changing the precast/midcast definitions.


    Currently:
    Code:
    pretarget - When the full, SE-format-valid command hits the outgoing text event.
    precast - When the outgoing action packet hits the outgoing chunk event.
    midcast - When an incoming action packet (that codes an action) hits the incoming chunk event.
    aftercast - When an incoming action packet or action message packet (that codes completion or interruption of an ability/spell) hits the incoming chunk event
    pet_midcast - When an incoming action packet (that codes an action by your pet) hits the incoming chunk event.
    pet_aftercast - When an incoming action packet or action message packet  (that codes completion or interruption of an ability/spell by your pet) hits the incoming chunk event
    The future:
    Code:
    pretarget - When the full, SE-format-valid command hits the outgoing text event.
    precast - When the outgoing action packet can be calculated.
    midcast - When the outgoing action packet can be calculated.
    aftercast  - When an incoming action packet or action message packet (that codes  completion or interruption of an ability/spell) hits the incoming chunk  event
    pet_midcast - When an incoming action packet (that codes an action by your pet) hits the incoming chunk event.
    pet_aftercast - When an incoming action packet or action message packet  (that codes completion or interruption of an ability/spell by your pet) hits the incoming chunk event
    It turns out that the server absolutely respects the order of chunks and that I can force an outgoing UDP packet to send by putting a dummy command in the command buffer. Also, windower sticks any injected outgoing packets onto the end of the next outgoing packet in the order that they were injected. So I can do:

    * User command comes in (text)

    * GearSwap triggers pretarget using the information inferred from that command.
    ** This injects pretarget equip packets.

    * If the spell is not canceled, GearSwap converts the result to an action packet if possible and block the text.
    ** If it is not possible, GearSwap lets the text go through (st commands) and waits until it can calculate an action packet from it, then blocks that outgoing text

    * Now that GearSwap has the outgoing action packet, it triggers precast with it.
    ** This injects precast equip packets.

    * If the spell is not canceled, GearSwap now injects the action packet.

    * Now that GearSwap has injected the action packet, everything injected after this point will be considered to be after the action. Thus, it triggers midcast.
    ** This injects midcast equip packets.

    * Now that the pretarget, precast, and midcast events are all finished, GearSwap adds "/assist <me>" to the outgoing text buffer.

    * This is treated as a command and cues an outgoing UDP packet, which sends the pretarget gear, precast gear, action packet, and midcast gear.

    * GearSwap intercepts the "/assist <me>" chunk and blocks it, but the rest of the packet goes out as designed.
    So now GearSwap has injected entirely accurate precast gear and midcast gear with totally negligible / no added cast delay. I've clocked this at 0.25-0.55 seconds Text command -> server response latency, which is approximately exactly what I get without GearSwap running.


    You want to precast and midcast Stone 1? You got it, budday.

    Now that I think about it, it might even be possible to midcast weaponskills. That would require some testing... but there's no real benefit to it over precasting them.

  6. #106
    Old Merits
    Join Date
    Sep 2010
    Posts
    1,078
    BG Level
    6
    FFXI Server
    Ragnarok

    Quote Originally Posted by Byrthnoth View Post
    So now GearSwap has injected entirely accurate precast gear and midcast gear with totally negligible / no added cast delay. I've clocked this at 0.25-0.55 seconds Text command -> server response latency, which is approximately exactly what I get without GearSwap running.


    You want to precast and midcast Stone 1? You got it, budday.

    Now that I think about it, it might even be possible to midcast weaponskills. That would require some testing... but there's no real benefit to it over precasting them.
    Byrth, I am in awe. I really need to start learning lua. o.o

  7. #107
    An exploitable mess of a card game
    Join Date
    Sep 2008
    Posts
    13,297
    BG Level
    9
    FFXIV Character
    Gouka Mekkyaku
    FFXIV Server
    Gilgamesh
    FFXI Server
    Diabolos

    Quote Originally Posted by Martel View Post
    Byrth, I am in awe. I really need to start learning lua. o.o
    Byrth is like Nomura at E3 atm.

  8. #108
    Faster than Walt Flanagan's Dog
    Join Date
    May 2008
    Posts
    204
    BG Level
    4
    FFXI Server
    Asura

    Working on a COR GS, and I want to put in a check so I dont shoot off my QD bullet, in spellcast I have
    Code:
    <if commandprefix="/range|/ra|/weaponskill|/ws">
    		<if EquipAmmo="Animikii bullet">
    			<cancelspell />
    			<equip when="all"><ammo>remove</ammo></equip>
    			<addtochat>Trying to shoot Animikii Bullet. Action cancelled.</addtochat>
    			<return />
    		</if>
    	</if>
    What would be the best way to go about it in lua? Also I'm guessing this would go in the precast section? Thanks.

  9. #109
    BG Content
    Join Date
    Jul 2007
    Posts
    15,881
    BG Level
    9
    FFXI Server
    Lakshmi
    Blog Entries
    1

    Code:
    if spell.name:lower() == 'ranged attack' and player.equipment.ammo:lower() == 'animikii bullet' then
        cancel_spell()
        add_to_chat(8,'Danger, Will Robinson! Attempting to shoot Animikii Bullet! Cancelled!')
        return
    end
    Test it with something other than your rare bullet first.


    Also, a version of GearSwap with the instant precast/midcasts is on the -dev launcher. Avoid using items on yourself and make sure it loads after Shortcuts.

  10. #110
    An exploitable mess of a card game
    Join Date
    Sep 2008
    Posts
    13,297
    BG Level
    9
    FFXIV Character
    Gouka Mekkyaku
    FFXIV Server
    Gilgamesh
    FFXI Server
    Diabolos

    Quote Originally Posted by solkanar View Post
    Working on a COR GS, and I want to put in a check so I dont shoot off my QD bullet, in spellcast I have
    Code:
    <if commandprefix="/range|/ra|/weaponskill|/ws">
    		<if EquipAmmo="Animikii bullet">
    			<cancelspell />
    			<equip when="all"><ammo>remove</ammo></equip>
    			<addtochat>Trying to shoot Animikii Bullet. Action cancelled.</addtochat>
    			<return />
    		</if>
    	</if>
    What would be the best way to go about it in lua? Also I'm guessing this would go in the precast section? Thanks.
    Haven't picked up lua myself, but the guide + variable list (See your GS folder > Examples > Variables) seems to indicate:

    if spell.prefix=="/ws" or spell.prefix="/ra" and player.equipment.ammo=="item" then
    cancel_spell()
    end

  11. #111
    Sea Torques
    Join Date
    Jun 2012
    Posts
    570
    BG Level
    5
    FFXI Server
    Asura
    WoW Realm
    The Scryers

    Code:
    		if spell.target.type == 'PLAYER' and not buffactive.pianissimo then
    			cast_delay(1.5)
    			windower.send_command([email protected] /raw /ja "Pianissimo" <me>')
    		end
    is not working anymore, is there any workaround or is a bug?

  12. #112
    BG Content
    Join Date
    Jul 2007
    Posts
    15,881
    BG Level
    9
    FFXI Server
    Lakshmi
    Blog Entries
    1

    Code:
    if spell.target.type == 'PLAYER' and not buffactive.pianissimo and not spell.target.charmed then
        cancel_spell()
        send_command('input /ja "Pianissimo" <me>;wait 1.5;input /ma "'..spell.name..'" <me>;')
    end

  13. #113
    Relic Shield
    Join Date
    Oct 2006
    Posts
    1,604
    BG Level
    6
    FFXI Server
    Odin

    Quote Originally Posted by Byrthnoth View Post
    Code:
    if spell.target.type == 'PLAYER' and not buffactive.pianissimo and not spell.target.charmed then
        cancel_spell()
        send_command('input /ja "Pianissimo" <me>;wait 1.5;input /ma "'..spell.name..'" <me>;')
    end
    I think he meant:

    Code:
    if spell.target.type == 'PLAYER' and not buffactive.pianissimo and not spell.target.charmed then
        cancel_spell()
        send_command('input /ja "Pianissimo" <me>;wait 1.5;input /ma "'..spell.name..'" <t>;')
    end

  14. #114

    Had a few questions about BLU and GS please,

    1) What would be the best way to handle spells with GS, since BLU has different sets for STR DEX AGI MND etc spells would it be better to have the sets at the top in get_sets, and in the precast function have the grouped spells all listed by type OR should/could i have the spells referenced at the top in the get_sets function and the precast would be a generic spell.name?

    2) For spells like stoneskin, or cure spells where I want to precast in fastcast gear but finish in recast or Cure Pot gear I assume I would need to have them in both precast and midcast function? Or is it possible to not have them repeat like that?

    3) I use a F10 bind for WS which also doubles as a quick way to change back to idle gear if for whatever reason I am not in idle.
    Code:
    <elseif commandprefix="/weaponskill" >
    	<if  status="Engaged">
    
    		blah blah blah
    	
    	</if>
    	<else>
    		<cmd>CombatMode</cmd>
    		<cancelspell />
    		<return />
    	</else>
    </elseif>
    Above is a sample of the code used to do that, the <else> part from when not engaged would fire combatmode for aftercast, I believe aftercast () call would work but the syntax for that I am not sure of.

    4) Organizing the layout, I tend to want to organize things either alphabetically, in order of relevance or by type. I am not sure if function must be ordered a certain way or they wont work right, able to shed any light on that please?
    The way I would like to order would be:
    get_sets
    self_command
    status_change
    precast
    midcast
    aftercast
    with event inside each group in alphabetical order if possible.

    5) verify_equip() it was mentioned that it is bad to use in high lag events/zones, I am wondering if that is because the action would just take longer to fire because it takes more time to verify that gear has changed or if something else would happen?
    I noticed at least with the limited testing I did and eyeballing so not that accurate that it seemed the BLU spells would start to cast a fraction of a second before I would blink gear. I am not sure if that is just cosmetic issue or if the server didnt calculate the gear change. So I guess the real question would be, should I worry about either a cast delay 0.3, verify_equip() or nothing at all?

    I thank you for the help in answering these questions.

  15. #115
    Chram
    Join Date
    Sep 2007
    Posts
    2,527
    BG Level
    7
    FFXI Server
    Fenrir

    1) There are a few ways to handle it. What I would do is probably something like this:


    Code:
        bluSpellStats = T{"spell1"="stat1", "spell2"="stat1", "spell3"="stat1",
                      "spell4"="stat2", "spell5"="stat2", etc... }
                     
        bluSpells = {default fallback gear set}
        bluSpells.stat1 = {default gear set for stat 1}
        bluSpells.stat2 = {default gear set for stat 2}
    
        bluSpells.spell1 = {unique gear set for spell 1}
        bluSpells.spell2 = set_combine(bluSpells.stat1, {some other item})
        
        
        if spell.skill=="BlueMagic" then
            if bluSpells[spell.english] then
                equip(bluSpells[spell.english])
            elseif bluSpellStats[spell.english] then
                equip(bluSpells[bluSpellStats[spell.english]])
            else
                equip(bluSpells)
            end
        end

    2) Yes, you need to specify what gear you want to change in midcast if you want the gear to change in midcast.


    3) Bind:
    /console gs c tryweaponskill

    And then handle it in the self_command(commandArgs) function. If commandArgs == 'tryweaponskill', either send_command() the weaponskill you want to use, or equip() your idle set.

    4) If you keep everything in functions then you shouldn't have a problem. The entire file should be loaded before the first function is called, so you don't have to worry about something not being declared yet. If you put code at the 'global' level of the file, where it's going to run as soon as it tries to load the file, then you may have issues. However I wouldn't recommend doing that unless you are very sure of what you're doing.

    5) verify_equip() is being deprecated since it's not needed anymore (dev version, not live yet). I wouldn't worry too much about it right now. The gear you specify should always be equipped at the appropriate time (ie: stuff you call equip() for in the precast() function will be equipped before the spell is cast).

  16. #116

    1) I am really new to this still, so if done your way the spell stats would be done in the get_sets function?

    3) The only issue with doing it that way is that I use a macro+variable to bind either CDC or Req to f10 as i see fit. Is there another way to maybe do this?

  17. #117
    BG Content
    Join Date
    Jul 2007
    Posts
    15,881
    BG Level
    9
    FFXI Server
    Lakshmi
    Blog Entries
    1

    3) set up a second self command "toggle WS" that toggles between CDC and Requiescat.


    As far as the next version of GearSwap, we've confirmed that precast/midcast are accurate regardless of casting time. Also, there's no more need for a delay between changing gear and casting Impact.

    If someone else doesn't do it first, tonight I'm going to test whether there are things (like TP Bonus) that affect WSs when worn at precast but you can take them off for midcast. If it turns out that everything for WSs is calculated at precast, then I will make it so that the "midcast" phase is an aftercast for WSs and there will be no chance of ever going an attack round in your WS gear. If there is a reason to have a midcast phase for WSs, then we will continue to have a midcast phase. I'm going to make the "midcast" phase into "aftercast" for JAs regardless, because they don't have a readies phase.

    This is weirdly stable and might be ready to be pushed as soon as tomorrow night.

  18. #118
    Sea Torques
    Join Date
    Jun 2012
    Posts
    570
    BG Level
    5
    FFXI Server
    Asura
    WoW Realm
    The Scryers

    Quote Originally Posted by Mafai View Post
    I think he meant:

    Code:
    if spell.target.type == 'PLAYER' and not buffactive.pianissimo and not spell.target.charmed then
        cancel_spell()
        send_command('input /ja "Pianissimo" <me>;wait 1.5;input /ma "'..spell.name..'" <t>;')
    end
    thanks but isn't working... don't even use pianissimo.

  19. #119

    Ok so say I want to do the route where get_sets has the spells and precast function does just a generic call.
    how would i add multiple spells under one set?
    Code:
    	sets.precast.WS['Chant du Cygne'] = {head="Uk'uxkaj Cap",neck="Light Gorget",lear="Bladeborn Earring",rear="Steelflash Earring",
    		body="Assim. Jubbah +1",hands="Assim. Bazu. +1",
    		back="Rancorous Mantle",waist="Wanion Belt",legs="Manibozho Brais",feet="Assim. Charuqs +1"}
    above is the set where CDC would be called based on spell name, if I wanted both CDC and Req to use the same set how would I add Requisicat to the list?

  20. #120
    Sea Torques
    Join Date
    Jun 2012
    Posts
    570
    BG Level
    5
    FFXI Server
    Asura
    WoW Realm
    The Scryers

    Quote Originally Posted by nikia View Post
    Ok so say I want to do the route where get_sets has the spells and precast function does just a generic call.
    how would i add multiple spells under one set?
    Code:
    	sets.precast.WS['Chant du Cygne'] = {head="Uk'uxkaj Cap",neck="Light Gorget",lear="Bladeborn Earring",rear="Steelflash Earring",
    		body="Assim. Jubbah +1",hands="Assim. Bazu. +1",
    		back="Rancorous Mantle",waist="Wanion Belt",legs="Manibozho Brais",feet="Assim. Charuqs +1"}
    above is the set where CDC would be called based on spell name, if I wanted both CDC and Req to use the same set how would I add Requisicat to the list?
    I would make a base set like
    Code:
    sets.precast.WS = {head="Uk'uxkaj Cap",neck="Light Gorget",lear="Bladeborn Earring",rear="Steelflash Earring",
    		body="Assim. Jubbah +1",hands="Assim. Bazu. +1",
    		back="Rancorous Mantle",waist="Wanion Belt",legs="Manibozho Brais",feet="Assim. Charuqs +1"}
    then for CdC if is exactly the same set, (and if Requiescat is the same set)

    Code:
    sets.precast.WS['Chant du Cygne'] = sets.precast.WS
    sets.precast.WS['Requiescat'] = sets.precast.WS
    Another Ex. using set_combine, assuming is the WS is the base set for Requiescat

    Code:
    sets.precast.['Requiescat']= set_combine(sets.precast.WS, {
        left_ring="Requiestcat Ring",
        right_ring="Requiestcat Ring",
        waist ="Requiestcat waist",
    })

+ Reply to Thread
Page 6 of 286 FirstFirst ... 4 5 6 7 8 16 56 ... LastLast

Similar Threads

  1. Replies: 6547
    Last Post: 2014-07-08, 22:45