Spellcast XML Utilizing TH Sets

Language: JP EN DE FR
2010-09-08
New Items
users online
Forum » FFXI » Jobs » Thief » Spellcast XML utilizing TH sets
Spellcast XML utilizing TH sets
 Lye
Offline
Posts: 1721
By Lye 2013-01-14 10:48:54
Link | Quote | Reply
 
Hi. I use spellcast and have a decent xml I whipped up not too long ago.

Recently, I was considering whether or not I could use and bound key (or combination of keys) to control a particular variable in my spellcast.

I use a 360 controller and so I wanted to push the two bumper triggers at the same time and have it trigger a variable.

It would work like this:

1) Meleeing in haste/damage gear
2) (Pushes both bumper switches at the same time)
3) Variable is converted from damage to TH
4) Upon next "check" (post ws, spell, engage/disengage, etc) tp set incorporates TH gear.
5) (Pushes both bumper triggers at the same time again)
6) Variable is reset to tp w/o TH pieces.

Does anyone have a variable control that is switched via a binding like ctrl + alt that they could post?
 Lye
Offline
Posts: 1721
By Lye 2013-01-14 17:37:49
Link | Quote | Reply
 
In experimenting with this, I'm going to bind the keys to Flare.

Why is the following not quite working?


 Ragnarok.Flippant
Offline
Server: Ragnarok
Game: FFXI
user: Enceladus
Posts: 658
By Ragnarok.Flippant 2013-01-14 19:18:01
Link | Quote | Reply
 
Easier to read this way, using BBCode code tags:
Code
<if status="engaged">
	<action type="equip" when="engaged" set="$thTPOrTP" />
	<action type="equip" when="aftercast" set="$thTPOrTP" />
</if>
<if spell="Flare">
	<cancelspell />	
	<if type="var" cmd="$TP">
		<action type="var" cmd="set thTPOrTP thTP"/>
	</if>
	<else type="var" cmd="$thTP">
		<action type="var" cmd="set thTPOrTP TP"/>
	</else>
</if>
<if notstatus="engaged">
	<action type="equip" when="aftercast" set="Moving" />
	<action type="equip" when="idle" set="Moving" />
</if>


First, every if or elseif needs a condition to validate--and a condition is all the attributes written on the if or elseif tag. If status="engaged", if spell="flare", if notstatus="engaged" are all fine. But on line 7, you ask if type="var" AND ("AND" in this context meaning there are two conditions that must be true) if cmd="$TP". I'm not sure if these attributes would ever be valid in a Spellcast if tag, but I think you mean to ask if $thTPOrTP is currently set to TP. In which case, this could be checked by using advanced='"$thTPOrTP"="TP"'.

Second, all elses must not be written with a condition. Their condition is automatically met if none of the preceding if and elseif conditions have been met. If you find that you need to have a condition, change it to an elseif. In this case, you really don't, so you should just take the condition out.

So, to rewrite it:
Code
<if status="engaged">
	<action type="equip" when="engaged" set="$thTPOrTP" />
	<action type="equip" when="aftercast" set="$thTPOrTP" />
</if>
<if spell="Flare">
	<if advanced='"$thTPOrTP"="TP"'>
		<action type="var" cmd="set thTPOrTP thTP"/>
	</if>
	<else>
		<action type="var" cmd="set thTPOrTP TP"/>
	</else>
	<cancelspell />
</if>
<if notstatus="engaged">
	<action type="equip" when="aftercast" set="Moving" />
	<action type="equip" when="idle" set="Moving" />
</if>



Edit: Also, I put cancelspell at the end of the statement because I've never used it elsewhere and I can't guarantee how Spellcast handles it at the beginning. It probably doesn't matter, but I'm too lazy to test and wanted to give you something I felt more confident in >.>
[+]
 Bismarck.Tragedie
Offline
Server: Bismarck
Game: FFXI
Posts: 322
By Bismarck.Tragedie 2013-01-14 20:47:20
Link | Quote | Reply
 
I do something similar, but I don't have a separate set - I just equip and lock the hands and feet (could do thf knife also but most of the time I don't bother, so when I do use the knife I do it manually). That way when I toggle my variable, I know I have max th no matter what mode (i.e., using ranged attack or some other ja to land TH).
Code
<variables>
	<var name="FullTimeTH">0</var>
