40 Slot Macro Auto-Configuring Setup

Language: JP EN DE FR
New Items
2023-11-19
users online
Forum » Windower » Spellcast Scripting » Other » 40 Slot Macro Auto-Configuring Setup
40 Slot Macro Auto-Configuring Setup
 Bismarck.Zorndyke
Offline
Server: Bismarck
Game: FFXI
user: zorndyke
Posts: 3
By Bismarck.Zorndyke 2014-04-05 14:28:38
Link | Quote | Reply
 
The Concept:
Problem:
-It gets annoying and confusing setting up separate macro pages for JOB/SJ1, JOB/SJ2, JOB/SJ3, etc. There's the MacroChanger addon that helps find the main page but it does not take into account subjobs.
-Often have to leave spells off macro books, simply because of space restrictions. Effects efficiency.
-Can set up multiple page macro sets (as opposed to singular pages) but complicates quickly as multiple job/subjob combinations grow and spread out.
-Macro maintenance becomes overly complicated, small changes in setup are not reflected in each iteration.
-Macros in different locations in each set leads to fumbling and lost time when navigating unfamiliar sets.

Ex:
I set up 4 or 5 different macro pages for PLD/WAR, PLD/RDM, PLD/DNC, PLD/NIN depending on activity. Also; set up many similar pages for all the jobs using standard subjobs like /DNC and /NIN. In each page, macros are in slightly different spots, often based on where they would fit/necessity.

Solution:
Give each job and subjob their own 20 slot page and make SpellCast switch between main/sj macro pages automatically by reading which combination I am currently in; no matter which combination it is. From there, can spread out into multiple pages, but job and subjob tracked separately so it does not overcomplicate things. (ex: SCH spread over 3 pages is unrelated to this SJ switching.)

The Seteup:
First, I set up all my macro books according to MacroChanger, (ex: WAR book 1, page 1) then I set up the subjob pages in those same books but on page 10 (ex: WAR(SJ) book 1, page 10). So at this point, nothing has been done besides putting things in predictable places.

Note: The following sections go in Name_job.xml in your spellcast folder (ex: Zorndyke_run.xml). Put this in each Name_job.xml that you use to make it always on.
Next, I set up a trigger spell variable and a switch to keep track of which position (main or sub) it was currently in:
Code
	<variables clear="True">
		<var name="PageTrig">Diaga III</var>
		<var name="SJswitch">1</var>
	</variables>   


Now, the complicated part: the actual switching. First, set 1 macro named Switch (or whatever you prefer, Main or Back, w/e) in each location to cast "/ma "Diaga III" <me>". I know, that spell doesn't make sense in that context, doesn't matter, it'll never cast. For my WAR example, this means setting a Diaga3 in book 1, page 1 and also one in DNC SJ location (book 19, page 10).

