|
Gearswap for Dummies 2.0!
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2019-01-06 00:26:05
4 years ago I wrote Gearswap for Dummies.
4 weeks ago I returned to FFXI, completely forgot how to use Gearswap and ironically had to read my own guide, to re-learn. Upon doing so I was quickly aware of the shortcomings of my previous attempt as well as how much the game (and addons) have evolved since. Therefore I present to you, Gearswap for Dummies 2.0!
If you're already sufficient in Gearswap, you may still be interested in what I believe to be, the most up to date and sophisticated Haste-Detection rules available to us via GearInfo. (Skip to Post #6)
--------------------
Step 0: Files Needed
--------------------
A: Windower 4
Download Here: http://www.windower.net/
This is the program that makes all of the fancy applications work.
B: Notepad ++
Download Here: http://notepad-plus-plus.org/
This is the program that you use to actually create and edit the 'code' that spellcast uses and runs off of. For all intents and purposes, it's no more than a word document really.
--------------------------
Step 1: Obtaining Gearswap
--------------------------
Open Windower as usual. Before selecting a Profile, click “Addons”, scroll down until you see “GearSwap” and click the Download Button. Afterwards, ensure the Toggle Switch is in the “On” position, and then start FFXI as you always do.
-------------------------------
Step 2: Creating your .lua file
-------------------------------
Option A: Full Skeleton
Open Notepad ++
Create a new file
Copy and Paste the following file
https://pastebin.com/Cmb34Bnt
Option B: Start with mine
https://pastebin.com/hm1TKjcm
Option C: Absolute Bare Minimum
See Post #5
The Skeleton is 100% functional, you just export, copy, and paste your gearsets where you like, and ignore everything you don't want to touch, with no negative impact.
If you are like me, looking at someone else's gearswap is overwhelming, my eyes gloss over, and I can't comprehend how or even where to begin editing it.
If you are the type of person who does not get overwhelmed by the full file... then you probably don't need this tutorial or maybe you just want the new haste rule breakdown, you are more than welcome to use mine and just start customizing it. From this step forward I will be focusing on the Skeleton file, as I believe that is the target audience.
*Special note my files are largely based on/stolen from Mote, Arislan, and a few others where I've hacked small pieces here and there, or altered things to fit my needs, and frankenstein'd them together. Full credit to all of those who did the hard work.
---------------------------------------
Step 3: Putting your .lua into Gearswap
---------------------------------------
Once you've created your Skeleton file:
Click on File > 'Save as'
1) At the top of the prompt you will need to tell it where you want to save the file to. (Yellow Arrow)
I use Windows 7, other Operating Systems may be slightly different, but should be close.
Computer
Local Disk C:
Program Files (x86)
Windower4
Addons
GearSwap
Data
2) Name the file CharacterName_Job Example: (Cambion_Dnc) (Red Arrow)
3) Save it as a .lua file ***VERY IMPORTANT*** (Blue Arrow)
Congratulation, you now have your very own Gearswap file!
In the next post we'll begin discussing how to customize it.
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2019-01-06 00:26:21
----------------------------------------------------------------------------
Step 4: If you want the MOST BASIC gearswap possible with no bells or whistles, Skip to Post #5
----------------------------------------------------------------------------
-------------------------------------------------
Step 5: Inputting your gear
-------------------------------------------------
A) From within the game, with Gearswap running, equip any specific set you want manually, whether you manually equip each piece or already have a macro or gearset, doesn't matter. Once your character is wearing the exact set you want for any specific scenario, type "//gs export" withOUT the quotes.
This will send an entire file of your current gear in notepad ++ format to your files.
B) To access this newly created file:
Computer
Local Disk C:
Program Files (x86)
Windower4
Addons
GearSwap
Data
Export
In here you will see a file (or multiple depending on how many times you've done it). Right click the file and select 'Open with notepad ++'.
It should look like this:
C) Only Copy the highlighted area.
Ignore the weapons and do NOT get the brackets on the bottom or top lines, do not copy the set.exported. Just what is highlighted.
D) Open your lua file and paste this set between the EXISTING brackets for the specific gear set. In the example above, I have exported my idle set. So I will copy & paste it into line 165, and should look like this:
Pay close attention that it is between these brackets, and that is why you do NOT copy the brackets from the export file. A double Bracket can and will break the entire lua until you find and fix it.
E) Repeat this process for each set of gear you have, placing them into the proper place in your lua. Each weaponskill set, idle set, town idle set, and your engaged sets.
F) Automatic Haste Variables, gear sets to maximize them, and installing GearInfo to make them work properly: Post #6
----------------------------
Step 6: Inputting your gear - Advanced
----------------------------
There are some special scenario's beneath your gear sets that handle a few pieces of gear for very specific events in the game. Asumming you're looking at the blank Skeleton file, these numbers should line up. I'm going to start from the bottom to help keep line numbers as consistent as possible for people to follow along, as time goes by.
A) Line 677 thru 693 --
This will automatically swap your in-game Macro pallets based on your Subjob.
If your sub job is Samurai, it will change it to Pallet 1, of Book 5.
I don't know why they have to be backwards, but Pallet is first, Book is second.
Book is the actual Macro Pallet you use for each job(20 in FFXI), Pallet is the 10 options within that book.
B) Line 388 -- equip({head="Maculele Tiara +1", left_ear="Ishvara Earring"})
If you use Rudra's Storm, with Climactic Flourish active, it will automatically equip Maculele Tiara +1 and Ishvara Earring.
You should 100% leave Maculele Tiara +1 in. But some people will not need Ishvara Earring in this slot. I use it because I do NOT use Ishvara in my base Rudra set, due to my own DPS math. Some people will also want to add body="Meg. Cuirie +2". Basically, any gear that you only want applied to your Climactic Rudra's should go here. If you use the same Rudra set regardless of Climactic, you can erase this, or just edit/ignore it.
C) Line 381 -- equip({right_ear = "Sherida Earring"})
If you try to use a Weaponskill, and have more than 2750 TP, this is used to overwrite Moonshade earring, because the 250 bonus TP is being wasted. If you do not have Moonshade or do not care about min/maxing this much, feel free to delete lines 379 thru 384.
D) Line 356 -- sets.CP = {back="Mecisto. Mantle"}
If you have a nice Mecisto. Mantle for CP bonus leave this alone. If you don't and you use an Aptitude Mantle you'll want to edit this line: sets.CP = {back="Aptitude Mantle +1"}
E) Line 347 thru 350 -- Special Sets. (I'll go over Doom in Post #3 & #4)
These sets will FORCE a piece of gear into a slow for the ENTIRE duration that the listed buff is active. It will override ANY and ALL other gear set rules.
This is different from B) Line 388, because that is only applied for a single WeaponSkill, this applies the entire duration of the buff. I left the potential gear you would use in here, but have DEactivated the code by placing the '--' prior to the lines. These are NOT currently active, except for the Climactic line. As of today, Jan 6 2018, forcing Horos specific pieces for these Job Abilities is a DPS loss, but later updates/augments may alter this, so it's nice to have the code there and ready.
F) Line 248 thru 250 -- Hybrid Sets. (These are cycled with the F10 button, See Post #3 for more details)
This is currently configured for 3 levels of Defense taken Gear. You can ignore them or utilize them as you wish. DT1 should be your least Damage Taken build, DT3 should be your highest amount of Damage Taken gear equipped. This is where you would put only a few pieces of gear, DRing, Vocane Ring, Moonbeam Cape, Loricate torque +1, etc. Everything beneath these lines will automatically combine them, you should not change the names of these sets if you are not extremely comfortable in gearswap, as it will have massive ripple effects. You do not want to put entire gear sets into these lines, only the specific pieces that apply, or the combine sets won't work. As always if you're building the Skeleton, you can always reference my Lua for examples or ideas: https://pastebin.com/hm1TKjcm
E) Line 216 thru 218 -- Accuracy Sets. (These are cycled with the F10 button, See post #3 for more details)
Same exact thing as F) except for 3 levels of Accuracy sets. Acc1 should be minimum added accuracy, Acc3 should be absolute max accuracy.
------------------------------
Step 7: Understanding the file
------------------------------
IF you care, please see Post #??.
You do not need to know how it works, for it to be useful to you.
[+]
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2019-01-06 00:26:45
---------------------------------
Post 4: How to use your new file!
---------------------------------
Assuming you have now imported each of your gearsets into the lua file, we're ready to begin using the file, and learning what it can do in game.
1) Anytime you update your lua file, you will have to update the file in game for any changed to take effect. There are multiple ways to do this, but the easiest way is, within the game, directly into your FFXI chat window, type:
//gs r
This is an abbreviation for //GearSwap Reload
Alternatively you can use the following
//lua u gearswap
//lua l gearswap
These are abbreviations for
//LoadUnloadAddon Unload Gearswap
//LoadUnloadAddon Load Gearswap
2) You should see red texts in the upper left hand of your screen and hopefully see:
Loaded your Cambion_Dnc.lua file!
3) If you get an error when you attempt to load your file, go to ???. *To Be Determined*
-------------
Functionality
-------------
I'm going to assume you know the basics of how each set is applied. If you do not see Post #4 for a breakdown of how the file works. This section will focus on how you use macros in game, cycle steps, trigger gearsets, etc.
I recommend you walk outside of Adoulin or any zone where you can play with these functions and see them work in real time. If you walk outside Adoulin, lead left to the beach and this big crab/snail things are usually perfect.
Cast a healing trust, claim the mob, turn your back to it, and 'attack' or 'engage' without hitting the mob. Now we'll go through the buttons.
---------
F9
---------
This will cycle through the Accuracy Sets you have defined in lines 216 thru 218 of the Skeleton file. If you are not engaged, this will do nothing other than give you an update such as:
Offense Mode is now LowAcc
Press F9 again
Offense Mode is now MidAcc
Press F9 again
Offense Mode is now HighAcc
Press F9 again and the cycle will reset and repeat endlessly
Offense Mode is now Normal
If you are engaged, hit Ctrl+E to bring up your Equipment Screen. While this is open (and you're engaged) you can hit F9, and in real time watch your equipment change to each of your defined variables.
In the event you do not want to use 3 Accuracy Sets, maybe you only have 1, maybe you want to use 5, maybe you just want to change the order.
In line 39 of the Skeleton you will see the following:
state.OffenseMode:options('Normal', 'LowAcc', 'MidAcc', 'HighAcc')
This is what defines what F9 does. As you can see, it starts with Normal, then LowAcc, MidAcc, HighAcc. You can delete or add as you wish here, without causing any harm. Some people will just want Normal and a single Accuracy set, and want to get rid of the other 2 options, so they don't have to cycle F9 4 times for 2 sets, that's perfectly fine. Just ensure you choose the correct gearset that corresponds to lines 216-218.
**You can NOT change the name of these sets. Well... you can, but you have to change it EVERYWHERE in the file for them to work. Each suffix on line 39, directly correlates to a suffix in every single scenario in the gearswap. I highly recommend you leave them as is, and just remove the F9 toggle for what you don't want to use.
------------
F10
------------
This will work in the exact same manner as the F9 key, but instead of cycling through Accuracy Sets, it will cycle through Defense taken sets. Also, instead of starting at Normal and stepping UP (low > mid > high) like we did for accuracy, DT is in reverse order (high > mid > low) this is so you have an 'ohshit' or 'panic' button with the single click of f10. You can then taper off of it as needed back to your normal set.
These sets are dictated in lines 248 thru 250 of the Skeleton file. You do not want to use an entire set of gear in these sections, only the Damage Taken gear. This is due to the way all of the set_combine functions work.
I recommend simple options like Defending Ring, Vocane Ring, Moonbeam Cape, Twilight/Loricate Torque +1, Staunch tathlum, etc. You can mix and match them as you please to customize your levels of DT1 and DT2.
However for DT3 which is the 'HIGH' setting, you can put a near full set here. For example I use Mummu Legs +1/2, and a fully augmented set of Herculean gear, to get to (or as close to) the 50% Damage Taken Cap. Again this is for pure survival mode. If you're stunned, stoned, terrored, etc there's no reason you shouldn't immediately be hitting F10 to minimize the damage you take until it wears. Maybe you get caught with shadows down, or your Waltz timer is cooldown, or you link mobs while soloing, maybe you just see Sovereign Behemoth casting Meteor? Hit F10!
----------
F11
----------
This will cycle your steps. This is specific to Dancers or subbing Dancer. Similar to the others above, this corresponds to line 17 of the Skeleton File.
state.MainStep = M{['description']='Main Step', 'Box Step', 'Quickstep', 'Feather Step', 'Stutter Step'}
This tells the game which step you want to use, and it will cycle through them in a rotation of Box > Quick > Feather > Stutter and then back to Box.
This saves you from needing 4 macros for each step, or having to use the JA list. This comes in handy when you play with another Dancer, or long fights where you cap one step, and need to use a different step for Finishing moves or just want to stack 2+ steps on a mob.
***This one is special, as it requires a specific macro in game to work correctly.
You will have to change your normal Step Macro to the following:
/console gs c step t
You will type it exactly like that, into the first line of your normal ffxi macro, wherever you want it. Gearswap automatically handles identifying the step you've selected with F11, and this macro will automatically use the correct step.
------------
F12
------------
This is just a status display of your current Acc/WSAcc/DT/Step.
It will show you which of each set you're currently using.
-----------
Ctrl+F9
-----------
Ctrl+F9 will cycle between your normal WS gear, and your WS.Acc gear. I rarely use it, but I keep it just in case. This cycle will correspond to every WeaponSkill gearset you have defined.
In the Skeleton file, line 122 is the first instance of this application.
sets.precast.WS.Acc
It immediately follows your base WS set and already has the rules attached to it.
= set_combine(sets.precast.WS, {})
This means it will combine everything from the base WS set and only include/overwrite exactly what you list here.
Example: Input your base WS set into line 199.
Then the .Acc variant, you would look like: Code sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Yamarang",neck="Ej Necklace"})
This will use every item from the base set and ONLY overwrite the ammo and neck slots, with the items I define.
There is one of these for every Weapon Skill in the gearswap, except Aeolin Edge.
---------------
Windows Key + C
---------------
This one is simple and straight forward.
Hold the windows key, and hit C.
This will auto equip and lock your back piece for when you are in a Capacity Point party for the % bonus on your cape.
This directly corresponds to the cape you have set in line 356:
sets.CP = {back="Mecisto. Mantle"}
-------------
Extra macros!
-------------
Coming Soon
alternate keybinds for extra macro space
-----------------------
Commands
-----------------------
Coming Soon.
Basic Gearswap Commands and how to use them
//lua u gearswap
//lua l gearswap
//gs r
//gs export
//gs disable ring1
//gs enable ring1
//gs equip sets.name
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2019-01-06 00:27:17
Post 4: Explain the scripts for each function for the curious minded, or for people to delete as desired.
*Coming Soon*
Basic Breakdown
----------------------------
sets.idle and sets.idle.Town
----------------------------
Idle means you are not taking any actions. You are not casting any spells, using any job abilities, nor are you engaged to an enemy. I recommend Damage Taken gear, movement speed, and regen.
Idle.Town is only used when inside of all pre-determined towns of Vanadiel. This is only used to show off gear while sitting in town, where there are no threats to your character and Damage Taken wouldn't be needed. Expensive and rare items to ohh and aww the masses that check you!
--------------------------------
sets.engaged and sets.engaged.DW
--------------------------------
This set will automatically equip anytime you 'attack' or 'engage' a mob. All you have to do is draw your weapons and this will equip, you don't even have to physically hit the mob. You can test this on any fodder material
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2019-01-06 00:27:41
Post 5: Absolute Minimalist gearswap file
https://pastebin.com/0aLFfC9W
This is as stripped down as I can possibly make it, for people who just want Idle sets, WS Sets, and the updated haste detection rules.
*I need to load this and verify there are no errors.
-------------------------------------------------
Step 3: Inputting your actual gear, the quick way
-------------------------------------------------
A) From in the game, with Gearswap running, equip any specific set you want manually in game, whether you manually equip each piece or already have a macro, doesn't matter. Once your character is wearing the exact set you want for any specific scenario, type "//gs export" withOUT the quotes.
This will send an entire file of your current gear in notepad ++ format to your files.
B) To access this file:
Computer
Local Disk C:
Program Files (x86)
Windower4
Addons
GearSwap
Data
Export
In here you will see a file (or multiple depending on how many times you've done it). Right click the file and select 'Open with notepad ++'.
It should look like this:
C) Only Copy the highlighted area.
Ignore the weapons and do NOT get the brackets on the bottom or top lines, do not copy the set.exported. Just what is highlighted.
D) Open your lua file and paste this set between the EXISTING brackets for the specific gear set. In the example above, I have exported my idle set. So I will copy paste it into line 165, and should look like this:
Pay close attention that it is between these brackets, and that is why you do NOT copy the brackets from the export file. A double Bracket can and will break the entire lua until you find and fix it.
E) Repeat this process for each set of gear you have, placing them into the proper set in your lua. Each weaponskill set, idle set, town idle set, and your engaged sets.
F) All of your WS and Idle Sets will work. Your regular sets.engaged set will also work, but none of the haste variations will work unless you also do the following step. If you just want bare bones with the current sets, you can ignore the next step.
G) Automatic Haste Variables, gear sets to maximize them, and installing GearInfo to make them work properly: Post #6
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2019-01-06 00:27:59
Post 6: Haste Detection, GearInfo Addon
***This is required, for the haste and dual wield functions in your gearswap to properly work***
GearInfo is an addon that detects numerous variables in the game in real time. It has many uses to many people, but for the sake of our purposes, all we care about is the magical haste, ability haste, total haste, and dual wield. Gearswap uses these figures and will automatically adjust your gear (as you've setup) to account for all levels of haste available in the game, without toggles, for all jobs, but especially important for dual wielders as we are constantly juggling DW gear to stay at the delay cap.
1) https://github.com/sebyg666/GearInfo/releases
2) Download the GearInfo.Rar file (Very top file, first one, only need this)
3) Once downloaded you need to extract the files
4) Drag the 'GearInfo' folder and drop it onto your Desktop.
5) Open your Windower Addon Folder:
Computer
Local Disk C:
Program Files (x86)
Windower4
Addons
6) Drag the Folder from your Desktop and into this folder
7) Open FFXI normally through Windower.
7b) If already in FFXI that's fine
8) Type //lua l gearinfo
The first time you run this addon it will create a couple of files. Depending on the amount of gear you have in your inventory and the specs of your PC, your game may freeze for a short period (you might even DC from game!!). This is expected and once it's done the Display should appear.
9) Once loaded use command //gi parse to refresh your file.
10) In game you will notice a rather large box, with a ton of little boxes, all of which display your current values of multiple stats. You can type "//gi help" for a list of commands, add/removing certain displays etc.
11) If you are like me and hate this display, and want nothing to do with it, then there is an option. This addon has to be running for your gearswap to correctly pickup the haste values, I am unaware of a transparency option, so what I did was manually move it off of my screen. Unlike most loadons, for some reason this can't be done in game with a setpos command. The workaround is as follows:
Computer
Local Disk C:
Program Files (x86)
Windower4
Addons
GearInfo
Data
Name_Settings.xml (Right click, edit with Notepad++)
Line 68 and 69 allow you to edit the X and Y axis position of the overlay.
For me, setting y to -300 (NEGATIVE) moved it off of the screen. Depending on your screen size, resolution, etc you might have to test a bit.
12) Type //gi r
This is the shorthand command for //Gearinfo Reload and will reload the addon with the new position. Hopefully off your screen.
*I mean absolutely no disrespect to the creator of GearInfo, Ewillina. They have created an amazing application, free of charge, for a game they don't even play, and regularly update it with slim to zero incentive. Personally I am just not a fan of the display, I only desire the functionality, and prefer less things on my screen, so I have opted for this fix.
I take absolutely no credit for the functionality of GearInfo in any way shape or form. Any questions, compliments, appreciation, or donations on that front would go here.
I use this solely for haste detection rules and have included it as part of the GearSwap tutorial.
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2019-01-06 00:28:24
Post 7: Individual Functions applicable to add or use for other jobs.
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2019-01-06 00:28:38
Post 8: Saved just in case.
Server: Asura
Game: FFXI
Posts: 167
By Asura.Verbannt 2019-01-06 04:06:55
First off, there is a way to check haste values in gearswap already, by using buff id's and then using tables to adjust gear haste for dualwield. (done automagicaly no toggles involved) So you don't need to use the addon gearinfo. Unless it can tell the difference between haste 1 and 2 which have the same game ID.
Secondly use nodes, it allows you to edit a guide, and check, and save, with out having the node public, so less spam of forum.
There is a gearswap tutorial video YouTube Video Placeholder
And third there is a more elegant way of structuring the lua, making it so a player does not need to touch functions at all. If making a guide and posting lua, it would be helpful, as most people will get lost in the Functions, or be confused that gear is not swapping, because of an argument listing a specific piece of gear in the argument section even though they defined what should be used in a gear table above.
There are more things, such as, not posting black on white notepadd++, and assuming that anyone can go to
Quote: Local Disk C:
Program Files (x86)
Windower4
Addons
GearSwap
Data
Export
I don't have Windower or ffxi installed on C:/
Not everything is bad. But I think new players should be pointed to fully functional GS instead of a bare bones set, they are more likely to mess that up if they are new TBH, and or they will not have an idea of what a GS specific to their job can do.
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2019-01-06 05:58:48
Secondly use nodes, it allows you to edit a guide, and check, and save, with out having the node public, so less spam of forum. I'll look into that, thanks.
Server: Shiva
Game: FFXI
Posts: 1052
By Shiva.Arislan 2019-01-06 08:11:24
First off, there is a way to check haste values in gearswap already, by using buff id's and then using tables to adjust gear haste for dualwield. (done automagicaly no toggles involved) So you don't need to use the addon gearinfo. Unless it can tell the difference between haste 1 and 2 which have the same game ID.
Gearinfo simply handles haste detection in a more robust way.
No toggles needed. You can wander in and out of a geo haste bubble and it'll update flawlessly.
It also accounts for per player differences in BRD and GEO buff potency (Player X has +8 March, Player Y has +7 March, Joachim has +0 March, etc).
[+]
Cerberus.Quintow
Server: Cerberus
Game: FFXI
Posts: 150
By Cerberus.Quintow 2019-01-06 10:46:49
Great 1st and now 2nd guide. Can you elaborate on a easy way to sync GS lua's between 2 computers though? Thanks for your time~
Leviathan.Sidra
Server: Leviathan
Game: FFXI
Posts: 334
By Leviathan.Sidra 2019-01-06 10:48:37
First off, there is a way to check haste values in gearswap already, by using buff id's and then using tables to adjust gear haste for dualwield. (done automagicaly no toggles involved) So you don't need to use the addon gearinfo. Unless it can tell the difference between haste 1 and 2 which have the same game ID.
Gearinfo simply handles haste detection in a more robust way.
No toggles needed. You can wander in and out of a geo haste bubble and it'll update flawlessly.
It also accounts for per player differences in BRD and GEO buff potency (Player X has +8 March, Player Y has +7 March, Joachim has +0 March, etc).
Never considered using this tool. Do you have to input the values for the players, or does it auto detect them?
Server: Shiva
Game: FFXI
Posts: 1052
By Shiva.Arislan 2019-01-06 11:23:17
Manually input:
//gi brd add Sidra 8
Server: Cerberus
Game: FFXI
Posts: 241
By Cerberus.Mrkillface 2019-01-06 11:58:27
Great 1st and now 2nd guide. Can you elaborate on a easy way to sync GS lua's between 2 computers though? Thanks for your time~
Move your windower folder to a cloud synched folder like drop box and launch it from there.
[+]
Server: Asura
Game: FFXI
Posts: 167
By Asura.Verbannt 2019-01-06 12:02:35
Gearinfo simply handles haste detection in a more robust way.
No toggles needed. You can wander in and out of a geo haste bubble and it'll update flawlessly.
It also accounts for per player differences in BRD and GEO buff potency (Player X has +8 March, Player Y has +7 March, Joachim has +0 March, etc).
So why are you using geo haste outside CP? (TBH why would you use it in cp) and a Brd that has issues capping haste? Again outside CP why are they there?
Brd can reach cap with ease, and Geo should have different bubble priorities in almost every endgame situation.
And Requiring a GS that uses another addon is silly, cool to know how to do it. But it's kind of putting the cart in front of the horse.
Neither of those examples in real world scenarios makes sense in endgame.
4 years ago I wrote Gearswap for Dummies.
4 weeks ago I returned to FFXI, completely forgot how to use Gearswap and ironically had to read my own guide, to re-learn. Those were your first two sentences. I didn't say none of this was useful. But your first two sentences did in fact not cover the first 9 minutes of his video.
Many guides exist that have included (flawed but more up to date) job GS. This guide does have interesting parts but As an example you did state that the lua had Code if spell.english == "Rudra's Storm" and buffactive['Climactic Flourish'] then
equip({head="Maculele Tiara +1", left_ear="Ishvara Earring"})
end
end
Making gear.sets allow you to make an argument like this Code In gear sets at top of lua
gear.climactic_flourish.weaponskill_head = "Maculele Tiara +1"
and this at the bottom Code if spell.english == "Rudra's Storm" and buffactive['Climactic Flourish'] then
equip(gear.climactic_flourish.weaponskill_head)
end
Making gear changes only in the gear table is better than having someone change gear in functions.
Also doing what I posted only cleans up the lua from having gear in the bottom.
Server: Asura
Game: FFXI
Posts: 20
By Asura.Dinotron 2019-01-06 17:24:42
I'm going to use this opportunity to shamelessly ask if anyone has a nice DNC LUA they'd like to share.
Server: Shiva
Game: FFXI
Posts: 1052
By Shiva.Arislan 2019-01-06 17:34:03
Neither of those examples in real world scenarios makes sense in endgame.
So is gearswap only used for endgame, full party, optimal-buff situations?
Server: Asura
Game: FFXI
Posts: 704
By Asura.Chaostaru 2019-01-06 19:34:18
Neither of those examples in real world scenarios makes sense in endgame.
So is gearswap only used for endgame, full party, optimal-buff situations?
setup right, Its used for everything from partying, running in town, endgame, leveling up ect. everything
its basically ingame macros on crack that triggers based on events you set. Like for example. If you get stunned/slept/terror. You can have gearswap auto switch into your DT- set while stunned/slept/terror, then once it wears, switch back to tp set. Also can have it switch to Movementspeed+ gear any time you move your character.
instead of having to make a fastcast macro for literally every spell you want to cast, Gearswap automatically handles all your fastcast gear and equips it no matter what spell you cast, no fastcast equipsets needed.
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2019-01-06 19:44:00
I'm going to use this opportunity to shamelessly ask if anyone has a nice DNC LUA they'd like to share.
My full Lua is in the OP: https://pastebin.com/hm1TKjcm
Arislan's is here: https://github.com/ArislanShiva/luas/blob/master/Arislan-DNC.lua
Mine is largely based on Arislan's with a bit of simplification up top (Arislan has far more triggers and functions that felt overwhelming for the goal of this tutorial) And mine adds some complexity in the gearset combinations because I use multiple tiers of Hybrid sets.
Mine also has a few codes that override the globals for utilities I find important, especially for Master Dancers. I'll get to explaining them all 1 by 1 when this storm passes.
Both of them use gearinfo for haste detection and functionality.
I've yet to find any other DNC Lua that make use of this add-on, Which is why I decided to use Arislan's as a foundation. Arislan's name has come up in multiple threads for gearswap and have all been glowing reviews of their work. Upon seeing and using their Lua as a foundation, it's clear why.
Gearinfo will become the standard tool for haste detection in due time, I'm rather confident of that, I'm just trying to help people understand how to get it, use it, and make it work in conjunction with gearswap.
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2019-01-06 19:48:47
Neither of those examples in real world scenarios makes sense in endgame.
So is gearswap only used for endgame, full party, optimal-buff situations?
setup right, Its used for everything from partying, running in town, endgame, leveling up ect. everything
You took this way out of context. Arislan is fully aware of what gearswap is. They are making a point to the quoted user who is implying haste detection rules have no real world benefit in FFXI endgame. It was sarcasm.
Server: Asura
Game: FFXI
Posts: 704
By Asura.Chaostaru 2019-01-06 19:54:38
Neither of those examples in real world scenarios makes sense in endgame.
So is gearswap only used for endgame, full party, optimal-buff situations?
setup right, Its used for everything from partying, running in town, endgame, leveling up ect. everything
You took this way out of context. Arislan is fully aware of what gearswap is. They are making a point to the quoted user who is implying haste detection rules have no real world benefit in FFXI endgame. It was sarcasm.
Oh lmao, yea I didnt read the entire page first xD. Though I come across a ton of people ingame who think gearswap is "dumb" or "no point" often. Thought thats what this was haha
Asura.Byrne
By Asura.Byrne 2019-01-08 18:39:40
First off, there is a way to check haste values in gearswap already, by using buff id's and then using tables to adjust gear haste for dualwield. (done automagicaly no toggles involved) So you don't need to use the addon gearinfo. Unless it can tell the difference between haste 1 and 2 which have the same game ID.
Gearinfo simply handles haste detection in a more robust way.
No toggles needed. You can wander in and out of a geo haste bubble and it'll update flawlessly.
It also accounts for per player differences in BRD and GEO buff potency (Player X has +8 March, Player Y has +7 March, Joachim has +0 March, etc).
Uh sure, but GearSwap can already do that...
Both addons are coded in lua, it's not a limitation of Gear Swap, it's a limitation of the user.
GearInfo handles the detection of different haste values by simply defining them in this bit of code.
Now, for Gear Swap, given that we don't need to tell it to push these values into a table, nor does it need to do any math, all that would need to be stripped from this to put in globals is simply a way of defining the differences between the buffs.
Code function check_buffs()
local marches = {417, 419, 420}
marches[417] = 127
marches[419] = 107
marches[420] = 163
local total_haste = 0
local song_found = false
local song_found2 = false
for index, buff in pairs(_ExtraData.player.buff_details) do
local this_buff = _ExtraData.player.buff_details[index]
if buff.id == 64 then -- last resort
if player.main_job:upper() == 'DRK' and player.main_job_level == 99 then
this_buff['ja_haste'] = math.ceil(((player.merits.desperate_blows * 2) + 15)/100*1024)
elseif player.main_job:upper() == 'DRK' and player.main_job_level < 99 and player.main_job_level > 75 then
this_buff['ja_haste'] = math.ceil(((player.merits.desperate_blows * 2) + 5)/100*1024)
elseif player.main_job:upper() == 'DRK' and player.main_job_level < 75 then
this_buff['ja_haste'] = 52
elseif player.sub_job:upper() == 'DRK' then
this_buff['ja_haste'] = 52
end
elseif buff.id == 353 then -- Hasso
this_buff['ja_haste'] = 103
elseif buff.id == 604 then -- mighty_guard
this_buff['ma_haste'] = 150
elseif buff.id == 228 then -- Embrava max 266 @ 500 Enhancing magic skill
this_buff['ma_haste'] = 260
elseif buff.id == 580 then -- indi_haste
this_buff['ma_haste'] = 307
elseif buff.id == 33 then -- haste
if buff.full_name == "Haste II" then
this_buff['ma_haste'] = 307
elseif buff.full_name == "Erratic Flutter" then
this_buff['ma_haste'] = 307
elseif buff.full_name == "Hastega II" then
this_buff['ma_haste'] = 307
else
this_buff['ma_haste'] = 150
end
elseif buff.id == 227 then
this_buff['STP'] = 10
end
local caster = 'Unknown'
local song_names = S{'Honor March', 'Victory March', 'Advancing March'}
if buff.name == "March" then
if table.containskey(buff, "full_name") then
if buff.full_name ~= 'March' then
if not table.containskey(buff, "potency") then
local potency = 0
local All_songs = 0
if table.containskey(settings.Bards, buff.Caster) then
All_songs = settings.Bards[buff.Caster]
caster = buff.Caster
else
All_songs = manual_bard_duration_bonus
end
if table.containskey(buff, 'Marcato') and buff.Marcato == true then
potency = 0.5
end
if table.containskey(buff, 'SV') and buff.SV == true then
potency = 1
end
local spell = res.spells:with('en', buff.full_name)
if buff.full_name == "Honor March" then
All_songs = All_songs - 4
end
potency = potency + (All_songs / 10)+ 1
this_buff['ma_haste'] = math.floor(marches[spell.id] * potency)
this_buff['potency'] = potency
this_buff['All_songs'] = All_songs
song_found = buff.full_name
end
if table.containskey(buff, 'reported') then
if buff['reported'] == false then
local msg = ''
if table.containskey(buff, "Marcato") and buff.Marcato == true then
msg = msg .. ' Marcato'
end
if table.containskey(buff, 'SV') and buff.SV == true then
msg = msg .. ' SV'
end
notice('① ' .. caster:ucfirst() .. ' → "'..buff.full_name ..'": '.. this_buff['ma_haste'] .. ', Potency = ' .. (this_buff['potency']*100) .. '%, All Songs +' .. this_buff['All_songs'] .. msg)
this_buff['reported'] = true
end
else
local msg = ''
if table.containskey(buff, "Marcato") and buff.Marcato == true then
msg = msg .. ' Marcato'
end
if table.containskey(buff, 'SV') and buff.SV == true then
msg = msg .. ' SV'
end
notice('① ' .. caster:ucfirst().. ' → "'..buff.full_name ..'": '.. this_buff['ma_haste'] .. ', Potency = ' .. (this_buff['potency']*100) .. '%, All Songs +' .. this_buff['All_songs'] .. msg)
this_buff['reported'] = true
end
else
if song_found2 then
this_buff['ma_haste'] = math.floor(marches[417] * ((manual_bard_duration_bonus - 4)/ 10 + 1))
this_buff['potency'] = (manual_bard_duration_bonus - 4) / 10 + 1
else
song_found2 = true
this_buff['ma_haste'] = math.floor(marches[419] * (manual_bard_duration_bonus / 10 + 1))
this_buff['potency'] = manual_bard_duration_bonus / 10 + 1
end
this_buff['All_songs'] = 0
if table.containskey(buff, 'reported') then
if buff['reported'] == false then
notice('② ' .. caster:ucfirst() .. ' → "'..buff.name ..'": '.. this_buff['ma_haste'] .. ', Potency = ' .. (this_buff['potency']*100) .. '%, All Songs +' .. this_buff['All_songs'] )
this_buff['reported'] = true
end
else
notice('② ' .. caster:ucfirst() .. ' → "'..buff.name ..'": '.. this_buff['ma_haste'] .. ', Potency = ' .. (this_buff['potency']*100) .. '%, All Songs +' .. this_buff['All_songs'] )
this_buff['reported'] = true
end
end
else
if song_found2 then
this_buff['ma_haste'] = math.floor(marches[417] * ((manual_bard_duration_bonus - 4)/ 10 + 1))
this_buff['potency'] = (manual_bard_duration_bonus - 4) / 10 + 1
else
song_found2 = true
this_buff['ma_haste'] = math.floor(marches[419] * (manual_bard_duration_bonus / 10 + 1))
this_buff['potency'] = manual_bard_duration_bonus / 10 + 1
end
this_buff['All_songs'] = 0
if table.containskey(buff, 'reported') then
if buff['reported'] == false then
notice('③ ' .. caster:ucfirst() .. ' → "'..buff.name ..'": '.. this_buff['ma_haste'] .. ', Potency = ' .. (this_buff['potency']*100) .. '%, All Songs +' .. this_buff['All_songs'] )
this_buff['reported'] = true
end
else
notice('③ ' .. caster:ucfirst() .. ' → "'..buff.name ..'": '.. this_buff['ma_haste'] .. ', Potency = ' .. (this_buff['potency']*100) .. '%, All Songs +' .. this_buff['All_songs'] )
this_buff['reported'] = true
end
end
end
end
This could likely be cleaned up quite alot for Gear Swap's sake since it doesn't as much care about the duration of the buffs, as it can be controlled with buffactive gain and not gain.
Hell, by doing it that way you can completely remove the need for any keybinds for haste values by just making set_combines for customize_melee_set based on nested if buffactive statements and be done with it, that's what I do. After all, as long as I know my gear is correct and I've done the math once, I don't need the GearInfo addon constantly telling me things I already know and taking up valuable screen space.
Now, the second major function in Buff_Processing.lua is also interesting as it calculates your haste and posts it to you as part of the addon, and personally I'd still recommend it's use to newer players, for minimalists like myself it's just unnecessary screen clutter.
Now sure... GearInfo can be used as a substitute for a global that contains these arguments, but why bother, we could just ask one of the Windower devs to add it to windower globals, rather than requiring everyone to use a (admittedly rather laggy) additional addon.
Now, I'm not saying that I dislike GearInfo on principle, It doesn't cause issues for me personally, but at the same time, we need to not act as if Gear Swap itself is somehow limited.
Given that you familiarized yourself with gearswap in it's infancy, I would say that it may have been more prudent to do some research in to why gearinfo does what it does with haste values, rather than just stating that it is required.
Asura.Chiaia
VIP
Server: Asura
Game: FFXI
Posts: 1656
By Asura.Chiaia 2019-01-08 20:45:43
Gearswap already keeps track of durations since SE gave us those timers...
Necro Bump Detected!
[642 days between previous and next post]
Ragnarok.Jessikah
Server: Ragnarok
Game: FFXI
Posts: 3833
By Ragnarok.Jessikah 2020-10-11 14:05:09
I'm having a lot of issues with this so far. I just came back after ~7 years, so my list of equipment is extremely limited, and I don't even need so far as varying levels of Haste. Regardless, I went with the "basic white ***" LUA that was supplied, and only added equipment between the brackets. But whenever I log in, I'm greeted with the following:
GearSwap: Lua runtime error: GearSwap/flow.lua:350:
GearSwap has detected an error in the user function gear_sets:
...therWindower/addons/GearSwap/data/Jessikah_DNC.lua:50: attempt to index field 'Flourish2' (a nil value)
^^^ The above repeats 3 times, and then it just doesn't load.
I've looked at flow.lua line 350 and don't see anything inherently wrong (and I didn't touch it). I've also looked at my own DNC.lua and see nothing wrong with line 50 (which I also didn't touch). I've tried going so far as re-downloading both LUA files, but I still get the error.
Finally, I've also tried to remove the lines about FlourishesII and FlourishesIII with a pair of hyphens. This seems to allow my GearSwap LUA to function, but I still receive the errors when trying to log in (they just terminate with "Loaded your Jessikah_DNC.lua file!" instead). The problem is, turning off the functionality of Reverse Flourish to not at least include my Charis Bangles +1 reduces my TP gain from 875 to 750.
Does anybody have any fixes? Does anybody have a .LUA that's even simpler than the simplest one? Thanks in advance :)
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2020-10-11 17:58:31
Ragnarok.Jessikah said: »I'm having a lot of issues with this so far.
Share your lua, and I can take a look.
[+]
Ragnarok.Jessikah
Server: Ragnarok
Game: FFXI
Posts: 3833
By Ragnarok.Jessikah 2020-10-12 13:16:26
Share your lua, and I can take a look.
Thanks! I'm not really sure how to share it, so I hope this is adequate -- Basic White *** Gearswap by Cambion
-- 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 variables that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
state.Buff['Climactic Flourish'] = buffactive['climactic flourish'] or false
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job.
-------------------------------------------------------------------------------------------------------------------
-- Gear Modes
function user_setup()
Haste = 0
DW_needed = 0
DW = false
moving = false
update_combat_form()
determine_haste_group()
end
-- Define sets and vars used by this job file.
function init_gear_sets()
------------------------------------------------------------------------------------------------
---------------------------------------- Precast Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.precast.JA['No Foot Rise'] = {body="Horos Casaque +2"}
sets.precast.Waltz = {
head="Etoile Tiara",
body="Dancer's Casaque",
hands="Espial Bracers",
legs="Espial Hose",
feet="Espial Socks",
neck="Dualism Collar",
}
sets.precast.WaltzSelf = set_combine(sets.precast.Waltz, {ring1="Asklepian Ring"})
sets.precast.Samba = {head="Dancer's Tiara"}
sets.precast.Jig = {legs="Etoile Tights +2", feet="Dancer's Shoes",}
-- sets.precast.Step = {}
-- sets.precast.Flourish2['Reverse Flourish'] = {hands="Charis Bangles +1"}
-- sets.precast.Flourish3['Climactic Flourish'] = {head="Maculele Tiara +1"}
-- sets.buff['Climactic Flourish'] = {head="Maculele Tiara +1", body="Meg. Cuirie +2"}
------------------------------------------------------------------------------------------------
------------------------------------- Weapon Skill Sets ----------------------------------------
------------------------------------------------------------------------------------------------
sets.precast.WS = {
head="Espial Cap",
body="Espial Gambison",
hands="Espial Bracers",
legs="Espial Hose",
feet="Espial Socks",
neck="Soil Gorget",
waist="Pipilaka Belt",
left_ear="Kemas Earring",
right_ear="Flame Earring",
left_ring="Blood Ring",
right_ring="Rajas Ring",
}
sets.precast.WS['Exenterator'] = {
head="Espial Cap",
body="Espial Gambison",
hands="Espial Bracers",
legs="Espial Hose",
feet="Espial Socks",
neck="Soil Gorget",
waist="Pipilaka Belt",
left_ear="Kemas Earring",
right_ear="Flame Earring",
left_ring="Blood Ring",
right_ring="Rajas Ring",
}
sets.precast.WS['Pyrrhic Kleos'] = {
head="Espial Cap",
body="Espial Gambison",
hands="Espial Bracers",
legs="Espial Hose",
feet="Espial Socks",
neck="Soil Gorget",
waist="Pipilaka Belt",
left_ear="Kemas Earring",
right_ear="Flame Earring",
left_ring="Blood Ring",
right_ring="Rajas Ring",
}
sets.precast.WS['Evisceration'] = {
head="Espial Cap",
body="Espial Gambison",
hands="Espial Bracers",
legs="Espial Hose",
feet="Espial Socks",
neck="Soil Gorget",
waist="Pipilaka Belt",
left_ear="Kemas Earring",
right_ear="Flame Earring",
left_ring="Blood Ring",
right_ring="Rajas Ring",
}
sets.precast.WS['Rudra\'s Storm'] = {}
sets.precast.WS['Aeolian Edge'] = {
head="Espial Cap",
body="Espial Gambison",
hands="Espial Bracers",
legs="Espial Hose",
feet="Espial Socks",
neck="Soil Gorget",
waist="Pipilaka Belt",
left_ear="Kemas Earring",
right_ear="Flame Earring",
left_ring="Blood Ring",
right_ring="Rajas Ring",
}
------------------------------------------------------------------------------------------------
----------------------------------------- Idle Sets --------------------------------------------
------------------------------------------------------------------------------------------------
sets.idle = {
head="Espial Cap",
body="Espial Gambison",
hands="Espial Bracers",
legs="Etoile Tights +2",
feet="Dancer's Shoes",
neck="Orochi Nodowa",
waist="Twilight Belt",
left_ear="Signal Pearl",
right_ear="Reraise Earring",
left_ring="Warp Ring",
right_ring="Sheltered Ring",
back="Aptitude Mantle",
}
------------------------------------------------------------------------------------------------
-------------------------------------- Dual Wield Sets -----------------------------------------
------------------------------------------------------------------------------------------------
-- * DNC Native DW Trait: 30% DW
-- * DNC Job Points DW Gift: 5% DW
-- No Magic Haste (39% DW to cap)
sets.engaged.DW = {
head="Espial Cap",
body="Espial Gambison",
hands="Espial Bracers",
legs="Espial Hose",
feet="Espial Socks",
neck="Chivalrous Chain",
waist="Twilight Belt",
left_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Blood Ring",
right_ring="Rajas Ring",
back="Nifty Mantle",
}
-- 15% Magic Haste (32% DW to cap)
sets.engaged.DW.LowHaste = {
head="Espial Cap",
body="Espial Gambison",
hands="Espial Bracers",
legs="Espial Hose",
feet="Espial Socks",
neck="Chivalrous Chain",
waist="Twilight Belt",
left_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Blood Ring",
right_ring="Rajas Ring",
back="Nifty Mantle",
}
-- 30% Magic Haste (21% DW to cap)
sets.engaged.DW.MidHaste = {
head="Espial Cap",
body="Espial Gambison",
hands="Espial Bracers",
legs="Espial Hose",
feet="Espial Socks",
neck="Chivalrous Chain",
waist="Twilight Belt",
left_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Blood Ring",
right_ring="Rajas Ring",
back="Nifty Mantle",
}
-- 35% Magic Haste (16% DW to cap)
sets.engaged.DW.HighHaste = {
head="Espial Cap",
body="Espial Gambison",
hands="Espial Bracers",
legs="Espial Hose",
feet="Espial Socks",
neck="Chivalrous Chain",
waist="Twilight Belt",
left_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Blood Ring",
right_ring="Rajas Ring",
back="Nifty Mantle",
}
-- 45% Magic Haste (1% DW to cap)
sets.engaged.DW.MaxHaste = {
head="Espial Cap",
body="Espial Gambison",
hands="Espial Bracers",
legs="Espial Hose",
feet="Espial Socks",
neck="Chivalrous Chain",
waist="Twilight Belt",
left_ear="Suppanomimi",
right_ear="Brutal Earring",
left_ring="Blood Ring",
right_ring="Rajas Ring",
back="Nifty Mantle",
}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
function job_post_precast(spell, action, spellMap, eventArgs)
if spell.type == "WeaponSkill" then
if state.Buff['Climactic Flourish'] then
equip(sets.buff['Climactic Flourish'])
end
end
if spell.type=='Waltz' and spell.target.type == 'SELF' then
equip(sets.precast.WaltzSelf)
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
function job_buff_change(buff,gain)
if buff == 'Climactic Flourish' then
handle_equipping_gear(player.status)
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
function job_handle_equipping_gear(playerStatus, eventArgs)
update_combat_form()
determine_haste_group()
end
function job_update(cmdParams, eventArgs)
handle_equipping_gear(player.status)
end
function update_combat_form()
if DW == true then
state.CombatForm:set('DW')
elseif DW == false then
state.CombatForm:reset()
end
end
function customize_melee_set(meleeSet)
if state.Buff['Climactic Flourish'] then
meleeSet = set_combine(meleeSet, sets.buff['Climactic Flourish'])
end
return meleeSet
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function determine_haste_group()
classes.CustomMeleeGroups:clear()
if DW == true then
if DW_needed <= 1 then
classes.CustomMeleeGroups:append('MaxHaste')
elseif DW_needed > 1 and DW_needed <= 9 then
classes.CustomMeleeGroups:append('HighHaste')
elseif DW_needed > 9 and DW_needed <= 21 then
classes.CustomMeleeGroups:append('MidHaste')
elseif DW_needed > 21 and DW_needed <= 39 then
classes.CustomMeleeGroups:append('LowHaste')
elseif DW_needed > 39 then
classes.CustomMeleeGroups:append('')
end
end
end
function gearinfo(cmdParams, eventArgs)
if cmdParams[1] == 'gearinfo' then
if type(tonumber(cmdParams[2])) == 'number' then
if tonumber(cmdParams[2]) ~= DW_needed then
DW_needed = tonumber(cmdParams[2])
DW = true
end
elseif type(cmdParams[2]) == 'string' then
if cmdParams[2] == 'false' then
DW_needed = 0
DW = false
end
end
if type(tonumber(cmdParams[3])) == 'number' then
if tonumber(cmdParams[3]) ~= Haste then
Haste = tonumber(cmdParams[3])
end
end
if type(cmdParams[4]) == 'string' then
if cmdParams[4] == 'true' then
moving = true
elseif cmdParams[4] == 'false' then
moving = false
end
end
if not midaction() then
job_update()
end
end
end
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2020-10-12 20:11:43
Ragnarok.Jessikah said: »Thanks! I'm not really sure how to share it, so I hope this is adequate
I'm not sure if windower changed something through the years, or if I simply tried to simplify and remove too much a few years ago, but I don't recall this error happening.
The reason sets.precast.Flourish2['Reverse Flourish'] doesn't work, is because Flourish2 by itself has to be defined first.
The same will apply to Flourish3.
Anyways here's the fix:
Highlight and Delete line 50, then paste the following: Code sets.precast.Flourish2 = {}
sets.precast.Flourish2['Reverse Flourish'] = {hands="Charis Bangles +1"}
sets.precast.Flourish3 = {}
I copy/pasted your lua loaded it, got the same error for line 50. Altered these lines and fixed it.
However, I am not getting any error about Flow.lua. That's a file directly from Gearswap. Try the above first and see if it solves anything. If not, all I can do is offer the following.
This is the code of the flow.lua starting line 346 and ending 355: Code function user_pcall(str,...)
if user_env then
if type(user_env[str]) == 'function' then
bool,err = pcall(user_env[str],...)
if not bool then error('\nGearSwap has detected an error in the user function '..str..':\n'..err) end
elseif user_env[str] then
msg.addon_msg(123,windower.to_shift_jis(tostring(str))..'() exists but is not a function')
end
end
end
1: Maybe double check that code, or copy/paste that.
2: Alternatively, replace your flow file with a copy of someone elses.
3: Delete the flow.lua file entirely and see if gearswap re-populated with a new one.
4: Head to the main Gearswap Support thread and ask people who know about the back end of Gearswap.
[+]
Ragnarok.Jessikah
Server: Ragnarok
Game: FFXI
Posts: 3833
By Ragnarok.Jessikah 2020-10-13 17:39:25
Wow, everything's working perfectly. Thank you so much, Cambion! :D
4 years ago I wrote Gearswap for Dummies.
4 weeks ago I returned to FFXI, completely forgot how to use Gearswap and ironically had to read my own guide, to re-learn. Upon doing so I was quickly aware of the shortcomings of my previous attempt as well as how much the game (and addons) have evolved since. Therefore I present to you, Gearswap for Dummies 2.0!
If you're already sufficient in Gearswap, you may still be interested in what I believe to be, the most up to date and sophisticated Haste-Detection rules available to us via GearInfo. (Skip to Post #6)
--------------------
Step 0: Files Needed
--------------------
A: Windower 4
Download Here: http://www.windower.net/
This is the program that makes all of the fancy applications work.
B: Notepad ++
Download Here: http://notepad-plus-plus.org/
This is the program that you use to actually create and edit the 'code' that spellcast uses and runs off of. For all intents and purposes, it's no more than a word document really.
--------------------------
Step 1: Obtaining Gearswap
--------------------------
Open Windower as usual. Before selecting a Profile, click “Addons”, scroll down until you see “GearSwap” and click the Download Button. Afterwards, ensure the Toggle Switch is in the “On” position, and then start FFXI as you always do.
-------------------------------
Step 2: Creating your .lua file
-------------------------------
Option A: Full Skeleton
Open Notepad ++
Create a new file
Copy and Paste the following file
https://pastebin.com/Cmb34Bnt
Option B: Start with mine
https://pastebin.com/hm1TKjcm
Option C: Absolute Bare Minimum
See Post #5
The Skeleton is 100% functional, you just export, copy, and paste your gearsets where you like, and ignore everything you don't want to touch, with no negative impact.
If you are like me, looking at someone else's gearswap is overwhelming, my eyes gloss over, and I can't comprehend how or even where to begin editing it.
If you are the type of person who does not get overwhelmed by the full file... then you probably don't need this tutorial or maybe you just want the new haste rule breakdown, you are more than welcome to use mine and just start customizing it. From this step forward I will be focusing on the Skeleton file, as I believe that is the target audience.
*Special note my files are largely based on/stolen from Mote, Arislan, and a few others where I've hacked small pieces here and there, or altered things to fit my needs, and frankenstein'd them together. Full credit to all of those who did the hard work.
---------------------------------------
Step 3: Putting your .lua into Gearswap
---------------------------------------
Once you've created your Skeleton file:
Click on File > 'Save as'
1) At the top of the prompt you will need to tell it where you want to save the file to. (Yellow Arrow)
I use Windows 7, other Operating Systems may be slightly different, but should be close.
Computer
Local Disk C:
Program Files (x86)
Windower4
Addons
GearSwap
Data
2) Name the file CharacterName_Job Example: (Cambion_Dnc) (Red Arrow)
3) Save it as a .lua file ***VERY IMPORTANT*** (Blue Arrow)
Congratulation, you now have your very own Gearswap file!
In the next post we'll begin discussing how to customize it.
|
|