</variables>

...
Code
<rules>
	<if Advanced='"$FullTimeTH" = "1"'>
		<equip when="all">
		<sub lock="yes">Thief's Knife</sub>
		<hands lock="yes">Asn. Armlets +2</hands>
		<feet lock="yes">Raid. Poulaines +2</feet>
		</equip>
	</if>
</rules>


Locking it ensures that those slots will affected by swaps in other sets (although, thinking about it now, I might adjust that for my "oh-***-pdt/mdt macro"), so all the other slots will gear swap as intended.

Rather than using a trigger spell, I just made aliases that I type - //th to set the var on, //nth to take it off - but then I don't use a controller. Anyhow, it's the same concept you're already using, with the benefit of maintaining your other swaps, and not having to update your TH set as well when you change your gear (okay, not a big deal but still).
 Lye
Offline
Posts: 1721
By Lye 2013-01-14 21:07:54
Link | Quote | Reply
 
Thank you very much! Your post fixed my problem and gave me a great example to build off for other xmls!
 Valefor.Neokenesis
Offline
Server: Valefor
Game: FFXI
Posts: 174
By Valefor.Neokenesis 2013-01-14 22:16:04
Link | Quote | Reply
 
I generally switch in/out oynos knife and my sub but if I use TH knife it locks TH gear. I generally use FF macro system for TH if I haven't ranged attacked.

{/equip} {hands} {Asn. Armlets +2}
{/equip} {feet} {Raid. Poulaines +2}
{/wait} 3
{equip} {hands} {Thaumas Gloves}
{equip} {feet} {Asn. Poulaines +2}

Here is a copy of one of my TH scripts. It isn't perfect but it works
 Seraph.Jacaut
Offline
Server: Seraph
Game: FFXI
user: Jacaut
Posts: 383
By Seraph.Jacaut 2013-01-17 07:48:00
Link | Quote | Reply
 
so instead of starting a new topic ill just post in here for help.

I found this templete online and copy, pasted it and loaded it np.

Now then when i go through and change it to fit my gear it stops working. It says "Parsing Error: line 58 - cannot read ending tag"

As far as i can tell there is nothing wrong with it cause its just a "</set>" but i know nothing of xml's hence i use templates :P so can anyone help me out to figure out whats wrong? thanks in advance ^^
 Bismarck.Chaosprime
Offline
Server: Bismarck
Game: FFXI
Posts: 314
By Bismarck.Chaosprime 2013-01-17 08:02:15
Link | Quote | Reply
 
Seraph.Jacaut said: »
so instead of starting a new topic ill just post in here for help.

I found this templete online and copy, pasted it and loaded it np.

Now then when i go through and change it to fit my gear it stops working. It says "Parsing Error: line 58 - cannot read ending tag"

As far as i can tell there is nothing wrong with it cause its just a "</set>" but i know nothing of xml's hence i use templates :P so can anyone help me out to figure out whats wrong? thanks in advance ^^


What software are you using to save the XML file? i had this issue with a couple but using Notepad++ erased this issue. other programs altered the information in some way. Drove me nuts. especially when i kept posting it on a forum and it kept hanging lol.
 Bismarck.Chaosprime
Offline
Server: Bismarck
Game: FFXI
Posts: 314
By Bismarck.Chaosprime 2013-01-17 08:04:43
Link | Quote | Reply
 
Seraph.Jacaut said: »
so instead of starting a new topic ill just post in here for help.

I found this templete online and copy, pasted it and loaded it np.

Now then when i go through and change it to fit my gear it stops working. It says "Parsing Error: line 58 - cannot read ending tag"

As far as i can tell there is nothing wrong with it cause its just a "</set>" but i know nothing of xml's hence i use templates :P so can anyone help me out to figure out whats wrong? thanks in advance ^^


Issue lies here in line 47:
<sub>Kila +2/<sub>

should read:
<sub>Kila +2</sub>

Reason line 58 is causing the issue is because at line 58 its also looking for the end tag for sub and cant find it hence its stopping there. Hope this helps
 Seraph.Jacaut
Offline
Server: Seraph
Game: FFXI
user: Jacaut
Posts: 383
By Seraph.Jacaut 2013-01-17 08:08:27
Link | Quote | Reply
 
ah ty ^^ its too early for me to function lol. I also understand that now when it says end tag and its fine to check the set its ending thanks ^^

