MagicDKP [Deprecated for MOP]

37 - Export string

What steps will reproduce the problem? 1. Record any raid. 2. Go and export to CTRT string. 3. Open in notepad and notice that there are more <key#> entries in the <join>,<leave> objects than there should be.

What is the expected output? What do you see instead? In the <join> <leave> objects of the xml document there should at a maximum be 40 entries (assuming you are recording a 40man raid), right now for a 10 man raid there can be upwards of 30-50 <key> pairs in both <join><leave> which makes the string almost useless due to the amount of manual editing that has to go into fixing this.

What version of the product are you using? Latest SVN.

Here is what a proper <join> <leave> pair should look like, note I trimmed it just for illustration purposes:

<Join>
		<key1>
			<player>Ebalusmgo</player>
			<race>Scourge</race>
			<class>MAGE</class>
			<sex>2</sex>
			<level>80</level>
			<time>09/26/09 14:18:08</time>
		</key1>
		<key2>
			<player>Galenhawke</player>
			<race>Orc</race>
			<class>WARLOCK</class>
			<sex>2</sex>
			<level>80</level>
			<time>09/26/09 14:18:20</time>
		</key2>
		<key3>
			<player>Peaz</player>
			<race>BloodElf</race>
			<class>PALADIN</class>
			<sex>3</sex>
			<level>80</level>
			<time>09/26/09 14:18:08</time>
		</key3>
		<key4>
			<player>Phrenic</player>
			<race>Troll</race>
			<class>SHAMAN</class>
			<sex>3</sex>
			<level>80</level>
			<time>09/26/09 14:18:08</time>
		</key4>
		<key5>
			<player>Pushurluck</player>
			<race>BloodElf</race>
			<class>PALADIN</class>
			<sex>2</sex>
			<level>80</level>
			<time>09/26/09 14:18:08</time>
		</key5>
</Join>
<Leave>
		<key1>
			<player>Ebalusmgo</player>
			<time>09/26/09 14:52:52</time>
		</key1>
		<key2>
			<player>Galenhawke</player>
			<time>09/26/09 14:52:52</time>
		</key2>
		<key3>
			<player>Peaz</player>
			<time>09/26/09 14:52:52</time>
		</key3>
		<key4>
			<player>Phrenic</player>
			<time>09/26/09 14:52:52</time>
		</key4>
		<key5>
			<player>Pushurluck</player>
			<time>09/26/09 14:52:52</time>
		</key5>
</Leave>

And this is what MagicDKP export produces for the same 5 man event:

<Join>
		<key1>
			<player>Ebalusmgo</player>
			<race>Unknown</race>
			<class>MAGE</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/26/09 14:18:08</time>
		</key1>
		<key2>
			<player>Galenhawke</player>
			<race>Unknown</race>
			<class>DEATHKNIGHT</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key2>
		<key3>
			<player>Peaz</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key3>
		<key4>
			<player>Phrenic</player>
			<race>Unknown</race>
			<class>Shaman</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key4>
		<key5>
			<player>Pushurluck</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key5>
		<key6>
			<player>Ebalusmgo</player>
			<race>Unknown</race>
			<class>MAGE</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/26/09 14:18:08</time>
		</key6>
		<key7>
			<player>Galenhawke</player>
			<race>Unknown</race>
			<class>DEATHKNIGHT</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key7>
		<key8>
			<player>Peaz</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key8>
		<key9>
			<player>Phrenic</player>
			<race>Unknown</race>
			<class>Shaman</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key9>
		<key10>
			<player>Pushurluck</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key10>09/25/2009 19:46:10</time>
</Join>
<Leave>
		<key1>
			<player>Ebalusmgo</player>
			<time>09/26/09 14:52:52</time>
		</key1>
		<key2>
			<player>Galenhawke</player>
			<time>09/26/09 14:52:52</time>
		</key2>
		<key3>
			<player>Peaz</player>
			<time>09/26/09 14:52:52</time>
		</key3>
		<key4>
			<player>Phrenic</player>
			<time>09/26/09 14:52:52</time>
		</key4>
		<key5>
			<player>Pushurluck</player>
			<time>09/26/09 14:52:52</time>
		</key5>
                <key6>
			<player>Ebalusmgo</player>
			<time>09/26/09 14:52:52</time>
		</key6>
		<key7>
			<player>Galenhawke</player>
			<time>09/26/09 14:52:52</time>
		</key7>
		<key8>
			<player>Peaz</player>
			<time>09/26/09 14:52:52</time>
		</key8>
		<key9>
			<player>Phrenic</player>
			<time>09/26/09 14:52:52</time>
		</key9>
		<key10>
			<player>Pushurluck</player>
			<time>09/26/09 14:52:52</time>
		</key10>
</Leave>

And the join/leave entries can really grow to whatever numbers without rhyme or reason. For example I have a parse from a 25man raid from last night and this is what the full file looks like:

