have strange issue going on with ml quest i think in publish 57
maybe reward titles?

this person im not sure what they are doing but they keep getting bugged on something not sure where neither do they any help would be amazing!!!


An error was encountered while loading a saved object
- Type: Server.Mobiles.PlayerMobile
- Serial: 0x0002CEF2
Delete the object? (y/n)
After pressing return an exception will be thrown and the server will terminate.

Error:
System.Exception: Load failed (items=False, mobiles=True, guilds=False, data=False, type=Server.Mobiles.PlayerMobile, serial=0x0002CEF2) ---> System.ArgumentException: An item with the same key has already been added.
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at Server.Mobiles.PlayerMobile.Deserialize(GenericReader reader) in C:\Users\codya\Desktop\DoomsDayUpdateFinal\Scripts\Mobiles\PlayerMobile.cs:line 4904
at Server.World.Load()
--- End of inner exception stack trace ---
at Server.World.Load()
at Server.Core.Main(String[] args)
This exception is fatal, press return to exit

Line 4904: m_Collections.Add((Collection)reader.ReadInt(), reader.ReadInt());

serial method :


if (version < 42)
{
List<BaseQuest> quests = QuestReader.Quests(reader, this);
Dictionary<QuestChain, BaseChain> dic = QuestReader.Chains(reader);

if (quests != null && quests.Count > 0)
MondainQuestData.QuestData[this] = quests;

if (dic != null && dic.Count > 0)
MondainQuestData.ChainData[this] = dic;
}

m_Collections = new Dictionary<Collection, int>();
m_RewardTitles = new List<object>();

for (int i = reader.ReadInt(); i > 0; i--)
{
m_Collections.Add((Collection)reader.ReadInt(), reader.ReadInt());
}

for (int i = reader.ReadInt(); i > 0; i--)
{
m_RewardTitles.Add(QuestReader.Object(reader));
}

m_SelectedTitle = reader.ReadInt();

goto case 28;
}
 
Its in the post above but here.

Line 4904: m_Collections.Add((Collection)reader.ReadInt(), reader.ReadInt());

Thanks for the reply.
 
To fix the serialize issue, one needs the Serialize and the Deserialize.
So, can you post both methods?
 
#region Mondain's Legacy

if (m_Collections == null)
{
writer.Write(0);
}
else
{
writer.Write(m_Collections.Count);

foreach (var pair in m_Collections)
{
writer.Write((int)pair.Key);
writer.Write(pair.Value);
}
}

if (m_RewardTitles == null)
{
writer.Write(0);
}
else
{
writer.Write(m_RewardTitles.Count);

for (int i = 0; i < m_RewardTitles.Count; i++)
{
QuestWriter.Object(writer, m_RewardTitles);
}
}

writer.Write(m_SelectedTitle);
#endregion
 
Back