*edit* arrrrg now its line 76, i checked the for same issue now i dont see one again :P one day ill figure this out! sorry for the stupidty

**edit** i just deleted that idle set and wrote my own, works fine now ^^
necroskull Necro Bump Detected! [73 days between previous and next post]
 Odin.Godan
Offline
Server: Odin
Game: FFXI
user: Kayu
Posts: 3
By Odin.Godan 2013-03-31 08:46:52
Link | Quote | Reply
 
For the th part i would use thf knife as trigger, this way it stays like that untily ou get the proc after that just equip your normal dagger and steal or feint to change back to the normnal flow of your tp set.

<if mode="OR" EquipMain="Thief's Knife" EquipSub="Thief's Knife">
<action type="equip" when="idle|engaged|precast|midcast|aftercast">
<hands lock="yes">Assassin's Armlets +2</hands>
<feet lock="yes">Raid. Poulaines +2</feet>
</action>
</if>
necroskull Necro Bump Detected! [44 days between previous and next post]
By geekgirl101 2013-05-14 09:15:37
Link | Quote | Reply
 
Using lock doesn't seem to do anything for me. I still keep changing gear, so I've had to include in my macros lines to disable equipment.
 Bismarck.Tragedie
Offline
Server: Bismarck
Game: FFXI
Posts: 322
By Bismarck.Tragedie 2013-05-14 09:41:11
Link | Quote | Reply
 