<RaidInfo>
	<key>09/25/2009 19:27:08</key>
	<start>09/25/2009 19:27:08</start>
	<end>09/25/2009 21:13:23</end>
	<zone>Ulduar</zone>
	<BossKills>
		<key1>
			<name>Ulduar</name>
			<time>09/25/2009 19:49:10</time>
			<attendees>
				<key1>
					<name>disenchant</name>
				</key1>
				<key2>
					<name>Kenric</name>
				</key2>
				<key3>
					<name>Extravagant</name>
				</key3>
				<key4>
					<name>Hagel</name>
				</key4>
				<key5>
					<name>Veriana</name>
				</key5>
				<key6>
					<name>Tr�th</name>
				</key6>
				<key7>
					<name>Nobovis</name>
				</key7>
				<key8>
					<name>Tjthed�de</name>
				</key8>
				<key9>
					<name>Peaz</name>
				</key9>
				<key10>
					<name>Ebalusmgo</name>
				</key10>
				<key11>
					<name>Uneak</name>
				</key11>
				<key12>
					<name>Phrenic</name>
				</key12>
				<key13>
					<name>Chei</name>
				</key13>
				<key14>
					<name>Pushurluck</name>
				</key14>
				<key15>
					<name>Scolbu</name>
				</key15>
				<key16>
					<name>Elfshine</name>
				</key16>
				<key17>
					<name>Symi</name>
				</key17>
				<key18>
					<name>Tauntra</name>
				</key18>
				<key19>
					<name>Bakugami</name>
				</key19>
				<key20>
					<name>Docclara</name>
				</key20>
				<key21>
					<name>Yuksick</name>
				</key21>
				<key22>
					<name>Zayownage</name>
				</key22>
				<key23>
					<name>Melodiya</name>
				</key23>
				<key24>
					<name>Slientnight</name>
				</key24>
				<key25>
					<name>Aelmin</name>
				</key25>
				<key26>
					<name>Shinnyting</name>
				</key26>
			</attendees>
		</key1>
		<key2>
			<name>Wipe - Freya #1</name>
			<time>09/25/2009 20:34:08</time>
			<attendees>
				<key1>
					<name>Slientnight</name>
				</key1>
				<key2>
					<name>Kenric</name>
				</key2>
				<key3>
					<name>Extravagant</name>
				</key3>
				<key4>
					<name>Hagel</name>
				</key4>
				<key5>
					<name>Veriana</name>
				</key5>
				<key6>
					<name>Tr�th</name>
				</key6>
				<key7>
					<name>Nobovis</name>
				</key7>
				<key8>
					<name>Tjthed�de</name>
				</key8>
				<key9>
					<name>Peaz</name>
				</key9>
				<key10>
					<name>Ebalusmgo</name>
				</key10>
				<key11>
					<name>Uneak</name>
				</key11>
				<key12>
					<name>Phrenic</name>
				</key12>
				<key13>
					<name>Chei</name>
				</key13>
				<key14>
					<name>Pushurluck</name>
				</key14>
				<key15>
					<name>Scolbu</name>
				</key15>
				<key16>
					<name>Symi</name>
				</key16>
				<key17>
					<name>Tauntra</name>
				</key17>
				<key18>
					<name>Elfshine</name>
				</key18>
				<key19>
					<name>Docclara</name>
				</key19>
				<key20>
					<name>Yuksick</name>
				</key20>
				<key21>
					<name>Zayownage</name>
				</key21>
				<key22>
					<name>Melodiya</name>
				</key22>
				<key23>
					<name>Bakugami</name>
				</key23>
				<key24>
					<name>Aelmin</name>
				</key24>
				<key25>
					<name>Shinnyting</name>
				</key25>
				<key26>
					<name>Masalar</name>
				</key26>
				<key27>
					<name>Graynsquirel</name>
				</key27>
			</attendees>
		</key2>
		<key3>
			<name>Freya</name>
			<time>09/25/2009 20:53:17</time>
			<attendees>
				<key1>
					<name>Slientnight</name>
				</key1>
				<key2>
					<name>Kenric</name>
				</key2>
				<key3>
					<name>Extravagant</name>
				</key3>
				<key4>
					<name>Hagel</name>
				</key4>
				<key5>
					<name>Veriana</name>
				</key5>
				<key6>
					<name>Tr�th</name>
				</key6>
				<key7>
					<name>Nobovis</name>
				</key7>
				<key8>
					<name>Tjthed�de</name>
				</key8>
				<key9>
					<name>Peaz</name>
				</key9>
				<key10>
					<name>Ebalusmgo</name>
				</key10>
				<key11>
					<name>Uneak</name>
				</key11>
				<key12>
					<name>Phrenic</name>
				</key12>
				<key13>
					<name>Chei</name>
				</key13>
				<key14>
					<name>Pushurluck</name>
				</key14>
				<key15>
					<name>Scolbu</name>
				</key15>
				<key16>
					<name>Symi</name>
				</key16>
				<key17>
					<name>Tauntra</name>
				</key17>
				<key18>
					<name>Elfshine</name>
				</key18>
				<key19>
					<name>Docclara</name>
				</key19>
				<key20>
					<name>Yuksick</name>
				</key20>
				<key21>
					<name>Zayownage</name>
				</key21>
				<key22>
					<name>Melodiya</name>
				</key22>
				<key23>
					<name>Bakugami</name>
				</key23>
				<key24>
					<name>Aelmin</name>
				</key24>
				<key25>
					<name>Shinnyting</name>
				</key25>
				<key26>
					<name>Masalar</name>
				</key26>
				<key27>
					<name>Graynsquirel</name>
				</key27>
			</attendees>
		</key3>
	</BossKills>
	<Join>
		<key1>
			<player>disenchant</player>
			<race/>
			<class/>
			<sex>0</sex>
			<level>0</level>
			<time>09/25/2009 19:46:10</time>
		</key1>
		<key2>
			<player>Kenric</player>
			<race>Unknown</race>
			<class>DEATHKNIGHT</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key2>
		<key3>
			<player>Extravagant</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key3>
		<key4>
			<player>Hagel</player>
			<race>Unknown</race>
			<class>WARRIOR</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key4>
		<key5>
			<player>Veriana</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key5>
		<key6>
			<player>Tr�th</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key6>
		<key7>
			<player>Nobovis</player>
			<race>Unknown</race>
			<class>WARRIOR</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key7>
		<key8>
			<player>Tjthed�de</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key8>
		<key9>
			<player>Peaz</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key9>
		<key10>
			<player>Ebalusmgo</player>
			<race>Unknown</race>
			<class>MAGE</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key10>
		<key11>
			<player>Uneak</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key11>
		<key12>
			<player>Phrenic</player>
			<race>Unknown</race>
			<class>SHAMAN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key12>
		<key13>
			<player>Chei</player>
			<race>Unknown</race>
			<class>ROGUE</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key13>
		<key14>
			<player>Pushurluck</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key14>
		<key15>
			<player>Scolbu</player>
			<race>Unknown</race>
			<class>WARLOCK</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key15>
		<key16>
			<player>Elfshine</player>
			<race>Unknown</race>
			<class>MAGE</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key16>
		<key17>
			<player>Symi</player>
			<race>Unknown</race>
			<class>MAGE</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key17>
		<key18>
			<player>Tauntra</player>
			<race>Unknown</race>
			<class>WARRIOR</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key18>
		<key19>
			<player>Bakugami</player>
			<race>Unknown</race>
			<class>SHAMAN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key19>
		<key20>
			<player>Docclara</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key20>
		<key21>
			<player>Yuksick</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key21>
		<key22>
			<player>Zayownage</player>
			<race>Unknown</race>
			<class>WARLOCK</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key22>
		<key23>
			<player>Melodiya</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key23>
		<key24>
			<player>Slientnight</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key24>
		<key25>
			<player>Aelmin</player>
			<race>Unknown</race>
			<class>DRUID</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key25>
		<key26>
			<player>Shinnyting</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 19:46:10</time>
		</key26>
		<key27>
			<player>Slientnight</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key27>
		<key28>
			<player>Kenric</player>
			<race>Unknown</race>
			<class>DEATHKNIGHT</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key28>
		<key29>
			<player>Extravagant</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key29>
		<key30>
			<player>Hagel</player>
			<race>Unknown</race>
			<class>WARRIOR</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key30>
		<key31>
			<player>Veriana</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key31>
		<key32>
			<player>Tr�th</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key32>
		<key33>
			<player>Nobovis</player>
			<race>Unknown</race>
			<class>WARRIOR</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key33>
		<key34>
			<player>Tjthed�de</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key34>
		<key35>
			<player>Peaz</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key35>
		<key36>
			<player>Ebalusmgo</player>
			<race>Unknown</race>
			<class>MAGE</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key36>
		<key37>
			<player>Uneak</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key37>
		<key38>
			<player>Phrenic</player>
			<race>Unknown</race>
			<class>SHAMAN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key38>
		<key39>
			<player>Chei</player>
			<race>Unknown</race>
			<class>ROGUE</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key39>
		<key40>
			<player>Pushurluck</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key40>
		<key41>
			<player>Scolbu</player>
			<race>Unknown</race>
			<class>WARLOCK</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key41>
		<key42>
			<player>Symi</player>
			<race>Unknown</race>
			<class>MAGE</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key42>
		<key43>
			<player>Tauntra</player>
			<race>Unknown</race>
			<class>WARRIOR</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key43>
		<key44>
			<player>Elfshine</player>
			<race>Unknown</race>
			<class>MAGE</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key44>
		<key45>
			<player>Docclara</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key45>
		<key46>
			<player>Yuksick</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key46>
		<key47>
			<player>Zayownage</player>
			<race>Unknown</race>
			<class>WARLOCK</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key47>
		<key48>
			<player>Melodiya</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key48>
		<key49>
			<player>Bakugami</player>
			<race>Unknown</race>
			<class>SHAMAN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key49>
		<key50>
			<player>Aelmin</player>
			<race>Unknown</race>
			<class>DRUID</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key50>
		<key51>
			<player>Shinnyting</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key51>
		<key52>
			<player>Masalar</player>
			<race>Unknown</race>
			<class>HUNTER</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key52>
		<key53>
			<player>Graynsquirel</player>
			<race>Unknown</race>
			<class>HUNTER</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:31:08</time>
		</key53>
		<key54>
			<player>Slientnight</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key54>
		<key55>
			<player>Kenric</player>
			<race>Unknown</race>
			<class>DEATHKNIGHT</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key55>
		<key56>
			<player>Extravagant</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key56>
		<key57>
			<player>Hagel</player>
			<race>Unknown</race>
			<class>WARRIOR</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key57>
		<key58>
			<player>Veriana</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key58>
		<key59>
			<player>Tr�th</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key59>
		<key60>
			<player>Nobovis</player>
			<race>Unknown</race>
			<class>WARRIOR</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key60>
		<key61>
			<player>Tjthed�de</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key61>
		<key62>
			<player>Peaz</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key62>
		<key63>
			<player>Ebalusmgo</player>
			<race>Unknown</race>
			<class>MAGE</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key63>
		<key64>
			<player>Uneak</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key64>
		<key65>
			<player>Phrenic</player>
			<race>Unknown</race>
			<class>SHAMAN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key65>
		<key66>
			<player>Chei</player>
			<race>Unknown</race>
			<class>ROGUE</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key66>
		<key67>
			<player>Pushurluck</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key67>
		<key68>
			<player>Scolbu</player>
			<race>Unknown</race>
			<class>WARLOCK</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key68>
		<key69>
			<player>Symi</player>
			<race>Unknown</race>
			<class>MAGE</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key69>
		<key70>
			<player>Tauntra</player>
			<race>Unknown</race>
			<class>WARRIOR</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key70>
		<key71>
			<player>Elfshine</player>
			<race>Unknown</race>
			<class>MAGE</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key71>
		<key72>
			<player>Docclara</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key72>
		<key73>
			<player>Yuksick</player>
			<race>Unknown</race>
			<class>PALADIN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key73>
		<key74>
			<player>Zayownage</player>
			<race>Unknown</race>
			<class>WARLOCK</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key74>
		<key75>
			<player>Melodiya</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key75>
		<key76>
			<player>Bakugami</player>
			<race>Unknown</race>
			<class>SHAMAN</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key76>
		<key77>
			<player>Aelmin</player>
			<race>Unknown</race>
			<class>DRUID</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key77>
		<key78>
			<player>Shinnyting</player>
			<race>Unknown</race>
			<class>PRIEST</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key78>
		<key79>
			<player>Masalar</player>
			<race>Unknown</race>
			<class>HUNTER</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key79>
		<key80>
			<player>Graynsquirel</player>
			<race>Unknown</race>
			<class>HUNTER</class>
			<sex>0</sex>
			<level>80</level>
			<time>09/25/2009 20:50:17</time>
		</key80>
	</Join>
	<Leave>
		<key1>
			<player>disenchant</player>
			<time>09/25/2009 19:52:10</time>
		</key1>
		<key2>
			<player>Kenric</player>
			<time>09/25/2009 19:52:10</time>
		</key2>
		<key3>
			<player>Extravagant</player>
			<time>09/25/2009 19:52:10</time>
		</key3>
		<key4>
			<player>Hagel</player>
			<time>09/25/2009 19:52:10</time>
		</key4>
		<key5>
			<player>Veriana</player>
			<time>09/25/2009 19:52:10</time>
		</key5>
		<key6>
			<player>Tr�th</player>
			<time>09/25/2009 19:52:10</time>
		</key6>
		<key7>
			<player>Nobovis</player>
			<time>09/25/2009 19:52:10</time>
		</key7>
		<key8>
			<player>Tjthed�de</player>
			<time>09/25/2009 19:52:10</time>
		</key8>
		<key9>
			<player>Peaz</player>
			<time>09/25/2009 19:52:10</time>
		</key9>
		<key10>
			<player>Ebalusmgo</player>
			<time>09/25/2009 19:52:10</time>
		</key10>
		<key11>
			<player>Uneak</player>
			<time>09/25/2009 19:52:10</time>
		</key11>
		<key12>
			<player>Phrenic</player>
			<time>09/25/2009 19:52:10</time>
		</key12>
		<key13>
			<player>Chei</player>
			<time>09/25/2009 19:52:10</time>
		</key13>
		<key14>
			<player>Pushurluck</player>
			<time>09/25/2009 19:52:10</time>
		</key14>
		<key15>
			<player>Scolbu</player>
			<time>09/25/2009 19:52:10</time>
		</key15>
		<key16>
			<player>Elfshine</player>
			<time>09/25/2009 19:52:10</time>
		</key16>
		<key17>
			<player>Symi</player>
			<time>09/25/2009 19:52:10</time>
		</key17>
		<key18>
			<player>Tauntra</player>
			<time>09/25/2009 19:52:10</time>
		</key18>
		<key19>
			<player>Bakugami</player>
			<time>09/25/2009 19:52:10</time>
		</key19>
		<key20>
			<player>Docclara</player>
			<time>09/25/2009 19:52:10</time>
		</key20>
		<key21>
			<player>Yuksick</player>
			<time>09/25/2009 19:52:10</time>
		</key21>
		<key22>
			<player>Zayownage</player>
			<time>09/25/2009 19:52:10</time>
		</key22>
		<key23>
			<player>Melodiya</player>
			<time>09/25/2009 19:52:10</time>
		</key23>
		<key24>
			<player>Slientnight</player>
			<time>09/25/2009 19:52:10</time>
		</key24>
		<key25>
			<player>Aelmin</player>
			<time>09/25/2009 19:52:10</time>
		</key25>
		<key26>
			<player>Shinnyting</player>
			<time>09/25/2009 19:52:10</time>
		</key26>
		<key27>
			<player>Slientnight</player>
			<time>09/25/2009 20:37:08</time>
		</key27>
		<key28>
			<player>Kenric</player>
			<time>09/25/2009 20:37:08</time>
		</key28>
		<key29>
			<player>Extravagant</player>
			<time>09/25/2009 20:37:08</time>
		</key29>
		<key30>
			<player>Hagel</player>
			<time>09/25/2009 20:37:08</time>
		</key30>
		<key31>
			<player>Veriana</player>
			<time>09/25/2009 20:37:08</time>
		</key31>
		<key32>
			<player>Tr�th</player>
			<time>09/25/2009 20:37:08</time>
		</key32>
		<key33>
			<player>Nobovis</player>
			<time>09/25/2009 20:37:08</time>
		</key33>
		<key34>
			<player>Tjthed�de</player>
			<time>09/25/2009 20:37:08</time>
		</key34>
		<key35>
			<player>Peaz</player>
			<time>09/25/2009 20:37:08</time>
		</key35>
		<key36>
			<player>Ebalusmgo</player>
			<time>09/25/2009 20:37:08</time>
		</key36>
		<key37>
			<player>Uneak</player>
			<time>09/25/2009 20:37:08</time>
		</key37>
		<key38>
			<player>Phrenic</player>
			<time>09/25/2009 20:37:08</time>
		</key38>
		<key39>
			<player>Chei</player>
			<time>09/25/2009 20:37:08</time>
		</key39>
		<key40>
			<player>Pushurluck</player>
			<time>09/25/2009 20:37:08</time>
		</key40>
		<key41>
			<player>Scolbu</player>
			<time>09/25/2009 20:37:08</time>
		</key41>
		<key42>
			<player>Symi</player>
			<time>09/25/2009 20:37:08</time>
		</key42>
		<key43>
			<player>Tauntra</player>
			<time>09/25/2009 20:37:08</time>
		</key43>
		<key44>
			<player>Elfshine</player>
			<time>09/25/2009 20:37:08</time>
		</key44>
		<key45>
			<player>Docclara</player>
			<time>09/25/2009 20:37:08</time>
		</key45>
		<key46>
			<player>Yuksick</player>
			<time>09/25/2009 20:37:08</time>
		</key46>
		<key47>
			<player>Zayownage</player>
			<time>09/25/2009 20:37:08</time>
		</key47>
		<key48>
			<player>Melodiya</player>
			<time>09/25/2009 20:37:08</time>
		</key48>
		<key49>
			<player>Bakugami</player>
			<time>09/25/2009 20:37:08</time>
		</key49>
		<key50>
			<player>Aelmin</player>
			<time>09/25/2009 20:37:08</time>
		</key50>
		<key51>
			<player>Shinnyting</player>
			<time>09/25/2009 20:37:08</time>
		</key51>
		<key52>
			<player>Masalar</player>
			<time>09/25/2009 20:37:08</time>
		</key52>
		<key53>
			<player>Graynsquirel</player>
			<time>09/25/2009 20:37:08</time>
		</key53>
		<key54>
			<player>Slientnight</player>
			<time>09/25/2009 20:56:17</time>
		</key54>
		<key55>
			<player>Kenric</player>
			<time>09/25/2009 20:56:17</time>
		</key55>
		<key56>
			<player>Extravagant</player>
			<time>09/25/2009 20:56:17</time>
		</key56>
		<key57>
			<player>Hagel</player>
			<time>09/25/2009 20:56:17</time>
		</key57>
		<key58>
			<player>Veriana</player>
			<time>09/25/2009 20:56:17</time>
		</key58>
		<key59>
			<player>Tr�th</player>
			<time>09/25/2009 20:56:17</time>
		</key59>
		<key60>
			<player>Nobovis</player>
			<time>09/25/2009 20:56:17</time>
		</key60>
		<key61>
			<player>Tjthed�de</player>
			<time>09/25/2009 20:56:17</time>
		</key61>
		<key62>
			<player>Peaz</player>
			<time>09/25/2009 20:56:17</time>
		</key62>
		<key63>
			<player>Ebalusmgo</player>
			<time>09/25/2009 20:56:17</time>
		</key63>
		<key64>
			<player>Uneak</player>
			<time>09/25/2009 20:56:17</time>
		</key64>
		<key65>
			<player>Phrenic</player>
			<time>09/25/2009 20:56:17</time>
		</key65>
		<key66>
			<player>Chei</player>
			<time>09/25/2009 20:56:17</time>
		</key66>
		<key67>
			<player>Pushurluck</player>
			<time>09/25/2009 20:56:17</time>
		</key67>
		<key68>
			<player>Scolbu</player>
			<time>09/25/2009 20:56:17</time>
		</key68>
		<key69>
			<player>Symi</player>
			<time>09/25/2009 20:56:17</time>
		</key69>
		<key70>
			<player>Tauntra</player>
			<time>09/25/2009 20:56:17</time>
		</key70>
		<key71>
			<player>Elfshine</player>
			<time>09/25/2009 20:56:17</time>
		</key71>
		<key72>
			<player>Docclara</player>
			<time>09/25/2009 20:56:17</time>
		</key72>
		<key73>
			<player>Yuksick</player>
			<time>09/25/2009 20:56:17</time>
		</key73>
		<key74>
			<player>Zayownage</player>
			<time>09/25/2009 20:56:17</time>
		</key74>
		<key75>
			<player>Melodiya</player>
			<time>09/25/2009 20:56:17</time>
		</key75>
		<key76>
			<player>Bakugami</player>
			<time>09/25/2009 20:56:17</time>
		</key76>
		<key77>
			<player>Aelmin</player>
			<time>09/25/2009 20:56:17</time>
		</key77>
		<key78>
			<player>Shinnyting</player>
			<time>09/25/2009 20:56:17</time>
		</key78>
		<key79>
			<player>Masalar</player>
			<time>09/25/2009 20:56:17</time>
		</key79>
		<key80>
			<player>Graynsquirel</player>
			<time>09/25/2009 20:56:17</time>
		</key80>
	</Leave>
	<Loot>
		<key1>
			<ItemName>Pendant of Focused Energies</ItemName>
			<ItemID>45539:0:0:0:0:0:0:0:80</ItemID>
			<Icon>Interface\Icons\INV_Jewelry_Necklace_40</Icon>
			<Class>Armor</Class>
			<SubClass>Miscellaneous</SubClass>
			<Color>ffa335ee</Color>
			<Count>1</Count>
			<Player>Veriana</Player>
			<Costs>4</Costs>
			<Time>09/25/2009 19:49:10</Time>
			<Zone>Ulduar</Zone>
			<Boss>Ulduar</Boss>
			<Note><![CDATA[ - Zone: Ulduar - Boss: Ulduar - 4 DKP]]></Note>
		</key1>
		<key2>
			<ItemName>Shoulders of Misfortune</ItemName>
			<ItemID>45543:0:0:0:0:0:0:0:80</ItemID>
			<Icon>Interface\Icons\INV_Shoulder_101</Icon>
			<Class>Armor</Class>
			<SubClass>Mail</SubClass>
			<Color>ffa335ee</Color>
			<Count>1</Count>
			<Player>disenchant</Player>
			<Costs>0</Costs>
			<Time>09/25/2009 19:49:10</Time>
			<Zone>Ulduar</Zone>
			<Boss>Ulduar</Boss>
			<Note><![CDATA[ - Zone: Ulduar - Boss: Ulduar - 0 DKP]]></Note>
		</key2>
		<key3>
			<ItemName>Legplates of the Wayward Conqueror</ItemName>
			<ItemID>45653:0:0:0:0:0:0:0:80</ItemID>
			<Icon>Interface\Icons\INV_Pants_Plate_17</Icon>
			<Class>Miscellaneous</Class>
			<SubClass>Junk</SubClass>
			<Color>ffa335ee</Color>
			<Count>1</Count>
			<Player>Uneak</Player>
			<Costs>6</Costs>
			<Time>09/25/2009 19:49:10</Time>
			<Zone>Ulduar</Zone>
			<Boss>Ulduar</Boss>
			<Note><![CDATA[ - Zone: Ulduar - Boss: Ulduar - 6 DKP]]></Note>
		</key3>
		<key4>
			<ItemName>Legplates of the Wayward Vanquisher</ItemName>
			<ItemID>45655:0:0:0:0:0:0:0:80</ItemID>
			<Icon>Interface\Icons\INV_Pants_Plate_17</Icon>
			<Class>Miscellaneous</Class>
			<SubClass>Junk</SubClass>
			<Color>ffa335ee</Color>
			<Count>1</Count>
			<Player>Slientnight</Player>
			<Costs>6</Costs>
			<Time>09/25/2009 19:49:10</Time>
			<Zone>Ulduar</Zone>
			<Boss>Ulduar</Boss>
			<Note><![CDATA[ - Zone: Ulduar - Boss: Ulduar - 6 DKP]]></Note>
		</key4>
		<key5>
			<ItemName>Leggings of the Lifetender</ItemName>
			<ItemID>45482:0:0:0:0:0:0:0:80</ItemID>
			<Icon>Interface\Icons\INV_Pants_Leather_28</Icon>
			<Class>Armor</Class>
			<SubClass>Leather</SubClass>
			<Color>ffa335ee</Color>
			<Count>1</Count>
			<Player>disenchant</Player>
			<Costs>0</Costs>
			<Time>09/25/2009 19:49:10</Time>
			<Zone>Ulduar</Zone>
			<Boss>Ulduar</Boss>
			<Note><![CDATA[ - Zone: Ulduar - Boss: Ulduar - 0 DKP]]></Note>
		</key5>
		<key6>
			<ItemName>Frostweave Cloth</ItemName>
			<ItemID>33470:0:0:0:0:0:0:0:80</ItemID>
			<Icon>Interface\Icons\INV_Fabric_Soulcloth</Icon>
			<Class>Trade Goods</Class>
			<SubClass>Cloth</SubClass>
			<Color>ffffffff</Color>
			<Count>1</Count>
			<Player>disenchant</Player>
			<Costs>0</Costs>
			<Time>09/25/2009 20:34:08</Time>
			<Zone>Ulduar</Zone>
			<Boss>Wipe - Freya #1</Boss>
			<Note><![CDATA[ - Zone: Ulduar - Boss: Wipe - Freya #1 - 0 DKP]]></Note>
		</key6>
		<key7>
			<ItemName>Frostweave Cloth</ItemName>
			<ItemID>33470:0:0:0:0:0:0:0:80</ItemID>
			<Icon>Interface\Icons\INV_Fabric_Soulcloth</Icon>
			<Class>Trade Goods</Class>
			<SubClass>Cloth</SubClass>
			<Color>ffffffff</Color>
			<Count>1</Count>
			<Player>disenchant</Player>
			<Costs>0</Costs>
			<Time>09/25/2009 20:53:17</Time>
			<Zone>Ulduar</Zone>
			<Boss>Freya</Boss>
			<Note><![CDATA[ - Zone: Ulduar - Boss: Freya - 0 DKP]]></Note>
		</key7>
	</Loot>
</RaidInfo>

There should have been only at most 27 join/leaves (2 ppl were on the waiting list). Can you provide a little more documentation on the export function, i have been trying to see if I can fix it on my own, but with no lua experience and no knowledge of the design of the addon its proving to be a futile effort.

User When Change
ebalsumgo Sep 26, 2009 at 20:17 UTC Changed description:
  <</code>>

  And the join/leave entries can really grow to whatever numbers without rhyme or reason. For example I have a parse from a 25man raid from last night and this is what the full file looks like:
+ <<code xml>>
  <RaidInfo>
  	<key>09/25/2009 19:27:08</key>
  	<start>09/25/2009 19:27:08</start>
----------------------------------------
  		</key7>
  	</Loot>
  </RaidInfo>
-
+ <</code>>
  There should have been only at most 27 join/leaves (2 ppl were on the waiting list). Can you provide a little more documentation on the export function, i have been trying to see if I can fix it on my own, but with no lua experience and no knowledge of the design of the addon its proving to be a futile effort.
ebalsumgo Sep 26, 2009 at 20:16 UTC Changed description type from Plain Text to WikiCreole

Changed description:
  Latest SVN.

  Here is what a proper <join> <leave> pair should look like, note I trimmed it just for illustration purposes:
+ <<code xml>>
  <Join>
  		<key1>
  			<player>Ebalusmgo</player>
----------------------------------------
  			<time>09/26/09 14:52:52</time>
  		</key5>
  </Leave>
-
+ <</code>>

  And this is what MagicDKP export produces for the same 5 man event:
+ <<code xml>>
  <Join>
  		<key1>
  			<player>Ebalusmgo</player>
----------------------------------------
  			<time>09/26/09 14:52:52</time>
  		</key10>
  </Leave>
+ <</code>>

  And the join/leave entries can really grow to whatever numbers without rhyme or reason. For example I have a parse from a 25man raid from last night and this is what the full file looks like:
  <RaidInfo>
ebalsumgo Sep 26, 2009 at 20:10 UTC Create

You must login to post a comment. Don't have an account? Register to get one!

  • 3 comments
  • Avatar of ebalsumgo ebalsumgo Sep 27, 2009 at 14:36 UTC - 0 likes

    any chance you can provide some documentation on the mods? right now its really hard to follow some of your logic :/

  • Avatar of dhedbor dhedbor Sep 27, 2009 at 03:21 UTC - 0 likes

    Joins and leaves are only tracked when that option is enabled and it's only used in the MagicDKP export format as far as I recall. Join/leave with ctrt simply adds them for each event. I am not playing WoW anymore so unless someone else provides a patch or takes over maintenance of the addon it's unfortunately unlikely to be fixed.

    Last edited Sep 27, 2009 by dhedbor
  • Avatar of ebalsumgo ebalsumgo Sep 26, 2009 at 20:15 UTC - 0 likes

    HeadCount produces a perfect string (yes I know you will probably say use headcount then, but I really like your addon and it makes my life of running my guild 100000 easier, so if I dont have to run 3 different addons just to accomplish the same thing that MagicDKP can...) and here is the relevant part of their export code:

    -- Export a given raid in EQdkp format
    -- @param raid The raid
    -- @return string Returns the exported EQdkp string
    function HeadCount:exportEQdkp(raid) 
    	assert(raid, "Unable to export the raid into EQdkp format because the raid is nil.")
    	
    	local raidStartTime = raid:retrieveStartingTime()	-- raid start time
    	local raidEndTime = raid:retrieveEndingTime()		-- raid end time
    
    	local exportString = "<RaidInfo>"	
    	exportString = exportString .. "<key>" .. HeadCount:getEQdkpDateTimeAsString(raidStartTime) .. "</key>"
    	exportString = exportString .. "<start>" .. HeadCount:getEQdkpDateTimeAsString(raidStartTime)  .. "</start>"
    	exportString = exportString .. "<end>" .. HeadCount:getEQdkpDateTimeAsString(raidEndTime) .. "</end>"		
    	
    	local zone = raid:getZone()	-- raid zone
    	local difficulty = raid:getDifficulty()	-- raid difficulty
    	
    	local convertedZone = HeadCount:convertToEQdkpZoneName(zone, difficulty) 
    	if (convertedZone) then 
    		exportString = exportString .. "<zone>" .. convertedZone .. "</zone>"		
    	end
    
    	local orderedPlayerList = raid:retrieveOrderedPlayerList("Name", true, true, true, false, false, true) 		
    	exportString = exportString .. "<PlayerInfos>"
    	for k,v in ipairs(orderedPlayerList) do
    		local race = v:getRace() 
    		local sex = v:getSex()
    		
    		exportString = exportString .. "<key" .. k .. ">"
    		exportString = exportString .. "<name>" .. v:getName() .. "</name>"
    		if (race) then 
    			exportString = exportString .. "<race>" .. race .. "</race>"
    		else
    			exportString = exportString .. "<race></race>"
    		end
    		
    		if (v:getGuild()) then
    			exportString = exportString .. "<guild>" .. v:getGuild() .. "</guild>"
    		end
    		
    		if (sex) then 
    			exportString = exportString .. "<sex>" .. v:getSex() .. "</sex>"
    		else
    			exportString = exportString .. "<sex></sex>"
    		end
    		
    		if (v:getFileName()) then 
    			-- new internal class name reference
    			exportString = exportString .. "<class>" .. v:getFileName() .. "</class>"
    		else
    			-- backwards compatibility class name reference
    			local convertedClassName = HeadCount:convertToEQdkpClassName(v:getClassName()) 
    			exportString = exportString .. "<class>" .. convertedClassName .. "</class>"
    		end
    		
    		if (v:getLevel() > 0) then
    			exportString = exportString .. "<level>" .. v:getLevel() .. "</level>"
    		else
    			exportString = exportString .. "<level>" .. HeadCount.DEFAULT_LEVEL .. "</level>"
    		end
    		
    		exportString = exportString .. "</key" .. k .. ">"
    	end
    	exportString = exportString .. "</PlayerInfos>"
    
    	-- <BossKills>
    	-- 	<key1><name>%bossname%</name><time>%date%</time><attendees><key1><name>%playername1%</name><name>%playername2%</name></key1></attendees></key1>
    	-- 	<key2><name>%bossname%</name><time>%date%</time><attendees><key1><name>%playername1%</name><name>%playername2%</name></key1></attendees></key2>	
    	-- </BossKills>	
    	exportString = exportString .. "<BossKills>"
    	if (raid:getBossList()) then 
    		-- boss list is present
    		local orderedBossList = raid:retrieveOrderedBossList()
    		for k,v in ipairs(orderedBossList) do 
    			exportString = exportString .. "<key" .. k .. ">"
    			exportString = exportString .. "<name>" .. v:getName() .. "</name>"
    			exportString = exportString .. "<time>" .. HeadCount:getEQdkpDateTimeAsString(v:getActivityTime()) .. "</time>"
    			exportString = exportString .. "<attendees>"
    			
    			local attendeeList = v:getPlayerList()
    			for attendeeIndex,attendeeName in ipairs(attendeeList) do
    				exportString = exportString .. "<key" .. attendeeIndex .. ">"
    				exportString = exportString .. "<name>" .. attendeeName .. "</name>"
    				exportString = exportString .. "</key" .. attendeeIndex .. ">"
    			end
    			
    			exportString = exportString .. "</attendees>"
    			exportString = exportString .. "</key" .. k .. ">"
    		end
    	end
    	exportString = exportString .. "</BossKills>"		
    		
    	if (convertedZone) then 
    		exportString = exportString .. "<note><![CDATA[ - Zone: " .. convertedZone .. "]]></note>"	
    	else
    		exportString = exportString .. "<note></note>"
    	end
    		
    	exportString = exportString .. "<Join>"
    	for k,v in ipairs(orderedPlayerList) do
    		local race = v:getRace()
    		local sex = v:getSex()
    
    		exportString = exportString .. "<key" .. k .. ">"
    		exportString = exportString .. "<player>" .. v:getName() .. "</player>"
    		if (race) then 
    			exportString = exportString .. "<race>" .. race .. "</race>"
    		else
    			exportString = exportString .. "<race></race>"
    		end
    		
    		if (v:getFileName()) then 
    			-- new internal class name reference
    			exportString = exportString .. "<class>" .. v:getFileName() .. "</class>"
    		else
    			-- backwards compatibility class name reference
    			local convertedClassName = HeadCount:convertToEQdkpClassName(v:getClassName()) 
    			exportString = exportString .. "<class>" .. convertedClassName .. "</class>"
    		end
    	
    		if (sex) then 
    			exportString = exportString .. "<sex>" .. sex .. "</sex>"			
    		else
    			exportString = exportString .. "<sex></sex>"			
    		end
    		
    		if (v:getLevel() > 0) then
    			exportString = exportString .. "<level>" .. v:getLevel() .. "</level>"
    		else
    			exportString = exportString .. "<level>" .. HeadCount.DEFAULT_LEVEL .. "</level>"
    		end
    		
    		exportString = exportString .. "<time>" ..HeadCount:getEQdkpDateTimeAsString(v:retrieveStartingTime()) .. "</time>"			
    		exportString = exportString .. "</key" .. k .. ">"
    	end		
    	exportString = exportString .. "</Join>"
    
    	exportString = exportString .. "<Leave>"
    	for k,v in ipairs(orderedPlayerList) do
    		exportString = exportString .. "<key" .. k .. ">"
    		exportString = exportString .. "<player>" .. v:getName() .. "</player>"			
    		exportString = exportString .. "<time>" .. HeadCount:getEQdkpDateTimeAsString(v:retrieveEndingTime()) .. "</time>"
    		exportString = exportString .. "</key" .. k .. ">"
    	end		
    	exportString = exportString .. "</Leave>"
    		
    	exportString = exportString .. "<Loot>"
    	for k,v in ipairs(raid:getLootList()) do
    		exportString = exportString .. "<key" .. k .. ">"
    		
    		local lootName = v:getName()
    		if (lootName) then
    			exportString = exportString .. "<ItemName>" .. lootName .. "</ItemName>"
    		end
    		
    		local lootId = v:getItemId() 
    		if (lootId) then
    			exportString = exportString .. "<ItemID>" .. lootId .. "</ItemID>" 
    		end
    		
    		local textureIcon = v:retrieveTextureIcon()
    		if (textureIcon) then 
    			exportString = exportString .. "<Icon>" .. textureIcon .. "</Icon>" 
    		end
    		
    		local lootItemType = v:getItemType()
    		if (lootItemType) then
    			exportString = exportString .. "<Class>" .. lootItemType .. "</Class>"
    		end
    		
    		local lootItemSubType = v:getItemSubType()
    		if (lootItemSubType) then
    			exportString = exportString .. "<SubClass>" .. lootItemSubType .. "</SubClass>"
    		end
    		
    		local lootColor = v:retrieveColor()
    		if (lootColor) then
    			exportString = exportString .. "<Color>" .. lootColor .. "</Color>"
    		end
    		exportString = exportString .. "<Count>" .. v:getQuantity() .. "</Count>"
    		exportString = exportString .. "<Player>" .. v:getPlayerName() .. "</Player>"
    		
    		local lootCost = v:getCost()
    		if (not lootCost) then
    			lootCost = 0
    		end				
    		exportString = exportString .. "<Costs>" .. lootCost .. "</Costs>"
    		exportString = exportString .. "<Time>" .. HeadCount:getEQdkpDateTimeAsString(v:getActivityTime()) .. "</Time>"
    		
    		local noteElementContent = "<![CDATA["	
    		local lootNote = v:getNote()
    		if ((lootNote) and (HeadCount:isString(lootNote))) then
    			-- loot note is present
    			noteElementContent = noteElementContent .. lootNote
    		end
    		
    		local lootZone = v:getZone()	-- ignore for now, difficulty should be determined when loot zone is determined
    		if (convertedZone) then 
    			-- loot zone present
    			noteElementContent = noteElementContent .. " - Zone: " .. convertedZone	-- add to note
    			exportString = exportString .. "<Zone>" .. convertedZone .. "</Zone>"	
    		else
    			exportString = exportString .. "<Zone />"
    		end			
    		
    		local lootSource = v:getSource()
    		if (lootSource) then
    			-- loot source present
    			noteElementContent = noteElementContent .. " - Boss: " .. lootSource -- add to note
    			exportString = exportString .. "<Boss>" .. lootSource .. "</Boss>"
    		else
    			exportString = exportString .. "<Boss />"
    		end
    		
    		noteElementContent = noteElementContent .. " - " .. lootCost .. " DKP]]>"	-- add cost to note
    		exportString = exportString .. "<Note>" .. noteElementContent .. "</Note>"
    		exportString = exportString .. "</key" .. k .. ">"			
    	end		
    	exportString = exportString .. "</Loot>"
    		
    	exportString = exportString .. "</RaidInfo>"
    	
    	return exportString	
    end
    
    -- Gets the date and time as a EQdkp string
    -- @param activityTime The activity time.
    -- @return string Returns the display date and time as a EQdkp string
    function HeadCount:getEQdkpDateTimeAsString(activityTime) 
    	local dateTimeString = nil
    		
    	if (activityTime) then 
    		local currentSeconds = activityTime:getUTCDateTimeInSeconds()		-- UTC date and time in seconds
    
    		local displayTimezoneDifferenceInSeconds = HeadCount:GetTimezone() * 60 * 60 -- seconds
    		currentSeconds = currentSeconds + displayTimezoneDifferenceInSeconds			 -- display time in seconds
    		local displayDateTime = date("*t", currentSeconds)
    		
    		assert(displayDateTime.year >= 1000, "HeadCount does not support low-value years.")
    		local millenium = math.floor(displayDateTime.year / 1000)
    		local year = displayDateTime.year - (millenium * 1000)
    
    		dateTimeString =  string.format("%02d", displayDateTime.month) .. "/" .. string.format("%02d", displayDateTime.day) .. "/" .. string.format("%02d", year) .. " " .. string.format("%02d", displayDateTime.hour) .. ":" .. string.format("%02d", displayDateTime.min) .. ":" .. string.format("%02d", displayDateTime.sec)			
    	end
    	
    	return dateTimeString
    end
    
    -- Converts the zone name to a zone name with a difficulty label if applicable.
    -- @param zone The zone name.
    -- @param difficulty The difficulty level
    -- @return string Returns the converted zone name or the zone name if no conversion could be made
    function HeadCount:convertToEQdkpZoneName(zone, difficulty) 
    	local convertedZone = nil
    	local isDifficultyLabelEnabled = HeadCount:IsEQDKPDifficultyEnabled()
    	
    	if (zone) then
    		-- zone is valid
    		local isDifficultyLabelValid = (difficulty) and (HeadCount.INSTANCES[zone]) and (HeadCount.INSTANCES[zone].players[difficulty]) and (isDifficultyLabelEnabled)
    		if (isDifficultyLabelValid) then 
    			-- difficulty is valid
    			-- zone is in the supported instances list
    			-- zone is a heroic-enabled raid
    			-- EQdkp difficulty label is enabled
    			if (HeadCount.INSTANCES[zone].hasMultiDifficulty) then
    				convertedZone = zone .. " (" .. HeadCount.INSTANCES[zone].players[difficulty] .. ")"
    			else
    				convertedZone = zone
    			end
    		else
    			-- converted zone is the zone name
    			convertedZone = zone
    		end
    	end
    	
    	return convertedZone
    end
    
    -- Converts the class name to an EQdkp class name
    -- @param className The class name.
    -- @return string Returns the EQdkp class name
    function HeadCount:convertToEQdkpClassName(className) 
    	local convertedClassName = ""
    	
    	if (className) then
    		local trimmedClassName = string.gsub(className, "%s", "")	-- trim all whitespace (leading, internal, trailing)
    		convertedClassName = string.upper(trimmedClassName)			-- convert the string to uppercase
    	end	
    	
    	return convertedClassName
    end
    
  • 3 comments

Facts

Last updated
Sep 26, 2009
Reported
Sep 26, 2009
Status
New - Issue has not had initial review yet.
Type
Defect - A shortcoming, fault, or imperfection
Priority
Medium - Normal priority.
Votes
0

Reported by

Possible assignees