So, we need the rules that tell SpellCast to actually get to work. Here's that part (the real body of the project.)
Code
	<rules>  
		<if Spell="$PageTrig">
			<if advanced='"$SJswitch" == "1"'>
				<if mainjob="RUN">
					<action type="command">input /macro book 4;input /macro set 1;input /echo Rune Fencer macros equipped!;</action>
				</if>
				<elseif mainjob="WAR">
					<action type="command">input /macro book 1;input /macro set 1;input /echo Warrior macros equipped!;</action>
				</elseif>
				<elseif mainjob="MNK">
					<action type="command">input /macro book 2;input /macro set 1;input /echo Monk macros equipped!;</action>
				</elseif>
				<elseif mainjob="WHM">
					<action type="command">input /macro book 3;input /macro set 1;input /echo White Mage macros equipped!;</action>
				</elseif>
				<elseif mainjob="RDM">
					<action type="command">input /macro book 5;input /macro set 1;input /echo Red Mage macros equipped!;</action>
				</elseif>
				<elseif mainjob="THF">
					<action type="command">input /macro book 6;input /macro set 1;input /echo Thief macros equipped!;</action>
				</elseif>
				<elseif mainjob="PLD">
					<action type="command">input /macro book 7;input /macro set 1;input /echo Paladin macros equipped!;</action>
				</elseif>
				<elseif mainjob="DRK">
					<action type="command">input /macro book 8;input /macro set 1;input /echo Dark Knight macros equipped!;</action>
				</elseif>
				<elseif mainjob="BST">
					<action type="command">input /macro book 9;input /macro set 1;input /echo Beastmaster macros equipped!;</action>
				</elseif>
				<elseif mainjob="BRD">
					<action type="command">input /macro book 10;input /macro set 1;input /echo Bard macros equipped!;</action>
				</elseif>
				<elseif mainjob="RNG">
					<action type="command">input /macro book 11;input /macro set 1;input /echo Ranger macros equipped!;</action>
				</elseif>
				<elseif mainjob="SAM">
					<action type="command">input /macro book 12;input /macro set 1;input /echo Samurai macros equipped!;</action>
				</elseif>
				<elseif mainjob="NIN">
					<action type="command">input /macro book 13;input /macro set 1;input /echo Ninja macros equipped!;</action>
				</elseif>
				<elseif mainjob="DRG">
					<action type="command">input /macro book 14;input /macro set 1;input /echo Dragoon macros equipped!;</action>
				</elseif>
				<elseif mainjob="SMN">
					<action type="command">input /macro book 15;input /macro set 1;input /echo Summoner macros equipped!;</action>
				</elseif>
				<elseif mainjob="BLU">
					<action type="command">input /macro book 16;input /macro set 1;input /echo Blue Mage macros equipped!;</action>
				</elseif>
				<elseif mainjob="COR">
					<action type="command">input /macro book 17;input /macro set 1;input /echo Corsair macros equipped!;</action>
				</elseif>
				<elseif mainjob="PUP">
					<action type="command">input /macro book 18;input /macro set 1;input /echo Puppetmaster macros equipped!;</action>
				</elseif>
				<elseif mainjob="DNC">
					<action type="command">input /macro book 19;input /macro set 1;input /echo Dancer macros equipped!;</action>
				</elseif>
				<elseif mainjob="SCH">
					<action type="command">input /macro book 20;input /macro set 5;input /echo Scholar macros equipped!;</action>
				</elseif>
				<elseif mainjob="GEO">
					<action type="command">input /macro book 5;input /macro set 5;input /echo Geomancer macros equipped!;</action>
				</elseif>
				<elseif mainjob="BLM">
					<action type="command">input /macro book 20;input /macro set 1;input /echo Black Mage macros equipped!;</action>
				</elseif>
				<var cmd="set SJswitch 0" />
				<cancelspell />
				<return/>
			</if>
			<elseif subjob="WAR">
				<action type="command">input /macro book 1;input /macro set 10;input /echo Warrior macros equipped!;</action>
			</elseif>
			<elseif subjob="MNK">
				<action type="command">input /macro book 2;input /macro set 10;input /echo Monk macros equipped!;</action>
			</elseif>
			<elseif subjob="WHM">
				<action type="command">input /macro book 3;input /macro set 10;input /echo White Mage macros equipped!;</action>
			</elseif>
			<elseif subjob="RUN">
				<action type="command">input /macro book 4;input /macro set 10;input /echo Rune Fencer macros equipped!;</action>
			</elseif>
			<elseif subjob="RDM">
				<action type="command">input /macro book 5;input /macro set 3;input /echo Red Mage macros equipped!;</action>
			</elseif>
			<elseif subjob="GEO">
				<action type="command">input /macro book 5;input /macro set 10;input /echo Geomancer macros equipped!;</action>
			</elseif>
			<elseif subjob="THF">
				<action type="command">input /macro book 6;input /macro set 10;input /echo Thief macros equipped!;</action>
			</elseif>
			<elseif subjob="PLD">
				<action type="command">input /macro book 7;input /macro set 10;input /echo Paladin macros equipped!;</action>
			</elseif>
			<elseif subjob="DRK">
				<action type="command">input /macro book 8;input /macro set 10;input /echo Dark Knight macros equipped!;</action>
			</elseif>
			<elseif subjob="BST">
				<action type="command">input /macro book 9;input /macro set 10;input /echo Beastmaster macros equipped!;</action>
			</elseif>
			<elseif subjob="BRD">
				<action type="command">input /macro book 10;input /macro set 10;input /echo Bard macros equipped!;</action>
			</elseif>
			<elseif subjob="RNG">
				<action type="command">input /macro book 11;input /macro set 10;input /echo Ranger macros equipped!;</action>
			</elseif>
			<elseif subjob="SAM">
				<action type="command">input /macro book 12;input /macro set 10;input /echo Samurai macros equipped!;</action>
			</elseif>
			<elseif subjob="NIN">
				<action type="command">input /macro book 13;input /macro set 10;input /echo Ninja macros equipped!;</action>
			</elseif>
			<elseif subjob="DRG">
				<action type="command">input /macro book 14;input /macro set 10;input /echo Dragoon macros equipped!;</action>
			</elseif>
			<elseif subjob="SMN">
				<action type="command">input /macro book 15;input /macro set 10;input /echo Summoner macros equipped!;</action>
			</elseif>
			<elseif subjob="BLU">
				<action type="command">input /macro book 16;input /macro set 10;input /echo Blue Mage macros equipped!;</action>
			</elseif>
			<elseif subjob="COR">
				<action type="command">input /macro book 17;input /macro set 10;input /echo Corsair macros equipped!;</action>
			</elseif>
			<elseif subjob="PUP">
				<action type="command">input /macro book 18;input /macro set 10;input /echo Puppetmaster macros equipped!;</action>
			</elseif>
			<elseif subjob="DNC">
				<action type="command">input /macro book 19;input /macro set 10;input /echo Dancer macros equipped!;</action>
			</elseif>
			<elseif subjob="SCH">
				<action type="command">input /macro book 20;input /macro set 10;input /echo Scholar macros equipped!;</action>
			</elseif>
			<elseif subjob="BLM">
				<action type="command">input /macro book 20;input /macro set 3;input /echo Black Mage macros equipped!;</action>
			</elseif>	
			<var cmd="set SJswitch 1" />
			<cancelspell />
			<return/>
		</if>