geekgirl101 said: »
Using lock doesn't seem to do anything for me. I still keep changing gear, so I've had to include in my macros lines to disable equipment.
Can you post your XML file? I think this can happen if you match multiple if statements and not using elseif when applicable (or at least I think that's a problem I had in the past before I rewrote my xmls).

Other thing worth noting about lock: it only affects processing, so if you manually do a '//sc s gearset' command (via typing it, macro, or <command> function), it will swap all of the pieces, even ones you have locked. Fortunately, this can be used to your advantage; I have a 'move' gearset in each of my job xmls that contains my movespeed gear; in the case of THF, I can lock my TH (mentioned above), but then do "//sc s move" (on a keybind) to throw on my Fajin Boots anyway, even though the feet are otherwise locked.

Odin.Godan said: »
For the th part i would use thf knife as trigger, this way it stays like that untily ou get the proc after that just equip your normal dagger and steal or feint to change back to the normnal flow of your tp set.

<if mode="OR" EquipMain="Thief's Knife" EquipSub="Thief's Knife">
<action type="equip" when="idle|engaged|precast|midcast|aftercast">
<hands lock="yes">Assassin's Armlets +2</hands>
<feet lock="yes">Raid. Poulaines +2</feet>
</action>
</if>
Kind of a necro reply, but I like this idea, as I'm only going to be using the knife if I want full TH, so might as well get the other gear equipped... that said, there are a lot of times where I don't want to swap the dagger out but want to land TH for a hit, so I'm going to keep the //th macro... either way I'm gonna work this in. Thanks!
By geekgirl101 2013-05-14 17:49:53
Link | Quote | Reply
 
ok, no laughing, I haven't upgraded my gear in a long time. ;)
Code
<?xml version="1.0" ?>
<!--	This is a basic Thief xml designed to work with SATACAST.  There are routines included for Dancer sub which require the plugin Cancel, either comment them out or download the plugin (I recommend the plugin personally.)	-->
<spellcast xmlns:xi="http://www.w3.org/2001/XInclude">	
	<config
		Debug = "True"
		HideErrors = "False"
		ShowGearSwaps = "true"
		quickcommands = "True"
		showspellinfo = "False"
	/>
	<variables>
		<var name="THFOffHand">Rapidus Sax</var>
		<var name="THOffHand">Thief's Knife</var>
		<var name="StealOffHand">Bartholomew's Knife</var>
		<var name="OffHand">Rapidus Sax</var>
		<var name="RestoreSet">Engaged</var>
	</variables>
	<sets>
		<group default = "yes" name = "THF">
			<xi:include href="includes/includes.xml" xpointer="//include[@name='HELM']/*" />
			<set name = "Basic|Standard|Idle" Baseset="Evasion">
				<main>Twilight Dagger</main>
				<sub>$OffHand</sub>
				<range>Raider's Boomerang</range>
			</set>
			<set name = "Evasion">
				<head>Wivre Mask</head>
				<body>Antares Harness</body>
				<hands>Kacura Mittens</hands>
				<legs>Alcide's Subligar</legs>
				<feet>Raid. Poulaines +2</feet>
				<neck>Arctier's Torque</neck>
				<waist>Survival Belt</waist>
				<back>Blur Mantle</back>
				<lear>Dodge Earring</lear>
				<!--rear>Dodge Earring</rear-->
				<lring>Breeze Ring</lring>
				<rring>Solemn Ring</rring>
			</set>
			<!--TP Building Gear-->
			<set name = "Engaged">
				<head>Raider's Bonnet +1</head>
				<body>Rapparee Harness</body>
				<hands>Dusk Gloves</hands>
				<legs>Raid. Culottes +2</legs>
				<feet>Ballerines</feet>
				<neck>Spectacles</neck>
				<waist>Twilight Belt</waist>
				<back>Atheling Mantle</back>
				<lear>Coral Earring</lear>
				<rear>Suppanomimi</rear>
				<lring>Demonry Ring</lring>
				<rring>Keen Ring</rring>
			</set>
			<!--DEX Gear for Sneak Attack-->	
			<set name = "DEX">
				<head>Deceit Mask</head>
				<body>Dragon Harness</body>
				<hands>Kakura Mittens</hands>
				<legs>Raid. Culottes +1</legs>
				<feet>Kacura Leggings</feet>
				<neck>Spike Necklace</neck>
				<waist>Warwolf Belt</waist>
				<back>Nifty Mantle</back>
				<lear>Coral Earring</lear>
				<rear>Coral Earring</rear>
				<lring>Airy Ring</lring>
				<rring>Rajas Ring</rring>
			</set>
			<!--AGI Gear and Enmity for Trick Attack-->
			<set name = "AGI">
				<head>Bersail Cap</head>
				<body>Dragon Harness</body>
				<hands>Aurore Gloves</hands>
				<legs>Rogue's Culottes</legs>
				<feet>Raid. Poulaines +2</feet>
				<neck>Arctier's Torque</neck>
				<waist>Crudelis Belt</waist>
				<back>Atheling Mantle</back>
				<lear>Drone Earring</lear>
				<rear>Suppanomimi</rear>
				<lring>Breeze Ring</lring>
				<rring>Solemn Ring</rring>
			</set>
			<!--Weapon Skills-->
			<set name = "Evisceration" baseset="DEX">
				<back>Atheling Mantle</back>
			</set>
			<set name = "Exenterator" baseset="AGI">
				<head>Deceit Mask</head>
			</set>
			<!--Steal Bonuses-->
			<set name = "Steal">
				<head>Rogue's Bonnet</head>	
				<hands>Thief's Cote</hands>
				<legs>Assassin's Culottes</legs>
				<feet>Rogue's Poulaines</feet>
				<waist>Key Ring Belt</waist>
				<lring>Rogue's Ring</lring>
			</set>
			<set name = "Despoil">
				<legs>Raid. Culottes +1</legs>
				<feet>Raid. Poulaines +2</feet>
			</set>
			<!--Ranged Equipment-->
			<set name = "Ranged" Baseset="AGI">
				<head>Shunten Hachimaki</head>
				<body>Aurore Doublet</body>
				<hands>Trigger Gloves</hands>
				<legs>Aurore Brais</legs>
				<feet>Lithe Boots</feet>
				<neck>Arctier's Torque</neck>
				<lear>Volley Earring</lear>
				<rear>Drone Earring</rear>
				<lring>Arewe Ring</lring>
				<rring>Arewe Ring</rring>
			</set>
			<set name="Haste-Evasion" BaseSet="Evasion">
				<head>Walahra Turban</head>
				<body>Rapparee Harness</body>
			</set>
		</group>
		<group name="THBonus" Inherit="THF">
			<set name="Engaged" BaseGroup="THF">
				<sub lock="yes">$THOffHand</sub>
				<hands lock="yes">Assassin's Armlets</hands>
				<feet lock="yes">Raid. Poulaines +2</feet>
			</set>
		</group>
		<group name="Steal" Inherit="THF">
			<set name="Steal" BaseGroup="THF" BaseSet="Steal">
				<sub lock="yes">$StealOffHand</sub>
			</set>
		</group>
		<group name="Ranger" Inherit="THF">
			<set name="Ranged" BaseGroup="THF" BaseSet="Ranged">
				<range lock="yes">Zamburak +1</range>
				<ammo lock="yes" />
			</set>
		</group>
	</sets>

	<rules>
		<if status = "Dead">
			<action Type = "cancelspell" />
			<action Type = "return" />
		</if>
		<if status="engaged">
			<action type="equip" when="engaged|aftercast" set="$RestoreSet" />
		</if>
		<else>
			<if subjob="RNG">
				<action type="equip" when="idle|aftercast" set="Evasion" />
			</if>
			<else>
				<action type="equip" when="idle|aftercast" set="Idle" />
			</else>
		</else>
		<if TPGT="10">
			<action type="Disable" slot="main|sub|ranged" />
		</if>
		<else>
			<action type="Enable" slot="main|sub|ranged" />
		</else>
		<if type="Jobability">
			<if spell="Steal">
				<action type="castdelay" delay=".3" />
				<action type="Equip" when="precast" set="Steal" />
				<action type="Equip" when="Aftercast" set="$RestoreSet" />
			</if>
			<elseif spell="Despoil">
				<action type="castdelay" delay=".3" />
				<action type="Equip" when="precast" set="Despoil" />
				<action type="Equip" when="Aftercast" set="$RestoreSet" />
			</elseif>
			<elseif spell="Mug">
				<action type="castdelay" delay=".2" />
				<action type="Equip" when="precast">
					<head>Assassin's Bonnet</head>
				</action>
				<action type="Equip" when="Aftercast" set="$RestoreSet" />
			</elseif>
			<elseif spell="Flee">
				<action type="Equip" when="precast">
					<feet>Rogue's Poulaines</feet>
				</action>
				<action type="Equip" when="Aftercast" set="Evasion" />
			</elseif>
			<elseif spell="Hide">
				<action type="Equip" when="precast">
					<body>Rogue's Vest</body>
				</action>
				<action type="Equip" when="Aftercast" set="Evasion" />
			</elseif>
			<elseif spell="Accomplice">
				<action type="Equip" when="Aftercast" set="Evasion" />	
			</elseif>
		</if>
		<elseif type="weaponskill">
			<if NotTPLT="100">
				<if mode="or" spell="Evisceration">
					<action type="Equip" when="precast|midcast" Set="Evisceration"/>
				</if>
				<elseif mode="or" spell="Exenterator">
					<action type="Equip" when="precast|midcast" Set="Exenterator"/>
				</elseif>
				<action type="Equip" when="Aftercast" set="$RestoreSet" />
			</if>
		</elseif>
		<else>
			<!--Ninjutsu stuff-->
			<if spell="Utsusemi: Ichi">
				<action type="midcastdelay" delay="2.8" />
				<action type="Equip" when="midcast" set="Engaged"/>
				<if BuffActive="Copy Image">
					<action type="Command" when="midcast">cancel 66</action>
				</if>
				<action type="Equip" when="Aftercast" set="Evasion" />
			</if>
			<elseif spell="Utsusemi: Ni">
				<action type="Equip" when="precast" set="Engaged"/>
				<action type="Equip" when="Aftercast" set="$Restoreset" />
			</elseif>
			<elseif spell="Ranged">
				<action type="Equip" when="precast" set="Ranged" />
				<action type="Equip" when="Aftercast" set="Evasion" />
			</elseif>
		</else>
		<if spell="Spectral Jig" BuffActive="Sneak">
			<action type="command" when="precast">cancel 71</action>
		</if>
		<!--START Reminders-->
		<if mode="and" area="*Jeuno|*Windurst*|*Bastok*|*San d'Oria*" notarea="*(S)|Dynamis*" NotBuffActive="Signet">
			<command>input /echo Don't forget Signet </command>
		</if>	
		<if mode="and" area="*Waters (S)|*San d'Oria (S)|*Markets (S)" NotBuffActive="Sigil">
			<command>input /echo Don't forget Sigil </command>
		</if>	
		<if mode="and" area="Aht*|*Zhabi" NotBuffActive="Sanction">
			<command>input /echo Don't forget Sanction</command>
		</if>
		<!--END Reminders-->
	</rules>
</spellcast>
Log in to post.