Item Search
     
BG-Wiki Search
Closed Thread
Page 5 of 302 FirstFirst ... 3 4 5 6 7 15 55 ... LastLast
Results 81 to 100 of 6036

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

  1. #81
    BG Content
    Join Date
    Jul 2007
    Posts
    21,105
    BG Level
    10
    FFXI Server
    Lakshmi
    Blog Entries
    1

    So, I've been able to replicate the "...A command error occurred." flipping between precast and aftercast problem. I think it might be an advanced form of the ABA problem, and I'm not exactly sure how to address it at the moment.

    Now that you guys have dug into it a little, are there any specific features that might make GearSwap easier to use that you find yourself wanting?

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

    Quote Originally Posted by Byrthnoth View Post
    So, I've been able to replicate the "...A command error occurred." flipping between precast and aftercast problem. I think it might be an advanced form of the ABA problem, and I'm not exactly sure how to address it at the moment.

    Now that you guys have dug into it a little, are there any specific features that might make GearSwap easier to use that you find yourself wanting?
    baseset? SC ex.

    Code:
    		<set name = "VSimpetus" baseset="VS" >
    			<body>Tantra Cyclas +2</body>
    			<back>Rancorous mantle</back>
    			<ammo>Potestas bomblet</ammo>
    		</set>
    Easier to update gearsets, in my MNK.lua.. most WS gear is the same besides few pieces, so for updating have to review every set...

    probably something like that already in GS, saw a code that have 2 sets in a precast function.. but not much documentation how use it/works..

  3. #83
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    At this point, the only thing I can think of is being able to change the <st*> target type. The user-level API doesn't need much, and you've basically got it covered. All the advanced stuff I can think of can be implemented on the user side.

    Definitely want to say thank you for this. It's a tremendous amount of work to build the interface between the game and what the end-user needs, and you've done a great job.

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

    Quote Originally Posted by JSHidaka View Post
    baseset? SC ex.

    Code:
    		<set name = "VSimpetus" baseset="VS" >
    			<body>Tantra Cyclas +2</body>
    			<back>Rancorous mantle</back>
    			<ammo>Potestas bomblet</ammo>
    		</set>
    Easier to update gearsets, in my MNK.lua.. most WS gear is the same besides few pieces, so for updating have to review every set...

    probably something like that already in GS, saw a code that have 2 sets in a precast function.. but not much documentation how use it/works..
    In sets:
    Code:
    	sets.precast.FC.BardSong = {main="Felibre's Dague",
    		head="Aoidos' Calot +2",neck="Aoidos' Matinee",ear1="Aoidos' Earring",ear2="Loquac. Earring",
    		body="Sha'ir Manteel",hands="Gendewitha Gages",ring1="Prolix Ring",
    		back="Swith Cape",waist="Aoidos' Belt",legs="Gendewitha Spats",feet="Bokwus Boots"}
    
    	sets.precast.FC.Daurdabla = set_combine(sets.precast.FC.BardSong, {range="Daurdabla"})
    In code:
    Code:
        equip(sets.midcast.FastRecast, sets.midcast.SongRecast)
    Applies the first listed set first, and then adds each additional set on top of that.

  5. #85
    BG Content
    Join Date
    Jul 2007
    Posts
    21,105
    BG Level
    10
    FFXI Server
    Lakshmi
    Blog Entries
    1

    If you look in the documentation, you'll notice set_combine(set1,set2,...) This collapses an arbitrary number of sets right to left and serves the same function as baseset.

    Code:
    sets.VSimpetus = set_combine(sets.VS,
        {body="Tantra Cyclas +2",
         back="Rancorous Mantle",
         ammo="Potestas Bomblet"})
    I pushed out GearSwap v0.723. This includes my refactoring of equip_processing and removes the 1 second midaction freeze following actions. The midaction() function now takes a boolean argument that will set midaction to be true or false. If used without an argument, it still returns whether or not you are in the middle of an action (between precast and aftercast of something). This value will still be updated by GearSwap itself. Here's an example of how to use it:

    Code:
    function precast(spell,abil)
        if midaction() then
            midaction_counter = midaction_counter + 1
            if midaction_counter > 3 then
                midaction(false)
                midaction_counter = 0
            else
                return
            end
        else
            midaction_counter = 0
        end
    end
    The above code would prevent your first 3 attempts to start a new action after initiating an action. The below code just adds the 1 second midaction delay back in, for those that liked it:

    Code:
    function precast(spell,abil)
        if midaction() then
                return
        else
            windower.send_command('wait 1;gs c midact')
        end
    end
    
    function self_command(cmd)
        if cmd == 'midact' then
            midaction(false)
        end
    end

    PS. Oops! Should have re-loaded. Thanks, Motenten! Arcon deserves a substantial amount of credit as well for writing a ton of functions into the LuaCore API basically just because I requested them.

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

    Nice, I "knew" saw something like that messing with the files lol, let me "fix" my file

    btw, Byrthnoth were you able to fix the issue about not WS after boost? ( to know if still need to have the cast_delay )

    EDIT...

    Ya it is fixed, just did a full salvage run w/o any Issue, ended removing the cast_delay was feeling it that the ws was taking longer to go, and ended the run w/o major issue... just Shortcuts that dont work w/ Autotranslate words

  7. #87
    BG Content
    Join Date
    Jul 2007
    Posts
    21,105
    BG Level
    10
    FFXI Server
    Lakshmi
    Blog Entries
    1

    Hmmm... It should. I will check later to see why it is not working.



    Edit: okay, now it works.

  8. #88
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Byrth, since you're using custom timers for songs in your brd lua, how do you keep the regular versions from showing up? (thought I saw a pref for that somewhere, but can't find it now) Also noticed that the custom timer calculations ended a few seconds before the spell did, while the automatic versions were right on time.

  9. #89
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Also, I think I have a solution to my st* woes: It would work fine in a forward-casting manner, as long as I avoid side-casting. That is, I can change from <t> or <me> to <st*> since I'll only get a single selection prompt, but not from one <st*> to another. Have to see how that would work.

  10. #90
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Built in target conversion for <t> to <st*> values. Treats PC spells separately from NPCs. Uploaded experimental version for brd and whm. Can toggle NPC targetting with Ctrl+-, and PC targetting type with Ctrl+=. The binds are defined at the bottom of the get_sets() function. I'll have time to test it out more later on, but posted in case anyone wanted to play with it.

    Edit: Bah, forgot. Don't bother trying it out, it won't work for anyone else until Byrth fixes a bug in GearSwap.

  11. #91
    BG Content
    Join Date
    Jul 2007
    Posts
    21,105
    BG Level
    10
    FFXI Server
    Lakshmi
    Blog Entries
    1

    Derp, this is going to have to wait about a day for me to figure out what is wrong with split().

  12. #92
    Old Odin
    Join Date
    Oct 2006
    Posts
    6,198
    BG Level
    8
    FFXI Server
    Asura

    I am sorry for this random question, but is there somewhere a guide how Gearswap works and where to get it?

  13. #93
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Where to get it: toggle it in the Addons tab when loading Windower.

    How it works: Not much in the way of guides so far. When you install the addon it provides a spreadsheet in the addon folder of all the variables and functions you can access, and there are some example files to work from. If you have any knowledge of programming, and have at least read over the basics of how lua works, it's not too hard to get started.

    I have documentation of my own include on my pastebin, if you were inclined to try that out (it's a bit more complicated of a system, but also minimizes the amount of work needed for each job). Otherwise, there's been a couple other samples that people have posted in the thread; you can look at those.

  14. #94

    SCH.lua

    Please pardon the mediocre gear, but I have a working 1.0 version of a sch.lua I just wanted to post. I suck at actually documenting my code, but here it is. It uses self_command to emulate the mote sch.xml functionality with strategems.

    http://pastebin.com/AeERyE2X

    It works pretty well, and dynamically builds fast cast and midcast sets at precast. It will add any relevant gear for strategems as well. I currently have that doing it at both precast and midcast just to make sure it is working, but it could easily be locked down to one or the other if necessary or desired.

    Byrth, I did a lot of work using print_set while my equip actions were having problems and I noticed something if you are using variables to store augmented gear. If you print a set using such gear, you will get item names for everything normal in the set, and you will get a table reference for the gear that is using the advanced table.

  15. #95
    Can you spare some gil?
    Join Date
    Feb 2009
    Posts
    8,577
    BG Level
    8

    Quote Originally Posted by Cairthenn View Post
    You can simulate groups with table keys or variable names.

    For example, on samurai.

    sets["TP"] = {}

    sets["TP"]["Kogarasumaru"] = {}

    sets["TP"]["Kogarasumaru"]["Hybrid"] = { equip }
    sets["TP"]["Kogarasumaru"]["acc stuff"] = {equip}

    sets["TP"]["Amanomurakumo"] = {}
    sets["TP"]["Amanomurakumo"]["Hybrid"] = { equip } etc...

    You could then point to either with something like: equip(sets["TP"][equipment.main]["Hybrid"])
    To expand on this, how would I call to switch between the equip main? would I need a string to do it, or would gear swap automatically pick up on the change?

  16. #96
    The Syrup To Waffles's Waffle
    Join Date
    Jun 2007
    Posts
    5,053
    BG Level
    8
    FFXIV Character
    Cair Bear
    FFXIV Server
    Excalibur
    FFXI Server
    Fenrir

    Use an equip command like this: equip(sets.TP[equipment.main]["Hybrid"])

    You can use a var as well if you want.

  17. #97
    BG Content
    Join Date
    Jul 2007
    Posts
    21,105
    BG Level
    10
    FFXI Server
    Lakshmi
    Blog Entries
    1

    Preparing for version 0.800:

    <st*> targs:

    I've been thinking about how to deal with these still, and I think I'm going to take Motenten's suggestion and make a pretarget function. This will be the only function where change_target is valid. spell.target will be filled with information here unless the target.raw is an <st*> target, and it will receive the same information as everything else. The reason for my change of heart is...

    precast:
    So, there have always been two ways I could handle precast
    * The first way is to catch outgoing text and hold it up similar to SpellCast, which is the way that I initially had to implement precast when LuaCore on v4.1 still had a packet whitelist for outgoing packets. However, it no longer does.
    * The second way to implement precast would be to catch the outgoing action packets and hold them. This has a few benefits and one drawback:
    1) Outgoing action packets are unambiguous, so there would be no more instances of incorrect resources lines being pulled.
    2) GearSwap would no longer necessarily conflict with Spellcast (unless you used change_target in pretarget, maybe)
    3) Spell target would be totally unambiguous.
    4) Despite SE pushing random things through the outgoing text buffer that you wouldn't expect (like /quest when you click the button to open your quest menu), they do not use it for all actions. Using HELM tools from the items menu appears to bypass the outgoing text buffer, which means that I currently can't react to it. It does not, however, bypass sending an action packet. Thus I could address it in a packet-based precast but it would not hit pretarget.
    5) Drawback: change_target() cannot be easily implemented in this state, and would likely never work for precast. That's why I'd need to implement pretarget at the outgoing text level.

    resources:
    Currently I parse the resources specifically for GearSwap, which leads to substantial overhead and is largely the reason that GearSwap takes up 30MB of RAM. In v0.800 I will use the resources library, which has less overhead (300kB vs. 18MB or something).

  18. #98

    I was writing this big long post to Byrth and Mote this morning about how I was trying to do an includes file for my mages (BLM, SCH, GEO) to consolidate updates in gear and it wasn't working. I tried for hours last night and went to sleep frustrated. I was going to ask for help, but when I was typing my big long post I realized that I never returned the table from the include file...

    If you are interested, I added a get_spell_element_mappings() method to your include Mote.

    Code:
    function _MageInclude.get_spell_element_mappings()
    
    	local mappings = T{
    		['Fire'] = {	['Helix'] = 'Pyrohelix', ['Storm'] = 'Firestorm', ['Single Target'] = 'Fire', ['Ancient Magic'] = 'Flare', ['AOE Target'] = 'Firaga', ['AOE JA'] = 'Firaja', ['AOE Self'] = 'Fira'	},
    		['Earth'] = {	['Helix'] = 'Geohelix', ['Storm'] = 'Sandstorm', ['Single Target'] = 'Stone', ['Ancient Magic'] = 'Quake', ['AOE Target'] = 'Stonega', ['AOE JA'] = 'Stoneja', ['AOE Self'] = 'Stonara'	},
    		['Water'] = {	['Helix'] = 'Hydrohelix', ['Storm'] = 'Rainstorm', ['Single Target'] = 'Water', ['Ancient Magic'] = 'Flood', ['AOE Target'] = 'Waterga', ['AOE JA'] = 'Waterja', ['AOE Self'] = 'Watera'	},
    		['Wind'] = {	['Helix'] = 'Anemohelix', ['Storm'] = 'Windstorm', ['Single Target'] = 'Aero', ['Ancient Magic'] = 'Tornado', ['AOE Target'] = 'Aeroga', ['AOE JA'] = 'Aeroja', ['AOE Self'] = 'Aerora'	},
    		['Ice'] = {	['Helix'] = 'Cryohelix', ['Storm'] = 'Hailstorm', ['Single Target'] = 'Blizzard', ['Ancient Magic'] = 'Freeze', ['AOE Target'] = 'Blizzaga', ['AOE JA'] = 'Blizzaja', ['AOE Self'] = 'Blizzara'	},
    		['Thunder'] = {	['Helix'] = 'Ionohelix', ['Storm'] = 'Thunderstorm', ['Single Target'] = 'Thunder', ['Ancient Magic'] = 'Burst', ['AOE Target'] = 'Thundaga', ['AOE JA'] = 'Thundaja', ['AOE Self'] = 'Thundara'	},
    		['Light'] = {	['Helix'] = 'Geohelix', ['Storm'] = 'Sandstorm', ['Single Target'] = 'Stone', ['Ancient Magic'] = 'Quake', ['AOE Target'] = 'Stonega', ['AOE JA'] = 'Stoneja', ['AOE Self'] = 'Stonara'	},
    		['Dark'] = {	['Helix'] = 'Geohelix', ['Storm'] = 'Sandstorm', ['Single Target'] = 'Stone', ['Ancient Magic'] = 'Quake', ['AOE Target'] = 'Stonega', ['AOE JA'] = 'Stoneja', ['AOE Self'] = 'Stonara'	}
    	}
    
    	if world.area:find('(U)') then
    		mappings[world.day_element] = mappings['Fire']
    	end
    	
    	return mappings
    end
    And then I added this to the self_command method

    Code:
    function _MageInclude.self_command(command)
    	cmd = command:split(' ')
    
    	if T{'helix', 'storm', 'st', 'aoet', 'aoeja', 'aoes'}:contains(cmd[1].lower() then
    		spell_type = ''
    		tier = 0
    		
    		if cmd[1].lower() == 'helix' then
    			spell_type = 'Helix'
    		elseif cmd[1].lower() == 'storm' then
    			spell_type = 'Storm'
    		elseif cmd[1].lower() == 'st' then
    			spell_type = 'Single Target'
    			tier = cmd[2] or 1
    		elseif cmd[1].lower() == 'aoet' then
    			spell_type = 'AOE Target'
    			tier = cmd[2] or 3
    		elseif cmd[1].lower() == 'aoeja' then
    			spell_type = 'AOE JA'
    		elseif cmd[1].lower() == 'aoes' then
    			spell_type = 'AOE Self'
    			tier = cmd[2] or 2
    		end
    		
    		cast_mapped_spell(spell_type, tier)
    	end
    
    end
    
    function _MageInclude.cast_mapped_spell(spell_type, tier)
    
    	if spellmappings.element[world.day_element]:contains(spell_type) then
    	
    		command = spellmappings.element[world.day_element][spell_type]
    		if spell_type == 'Storm' or spell_type == 'Helix' then
    			command = command .. ' me'
    		elseif spell_type == 'AOE JA' then
    			command = command .. ' t'
    		elseif spell_type == 'Single Target' then
    			if T{2,3,4,5}:contains(tier) then
    				command = command .. tier
    			elseif not tier == 1 then
    				windower.add_to_chat(123, 'Invalid Tier passed to function for spell type ' .. spell_type .. '. Defaulting to tier 1.')
    			end
    			
    			command = command .. ' t'
    		elseif spell_type == 'Ancient Magic' then
    			if tier == 2 then
    				command = command .. tier
    			elseif not tier == 1 then
    				windower.add_to_chat(123, 'Invalid Tier passed to function for spell type ' .. spell_type .. '. Defaulting to tier 2.')
    				command = command .. '2'
    			end
    			
    			command = command .. ' t'
    		elseif spell_type == 'AOE Target' then
    			if T{2,3}:contains(tier) then
    				command = command .. tier
    			elseif not tier == 1 then
    				windower.add_to_chat(123, 'Invalid Tier passed to function for spell type ' .. spell_type .. '. Defaulting to tier 3.')
    				command = command .. '3'
    			end
    			
    			command = command .. ' t'
    		elseif spell_type == 'AOE Self'
    			if tier == 2 then
    				command = command .. tier
    			elseif not tier == 1 then
    				windower.add_to_chat(123, 'Invalid Tier passed to function for spell type ' .. spell_type .. '. Defaulting to tier 2.')
    				command = command .. '2'
    			end
    			
    			command = command .. ' me'
    		end
    		
    		windower.send_command(command)
    	end
    
    end

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

    I'm having an interesting issues now...

    in salvage when I use Spinning Attack.. It stay in the WS gear. when I use it again switch back to TP GEar(aftercast gear) here is the code.. I dont see any problem w/ it ... so no idea why this is happening.

    http://pastebin.com/6ZcDwYXH

    Tried Final Heaven, VS, SS... and works fine...

    edit.. actually dont stay in WS.. is a mix of WS gear and TP gear...

  20. #100

    Byrth I am having an interesting problem with self_command function. On my thief I have it set up so I can send a command 'toggle engaged x:y:z' and it works just fine, with my code above with the spells, if I do //gs c st 5, and add an add to chat of the command, it just prints st. For some reason it is cutting off everything past the st. Any idea what is going on?

Closed Thread
Page 5 of 302 FirstFirst ... 3 4 5 6 7 15 55 ... LastLast

Similar Threads

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