Now, if you reload your SpellCast and hit those Switch macros, it should switch you between the two sets!

The beauty of this is that no matter what you switch your subjob to, this xml will move to the proper page when you hit your Switch macro! It will work for all job/subjob combinations and you won't have to tend 20 different /dnc sets for each main that uses /dnc! You need to up date 1 thing in /dnc? Go to book 19, page 10 and change it, any job using /dnc will reflect the update!

Benefits:
-40 macro slots available (20 main/20 sub)
-Automatically configures to ALL job/subjob combos
-Easy maintenance of subjob macro sets
-Subjob buttons always in same spots, less fumbling when changing (/dnc macros always in same position, whether NIN/DNC, PLD/DNC, THF/DNC, etc.)

Downsides:
-Cannot preview macros in other set until switching
-Significant investment to change from old way to this new way

In conclusion:
This new setup helps simplify the ever-increasing complication of leveling multiple jobs and subjobs. I believe this to be the best way of handling multiple job/subjob combinations. Please try it out and let me know what you think! Constructive criticism and feedback welcomed!

See you around!
 Leviathan.Frotaut
Offline
Server: Leviathan
Game: FFXI
user: Frotaut2
Posts: 281
By Leviathan.Frotaut 2014-04-05 14:52:36
Link | Quote | Reply
 
how much lag time would this create, i already feel the urge to switch to gearswap or w/e because Spellcast is becoming ever more laggy. With the bigger and better spellcast stuff mixed with autoexec i already get a bit a log sometimes when using abilities or weaponskill. Would this make it even more intensive on my pc drain making it more laggy?
I've been trying to find a solution to the same issues of *** thats not voke on this macro and using wrong ones after i switch a job.
 Bismarck.Zorndyke
Offline
Server: Bismarck
Game: FFXI
user: zorndyke
Posts: 3
By Bismarck.Zorndyke 2014-04-05 15:03:57
Link | Quote | Reply
 
It's not bad.

The code itself is kind of wordy but it's not intensive, only 2 variables to track in RAM, PageTrig and SJswitch.

I run ~415 lines of SC altogether right now, this being part of it. Works well for me.


***edited, forgot about PageTrig variable, 2 total! Shucks!
 Shiva.Onorgul
Offline
Server: Shiva
Game: FFXI
user: Onorgul
Posts: 3616
By Shiva.Onorgul 2014-04-05 15:08:33
Link | Quote | Reply
 
Does this only give you one macro page per main job/sub job combination? I know that I have several jobs whose sets vary depending on where I'm using what sub (e.g., at least two different pages for MNK/DNC or, back in the day, I think I had 4 for MNK/NIN).
 Bismarck.Zorndyke
Offline
Server: Bismarck
Game: FFXI
user: zorndyke
Posts: 3
By Bismarck.Zorndyke 2014-04-05 15:39:00
Link | Quote | Reply
 
It separates and matches up job/subjob combinations.

Ex: If you were to build a 6 page SCH setup, you would access all 6 pages from within the MAIN page. If you also made a 3 page /BLM setup, you would access them all from the SUB page. If you then equipped SCH/BLM, you would have access to all 9 pages (6 from MAIN, 3 from SUB).

If you then changed sub to /THF, you would still have access to all 6 SCH macro pages but now the switch would give your /THF macro page (and all of its potentially connected pages), instead of /BLM (and all of its connected pages).

If you then changed your MAIN job to something else and SUB to /BLM, you would get access to those 3 /BLM pages you had made.

So, things can still be as complicated as they need to be. 2 page MNK and 2 page /NIN could give your 4 page MNK/NIN. Or 3 pages of MNK and 1 NIN, whatever your case may be.

As long as macro pages are separated by job/subjob, that complicated MNK setup doesn't need to be recreated for each /SUB. The exact same MNK main page (no matter how complicated or how many pages it connects to) can feed ALL subjob combinations. If you change MNK macros, you don't have to change ALL MNK macro sets, there is only your main one to update.

Hope this helps!
Log in to post.